fix: hold browser_context instead of render_frame_host to fix lifetime issues (#23271) (#23396)

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
This commit is contained in:
Robo
2020-05-04 10:16:56 -07:00
committed by GitHub
parent 30ae6f45a4
commit 6294f811a7
2 changed files with 8 additions and 6 deletions

View File

@@ -20,7 +20,7 @@ NetworkHintsHandlerImpl::NetworkHintsHandlerImpl(
content::RenderFrameHost* frame_host)
: network_hints::SimpleNetworkHintsHandlerImpl(
frame_host->GetProcess()->GetID()),
render_frame_host_(frame_host) {}
browser_context_(frame_host->GetProcess()->GetBrowserContext()) {}
NetworkHintsHandlerImpl::~NetworkHintsHandlerImpl() = default;
@@ -28,11 +28,12 @@ void NetworkHintsHandlerImpl::Preconnect(const GURL& url,
bool allow_credentials) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
content::BrowserContext* browser_context =
render_frame_host_->GetProcess()->GetBrowserContext();
if (!browser_context_) {
return;
}
auto* session = electron::api::Session::FromWrappedClass(
v8::Isolate::GetCurrent(),
static_cast<electron::ElectronBrowserContext*>(browser_context));
static_cast<electron::ElectronBrowserContext*>(browser_context_));
if (session) {
session->Emit("preconnect", url, allow_credentials);
}

View File

@@ -9,7 +9,8 @@
namespace content {
class RenderFrameHost;
}
class BrowserContext;
} // namespace content
class NetworkHintsHandlerImpl
: public network_hints::SimpleNetworkHintsHandlerImpl {
@@ -27,7 +28,7 @@ class NetworkHintsHandlerImpl
private:
explicit NetworkHintsHandlerImpl(content::RenderFrameHost*);
content::RenderFrameHost* render_frame_host_ = nullptr;
content::BrowserContext* browser_context_ = nullptr;
};
#endif // SHELL_BROWSER_NETWORK_HINTS_HANDLER_IMPL_H_