Chromium Code Reviews| Index: content/browser/renderer_host/pepper/pepper_message_filter.cc |
| =================================================================== |
| --- content/browser/renderer_host/pepper/pepper_message_filter.cc (revision 155271) |
| +++ content/browser/renderer_host/pepper/pepper_message_filter.cc (working copy) |
| @@ -76,7 +76,6 @@ |
| : process_type_(type), |
| process_id_(process_id), |
| resource_context_(browser_context->GetResourceContext()), |
| - host_resolver_(NULL), |
| next_socket_id_(1) { |
| DCHECK(type == RENDERER); |
| DCHECK(browser_context); |
| @@ -87,15 +86,13 @@ |
| } |
| PepperMessageFilter::PepperMessageFilter(ProcessType type, |
| - net::HostResolver* host_resolver) |
| + int render_process_id) |
| : process_type_(type), |
| - process_id_(0), |
| + process_id_(render_process_id), |
|
brettw
2012/09/10 22:27:11
I'm not totally following this. In the case of Fla
|
| resource_context_(NULL), |
| - host_resolver_(host_resolver), |
| next_socket_id_(1), |
| incognito_(false) { |
| DCHECK(type == PLUGIN); |
| - DCHECK(host_resolver); |
| } |
| void PepperMessageFilter::OverrideThreadForMessage( |
| @@ -179,11 +176,6 @@ |
| GetAndSendNetworkList(); |
| } |
| -net::HostResolver* PepperMessageFilter::GetHostResolver() { |
| - return resource_context_ ? |
| - resource_context_->GetHostResolver() : host_resolver_; |
| -} |
| - |
| net::CertVerifier* PepperMessageFilter::GetCertVerifier() { |
| if (!cert_verifier_.get()) |
| cert_verifier_.reset(net::CertVerifier::CreateDefault()); |
| @@ -271,6 +263,7 @@ |
| const std::string& host, |
| uint16_t port) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + EnsureResourceContextSet(); |
| BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
| base::Bind(&PepperMessageFilter::DoTCPConnect, this, |
| CanUseSocketAPIs(routing_id), routing_id, socket_id, host, port)); |
| @@ -288,8 +281,8 @@ |
| return; |
| } |
| - if (routing_id == iter->second->routing_id() && allowed) |
| - iter->second->Connect(host, port); |
| + if (routing_id == iter->second->routing_id() && allowed && resource_context_) |
| + iter->second->Connect(host, port, resource_context_->GetHostResolver()); |
| else |
| iter->second->SendConnectACKError(); |
| } |
| @@ -539,6 +532,7 @@ |
| const ppapi::HostPortPair& host_port, |
| const PP_HostResolver_Private_Hint& hint) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + EnsureResourceContextSet(); |
| BrowserThread::PostTask( |
| BrowserThread::IO, FROM_HERE, |
| base::Bind(&PepperMessageFilter::DoHostResolverResolve, this, |
| @@ -597,7 +591,7 @@ |
| // The lookup request will delete itself on completion. |
| PepperLookupRequest<OnHostResolverResolveBoundInfo>* lookup_request = |
| new PepperLookupRequest<OnHostResolverResolveBoundInfo>( |
| - GetHostResolver(), |
| + resource_context_->GetHostResolver(), // must be on IO thread. |
| request_info, |
| bound_info.release(), |
| base::Bind(&PepperMessageFilter::OnHostResolverResolveLookupFinished, |
| @@ -735,17 +729,20 @@ |
| const GURL& document_url, |
| const GURL& plugin_url, |
| PP_FlashLSORestrictions* restrictions) { |
| - content::ContentBrowserClient* client = |
| - content::GetContentClient()->browser(); |
| - if (!client->AllowPluginLocalDataAccess(document_url, plugin_url, |
| - resource_context_)) { |
| - *restrictions = PP_FLASHLSORESTRICTIONS_BLOCK; |
| - return; |
| - } |
| + if (resource_context_) { |
|
bbudge
2012/09/07 23:56:49
I'm not sure if we can change the thread that this
|
| + content::ContentBrowserClient* client = |
| + content::GetContentClient()->browser(); |
| + if (!client->AllowPluginLocalDataAccess(document_url, plugin_url, |
| + resource_context_)) { |
| + *restrictions = PP_FLASHLSORESTRICTIONS_BLOCK; |
| + return; |
| + } |
| - if (client->AllowPluginLocalDataSessionOnly(plugin_url, resource_context_)) { |
| - *restrictions = PP_FLASHLSORESTRICTIONS_IN_MEMORY; |
| - return; |
| + if (client->AllowPluginLocalDataSessionOnly( |
| + plugin_url, resource_context_)) { |
| + *restrictions = PP_FLASHLSORESTRICTIONS_IN_MEMORY; |
| + return; |
| + } |
| } |
| *restrictions = PP_FLASHLSORESTRICTIONS_NONE; |
| @@ -878,3 +875,14 @@ |
| ppapi::API_ID_PPB_NETWORKMANAGER_PRIVATE, *it, *list_copy)); |
| } |
| } |
| + |
| +void PepperMessageFilter::EnsureResourceContextSet() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + if (!resource_context_) { |
| + content::RenderProcessHost* rph = |
| + content::RenderProcessHost::FromID(process_id_); |
| + if (rph) |
| + resource_context_ = rph->GetBrowserContext()->GetResourceContext(); |
| + } |
| +} |
| + |