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

This commit is contained in:
Paul Frazee 2020-05-01 02:37:01 -05:00 committed by GitHub
parent c438b93f18
commit 94eb4ce38e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 6 deletions

View file

@ -21,7 +21,7 @@ NetworkHintsHandlerImpl::NetworkHintsHandlerImpl(
: network_hints::SimpleNetworkHintsHandlerImpl(
frame_host->GetProcess()->GetID(),
frame_host->GetRoutingID()),
render_frame_host_(frame_host) {}
browser_context_(frame_host->GetProcess()->GetBrowserContext()) {}
NetworkHintsHandlerImpl::~NetworkHintsHandlerImpl() = default;
@ -29,11 +29,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_