| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/pepper/pepper_network_proxy_host.h" | 5 #include "content/browser/renderer_host/pepper/pepper_network_proxy_host.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h" | 8 #include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h" |
| 9 #include "content/browser/renderer_host/pepper/pepper_socket_utils.h" | 9 #include "content/browser/renderer_host/pepper/pepper_socket_utils.h" |
| 10 #include "content/public/browser/browser_context.h" | 10 #include "content/public/browser/browser_context.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 namespace content { | 23 namespace content { |
| 24 | 24 |
| 25 PepperNetworkProxyHost::PepperNetworkProxyHost(BrowserPpapiHostImpl* host, | 25 PepperNetworkProxyHost::PepperNetworkProxyHost(BrowserPpapiHostImpl* host, |
| 26 PP_Instance instance, | 26 PP_Instance instance, |
| 27 PP_Resource resource) | 27 PP_Resource resource) |
| 28 : ResourceHost(host->GetPpapiHost(), instance, resource), | 28 : ResourceHost(host->GetPpapiHost(), instance, resource), |
| 29 proxy_service_(NULL), | 29 proxy_service_(NULL), |
| 30 is_allowed_(false), | 30 is_allowed_(false), |
| 31 waiting_for_ui_thread_data_(true), | 31 waiting_for_ui_thread_data_(true), |
| 32 weak_factory_(this) { | 32 weak_factory_(this) { |
| 33 int render_process_id(0), render_view_id(0); | 33 int render_process_id(0), render_frame_id(0); |
| 34 host->GetRenderViewIDsForInstance(instance, | 34 host->GetRenderFrameIDsForInstance(instance, |
| 35 &render_process_id, | 35 &render_process_id, |
| 36 &render_view_id); | 36 &render_frame_id); |
| 37 BrowserThread::PostTaskAndReplyWithResult( | 37 BrowserThread::PostTaskAndReplyWithResult( |
| 38 BrowserThread::UI, FROM_HERE, | 38 BrowserThread::UI, FROM_HERE, |
| 39 base::Bind(&GetUIThreadDataOnUIThread, | 39 base::Bind(&GetUIThreadDataOnUIThread, |
| 40 render_process_id, | 40 render_process_id, |
| 41 render_view_id, | 41 render_frame_id, |
| 42 host->external_plugin()), | 42 host->external_plugin()), |
| 43 base::Bind(&PepperNetworkProxyHost::DidGetUIThreadData, | 43 base::Bind(&PepperNetworkProxyHost::DidGetUIThreadData, |
| 44 weak_factory_.GetWeakPtr())); | 44 weak_factory_.GetWeakPtr())); |
| 45 } | 45 } |
| 46 | 46 |
| 47 PepperNetworkProxyHost::~PepperNetworkProxyHost() { | 47 PepperNetworkProxyHost::~PepperNetworkProxyHost() { |
| 48 while (!pending_requests_.empty()) { | 48 while (!pending_requests_.empty()) { |
| 49 // If the proxy_service_ is NULL, we shouldn't have any outstanding | 49 // If the proxy_service_ is NULL, we shouldn't have any outstanding |
| 50 // requests. | 50 // requests. |
| 51 DCHECK(proxy_service_); | 51 DCHECK(proxy_service_); |
| 52 net::ProxyService::PacRequest* request = pending_requests_.front(); | 52 net::ProxyService::PacRequest* request = pending_requests_.front(); |
| 53 proxy_service_->CancelPacRequest(request); | 53 proxy_service_->CancelPacRequest(request); |
| 54 pending_requests_.pop(); | 54 pending_requests_.pop(); |
| 55 } | 55 } |
| 56 } | 56 } |
| 57 | 57 |
| 58 PepperNetworkProxyHost::UIThreadData::UIThreadData() | 58 PepperNetworkProxyHost::UIThreadData::UIThreadData() |
| 59 : is_allowed(false) { | 59 : is_allowed(false) { |
| 60 } | 60 } |
| 61 | 61 |
| 62 PepperNetworkProxyHost::UIThreadData::~UIThreadData() { | 62 PepperNetworkProxyHost::UIThreadData::~UIThreadData() { |
| 63 } | 63 } |
| 64 | 64 |
| 65 // static | 65 // static |
| 66 PepperNetworkProxyHost::UIThreadData | 66 PepperNetworkProxyHost::UIThreadData |
| 67 PepperNetworkProxyHost::GetUIThreadDataOnUIThread(int render_process_id, | 67 PepperNetworkProxyHost::GetUIThreadDataOnUIThread(int render_process_id, |
| 68 int render_view_id, | 68 int render_frame_id, |
| 69 bool is_external_plugin) { | 69 bool is_external_plugin) { |
| 70 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 70 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 71 PepperNetworkProxyHost::UIThreadData result; | 71 PepperNetworkProxyHost::UIThreadData result; |
| 72 RenderProcessHost* render_process_host = | 72 RenderProcessHost* render_process_host = |
| 73 RenderProcessHost::FromID(render_process_id); | 73 RenderProcessHost::FromID(render_process_id); |
| 74 if (render_process_host && render_process_host->GetBrowserContext()) { | 74 if (render_process_host && render_process_host->GetBrowserContext()) { |
| 75 result.context_getter = render_process_host->GetBrowserContext()-> | 75 result.context_getter = render_process_host->GetBrowserContext()-> |
| 76 GetRequestContextForRenderProcess(render_process_id); | 76 GetRequestContextForRenderProcess(render_process_id); |
| 77 } | 77 } |
| 78 | 78 |
| 79 RenderViewHost* render_view_host = | 79 SocketPermissionRequest request( |
| 80 RenderViewHost::FromID(render_process_id, render_view_id); | 80 content::SocketPermissionRequest::RESOLVE_PROXY, std::string(), 0); |
| 81 if (render_view_host) { | 81 result.is_allowed = pepper_socket_utils::CanUseSocketAPIs( |
| 82 SocketPermissionRequest request( | 82 is_external_plugin, |
| 83 content::SocketPermissionRequest::RESOLVE_PROXY, std::string(), 0); | 83 false /* is_private_api */, |
| 84 result.is_allowed = pepper_socket_utils::CanUseSocketAPIs( | 84 &request, |
| 85 is_external_plugin, | 85 render_process_id, |
| 86 false /* is_private_api */, | 86 render_frame_id); |
| 87 &request, | |
| 88 render_view_host); | |
| 89 } | |
| 90 return result; | 87 return result; |
| 91 } | 88 } |
| 92 | 89 |
| 93 void PepperNetworkProxyHost::DidGetUIThreadData( | 90 void PepperNetworkProxyHost::DidGetUIThreadData( |
| 94 const UIThreadData& ui_thread_data) { | 91 const UIThreadData& ui_thread_data) { |
| 95 is_allowed_ = ui_thread_data.is_allowed; | 92 is_allowed_ = ui_thread_data.is_allowed; |
| 96 if (ui_thread_data.context_getter.get() && | 93 if (ui_thread_data.context_getter.get() && |
| 97 ui_thread_data.context_getter->GetURLRequestContext()) { | 94 ui_thread_data.context_getter->GetURLRequestContext()) { |
| 98 proxy_service_ = | 95 proxy_service_ = |
| 99 ui_thread_data.context_getter->GetURLRequestContext()->proxy_service(); | 96 ui_thread_data.context_getter->GetURLRequestContext()->proxy_service(); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 void PepperNetworkProxyHost::SendFailureReply( | 183 void PepperNetworkProxyHost::SendFailureReply( |
| 187 int32_t error, | 184 int32_t error, |
| 188 ppapi::host::ReplyMessageContext context) { | 185 ppapi::host::ReplyMessageContext context) { |
| 189 context.params.set_result(error); | 186 context.params.set_result(error); |
| 190 host()->SendReply(context, | 187 host()->SendReply(context, |
| 191 PpapiPluginMsg_NetworkProxy_GetProxyForURLReply( | 188 PpapiPluginMsg_NetworkProxy_GetProxyForURLReply( |
| 192 std::string())); | 189 std::string())); |
| 193 } | 190 } |
| 194 | 191 |
| 195 } // namespace content | 192 } // namespace content |
| OLD | NEW |