Index: chrome/common/extensions/manifest_handlers/settings_overrides_handler.cc |
diff --git a/chrome/common/extensions/manifest_handlers/settings_overrides_handler.cc b/chrome/common/extensions/manifest_handlers/settings_overrides_handler.cc |
index c71a1c32c1b3ce44fc4332dadda3559a9e99251a..508bdf6859bba225512816e224fca6e47babf66f 100644 |
--- a/chrome/common/extensions/manifest_handlers/settings_overrides_handler.cc |
+++ b/chrome/common/extensions/manifest_handlers/settings_overrides_handler.cc |
@@ -62,6 +62,26 @@ std::vector<GURL> ParseStartupPage(const ChromeSettingsOverrides& overrides, |
return urls; |
} |
+scoped_ptr<ChromeSettingsOverrides::Search_provider> ParseSearchEngine( |
+ ChromeSettingsOverrides* overrides, |
+ string16* error) { |
+ if (!overrides->search_provider) |
+ return scoped_ptr<ChromeSettingsOverrides::Search_provider>(); |
+ if (!CreateManifestURL(overrides->search_provider->favicon_url)) { |
+ *error = extensions::ErrorUtils::FormatErrorMessageUTF16( |
+ manifest_errors::kInvalidSearchEngineURL, |
+ overrides->search_provider->favicon_url); |
+ return scoped_ptr<ChromeSettingsOverrides::Search_provider>(); |
+ } |
+ if (!CreateManifestURL(overrides->search_provider->search_url)) { |
+ *error = extensions::ErrorUtils::FormatErrorMessageUTF16( |
+ manifest_errors::kInvalidSearchEngineURL, |
+ overrides->search_provider->search_url); |
+ return scoped_ptr<ChromeSettingsOverrides::Search_provider>(); |
+ } |
+ return overrides->search_provider.Pass(); |
+} |
+ |
// A www. prefix is not informative and thus not worth the limited real estate |
// in the permissions UI. |
std::string RemoveWwwPrefix(const std::string& url) { |
@@ -96,7 +116,7 @@ bool SettingsOverridesHandler::Parse(Extension* extension, string16* error) { |
scoped_ptr<SettingsOverrides> info(new SettingsOverrides); |
info->homepage = ParseHomepage(*settings, error); |
- info->search_engine = settings->search_provider.Pass(); |
+ info->search_engine = ParseSearchEngine(settings.get(), error); |
info->startup_pages = ParseStartupPage(*settings, error); |
if (!info->homepage && !info->search_engine && info->startup_pages.empty()) { |
*error = ASCIIToUTF16(manifest_errors::kInvalidEmptySettingsOverrides); |