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

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

Issue 10917225: Browser Plugin: Reload and Stop operations (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments + merged with ToT/latest patch 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..9aae3d27c49ad5f15d892921c4bb49870d669804 100644
--- a/content/renderer/browser_plugin/browser_plugin_browsertest.cc
+++ b/content/renderer/browser_plugin/browser_plugin_browsertest.cc
@@ -323,4 +323,78 @@ TEST_F(BrowserPluginTest, CustomEvents) {
EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url"));
}
+TEST_F(BrowserPluginTest, StopMethod) {
+ const char* kCallStop =
+ "document.getElementById('browserplugin').stop();";
+ LoadHTML(GetHTMLForBrowserPluginObject().c_str());
+ ExecuteJavaScript(kCallStop);
+ EXPECT_TRUE(browser_plugin_manager()->sink().GetUniqueMessageMatching(
+ BrowserPluginHostMsg_Stop::ID));
+}
+
+TEST_F(BrowserPluginTest, ReloadMethod) {
+ const char* kCallReload =
+ "document.getElementById('browserplugin').reload();";
+ LoadHTML(GetHTMLForBrowserPluginObject().c_str());
+ ExecuteJavaScript(kCallReload);
+ EXPECT_TRUE(browser_plugin_manager()->sink().GetUniqueMessageMatching(
+ BrowserPluginHostMsg_Reload::ID));
+}
+
+TEST_F(BrowserPluginTest, ReloadAfterCrash) {
+ LoadHTML(GetHTMLForBrowserPluginObject().c_str());
+ int instance_id = 0;
+ // Verify that we're reporting the correct URL to navigate to based on the
+ // src attribute.
+ {
+ const IPC::Message* msg =
+ browser_plugin_manager()->sink().GetUniqueMessageMatching(
+ BrowserPluginHostMsg_NavigateGuest::ID);
+ ASSERT_TRUE(msg);
+
+ long long frame_id;
+ std::string src;
+ gfx::Size size;
+ BrowserPluginHostMsg_NavigateGuest::Read(
+ msg,
+ &instance_id,
+ &frame_id,
+ &src,
+ &size);
+ EXPECT_EQ("foo", src);
+ }
+ browser_plugin_manager()->sink().ClearMessages();
+
+ MockBrowserPlugin* browser_plugin =
+ static_cast<MockBrowserPlugin*>(
+ browser_plugin_manager()->GetBrowserPlugin(instance_id));
+ ASSERT_TRUE(browser_plugin);
+ // Crash the guest
+ browser_plugin->GuestCrashed();
+ // Reload the crashed guest
+ ExecuteJavaScript("document.getElementById('browserplugin').reload();");
+ // Verify that we do NOT issue a reload.
+ EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching(
+ BrowserPluginHostMsg_Reload::ID));
+ EXPECT_FALSE(browser_plugin->guest_crashed_);
+ // Verify that we've navigated back to the same page.
+ {
+ const IPC::Message* msg =
+ browser_plugin_manager()->sink().GetUniqueMessageMatching(
+ BrowserPluginHostMsg_NavigateGuest::ID);
+ ASSERT_TRUE(msg);
+
+ long long frame_id;
+ std::string src;
+ gfx::Size size;
+ BrowserPluginHostMsg_NavigateGuest::Read(
+ msg,
+ &instance_id,
+ &frame_id,
+ &src,
+ &size);
+ EXPECT_EQ("foo", src);
+ }
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698