Home | History | Annotate | Download | only in commands
      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 
     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 
     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