Index: chrome/browser/extensions/api/messaging/native_message_process_host_unittest.cc |
diff --git a/chrome/browser/extensions/api/messaging/native_message_process_host_unittest.cc b/chrome/browser/extensions/api/messaging/native_message_process_host_unittest.cc |
index cc8192bd7dda3b4bf20306ea0e41d97b9d382f63..d95ba5d3855332cab5f8dbc6729af2ed39340d93 100644 |
--- a/chrome/browser/extensions/api/messaging/native_message_process_host_unittest.cc |
+++ b/chrome/browser/extensions/api/messaging/native_message_process_host_unittest.cc |
@@ -7,6 +7,7 @@ |
#include "base/file_util.h" |
#include "base/files/file_path.h" |
#include "base/files/scoped_temp_dir.h" |
+#include "base/json/json_reader.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/weak_ptr.h" |
#include "base/message_loop.h" |
@@ -110,7 +111,19 @@ class NativeMessagingTest : public ::testing::Test, |
virtual void PostMessageFromNativeProcess( |
int port_id, |
const std::string& message) OVERRIDE { |
- last_posted_message_ = message; |
+ last_message_ = message; |
+ |
+ // Parse the message. |
+ base::Value* parsed = base::JSONReader::Read(message); |
+ base::DictionaryValue* dict_value; |
+ if (parsed && parsed->GetAsDictionary(&dict_value)) { |
+ last_message_parsed_.reset(dict_value); |
+ } else { |
+ LOG(ERROR) << "Failed to parse " << message; |
+ last_message_parsed_.reset(); |
+ delete parsed; |
+ } |
+ |
if (read_message_run_loop_) |
read_message_run_loop_->Quit(); |
} |
@@ -144,7 +157,8 @@ class NativeMessagingTest : public ::testing::Test, |
scoped_ptr<base::RunLoop> read_message_run_loop_; |
scoped_ptr<content::TestBrowserThread> ui_thread_; |
scoped_ptr<content::TestBrowserThread> io_thread_; |
- std::string last_posted_message_; |
+ std::string last_message_; |
+ scoped_ptr<base::DictionaryValue> last_message_parsed_; |
}; |
// Read a single message from a local file. |
@@ -161,12 +175,12 @@ TEST_F(NativeMessagingTest, SingleSendMessageRead) { |
read_message_run_loop_.reset(new base::RunLoop()); |
read_message_run_loop_->RunUntilIdle(); |
- if (last_posted_message_.empty()) { |
+ if (last_message_.empty()) { |
read_message_run_loop_.reset(new base::RunLoop()); |
native_message_process_host_->ReadNowForTesting(); |
read_message_run_loop_->Run(); |
} |
- EXPECT_EQ(kTestMessage, last_posted_message_); |
+ EXPECT_EQ(kTestMessage, last_message_); |
} |
// Tests sending a single message. The message should get written to |
@@ -199,7 +213,7 @@ TEST_F(NativeMessagingTest, SingleSendMessageWrite) { |
} |
// Test send message with a real client. The client just echo's back the text |
-// it recieved. |
+// it received. |
TEST_F(NativeMessagingTest, EchoConnect) { |
base::ScopedTempDir temp_dir; |
base::FilePath manifest_path = temp_dir.path().AppendASCII( |
@@ -220,13 +234,31 @@ TEST_F(NativeMessagingTest, EchoConnect) { |
native_message_process_host_->Send("{\"text\": \"Hello.\"}"); |
read_message_run_loop_.reset(new base::RunLoop()); |
read_message_run_loop_->Run(); |
- EXPECT_EQ("{\"id\": 1, \"echo\": {\"text\": \"Hello.\"}}", |
- last_posted_message_); |
+ ASSERT_FALSE(last_message_.empty()); |
+ ASSERT_TRUE(last_message_parsed_); |
+ |
+ std::string expected_url = std::string("chrome-extension://") + |
+ kTestNativeMessagingExtensionId + "/"; |
+ int id; |
+ EXPECT_TRUE(last_message_parsed_->GetInteger("id", &id)); |
+ EXPECT_EQ(1, id); |
+ std::string text; |
+ EXPECT_TRUE(last_message_parsed_->GetString("echo.text", &text)); |
+ EXPECT_EQ("Hello.", text); |
+ std::string url; |
+ EXPECT_TRUE(last_message_parsed_->GetString("caller_url", &url)); |
+ EXPECT_EQ(expected_url, url); |
+ |
native_message_process_host_->Send("{\"foo\": \"bar\"}"); |
read_message_run_loop_.reset(new base::RunLoop()); |
read_message_run_loop_->Run(); |
- EXPECT_EQ("{\"id\": 2, \"echo\": {\"foo\": \"bar\"}}", last_posted_message_); |
+ EXPECT_TRUE(last_message_parsed_->GetInteger("id", &id)); |
+ EXPECT_EQ(2, id); |
+ EXPECT_TRUE(last_message_parsed_->GetString("echo.foo", &text)); |
+ EXPECT_EQ("bar", text); |
+ EXPECT_TRUE(last_message_parsed_->GetString("caller_url", &url)); |
+ EXPECT_EQ(expected_url, url); |
} |
} // namespace extensions |