Index: ppapi/proxy/ppb_testing_proxy.cc |
diff --git a/ppapi/proxy/ppb_testing_proxy.cc b/ppapi/proxy/ppb_testing_proxy.cc |
index 9c0a14b62d72a3e295803079ee77a25e5cd9d735..629b3f04a93fa50a93d1d2f86d91d1394d2d8871 100644 |
--- a/ppapi/proxy/ppb_testing_proxy.cc |
+++ b/ppapi/proxy/ppb_testing_proxy.cc |
@@ -10,13 +10,14 @@ |
#include "ppapi/proxy/plugin_dispatcher.h" |
#include "ppapi/proxy/ppapi_messages.h" |
#include "ppapi/shared_impl/ppapi_globals.h" |
+#include "ppapi/shared_impl/proxy_lock.h" |
#include "ppapi/shared_impl/resource.h" |
#include "ppapi/shared_impl/resource_tracker.h" |
#include "ppapi/thunk/enter.h" |
#include "ppapi/thunk/ppb_input_event_api.h" |
using ppapi::thunk::EnterInstance; |
-using ppapi::thunk::EnterResource; |
+using ppapi::thunk::EnterResourceNoLock; |
using ppapi::thunk::PPB_InputEvent_API; |
namespace ppapi { |
@@ -27,6 +28,7 @@ namespace { |
PP_Bool ReadImageData(PP_Resource graphics_2d, |
PP_Resource image, |
const PP_Point* top_left) { |
+ ProxyAutoLock lock; |
Resource* image_object = |
PpapiGlobals::Get()->GetResourceTracker()->GetResource(image); |
if (!image_object) |
@@ -50,6 +52,7 @@ PP_Bool ReadImageData(PP_Resource graphics_2d, |
} |
void RunMessageLoop(PP_Instance instance) { |
+ // TODO(dmichael): We should probably assert that this is the main thread. |
bool old_state = MessageLoop::current()->NestableTasksAllowed(); |
MessageLoop::current()->SetNestableTasksAllowed(true); |
MessageLoop::current()->Run(); |
@@ -57,10 +60,12 @@ void RunMessageLoop(PP_Instance instance) { |
} |
void QuitMessageLoop(PP_Instance instance) { |
+ // TODO(dmichael): We should probably assert that this is the main thread. |
MessageLoop::current()->QuitNow(); |
} |
uint32_t GetLiveObjectsForInstance(PP_Instance instance_id) { |
+ ProxyAutoLock lock; |
PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance_id); |
if (!dispatcher) |
return static_cast<uint32_t>(-1); |
@@ -76,10 +81,11 @@ PP_Bool IsOutOfProcess() { |
} |
void SimulateInputEvent(PP_Instance instance_id, PP_Resource input_event) { |
+ ProxyAutoLock lock; |
PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance_id); |
if (!dispatcher) |
return; |
- EnterResource<PPB_InputEvent_API> enter(input_event, false); |
+ EnterResourceNoLock<PPB_InputEvent_API> enter(input_event, false); |
if (enter.failed()) |
return; |
@@ -99,6 +105,7 @@ PP_Var GetDocumentURL(PP_Instance instance, PP_URLComponents_Dev* components) { |
// host-side tracker when running out-of-process, to make sure the proxy does |
// not leak host-side vars. |
uint32_t GetLiveVars(PP_Var live_vars[], uint32_t array_size) { |
+ ProxyAutoLock lock; |
std::vector<PP_Var> vars = |
PpapiGlobals::Get()->GetVarTracker()->GetLiveVars(); |
for (size_t i = 0u; |