OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/extension_message_service.h" | 5 #include "chrome/browser/extensions/extension_message_service.h" |
6 #include "chrome/common/render_messages.h" | 6 #include "chrome/common/render_messages.h" |
7 #include "chrome/renderer/extensions/event_bindings.h" | 7 #include "chrome/renderer/extensions/event_bindings.h" |
8 #include "chrome/renderer/extensions/renderer_extension_bindings.h" | 8 #include "chrome/renderer/extensions/renderer_extension_bindings.h" |
9 #include "chrome/test/render_view_test.h" | 9 #include "chrome/test/render_view_test.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 static void DispatchOnMessage(const std::string& message, int source_port_id) { | 27 static void DispatchOnMessage(const std::string& message, int source_port_id) { |
28 ListValue args; | 28 ListValue args; |
29 args.Set(0, Value::CreateStringValue(message)); | 29 args.Set(0, Value::CreateStringValue(message)); |
30 args.Set(1, Value::CreateIntegerValue(source_port_id)); | 30 args.Set(1, Value::CreateIntegerValue(source_port_id)); |
31 RendererExtensionBindings::Invoke( | 31 RendererExtensionBindings::Invoke( |
32 ExtensionMessageService::kDispatchOnMessage, args); | 32 ExtensionMessageService::kDispatchOnMessage, args); |
33 } | 33 } |
34 | 34 |
35 // Tests that the bindings for opening a channel to an extension and sending | 35 // Tests that the bindings for opening a channel to an extension and sending |
36 // and receiving messages through that channel all works. | 36 // and receiving messages through that channel all works. |
37 TEST_F(RenderViewTest, DISABLED_ExtensionMessagesOpenChannel) { | 37 TEST_F(RenderViewTest, ExtensionMessagesOpenChannel) { |
38 render_thread_.sink().ClearMessages(); | 38 render_thread_.sink().ClearMessages(); |
39 LoadHTML("<body></body>"); | 39 LoadHTML("<body></body>"); |
40 ExecuteJavaScript( | 40 ExecuteJavaScript( |
41 "var e = new chrome.Extension('foobar');" | 41 "var e = new chrome.Extension('foobar');" |
42 "var port = e.connect();" | 42 "var port = e.connect();" |
43 "port.onMessage.addListener(doOnMessage);" | 43 "port.onMessage.addListener(doOnMessage);" |
44 "port.postMessage({message: 'content ready'});" | 44 "port.postMessage({message: 'content ready'});" |
45 "function doOnMessage(msg, port) {" | 45 "function doOnMessage(msg, port) {" |
46 " alert('content got: ' + msg.val);" | 46 " alert('content got: ' + msg.val);" |
47 "}"); | 47 "}"); |
(...skipping 23 matching lines...) Expand all Loading... |
71 ViewHostMsg_RunJavaScriptMessage::ID); | 71 ViewHostMsg_RunJavaScriptMessage::ID); |
72 ASSERT_TRUE(alert_msg); | 72 ASSERT_TRUE(alert_msg); |
73 void* iter = IPC::SyncMessage::GetDataIterator(alert_msg); | 73 void* iter = IPC::SyncMessage::GetDataIterator(alert_msg); |
74 ViewHostMsg_RunJavaScriptMessage::SendParam alert_param; | 74 ViewHostMsg_RunJavaScriptMessage::SendParam alert_param; |
75 ASSERT_TRUE(IPC::ReadParam(alert_msg, &iter, &alert_param)); | 75 ASSERT_TRUE(IPC::ReadParam(alert_msg, &iter, &alert_param)); |
76 EXPECT_EQ(L"content got: 42", alert_param.a); | 76 EXPECT_EQ(L"content got: 42", alert_param.a); |
77 } | 77 } |
78 | 78 |
79 // Tests that the bindings for handling a new channel connection and channel | 79 // Tests that the bindings for handling a new channel connection and channel |
80 // closing all works. | 80 // closing all works. |
81 TEST_F(RenderViewTest, DISABLED_ExtensionMessagesOnConnect) { | 81 TEST_F(RenderViewTest, ExtensionMessagesOnConnect) { |
82 LoadHTML("<body></body>"); | 82 LoadHTML("<body></body>"); |
83 ExecuteJavaScript( | 83 ExecuteJavaScript( |
84 "chrome.self.onConnect.addListener(function (port) {" | 84 "chrome.self.onConnect.addListener(function (port) {" |
85 " port.test = 24;" | 85 " port.test = 24;" |
86 " port.onMessage.addListener(doOnMessage);" | 86 " port.onMessage.addListener(doOnMessage);" |
87 " port.onDisconnect.addListener(doOnDisconnect);" | 87 " port.onDisconnect.addListener(doOnDisconnect);" |
88 " port.postMessage({message: 'onconnect from ' + port.tab.url});" | 88 " port.postMessage({message: 'onconnect from ' + port.tab.url});" |
89 "});" | 89 "});" |
90 "function doOnMessage(msg, port) {" | 90 "function doOnMessage(msg, port) {" |
91 " alert('got: ' + msg.val);" | 91 " alert('got: ' + msg.val);" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 | 129 |
130 // Verify that we got it. | 130 // Verify that we got it. |
131 alert_msg = | 131 alert_msg = |
132 render_thread_.sink().GetUniqueMessageMatching( | 132 render_thread_.sink().GetUniqueMessageMatching( |
133 ViewHostMsg_RunJavaScriptMessage::ID); | 133 ViewHostMsg_RunJavaScriptMessage::ID); |
134 ASSERT_TRUE(alert_msg); | 134 ASSERT_TRUE(alert_msg); |
135 iter = IPC::SyncMessage::GetDataIterator(alert_msg); | 135 iter = IPC::SyncMessage::GetDataIterator(alert_msg); |
136 ASSERT_TRUE(IPC::ReadParam(alert_msg, &iter, &alert_param)); | 136 ASSERT_TRUE(IPC::ReadParam(alert_msg, &iter, &alert_param)); |
137 EXPECT_EQ(L"disconnected: 24", alert_param.a); | 137 EXPECT_EQ(L"disconnected: 24", alert_param.a); |
138 } | 138 } |
OLD | NEW |