// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/extensions/api/commands/commands.h" #include "chrome/browser/extensions/api/commands/command_service.h" #include "chrome/browser/profiles/profile.h" namespace { base::DictionaryValue* CreateCommandValue( const extensions::Command& command, bool active) { base::DictionaryValue* result = new base::DictionaryValue(); result->SetString("name", command.command_name()); result->SetString("description", command.description()); result->SetString("shortcut", active ? command.accelerator().GetShortcutText() : base::string16()); return result; } } // namespace bool GetAllCommandsFunction::RunSync() { base::ListValue* command_list = new base::ListValue(); extensions::CommandService* command_service = extensions::CommandService::Get(GetProfile()); extensions::Command browser_action; bool active = false; if (command_service->GetBrowserActionCommand(extension_->id(), extensions::CommandService::ALL, &browser_action, &active)) { command_list->Append(CreateCommandValue(browser_action, active)); } extensions::Command page_action; if (command_service->GetPageActionCommand(extension_->id(), extensions::CommandService::ALL, &page_action, &active)) { command_list->Append(CreateCommandValue(page_action, active)); } extensions::CommandMap named_commands; command_service->GetNamedCommands(extension_->id(), extensions::CommandService::ALL, extensions::CommandService::ANY_SCOPE, &named_commands); for (extensions::CommandMap::const_iterator iter = named_commands.begin(); iter != named_commands.end(); ++iter) { extensions::Command command = command_service->FindCommandByName( extension_->id(), iter->second.command_name()); ui::Accelerator shortcut_assigned = command.accelerator(); active = (shortcut_assigned.key_code() != ui::VKEY_UNKNOWN); command_list->Append(CreateCommandValue(iter->second, active)); } SetResult(command_list); return true; }