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

Side by Side Diff: chrome/browser/extensions/extension_keybinding_apitest.cc

Issue 1378123003: Adding SSL ETS Tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ets
Patch Set: Rebase. Created 5 years, 1 month 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/app/chrome_command_ids.h" 6 #include "chrome/app/chrome_command_ids.h"
7 #include "chrome/browser/extensions/active_tab_permission_granter.h" 7 #include "chrome/browser/extensions/active_tab_permission_granter.h"
8 #include "chrome/browser/extensions/api/commands/command_service.h" 8 #include "chrome/browser/extensions/api/commands/command_service.h"
9 #include "chrome/browser/extensions/browser_action_test_util.h" 9 #include "chrome/browser/extensions/browser_action_test_util.h"
10 #include "chrome/browser/extensions/component_loader.h" 10 #include "chrome/browser/extensions/component_loader.h"
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 protected: 135 protected:
136 bool IsGrantedForTab(const Extension* extension, 136 bool IsGrantedForTab(const Extension* extension,
137 const content::WebContents* web_contents) { 137 const content::WebContents* web_contents) {
138 return extension->permissions_data()->HasAPIPermissionForTab( 138 return extension->permissions_data()->HasAPIPermissionForTab(
139 SessionTabHelper::IdForTab(web_contents), APIPermission::kTab); 139 SessionTabHelper::IdForTab(web_contents), APIPermission::kTab);
140 } 140 }
141 141
142 #if defined(OS_CHROMEOS) 142 #if defined(OS_CHROMEOS)
143 void RunChromeOSConversionTest(const std::string& extension_path) { 143 void RunChromeOSConversionTest(const std::string& extension_path) {
144 // Setup the environment. 144 // Setup the environment.
145 ASSERT_TRUE(test_server()->Start()); 145 ASSERT_TRUE(embedded_test_server()->Start());
146 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 146 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
147 ASSERT_TRUE(RunExtensionTest(extension_path)) << message_; 147 ASSERT_TRUE(RunExtensionTest(extension_path)) << message_;
148 ui_test_utils::NavigateToURL( 148 ui_test_utils::NavigateToURL(
149 browser(), test_server()->GetURL("files/extensions/test_file.txt")); 149 browser(), embedded_test_server()->GetURL("/extensions/test_file.txt"));
150 150
151 ResultCatcher catcher; 151 ResultCatcher catcher;
152 152
153 // Send all expected keys (Search+Shift+{Left, Up, Right, Down}). 153 // Send all expected keys (Search+Shift+{Left, Up, Right, Down}).
154 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 154 ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
155 browser(), ui::VKEY_LEFT, false, true, false, true)); 155 browser(), ui::VKEY_LEFT, false, true, false, true));
156 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 156 ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
157 browser(), ui::VKEY_UP, false, true, false, true)); 157 browser(), ui::VKEY_UP, false, true, false, true));
158 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 158 ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
159 browser(), ui::VKEY_RIGHT, false, true, false, true)); 159 browser(), ui::VKEY_RIGHT, false, true, false, true));
160 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 160 ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
161 browser(), ui::VKEY_DOWN, false, true, false, true)); 161 browser(), ui::VKEY_DOWN, false, true, false, true));
162 162
163 ASSERT_TRUE(catcher.GetNextResult()); 163 ASSERT_TRUE(catcher.GetNextResult());
164 } 164 }
165 #endif // OS_CHROMEOS 165 #endif // OS_CHROMEOS
166 }; 166 };
167 167
168 // Test the basic functionality of the Keybinding API: 168 // Test the basic functionality of the Keybinding API:
169 // - That pressing the shortcut keys should perform actions (activate the 169 // - That pressing the shortcut keys should perform actions (activate the
170 // browser action or send an event). 170 // browser action or send an event).
171 // - Note: Page action keybindings are tested in PageAction test below. 171 // - Note: Page action keybindings are tested in PageAction test below.
172 // - The shortcut keys taken by one extension are not overwritten by the last 172 // - The shortcut keys taken by one extension are not overwritten by the last
173 // installed extension. 173 // installed extension.
174 IN_PROC_BROWSER_TEST_F(CommandsApiTest, Basic) { 174 IN_PROC_BROWSER_TEST_F(CommandsApiTest, Basic) {
175 ASSERT_TRUE(test_server()->Start()); 175 ASSERT_TRUE(embedded_test_server()->Start());
176 ASSERT_TRUE(RunExtensionTest("keybinding/basics")) << message_; 176 ASSERT_TRUE(RunExtensionTest("keybinding/basics")) << message_;
177 const Extension* extension = GetSingleLoadedExtension(); 177 const Extension* extension = GetSingleLoadedExtension();
178 ASSERT_TRUE(extension) << message_; 178 ASSERT_TRUE(extension) << message_;
179 179
180 // Load this extension, which uses the same keybindings but sets the page 180 // Load this extension, which uses the same keybindings but sets the page
181 // to different colors. This is so we can see that it doesn't interfere. We 181 // to different colors. This is so we can see that it doesn't interfere. We
182 // don't test this extension in any other way (it should otherwise be 182 // don't test this extension in any other way (it should otherwise be
183 // immaterial to this test). 183 // immaterial to this test).
184 ASSERT_TRUE(RunExtensionTest("keybinding/conflicting")) << message_; 184 ASSERT_TRUE(RunExtensionTest("keybinding/conflicting")) << message_;
185 185
186 BrowserActionTestUtil browser_actions_bar(browser()); 186 BrowserActionTestUtil browser_actions_bar(browser());
187 // Test that there are two browser actions in the toolbar. 187 // Test that there are two browser actions in the toolbar.
188 ASSERT_EQ(2, browser_actions_bar.NumberOfBrowserActions()); 188 ASSERT_EQ(2, browser_actions_bar.NumberOfBrowserActions());
189 189
190 ui_test_utils::NavigateToURL( 190 ui_test_utils::NavigateToURL(
191 browser(), test_server()->GetURL("files/extensions/test_file.txt")); 191 browser(), embedded_test_server()->GetURL("/extensions/test_file.txt"));
192 192
193 // activeTab shouldn't have been granted yet. 193 // activeTab shouldn't have been granted yet.
194 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 194 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
195 ASSERT_TRUE(tab); 195 ASSERT_TRUE(tab);
196 196
197 EXPECT_FALSE(IsGrantedForTab(extension, tab)); 197 EXPECT_FALSE(IsGrantedForTab(extension, tab));
198 198
199 ExtensionTestMessageListener test_listener(false); // Won't reply. 199 ExtensionTestMessageListener test_listener(false); // Won't reply.
200 // Activate the browser action shortcut (Ctrl+Shift+F). 200 // Activate the browser action shortcut (Ctrl+Shift+F).
201 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 201 ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
202 browser(), ui::VKEY_F, true, true, false, false)); 202 browser(), ui::VKEY_F, true, true, false, false));
203 EXPECT_TRUE(test_listener.WaitUntilSatisfied()); 203 EXPECT_TRUE(test_listener.WaitUntilSatisfied());
204 // activeTab should now be granted. 204 // activeTab should now be granted.
205 EXPECT_TRUE(IsGrantedForTab(extension, tab)); 205 EXPECT_TRUE(IsGrantedForTab(extension, tab));
206 // Verify the command worked. 206 // Verify the command worked.
207 EXPECT_EQ(std::string("basics browser action"), test_listener.message()); 207 EXPECT_EQ(std::string("basics browser action"), test_listener.message());
208 208
209 test_listener.Reset(); 209 test_listener.Reset();
210 // Activate the command shortcut (Ctrl+Shift+Y). 210 // Activate the command shortcut (Ctrl+Shift+Y).
211 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 211 ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
212 browser(), ui::VKEY_Y, true, true, false, false)); 212 browser(), ui::VKEY_Y, true, true, false, false));
213 EXPECT_TRUE(test_listener.WaitUntilSatisfied()); 213 EXPECT_TRUE(test_listener.WaitUntilSatisfied());
214 EXPECT_EQ(std::string(kBasicsShortcutCommandName), test_listener.message()); 214 EXPECT_EQ(std::string(kBasicsShortcutCommandName), test_listener.message());
215 } 215 }
216 216
217 IN_PROC_BROWSER_TEST_F(CommandsApiTest, PageAction) { 217 IN_PROC_BROWSER_TEST_F(CommandsApiTest, PageAction) {
218 ASSERT_TRUE(test_server()->Start()); 218 ASSERT_TRUE(embedded_test_server()->Start());
219 ASSERT_TRUE(RunExtensionTest("keybinding/page_action")) << message_; 219 ASSERT_TRUE(RunExtensionTest("keybinding/page_action")) << message_;
220 const Extension* extension = GetSingleLoadedExtension(); 220 const Extension* extension = GetSingleLoadedExtension();
221 ASSERT_TRUE(extension) << message_; 221 ASSERT_TRUE(extension) << message_;
222 222
223 { 223 {
224 // Load a page, the extension will detect the navigation and request to show 224 // Load a page, the extension will detect the navigation and request to show
225 // the page action icon. 225 // the page action icon.
226 ResultCatcher catcher; 226 ResultCatcher catcher;
227 ui_test_utils::NavigateToURL( 227 ui_test_utils::NavigateToURL(
228 browser(), test_server()->GetURL("files/extensions/test_file.txt")); 228 browser(), embedded_test_server()->GetURL("/extensions/test_file.txt"));
229 ASSERT_TRUE(catcher.GetNextResult()); 229 ASSERT_TRUE(catcher.GetNextResult());
230 } 230 }
231 231
232 // Make sure it appears and is the right one. 232 // Make sure it appears and is the right one.
233 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1)); 233 ASSERT_TRUE(WaitForPageActionVisibilityChangeTo(1));
234 int tab_id = SessionTabHelper::FromWebContents( 234 int tab_id = SessionTabHelper::FromWebContents(
235 browser()->tab_strip_model()->GetActiveWebContents())->session_id().id(); 235 browser()->tab_strip_model()->GetActiveWebContents())->session_id().id();
236 ExtensionAction* action = 236 ExtensionAction* action =
237 ExtensionActionManager::Get(browser()->profile())-> 237 ExtensionActionManager::Get(browser()->profile())->
238 GetPageAction(*extension); 238 GetPageAction(*extension);
239 ASSERT_TRUE(action); 239 ASSERT_TRUE(action);
240 EXPECT_EQ("Send message", action->GetTitle(tab_id)); 240 EXPECT_EQ("Send message", action->GetTitle(tab_id));
241 241
242 ExtensionTestMessageListener test_listener(false); // Won't reply. 242 ExtensionTestMessageListener test_listener(false); // Won't reply.
243 test_listener.set_extension_id(extension->id()); 243 test_listener.set_extension_id(extension->id());
244 244
245 // Activate the shortcut (Alt+Shift+F). 245 // Activate the shortcut (Alt+Shift+F).
246 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 246 ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
247 browser(), ui::VKEY_F, false, true, true, false)); 247 browser(), ui::VKEY_F, false, true, true, false));
248 248
249 test_listener.WaitUntilSatisfied(); 249 test_listener.WaitUntilSatisfied();
250 EXPECT_EQ("clicked", test_listener.message()); 250 EXPECT_EQ("clicked", test_listener.message());
251 } 251 }
252 252
253 IN_PROC_BROWSER_TEST_F(CommandsApiTest, PageActionKeyUpdated) { 253 IN_PROC_BROWSER_TEST_F(CommandsApiTest, PageActionKeyUpdated) {
254 ASSERT_TRUE(test_server()->Start()); 254 ASSERT_TRUE(embedded_test_server()->Start());
255 ASSERT_TRUE(RunExtensionTest("keybinding/page_action")) << message_; 255 ASSERT_TRUE(RunExtensionTest("keybinding/page_action")) << message_;
256 const Extension* extension = GetSingleLoadedExtension(); 256 const Extension* extension = GetSingleLoadedExtension();
257 ASSERT_TRUE(extension) << message_; 257 ASSERT_TRUE(extension) << message_;
258 258
259 CommandService* command_service = CommandService::Get(browser()->profile()); 259 CommandService* command_service = CommandService::Get(browser()->profile());
260 // Simulate the user setting the keybinding to Alt+Shift+G. 260 // Simulate the user setting the keybinding to Alt+Shift+G.
261 command_service->UpdateKeybindingPrefs( 261 command_service->UpdateKeybindingPrefs(
262 extension->id(), manifest_values::kPageActionCommandEvent, kAltShiftG); 262 extension->id(), manifest_values::kPageActionCommandEvent, kAltShiftG);
263 263
264 { 264 {
265 // Load a page. The extension will detect the navigation and request to show 265 // Load a page. The extension will detect the navigation and request to show
266 // the page action icon. 266 // the page action icon.
267 ResultCatcher catcher; 267 ResultCatcher catcher;
268 ui_test_utils::NavigateToURL( 268 ui_test_utils::NavigateToURL(
269 browser(), test_server()->GetURL("files/extensions/test_file.txt")); 269 browser(), embedded_test_server()->GetURL("/extensions/test_file.txt"));
270 ASSERT_TRUE(catcher.GetNextResult()); 270 ASSERT_TRUE(catcher.GetNextResult());
271 } 271 }
272 272
273 ExtensionTestMessageListener test_listener(false); // Won't reply. 273 ExtensionTestMessageListener test_listener(false); // Won't reply.
274 test_listener.set_extension_id(extension->id()); 274 test_listener.set_extension_id(extension->id());
275 275
276 // Activate the shortcut. 276 // Activate the shortcut.
277 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 277 ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
278 browser(), ui::VKEY_G, false, true, true, false)); 278 browser(), ui::VKEY_G, false, true, true, false));
279 279
280 test_listener.WaitUntilSatisfied(); 280 test_listener.WaitUntilSatisfied();
281 EXPECT_EQ("clicked", test_listener.message()); 281 EXPECT_EQ("clicked", test_listener.message());
282 } 282 }
283 283
284 // This test validates that the getAll query API function returns registered 284 // This test validates that the getAll query API function returns registered
285 // commands as well as synthesized ones and that inactive commands (like the 285 // commands as well as synthesized ones and that inactive commands (like the
286 // synthesized ones are in nature) have no shortcuts. 286 // synthesized ones are in nature) have no shortcuts.
287 IN_PROC_BROWSER_TEST_F(CommandsApiTest, SynthesizedCommand) { 287 IN_PROC_BROWSER_TEST_F(CommandsApiTest, SynthesizedCommand) {
288 ASSERT_TRUE(test_server()->Start()); 288 ASSERT_TRUE(embedded_test_server()->Start());
289 ASSERT_TRUE(RunExtensionTest("keybinding/synthesized")) << message_; 289 ASSERT_TRUE(RunExtensionTest("keybinding/synthesized")) << message_;
290 } 290 }
291 291
292 // This test validates that an extension cannot request a shortcut that is 292 // This test validates that an extension cannot request a shortcut that is
293 // already in use by Chrome. 293 // already in use by Chrome.
294 IN_PROC_BROWSER_TEST_F(CommandsApiTest, DontOverwriteSystemShortcuts) { 294 IN_PROC_BROWSER_TEST_F(CommandsApiTest, DontOverwriteSystemShortcuts) {
295 ASSERT_TRUE(test_server()->Start()); 295 ASSERT_TRUE(embedded_test_server()->Start());
296 296
297 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 297 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
298 298
299 ASSERT_TRUE(RunExtensionTest("keybinding/dont_overwrite_system")) << message_; 299 ASSERT_TRUE(RunExtensionTest("keybinding/dont_overwrite_system")) << message_;
300 300
301 ui_test_utils::NavigateToURL( 301 ui_test_utils::NavigateToURL(
302 browser(), test_server()->GetURL("files/extensions/test_file.txt")); 302 browser(), embedded_test_server()->GetURL("/extensions/test_file.txt"));
303 303
304 // Activate the regular shortcut (Alt+Shift+F). 304 // Activate the regular shortcut (Alt+Shift+F).
305 ExtensionTestMessageListener alt_shift_f_listener("alt_shift_f", false); 305 ExtensionTestMessageListener alt_shift_f_listener("alt_shift_f", false);
306 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 306 ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
307 browser(), ui::VKEY_F, false, true, true, false)); 307 browser(), ui::VKEY_F, false, true, true, false));
308 EXPECT_TRUE(alt_shift_f_listener.WaitUntilSatisfied()); 308 EXPECT_TRUE(alt_shift_f_listener.WaitUntilSatisfied());
309 309
310 // Try to activate the bookmark shortcut (Ctrl+D). This should not work 310 // Try to activate the bookmark shortcut (Ctrl+D). This should not work
311 // without requesting via chrome_settings_overrides. 311 // without requesting via chrome_settings_overrides.
312 // 312 //
(...skipping 25 matching lines...) Expand all
338 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 338 ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
339 browser(), ui::VKEY_F, false, true, true, false)); 339 browser(), ui::VKEY_F, false, true, true, false));
340 EXPECT_TRUE(alt_shift_f_listener.WaitUntilSatisfied()); 340 EXPECT_TRUE(alt_shift_f_listener.WaitUntilSatisfied());
341 EXPECT_FALSE(ctrl_f_listener.was_satisfied()); 341 EXPECT_FALSE(ctrl_f_listener.was_satisfied());
342 } 342 }
343 } 343 }
344 344
345 // This test validates that an extension can remove the Chrome bookmark shortcut 345 // This test validates that an extension can remove the Chrome bookmark shortcut
346 // if it has requested to do so. 346 // if it has requested to do so.
347 IN_PROC_BROWSER_TEST_F(CommandsApiTest, RemoveBookmarkShortcut) { 347 IN_PROC_BROWSER_TEST_F(CommandsApiTest, RemoveBookmarkShortcut) {
348 ASSERT_TRUE(test_server()->Start()); 348 ASSERT_TRUE(embedded_test_server()->Start());
349 349
350 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 350 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
351 351
352 // This functionality requires a feature flag. 352 // This functionality requires a feature flag.
353 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 353 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
354 "--enable-override-bookmarks-ui", "1"); 354 "--enable-override-bookmarks-ui", "1");
355 355
356 ASSERT_TRUE(RunExtensionTest("keybinding/remove_bookmark_shortcut")) 356 ASSERT_TRUE(RunExtensionTest("keybinding/remove_bookmark_shortcut"))
357 << message_; 357 << message_;
358 358
359 EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_BOOKMARK_PAGE)); 359 EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_BOOKMARK_PAGE));
360 } 360 }
361 361
362 // This test validates that an extension cannot remove the Chrome bookmark 362 // This test validates that an extension cannot remove the Chrome bookmark
363 // shortcut without being given permission with a feature flag. 363 // shortcut without being given permission with a feature flag.
364 IN_PROC_BROWSER_TEST_F(CommandsApiTest, 364 IN_PROC_BROWSER_TEST_F(CommandsApiTest,
365 RemoveBookmarkShortcutWithoutPermission) { 365 RemoveBookmarkShortcutWithoutPermission) {
366 ASSERT_TRUE(test_server()->Start()); 366 ASSERT_TRUE(embedded_test_server()->Start());
367 367
368 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 368 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
369 369
370 EXPECT_TRUE(RunExtensionTestIgnoreManifestWarnings( 370 EXPECT_TRUE(RunExtensionTestIgnoreManifestWarnings(
371 "keybinding/remove_bookmark_shortcut")); 371 "keybinding/remove_bookmark_shortcut"));
372 372
373 EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_BOOKMARK_PAGE)); 373 EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_BOOKMARK_PAGE));
374 } 374 }
375 375
376 // This test validates that an extension that removes the Chrome bookmark 376 // This test validates that an extension that removes the Chrome bookmark
377 // shortcut continues to remove the bookmark shortcut with a user-assigned 377 // shortcut continues to remove the bookmark shortcut with a user-assigned
378 // Ctrl+D shortcut (i.e. it does not trigger the overwrite functionality). 378 // Ctrl+D shortcut (i.e. it does not trigger the overwrite functionality).
379 IN_PROC_BROWSER_TEST_F(CommandsApiTest, 379 IN_PROC_BROWSER_TEST_F(CommandsApiTest,
380 RemoveBookmarkShortcutWithUserKeyBinding) { 380 RemoveBookmarkShortcutWithUserKeyBinding) {
381 ASSERT_TRUE(test_server()->Start()); 381 ASSERT_TRUE(embedded_test_server()->Start());
382 382
383 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 383 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
384 384
385 // This functionality requires a feature flag. 385 // This functionality requires a feature flag.
386 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 386 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
387 "--enable-override-bookmarks-ui", "1"); 387 "--enable-override-bookmarks-ui", "1");
388 388
389 ASSERT_TRUE(RunExtensionTest("keybinding/remove_bookmark_shortcut")) 389 ASSERT_TRUE(RunExtensionTest("keybinding/remove_bookmark_shortcut"))
390 << message_; 390 << message_;
391 391
392 // Check that the shortcut is removed. 392 // Check that the shortcut is removed.
393 CommandService* command_service = CommandService::Get(browser()->profile()); 393 CommandService* command_service = CommandService::Get(browser()->profile());
394 const Extension* extension = GetSingleLoadedExtension(); 394 const Extension* extension = GetSingleLoadedExtension();
395 // Simulate the user setting a keybinding to Ctrl+D. 395 // Simulate the user setting a keybinding to Ctrl+D.
396 command_service->UpdateKeybindingPrefs( 396 command_service->UpdateKeybindingPrefs(
397 extension->id(), manifest_values::kBrowserActionCommandEvent, 397 extension->id(), manifest_values::kBrowserActionCommandEvent,
398 kBookmarkKeybinding); 398 kBookmarkKeybinding);
399 399
400 // Force the command enable state to be recalculated. 400 // Force the command enable state to be recalculated.
401 browser()->command_controller()->ExtensionStateChanged(); 401 browser()->command_controller()->ExtensionStateChanged();
402 402
403 EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_BOOKMARK_PAGE)); 403 EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_BOOKMARK_PAGE));
404 } 404 }
405 405
406 // This test validates that an extension can override the Chrome bookmark 406 // This test validates that an extension can override the Chrome bookmark
407 // shortcut if it has requested to do so. 407 // shortcut if it has requested to do so.
408 IN_PROC_BROWSER_TEST_F(CommandsApiTest, OverwriteBookmarkShortcut) { 408 IN_PROC_BROWSER_TEST_F(CommandsApiTest, OverwriteBookmarkShortcut) {
409 ASSERT_TRUE(test_server()->Start()); 409 ASSERT_TRUE(embedded_test_server()->Start());
410 410
411 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 411 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
412 412
413 // This functionality requires a feature flag. 413 // This functionality requires a feature flag.
414 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 414 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
415 "--enable-override-bookmarks-ui", "1"); 415 "--enable-override-bookmarks-ui", "1");
416 416
417 ASSERT_TRUE(RunExtensionTest("keybinding/overwrite_bookmark_shortcut")) 417 ASSERT_TRUE(RunExtensionTest("keybinding/overwrite_bookmark_shortcut"))
418 << message_; 418 << message_;
419 419
420 ui_test_utils::NavigateToURL( 420 ui_test_utils::NavigateToURL(
421 browser(), test_server()->GetURL("files/extensions/test_file.txt")); 421 browser(), embedded_test_server()->GetURL("/extensions/test_file.txt"));
422 422
423 // Activate the shortcut (Ctrl+D) to send a test message. 423 // Activate the shortcut (Ctrl+D) to send a test message.
424 ExtensionTestMessageListener test_listener(false); // Won't reply. 424 ExtensionTestMessageListener test_listener(false); // Won't reply.
425 ASSERT_TRUE(SendBookmarkKeyPressSync(browser())); 425 ASSERT_TRUE(SendBookmarkKeyPressSync(browser()));
426 EXPECT_TRUE(test_listener.WaitUntilSatisfied()); 426 EXPECT_TRUE(test_listener.WaitUntilSatisfied());
427 EXPECT_EQ(std::string(kOverwriteBookmarkShortcutCommandName), 427 EXPECT_EQ(std::string(kOverwriteBookmarkShortcutCommandName),
428 test_listener.message()); 428 test_listener.message());
429 } 429 }
430 430
431 // This test validates that an extension that requests to override the Chrome 431 // This test validates that an extension that requests to override the Chrome
432 // bookmark shortcut, but does not get the keybinding, does not remove the 432 // bookmark shortcut, but does not get the keybinding, does not remove the
433 // bookmark UI. 433 // bookmark UI.
434 IN_PROC_BROWSER_TEST_F(CommandsApiTest, 434 IN_PROC_BROWSER_TEST_F(CommandsApiTest,
435 OverwriteBookmarkShortcutWithoutKeybinding) { 435 OverwriteBookmarkShortcutWithoutKeybinding) {
436 // This functionality requires a feature flag. 436 // This functionality requires a feature flag.
437 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 437 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
438 "--enable-override-bookmarks-ui", "1"); 438 "--enable-override-bookmarks-ui", "1");
439 439
440 ASSERT_TRUE(test_server()->Start()); 440 ASSERT_TRUE(embedded_test_server()->Start());
441 441
442 EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_BOOKMARK_PAGE)); 442 EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_BOOKMARK_PAGE));
443 443
444 ASSERT_TRUE(RunExtensionTest("keybinding/overwrite_bookmark_shortcut")) 444 ASSERT_TRUE(RunExtensionTest("keybinding/overwrite_bookmark_shortcut"))
445 << message_; 445 << message_;
446 446
447 const Extension* extension = GetSingleLoadedExtension(); 447 const Extension* extension = GetSingleLoadedExtension();
448 CommandService* command_service = CommandService::Get(browser()->profile()); 448 CommandService* command_service = CommandService::Get(browser()->profile());
449 CommandMap commands; 449 CommandMap commands;
450 // Verify the expected command is present. 450 // Verify the expected command is present.
451 EXPECT_TRUE(command_service->GetNamedCommands( 451 EXPECT_TRUE(command_service->GetNamedCommands(
452 extension->id(), CommandService::SUGGESTED, CommandService::ANY_SCOPE, 452 extension->id(), CommandService::SUGGESTED, CommandService::ANY_SCOPE,
453 &commands)); 453 &commands));
454 EXPECT_EQ(1u, commands.count(kOverwriteBookmarkShortcutCommandName)); 454 EXPECT_EQ(1u, commands.count(kOverwriteBookmarkShortcutCommandName));
455 455
456 // Simulate the user removing the Ctrl+D keybinding from the command. 456 // Simulate the user removing the Ctrl+D keybinding from the command.
457 command_service->RemoveKeybindingPrefs( 457 command_service->RemoveKeybindingPrefs(
458 extension->id(), kOverwriteBookmarkShortcutCommandName); 458 extension->id(), kOverwriteBookmarkShortcutCommandName);
459 459
460 // Force the command enable state to be recalculated. 460 // Force the command enable state to be recalculated.
461 browser()->command_controller()->ExtensionStateChanged(); 461 browser()->command_controller()->ExtensionStateChanged();
462 462
463 EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_BOOKMARK_PAGE)); 463 EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_BOOKMARK_PAGE));
464 } 464 }
465 465
466 // This test validates that an extension override of the Chrome bookmark 466 // This test validates that an extension override of the Chrome bookmark
467 // shortcut does not supersede the same keybinding by web pages. 467 // shortcut does not supersede the same keybinding by web pages.
468 IN_PROC_BROWSER_TEST_F(CommandsApiTest, 468 IN_PROC_BROWSER_TEST_F(CommandsApiTest,
469 OverwriteBookmarkShortcutDoesNotOverrideWebKeybinding) { 469 OverwriteBookmarkShortcutDoesNotOverrideWebKeybinding) {
470 ASSERT_TRUE(test_server()->Start()); 470 ASSERT_TRUE(embedded_test_server()->Start());
471 471
472 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 472 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
473 473
474 // This functionality requires a feature flag. 474 // This functionality requires a feature flag.
475 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 475 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
476 "--enable-override-bookmarks-ui", "1"); 476 "--enable-override-bookmarks-ui", "1");
477 477
478 ASSERT_TRUE(RunExtensionTest("keybinding/overwrite_bookmark_shortcut")) 478 ASSERT_TRUE(RunExtensionTest("keybinding/overwrite_bookmark_shortcut"))
479 << message_; 479 << message_;
480 480
481 ui_test_utils::NavigateToURL( 481 ui_test_utils::NavigateToURL(
482 browser(), 482 browser(), embedded_test_server()->GetURL(
483 test_server()->GetURL( 483 "/extensions/test_file_with_ctrl-d_keybinding.html"));
484 "files/extensions/test_file_with_ctrl-d_keybinding.html"));
485 484
486 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 485 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
487 ASSERT_TRUE(tab); 486 ASSERT_TRUE(tab);
488 487
489 // Activate the shortcut (Ctrl+D) which should be handled by the page and send 488 // Activate the shortcut (Ctrl+D) which should be handled by the page and send
490 // a test message. 489 // a test message.
491 DomMessageListener listener(tab); 490 DomMessageListener listener(tab);
492 ASSERT_TRUE(SendBookmarkKeyPressSync(browser())); 491 ASSERT_TRUE(SendBookmarkKeyPressSync(browser()));
493 listener.Wait(); 492 listener.Wait();
494 EXPECT_EQ(std::string("\"web page received\""), listener.message()); 493 EXPECT_EQ(std::string("\"web page received\""), listener.message());
495 } 494 }
496 495
497 // This test validates that user-set override of the Chrome bookmark shortcut in 496 // This test validates that user-set override of the Chrome bookmark shortcut in
498 // an extension that does not request it does supersede the same keybinding by 497 // an extension that does not request it does supersede the same keybinding by
499 // web pages. 498 // web pages.
500 IN_PROC_BROWSER_TEST_F(CommandsApiTest, 499 IN_PROC_BROWSER_TEST_F(CommandsApiTest,
501 OverwriteBookmarkShortcutByUserOverridesWebKeybinding) { 500 OverwriteBookmarkShortcutByUserOverridesWebKeybinding) {
502 ASSERT_TRUE(test_server()->Start()); 501 ASSERT_TRUE(embedded_test_server()->Start());
503 502
504 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 503 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
505 504
506 // This functionality requires a feature flag. 505 // This functionality requires a feature flag.
507 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 506 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
508 "--enable-override-bookmarks-ui", "1"); 507 "--enable-override-bookmarks-ui", "1");
509 508
510 ASSERT_TRUE(RunExtensionTest("keybinding/basics")) 509 ASSERT_TRUE(RunExtensionTest("keybinding/basics"))
511 << message_; 510 << message_;
512 511
513 CommandService* command_service = CommandService::Get(browser()->profile()); 512 CommandService* command_service = CommandService::Get(browser()->profile());
514 513
515 const Extension* extension = GetSingleLoadedExtension(); 514 const Extension* extension = GetSingleLoadedExtension();
516 // Simulate the user setting the keybinding to Ctrl+D. 515 // Simulate the user setting the keybinding to Ctrl+D.
517 command_service->UpdateKeybindingPrefs( 516 command_service->UpdateKeybindingPrefs(
518 extension->id(), manifest_values::kBrowserActionCommandEvent, 517 extension->id(), manifest_values::kBrowserActionCommandEvent,
519 kBookmarkKeybinding); 518 kBookmarkKeybinding);
520 519
521 ui_test_utils::NavigateToURL( 520 ui_test_utils::NavigateToURL(
522 browser(), 521 browser(), embedded_test_server()->GetURL(
523 test_server()->GetURL( 522 "/extensions/test_file_with_ctrl-d_keybinding.html"));
524 "files/extensions/test_file_with_ctrl-d_keybinding.html"));
525 523
526 ExtensionTestMessageListener test_listener(false); // Won't reply. 524 ExtensionTestMessageListener test_listener(false); // Won't reply.
527 // Activate the shortcut (Ctrl+D) which should be handled by the extension. 525 // Activate the shortcut (Ctrl+D) which should be handled by the extension.
528 ASSERT_TRUE(SendBookmarkKeyPressSync(browser())); 526 ASSERT_TRUE(SendBookmarkKeyPressSync(browser()));
529 EXPECT_TRUE(test_listener.WaitUntilSatisfied()); 527 EXPECT_TRUE(test_listener.WaitUntilSatisfied());
530 EXPECT_EQ(std::string("basics browser action"), test_listener.message()); 528 EXPECT_EQ(std::string("basics browser action"), test_listener.message());
531 } 529 }
532 530
533 #if defined(OS_WIN) 531 #if defined(OS_WIN)
534 // Currently this feature is implemented on Windows only. 532 // Currently this feature is implemented on Windows only.
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 // 905 //
908 #if defined(OS_CHROMEOS) && !defined(NDEBUG) 906 #if defined(OS_CHROMEOS) && !defined(NDEBUG)
909 // TODO(dtseng): Test times out on Chrome OS debug. See http://crbug.com/412456. 907 // TODO(dtseng): Test times out on Chrome OS debug. See http://crbug.com/412456.
910 #define MAYBE_ContinuePropagation DISABLED_ContinuePropagation 908 #define MAYBE_ContinuePropagation DISABLED_ContinuePropagation
911 #else 909 #else
912 #define MAYBE_ContinuePropagation ContinuePropagation 910 #define MAYBE_ContinuePropagation ContinuePropagation
913 #endif 911 #endif
914 912
915 IN_PROC_BROWSER_TEST_F(CommandsApiTest, MAYBE_ContinuePropagation) { 913 IN_PROC_BROWSER_TEST_F(CommandsApiTest, MAYBE_ContinuePropagation) {
916 // Setup the environment. 914 // Setup the environment.
917 ASSERT_TRUE(test_server()->Start()); 915 ASSERT_TRUE(embedded_test_server()->Start());
918 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 916 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
919 ASSERT_TRUE(RunExtensionTest("keybinding/continue_propagation")) << message_; 917 ASSERT_TRUE(RunExtensionTest("keybinding/continue_propagation")) << message_;
920 ui_test_utils::NavigateToURL( 918 ui_test_utils::NavigateToURL(
921 browser(), test_server()->GetURL("files/extensions/test_file.txt")); 919 browser(), embedded_test_server()->GetURL("/extensions/test_file.txt"));
922 920
923 ResultCatcher catcher; 921 ResultCatcher catcher;
924 922
925 // Activate the shortcut (Ctrl+Shift+F). The page should capture the 923 // Activate the shortcut (Ctrl+Shift+F). The page should capture the
926 // keystroke and not the extension since |onCommand| has no event listener 924 // keystroke and not the extension since |onCommand| has no event listener
927 // initially. 925 // initially.
928 ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 926 ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
929 browser(), ui::VKEY_F, true, true, false, false)); 927 browser(), ui::VKEY_F, true, true, false, false));
930 ASSERT_TRUE(catcher.GetNextResult()); 928 ASSERT_TRUE(catcher.GetNextResult());
931 929
(...skipping 19 matching lines...) Expand all
951 #define MAYBE_ChromeOSConversions ChromeOSConversions 949 #define MAYBE_ChromeOSConversions ChromeOSConversions
952 #endif 950 #endif
953 IN_PROC_BROWSER_TEST_F(CommandsApiTest, MAYBE_ChromeOSConversions) { 951 IN_PROC_BROWSER_TEST_F(CommandsApiTest, MAYBE_ChromeOSConversions) {
954 RunChromeOSConversionTest("keybinding/chromeos_conversions"); 952 RunChromeOSConversionTest("keybinding/chromeos_conversions");
955 } 953 }
956 #endif // OS_CHROMEOS 954 #endif // OS_CHROMEOS
957 955
958 // Make sure component extensions retain keybindings after removal then 956 // Make sure component extensions retain keybindings after removal then
959 // re-adding. 957 // re-adding.
960 IN_PROC_BROWSER_TEST_F(CommandsApiTest, AddRemoveAddComponentExtension) { 958 IN_PROC_BROWSER_TEST_F(CommandsApiTest, AddRemoveAddComponentExtension) {
961 ASSERT_TRUE(test_server()->Start()); 959 ASSERT_TRUE(embedded_test_server()->Start());
962 ASSERT_TRUE(RunComponentExtensionTest("keybinding/component")) << message_; 960 ASSERT_TRUE(RunComponentExtensionTest("keybinding/component")) << message_;
963 961
964 extensions::ExtensionSystem::Get(browser()->profile()) 962 extensions::ExtensionSystem::Get(browser()->profile())
965 ->extension_service() 963 ->extension_service()
966 ->component_loader() 964 ->component_loader()
967 ->Remove("pkplfbidichfdicaijlchgnapepdginl"); 965 ->Remove("pkplfbidichfdicaijlchgnapepdginl");
968 966
969 ASSERT_TRUE(RunComponentExtensionTest("keybinding/component")) << message_; 967 ASSERT_TRUE(RunComponentExtensionTest("keybinding/component")) << message_;
970 } 968 }
971 969
972 } // namespace extensions 970 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_apitest.cc ('k') | chrome/browser/extensions/extension_loading_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698