Index: chrome/browser/plugins/plugin_power_saver_browsertest.cc |
diff --git a/chrome/browser/plugins/plugin_power_saver_browsertest.cc b/chrome/browser/plugins/plugin_power_saver_browsertest.cc |
index 4c60ad01802a0066988c4de5b4d5078b193806f7..3ecbfd4e5b28dec59cc3baf7077edf071a67b9a1 100644 |
--- a/chrome/browser/plugins/plugin_power_saver_browsertest.cc |
+++ b/chrome/browser/plugins/plugin_power_saver_browsertest.cc |
@@ -308,6 +308,28 @@ class PluginPowerSaverBrowserTest : public InProcessBrowserTest { |
GetActiveWebContents()->GetMainFrame())); |
} |
+ // Returns the background WebContents. |
+ content::WebContents* LoadHTMLInBackgroundTab(const std::string& html) { |
+ embedded_test_server()->RegisterRequestHandler( |
+ base::Bind(&RespondWithHTML, html)); |
+ ui_test_utils::NavigateToURLWithDisposition( |
+ browser(), embedded_test_server()->base_url(), NEW_BACKGROUND_TAB, |
+ ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
+ |
+ int index = browser()->tab_strip_model()->GetIndexOfLastWebContentsOpenedBy( |
+ GetActiveWebContents(), 0 /* start_index */); |
+ content::WebContents* contents = |
+ browser()->tab_strip_model()->GetWebContentsAt(index); |
+ EXPECT_TRUE(content::WaitForRenderFrameReady(contents->GetMainFrame())); |
+ return contents; |
+ } |
+ |
+ void ActivateTab(content::WebContents* contents) { |
+ browser()->tab_strip_model()->ActivateTabAt( |
+ browser()->tab_strip_model()->GetIndexOfWebContents(contents), |
+ true /* user_gesture */); |
+ } |
+ |
content::WebContents* GetActiveWebContents() { |
return browser()->tab_strip_model()->GetActiveWebContents(); |
} |
@@ -619,35 +641,19 @@ IN_PROC_BROWSER_TEST_F(PluginPowerSaverBrowserTest, ExpandingSmallPlugin) { |
} |
IN_PROC_BROWSER_TEST_F(PluginPowerSaverBrowserTest, BackgroundTabPlugins) { |
- std::string html = |
+ content::WebContents* background_contents = LoadHTMLInBackgroundTab( |
"<object id='same_origin' data='fake.swf' " |
" type='application/x-ppapi-tests'></object>" |
"<object id='small_cross_origin' data='http://otherorigin.com/fake1.swf' " |
- " type='application/x-ppapi-tests' width='400' height='100'></object>"; |
- embedded_test_server()->RegisterRequestHandler( |
- base::Bind(&RespondWithHTML, html)); |
- ui_test_utils::NavigateToURLWithDisposition( |
- browser(), embedded_test_server()->base_url(), NEW_BACKGROUND_TAB, |
- ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
- |
- ASSERT_EQ(2, browser()->tab_strip_model()->count()); |
- content::WebContents* background_contents = |
- browser()->tab_strip_model()->GetWebContentsAt(1); |
- EXPECT_TRUE( |
- content::WaitForRenderFrameReady(background_contents->GetMainFrame())); |
+ " type='application/x-ppapi-tests' width='400' height='80'></object>"); |
EXPECT_FALSE(PluginLoaded(background_contents, "same_origin")); |
EXPECT_FALSE(PluginLoaded(background_contents, "small_cross_origin")); |
- browser()->tab_strip_model()->SelectNextTab(); |
- EXPECT_EQ(background_contents, GetActiveWebContents()); |
+ ActivateTab(background_contents); |
VerifyPluginMarkedEssential(background_contents, "same_origin"); |
VerifyPluginIsThrottled(background_contents, "small_cross_origin"); |
- |
- // TODO(groby): We need to cover the edge case of tiny plugin on a a |
- // background tab here. If blocking of tiny content is enabled |
- // this should be IsThrotthled, not IsPlaceholderOnly. |
} |
IN_PROC_BROWSER_TEST_F(PluginPowerSaverBrowserTest, ZoomIndependent) { |
@@ -670,8 +676,7 @@ class PluginPowerSaverBlockTinyBrowserTest |
base::FeatureList::ClearInstanceForTesting(); |
PluginPowerSaverBrowserTest::SetUp(); |
} |
- void SetUpInProcessBrowserTestFixture() override { BlockTinyPlugins(); } |
- void BlockTinyPlugins() { |
+ void SetUpInProcessBrowserTestFixture() override { |
base::FeatureList::ClearInstanceForTesting(); |
std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); |
feature_list->InitializeFromCommandLine(features::kBlockSmallContent.name, |
@@ -682,12 +687,6 @@ class PluginPowerSaverBlockTinyBrowserTest |
IN_PROC_BROWSER_TEST_F(PluginPowerSaverBlockTinyBrowserTest, BlockTinyPlugins) { |
LoadHTML( |
- "<object id='large_same_origin' data='fake.swf' " |
- " type='application/x-ppapi-tests' width='500' height='500'>" |
- "</object>" |
- "<object id='small_same_origin' data='fake.swf' " |
- " type='application/x-ppapi-tests' width='500' height='500'>" |
- "</object>" |
"<object id='tiny_same_origin' data='fake.swf' " |
" type='application/x-ppapi-tests' width='3' height='3'>" |
"</object>" |
@@ -698,9 +697,41 @@ IN_PROC_BROWSER_TEST_F(PluginPowerSaverBlockTinyBrowserTest, BlockTinyPlugins) { |
" type='application/x-ppapi-tests' width='1' height='1'>" |
"</object>"); |
- VerifyPluginMarkedEssential(GetActiveWebContents(), "large_same_origin"); |
- VerifyPluginMarkedEssential(GetActiveWebContents(), "small_same_origin"); |
VerifyPluginMarkedEssential(GetActiveWebContents(), "tiny_same_origin"); |
VerifyPluginIsPlaceholderOnly("tiny_cross_origin_1"); |
VerifyPluginIsPlaceholderOnly("tiny_cross_origin_2"); |
} |
+ |
+IN_PROC_BROWSER_TEST_F(PluginPowerSaverBlockTinyBrowserTest, |
+ BackgroundTabTinyPlugins) { |
+ content::WebContents* background_contents = LoadHTMLInBackgroundTab( |
+ "<object id='tiny' data='http://a.com/fake.swf' " |
+ " type='application/x-ppapi-tests' width='3' height='3'>" |
+ "</object>"); |
+ EXPECT_FALSE(PluginLoaded(background_contents, "tiny")); |
+ |
+ ActivateTab(background_contents); |
+ VerifyPluginIsPlaceholderOnly("tiny"); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(PluginPowerSaverBlockTinyBrowserTest, |
+ ExpandingTinyPlugins) { |
+ LoadHTML( |
+ "<object id='expand_to_peripheral' data='http://a.com/fake.swf' " |
+ " type='application/x-ppapi-tests' width='4' height='4'></object>" |
+ "<object id='expand_to_essential' data='http://b.com/fake.swf' " |
+ " type='application/x-ppapi-tests' width='4' height='4'></object>"); |
+ |
+ VerifyPluginIsPlaceholderOnly("expand_to_peripheral"); |
+ VerifyPluginIsPlaceholderOnly("expand_to_essential"); |
+ |
+ std::string script = |
+ "window.document.getElementById('expand_to_peripheral').height = 200;" |
+ "window.document.getElementById('expand_to_peripheral').width = 200;" |
+ "window.document.getElementById('expand_to_essential').height = 400;" |
+ "window.document.getElementById('expand_to_essential').width = 400;"; |
+ ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), script)); |
+ |
+ VerifyPluginIsThrottled(GetActiveWebContents(), "expand_to_peripheral"); |
+ VerifyPluginMarkedEssential(GetActiveWebContents(), "expand_to_essential"); |
+} |