| 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 "chrome/browser/extensions/api/commands/command_service.h" | 5 #include "chrome/browser/extensions/api/commands/command_service.h" |
| 6 | 6 |
| 7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
| 8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
| 9 #include "chrome/browser/extensions/extension_keybinding_registry.h" | 9 #include "chrome/browser/extensions/extension_keybinding_registry.h" |
| 10 #include "chrome/browser/extensions/extension_service.h" | 10 #include "chrome/browser/extensions/extension_service.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 UTF16ToUTF8(accelerator.GetShortcutText()); | 30 UTF16ToUTF8(accelerator.GetShortcutText()); |
| 31 } | 31 } |
| 32 | 32 |
| 33 } // namespace | 33 } // namespace |
| 34 | 34 |
| 35 namespace extensions { | 35 namespace extensions { |
| 36 | 36 |
| 37 // static | 37 // static |
| 38 void CommandService::RegisterUserPrefs( | 38 void CommandService::RegisterUserPrefs( |
| 39 PrefService* user_prefs) { | 39 PrefService* user_prefs) { |
| 40 user_prefs->RegisterDictionaryPref(prefs::kExtensionKeybindings, | 40 user_prefs->RegisterDictionaryPref(prefs::kExtensionCommands, |
| 41 PrefService::SYNCABLE_PREF); | 41 PrefService::SYNCABLE_PREF); |
| 42 } | 42 } |
| 43 | 43 |
| 44 CommandService::CommandService(Profile* profile) | 44 CommandService::CommandService(Profile* profile) |
| 45 : profile_(profile) { | 45 : profile_(profile) { |
| 46 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALLED, | 46 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALLED, |
| 47 content::Source<Profile>(profile)); | 47 content::Source<Profile>(profile)); |
| 48 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNINSTALLED, | 48 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNINSTALLED, |
| 49 content::Source<Profile>(profile)); | 49 content::Source<Profile>(profile)); |
| 50 } | 50 } |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 | 101 |
| 102 bool CommandService::AddKeybindingPref( | 102 bool CommandService::AddKeybindingPref( |
| 103 const ui::Accelerator& accelerator, | 103 const ui::Accelerator& accelerator, |
| 104 std::string extension_id, | 104 std::string extension_id, |
| 105 std::string command_name, | 105 std::string command_name, |
| 106 bool allow_overrides) { | 106 bool allow_overrides) { |
| 107 if (accelerator.key_code() == ui::VKEY_UNKNOWN) | 107 if (accelerator.key_code() == ui::VKEY_UNKNOWN) |
| 108 return false; | 108 return false; |
| 109 | 109 |
| 110 DictionaryPrefUpdate updater(profile_->GetPrefs(), | 110 DictionaryPrefUpdate updater(profile_->GetPrefs(), |
| 111 prefs::kExtensionKeybindings); | 111 prefs::kExtensionCommands); |
| 112 DictionaryValue* bindings = updater.Get(); | 112 DictionaryValue* bindings = updater.Get(); |
| 113 | 113 |
| 114 std::string key = GetPlatformKeybindingKeyForAccelerator(accelerator); | 114 std::string key = GetPlatformKeybindingKeyForAccelerator(accelerator); |
| 115 | 115 |
| 116 if (!allow_overrides && bindings->HasKey(key)) | 116 if (!allow_overrides && bindings->HasKey(key)) |
| 117 return false; // Already taken. | 117 return false; // Already taken. |
| 118 | 118 |
| 119 DictionaryValue* keybinding = new DictionaryValue(); | 119 DictionaryValue* keybinding = new DictionaryValue(); |
| 120 keybinding->SetString(kExtension, extension_id); | 120 keybinding->SetString(kExtension, extension_id); |
| 121 keybinding->SetString(kCommandName, command_name); | 121 keybinding->SetString(kCommandName, command_name); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 // shortcut before proceeding. | 160 // shortcut before proceeding. |
| 161 RemoveKeybindingPrefs(extension_id, command_name); | 161 RemoveKeybindingPrefs(extension_id, command_name); |
| 162 | 162 |
| 163 ui::Accelerator accelerator = Command::StringToAccelerator(keystroke); | 163 ui::Accelerator accelerator = Command::StringToAccelerator(keystroke); |
| 164 AddKeybindingPref(accelerator, extension_id, command_name, true); | 164 AddKeybindingPref(accelerator, extension_id, command_name, true); |
| 165 } | 165 } |
| 166 | 166 |
| 167 ui::Accelerator CommandService::FindShortcutForCommand( | 167 ui::Accelerator CommandService::FindShortcutForCommand( |
| 168 const std::string& extension_id, const std::string& command) { | 168 const std::string& extension_id, const std::string& command) { |
| 169 const DictionaryValue* bindings = | 169 const DictionaryValue* bindings = |
| 170 profile_->GetPrefs()->GetDictionary(prefs::kExtensionKeybindings); | 170 profile_->GetPrefs()->GetDictionary(prefs::kExtensionCommands); |
| 171 for (DictionaryValue::key_iterator it = bindings->begin_keys(); | 171 for (DictionaryValue::key_iterator it = bindings->begin_keys(); |
| 172 it != bindings->end_keys(); ++it) { | 172 it != bindings->end_keys(); ++it) { |
| 173 const DictionaryValue* item = NULL; | 173 const DictionaryValue* item = NULL; |
| 174 bindings->GetDictionary(*it, &item); | 174 bindings->GetDictionary(*it, &item); |
| 175 | 175 |
| 176 std::string extension; | 176 std::string extension; |
| 177 item->GetString(kExtension, &extension); | 177 item->GetString(kExtension, &extension); |
| 178 if (extension != extension_id) | 178 if (extension != extension_id) |
| 179 continue; | 179 continue; |
| 180 std::string command_name; | 180 std::string command_name; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 AddKeybindingPref(page_action_command->accelerator(), | 217 AddKeybindingPref(page_action_command->accelerator(), |
| 218 extension->id(), | 218 extension->id(), |
| 219 page_action_command->command_name(), | 219 page_action_command->command_name(), |
| 220 false); // Overwriting not allowed. | 220 false); // Overwriting not allowed. |
| 221 } | 221 } |
| 222 } | 222 } |
| 223 | 223 |
| 224 void CommandService::RemoveKeybindingPrefs(const std::string& extension_id, | 224 void CommandService::RemoveKeybindingPrefs(const std::string& extension_id, |
| 225 const std::string& command_name) { | 225 const std::string& command_name) { |
| 226 DictionaryPrefUpdate updater(profile_->GetPrefs(), | 226 DictionaryPrefUpdate updater(profile_->GetPrefs(), |
| 227 prefs::kExtensionKeybindings); | 227 prefs::kExtensionCommands); |
| 228 DictionaryValue* bindings = updater.Get(); | 228 DictionaryValue* bindings = updater.Get(); |
| 229 | 229 |
| 230 typedef std::vector<std::string> KeysToRemove; | 230 typedef std::vector<std::string> KeysToRemove; |
| 231 KeysToRemove keys_to_remove; | 231 KeysToRemove keys_to_remove; |
| 232 for (DictionaryValue::key_iterator it = bindings->begin_keys(); | 232 for (DictionaryValue::key_iterator it = bindings->begin_keys(); |
| 233 it != bindings->end_keys(); ++it) { | 233 it != bindings->end_keys(); ++it) { |
| 234 std::string key = *it; | 234 std::string key = *it; |
| 235 DictionaryValue* item = NULL; | 235 DictionaryValue* item = NULL; |
| 236 bindings->GetDictionary(key, &item); | 236 bindings->GetDictionary(key, &item); |
| 237 | 237 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 return false; | 296 return false; |
| 297 | 297 |
| 298 *command = *requested_command; | 298 *command = *requested_command; |
| 299 if (shortcut_assigned.key_code() != ui::VKEY_UNKNOWN) | 299 if (shortcut_assigned.key_code() != ui::VKEY_UNKNOWN) |
| 300 command->set_accelerator(shortcut_assigned); | 300 command->set_accelerator(shortcut_assigned); |
| 301 | 301 |
| 302 return true; | 302 return true; |
| 303 } | 303 } |
| 304 | 304 |
| 305 } // namespace extensions | 305 } // namespace extensions |
| OLD | NEW |