| OLD | NEW |
| 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/browser/extensions/active_tab_permission_granter.h" | 6 #include "chrome/browser/extensions/active_tab_permission_granter.h" |
| 7 #include "chrome/browser/extensions/api/commands/command_service.h" | 7 #include "chrome/browser/extensions/api/commands/command_service.h" |
| 8 #include "chrome/browser/extensions/browser_action_test_util.h" | 8 #include "chrome/browser/extensions/browser_action_test_util.h" |
| 9 #include "chrome/browser/extensions/extension_action.h" | 9 #include "chrome/browser/extensions/extension_action.h" |
| 10 #include "chrome/browser/extensions/extension_action_manager.h" | 10 #include "chrome/browser/extensions/extension_action_manager.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 namespace extensions { | 30 namespace extensions { |
| 31 | 31 |
| 32 namespace { | 32 namespace { |
| 33 // This extension ID is used for tests require a stable ID over multiple | 33 // This extension ID is used for tests require a stable ID over multiple |
| 34 // extension installs. | 34 // extension installs. |
| 35 const char kId[] = "pgoakhfeplldmjheffidklpoklkppipp"; | 35 const char kId[] = "pgoakhfeplldmjheffidklpoklkppipp"; |
| 36 | 36 |
| 37 // Default keybinding to use for emulating user-defined shortcut overrides. The | 37 // Default keybinding to use for emulating user-defined shortcut overrides. The |
| 38 // test extensions use Alt+Shift+F and Alt+Shift+H. | 38 // test extensions use Alt+Shift+F and Alt+Shift+H. |
| 39 const char kAltShiftG[] = "Alt+Shift+G"; | 39 const char kAltShiftG[] = "Alt+Shift+G"; |
| 40 } | 40 |
| 41 // Named command for media key overwrite test. |
| 42 const char kMediaKeyTestCommand[] = "test_mediakeys_update"; |
| 43 |
| 44 } // namespace |
| 41 | 45 |
| 42 class CommandsApiTest : public ExtensionApiTest { | 46 class CommandsApiTest : public ExtensionApiTest { |
| 43 public: | 47 public: |
| 44 CommandsApiTest() {} | 48 CommandsApiTest() {} |
| 45 virtual ~CommandsApiTest() {} | 49 virtual ~CommandsApiTest() {} |
| 46 | 50 |
| 47 protected: | 51 protected: |
| 48 BrowserActionTestUtil GetBrowserActionsBar() { | 52 BrowserActionTestUtil GetBrowserActionsBar() { |
| 49 return BrowserActionTestUtil(browser()); | 53 return BrowserActionTestUtil(browser()); |
| 50 } | 54 } |
| (...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 667 | 671 |
| 668 // Verify it has a command of Alt+Shift+G. | 672 // Verify it has a command of Alt+Shift+G. |
| 669 accelerator = command_service->FindCommandByName( | 673 accelerator = command_service->FindCommandByName( |
| 670 kId, manifest_values::kBrowserActionCommandEvent).accelerator(); | 674 kId, manifest_values::kBrowserActionCommandEvent).accelerator(); |
| 671 EXPECT_EQ(ui::VKEY_G, accelerator.key_code()); | 675 EXPECT_EQ(ui::VKEY_G, accelerator.key_code()); |
| 672 EXPECT_FALSE(accelerator.IsCtrlDown()); | 676 EXPECT_FALSE(accelerator.IsCtrlDown()); |
| 673 EXPECT_TRUE(accelerator.IsShiftDown()); | 677 EXPECT_TRUE(accelerator.IsShiftDown()); |
| 674 EXPECT_TRUE(accelerator.IsAltDown()); | 678 EXPECT_TRUE(accelerator.IsAltDown()); |
| 675 } | 679 } |
| 676 | 680 |
| 681 // Test that Media keys do not overwrite previous settings. |
| 682 IN_PROC_BROWSER_TEST_F(CommandsApiTest, |
| 683 MediaKeyShortcutChangedOnUpdateAfterBeingReassignedByUser) { |
| 684 base::ScopedTempDir scoped_temp_dir; |
| 685 EXPECT_TRUE(scoped_temp_dir.CreateUniqueTempDir()); |
| 686 base::FilePath pem_path = test_data_dir_. |
| 687 AppendASCII("keybinding").AppendASCII("keybinding.pem"); |
| 688 base::FilePath path_v1 = PackExtensionWithOptions( |
| 689 test_data_dir_.AppendASCII("keybinding").AppendASCII("update") |
| 690 .AppendASCII("mk_v1"), |
| 691 scoped_temp_dir.path().AppendASCII("mk_v1.crx"), |
| 692 pem_path, |
| 693 base::FilePath()); |
| 694 base::FilePath path_v2_reassigned = PackExtensionWithOptions( |
| 695 test_data_dir_.AppendASCII("keybinding").AppendASCII("update") |
| 696 .AppendASCII("mk_v2"), |
| 697 scoped_temp_dir.path().AppendASCII("mk_v2.crx"), |
| 698 pem_path, |
| 699 base::FilePath()); |
| 700 |
| 701 ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile()); |
| 702 CommandService* command_service = CommandService::Get(browser()->profile()); |
| 703 |
| 704 // Install v1 of the extension. |
| 705 ASSERT_TRUE(InstallExtension(path_v1, 1)); |
| 706 EXPECT_TRUE(registry->GetExtensionById(kId, ExtensionRegistry::ENABLED) != |
| 707 NULL); |
| 708 |
| 709 // Verify it has a command of MediaPlayPause. |
| 710 ui::Accelerator accelerator = command_service->FindCommandByName( |
| 711 kId, kMediaKeyTestCommand).accelerator(); |
| 712 EXPECT_EQ(ui::VKEY_MEDIA_PLAY_PAUSE, accelerator.key_code()); |
| 713 EXPECT_FALSE(accelerator.IsCtrlDown()); |
| 714 EXPECT_FALSE(accelerator.IsShiftDown()); |
| 715 EXPECT_FALSE(accelerator.IsAltDown()); |
| 716 |
| 717 // Simulate the user setting the keybinding to Alt+Shift+G. |
| 718 command_service->UpdateKeybindingPrefs( |
| 719 kId, kMediaKeyTestCommand, kAltShiftG); |
| 720 |
| 721 // Update to version 2 with different keybinding assigned. |
| 722 EXPECT_TRUE(UpdateExtension(kId, path_v2_reassigned, 0)); |
| 723 EXPECT_TRUE(registry->GetExtensionById(kId, ExtensionRegistry::ENABLED) != |
| 724 NULL); |
| 725 |
| 726 // Verify it has a command of Alt+Shift+G. |
| 727 accelerator = command_service->FindCommandByName( |
| 728 kId, kMediaKeyTestCommand).accelerator(); |
| 729 EXPECT_EQ(ui::VKEY_G, accelerator.key_code()); |
| 730 EXPECT_FALSE(accelerator.IsCtrlDown()); |
| 731 EXPECT_TRUE(accelerator.IsShiftDown()); |
| 732 EXPECT_TRUE(accelerator.IsAltDown()); |
| 733 } |
| 734 |
| 677 IN_PROC_BROWSER_TEST_F(CommandsApiTest, | 735 IN_PROC_BROWSER_TEST_F(CommandsApiTest, |
| 678 ShortcutRemovedOnUpdateAfterBeingReassignedByUser) { | 736 ShortcutRemovedOnUpdateAfterBeingReassignedByUser) { |
| 679 base::ScopedTempDir scoped_temp_dir; | 737 base::ScopedTempDir scoped_temp_dir; |
| 680 EXPECT_TRUE(scoped_temp_dir.CreateUniqueTempDir()); | 738 EXPECT_TRUE(scoped_temp_dir.CreateUniqueTempDir()); |
| 681 base::FilePath pem_path = test_data_dir_. | 739 base::FilePath pem_path = test_data_dir_. |
| 682 AppendASCII("keybinding").AppendASCII("keybinding.pem"); | 740 AppendASCII("keybinding").AppendASCII("keybinding.pem"); |
| 683 base::FilePath path_v1 = PackExtensionWithOptions( | 741 base::FilePath path_v1 = PackExtensionWithOptions( |
| 684 test_data_dir_.AppendASCII("keybinding").AppendASCII("update") | 742 test_data_dir_.AppendASCII("keybinding").AppendASCII("update") |
| 685 .AppendASCII("v1"), | 743 .AppendASCII("v1"), |
| 686 scoped_temp_dir.path().AppendASCII("v1.crx"), | 744 scoped_temp_dir.path().AppendASCII("v1.crx"), |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 772 #define MAYBE_ChromeOSConversions DISABLED_ChromeOSConversions | 830 #define MAYBE_ChromeOSConversions DISABLED_ChromeOSConversions |
| 773 #else | 831 #else |
| 774 #define MAYBE_ChromeOSConversions ChromeOSConversions | 832 #define MAYBE_ChromeOSConversions ChromeOSConversions |
| 775 #endif | 833 #endif |
| 776 IN_PROC_BROWSER_TEST_F(CommandsApiTest, MAYBE_ChromeOSConversions) { | 834 IN_PROC_BROWSER_TEST_F(CommandsApiTest, MAYBE_ChromeOSConversions) { |
| 777 RunChromeOSConversionTest("keybinding/chromeos_conversions"); | 835 RunChromeOSConversionTest("keybinding/chromeos_conversions"); |
| 778 } | 836 } |
| 779 #endif // OS_CHROMEOS | 837 #endif // OS_CHROMEOS |
| 780 | 838 |
| 781 } // namespace extensions | 839 } // namespace extensions |
| OLD | NEW |