| 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..9f3b65adb77e0f4d8a7621186a3b8fc9900dcc0f 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, about_flags::FlagAccess access)
|
| + : prefs_(prefs), access_(access) {}
|
| virtual ~FlagsDOMHandler() {}
|
|
|
| // WebUIMessageHandler implementation.
|
| @@ -108,6 +109,7 @@ class FlagsDOMHandler : public WebUIMessageHandler {
|
|
|
| private:
|
| PrefService* prefs_;
|
| + about_flags::FlagAccess access_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(FlagsDOMHandler);
|
| };
|
| @@ -130,7 +132,7 @@ void FlagsDOMHandler::RegisterMessages() {
|
| void FlagsDOMHandler::HandleRequestFlagsExperiments(const ListValue* args) {
|
| DictionaryValue results;
|
| 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 +183,8 @@ 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(),
|
| + about_flags::kOwnerAccessToFlags));
|
|
|
| // Set up the about:flags source.
|
| content::WebUIDataSource::Add(profile, CreateFlagsUIHTMLSource());
|
| @@ -217,10 +220,13 @@ 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(),
|
| + about_flags::kGeneralAccessFlagsOnly));
|
| } else {
|
| web_ui()->AddMessageHandler(
|
| - new FlagsDOMHandler(g_browser_process->local_state()));
|
| + new FlagsDOMHandler(g_browser_process->local_state(),
|
| + about_flags::kOwnerAccessToFlags));
|
| // 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))
|
|
|