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

Unified Diff: chrome/browser/ui/webui/options/core_options_handler.cc

Issue 8102019: redesign and reimplement proxy config service and tracker, revise proxy ui on cros (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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/ui/webui/options/core_options_handler.cc
===================================================================
--- chrome/browser/ui/webui/options/core_options_handler.cc (revision 108608)
+++ chrome/browser/ui/webui/options/core_options_handler.cc (working copy)
@@ -15,7 +15,6 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/google/google_util.h"
#include "chrome/browser/net/url_fixer_upper.h"
-#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/pref_names.h"
@@ -30,33 +29,6 @@
#include "grit/theme_resources.h"
#include "ui/base/l10n/l10n_util.h"
-namespace {
-
-DictionaryValue* CreateValueForPref(const PrefService* pref_service,
- const PrefService::Preference* pref) {
- DictionaryValue* dict = new DictionaryValue;
- dict->Set("value", pref->GetValue()->DeepCopy());
- const PrefService::Preference* controlling_pref = pref;
-#if defined(OS_CHROMEOS)
- // For use-shared-proxies pref, the proxy pref determines if the former is
- // modifiable or managed by policy/extension.
- if (pref->name() == prefs::kUseSharedProxies) {
- controlling_pref = pref_service->FindPreference(prefs::kProxy);
- if (!controlling_pref)
- return dict;
- }
-#endif // defined(OS_CHROMEOS)
- if (controlling_pref->IsManaged()) {
- dict->SetString("controlledBy", "policy");
- } else if (controlling_pref->IsExtensionControlled()) {
- dict->SetString("controlledBy", "extension");
- }
- dict->SetBoolean("disabled", !controlling_pref->IsUserModifiable());
- return dict;
-}
-
-} // namespace
-
CoreOptionsHandler::CoreOptionsHandler()
: handlers_host_(NULL) {
}
@@ -138,8 +110,15 @@
void CoreOptionsHandler::Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) {
- if (type == chrome::NOTIFICATION_PREF_CHANGED)
- NotifyPrefChanged(content::Details<std::string>(details).ptr());
+ if (type == chrome::NOTIFICATION_PREF_CHANGED) {
+ std::string* pref_name = content::Details<std::string>(details).ptr();
+ if (*pref_name == prefs::kClearPluginLSODataEnabled) {
+ // This preference is stored in Local State, not in the user preferences.
+ UpdateClearPluginLSOData();
+ return;
+ }
+ NotifyPrefChanged(*pref_name, std::string());
+ }
}
void CoreOptionsHandler::RegisterMessages() {
@@ -191,7 +170,7 @@
if (!pref)
return Value::CreateNullValue();
- return CreateValueForPref(pref_service, pref);
+ return CreateValueForPref(pref, NULL);
}
void CoreOptionsHandler::ObservePref(const std::string& pref_name) {
@@ -217,6 +196,7 @@
}
pref_service->ScheduleSavePersistentPrefs();
+
ProcessUserMetric(value, metric);
}
@@ -245,6 +225,47 @@
UserMetrics::RecordComputedAction(metric_string);
}
+void CoreOptionsHandler::NotifyPrefChanged(
+ const std::string& pref_name,
+ const std::string& controlling_pref_name) {
+ const PrefService* pref_service = Profile::FromWebUI(web_ui_)->GetPrefs();
+ const PrefService::Preference* pref =
+ pref_service->FindPreference(pref_name.c_str());
+ if (!pref)
+ return;
+ const PrefService::Preference* controlling_pref =
+ !controlling_pref_name.empty() ?
+ pref_service->FindPreference(controlling_pref_name.c_str()) : NULL;
+ std::pair<PreferenceCallbackMap::const_iterator,
+ PreferenceCallbackMap::const_iterator> range;
+ range = pref_callback_map_.equal_range(pref_name);
+ for (PreferenceCallbackMap::const_iterator iter = range.first;
+ iter != range.second; ++iter) {
+ const std::wstring& callback_function = iter->second;
+ ListValue result_value;
+ result_value.Append(Value::CreateStringValue(pref_name.c_str()));
+ result_value.Append(CreateValueForPref(pref, controlling_pref));
+ web_ui_->CallJavascriptFunction(WideToASCII(callback_function),
+ result_value);
+ }
+}
+
+DictionaryValue* CoreOptionsHandler::CreateValueForPref(
+ const PrefService::Preference* pref,
+ const PrefService::Preference* controlling_pref) {
+ DictionaryValue* dict = new DictionaryValue;
+ dict->Set("value", pref->GetValue()->DeepCopy());
+ if (!controlling_pref) // No controlling pref is managing actual pref.
+ controlling_pref = pref; // This means pref is controlling itself.
+ if (controlling_pref->IsManaged()) {
+ dict->SetString("controlledBy", "policy");
+ } else if (controlling_pref->IsExtensionControlled()) {
+ dict->SetString("controlledBy", "extension");
+ }
+ dict->SetBoolean("disabled", !controlling_pref->IsUserModifiable());
+ return dict;
+}
+
void CoreOptionsHandler::StopObservingPref(const std::string& path) {
registrar_.Remove(path.c_str(), this);
}
@@ -427,32 +448,3 @@
web_ui_->CallJavascriptFunction(
"OptionsPage.setClearPluginLSODataEnabled", *enabled);
}
-
-void CoreOptionsHandler::NotifyPrefChanged(const std::string* pref_name) {
- if (*pref_name == prefs::kClearPluginLSODataEnabled) {
- // This preference is stored in Local State, not in the user preferences.
- UpdateClearPluginLSOData();
- return;
- }
-
- PrefService* pref_service = Profile::FromWebUI(web_ui_)->GetPrefs();
- const PrefService::Preference* pref =
- pref_service->FindPreference(pref_name->c_str());
- if (!pref)
- return;
-
- std::pair<PreferenceCallbackMap::const_iterator,
- PreferenceCallbackMap::const_iterator> range;
- range = pref_callback_map_.equal_range(*pref_name);
- for (PreferenceCallbackMap::const_iterator iter = range.first;
- iter != range.second; ++iter) {
- const std::wstring& callback_function = iter->second;
- ListValue result_value;
- result_value.Append(Value::CreateStringValue(pref_name->c_str()));
-
- result_value.Append(CreateValueForPref(pref_service, pref));
-
- web_ui_->CallJavascriptFunction(WideToASCII(callback_function),
- result_value);
- }
-}

Powered by Google App Engine
This is Rietveld 408576698