| Index: chrome/common/extensions/extension.cc
|
| diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc
|
| index 3559155a84fe1f24a760941a2b8115b4b325c570..54009a8b17f872933d954821d92353e9b4fc447f 100644
|
| --- a/chrome/common/extensions/extension.cc
|
| +++ b/chrome/common/extensions/extension.cc
|
| @@ -34,6 +34,7 @@
|
| #include "chrome/common/extensions/features/simple_feature_provider.h"
|
| #include "chrome/common/extensions/file_browser_handler.h"
|
| #include "chrome/common/extensions/manifest.h"
|
| +#include "chrome/common/extensions/manifest_handler.h"
|
| #include "chrome/common/extensions/permissions/permission_set.h"
|
| #include "chrome/common/extensions/permissions/permissions_info.h"
|
| #include "chrome/common/extensions/user_script.h"
|
| @@ -2727,7 +2728,8 @@ bool Extension::LoadExtensionFeatures(APIPermissionSet* api_permissions,
|
| manifest_->GetBoolean(keys::kConvertedFromUserScript,
|
| &converted_from_user_script_);
|
|
|
| - if (!LoadDevToolsPage(error) ||
|
| + if (!LoadManifestHandlerFeatures(error) ||
|
| + !LoadDevToolsPage(error) ||
|
| !LoadInputComponents(*api_permissions, error) ||
|
| !LoadContentScripts(error) ||
|
| !LoadPageAction(error) ||
|
| @@ -2736,7 +2738,6 @@ bool Extension::LoadExtensionFeatures(APIPermissionSet* api_permissions,
|
| !LoadScriptBadge(error) ||
|
| !LoadFileBrowserHandlers(error) ||
|
| !LoadChromeURLOverrides(error) ||
|
| - !LoadOmnibox(error) ||
|
| !LoadTextToSpeechVoices(error) ||
|
| !LoadIncognitoMode(error) ||
|
| !LoadFileHandlers(error) ||
|
| @@ -2746,6 +2747,18 @@ bool Extension::LoadExtensionFeatures(APIPermissionSet* api_permissions,
|
| return true;
|
| }
|
|
|
| +bool Extension::LoadManifestHandlerFeatures(string16* error) {
|
| + std::vector<std::string> keys = GetManifestHandlerKeys();
|
| + for (size_t i = 0; i < keys.size(); ++i) {
|
| + Value* value = NULL;
|
| + if (!manifest_->Get(keys[i], &value))
|
| + continue;
|
| + if (!GetManifestHandler(keys[i])->Parse(value, this, error))
|
| + return false;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| bool Extension::LoadDevToolsPage(string16* error) {
|
| if (!manifest_->HasKey(keys::kDevToolsPage))
|
| return true;
|
| @@ -3269,17 +3282,6 @@ bool Extension::LoadChromeURLOverrides(string16* error) {
|
| return true;
|
| }
|
|
|
| -bool Extension::LoadOmnibox(string16* error) {
|
| - if (!manifest_->HasKey(keys::kOmnibox))
|
| - return true;
|
| - if (!manifest_->GetString(keys::kOmniboxKeyword, &omnibox_keyword_) ||
|
| - omnibox_keyword_.empty()) {
|
| - *error = ASCIIToUTF16(errors::kInvalidOmniboxKeyword);
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| bool Extension::LoadTextToSpeechVoices(string16* error) {
|
| if (!manifest_->HasKey(keys::kTtsEngine))
|
| return true;
|
|
|