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 #ifndef CHROME_BROWSER_EXTENSIONS_API_COMMANDS_COMMAND_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_COMMANDS_COMMAND_SERVICE_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_API_COMMANDS_COMMAND_SERVICE_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_API_COMMANDS_COMMAND_SERVICE_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 ACTIVE_ONLY, | 42 ACTIVE_ONLY, |
43 }; | 43 }; |
44 | 44 |
45 // Register prefs for keybinding. | 45 // Register prefs for keybinding. |
46 static void RegisterUserPrefs(PrefService* user_prefs); | 46 static void RegisterUserPrefs(PrefService* user_prefs); |
47 | 47 |
48 // Constructs a CommandService object for the given profile. | 48 // Constructs a CommandService object for the given profile. |
49 explicit CommandService(Profile* profile); | 49 explicit CommandService(Profile* profile); |
50 virtual ~CommandService(); | 50 virtual ~CommandService(); |
51 | 51 |
52 // Gets the keybinding (if any) for the browser action of an extension given | 52 // Gets the command (if any) for the browser action of an extension given |
53 // its |extension_id|. The function consults the master list to see if | 53 // its |extension_id|. The function consults the master list to see if |
54 // the keybinding is active. Returns false if the extension has no browser | 54 // the command is active. Returns false if the extension has no browser |
55 // action. Returns false if the keybinding is not active and |type| requested | 55 // action. Returns false if the command is not active and |type| requested |
56 // is ACTIVE_ONLY. |command| contains the command found and |active| (if not | 56 // is ACTIVE_ONLY. |command| contains the command found and |active| (if not |
57 // NULL) contains whether |command| is active. | 57 // NULL) contains whether |command| is active. |
58 bool GetBrowserActionCommand(const std::string& extension_id, | 58 bool GetBrowserActionCommand(const std::string& extension_id, |
59 QueryType type, | 59 QueryType type, |
60 extensions::Command* command, | 60 extensions::Command* command, |
61 bool* active); | 61 bool* active); |
62 | 62 |
63 // Gets the keybinding (if any) for the page action of an extension given | 63 // Gets the command (if any) for the page action of an extension given |
64 // its |extension_id|. The function consults the master list to see if | 64 // its |extension_id|. The function consults the master list to see if |
65 // the keybinding is active. Returns false if the extension has no page | 65 // the command is active. Returns false if the extension has no page |
66 // action. Returns false if the keybinding is not active and |type| requested | 66 // action. Returns false if the command is not active and |type| requested |
67 // is ACTIVE_ONLY. |command| contains the command found and |active| (if not | 67 // is ACTIVE_ONLY. |command| contains the command found and |active| (if not |
68 // NULL) contains whether |command| is active. | 68 // NULL) contains whether |command| is active. |
69 bool GetPageActionCommand(const std::string& extension_id, | 69 bool GetPageActionCommand(const std::string& extension_id, |
70 QueryType type, | 70 QueryType type, |
71 extensions::Command* command, | 71 extensions::Command* command, |
72 bool* active); | 72 bool* active); |
73 | 73 |
74 // Gets the active keybinding (if any) for the named commands of an extension | 74 // Gets the command (if any) for the script badge of an extension given |
| 75 // its |extension_id|. The function consults the master list to see if |
| 76 // the command is active. Returns false if the extension has no script |
| 77 // badge. Returns false if the command is not active and |type| requested |
| 78 // is ACTIVE_ONLY. |command| contains the command found and |active| (if not |
| 79 // NULL) contains whether |command| is active. |
| 80 bool GetScriptBadgeCommand(const std::string& extension_id, |
| 81 QueryType type, |
| 82 extensions::Command* command, |
| 83 bool* active); |
| 84 |
| 85 // Gets the active command (if any) for the named commands of an extension |
75 // given its |extension_id|. The function consults the master list to see if | 86 // given its |extension_id|. The function consults the master list to see if |
76 // the keybinding is active. Returns an empty map if the extension has no | 87 // the command is active. Returns an empty map if the extension has no |
77 // named commands or no active named commands when |type| requested is | 88 // named commands or no active named commands when |type| requested is |
78 // ACTIVE_ONLY. | 89 // ACTIVE_ONLY. |
79 bool GetNamedCommands(const std::string& extension_id, | 90 bool GetNamedCommands(const std::string& extension_id, |
80 QueryType type, | 91 QueryType type, |
81 extensions::CommandMap* command_map); | 92 extensions::CommandMap* command_map); |
82 | 93 |
83 // Records a keybinding |accelerator| as active for an extension with id | 94 // Records a keybinding |accelerator| as active for an extension with id |
84 // |extension_id| and command with the name |command_name|. If | 95 // |extension_id| and command with the name |command_name|. If |
85 // |allow_overrides| is false, the keybinding must be free for the change to | 96 // |allow_overrides| is false, the keybinding must be free for the change to |
86 // be recorded (as determined by the master list in |user_prefs|). If | 97 // be recorded (as determined by the master list in |user_prefs|). If |
(...skipping 18 matching lines...) Expand all Loading... |
105 // command is not found. | 116 // command is not found. |
106 ui::Accelerator FindShortcutForCommand(const std::string& extension_id, | 117 ui::Accelerator FindShortcutForCommand(const std::string& extension_id, |
107 const std::string& command); | 118 const std::string& command); |
108 | 119 |
109 // Overridden from content::NotificationObserver. | 120 // Overridden from content::NotificationObserver. |
110 virtual void Observe(int type, | 121 virtual void Observe(int type, |
111 const content::NotificationSource& source, | 122 const content::NotificationSource& source, |
112 const content::NotificationDetails& details) OVERRIDE; | 123 const content::NotificationDetails& details) OVERRIDE; |
113 | 124 |
114 private: | 125 private: |
| 126 // An enum specifying the types of icons that can have a command. |
| 127 enum ExtensionActionType { |
| 128 BROWSER_ACTION, |
| 129 PAGE_ACTION, |
| 130 SCRIPT_BADGE, |
| 131 }; |
| 132 |
115 // Assigns initial keybinding for a given |extension|'s page action, browser | 133 // Assigns initial keybinding for a given |extension|'s page action, browser |
116 // action and named commands. In each case, if the suggested keybinding is | 134 // action and named commands. In each case, if the suggested keybinding is |
117 // free, it will be taken by this extension. If not, that keybinding request | 135 // free, it will be taken by this extension. If not, that keybinding request |
118 // is ignored. |user_pref| is the PrefService used to record the new | 136 // is ignored. |user_pref| is the PrefService used to record the new |
119 // keybinding assignment. | 137 // keybinding assignment. |
120 void AssignInitialKeybindings(const extensions::Extension* extension); | 138 void AssignInitialKeybindings(const extensions::Extension* extension); |
121 | 139 |
122 // Removes all keybindings for a given extension by its |extension_id|. | 140 // Removes all keybindings for a given extension by its |extension_id|. |
123 // |command_name| is optional and if specified, causes only the command with | 141 // |command_name| is optional and if specified, causes only the command with |
124 // the name |command_name| to be removed. | 142 // the name |command_name| to be removed. |
125 void RemoveKeybindingPrefs(const std::string& extension_id, | 143 void RemoveKeybindingPrefs(const std::string& extension_id, |
126 const std::string& command_name); | 144 const std::string& command_name); |
127 | 145 |
128 bool GetExtensionActionCommand(const std::string& extension_id, | 146 bool GetExtensionActionCommand(const std::string& extension_id, |
129 QueryType type, | 147 QueryType query_type, |
130 extensions::Command* command, | 148 extensions::Command* command, |
131 bool* active, | 149 bool* active, |
132 bool browser_action); | 150 ExtensionActionType action_type); |
133 | 151 |
134 // The content notification registrar for listening to extension events. | 152 // The content notification registrar for listening to extension events. |
135 content::NotificationRegistrar registrar_; | 153 content::NotificationRegistrar registrar_; |
136 | 154 |
137 // A weak pointer to the profile we are associated with. Not owned by us. | 155 // A weak pointer to the profile we are associated with. Not owned by us. |
138 Profile* profile_; | 156 Profile* profile_; |
139 | 157 |
140 DISALLOW_COPY_AND_ASSIGN(CommandService); | 158 DISALLOW_COPY_AND_ASSIGN(CommandService); |
141 }; | 159 }; |
142 | 160 |
143 } // namespace extensions | 161 } // namespace extensions |
144 | 162 |
145 #endif // CHROME_BROWSER_EXTENSIONS_API_COMMANDS_COMMAND_SERVICE_H_ | 163 #endif // CHROME_BROWSER_EXTENSIONS_API_COMMANDS_COMMAND_SERVICE_H_ |
OLD | NEW |