• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #include "chrome/browser/extensions/api/commands/commands.h"
6 
7 #include "chrome/browser/extensions/api/commands/command_service.h"
8 #include "chrome/browser/profiles/profile.h"
9 
10 namespace {
11 
CreateCommandValue(const extensions::Command & command,bool active)12 base::DictionaryValue* CreateCommandValue(
13     const extensions::Command& command, bool active) {
14   base::DictionaryValue* result = new base::DictionaryValue();
15   result->SetString("name", command.command_name());
16   result->SetString("description", command.description());
17   result->SetString("shortcut",
18                     active ? command.accelerator().GetShortcutText() :
19                              base::string16());
20   return result;
21 }
22 
23 }  // namespace
24 
RunSync()25 bool GetAllCommandsFunction::RunSync() {
26   base::ListValue* command_list = new base::ListValue();
27 
28   extensions::CommandService* command_service =
29       extensions::CommandService::Get(GetProfile());
30 
31   extensions::Command browser_action;
32   bool active = false;
33   if (command_service->GetBrowserActionCommand(extension_->id(),
34           extensions::CommandService::ALL,
35           &browser_action,
36           &active)) {
37     command_list->Append(CreateCommandValue(browser_action, active));
38   }
39 
40   extensions::Command page_action;
41   if (command_service->GetPageActionCommand(extension_->id(),
42           extensions::CommandService::ALL,
43           &page_action,
44           &active)) {
45     command_list->Append(CreateCommandValue(page_action, active));
46   }
47 
48   extensions::CommandMap named_commands;
49   command_service->GetNamedCommands(extension_->id(),
50                                     extensions::CommandService::ALL,
51                                     extensions::CommandService::ANY_SCOPE,
52                                     &named_commands);
53 
54   for (extensions::CommandMap::const_iterator iter = named_commands.begin();
55        iter != named_commands.end(); ++iter) {
56     extensions::Command command = command_service->FindCommandByName(
57         extension_->id(), iter->second.command_name());
58     ui::Accelerator shortcut_assigned = command.accelerator();
59     active = (shortcut_assigned.key_code() != ui::VKEY_UNKNOWN);
60 
61     command_list->Append(CreateCommandValue(iter->second, active));
62   }
63 
64   SetResult(command_list);
65   return true;
66 }
67