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

Side by Side Diff: chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc

Issue 2781623006: MD Settings: Fix Appearance home page URL crash (Closed)
Patch Set: Created 3 years, 8 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/ui/webui/settings/settings_startup_pages_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/settings/settings_startup_pages_handler.h" 5 #include "chrome/browser/ui/webui/settings/settings_startup_pages_handler.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 26 matching lines...) Expand all
37 base::Unretained(this))); 37 base::Unretained(this)));
38 web_ui()->RegisterMessageCallback("onStartupPrefsPageLoad", 38 web_ui()->RegisterMessageCallback("onStartupPrefsPageLoad",
39 base::Bind(&StartupPagesHandler::HandleOnStartupPrefsPageLoad, 39 base::Bind(&StartupPagesHandler::HandleOnStartupPrefsPageLoad,
40 base::Unretained(this))); 40 base::Unretained(this)));
41 web_ui()->RegisterMessageCallback("removeStartupPage", 41 web_ui()->RegisterMessageCallback("removeStartupPage",
42 base::Bind(&StartupPagesHandler::HandleRemoveStartupPage, 42 base::Bind(&StartupPagesHandler::HandleRemoveStartupPage,
43 base::Unretained(this))); 43 base::Unretained(this)));
44 web_ui()->RegisterMessageCallback("setStartupPagesToCurrentPages", 44 web_ui()->RegisterMessageCallback("setStartupPagesToCurrentPages",
45 base::Bind(&StartupPagesHandler::HandleSetStartupPagesToCurrentPages, 45 base::Bind(&StartupPagesHandler::HandleSetStartupPagesToCurrentPages,
46 base::Unretained(this))); 46 base::Unretained(this)));
47 web_ui()->RegisterMessageCallback("validateStartupPage",
48 base::Bind(&StartupPagesHandler::HandleValidateStartupPage,
49 base::Unretained(this)));
50 } 47 }
51 48
52 void StartupPagesHandler::OnJavascriptAllowed() { 49 void StartupPagesHandler::OnJavascriptAllowed() {
53 startup_custom_pages_table_model_.SetObserver(this); 50 startup_custom_pages_table_model_.SetObserver(this);
54 51
55 PrefService* prefService = Profile::FromWebUI(web_ui())->GetPrefs(); 52 PrefService* prefService = Profile::FromWebUI(web_ui())->GetPrefs();
56 SessionStartupPref pref = SessionStartupPref::GetStartupPref(prefService); 53 SessionStartupPref pref = SessionStartupPref::GetStartupPref(prefService);
57 startup_custom_pages_table_model_.SetURLs(pref.urls); 54 startup_custom_pages_table_model_.SetURLs(pref.urls);
58 55
59 if (pref.urls.empty()) 56 if (pref.urls.empty())
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 startup_custom_pages_table_model_.Remove(selected_index); 172 startup_custom_pages_table_model_.Remove(selected_index);
176 SaveStartupPagesPref(); 173 SaveStartupPagesPref();
177 } 174 }
178 175
179 void StartupPagesHandler::HandleSetStartupPagesToCurrentPages( 176 void StartupPagesHandler::HandleSetStartupPagesToCurrentPages(
180 const base::ListValue* args) { 177 const base::ListValue* args) {
181 startup_custom_pages_table_model_.SetToCurrentlyOpenPages(); 178 startup_custom_pages_table_model_.SetToCurrentlyOpenPages();
182 SaveStartupPagesPref(); 179 SaveStartupPagesPref();
183 } 180 }
184 181
185 void StartupPagesHandler::HandleValidateStartupPage(
186 const base::ListValue* args) {
187 CHECK_EQ(args->GetSize(), 2U);
188
189 const base::Value* callback_id;
190 CHECK(args->Get(0, &callback_id));
191
192 std::string url_string;
193 CHECK(args->GetString(1, &url_string));
194
195 bool valid = settings_utils::FixupAndValidateStartupPage(url_string, nullptr);
196 ResolveJavascriptCallback(*callback_id, base::Value(valid));
197 }
198
199 void StartupPagesHandler::SaveStartupPagesPref() { 182 void StartupPagesHandler::SaveStartupPagesPref() {
200 PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs(); 183 PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs();
201 184
202 SessionStartupPref pref = SessionStartupPref::GetStartupPref(prefs); 185 SessionStartupPref pref = SessionStartupPref::GetStartupPref(prefs);
203 pref.urls = startup_custom_pages_table_model_.GetURLs(); 186 pref.urls = startup_custom_pages_table_model_.GetURLs();
204 187
205 if (pref.urls.empty()) 188 if (pref.urls.empty())
206 pref.type = SessionStartupPref::DEFAULT; 189 pref.type = SessionStartupPref::DEFAULT;
207 190
208 SessionStartupPref::SetStartupPref(prefs, pref); 191 SessionStartupPref::SetStartupPref(prefs, pref);
209 } 192 }
210 193
211 void StartupPagesHandler::UpdateStartupPages() { 194 void StartupPagesHandler::UpdateStartupPages() {
212 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref( 195 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref(
213 Profile::FromWebUI(web_ui())->GetPrefs()); 196 Profile::FromWebUI(web_ui())->GetPrefs());
214 startup_custom_pages_table_model_.SetURLs(startup_pref.urls); 197 startup_custom_pages_table_model_.SetURLs(startup_pref.urls);
215 // The change will go to the JS code in the 198 // The change will go to the JS code in the
216 // StartupPagesHandler::OnModelChanged() method. 199 // StartupPagesHandler::OnModelChanged() method.
217 } 200 }
218 201
219 } // namespace settings 202 } // namespace settings
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/settings/settings_startup_pages_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698