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

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

Issue 667833004: Fix extension command service to check if user has modified key before overwrite on update. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix conflicts with rebase Created 6 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/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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698