summaryrefslogtreecommitdiffstats
path: root/ppapi/tests/test_post_message.cc
diff options
context:
space:
mode:
authordmichael@google.com <dmichael@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-26 20:56:35 +0000
committerdmichael@google.com <dmichael@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-26 20:56:35 +0000
commitf1ced92024258328128ca67886a41e508d852f0a (patch)
treee047e0bf3192563faf1f48d84489efa89dbb2a15 /ppapi/tests/test_post_message.cc
parent3aded7fb5db539bd2e39a4c9c5f22b2fa8251f60 (diff)
downloadchromium_src-f1ced92024258328128ca67886a41e508d852f0a.zip
chromium_src-f1ced92024258328128ca67886a41e508d852f0a.tar.gz
chromium_src-f1ced92024258328128ca67886a41e508d852f0a.tar.bz2
Make PPAPI PostMessage behave asynchronously.
Add PostMessage test to ppapi_uitest.cc. BUG=None TEST=test_post_message.cc Review URL: http://codereview.chromium.org/6745015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79497 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/tests/test_post_message.cc')
-rw-r--r--ppapi/tests/test_post_message.cc24
1 files changed, 20 insertions, 4 deletions
diff --git a/ppapi/tests/test_post_message.cc b/ppapi/tests/test_post_message.cc
index b22fb05..df7d181 100644
--- a/ppapi/tests/test_post_message.cc
+++ b/ppapi/tests/test_post_message.cc
@@ -51,6 +51,7 @@ void TestPostMessage::RunTest() {
void TestPostMessage::HandleMessage(const pp::Var& message_data) {
message_data_.push_back(message_data);
+ testing_interface_->QuitMessageLoop(instance_->pp_instance());
}
bool TestPostMessage::MakeOnMessageEcho(const std::string& expression) {
@@ -74,20 +75,26 @@ std::string TestPostMessage::TestSendingData() {
// the data back to us, and we check that they match.
message_data_.clear();
instance_->PostMessage(pp::Var(kTestString));
- // Note that the trusted in-process version is completely synchronous, so we
- // do not need to use 'RunMessageLoop' to wait.
+ // PostMessage is asynchronous, so we should not receive a response yet.
+ ASSERT_EQ(message_data_.size(), 0);
+
+ testing_interface_->RunMessageLoop(instance_->pp_instance());
ASSERT_EQ(message_data_.size(), 1);
ASSERT_TRUE(message_data_.back().is_string());
ASSERT_EQ(message_data_.back().AsString(), kTestString);
message_data_.clear();
instance_->PostMessage(pp::Var(kTestBool));
+ ASSERT_EQ(message_data_.size(), 0);
+ testing_interface_->RunMessageLoop(instance_->pp_instance());
ASSERT_EQ(message_data_.size(), 1);
ASSERT_TRUE(message_data_.back().is_bool());
ASSERT_EQ(message_data_.back().AsBool(), kTestBool);
message_data_.clear();
instance_->PostMessage(pp::Var(kTestInt));
+ ASSERT_EQ(message_data_.size(), 0);
+ testing_interface_->RunMessageLoop(instance_->pp_instance());
ASSERT_EQ(message_data_.size(), 1);
ASSERT_TRUE(message_data_.back().is_number());
ASSERT_DOUBLE_EQ(message_data_.back().AsDouble(),
@@ -95,17 +102,23 @@ std::string TestPostMessage::TestSendingData() {
message_data_.clear();
instance_->PostMessage(pp::Var(kTestDouble));
+ ASSERT_EQ(message_data_.size(), 0);
+ testing_interface_->RunMessageLoop(instance_->pp_instance());
ASSERT_EQ(message_data_.size(), 1);
ASSERT_TRUE(message_data_.back().is_number());
ASSERT_DOUBLE_EQ(message_data_.back().AsDouble(), kTestDouble);
message_data_.clear();
instance_->PostMessage(pp::Var());
+ ASSERT_EQ(message_data_.size(), 0);
+ testing_interface_->RunMessageLoop(instance_->pp_instance());
ASSERT_EQ(message_data_.size(), 1);
ASSERT_TRUE(message_data_.back().is_undefined());
message_data_.clear();
instance_->PostMessage(pp::Var(pp::Var::Null()));
+ ASSERT_EQ(message_data_.size(), 0);
+ testing_interface_->RunMessageLoop(instance_->pp_instance());
ASSERT_EQ(message_data_.size(), 1);
ASSERT_TRUE(message_data_.back().is_null());
@@ -121,6 +134,8 @@ std::string TestPostMessage::TestMessageEvent() {
ASSERT_TRUE(MakeOnMessageEcho("typeof(message_event)"));
message_data_.clear();
instance_->PostMessage(pp::Var(kTestInt));
+ ASSERT_EQ(message_data_.size(), 0);
+ testing_interface_->RunMessageLoop(instance_->pp_instance());
ASSERT_EQ(message_data_.size(), 1);
ASSERT_TRUE(message_data_.back().is_string());
ASSERT_EQ(message_data_.back().AsString(), "object");
@@ -136,8 +151,8 @@ std::string TestPostMessage::TestMessageEvent() {
ASSERT_TRUE(success);
message_data_.clear();
instance_->PostMessage(pp::Var(kTestInt));
- // Note that the trusted in-process version is completely synchronous, so we
- // do not need to use 'RunMessageLoop' to wait.
+ ASSERT_EQ(message_data_.size(), 0);
+ testing_interface_->RunMessageLoop(instance_->pp_instance());
ASSERT_EQ(message_data_.size(), 1);
ASSERT_TRUE(message_data_.back().is_bool());
ASSERT_TRUE(message_data_.back().AsBool());
@@ -159,6 +174,7 @@ std::string TestPostMessage::TestNoHandler() {
// don't crash).
message_data_.clear();
instance_->PostMessage(pp::Var());
+ testing_interface_->RunMessageLoop(instance_->pp_instance());
ASSERT_EQ(message_data_.size(), 0);
PASS();