| Index: ppapi/proxy/ppb_var_deprecated_proxy.cc
|
| diff --git a/ppapi/proxy/ppb_var_deprecated_proxy.cc b/ppapi/proxy/ppb_var_deprecated_proxy.cc
|
| index f62e220ca6f59b392760e154f7a2f84655ad2bd8..9af0d99890aba2d233311ce776fbcfa9ee51064d 100644
|
| --- a/ppapi/proxy/ppb_var_deprecated_proxy.cc
|
| +++ b/ppapi/proxy/ppb_var_deprecated_proxy.cc
|
| @@ -22,6 +22,7 @@
|
| #include "ppapi/proxy/ppp_class_proxy.h"
|
| #include "ppapi/proxy/serialized_var.h"
|
| #include "ppapi/shared_impl/ppb_var_shared.h"
|
| +#include "ppapi/shared_impl/proxy_lock.h"
|
| #include "ppapi/shared_impl/var.h"
|
|
|
| namespace ppapi {
|
| @@ -64,6 +65,7 @@ PluginDispatcher* CheckExceptionAndGetDispatcher(const PP_Var& object,
|
| bool HasProperty(PP_Var var,
|
| PP_Var name,
|
| PP_Var* exception) {
|
| + ProxyAutoLock lock;
|
| Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception);
|
| if (!dispatcher)
|
| return false;
|
| @@ -82,6 +84,7 @@ bool HasProperty(PP_Var var,
|
| bool HasMethod(PP_Var var,
|
| PP_Var name,
|
| PP_Var* exception) {
|
| + ProxyAutoLock lock;
|
| Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception);
|
| if (!dispatcher)
|
| return false;
|
| @@ -100,6 +103,7 @@ bool HasMethod(PP_Var var,
|
| PP_Var GetProperty(PP_Var var,
|
| PP_Var name,
|
| PP_Var* exception) {
|
| + ProxyAutoLock lock;
|
| Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception);
|
| if (!dispatcher)
|
| return PP_MakeUndefined();
|
| @@ -119,6 +123,7 @@ void EnumerateProperties(PP_Var var,
|
| uint32_t* property_count,
|
| PP_Var** properties,
|
| PP_Var* exception) {
|
| + ProxyAutoLock lock;
|
| Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception);
|
| if (!dispatcher) {
|
| *property_count = 0;
|
| @@ -141,6 +146,7 @@ void SetProperty(PP_Var var,
|
| PP_Var name,
|
| PP_Var value,
|
| PP_Var* exception) {
|
| + ProxyAutoLock lock;
|
| Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception);
|
| if (!dispatcher)
|
| return;
|
| @@ -158,6 +164,7 @@ void SetProperty(PP_Var var,
|
| void RemoveProperty(PP_Var var,
|
| PP_Var name,
|
| PP_Var* exception) {
|
| + ProxyAutoLock lock;
|
| Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception);
|
| if (!dispatcher)
|
| return;
|
| @@ -177,6 +184,7 @@ PP_Var Call(PP_Var object,
|
| uint32_t argc,
|
| PP_Var* argv,
|
| PP_Var* exception) {
|
| + ProxyAutoLock lock;
|
| Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(object, exception);
|
| if (!dispatcher)
|
| return PP_MakeUndefined();
|
| @@ -200,6 +208,7 @@ PP_Var Construct(PP_Var object,
|
| uint32_t argc,
|
| PP_Var* argv,
|
| PP_Var* exception) {
|
| + ProxyAutoLock lock;
|
| Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(object, exception);
|
| if (!dispatcher)
|
| return PP_MakeUndefined();
|
| @@ -221,6 +230,7 @@ PP_Var Construct(PP_Var object,
|
| bool IsInstanceOf(PP_Var var,
|
| const PPP_Class_Deprecated* ppp_class,
|
| void** ppp_class_data) {
|
| + ProxyAutoLock lock;
|
| Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, NULL);
|
| if (!dispatcher)
|
| return false;
|
| @@ -239,6 +249,7 @@ bool IsInstanceOf(PP_Var var,
|
| PP_Var CreateObject(PP_Instance instance,
|
| const PPP_Class_Deprecated* ppp_class,
|
| void* ppp_class_data) {
|
| + ProxyAutoLock lock;
|
| Dispatcher* dispatcher = PluginDispatcher::GetForInstance(instance);
|
| if (!dispatcher)
|
| return PP_MakeUndefined();
|
| @@ -367,9 +378,9 @@ void PPB_Var_Deprecated_Proxy::OnMsgReleaseObject(int64 object_id) {
|
| // TODO(piman): See if we can fix the IPC code to enforce strict ordering, and
|
| // then remove this.
|
| MessageLoop::current()->PostNonNestableTask(FROM_HERE,
|
| - base::Bind(&PPB_Var_Deprecated_Proxy::DoReleaseObject,
|
| - task_factory_.GetWeakPtr(),
|
| - object_id));
|
| + RunWhileLocked(base::Bind(&PPB_Var_Deprecated_Proxy::DoReleaseObject,
|
| + task_factory_.GetWeakPtr(),
|
| + object_id)));
|
| }
|
|
|
| void PPB_Var_Deprecated_Proxy::OnMsgHasProperty(
|
|
|