reland 121901, PPAPI: Add unlocking for PPP calls and callbacks...

"""
With this patch, ppapi_tests pass locally when building with enable_pepper_threading=1. (They didn't before).

TODO: Test more calls off the main thread, make sync completion callbacks work.

BUG=92909
TEST=


Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=121901
"""
[email protected]

Review URL: http://codereview.chromium.org/9361065

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122001 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/ppapi/shared_impl/ppp_instance_combined.cc b/ppapi/shared_impl/ppp_instance_combined.cc
index d27c2a0..e5b7998 100644
--- a/ppapi/shared_impl/ppp_instance_combined.cc
+++ b/ppapi/shared_impl/ppp_instance_combined.cc
@@ -1,8 +1,9 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
 #include "ppapi/shared_impl/ppp_instance_combined.h"
+#include "ppapi/shared_impl/proxy_lock.h"
 
 namespace ppapi {
 
@@ -26,31 +27,36 @@
                                          uint32_t argc,
                                          const char* argn[],
                                          const char* argv[]) {
-  return instance_1_1_.DidCreate(instance, argc, argn, argv);
+  return CallWhileUnlocked(instance_1_1_.DidCreate, instance, argc, argn, argv);
 }
 
 void PPP_Instance_Combined::DidDestroy(PP_Instance instance) {
-  return instance_1_1_.DidDestroy(instance);
+  return CallWhileUnlocked(instance_1_1_.DidDestroy, instance);
 }
 
 void PPP_Instance_Combined::DidChangeView(PP_Instance instance,
                                           PP_Resource view_changed_resource,
                                           const struct PP_Rect* position,
                                           const struct PP_Rect* clip) {
-  if (instance_1_1_.DidChangeView)
-    instance_1_1_.DidChangeView(instance, view_changed_resource);
-  else
-    did_change_view_1_0_(instance, position, clip);
+  if (instance_1_1_.DidChangeView) {
+    CallWhileUnlocked(instance_1_1_.DidChangeView,
+                      instance,
+                      view_changed_resource);
+  } else {
+    CallWhileUnlocked(did_change_view_1_0_, instance, position, clip);
+  }
 }
 
 void PPP_Instance_Combined::DidChangeFocus(PP_Instance instance,
                                            PP_Bool has_focus) {
-  instance_1_1_.DidChangeFocus(instance, has_focus);
+  CallWhileUnlocked(instance_1_1_.DidChangeFocus, instance, has_focus);
 }
 
 PP_Bool PPP_Instance_Combined::HandleDocumentLoad(PP_Instance instance,
                                                   PP_Resource url_loader) {
-  return instance_1_1_.HandleDocumentLoad(instance, url_loader);
+  return CallWhileUnlocked(instance_1_1_.HandleDocumentLoad,
+                           instance,
+                           url_loader);
 }
 
 }  // namespace ppapi