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

Side by Side Diff: chrome/browser/dom_ui/flags_ui.cc

Issue 3777005: Rename about:labs to about:flags, part 3/3 (Closed)
Patch Set: comments Created 10 years, 2 months 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/dom_ui/flags_ui.h ('k') | chrome/browser/prefs/browser_prefs.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/dom_ui/labs_ui.h" 5 #include "chrome/browser/dom_ui/flags_ui.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "app/l10n_util.h" 9 #include "app/l10n_util.h"
10 #include "app/resource_bundle.h" 10 #include "app/resource_bundle.h"
11 #include "base/singleton.h" 11 #include "base/singleton.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "chrome/browser/about_flags.h"
13 #include "chrome/browser/browser_list.h" 14 #include "chrome/browser/browser_list.h"
14 #include "chrome/browser/browser_process.h" 15 #include "chrome/browser/browser_process.h"
15 #include "chrome/browser/browser_thread.h" 16 #include "chrome/browser/browser_thread.h"
16 #include "chrome/browser/dom_ui/chrome_url_data_manager.h" 17 #include "chrome/browser/dom_ui/chrome_url_data_manager.h"
17 #include "chrome/browser/labs.h"
18 #include "chrome/browser/prefs/pref_service.h" 18 #include "chrome/browser/prefs/pref_service.h"
19 #include "chrome/browser/profile.h" 19 #include "chrome/browser/profile.h"
20 #include "chrome/common/jstemplate_builder.h" 20 #include "chrome/common/jstemplate_builder.h"
21 #include "chrome/common/pref_names.h" 21 #include "chrome/common/pref_names.h"
22 #include "chrome/common/url_constants.h" 22 #include "chrome/common/url_constants.h"
23 #include "grit/browser_resources.h" 23 #include "grit/browser_resources.h"
24 #include "grit/chromium_strings.h" 24 #include "grit/chromium_strings.h"
25 #include "grit/generated_resources.h" 25 #include "grit/generated_resources.h"
26 #include "grit/theme_resources.h" 26 #include "grit/theme_resources.h"
27 27
28 namespace { 28 namespace {
29 29
30 /////////////////////////////////////////////////////////////////////////////// 30 ///////////////////////////////////////////////////////////////////////////////
31 // 31 //
32 // LabsUIHTMLSource 32 // FlagsUIHTMLSource
33 // 33 //
34 /////////////////////////////////////////////////////////////////////////////// 34 ///////////////////////////////////////////////////////////////////////////////
35 35
36 class LabsUIHTMLSource : public ChromeURLDataManager::DataSource { 36 class FlagsUIHTMLSource : public ChromeURLDataManager::DataSource {
37 public: 37 public:
38 LabsUIHTMLSource() 38 FlagsUIHTMLSource()
39 : DataSource(chrome::kChromeUIFlagsHost, MessageLoop::current()) {} 39 : DataSource(chrome::kChromeUIFlagsHost, MessageLoop::current()) {}
40 40
41 // Called when the network layer has requested a resource underneath 41 // Called when the network layer has requested a resource underneath
42 // the path we registered. 42 // the path we registered.
43 virtual void StartDataRequest(const std::string& path, 43 virtual void StartDataRequest(const std::string& path,
44 bool is_off_the_record, 44 bool is_off_the_record,
45 int request_id); 45 int request_id);
46 virtual std::string GetMimeType(const std::string&) const { 46 virtual std::string GetMimeType(const std::string&) const {
47 return "text/html"; 47 return "text/html";
48 } 48 }
49 49
50 private: 50 private:
51 ~LabsUIHTMLSource() {} 51 ~FlagsUIHTMLSource() {}
52 52
53 DISALLOW_COPY_AND_ASSIGN(LabsUIHTMLSource); 53 DISALLOW_COPY_AND_ASSIGN(FlagsUIHTMLSource);
54 }; 54 };
55 55
56 void LabsUIHTMLSource::StartDataRequest(const std::string& path, 56 void FlagsUIHTMLSource::StartDataRequest(const std::string& path,
57 bool is_off_the_record, 57 bool is_off_the_record,
58 int request_id) { 58 int request_id) {
59 // Strings used in the JsTemplate file. 59 // Strings used in the JsTemplate file.
60 DictionaryValue localized_strings; 60 DictionaryValue localized_strings;
61 localized_strings.SetString("flagsLongTitle", 61 localized_strings.SetString("flagsLongTitle",
62 l10n_util::GetStringUTF16(IDS_FLAGS_LONG_TITLE)); 62 l10n_util::GetStringUTF16(IDS_FLAGS_LONG_TITLE));
63 localized_strings.SetString("flagsTableTitle", 63 localized_strings.SetString("flagsTableTitle",
64 l10n_util::GetStringUTF16(IDS_FLAGS_TABLE_TITLE)); 64 l10n_util::GetStringUTF16(IDS_FLAGS_TABLE_TITLE));
65 localized_strings.SetString("flagsNoExperimentsAvailable", 65 localized_strings.SetString("flagsNoExperimentsAvailable",
66 l10n_util::GetStringUTF16(IDS_FLAGS_NO_EXPERIMENTS_AVAILABLE)); 66 l10n_util::GetStringUTF16(IDS_FLAGS_NO_EXPERIMENTS_AVAILABLE));
67 localized_strings.SetString("flagsWarningHeader", l10n_util::GetStringUTF16( 67 localized_strings.SetString("flagsWarningHeader", l10n_util::GetStringUTF16(
68 IDS_FLAGS_WARNING_HEADER)); 68 IDS_FLAGS_WARNING_HEADER));
69 localized_strings.SetString("flagsBlurb", l10n_util::GetStringFUTF16( 69 localized_strings.SetString("flagsBlurb", l10n_util::GetStringFUTF16(
70 IDS_FLAGS_WARNING_TEXT, 70 IDS_FLAGS_WARNING_TEXT,
71 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME))); 71 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
72 localized_strings.SetString("flagsRestartNotice", l10n_util::GetStringFUTF16( 72 localized_strings.SetString("flagsRestartNotice", l10n_util::GetStringFUTF16(
73 IDS_FLAGS_RESTART_NOTICE, 73 IDS_FLAGS_RESTART_NOTICE,
74 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME))); 74 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
75 localized_strings.SetString("flagsRestartButton", 75 localized_strings.SetString("flagsRestartButton",
76 l10n_util::GetStringUTF16(IDS_FLAGS_RESTART_BUTTON)); 76 l10n_util::GetStringUTF16(IDS_FLAGS_RESTART_BUTTON));
77 localized_strings.SetString("disable", 77 localized_strings.SetString("disable",
78 l10n_util::GetStringUTF16(IDS_FLAGS_DISABLE)); 78 l10n_util::GetStringUTF16(IDS_FLAGS_DISABLE));
79 localized_strings.SetString("enable", 79 localized_strings.SetString("enable",
80 l10n_util::GetStringUTF16(IDS_FLAGS_ENABLE)); 80 l10n_util::GetStringUTF16(IDS_FLAGS_ENABLE));
81 81
82 ChromeURLDataManager::DataSource::SetFontAndTextDirection(&localized_strings); 82 ChromeURLDataManager::DataSource::SetFontAndTextDirection(&localized_strings);
83 83
84 static const base::StringPiece labs_html( 84 static const base::StringPiece flags_html(
85 ResourceBundle::GetSharedInstance().GetRawDataResource(IDR_FLAGS_HTML)); 85 ResourceBundle::GetSharedInstance().GetRawDataResource(IDR_FLAGS_HTML));
86 std::string full_html(labs_html.data(), labs_html.size()); 86 std::string full_html(flags_html.data(), flags_html.size());
87 jstemplate_builder::AppendJsonHtml(&localized_strings, &full_html); 87 jstemplate_builder::AppendJsonHtml(&localized_strings, &full_html);
88 jstemplate_builder::AppendI18nTemplateSourceHtml(&full_html); 88 jstemplate_builder::AppendI18nTemplateSourceHtml(&full_html);
89 jstemplate_builder::AppendI18nTemplateProcessHtml(&full_html); 89 jstemplate_builder::AppendI18nTemplateProcessHtml(&full_html);
90 jstemplate_builder::AppendJsTemplateSourceHtml(&full_html); 90 jstemplate_builder::AppendJsTemplateSourceHtml(&full_html);
91 91
92 scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes); 92 scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes);
93 html_bytes->data.resize(full_html.size()); 93 html_bytes->data.resize(full_html.size());
94 std::copy(full_html.begin(), full_html.end(), html_bytes->data.begin()); 94 std::copy(full_html.begin(), full_html.end(), html_bytes->data.begin());
95 95
96 SendResponse(request_id, html_bytes); 96 SendResponse(request_id, html_bytes);
97 } 97 }
98 98
99 //////////////////////////////////////////////////////////////////////////////// 99 ////////////////////////////////////////////////////////////////////////////////
100 // 100 //
101 // LabsDOMHandler 101 // FlagsDOMHandler
102 // 102 //
103 //////////////////////////////////////////////////////////////////////////////// 103 ////////////////////////////////////////////////////////////////////////////////
104 104
105 // The handler for Javascript messages for the chrome://labs/ page. 105 // The handler for Javascript messages for the about:flags page.
106 class LabsDOMHandler : public DOMMessageHandler { 106 class FlagsDOMHandler : public DOMMessageHandler {
107 public: 107 public:
108 LabsDOMHandler() {} 108 FlagsDOMHandler() {}
109 virtual ~LabsDOMHandler() {} 109 virtual ~FlagsDOMHandler() {}
110 110
111 // DOMMessageHandler implementation. 111 // DOMMessageHandler implementation.
112 virtual void RegisterMessages(); 112 virtual void RegisterMessages();
113 113
114 // Callback for the "requestLabsExperiments" message. 114 // Callback for the "requestFlagsExperiments" message.
115 void HandleRequestLabsExperiments(const ListValue* args); 115 void HandleRequestFlagsExperiments(const ListValue* args);
116 116
117 // Callback for the "enableLabsExperiment" message. 117 // Callback for the "enableFlagsExperiment" message.
118 void HandleEnableLabsExperimentMessage(const ListValue* args); 118 void HandleEnableFlagsExperimentMessage(const ListValue* args);
119 119
120 // Callback for the "restartBrowser" message. Restores all tabs on restart. 120 // Callback for the "restartBrowser" message. Restores all tabs on restart.
121 void HandleRestartBrowser(const ListValue* args); 121 void HandleRestartBrowser(const ListValue* args);
122 122
123 private: 123 private:
124 DISALLOW_COPY_AND_ASSIGN(LabsDOMHandler); 124 DISALLOW_COPY_AND_ASSIGN(FlagsDOMHandler);
125 }; 125 };
126 126
127 void LabsDOMHandler::RegisterMessages() { 127 void FlagsDOMHandler::RegisterMessages() {
128 dom_ui_->RegisterMessageCallback("requestFlagsExperiments", 128 dom_ui_->RegisterMessageCallback("requestFlagsExperiments",
129 NewCallback(this, &LabsDOMHandler::HandleRequestLabsExperiments)); 129 NewCallback(this, &FlagsDOMHandler::HandleRequestFlagsExperiments));
130 dom_ui_->RegisterMessageCallback("enableFlagsExperiment", 130 dom_ui_->RegisterMessageCallback("enableFlagsExperiment",
131 NewCallback(this, &LabsDOMHandler::HandleEnableLabsExperimentMessage)); 131 NewCallback(this, &FlagsDOMHandler::HandleEnableFlagsExperimentMessage));
132 dom_ui_->RegisterMessageCallback("restartBrowser", 132 dom_ui_->RegisterMessageCallback("restartBrowser",
133 NewCallback(this, &LabsDOMHandler::HandleRestartBrowser)); 133 NewCallback(this, &FlagsDOMHandler::HandleRestartBrowser));
134 } 134 }
135 135
136 void LabsDOMHandler::HandleRequestLabsExperiments(const ListValue* args) { 136 void FlagsDOMHandler::HandleRequestFlagsExperiments(const ListValue* args) {
137 DictionaryValue results; 137 DictionaryValue results;
138 results.Set("flagsExperiments", 138 results.Set("flagsExperiments",
139 about_labs::GetLabsExperimentsData( 139 about_flags::GetFlagsExperimentsData(
140 dom_ui_->GetProfile()->GetPrefs())); 140 dom_ui_->GetProfile()->GetPrefs()));
141 results.SetBoolean("needsRestart", 141 results.SetBoolean("needsRestart",
142 about_labs::IsRestartNeededToCommitChanges()); 142 about_flags::IsRestartNeededToCommitChanges());
143 dom_ui_->CallJavascriptFunction(L"returnFlagsExperiments", results); 143 dom_ui_->CallJavascriptFunction(L"returnFlagsExperiments", results);
144 } 144 }
145 145
146 void LabsDOMHandler::HandleEnableLabsExperimentMessage(const ListValue* args) { 146 void FlagsDOMHandler::HandleEnableFlagsExperimentMessage(
147 const ListValue* args) {
147 DCHECK_EQ(2u, args->GetSize()); 148 DCHECK_EQ(2u, args->GetSize());
148 if (args->GetSize() != 2) 149 if (args->GetSize() != 2)
149 return; 150 return;
150 151
151 std::string experiment_internal_name; 152 std::string experiment_internal_name;
152 std::string enable_str; 153 std::string enable_str;
153 if (!args->GetString(0, &experiment_internal_name) || 154 if (!args->GetString(0, &experiment_internal_name) ||
154 !args->GetString(1, &enable_str)) 155 !args->GetString(1, &enable_str))
155 return; 156 return;
156 157
157 about_labs::SetExperimentEnabled( 158 about_flags::SetExperimentEnabled(
158 dom_ui_->GetProfile()->GetPrefs(), 159 dom_ui_->GetProfile()->GetPrefs(),
159 experiment_internal_name, 160 experiment_internal_name,
160 enable_str == "true"); 161 enable_str == "true");
161 } 162 }
162 163
163 void LabsDOMHandler::HandleRestartBrowser(const ListValue* args) { 164 void FlagsDOMHandler::HandleRestartBrowser(const ListValue* args) {
164 // Set the flag to restore state after the restart. 165 // Set the flag to restore state after the restart.
165 PrefService* pref_service = g_browser_process->local_state(); 166 PrefService* pref_service = g_browser_process->local_state();
166 pref_service->SetBoolean(prefs::kRestartLastSessionOnShutdown, true); 167 pref_service->SetBoolean(prefs::kRestartLastSessionOnShutdown, true);
167 BrowserList::CloseAllBrowsersAndExit(); 168 BrowserList::CloseAllBrowsersAndExit();
168 } 169 }
169 170
170 } // namespace 171 } // namespace
171 172
172 /////////////////////////////////////////////////////////////////////////////// 173 ///////////////////////////////////////////////////////////////////////////////
173 // 174 //
174 // LabsUI 175 // FlagsUI
175 // 176 //
176 /////////////////////////////////////////////////////////////////////////////// 177 ///////////////////////////////////////////////////////////////////////////////
177 178
178 LabsUI::LabsUI(TabContents* contents) : DOMUI(contents) { 179 FlagsUI::FlagsUI(TabContents* contents) : DOMUI(contents) {
179 AddMessageHandler((new LabsDOMHandler())->Attach(this)); 180 AddMessageHandler((new FlagsDOMHandler())->Attach(this));
180 181
181 LabsUIHTMLSource* html_source = new LabsUIHTMLSource(); 182 FlagsUIHTMLSource* html_source = new FlagsUIHTMLSource();
182 183
183 // Set up the chrome://labs/ source. 184 // Set up the about:flags source.
184 BrowserThread::PostTask( 185 BrowserThread::PostTask(
185 BrowserThread::IO, FROM_HERE, 186 BrowserThread::IO, FROM_HERE,
186 NewRunnableMethod(Singleton<ChromeURLDataManager>::get(), 187 NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
187 &ChromeURLDataManager::AddDataSource, 188 &ChromeURLDataManager::AddDataSource,
188 make_scoped_refptr(html_source))); 189 make_scoped_refptr(html_source)));
189 } 190 }
190 191
191 // static 192 // static
192 RefCountedMemory* LabsUI::GetFaviconResourceBytes() { 193 RefCountedMemory* FlagsUI::GetFaviconResourceBytes() {
193 return ResourceBundle::GetSharedInstance(). 194 return ResourceBundle::GetSharedInstance().
194 LoadDataResourceBytes(IDR_FLAGS); 195 LoadDataResourceBytes(IDR_FLAGS);
195 } 196 }
196 197
197 // static 198 // static
198 void LabsUI::RegisterUserPrefs(PrefService* prefs) { 199 void FlagsUI::RegisterUserPrefs(PrefService* prefs) {
199 prefs->RegisterListPref(prefs::kEnabledLabsExperiments); 200 prefs->RegisterListPref(prefs::kEnabledLabsExperiments);
200 } 201 }
OLDNEW
« no previous file with comments | « chrome/browser/dom_ui/flags_ui.h ('k') | chrome/browser/prefs/browser_prefs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698