| Index: chrome/browser/chrome_content_browser_client.cc
|
| diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
|
| index df5033861d9d3186e8a3daa2e9f6959d65b76e68..3548b054af1e9b1d137e58269602d54cc58babca 100644
|
| --- a/chrome/browser/chrome_content_browser_client.cc
|
| +++ b/chrome/browser/chrome_content_browser_client.cc
|
| @@ -967,7 +967,14 @@ void ChromeContentBrowserClient::RenderProcessWillLaunch(
|
| net::URLRequestContextGetter* context =
|
| host->GetStoragePartition()->GetURLRequestContext();
|
|
|
| - host->AddFilter(new ChromeRenderMessageFilter(id, profile));
|
| + // The host owns both |chrome_render| and the interface registry, which will
|
| + // be destroyed before the filter.
|
| + auto chrome_render_filter = new ChromeRenderMessageFilter(id, profile);
|
| + host->GetInterfaceRegistry()->AddInterface(
|
| + base::Bind(&ChromeRenderMessageFilter::BindNetworkHints,
|
| + base::Unretained(chrome_render_filter)),
|
| + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO));
|
| + host->AddFilter(chrome_render_filter);
|
| #if defined(ENABLE_EXTENSIONS)
|
| host->AddFilter(new cast::CastTransportHostFilter);
|
| #endif
|
|
|