Add a flag field to PP_CompletionCallback to control if the callback should
always be invoked asynchronously on success or error or skipped if the
operation can complete synchronously without blocking. Keep the default
behavior as-is  until clients update their code. Bump revisions of all
interfaces that take callbacks as args. Update browser interface function
implementations and C++ layer to force callbacks if sync option is not set.
Change ppapi/tests to run tests involving callbacks with both flag options.

BUG=79376
TEST=ppapi_tests + bots
Review URL: http://codereview.chromium.org/6899055

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91205 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/ppapi/tests/test_utils.h b/ppapi/tests/test_utils.h
index 721a048..e786aa8 100644
--- a/ppapi/tests/test_utils.h
+++ b/ppapi/tests/test_utils.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
 
@@ -18,6 +18,7 @@
 class TestCompletionCallback {
  public:
   TestCompletionCallback(PP_Instance instance);
+  TestCompletionCallback(PP_Instance instance, bool force_async);
 
   // Waits for the callback to be called and returns the
   // result. Returns immediately if the callback was previously called
@@ -38,6 +39,7 @@
 
   bool have_result_;
   int32_t result_;
+  bool force_async_;
   bool post_quit_task_;
   unsigned run_count_;
   PP_Instance instance_;