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

Unified Diff: chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc

Issue 196663003: Introduce an extension parameter which is used to customize the extension. It's available for exter… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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/settings_overrides/settings_overrides_api.cc
diff --git a/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc b/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
index 09e4c3aa60b27096ddd8aec1233e46e1973c8404..3104e190e456fb70e9a95dc4987cd4c91e38d5ee 100644
--- a/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
+++ b/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
@@ -24,6 +24,7 @@
namespace extensions {
namespace {
+
base::LazyInstance<BrowserContextKeyedAPIFactory<SettingsOverridesAPI> >
g_factory = LAZY_INSTANCE_INITIALIZER;
@@ -32,19 +33,33 @@ const char kManyStartupPagesWarning[] = "* specifies more than 1 startup URL. "
using api::manifest_types::ChromeSettingsOverrides;
+std::string SubstituteInstallParam(std::string str,
+ const std::string& install_parameter) {
+ ReplaceSubstringsAfterOffset(&str, 0, "__PARAM__", install_parameter);
+ return str;
+}
+
TemplateURLData ConvertSearchProvider(
- const ChromeSettingsOverrides::Search_provider& search_provider) {
+ const ChromeSettingsOverrides::Search_provider& search_provider,
+ const std::string& install_parameter) {
TemplateURLData data;
data.short_name = base::UTF8ToUTF16(search_provider.name);
data.SetKeyword(base::UTF8ToUTF16(search_provider.keyword));
- data.SetURL(search_provider.search_url);
- if (search_provider.suggest_url)
- data.suggestions_url = *search_provider.suggest_url;
- if (search_provider.instant_url)
- data.instant_url = *search_provider.instant_url;
- if (search_provider.image_url)
- data.image_url = *search_provider.image_url;
+ data.SetURL(
+ SubstituteInstallParam(search_provider.search_url, install_parameter));
+ if (search_provider.suggest_url) {
+ data.suggestions_url =
+ SubstituteInstallParam(*search_provider.suggest_url, install_parameter);
+ }
+ if (search_provider.instant_url) {
+ data.instant_url =
+ SubstituteInstallParam(*search_provider.instant_url, install_parameter);
+ }
+ if (search_provider.image_url) {
+ data.image_url =
+ SubstituteInstallParam(*search_provider.image_url, install_parameter);
+ }
if (search_provider.search_url_post_params)
data.search_url_post_params = *search_provider.search_url_post_params;
if (search_provider.suggest_url_post_params)
@@ -53,7 +68,8 @@ TemplateURLData ConvertSearchProvider(
data.instant_url_post_params = *search_provider.instant_url_post_params;
if (search_provider.image_url_post_params)
data.image_url_post_params = *search_provider.image_url_post_params;
- data.favicon_url = GURL(search_provider.favicon_url);
+ data.favicon_url = GURL(
+ SubstituteInstallParam(search_provider.favicon_url, install_parameter));
data.show_in_default_list = true;
data.safe_for_autoreplace = false;
data.input_encodings.push_back(search_provider.encoding);
@@ -63,11 +79,13 @@ TemplateURLData ConvertSearchProvider(
if (search_provider.alternate_urls) {
for (size_t i = 0; i < search_provider.alternate_urls->size(); ++i) {
if (!search_provider.alternate_urls->at(i).empty())
- data.alternate_urls.push_back(search_provider.alternate_urls->at(i));
+ data.alternate_urls.push_back(SubstituteInstallParam(
+ search_provider.alternate_urls->at(i), install_parameter));
}
}
return data;
}
+
} // namespace
SettingsOverridesAPI::SettingsOverridesAPI(content::BrowserContext* context)
@@ -119,9 +137,13 @@ void SettingsOverridesAPI::Observe(
const SettingsOverrides* settings =
SettingsOverrides::Get(extension);
if (settings) {
+ std::string install_parameter =
+ ExtensionPrefs::Get(profile_)->GetInstallParam(extension->id());
if (settings->homepage) {
- SetPref(extension->id(), prefs::kHomePage,
- new base::StringValue(settings->homepage->spec()));
+ SetPref(extension->id(),
+ prefs::kHomePage,
+ new base::StringValue(SubstituteInstallParam(
+ settings->homepage->spec(), install_parameter)));
SetPref(extension->id(), prefs::kHomePageIsNewTabPage,
new base::FundamentalValue(false));
}
@@ -134,8 +156,8 @@ void SettingsOverridesAPI::Observe(
kManyStartupPagesWarning, manifest_keys::kSettingsOverride);
}
scoped_ptr<base::ListValue> url_list(new base::ListValue);
- url_list->Append(
- new base::StringValue(settings->startup_pages[0].spec()));
+ url_list->Append(new base::StringValue(SubstituteInstallParam(
+ settings->startup_pages[0].spec(), install_parameter)));
SetPref(extension->id(), prefs::kURLsToRestoreOnStartup,
url_list.release());
}
@@ -213,9 +235,11 @@ void SettingsOverridesAPI::RegisterSearchProvider(
scoped_ptr<AssociatedExtensionInfo> info(new AssociatedExtensionInfo);
info->extension_id = extension->id();
info->wants_to_be_default_engine = settings->search_engine->is_default;
- info->install_time =
- ExtensionPrefs::Get(profile_)->GetInstallTime(extension->id());
- TemplateURLData data = ConvertSearchProvider(*settings->search_engine);
+ ExtensionPrefs* prefs = ExtensionPrefs::Get(profile_);
+ info->install_time = prefs->GetInstallTime(extension->id());
+ std::string install_parameter = prefs->GetInstallParam(extension->id());
+ TemplateURLData data =
+ ConvertSearchProvider(*settings->search_engine, install_parameter);
url_service_->AddExtensionControlledTURL(new TemplateURL(profile_, data),
info.Pass());
}

Powered by Google App Engine
This is Rietveld 408576698