Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1271)

Unified Diff: chrome/browser/extensions/api/messaging/native_message_process_host_unittest.cc

Issue 16226004: Replace JSON (de)serialization of extension messages with direct Value pickling. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: disable test on win Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..933e68b9f0bba4d2ca74727de01422e720615ff6 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,17 +170,31 @@ 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) {
+//
+// Disabled on windows, see http://crbug.com/245709.
+#if defined(OS_WIN)
+#define MAYBE_SingleSendMessageWrite DISABLED_SingleSendMessageWrite
+#else
+#define MAYBE_SingleSendMessageWrite SingleSendMessageWrite
+#endif
+TEST_F(NativeMessagingTest, MAYBE_SingleSendMessageWrite) {
base::FilePath temp_output_file = temp_dir_.path().AppendASCII("output");
base::FilePath temp_input_file = CreateTempFileWithMessage(std::string());
Sergey Ulanov 2013/05/31 19:29:54 This writes a zero-size message to the input file.
not at google - send to devlin 2013/05/31 19:52:00 Done.
@@ -233,30 +242,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);
}
« no previous file with comments | « chrome/browser/extensions/api/messaging/native_message_process_host.cc ('k') | chrome/browser/extensions/message_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698