| Index: chrome/common/extensions/api/commands/commands_handler.cc
|
| diff --git a/chrome/common/extensions/api/commands/commands_handler.cc b/chrome/common/extensions/api/commands/commands_handler.cc
|
| index 33ab34459106a75f94dcd439fde33cf33456fe6d..8cfafcc22ec700f006a28d05cafe0d5345d1cbf9 100644
|
| --- a/chrome/common/extensions/api/commands/commands_handler.cc
|
| +++ b/chrome/common/extensions/api/commands/commands_handler.cc
|
| @@ -11,6 +11,8 @@
|
| #include "chrome/common/extensions/manifest.h"
|
| #include "extensions/common/error_utils.h"
|
|
|
| +namespace keys = extension_manifest_keys;
|
| +
|
| namespace extensions {
|
|
|
| namespace {
|
| @@ -29,28 +31,28 @@ CommandsInfo::~CommandsInfo() {
|
| const Command* CommandsInfo::GetBrowserActionCommand(
|
| const Extension* extension) {
|
| CommandsInfo* info = static_cast<CommandsInfo*>(
|
| - extension->GetManifestData(extension_manifest_keys::kCommands));
|
| + extension->GetManifestData(keys::kCommands));
|
| return info ? info->browser_action_command.get() : NULL;
|
| }
|
|
|
| // static
|
| const Command* CommandsInfo::GetPageActionCommand(const Extension* extension) {
|
| CommandsInfo* info = static_cast<CommandsInfo*>(
|
| - extension->GetManifestData(extension_manifest_keys::kCommands));
|
| + extension->GetManifestData(keys::kCommands));
|
| return info ? info->page_action_command.get() : NULL;
|
| }
|
|
|
| // static
|
| const Command* CommandsInfo::GetScriptBadgeCommand(const Extension* extension) {
|
| CommandsInfo* info = static_cast<CommandsInfo*>(
|
| - extension->GetManifestData(extension_manifest_keys::kCommands));
|
| + extension->GetManifestData(keys::kCommands));
|
| return info ? info->script_badge_command.get() : NULL;
|
| }
|
|
|
| // static
|
| const CommandMap* CommandsInfo::GetNamedCommands(const Extension* extension) {
|
| CommandsInfo* info = static_cast<CommandsInfo*>(
|
| - extension->GetManifestData(extension_manifest_keys::kCommands));
|
| + extension->GetManifestData(keys::kCommands));
|
| return info ? &info->named_commands : NULL;
|
| }
|
|
|
| @@ -60,11 +62,17 @@ CommandsHandler::CommandsHandler() {
|
| CommandsHandler::~CommandsHandler() {
|
| }
|
|
|
| -bool CommandsHandler::Parse(const base::Value* value,
|
| - Extension* extension,
|
| - string16* error) {
|
| +bool CommandsHandler::Parse(Extension* extension, string16* error) {
|
| + if (!extension->manifest()->HasKey(keys::kCommands)) {
|
| + scoped_ptr<CommandsInfo> commands_info(new CommandsInfo);
|
| + MaybeSetBrowserActionDefault(extension, commands_info.get());
|
| + extension->SetManifestData(keys::kCommands,
|
| + commands_info.release());
|
| + return true;
|
| + }
|
| +
|
| const base::DictionaryValue* dict = NULL;
|
| - if (!value->GetAsDictionary(&dict)) {
|
| + if (!extension->manifest()->GetDictionary(keys::kCommands, &dict)) {
|
| *error = ASCIIToUTF16(extension_manifest_errors::kInvalidCommandsKey);
|
| return false;
|
| }
|
| @@ -112,23 +120,20 @@ bool CommandsHandler::Parse(const base::Value* value,
|
|
|
| MaybeSetBrowserActionDefault(extension, commands_info.get());
|
|
|
| - extension->SetManifestData(extension_manifest_keys::kCommands,
|
| + extension->SetManifestData(keys::kCommands,
|
| commands_info.release());
|
| return true;
|
| }
|
|
|
| -bool CommandsHandler::HasNoKey(Extension* extension,
|
| - string16* error) {
|
| - scoped_ptr<CommandsInfo> commands_info(new CommandsInfo);
|
| - MaybeSetBrowserActionDefault(extension, commands_info.get());
|
| - extension->SetManifestData(extension_manifest_keys::kCommands,
|
| - commands_info.release());
|
| - return true;
|
| +bool CommandsHandler::AlwaysParseForType(Extension::Type type) {
|
| + return type == Extension::TYPE_EXTENSION ||
|
| + type == Extension::TYPE_LEGACY_PACKAGED_APP ||
|
| + type == Extension::TYPE_PLATFORM_APP;
|
| }
|
|
|
| void CommandsHandler::MaybeSetBrowserActionDefault(const Extension* extension,
|
| CommandsInfo* info) {
|
| - if (extension->manifest()->HasKey(extension_manifest_keys::kBrowserAction) &&
|
| + if (extension->manifest()->HasKey(keys::kBrowserAction) &&
|
| !info->browser_action_command.get()) {
|
| info->browser_action_command.reset(new Command(
|
| extension_manifest_values::kBrowserActionCommandEvent, string16(), ""));
|
|
|