| Index: chrome/browser/extensions/api/commands/command_service.cc
|
| diff --git a/chrome/browser/extensions/api/commands/command_service.cc b/chrome/browser/extensions/api/commands/command_service.cc
|
| index 74645d250b5284b050eeadcef1c0f3392b4b79db..b5d123bb4565200ddb28d2a2342da7a751ca07a2 100644
|
| --- a/chrome/browser/extensions/api/commands/command_service.cc
|
| +++ b/chrome/browser/extensions/api/commands/command_service.cc
|
| @@ -23,18 +23,40 @@
|
| #include "content/public/browser/notification_service.h"
|
|
|
| using extensions::Extension;
|
| +using extensions::ExtensionPrefs;
|
|
|
| namespace {
|
|
|
| const char kExtension[] = "extension";
|
| const char kCommandName[] = "command_name";
|
|
|
| +// A preference that indicates that the initial keybindings for the given
|
| +// extension have been set.
|
| +const char kInitialBindingsHaveBeenAssigned[] = "initial_keybindings_set";
|
| +
|
| std::string GetPlatformKeybindingKeyForAccelerator(
|
| const ui::Accelerator& accelerator) {
|
| return extensions::Command::CommandPlatform() + ":" +
|
| UTF16ToUTF8(accelerator.GetShortcutText());
|
| }
|
|
|
| +void SetInitialBindingsHaveBeenAssigned(
|
| + ExtensionPrefs* prefs, const std::string& extension_id) {
|
| + prefs->UpdateExtensionPref(extension_id, kInitialBindingsHaveBeenAssigned,
|
| + Value::CreateBooleanValue(true));
|
| +}
|
| +
|
| +bool InitialBindingsHaveBeenAssigned(
|
| + const ExtensionPrefs* prefs, const std::string& extension_id) {
|
| + bool assigned = false;
|
| + if (!prefs || !prefs->ReadPrefAsBoolean(extension_id,
|
| + kInitialBindingsHaveBeenAssigned,
|
| + &assigned))
|
| + return false;
|
| +
|
| + return assigned;
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace extensions {
|
| @@ -231,6 +253,13 @@ void CommandService::AssignInitialKeybindings(const Extension* extension) {
|
| if (!commands)
|
| return;
|
|
|
| + ExtensionService* extension_service =
|
| + ExtensionSystem::Get(profile_)->extension_service();
|
| + ExtensionPrefs* extension_prefs = extension_service->extension_prefs();
|
| + if (InitialBindingsHaveBeenAssigned(extension_prefs, extension->id()))
|
| + return;
|
| + SetInitialBindingsHaveBeenAssigned(extension_prefs, extension->id());
|
| +
|
| extensions::CommandMap::const_iterator iter = commands->begin();
|
| for (; iter != commands->end(); ++iter) {
|
| if (!chrome::IsChromeAccelerator(
|
|
|