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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 namespace { | 54 namespace { |
55 | 55 |
56 content::WebUIDataSource* CreateFlagsUIHTMLSource() { | 56 content::WebUIDataSource* CreateFlagsUIHTMLSource() { |
57 content::WebUIDataSource* source = | 57 content::WebUIDataSource* source = |
58 content::WebUIDataSource::Create(chrome::kChromeUIFlagsHost); | 58 content::WebUIDataSource::Create(chrome::kChromeUIFlagsHost); |
59 | 59 |
60 source->AddLocalizedString(flags_ui::kFlagsLongTitle, | 60 source->AddLocalizedString(flags_ui::kFlagsLongTitle, |
61 IDS_FLAGS_UI_LONG_TITLE); | 61 IDS_FLAGS_UI_LONG_TITLE); |
62 source->AddLocalizedString(flags_ui::kFlagsTableTitle, | 62 source->AddLocalizedString(flags_ui::kFlagsTableTitle, |
63 IDS_FLAGS_UI_TABLE_TITLE); | 63 IDS_FLAGS_UI_TABLE_TITLE); |
64 source->AddLocalizedString(flags_ui::kFlagsNoExperimentsAvailable, | |
65 IDS_FLAGS_UI_NO_EXPERIMENTS_AVAILABLE); | |
66 source->AddLocalizedString(flags_ui::kFlagsWarningHeader, | 64 source->AddLocalizedString(flags_ui::kFlagsWarningHeader, |
67 IDS_FLAGS_UI_WARNING_HEADER); | 65 IDS_FLAGS_UI_WARNING_HEADER); |
68 source->AddLocalizedString(flags_ui::kFlagsBlurb, IDS_FLAGS_UI_WARNING_TEXT); | 66 source->AddLocalizedString(flags_ui::kFlagsBlurb, IDS_FLAGS_UI_WARNING_TEXT); |
69 source->AddLocalizedString(flags_ui::kChannelPromoBeta, | 67 source->AddLocalizedString(flags_ui::kChannelPromoBeta, |
70 IDS_FLAGS_UI_PROMOTE_BETA_CHANNEL); | 68 IDS_FLAGS_UI_PROMOTE_BETA_CHANNEL); |
71 source->AddLocalizedString(flags_ui::kChannelPromoDev, | 69 source->AddLocalizedString(flags_ui::kChannelPromoDev, |
72 IDS_FLAGS_UI_PROMOTE_DEV_CHANNEL); | 70 IDS_FLAGS_UI_PROMOTE_DEV_CHANNEL); |
73 source->AddLocalizedString(flags_ui::kFlagsUnsupportedTableTitle, | 71 source->AddLocalizedString(flags_ui::kFlagsUnsupportedTableTitle, |
74 IDS_FLAGS_UI_UNSUPPORTED_TABLE_TITLE); | 72 IDS_FLAGS_UI_UNSUPPORTED_TABLE_TITLE); |
75 source->AddLocalizedString(flags_ui::kFlagsNoUnsupportedExperiments, | |
76 IDS_FLAGS_UI_NO_UNSUPPORTED_EXPERIMENTS); | |
77 source->AddLocalizedString(flags_ui::kFlagsNotSupported, | 73 source->AddLocalizedString(flags_ui::kFlagsNotSupported, |
78 IDS_FLAGS_UI_NOT_AVAILABLE); | 74 IDS_FLAGS_UI_NOT_AVAILABLE); |
79 source->AddLocalizedString(flags_ui::kFlagsRestartNotice, | 75 source->AddLocalizedString(flags_ui::kFlagsRestartNotice, |
80 IDS_FLAGS_UI_RELAUNCH_NOTICE); | 76 IDS_FLAGS_UI_RELAUNCH_NOTICE); |
81 source->AddLocalizedString(flags_ui::kFlagsRestartButton, | 77 source->AddLocalizedString(flags_ui::kFlagsRestartButton, |
82 IDS_FLAGS_UI_RELAUNCH_BUTTON); | 78 IDS_FLAGS_UI_RELAUNCH_BUTTON); |
83 source->AddLocalizedString(flags_ui::kResetAllButton, | 79 source->AddLocalizedString(flags_ui::kResetAllButton, |
84 IDS_FLAGS_UI_RESET_ALL_BUTTON); | 80 IDS_FLAGS_UI_RESET_ALL_BUTTON); |
85 source->AddLocalizedString(flags_ui::kDisable, IDS_FLAGS_UI_DISABLE); | 81 source->AddLocalizedString(flags_ui::kDisable, IDS_FLAGS_UI_DISABLE); |
86 source->AddLocalizedString(flags_ui::kEnable, IDS_FLAGS_UI_ENABLE); | 82 source->AddLocalizedString(flags_ui::kEnable, IDS_FLAGS_UI_ENABLE); |
(...skipping 23 matching lines...) Expand all Loading... |
110 //////////////////////////////////////////////////////////////////////////////// | 106 //////////////////////////////////////////////////////////////////////////////// |
111 // | 107 // |
112 // FlagsDOMHandler | 108 // FlagsDOMHandler |
113 // | 109 // |
114 //////////////////////////////////////////////////////////////////////////////// | 110 //////////////////////////////////////////////////////////////////////////////// |
115 | 111 |
116 // The handler for Javascript messages for the about:flags page. | 112 // The handler for Javascript messages for the about:flags page. |
117 class FlagsDOMHandler : public WebUIMessageHandler { | 113 class FlagsDOMHandler : public WebUIMessageHandler { |
118 public: | 114 public: |
119 FlagsDOMHandler() : access_(about_flags::kGeneralAccessFlagsOnly), | 115 FlagsDOMHandler() : access_(about_flags::kGeneralAccessFlagsOnly), |
120 flags_experiments_requested_(false) { | 116 experimental_features_requested_(false) { |
121 } | 117 } |
122 ~FlagsDOMHandler() override {} | 118 ~FlagsDOMHandler() override {} |
123 | 119 |
124 // Initializes the DOM handler with the provided flags storage and flags | 120 // Initializes the DOM handler with the provided flags storage and flags |
125 // access. If there were flags experiments requested from javascript before | 121 // access. If there were flags experiments requested from javascript before |
126 // this was called, it calls |HandleRequestFlagsExperiments| again. | 122 // this was called, it calls |HandleRequestExperimentalFeatures| again. |
127 void Init(flags_ui::FlagsStorage* flags_storage, | 123 void Init(flags_ui::FlagsStorage* flags_storage, |
128 about_flags::FlagAccess access); | 124 about_flags::FlagAccess access); |
129 | 125 |
130 // WebUIMessageHandler implementation. | 126 // WebUIMessageHandler implementation. |
131 void RegisterMessages() override; | 127 void RegisterMessages() override; |
132 | 128 |
133 // Callback for the "requestFlagsExperiments" message. | 129 // Callback for the "requestExperimentFeatures" message. |
134 void HandleRequestFlagsExperiments(const base::ListValue* args); | 130 void HandleRequestExperimentalFeatures(const base::ListValue* args); |
135 | 131 |
136 // Callback for the "enableFlagsExperiment" message. | 132 // Callback for the "enableExperimentalFeature" message. |
137 void HandleEnableFlagsExperimentMessage(const base::ListValue* args); | 133 void HandleEnableExperimentalFeatureMessage(const base::ListValue* args); |
138 | 134 |
139 // Callback for the "restartBrowser" message. Restores all tabs on restart. | 135 // Callback for the "restartBrowser" message. Restores all tabs on restart. |
140 void HandleRestartBrowser(const base::ListValue* args); | 136 void HandleRestartBrowser(const base::ListValue* args); |
141 | 137 |
142 // Callback for the "resetAllFlags" message. | 138 // Callback for the "resetAllFlags" message. |
143 void HandleResetAllFlags(const base::ListValue* args); | 139 void HandleResetAllFlags(const base::ListValue* args); |
144 | 140 |
145 private: | 141 private: |
146 scoped_ptr<flags_ui::FlagsStorage> flags_storage_; | 142 scoped_ptr<flags_ui::FlagsStorage> flags_storage_; |
147 about_flags::FlagAccess access_; | 143 about_flags::FlagAccess access_; |
148 bool flags_experiments_requested_; | 144 bool experimental_features_requested_; |
149 | 145 |
150 DISALLOW_COPY_AND_ASSIGN(FlagsDOMHandler); | 146 DISALLOW_COPY_AND_ASSIGN(FlagsDOMHandler); |
151 }; | 147 }; |
152 | 148 |
153 void FlagsDOMHandler::RegisterMessages() { | 149 void FlagsDOMHandler::RegisterMessages() { |
154 web_ui()->RegisterMessageCallback( | 150 web_ui()->RegisterMessageCallback( |
155 flags_ui::kRequestFlagsExperiments, | 151 flags_ui::kRequestExperimentalFeatures, |
156 base::Bind(&FlagsDOMHandler::HandleRequestFlagsExperiments, | 152 base::Bind(&FlagsDOMHandler::HandleRequestExperimentalFeatures, |
157 base::Unretained(this))); | 153 base::Unretained(this))); |
158 web_ui()->RegisterMessageCallback( | 154 web_ui()->RegisterMessageCallback( |
159 flags_ui::kEnableFlagsExperiment, | 155 flags_ui::kEnableExperimentalFeature, |
160 base::Bind(&FlagsDOMHandler::HandleEnableFlagsExperimentMessage, | 156 base::Bind(&FlagsDOMHandler::HandleEnableExperimentalFeatureMessage, |
161 base::Unretained(this))); | 157 base::Unretained(this))); |
162 web_ui()->RegisterMessageCallback( | 158 web_ui()->RegisterMessageCallback( |
163 flags_ui::kRestartBrowser, | 159 flags_ui::kRestartBrowser, |
164 base::Bind(&FlagsDOMHandler::HandleRestartBrowser, | 160 base::Bind(&FlagsDOMHandler::HandleRestartBrowser, |
165 base::Unretained(this))); | 161 base::Unretained(this))); |
166 web_ui()->RegisterMessageCallback( | 162 web_ui()->RegisterMessageCallback( |
167 flags_ui::kResetAllFlags, | 163 flags_ui::kResetAllFlags, |
168 base::Bind(&FlagsDOMHandler::HandleResetAllFlags, | 164 base::Bind(&FlagsDOMHandler::HandleResetAllFlags, |
169 base::Unretained(this))); | 165 base::Unretained(this))); |
170 } | 166 } |
171 | 167 |
172 void FlagsDOMHandler::Init(flags_ui::FlagsStorage* flags_storage, | 168 void FlagsDOMHandler::Init(flags_ui::FlagsStorage* flags_storage, |
173 about_flags::FlagAccess access) { | 169 about_flags::FlagAccess access) { |
174 flags_storage_.reset(flags_storage); | 170 flags_storage_.reset(flags_storage); |
175 access_ = access; | 171 access_ = access; |
176 | 172 |
177 if (flags_experiments_requested_) | 173 if (experimental_features_requested_) |
178 HandleRequestFlagsExperiments(NULL); | 174 HandleRequestExperimentalFeatures(NULL); |
179 } | 175 } |
180 | 176 |
181 void FlagsDOMHandler::HandleRequestFlagsExperiments( | 177 void FlagsDOMHandler::HandleRequestExperimentalFeatures( |
182 const base::ListValue* args) { | 178 const base::ListValue* args) { |
183 flags_experiments_requested_ = true; | 179 experimental_features_requested_ = true; |
184 // Bail out if the handler hasn't been initialized yet. The request will be | 180 // Bail out if the handler hasn't been initialized yet. The request will be |
185 // handled after the initialization. | 181 // handled after the initialization. |
186 if (!flags_storage_) | 182 if (!flags_storage_) |
187 return; | 183 return; |
188 | 184 |
189 base::DictionaryValue results; | 185 base::DictionaryValue results; |
190 | 186 |
191 scoped_ptr<base::ListValue> supported_experiments(new base::ListValue); | 187 scoped_ptr<base::ListValue> supported_features(new base::ListValue); |
192 scoped_ptr<base::ListValue> unsupported_experiments(new base::ListValue); | 188 scoped_ptr<base::ListValue> unsupported_features(new base::ListValue); |
193 about_flags::GetFlagsExperimentsData(flags_storage_.get(), | 189 about_flags::GetFlagFeatureEntries(flags_storage_.get(), |
194 access_, | 190 access_, |
195 supported_experiments.get(), | 191 supported_features.get(), |
196 unsupported_experiments.get()); | 192 unsupported_features.get()); |
197 results.Set(flags_ui::kSupportedExperiments, supported_experiments.release()); | 193 results.Set(flags_ui::kSupportedFeatures, supported_features.release()); |
198 results.Set(flags_ui::kUnsupportedExperiments, | 194 results.Set(flags_ui::kUnsupportedFeatures, unsupported_features.release()); |
199 unsupported_experiments.release()); | |
200 results.SetBoolean(flags_ui::kNeedsRestart, | 195 results.SetBoolean(flags_ui::kNeedsRestart, |
201 about_flags::IsRestartNeededToCommitChanges()); | 196 about_flags::IsRestartNeededToCommitChanges()); |
202 results.SetBoolean(flags_ui::kShowOwnerWarning, | 197 results.SetBoolean(flags_ui::kShowOwnerWarning, |
203 access_ == about_flags::kGeneralAccessFlagsOnly); | 198 access_ == about_flags::kGeneralAccessFlagsOnly); |
204 | 199 |
205 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) | 200 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) |
206 version_info::Channel channel = chrome::GetChannel(); | 201 version_info::Channel channel = chrome::GetChannel(); |
207 results.SetBoolean(flags_ui::kShowBetaChannelPromotion, | 202 results.SetBoolean(flags_ui::kShowBetaChannelPromotion, |
208 channel == version_info::Channel::STABLE); | 203 channel == version_info::Channel::STABLE); |
209 results.SetBoolean(flags_ui::kShowDevChannelPromotion, | 204 results.SetBoolean(flags_ui::kShowDevChannelPromotion, |
210 channel == version_info::Channel::BETA); | 205 channel == version_info::Channel::BETA); |
211 #else | 206 #else |
212 results.SetBoolean(flags_ui::kShowBetaChannelPromotion, false); | 207 results.SetBoolean(flags_ui::kShowBetaChannelPromotion, false); |
213 results.SetBoolean(flags_ui::kShowDevChannelPromotion, false); | 208 results.SetBoolean(flags_ui::kShowDevChannelPromotion, false); |
214 #endif | 209 #endif |
215 web_ui()->CallJavascriptFunction(flags_ui::kReturnFlagsExperiments, results); | 210 web_ui()->CallJavascriptFunction(flags_ui::kReturnExperimentalFeatures, |
| 211 results); |
216 } | 212 } |
217 | 213 |
218 void FlagsDOMHandler::HandleEnableFlagsExperimentMessage( | 214 void FlagsDOMHandler::HandleEnableExperimentalFeatureMessage( |
219 const base::ListValue* args) { | 215 const base::ListValue* args) { |
220 DCHECK(flags_storage_); | 216 DCHECK(flags_storage_); |
221 DCHECK_EQ(2u, args->GetSize()); | 217 DCHECK_EQ(2u, args->GetSize()); |
222 if (args->GetSize() != 2) | 218 if (args->GetSize() != 2) |
223 return; | 219 return; |
224 | 220 |
225 std::string experiment_internal_name; | 221 std::string entry_internal_name; |
226 std::string enable_str; | 222 std::string enable_str; |
227 if (!args->GetString(0, &experiment_internal_name) || | 223 if (!args->GetString(0, &entry_internal_name) || |
228 !args->GetString(1, &enable_str)) | 224 !args->GetString(1, &enable_str)) |
229 return; | 225 return; |
230 | 226 |
231 about_flags::SetExperimentEnabled( | 227 about_flags::SetFeatureEntryEnabled(flags_storage_.get(), entry_internal_name, |
232 flags_storage_.get(), | 228 enable_str == "true"); |
233 experiment_internal_name, | |
234 enable_str == "true"); | |
235 } | 229 } |
236 | 230 |
237 void FlagsDOMHandler::HandleRestartBrowser(const base::ListValue* args) { | 231 void FlagsDOMHandler::HandleRestartBrowser(const base::ListValue* args) { |
238 DCHECK(flags_storage_); | 232 DCHECK(flags_storage_); |
239 #if defined(OS_CHROMEOS) | 233 #if defined(OS_CHROMEOS) |
240 // On ChromeOS be less intrusive and restart inside the user session after | 234 // On ChromeOS be less intrusive and restart inside the user session after |
241 // we apply the newly selected flags. | 235 // we apply the newly selected flags. |
242 base::CommandLine user_flags(base::CommandLine::NO_PROGRAM); | 236 base::CommandLine user_flags(base::CommandLine::NO_PROGRAM); |
243 about_flags::ConvertFlagsToSwitches(flags_storage_.get(), | 237 about_flags::ConvertFlagsToSwitches(flags_storage_.get(), |
244 &user_flags, | 238 &user_flags, |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 registry->RegisterListPref(flags_ui::prefs::kEnabledLabsExperiments); | 341 registry->RegisterListPref(flags_ui::prefs::kEnabledLabsExperiments); |
348 } | 342 } |
349 | 343 |
350 #if defined(OS_CHROMEOS) | 344 #if defined(OS_CHROMEOS) |
351 // static | 345 // static |
352 void FlagsUI::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { | 346 void FlagsUI::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { |
353 registry->RegisterListPref(flags_ui::prefs::kEnabledLabsExperiments); | 347 registry->RegisterListPref(flags_ui::prefs::kEnabledLabsExperiments); |
354 } | 348 } |
355 | 349 |
356 #endif | 350 #endif |
OLD | NEW |