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

Side by Side Diff: chrome/browser/plugins/plugin_power_saver_browsertest.cc

Issue 1132873002: Plugin Power Saver: Fix poster-click flaky test. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@0275-plugin-power-saver-preserve-js-access-for-throttled-plugins
Patch Set: change expect_eq to assert_eq Created 5 years, 7 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 unified diff | Download patch
« no previous file with comments | « no previous file | components/plugins/renderer/DEPS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/strings/string_piece.h" 6 #include "base/strings/string_piece.h"
7 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
8 #include "chrome/browser/ui/browser.h" 8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/tabs/tab_strip_model.h" 9 #include "chrome/browser/ui/tabs/tab_strip_model.h"
10 #include "chrome/common/chrome_switches.h" 10 #include "chrome/common/chrome_switches.h"
11 #include "chrome/test/base/in_process_browser_test.h" 11 #include "chrome/test/base/in_process_browser_test.h"
12 #include "chrome/test/base/ui_test_utils.h" 12 #include "chrome/test/base/ui_test_utils.h"
13 #include "content/public/common/content_switches.h"
13 #include "content/public/test/browser_test_utils.h" 14 #include "content/public/test/browser_test_utils.h"
14 #include "content/public/test/ppapi_test_utils.h" 15 #include "content/public/test/ppapi_test_utils.h"
15 #include "ppapi/shared_impl/ppapi_switches.h" 16 #include "ppapi/shared_impl/ppapi_switches.h"
16 #include "third_party/WebKit/public/web/WebInputEvent.h" 17 #include "third_party/WebKit/public/web/WebInputEvent.h"
17 #include "ui/base/window_open_disposition.h" 18 #include "ui/base/window_open_disposition.h"
18 #include "ui/gfx/geometry/point.h" 19 #include "ui/gfx/geometry/point.h"
19 20
20 namespace { 21 namespace {
21 22
22 std::string RunTestScript(base::StringPiece test_script, 23 std::string RunTestScript(base::StringPiece test_script,
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 EXPECT_TRUE(PluginLoaded(contents, element_id)); 91 EXPECT_TRUE(PluginLoaded(contents, element_id));
91 } 92 }
92 93
93 } // namespace 94 } // namespace
94 95
95 class PluginPowerSaverBrowserTest : virtual public InProcessBrowserTest { 96 class PluginPowerSaverBrowserTest : virtual public InProcessBrowserTest {
96 public: 97 public:
97 void SetUpCommandLine(base::CommandLine* command_line) override { 98 void SetUpCommandLine(base::CommandLine* command_line) override {
98 command_line->AppendSwitch(switches::kEnablePluginPowerSaver); 99 command_line->AppendSwitch(switches::kEnablePluginPowerSaver);
99 command_line->AppendSwitch(switches::kEnablePepperTesting); 100 command_line->AppendSwitch(switches::kEnablePepperTesting);
101 command_line->AppendSwitch(switches::kEnablePluginPlaceholderTesting);
100 102
101 ASSERT_TRUE(ppapi::RegisterPowerSaverTestPlugin(command_line)); 103 ASSERT_TRUE(ppapi::RegisterPowerSaverTestPlugin(command_line));
102 } 104 }
103 105
104 protected: 106 protected:
105 void LoadHTML(const char* html) { 107 void LoadHTML(const char* html) {
106 std::string url_str = "data:text/html;charset=utf-8,"; 108 std::string url_str = "data:text/html;charset=utf-8,";
107 url_str.append(html); 109 url_str.append(html);
108 ui_test_utils::NavigateToURL(browser(), GURL(url_str)); 110 ui_test_utils::NavigateToURL(browser(), GURL(url_str));
109 EXPECT_TRUE(content::WaitForRenderFrameReady( 111 EXPECT_TRUE(content::WaitForRenderFrameReady(
110 GetActiveWebContents()->GetMainFrame())); 112 GetActiveWebContents()->GetMainFrame()));
111 } 113 }
112 114
113 content::WebContents* GetActiveWebContents() { 115 content::WebContents* GetActiveWebContents() {
114 return browser()->tab_strip_model()->GetActiveWebContents(); 116 return browser()->tab_strip_model()->GetActiveWebContents();
115 } 117 }
116 118
117 // This sends a simulated click at |point| and waits for test plugin to send 119 // This sends a simulated click at |point| and waits for test plugin to send
118 // a status message indicating that it is essential. The test plugin sends a 120 // a status message indicating that it is essential. The test plugin sends a
119 // status message during: 121 // status message during:
120 // - Plugin creation, to handle a plugin freshly created from a poster. 122 // - Plugin creation, to handle a plugin freshly created from a poster.
121 // - Peripheral status change. 123 // - Peripheral status change.
122 // - In response to the explicit 'getPowerSaverStatus' request, in case the 124 // - In response to the explicit 'getPowerSaverStatus' request, in case the
123 // test has missed the above two events. 125 // test has missed the above two events.
124 void SimulateClickAndAwaitMarkedEssential(const char* element_id, 126 void SimulateClickAndAwaitMarkedEssential(const char* element_id,
125 const gfx::Point& point) { 127 const gfx::Point& point) {
128 // Waits for the placeholder to be ready to be clicked first.
129 std::string result = RunTestScript(
130 "function handleEvent(event) {"
131 " if (event.data === 'placeholderLoaded') {"
132 " window.domAutomationController.send('ready');"
133 " plugin.removeEventListener('message', handleEvent);"
134 " }"
135 "}"
136 "plugin.addEventListener('message', handleEvent);"
137 "if (plugin.hasAttribute('placeholderLoaded')) {"
138 " window.domAutomationController.send('ready');"
139 " plugin.removeEventListener('message', handleEvent);"
140 "}",
141 GetActiveWebContents(), element_id);
142 ASSERT_EQ("ready", result);
143
126 content::SimulateMouseClickAt(GetActiveWebContents(), 0 /* modifiers */, 144 content::SimulateMouseClickAt(GetActiveWebContents(), 0 /* modifiers */,
127 blink::WebMouseEvent::ButtonLeft, point); 145 blink::WebMouseEvent::ButtonLeft, point);
128 146
129 VerifyPluginMarkedEssential(GetActiveWebContents(), element_id); 147 VerifyPluginMarkedEssential(GetActiveWebContents(), element_id);
130 } 148 }
131 }; 149 };
132 150
133 IN_PROC_BROWSER_TEST_F(PluginPowerSaverBrowserTest, SmallSameOrigin) { 151 IN_PROC_BROWSER_TEST_F(PluginPowerSaverBrowserTest, SmallSameOrigin) {
134 LoadHTML( 152 LoadHTML(
135 "<object id='plugin' data='fake.swf' " 153 "<object id='plugin' data='fake.swf' "
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 " width='400' height='500'" 192 " width='400' height='500'"
175 " poster='snapshot1x.png 1x, snapshot2x.png 2x'></embed>"); 193 " poster='snapshot1x.png 1x, snapshot2x.png 2x'></embed>");
176 194
177 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin_src")); 195 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin_src"));
178 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin_srcset")); 196 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin_srcset"));
179 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin_legacy_syntax")); 197 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin_legacy_syntax"));
180 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin_embed_src")); 198 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin_embed_src"));
181 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin_embed_srcset")); 199 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin_embed_srcset"));
182 } 200 }
183 201
184 // flaky: crbug.com/481687
185 IN_PROC_BROWSER_TEST_F(PluginPowerSaverBrowserTest, 202 IN_PROC_BROWSER_TEST_F(PluginPowerSaverBrowserTest,
186 DISABLED_PluginMarkedEssentialAfterPosterClicked) { 203 PluginMarkedEssentialAfterPosterClicked) {
187 LoadHTML( 204 LoadHTML(
188 "<object id='plugin' type='application/x-ppapi-tests' " 205 "<object id='plugin' type='application/x-ppapi-tests' "
189 " width='400' height='100' poster='snapshot1x.png'></object>"); 206 " width='400' height='100' poster='snapshot1x.png'></object>");
190 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin")); 207 EXPECT_FALSE(PluginLoaded(GetActiveWebContents(), "plugin"));
191 208
192 SimulateClickAndAwaitMarkedEssential("plugin", gfx::Point(50, 50)); 209 SimulateClickAndAwaitMarkedEssential("plugin", gfx::Point(50, 50));
193 } 210 }
194 211
195 IN_PROC_BROWSER_TEST_F(PluginPowerSaverBrowserTest, OriginWhitelisting) { 212 IN_PROC_BROWSER_TEST_F(PluginPowerSaverBrowserTest, OriginWhitelisting) {
196 LoadHTML( 213 LoadHTML(
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 248
232 EXPECT_FALSE(PluginLoaded(background_contents, "same_origin")); 249 EXPECT_FALSE(PluginLoaded(background_contents, "same_origin"));
233 EXPECT_FALSE(PluginLoaded(background_contents, "small_cross_origin")); 250 EXPECT_FALSE(PluginLoaded(background_contents, "small_cross_origin"));
234 251
235 browser()->tab_strip_model()->SelectNextTab(); 252 browser()->tab_strip_model()->SelectNextTab();
236 EXPECT_EQ(background_contents, GetActiveWebContents()); 253 EXPECT_EQ(background_contents, GetActiveWebContents());
237 254
238 VerifyPluginMarkedEssential(background_contents, "same_origin"); 255 VerifyPluginMarkedEssential(background_contents, "same_origin");
239 VerifyPluginIsThrottled(background_contents, "small_cross_origin"); 256 VerifyPluginIsThrottled(background_contents, "small_cross_origin");
240 } 257 }
OLDNEW
« no previous file with comments | « no previous file | components/plugins/renderer/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698