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

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: Code cleanup 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
41 // Named command for media key overwrite test
42 const char kMediaKeyTestCommand[] = "test_mediakeys_update";
40 } 43 }
41 44
42 class CommandsApiTest : public ExtensionApiTest { 45 class CommandsApiTest : public ExtensionApiTest {
43 public: 46 public:
44 CommandsApiTest() {} 47 CommandsApiTest() {}
45 virtual ~CommandsApiTest() {} 48 virtual ~CommandsApiTest() {}
46 49
47 protected: 50 protected:
48 BrowserActionTestUtil GetBrowserActionsBar() { 51 BrowserActionTestUtil GetBrowserActionsBar() {
49 return BrowserActionTestUtil(browser()); 52 return BrowserActionTestUtil(browser());
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 670
668 // Verify it has a command of Alt+Shift+G. 671 // Verify it has a command of Alt+Shift+G.
669 accelerator = command_service->FindCommandByName( 672 accelerator = command_service->FindCommandByName(
670 kId, manifest_values::kBrowserActionCommandEvent).accelerator(); 673 kId, manifest_values::kBrowserActionCommandEvent).accelerator();
671 EXPECT_EQ(ui::VKEY_G, accelerator.key_code()); 674 EXPECT_EQ(ui::VKEY_G, accelerator.key_code());
672 EXPECT_FALSE(accelerator.IsCtrlDown()); 675 EXPECT_FALSE(accelerator.IsCtrlDown());
673 EXPECT_TRUE(accelerator.IsShiftDown()); 676 EXPECT_TRUE(accelerator.IsShiftDown());
674 EXPECT_TRUE(accelerator.IsAltDown()); 677 EXPECT_TRUE(accelerator.IsAltDown());
675 } 678 }
676 679
680 // Test that Media keys do not overwrite previous settings
681 IN_PROC_BROWSER_TEST_F(CommandsApiTest,
682 MediaKeyShortcutChangedOnUpdateAfterBeingReassignedByUser) {
Finnur 2014/10/23 09:09:54 style: Indentation is off here, should be 4 spaces
683 base::ScopedTempDir scoped_temp_dir;
684 EXPECT_TRUE(scoped_temp_dir.CreateUniqueTempDir());
685 base::FilePath pem_path = test_data_dir_.
686 AppendASCII("keybinding").AppendASCII("keybinding.pem");
687 base::FilePath path_v1 = PackExtensionWithOptions(
688 test_data_dir_.AppendASCII("keybinding").AppendASCII("update")
689 .AppendASCII("mk_v1"),
690 scoped_temp_dir.path().AppendASCII("mk_v1.crx"),
691 pem_path,
692 base::FilePath());
693 base::FilePath path_v2_reassigned = PackExtensionWithOptions(
694 test_data_dir_.AppendASCII("keybinding").AppendASCII("update")
695 .AppendASCII("mk_v2"),
696 scoped_temp_dir.path().AppendASCII("mk_v2.crx"),
697 pem_path,
698 base::FilePath());
699
700 ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile());
701 CommandService* command_service = CommandService::Get(browser()->profile());
702
703 // Install v1 of the extension.
704 ASSERT_TRUE(InstallExtension(path_v1, 1));
705 EXPECT_TRUE(registry->GetExtensionById(kId, ExtensionRegistry::ENABLED) !=
706 NULL);
707
708 // Verify it has a command of MediaPlayPause
709 ui::Accelerator accelerator = command_service->FindCommandByName(
710 kId, kMediaKeyTestCommand).accelerator();
711 EXPECT_EQ(ui::VKEY_MEDIA_PLAY_PAUSE, accelerator.key_code());
712 EXPECT_FALSE(accelerator.IsCtrlDown());
713 EXPECT_FALSE(accelerator.IsShiftDown());
714 EXPECT_FALSE(accelerator.IsAltDown());
715
716 // Simulate the user setting the keybinding to Alt+Shift+G.
717 command_service->UpdateKeybindingPrefs(
718 kId, kMediaKeyTestCommand, kAltShiftG);
719
720 // Update to version 2 with different keybinding assigned.
721 EXPECT_TRUE(UpdateExtension(kId, path_v2_reassigned, 0));
722 EXPECT_TRUE(registry->GetExtensionById(kId, ExtensionRegistry::ENABLED) !=
723 NULL);
724
725 // Verify it has a command of Alt+Shift+G.
726 accelerator = command_service->FindCommandByName(
727 kId, kMediaKeyTestCommand).accelerator();
728
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