Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Side by Side Diff: content/renderer/pepper/pepper_plugin_instance_impl.cc

Issue 314603002: Ensure that in-process plugins can't destroy themselves by closing a URLLoader (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer/pepper/pepper_plugin_instance_impl.h" 5 #include "content/renderer/pepper/pepper_plugin_instance_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback_helpers.h" 8 #include "base/callback_helpers.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 3102 matching lines...) Expand 10 before | Expand all | Expand 10 after
3113 if (lock_target_.get()) { 3113 if (lock_target_.get()) {
3114 GetMouseLockDispatcher()->OnLockTargetDestroyed(lock_target_.get()); 3114 GetMouseLockDispatcher()->OnLockTargetDestroyed(lock_target_.get());
3115 lock_target_.reset(); 3115 lock_target_.reset();
3116 } 3116 }
3117 } 3117 }
3118 3118
3119 void PepperPluginInstanceImpl::DidDataFromWebURLResponse( 3119 void PepperPluginInstanceImpl::DidDataFromWebURLResponse(
3120 const blink::WebURLResponse& response, 3120 const blink::WebURLResponse& response,
3121 int pending_host_id, 3121 int pending_host_id,
3122 const ppapi::URLResponseInfoData& data) { 3122 const ppapi::URLResponseInfoData& data) {
3123 if (is_deleted_)
3124 return;
3125
3123 RendererPpapiHostImpl* host_impl = module_->renderer_ppapi_host(); 3126 RendererPpapiHostImpl* host_impl = module_->renderer_ppapi_host();
3124 3127
3125 if (host_impl->in_process_router()) { 3128 if (host_impl->in_process_router()) {
3126 // Running in-process, we can just create the resource and call the 3129 // Running in-process, we can just create the resource and call the
3127 // PPP_Instance function directly. 3130 // PPP_Instance function directly.
3128 scoped_refptr<ppapi::proxy::URLLoaderResource> loader_resource( 3131 scoped_refptr<ppapi::proxy::URLLoaderResource> loader_resource(
3129 new ppapi::proxy::URLLoaderResource( 3132 new ppapi::proxy::URLLoaderResource(
3130 host_impl->in_process_router()->GetPluginConnection(pp_instance()), 3133 host_impl->in_process_router()->GetPluginConnection(pp_instance()),
3131 pp_instance(), 3134 pp_instance(),
3132 pending_host_id, 3135 pending_host_id,
(...skipping 11 matching lines...) Expand all
3144 // Running out-of-process. Initiate an IPC call to notify the plugin 3147 // Running out-of-process. Initiate an IPC call to notify the plugin
3145 // process. 3148 // process.
3146 ppapi::proxy::HostDispatcher* dispatcher = 3149 ppapi::proxy::HostDispatcher* dispatcher =
3147 ppapi::proxy::HostDispatcher::GetForInstance(pp_instance()); 3150 ppapi::proxy::HostDispatcher::GetForInstance(pp_instance());
3148 dispatcher->Send(new PpapiMsg_PPPInstance_HandleDocumentLoad( 3151 dispatcher->Send(new PpapiMsg_PPPInstance_HandleDocumentLoad(
3149 ppapi::API_ID_PPP_INSTANCE, pp_instance(), pending_host_id, data)); 3152 ppapi::API_ID_PPP_INSTANCE, pp_instance(), pending_host_id, data));
3150 } 3153 }
3151 } 3154 }
3152 3155
3153 } // namespace content 3156 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698