Commit fe90db72 authored by fsamuel@chromium.org's avatar fsamuel@chromium.org

Browser Plugin: Only update src attribute on top-level navigations

BUG=163665


Review URL: https://chromiumcodereview.appspot.com/11412279

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@170611 0039d316-1c4b-4281-b951-d872f2087c98
parent debc1c7f
...@@ -613,13 +613,14 @@ void BrowserPlugin::LoadCommit( ...@@ -613,13 +613,14 @@ void BrowserPlugin::LoadCommit(
// If the guest has just committed a new navigation then it is no longer // If the guest has just committed a new navigation then it is no longer
// crashed. // crashed.
guest_crashed_ = false; guest_crashed_ = false;
src_ = params.url.spec(); if (params.is_top_level)
src_ = params.url.spec();
process_id_ = params.process_id; process_id_ = params.process_id;
current_nav_entry_index_ = params.current_entry_index; current_nav_entry_index_ = params.current_entry_index;
nav_entry_count_ = params.entry_count; nav_entry_count_ = params.entry_count;
std::map<std::string, base::Value*> props; std::map<std::string, base::Value*> props;
props[kURL] = base::Value::CreateStringValue(src_); props[kURL] = base::Value::CreateStringValue(params.url.spec());
props[kIsTopLevel] = base::Value::CreateBooleanValue(params.is_top_level); props[kIsTopLevel] = base::Value::CreateBooleanValue(params.is_top_level);
TriggerEvent(kEventLoadCommit, &props); TriggerEvent(kEventLoadCommit, &props);
} }
......
...@@ -391,6 +391,8 @@ TEST_F(BrowserPluginTest, CustomEvents) { ...@@ -391,6 +391,8 @@ TEST_F(BrowserPluginTest, CustomEvents) {
" removeEventListener('-internal-loadcommit', nav);"; " removeEventListener('-internal-loadcommit', nav);";
const char* kGetProcessID = const char* kGetProcessID =
"document.getElementById('browserplugin').getProcessId()"; "document.getElementById('browserplugin').getProcessId()";
const char* kGetSrc =
"document.getElementById('browserplugin').src";
const char* kGoogleURL = "http://www.google.com/"; const char* kGoogleURL = "http://www.google.com/";
const char* kGoogleNewsURL = "http://news.google.com/"; const char* kGoogleNewsURL = "http://news.google.com/";
...@@ -412,21 +414,26 @@ TEST_F(BrowserPluginTest, CustomEvents) { ...@@ -412,21 +414,26 @@ TEST_F(BrowserPluginTest, CustomEvents) {
{ {
BrowserPluginMsg_LoadCommit_Params navigate_params; BrowserPluginMsg_LoadCommit_Params navigate_params;
navigate_params.is_top_level = true;
navigate_params.url = GURL(kGoogleURL); navigate_params.url = GURL(kGoogleURL);
navigate_params.process_id = 1337; navigate_params.process_id = 1337;
browser_plugin->LoadCommit(navigate_params); browser_plugin->LoadCommit(navigate_params);
EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url")); EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url"));
EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString(kGetSrc));
EXPECT_EQ(1337, ExecuteScriptAndReturnInt(kGetProcessID)); EXPECT_EQ(1337, ExecuteScriptAndReturnInt(kGetProcessID));
} }
ExecuteJavaScript(kRemoveEventListener); ExecuteJavaScript(kRemoveEventListener);
{ {
BrowserPluginMsg_LoadCommit_Params navigate_params; BrowserPluginMsg_LoadCommit_Params navigate_params;
navigate_params.is_top_level = false;
navigate_params.url = GURL(kGoogleNewsURL); navigate_params.url = GURL(kGoogleNewsURL);
navigate_params.process_id = 42; navigate_params.process_id = 42;
browser_plugin->LoadCommit(navigate_params); browser_plugin->LoadCommit(navigate_params);
// The URL variable should not change because we've removed the event // The URL variable should not change because we've removed the event
// listener. // listener.
EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url")); EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url"));
// The src attribute should not change if this is a top-level navigation.
EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString(kGetSrc));
EXPECT_EQ(42, ExecuteScriptAndReturnInt(kGetProcessID)); EXPECT_EQ(42, ExecuteScriptAndReturnInt(kGetProcessID));
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment