| Index: chrome/browser/ui/webui/extensions/extension_commands_handler.cc
|
| ===================================================================
|
| --- chrome/browser/ui/webui/extensions/extension_commands_handler.cc (revision 0)
|
| +++ chrome/browser/ui/webui/extensions/extension_commands_handler.cc (revision 0)
|
| @@ -0,0 +1,119 @@
|
| +// 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/ui/webui/extensions/extension_commands_handler.h"
|
| +
|
| +#include "base/bind.h"
|
| +#include "base/values.h"
|
| +#include "chrome/browser/extensions/api/commands/extension_command_service.h"
|
| +#include "chrome/browser/extensions/api/commands/extension_command_service_factory.h"
|
| +#include "chrome/browser/extensions/extension_service.h"
|
| +#include "chrome/browser/extensions/extension_system.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/common/extensions/extension_manifest_constants.h"
|
| +#include "chrome/common/extensions/extension_set.h"
|
| +#include "content/public/browser/web_ui.h"
|
| +#include "grit/generated_resources.h"
|
| +#include "ui/base/l10n/l10n_util.h"
|
| +
|
| +namespace values = extension_manifest_values;
|
| +
|
| +namespace extensions {
|
| +
|
| +
|
| +ExtensionCommandsHandler::ExtensionCommandsHandler() {
|
| +}
|
| +
|
| +ExtensionCommandsHandler::~ExtensionCommandsHandler() {
|
| +}
|
| +
|
| +void ExtensionCommandsHandler::GetLocalizedValues(
|
| + DictionaryValue* localized_strings) {
|
| + DCHECK(localized_strings);
|
| + localized_strings->SetString("extensionCommandsOverlay",
|
| + l10n_util::GetStringUTF16(IDS_EXTENSION_COMMANDS_DIALOG_TITLE));
|
| + localized_strings->SetString("extensionCommandsEmpty",
|
| + l10n_util::GetStringUTF16(IDS_EXTENSION_COMMANDS_EMPTY));
|
| + localized_strings->SetString("extensionCommandsInactive",
|
| + l10n_util::GetStringUTF16(IDS_EXTENSION_COMMANDS_INACTIVE));
|
| + localized_strings->SetString("close", l10n_util::GetStringUTF16(IDS_CLOSE));
|
| +}
|
| +
|
| +void ExtensionCommandsHandler::RegisterMessages() {
|
| + web_ui()->RegisterMessageCallback("extensionCommandsRequestExtensionsData",
|
| + base::Bind(&ExtensionCommandsHandler::HandleRequestExtensionsData,
|
| + base::Unretained(this)));
|
| +}
|
| +
|
| +void ExtensionCommandsHandler::HandleRequestExtensionsData(
|
| + const ListValue* args) {
|
| + DictionaryValue results;
|
| + GetAllCommands(&results);
|
| + web_ui()->CallJavascriptFunction(
|
| + "ExtensionCommandsOverlay.returnExtensionsData", results);
|
| +}
|
| +
|
| +void ExtensionCommandsHandler::GetAllCommands(
|
| + base::DictionaryValue* commands) {
|
| + ListValue* results = new ListValue;
|
| +
|
| + Profile* profile = Profile::FromWebUI(web_ui());
|
| + ExtensionCommandService* command_service =
|
| + ExtensionCommandServiceFactory::GetForProfile(profile);
|
| +
|
| + const ExtensionSet* extensions =
|
| + ExtensionSystem::Get(profile)->extension_service()->extensions();
|
| + for (ExtensionSet::const_iterator extension = extensions->begin();
|
| + extension != extensions->end(); ++extension) {
|
| + scoped_ptr<DictionaryValue> extension_dict(new DictionaryValue);
|
| + extension_dict->SetString("name", (*extension)->name());
|
| + extension_dict->SetString("id", (*extension)->id());
|
| +
|
| + // Add the keybindings to a list structure.
|
| + scoped_ptr<ListValue> extensions_list(new ListValue());
|
| +
|
| + const extensions::Command* browser_action =
|
| + command_service->GetBrowserActionCommand((*extension)->id(),
|
| + ExtensionCommandService::ALL);
|
| + if (browser_action) {
|
| + extensions_list->Append(browser_action->ToValue(
|
| + (*extension),
|
| + command_service->IsKeybindingActive(browser_action->accelerator(),
|
| + (*extension)->id(),
|
| + browser_action->command_name())));
|
| + }
|
| +
|
| + const extensions::Command* page_action =
|
| + command_service->GetPageActionCommand((*extension)->id(),
|
| + ExtensionCommandService::ALL);
|
| + if (page_action) {
|
| + extensions_list->Append(page_action->ToValue(
|
| + (*extension),
|
| + command_service->IsKeybindingActive(page_action->accelerator(),
|
| + (*extension)->id(),
|
| + page_action->command_name())));
|
| + }
|
| +
|
| + extensions::CommandMap named_commands =
|
| + command_service->GetNamedCommands((*extension)->id(),
|
| + ExtensionCommandService::ALL);
|
| + extensions::CommandMap::const_iterator iter = named_commands.begin();
|
| + for (; iter != named_commands.end(); ++iter) {
|
| + extensions_list->Append(iter->second.ToValue(
|
| + (*extension),
|
| + command_service->IsKeybindingActive(iter->second.accelerator(),
|
| + (*extension)->id(),
|
| + iter->second.command_name())));
|
| + }
|
| +
|
| + if (!extensions_list->empty()) {
|
| + extension_dict->Set("commands", extensions_list.release());
|
| + results->Append(extension_dict.release());
|
| + }
|
| + }
|
| +
|
| + commands->Set("commands", results);
|
| +}
|
| +
|
| +} // namespace extensions
|
|
|
| Property changes on: chrome\browser\ui\webui\extensions\extension_commands_handler.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|