| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/flags_ui.h" | 5 #include "chrome/browser/ui/webui/flags_ui.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 | 81 |
| 82 //////////////////////////////////////////////////////////////////////////////// | 82 //////////////////////////////////////////////////////////////////////////////// |
| 83 // | 83 // |
| 84 // FlagsDOMHandler | 84 // FlagsDOMHandler |
| 85 // | 85 // |
| 86 //////////////////////////////////////////////////////////////////////////////// | 86 //////////////////////////////////////////////////////////////////////////////// |
| 87 | 87 |
| 88 // The handler for Javascript messages for the about:flags page. | 88 // The handler for Javascript messages for the about:flags page. |
| 89 class FlagsDOMHandler : public WebUIMessageHandler { | 89 class FlagsDOMHandler : public WebUIMessageHandler { |
| 90 public: | 90 public: |
| 91 explicit FlagsDOMHandler(PrefService* prefs) : prefs_(prefs) {} | 91 explicit FlagsDOMHandler(PrefService* prefs, bool owner) |
| 92 : prefs_(prefs), owner_(owner) {} |
| 92 virtual ~FlagsDOMHandler() {} | 93 virtual ~FlagsDOMHandler() {} |
| 93 | 94 |
| 94 // WebUIMessageHandler implementation. | 95 // WebUIMessageHandler implementation. |
| 95 virtual void RegisterMessages() OVERRIDE; | 96 virtual void RegisterMessages() OVERRIDE; |
| 96 | 97 |
| 97 // Callback for the "requestFlagsExperiments" message. | 98 // Callback for the "requestFlagsExperiments" message. |
| 98 void HandleRequestFlagsExperiments(const ListValue* args); | 99 void HandleRequestFlagsExperiments(const ListValue* args); |
| 99 | 100 |
| 100 // Callback for the "enableFlagsExperiment" message. | 101 // Callback for the "enableFlagsExperiment" message. |
| 101 void HandleEnableFlagsExperimentMessage(const ListValue* args); | 102 void HandleEnableFlagsExperimentMessage(const ListValue* args); |
| 102 | 103 |
| 103 // Callback for the "restartBrowser" message. Restores all tabs on restart. | 104 // Callback for the "restartBrowser" message. Restores all tabs on restart. |
| 104 void HandleRestartBrowser(const ListValue* args); | 105 void HandleRestartBrowser(const ListValue* args); |
| 105 | 106 |
| 106 // Callback for the "resetAllFlags" message. | 107 // Callback for the "resetAllFlags" message. |
| 107 void HandleResetAllFlags(const ListValue* args); | 108 void HandleResetAllFlags(const ListValue* args); |
| 108 | 109 |
| 109 private: | 110 private: |
| 110 PrefService* prefs_; | 111 PrefService* prefs_; |
| 112 bool owner_; |
| 111 | 113 |
| 112 DISALLOW_COPY_AND_ASSIGN(FlagsDOMHandler); | 114 DISALLOW_COPY_AND_ASSIGN(FlagsDOMHandler); |
| 113 }; | 115 }; |
| 114 | 116 |
| 115 void FlagsDOMHandler::RegisterMessages() { | 117 void FlagsDOMHandler::RegisterMessages() { |
| 116 web_ui()->RegisterMessageCallback("requestFlagsExperiments", | 118 web_ui()->RegisterMessageCallback("requestFlagsExperiments", |
| 117 base::Bind(&FlagsDOMHandler::HandleRequestFlagsExperiments, | 119 base::Bind(&FlagsDOMHandler::HandleRequestFlagsExperiments, |
| 118 base::Unretained(this))); | 120 base::Unretained(this))); |
| 119 web_ui()->RegisterMessageCallback("enableFlagsExperiment", | 121 web_ui()->RegisterMessageCallback("enableFlagsExperiment", |
| 120 base::Bind(&FlagsDOMHandler::HandleEnableFlagsExperimentMessage, | 122 base::Bind(&FlagsDOMHandler::HandleEnableFlagsExperimentMessage, |
| 121 base::Unretained(this))); | 123 base::Unretained(this))); |
| 122 web_ui()->RegisterMessageCallback("restartBrowser", | 124 web_ui()->RegisterMessageCallback("restartBrowser", |
| 123 base::Bind(&FlagsDOMHandler::HandleRestartBrowser, | 125 base::Bind(&FlagsDOMHandler::HandleRestartBrowser, |
| 124 base::Unretained(this))); | 126 base::Unretained(this))); |
| 125 web_ui()->RegisterMessageCallback("resetAllFlags", | 127 web_ui()->RegisterMessageCallback("resetAllFlags", |
| 126 base::Bind(&FlagsDOMHandler::HandleResetAllFlags, | 128 base::Bind(&FlagsDOMHandler::HandleResetAllFlags, |
| 127 base::Unretained(this))); | 129 base::Unretained(this))); |
| 128 } | 130 } |
| 129 | 131 |
| 130 void FlagsDOMHandler::HandleRequestFlagsExperiments(const ListValue* args) { | 132 void FlagsDOMHandler::HandleRequestFlagsExperiments(const ListValue* args) { |
| 131 DictionaryValue results; | 133 DictionaryValue results; |
| 132 results.Set("flagsExperiments", | 134 results.Set("flagsExperiments", |
| 133 about_flags::GetFlagsExperimentsData(prefs_)); | 135 about_flags::GetFlagsExperimentsData(prefs_, owner_)); |
| 134 results.SetBoolean("needsRestart", | 136 results.SetBoolean("needsRestart", |
| 135 about_flags::IsRestartNeededToCommitChanges()); | 137 about_flags::IsRestartNeededToCommitChanges()); |
| 136 web_ui()->CallJavascriptFunction("returnFlagsExperiments", results); | 138 web_ui()->CallJavascriptFunction("returnFlagsExperiments", results); |
| 137 } | 139 } |
| 138 | 140 |
| 139 void FlagsDOMHandler::HandleEnableFlagsExperimentMessage( | 141 void FlagsDOMHandler::HandleEnableFlagsExperimentMessage( |
| 140 const ListValue* args) { | 142 const ListValue* args) { |
| 141 DCHECK_EQ(2u, args->GetSize()); | 143 DCHECK_EQ(2u, args->GetSize()); |
| 142 if (args->GetSize() != 2) | 144 if (args->GetSize() != 2) |
| 143 return; | 145 return; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 174 : WebUIController(web_ui), | 176 : WebUIController(web_ui), |
| 175 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { | 177 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
| 176 Profile* profile = Profile::FromWebUI(web_ui); | 178 Profile* profile = Profile::FromWebUI(web_ui); |
| 177 | 179 |
| 178 #if defined(OS_CHROMEOS) | 180 #if defined(OS_CHROMEOS) |
| 179 chromeos::DeviceSettingsService::Get()->GetOwnershipStatusAsync( | 181 chromeos::DeviceSettingsService::Get()->GetOwnershipStatusAsync( |
| 180 base::Bind(&FlagsUI::FinishInitialization, | 182 base::Bind(&FlagsUI::FinishInitialization, |
| 181 weak_factory_.GetWeakPtr(), profile)); | 183 weak_factory_.GetWeakPtr(), profile)); |
| 182 #else | 184 #else |
| 183 web_ui->AddMessageHandler( | 185 web_ui->AddMessageHandler( |
| 184 new FlagsDOMHandler(g_browser_process->local_state())); | 186 new FlagsDOMHandler(g_browser_process->local_state(), true)); |
| 185 | 187 |
| 186 // Set up the about:flags source. | 188 // Set up the about:flags source. |
| 187 content::WebUIDataSource::Add(profile, CreateFlagsUIHTMLSource()); | 189 content::WebUIDataSource::Add(profile, CreateFlagsUIHTMLSource()); |
| 188 #endif | 190 #endif |
| 189 } | 191 } |
| 190 | 192 |
| 191 FlagsUI::~FlagsUI() { | 193 FlagsUI::~FlagsUI() { |
| 192 } | 194 } |
| 193 | 195 |
| 194 // static | 196 // static |
| (...skipping 15 matching lines...) Expand all Loading... |
| 210 PrefRegistrySyncable::UNSYNCABLE_PREF); | 212 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 211 } | 213 } |
| 212 | 214 |
| 213 void FlagsUI::FinishInitialization( | 215 void FlagsUI::FinishInitialization( |
| 214 Profile* profile, | 216 Profile* profile, |
| 215 chromeos::DeviceSettingsService::OwnershipStatus status, | 217 chromeos::DeviceSettingsService::OwnershipStatus status, |
| 216 bool current_user_is_owner) { | 218 bool current_user_is_owner) { |
| 217 // On Chrome OS the owner can set system wide flags and other users can only | 219 // On Chrome OS the owner can set system wide flags and other users can only |
| 218 // set flags for their own session. | 220 // set flags for their own session. |
| 219 if (!current_user_is_owner) { | 221 if (!current_user_is_owner) { |
| 220 web_ui()->AddMessageHandler(new FlagsDOMHandler(profile->GetPrefs())); | 222 web_ui()->AddMessageHandler( |
| 223 new FlagsDOMHandler(profile->GetPrefs(), false)); |
| 221 } else { | 224 } else { |
| 222 web_ui()->AddMessageHandler( | 225 web_ui()->AddMessageHandler( |
| 223 new FlagsDOMHandler(g_browser_process->local_state())); | 226 new FlagsDOMHandler(g_browser_process->local_state(), true)); |
| 224 // If the owner managed to set the flags pref on his own profile clear it | 227 // If the owner managed to set the flags pref on his own profile clear it |
| 225 // because it will never be accessible anymore. | 228 // because it will never be accessible anymore. |
| 226 if (profile->GetPrefs()->HasPrefPath(prefs::kEnabledLabsExperiments)) | 229 if (profile->GetPrefs()->HasPrefPath(prefs::kEnabledLabsExperiments)) |
| 227 profile->GetPrefs()->ClearPref(prefs::kEnabledLabsExperiments); | 230 profile->GetPrefs()->ClearPref(prefs::kEnabledLabsExperiments); |
| 228 } | 231 } |
| 229 | 232 |
| 230 // Set up the about:flags source. | 233 // Set up the about:flags source. |
| 231 content::WebUIDataSource::Add(profile, CreateFlagsUIHTMLSource()); | 234 content::WebUIDataSource::Add(profile, CreateFlagsUIHTMLSource()); |
| 232 } | 235 } |
| 233 #endif | 236 #endif |
| OLD | NEW |