Chromium Code Reviews| Index: chrome/browser/ui/webui/flags_ui.cc |
| diff --git a/chrome/browser/ui/webui/flags_ui.cc b/chrome/browser/ui/webui/flags_ui.cc |
| index e8d53e1c3fd3e48788b4ecc6926369a8fd04250b..cc806a909b08bb34bfc9c2b782d2ffdfe62d2b7b 100644 |
| --- a/chrome/browser/ui/webui/flags_ui.cc |
| +++ b/chrome/browser/ui/webui/flags_ui.cc |
| @@ -88,7 +88,8 @@ content::WebUIDataSource* CreateFlagsUIHTMLSource() { |
| // The handler for Javascript messages for the about:flags page. |
| class FlagsDOMHandler : public WebUIMessageHandler { |
| public: |
| - explicit FlagsDOMHandler(PrefService* prefs) : prefs_(prefs) {} |
| + explicit FlagsDOMHandler(PrefService* prefs, bool owner) |
| + : prefs_(prefs), owner_(owner) {} |
| virtual ~FlagsDOMHandler() {} |
| // WebUIMessageHandler implementation. |
| @@ -108,6 +109,7 @@ class FlagsDOMHandler : public WebUIMessageHandler { |
| private: |
| PrefService* prefs_; |
| + bool owner_; |
|
Nico
2013/04/16 21:40:24
Use your new enum for this too, instead of having
pastarmovj
2013/04/17 16:03:22
Done.
|
| DISALLOW_COPY_AND_ASSIGN(FlagsDOMHandler); |
| }; |
| @@ -129,8 +131,11 @@ void FlagsDOMHandler::RegisterMessages() { |
| void FlagsDOMHandler::HandleRequestFlagsExperiments(const ListValue* args) { |
| DictionaryValue results; |
| + about_flags::FlagAccess access = |
| + owner_ ? about_flags::kOwnerAccessToFlags : |
| + about_flags::kGeneralAccessFlagsOnly; |
| results.Set("flagsExperiments", |
| - about_flags::GetFlagsExperimentsData(prefs_)); |
| + about_flags::GetFlagsExperimentsData(prefs_, access)); |
| results.SetBoolean("needsRestart", |
| about_flags::IsRestartNeededToCommitChanges()); |
| web_ui()->CallJavascriptFunction("returnFlagsExperiments", results); |
| @@ -181,7 +186,7 @@ FlagsUI::FlagsUI(content::WebUI* web_ui) |
| weak_factory_.GetWeakPtr(), profile)); |
| #else |
| web_ui->AddMessageHandler( |
| - new FlagsDOMHandler(g_browser_process->local_state())); |
| + new FlagsDOMHandler(g_browser_process->local_state(), true)); |
| // Set up the about:flags source. |
| content::WebUIDataSource::Add(profile, CreateFlagsUIHTMLSource()); |
| @@ -217,10 +222,11 @@ void FlagsUI::FinishInitialization( |
| // On Chrome OS the owner can set system wide flags and other users can only |
| // set flags for their own session. |
| if (!current_user_is_owner) { |
| - web_ui()->AddMessageHandler(new FlagsDOMHandler(profile->GetPrefs())); |
| + web_ui()->AddMessageHandler( |
| + new FlagsDOMHandler(profile->GetPrefs(), false)); |
| } else { |
| web_ui()->AddMessageHandler( |
| - new FlagsDOMHandler(g_browser_process->local_state())); |
| + new FlagsDOMHandler(g_browser_process->local_state(), true)); |
| // If the owner managed to set the flags pref on his own profile clear it |
| // because it will never be accessible anymore. |
| if (profile->GetPrefs()->HasPrefPath(prefs::kEnabledLabsExperiments)) |