| 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 b7eb6164361b892aa77fe4de8dcc7f1df8a47dca..7eee4b9cb4b95eba6b0de27141fe302a164e7f4e 100644
|
| --- a/content/renderer/browser_plugin/browser_plugin_browsertest.cc
|
| +++ b/content/renderer/browser_plugin/browser_plugin_browsertest.cc
|
| @@ -39,18 +39,6 @@ const char kHTMLForBrowserPluginWithAllAttributes[] =
|
| const char kHTMLForSourcelessPluginObject[] =
|
| "<object id='browserplugin' width='640px' height='480px' type='%s'>";
|
|
|
| -const char kHTMLForPartitionedPluginObject[] =
|
| - "<object id='browserplugin' width='640px' height='480px'"
|
| - " src='foo' type='%s' partition='someid'>";
|
| -
|
| -const char kHTMLForInvalidPartitionedPluginObject[] =
|
| - "<object id='browserplugin' width='640px' height='480px'"
|
| - " type='%s' partition='persist:'>";
|
| -
|
| -const char kHTMLForPartitionedPersistedPluginObject[] =
|
| - "<object id='browserplugin' width='640px' height='480px'"
|
| - " src='foo' type='%s' partition='persist:someid'>";
|
| -
|
| std::string GetHTMLForBrowserPluginObject() {
|
| return base::StringPrintf(kHTMLForBrowserPluginObject,
|
| kBrowserPluginMimeType);
|
| @@ -167,6 +155,12 @@ MockBrowserPlugin* BrowserPluginTest::GetCurrentPlugin() {
|
|
|
| MockBrowserPlugin* BrowserPluginTest::GetCurrentPluginWithAttachParams(
|
| BrowserPluginHostMsg_Attach_Params* params) {
|
| + MockBrowserPlugin* browser_plugin = static_cast<MockBrowserPluginManager*>(
|
| + browser_plugin_manager())->last_plugin();
|
| + if (!browser_plugin)
|
| + return NULL;
|
| + browser_plugin_manager()->AllocateInstanceID(browser_plugin);
|
| +
|
| int instance_id = 0;
|
| const IPC::Message* msg =
|
| browser_plugin_manager()->sink().GetUniqueMessageMatching(
|
| @@ -179,15 +173,11 @@ MockBrowserPlugin* BrowserPluginTest::GetCurrentPluginWithAttachParams(
|
| return NULL;
|
|
|
| if (!IPC::ParamTraits<BrowserPluginHostMsg_Attach_Params>::Read(
|
| - msg, &iter, params))
|
| + msg, &iter, params)) {
|
| return NULL;
|
| + }
|
|
|
| - MockBrowserPlugin* browser_plugin = static_cast<MockBrowserPlugin*>(
|
| - browser_plugin_manager()->GetBrowserPlugin(instance_id));
|
| -
|
| - BrowserPluginMsg_Attach_ACK_Params attach_ack_params;
|
| - browser_plugin->OnAttachACK(instance_id, attach_ack_params);
|
| -
|
| + browser_plugin->OnAttachACK(instance_id);
|
| return browser_plugin;
|
| }
|
|
|
| @@ -228,56 +218,6 @@ TEST_F(BrowserPluginTest, ParseAllAttributes) {
|
| int minWidth = ExecuteScriptAndReturnInt(
|
| "document.getElementById('browserplugin').minwidth");
|
| EXPECT_EQ(320, minWidth);
|
| - std::string name = ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').name");
|
| - EXPECT_STREQ("Jim", name.c_str());
|
| - std::string partition = ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').partition");
|
| - EXPECT_STREQ("someid", partition.c_str());
|
| - std::string src = ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').src");
|
| - EXPECT_STREQ("foo", src.c_str());
|
| -}
|
| -
|
| -// Verify that the src attribute on the browser plugin works as expected.
|
| -TEST_F(BrowserPluginTest, SrcAttribute) {
|
| - LoadHTML(GetHTMLForBrowserPluginObject().c_str());
|
| - // Verify that we're reporting the correct URL to navigate to based on the
|
| - // src attribute.
|
| - {
|
| - BrowserPluginHostMsg_Attach_Params params;
|
| - MockBrowserPlugin* browser_plugin =
|
| - GetCurrentPluginWithAttachParams(¶ms);
|
| - ASSERT_TRUE(browser_plugin);
|
| - EXPECT_EQ("foo", params.src);
|
| - }
|
| -
|
| - browser_plugin_manager()->sink().ClearMessages();
|
| - // Navigate to bar and observe the associated
|
| - // BrowserPluginHostMsg_NavigateGuest message.
|
| - // Verify that the src attribute is updated as well.
|
| - ExecuteJavaScript("document.getElementById('browserplugin').src = 'bar'");
|
| - {
|
| - // Verify that we do not get a Attach on subsequent navigations.
|
| - const IPC::Message* create_msg =
|
| - browser_plugin_manager()->sink().GetUniqueMessageMatching(
|
| - BrowserPluginHostMsg_Attach::ID);
|
| - ASSERT_FALSE(create_msg);
|
| -
|
| - const IPC::Message* msg =
|
| - browser_plugin_manager()->sink().GetUniqueMessageMatching(
|
| - BrowserPluginHostMsg_NavigateGuest::ID);
|
| - ASSERT_TRUE(msg);
|
| -
|
| - BrowserPluginHostMsg_NavigateGuest::Param params;
|
| - BrowserPluginHostMsg_NavigateGuest::Read(msg, ¶ms);
|
| - std::string src = params.b;
|
| - EXPECT_EQ("bar", src);
|
| - std::string src_value =
|
| - ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').src");
|
| - EXPECT_EQ("bar", src_value);
|
| - }
|
| }
|
|
|
| TEST_F(BrowserPluginTest, ResizeFlowControl) {
|
| @@ -358,6 +298,9 @@ TEST_F(BrowserPluginTest, ResizeFlowControl) {
|
|
|
| TEST_F(BrowserPluginTest, RemovePlugin) {
|
| LoadHTML(GetHTMLForBrowserPluginObject().c_str());
|
| + MockBrowserPlugin* browser_plugin = GetCurrentPlugin();
|
| + ASSERT_TRUE(browser_plugin);
|
| +
|
| EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching(
|
| BrowserPluginHostMsg_PluginDestroyed::ID));
|
| ExecuteJavaScript("x = document.getElementById('browserplugin'); "
|
| @@ -384,142 +327,6 @@ TEST_F(BrowserPluginTest, RemovePluginBeforeNavigation) {
|
|
|
| // Verify that the 'partition' attribute on the browser plugin is parsed
|
| // correctly.
|
| -TEST_F(BrowserPluginTest, PartitionAttribute) {
|
| - std::string html = base::StringPrintf(kHTMLForPartitionedPluginObject,
|
| - kBrowserPluginMimeType);
|
| - LoadHTML(html.c_str());
|
| - std::string partition_value = ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').partition");
|
| - EXPECT_STREQ("someid", partition_value.c_str());
|
| -
|
| - html = base::StringPrintf(kHTMLForPartitionedPersistedPluginObject,
|
| - kBrowserPluginMimeType);
|
| - LoadHTML(html.c_str());
|
| - partition_value = ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').partition");
|
| - EXPECT_STREQ("persist:someid", partition_value.c_str());
|
| -
|
| - // Verify that once HTML has defined a source and partition, we cannot change
|
| - // the partition anymore.
|
| - ExecuteJavaScript(
|
| - "try {"
|
| - " document.getElementById('browserplugin').partition = 'foo';"
|
| - " document.title = 'success';"
|
| - "} catch (e) { document.title = e.message; }");
|
| - std::string title = ExecuteScriptAndReturnString("document.title");
|
| - EXPECT_STREQ(
|
| - "The object has already navigated, so its partition cannot be changed.",
|
| - title.c_str());
|
| -
|
| - // Load a browser tag without 'src' defined.
|
| - html = base::StringPrintf(kHTMLForSourcelessPluginObject,
|
| - kBrowserPluginMimeType);
|
| - LoadHTML(html.c_str());
|
| -
|
| - // Ensure we don't parse just "persist:" string and return exception.
|
| - ExecuteJavaScript(
|
| - "try {"
|
| - " document.getElementById('browserplugin').partition = 'persist:';"
|
| - " document.title = 'success';"
|
| - "} catch (e) { document.title = e.message; }");
|
| - title = ExecuteScriptAndReturnString("document.title");
|
| - EXPECT_STREQ("Invalid partition attribute.", title.c_str());
|
| -}
|
| -
|
| -// This test verifies that BrowserPlugin enters an error state when the
|
| -// partition attribute is invalid.
|
| -TEST_F(BrowserPluginTest, InvalidPartition) {
|
| - std::string html = base::StringPrintf(kHTMLForInvalidPartitionedPluginObject,
|
| - kBrowserPluginMimeType);
|
| - LoadHTML(html.c_str());
|
| - // Attempt to navigate with an invalid partition.
|
| - {
|
| - ExecuteJavaScript(
|
| - "try {"
|
| - " document.getElementById('browserplugin').src = 'bar';"
|
| - " document.title = 'success';"
|
| - "} catch (e) { document.title = e.message; }");
|
| - std::string title = ExecuteScriptAndReturnString("document.title");
|
| - EXPECT_STREQ("Invalid partition attribute.", title.c_str());
|
| - // Verify that the 'src' attribute has not been updated.
|
| - EXPECT_EQ("", ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').src"));
|
| - }
|
| -
|
| - // Verify that the BrowserPlugin accepts changes to its src attribue after
|
| - // setting the partition to a valid value.
|
| - ExecuteJavaScript(
|
| - "document.getElementById('browserplugin').partition = 'persist:foo'");
|
| - ExecuteJavaScript("document.getElementById('browserplugin').src = 'bar'");
|
| - EXPECT_EQ("bar", ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').src"));
|
| - ProcessPendingMessages();
|
| - // Verify that the BrowserPlugin does not 'deadlock': it can recover from
|
| - // the partition ID error state.
|
| - {
|
| - ExecuteJavaScript(
|
| - "try {"
|
| - " document.getElementById('browserplugin').partition = 'persist:1337';"
|
| - " document.title = 'success';"
|
| - "} catch (e) { document.title = e.message; }");
|
| - std::string title = ExecuteScriptAndReturnString("document.title");
|
| - EXPECT_STREQ(
|
| - "The object has already navigated, so its partition cannot be changed.",
|
| - title.c_str());
|
| - ExecuteJavaScript("document.getElementById('browserplugin').src = '42'");
|
| - EXPECT_EQ("42", ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').src"));
|
| - }
|
| -}
|
| -
|
| -// Test to verify that after the first navigation, the partition attribute
|
| -// cannot be modified.
|
| -TEST_F(BrowserPluginTest, ImmutableAttributesAfterNavigation) {
|
| - std::string html = base::StringPrintf(kHTMLForSourcelessPluginObject,
|
| - kBrowserPluginMimeType);
|
| - LoadHTML(html.c_str());
|
| -
|
| - ExecuteJavaScript(
|
| - "document.getElementById('browserplugin').partition = 'storage'");
|
| - std::string partition_value = ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').partition");
|
| - EXPECT_STREQ("storage", partition_value.c_str());
|
| -
|
| - std::string src_value = ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').src");
|
| - EXPECT_STREQ("", src_value.c_str());
|
| -
|
| - ExecuteJavaScript("document.getElementById('browserplugin').src = 'bar'");
|
| - ProcessPendingMessages();
|
| - {
|
| - BrowserPluginHostMsg_Attach_Params params;
|
| - MockBrowserPlugin* browser_plugin =
|
| - GetCurrentPluginWithAttachParams(¶ms);
|
| - ASSERT_TRUE(browser_plugin);
|
| -
|
| - EXPECT_STREQ("storage", params.storage_partition_id.c_str());
|
| - EXPECT_FALSE(params.persist_storage);
|
| - EXPECT_STREQ("bar", params.src.c_str());
|
| - }
|
| -
|
| - // Setting the partition should throw an exception and the value should not
|
| - // change.
|
| - ExecuteJavaScript(
|
| - "try {"
|
| - " document.getElementById('browserplugin').partition = 'someid';"
|
| - " document.title = 'success';"
|
| - "} catch (e) { document.title = e.message; }");
|
| -
|
| - std::string title = ExecuteScriptAndReturnString("document.title");
|
| - EXPECT_STREQ(
|
| - "The object has already navigated, so its partition cannot be changed.",
|
| - title.c_str());
|
| -
|
| - partition_value = ExecuteScriptAndReturnString(
|
| - "document.getElementById('browserplugin').partition");
|
| - EXPECT_STREQ("storage", partition_value.c_str());
|
| -}
|
| -
|
| TEST_F(BrowserPluginTest, AutoSizeAttributes) {
|
| std::string html = base::StringPrintf(kHTMLForSourcelessPluginObject,
|
| kBrowserPluginMimeType);
|
| @@ -543,8 +350,7 @@ TEST_F(BrowserPluginTest, AutoSizeAttributes) {
|
| ProcessPendingMessages();
|
|
|
| BrowserPluginHostMsg_Attach_Params params;
|
| - MockBrowserPlugin* browser_plugin =
|
| - GetCurrentPluginWithAttachParams(¶ms);
|
| + MockBrowserPlugin* browser_plugin = GetCurrentPluginWithAttachParams(¶ms);
|
| ASSERT_TRUE(browser_plugin);
|
|
|
| EXPECT_TRUE(params.auto_size_params.enable);
|
|
|