Index: content/renderer/browser_plugin/browser_plugin_browsertest.cc |
diff --git a/content/renderer/browser_plugin/browser_plugin_browsertest.cc b/content/renderer/browser_plugin/browser_plugin_browsertest.cc |
index 6d23e0cade9a60e29e69858877d2a91a49377dde..d6f7109b16f20c659b039fd9714ef5d3f8aec131 100644 |
--- a/content/renderer/browser_plugin/browser_plugin_browsertest.cc |
+++ b/content/renderer/browser_plugin/browser_plugin_browsertest.cc |
@@ -244,15 +244,15 @@ TEST_F(BrowserPluginTest, GuestCrash) { |
BrowserPluginHostMsg_HandleInputEvent::ID)); |
browser_plugin_manager()->sink().ClearMessages(); |
- const char* kAddEventListener = |
+ const char* kAddCustomEventListener = |
"var msg;" |
"function crashListener() {" |
" msg = 'crashed';" |
"}" |
"document.getElementById('browserplugin')." |
- " addEventListener('crash', crashListener);"; |
+ " addCustomEventListener('crash', crashListener);"; |
- ExecuteJavaScript(kAddEventListener); |
+ ExecuteJavaScript(kAddCustomEventListener); |
// Pretend that the guest has crashed |
browser_plugin->GuestCrashed(); |
@@ -283,21 +283,21 @@ TEST_F(BrowserPluginTest, RemovePlugin) { |
} |
TEST_F(BrowserPluginTest, CustomEvents) { |
- const char* kAddEventListener = |
+ const char* kAddCustomEventListener = |
"var url;" |
"function nav(u) {" |
" url = u;" |
"}" |
"document.getElementById('browserplugin')." |
- " addEventListener('navigation', nav);"; |
- const char* kRemoveEventListener = |
+ " addCustomEventListener('navigation', nav);"; |
+ const char* kRemoveCustomEventListener = |
"document.getElementById('browserplugin')." |
- " removeEventListener('navigation', nav);"; |
+ " removeCustomEventListener('navigation', nav);"; |
const char* kGoogleURL = "http://www.google.com/"; |
const char* kGoogleNewsURL = "http://news.google.com/"; |
LoadHTML(GetHTMLForBrowserPluginObject().c_str()); |
- ExecuteJavaScript(kAddEventListener); |
+ ExecuteJavaScript(kAddCustomEventListener); |
// Grab the BrowserPlugin's instance ID from its resize message. |
const IPC::Message* msg = |
browser_plugin_manager()->sink().GetFirstMessageMatching( |
@@ -316,11 +316,49 @@ TEST_F(BrowserPluginTest, CustomEvents) { |
browser_plugin->DidNavigate(GURL(kGoogleURL)); |
EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url")); |
- ExecuteJavaScript(kRemoveEventListener); |
+ ExecuteJavaScript(kRemoveCustomEventListener); |
browser_plugin->DidNavigate(GURL(kGoogleNewsURL)); |
// The URL variable should not change because we've removed the event |
// listener. |
EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url")); |
} |
+TEST_F(BrowserPluginTest, PostMessage) { |
+ const char* kTesting = "testing123"; |
+ const char* kPostMessage = |
+ "var msg;" |
+ "function receiveMessage(event) {" |
+ " msg = event.data;" |
+ "}" |
+ "document.getElementById('browserplugin')." |
+ " addEventListener('message', receiveMessage, false);" |
+ "document.getElementById('browserplugin')." |
+ " postMessage('testing123', '');"; |
+ |
+ LoadHTML(GetHTMLForBrowserPluginObject().c_str()); |
+ ExecuteJavaScript(kPostMessage); |
+ |
+ const IPC::Message* msg = |
+ browser_plugin_manager()->sink().GetUniqueMessageMatching( |
+ BrowserPluginHostMsg_RouteMessageEvent::ID); |
+ ASSERT_TRUE(msg); |
+ int instance_id; |
+ string16 data; |
+ string16 target_origin; |
+ PickleIterator iter(*msg); |
+ ASSERT_TRUE(IPC::ReadParam(msg, &iter, &instance_id)); |
+ ASSERT_TRUE(IPC::ReadParam(msg, &iter, &data)); |
+ ASSERT_TRUE(IPC::ReadParam(msg, &iter, &target_origin)); |
+ |
+ MockBrowserPlugin* browser_plugin = |
+ static_cast<MockBrowserPlugin*>( |
+ browser_plugin_manager()->GetBrowserPlugin(instance_id)); |
+ ASSERT_TRUE(browser_plugin); |
+ |
+ // Fire a message event in the embedder and verify that it fires. |
+ browser_plugin->ReceiveMessage(MSG_ROUTING_NONE, string16(), data); |
+ ProcessPendingMessages(); |
+ EXPECT_EQ(kTesting, ExecuteScriptAndReturnString("msg")); |
+} |
+ |
} // namespace content |