summaryrefslogtreecommitdiffstats
path: root/content/renderer/pepper/v8_var_converter_unittest.cc
diff options
context:
space:
mode:
authorraymes@chromium.org <raymes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-22 09:29:08 +0000
committerraymes@chromium.org <raymes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-22 09:29:08 +0000
commit4a52cf258635709b5c0d4d2774eb4190ae5a03b4 (patch)
tree8c065b58a1a66254880942dde517305c49cc8651 /content/renderer/pepper/v8_var_converter_unittest.cc
parent227fc0f6adfe7a481d542302019ec5cc7017c6ae (diff)
downloadchromium_src-4a52cf258635709b5c0d4d2774eb4190ae5a03b4.zip
chromium_src-4a52cf258635709b5c0d4d2774eb4190ae5a03b4.tar.gz
chromium_src-4a52cf258635709b5c0d4d2774eb4190ae5a03b4.tar.bz2
Post the V8VarConverter::FromV8Var callback as a task.
This changes the V8VarConverter::FromV8Var to be run asynchronously always for consistency. It also pulls the ResourceConverter into another file. BUG=177017 TBR=jochen@chromium.org Review URL: https://chromiumcodereview.appspot.com/22801005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218970 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/pepper/v8_var_converter_unittest.cc')
-rw-r--r--content/renderer/pepper/v8_var_converter_unittest.cc23
1 files changed, 17 insertions, 6 deletions
diff --git a/content/renderer/pepper/v8_var_converter_unittest.cc b/content/renderer/pepper/v8_var_converter_unittest.cc
index 99918f0..d80335a 100644
--- a/content/renderer/pepper/v8_var_converter_unittest.cc
+++ b/content/renderer/pepper/v8_var_converter_unittest.cc
@@ -10,6 +10,7 @@
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/synchronization/waitable_event.h"
+#include "base/threading/thread.h"
#include "base/values.h"
#include "ppapi/c/pp_bool.h"
#include "ppapi/c/pp_var.h"
@@ -134,7 +135,12 @@ bool Equals(const PP_Var& var,
class V8VarConverterTest : public testing::Test {
public:
V8VarConverterTest()
- : isolate_(v8::Isolate::GetCurrent()) {}
+ : isolate_(v8::Isolate::GetCurrent()),
+ conversion_success_(false),
+ conversion_event_(true, false),
+ callback_thread_("callback_thread") {
+ callback_thread_.Start();
+ }
virtual ~V8VarConverterTest() {}
// testing::Test implementation.
@@ -155,7 +161,10 @@ class V8VarConverterTest : public testing::Test {
v8::Handle<v8::Context> context,
PP_Var* result) {
V8VarConverter::FromV8Value(val, context, base::Bind(
- &V8VarConverterTest::FromV8ValueComplete, base::Unretained(this)));
+ &V8VarConverterTest::FromV8ValueComplete, base::Unretained(this)),
+ callback_thread_.message_loop_proxy());
+ conversion_event_.Wait();
+ conversion_event_.Reset();
if (conversion_success_)
*result = conversion_result_;
return conversion_success_;
@@ -167,6 +176,7 @@ class V8VarConverterTest : public testing::Test {
ScopedPPVar var = scoped_var;
conversion_result_ = var.Release();
}
+ conversion_event_.Signal();
}
bool RoundTrip(const PP_Var& var, PP_Var* result) {
@@ -199,12 +209,13 @@ class V8VarConverterTest : public testing::Test {
// Context for the JavaScript in the test.
v8::Persistent<v8::Context> context_;
- PP_Var conversion_result_;
- bool conversion_success_;
-
-
private:
TestGlobals globals_;
+
+ PP_Var conversion_result_;
+ bool conversion_success_;
+ base::WaitableEvent conversion_event_;
+ base::Thread callback_thread_;
};
} // namespace