Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(115)

Unified Diff: chrome/browser/extensions/api/commands/extension_command_service.cc

Issue 10383240: This adds a webui overlay on the extensions page for showing what Extension keybindings are active.… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/commands/extension_command_service.cc
===================================================================
--- chrome/browser/extensions/api/commands/extension_command_service.cc (revision 137495)
+++ chrome/browser/extensions/api/commands/extension_command_service.cc (working copy)
@@ -11,9 +11,14 @@
#include "chrome/browser/prefs/scoped_user_pref_update.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/chrome_notification_types.h"
+#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/pref_names.h"
#include "content/public/browser/notification_service.h"
+#include "grit/generated_resources.h"
+#include "ui/base/l10n/l10n_util.h"
+namespace values = extension_manifest_values;
+
namespace {
const char kExtension[] = "extension";
@@ -47,8 +52,8 @@
}
const extensions::Command*
- ExtensionCommandService::GetActiveBrowserActionCommand(
- const std::string& extension_id) {
+ ExtensionCommandService::GetBrowserActionCommand(
+ const std::string& extension_id, ExtensionCommandQueryType type) {
const ExtensionSet* extensions =
ExtensionSystem::Get(profile_)->extension_service()->extensions();
const Extension* extension = extensions->GetByID(extension_id);
@@ -57,7 +62,8 @@
const extensions::Command* command = extension->browser_action_command();
if (!command)
return NULL;
- if (!IsKeybindingActive(command->accelerator(),
+ if (type == ACTIVE_ONLY &&
+ !IsKeybindingActive(command->accelerator(),
extension_id,
command->command_name())) {
return NULL;
@@ -66,8 +72,8 @@
return command;
}
-const extensions::Command* ExtensionCommandService::GetActivePageActionCommand(
- const std::string& extension_id) {
+const extensions::Command* ExtensionCommandService::GetPageActionCommand(
+ const std::string& extension_id, ExtensionCommandQueryType type) {
const ExtensionSet* extensions =
ExtensionSystem::Get(profile_)->extension_service()->extensions();
const Extension* extension = extensions->GetByID(extension_id);
@@ -76,7 +82,8 @@
const extensions::Command* command = extension->page_action_command();
if (!command)
return NULL;
- if (!IsKeybindingActive(command->accelerator(),
+ if (type == ACTIVE_ONLY &&
+ !IsKeybindingActive(command->accelerator(),
extension_id,
command->command_name())) {
return NULL;
@@ -85,8 +92,8 @@
return command;
}
-extensions::CommandMap ExtensionCommandService::GetActiveNamedCommands(
- const std::string& extension_id) {
+extensions::CommandMap ExtensionCommandService::GetNamedCommands(
+ const std::string& extension_id, ExtensionCommandQueryType type) {
const ExtensionSet* extensions =
ExtensionSystem::Get(profile_)->extension_service()->extensions();
const Extension* extension = extensions->GetByID(extension_id);
@@ -99,7 +106,8 @@
extensions::CommandMap::const_iterator iter = commands.begin();
for (; iter != commands.end(); ++iter) {
- if (!IsKeybindingActive(iter->second.accelerator(),
+ if (type == ACTIVE_ONLY &&
+ !IsKeybindingActive(iter->second.accelerator(),
extension_id,
iter->second.command_name())) {
continue;
@@ -111,6 +119,51 @@
return result;
}
+void ExtensionCommandService::GetAllCommands(DictionaryValue* commands) {
+ ListValue* results = new ListValue;
+
+ 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 =
+ GetBrowserActionCommand((*extension)->id(), ALL);
+ if (browser_action) {
+ extensions_list->Append(CreateExtensionDetailValue(*extension,
+ browser_action));
+ }
+
+ const extensions::Command* page_action =
+ GetPageActionCommand((*extension)->id(), ALL);
+ if (page_action) {
+ extensions_list->Append(CreateExtensionDetailValue(*extension,
+ page_action));
+ }
+
+ extensions::CommandMap named_commands =
+ GetNamedCommands((*extension)->id(), ALL);
+ extensions::CommandMap::const_iterator iter = named_commands.begin();
+ for (; iter != named_commands.end(); ++iter) {
+ extensions_list->Append(
+ CreateExtensionDetailValue(*extension, &iter->second));
+ }
+
+ if (!extensions_list->empty()) {
+ extension_dict->Set("commands", extensions_list.release());
+ results->Append(extension_dict.release());
+ }
+ }
+
+ commands->Set("commands", results);
+}
+
bool ExtensionCommandService::IsKeybindingActive(
const ui::Accelerator& accelerator,
std::string extension_id,
@@ -232,3 +285,27 @@
bindings->Remove(*it, NULL);
}
}
+
+DictionaryValue* ExtensionCommandService::CreateExtensionDetailValue(
+ const Extension* extension,
+ const extensions::Command* command) {
+ DictionaryValue* extension_data = new DictionaryValue();
+
+ string16 description;
+ if (command->command_name() == values::kBrowserActionKeybindingEvent ||
+ command->command_name() == values::kPageActionKeybindingEvent) {
+ description =
+ l10n_util::GetStringUTF16(IDS_EXTENSION_COMMANDS_GENERIC_ACTIVATE);
+ } else {
+ description = command->description();
+ }
+ extension_data->SetString("description", description);
+ extension_data->SetBoolean(
+ "active", IsKeybindingActive(command->accelerator(),
+ extension->id(),
+ command->command_name()));
+ extension_data->SetString("keybinding",
+ command->accelerator().GetShortcutText());
+
+ return extension_data;
+}

Powered by Google App Engine
This is Rietveld 408576698