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

Unified Diff: content/renderer/browser_plugin/browser_plugin_browsertest.cc

Issue 10829225: Browser Plugin: Add HTML5-like postMessage support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed crash + cleanup Created 8 years, 3 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: 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

Powered by Google App Engine
This is Rietveld 408576698