| 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 080be622bcdba2286c8ab150546059550875d7a7..ad4ad6b43d32a82974242e5c33d30c45a211f7ef 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
|
| @@ -109,19 +109,15 @@ class NativeMessagingTest : public ::testing::Test,
|
|
|
| virtual void PostMessageFromNativeProcess(
|
| int port_id,
|
| - const std::string& message) OVERRIDE {
|
| - 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;
|
| - }
|
| + scoped_ptr<base::ListValue> message_as_list) OVERRIDE {
|
| + // |message_as_list| should contain a single DictionaryValue. Extract it
|
| + // into |last_message_|.
|
| + ASSERT_EQ(1u, message_as_list->GetSize());
|
| + base::Value* last_message_value = NULL;
|
| + message_as_list->Remove(0, &last_message_value);
|
| + ASSERT_EQ(base::Value::TYPE_DICTIONARY, last_message_value->GetType());
|
| + last_message_.reset(
|
| + static_cast<base::DictionaryValue*>(last_message_value));
|
|
|
| if (read_message_run_loop_)
|
| read_message_run_loop_->Quit();
|
| @@ -157,8 +153,7 @@ 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_message_;
|
| - scoped_ptr<base::DictionaryValue> last_message_parsed_;
|
| + scoped_ptr<DictionaryValue> last_message_;
|
| };
|
|
|
| // Read a single message from a local file.
|
| @@ -175,19 +170,26 @@ TEST_F(NativeMessagingTest, SingleSendMessageRead) {
|
| read_message_run_loop_.reset(new base::RunLoop());
|
| read_message_run_loop_->RunUntilIdle();
|
|
|
| - if (last_message_.empty()) {
|
| + if (!last_message_) {
|
| read_message_run_loop_.reset(new base::RunLoop());
|
| native_message_process_host_->ReadNowForTesting();
|
| read_message_run_loop_->Run();
|
| }
|
| - EXPECT_EQ(kTestMessage, last_message_);
|
| + ASSERT_TRUE(last_message_);
|
| +
|
| + scoped_ptr<base::Value> kTestMessageAsValue(
|
| + base::JSONReader::Read(kTestMessage));
|
| + ASSERT_TRUE(kTestMessageAsValue);
|
| + EXPECT_TRUE(base::Value::Equals(kTestMessageAsValue.get(),
|
| + last_message_.get()))
|
| + << "Expected " << *kTestMessageAsValue << " got " << *last_message_;
|
| }
|
|
|
| // Tests sending a single message. The message should get written to
|
| // |temp_file| and should match the contents of single_message_request.msg.
|
| TEST_F(NativeMessagingTest, SingleSendMessageWrite) {
|
| base::FilePath temp_output_file = temp_dir_.path().AppendASCII("output");
|
| - base::FilePath temp_input_file = CreateTempFileWithMessage(std::string());
|
| + base::FilePath temp_input_file = CreateTempFileWithMessage("{}");
|
|
|
| scoped_ptr<NativeProcessLauncher> launcher(
|
| new FakeLauncher(temp_input_file, temp_output_file));
|
| @@ -233,30 +235,29 @@ TEST_F(NativeMessagingTest, EchoConnect) {
|
| native_message_process_host_->Send("{\"text\": \"Hello.\"}");
|
| read_message_run_loop_.reset(new base::RunLoop());
|
| read_message_run_loop_->Run();
|
| - ASSERT_FALSE(last_message_.empty());
|
| - ASSERT_TRUE(last_message_parsed_);
|
| + ASSERT_TRUE(last_message_);
|
|
|
| std::string expected_url = std::string("chrome-extension://") +
|
| kTestNativeMessagingExtensionId + "/";
|
| int id;
|
| - EXPECT_TRUE(last_message_parsed_->GetInteger("id", &id));
|
| + EXPECT_TRUE(last_message_->GetInteger("id", &id));
|
| EXPECT_EQ(1, id);
|
| std::string text;
|
| - EXPECT_TRUE(last_message_parsed_->GetString("echo.text", &text));
|
| + EXPECT_TRUE(last_message_->GetString("echo.text", &text));
|
| EXPECT_EQ("Hello.", text);
|
| std::string url;
|
| - EXPECT_TRUE(last_message_parsed_->GetString("caller_url", &url));
|
| + EXPECT_TRUE(last_message_->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_TRUE(last_message_parsed_->GetInteger("id", &id));
|
| + EXPECT_TRUE(last_message_->GetInteger("id", &id));
|
| EXPECT_EQ(2, id);
|
| - EXPECT_TRUE(last_message_parsed_->GetString("echo.foo", &text));
|
| + EXPECT_TRUE(last_message_->GetString("echo.foo", &text));
|
| EXPECT_EQ("bar", text);
|
| - EXPECT_TRUE(last_message_parsed_->GetString("caller_url", &url));
|
| + EXPECT_TRUE(last_message_->GetString("caller_url", &url));
|
| EXPECT_EQ(expected_url, url);
|
| }
|
|
|
|
|