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

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

Issue 1877633002: MD Settings: Adding C++ support for editing startup URLs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@on_startup_urls
Patch Set: Undo move for now. Created 4 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 <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "chrome/browser/prefs/session_startup_pref.h" 10 #include "chrome/browser/prefs/session_startup_pref.h"
(...skipping 12 matching lines...) Expand all
23 StartupPagesHandler::~StartupPagesHandler() { 23 StartupPagesHandler::~StartupPagesHandler() {
24 } 24 }
25 25
26 void StartupPagesHandler::RegisterMessages() { 26 void StartupPagesHandler::RegisterMessages() {
27 if (Profile::FromWebUI(web_ui())->IsOffTheRecord()) 27 if (Profile::FromWebUI(web_ui())->IsOffTheRecord())
28 return; 28 return;
29 29
30 web_ui()->RegisterMessageCallback("addStartupPage", 30 web_ui()->RegisterMessageCallback("addStartupPage",
31 base::Bind(&StartupPagesHandler::HandleAddStartupPage, 31 base::Bind(&StartupPagesHandler::HandleAddStartupPage,
32 base::Unretained(this))); 32 base::Unretained(this)));
33 web_ui()->RegisterMessageCallback("editStartupPage",
34 base::Bind(&StartupPagesHandler::HandleEditStartupPage,
35 base::Unretained(this)));
33 web_ui()->RegisterMessageCallback("onStartupPrefsPageLoad", 36 web_ui()->RegisterMessageCallback("onStartupPrefsPageLoad",
34 base::Bind(&StartupPagesHandler::HandleOnStartupPrefsPageLoad, 37 base::Bind(&StartupPagesHandler::HandleOnStartupPrefsPageLoad,
35 base::Unretained(this))); 38 base::Unretained(this)));
36 web_ui()->RegisterMessageCallback("removeStartupPage", 39 web_ui()->RegisterMessageCallback("removeStartupPage",
37 base::Bind(&StartupPagesHandler::HandleRemoveStartupPage, 40 base::Bind(&StartupPagesHandler::HandleRemoveStartupPage,
38 base::Unretained(this))); 41 base::Unretained(this)));
39 web_ui()->RegisterMessageCallback("setStartupPagesToCurrentPages", 42 web_ui()->RegisterMessageCallback("setStartupPagesToCurrentPages",
40 base::Bind(&StartupPagesHandler::HandleSetStartupPagesToCurrentPages, 43 base::Bind(&StartupPagesHandler::HandleSetStartupPagesToCurrentPages,
41 base::Unretained(this))); 44 base::Unretained(this)));
42 web_ui()->RegisterMessageCallback("validateStartupPage", 45 web_ui()->RegisterMessageCallback("validateStartupPage",
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 int row_count = startup_custom_pages_table_model_.RowCount(); 101 int row_count = startup_custom_pages_table_model_.RowCount();
99 int index; 102 int index;
100 if (!args->GetInteger(1, &index) || index > row_count) 103 if (!args->GetInteger(1, &index) || index > row_count)
101 index = row_count; 104 index = row_count;
102 105
103 startup_custom_pages_table_model_.Add(index, url); 106 startup_custom_pages_table_model_.Add(index, url);
104 SaveStartupPagesPref(); 107 SaveStartupPagesPref();
105 ResolveJavascriptCallback(*callback_id, base::FundamentalValue(true)); 108 ResolveJavascriptCallback(*callback_id, base::FundamentalValue(true));
106 } 109 }
107 110
111 void StartupPagesHandler::HandleEditStartupPage(const base::ListValue* args) {
112 CHECK_EQ(args->GetSize(), 3U);
113 const base::Value* callback_id;
114 CHECK(args->Get(0, &callback_id));
115 int index;
Dan Beam 2016/04/12 04:37:47 all numbers in javascript are doubles i honestly
dpapad 2016/04/12 17:52:54 This logic is mostly copied from the equivalent co
Dan Beam 2016/04/12 18:08:53 Acknowledged.
116 CHECK(args->GetInteger(1, &index));
117
118 if (index < 0 || index > startup_custom_pages_table_model_.RowCount()) {
119 RejectJavascriptCallback(*callback_id, *base::Value::CreateNullValue());
120 NOTREACHED();
121 return;
122 }
123
124 std::string url_string;
125 CHECK(args->GetString(2, &url_string));
126
127 GURL fixed_url;
128 if (settings_utils::FixupAndValidateStartupPage(url_string, &fixed_url)) {
129 std::vector<GURL> urls = startup_custom_pages_table_model_.GetURLs();
130 urls[index] = fixed_url;
131 startup_custom_pages_table_model_.SetURLs(urls);
132 ResolveJavascriptCallback(*callback_id, base::FundamentalValue(true));
133 } else {
134 ResolveJavascriptCallback(*callback_id, base::FundamentalValue(false));
135 }
136 }
Dan Beam 2016/04/12 04:39:13 it might be worthwhile to test any of these callba
dpapad 2016/04/12 17:52:54 Agreed. C++ test coverage would be nice for this (
Dan Beam 2016/04/12 18:08:53 Acknowledged.
137
108 void StartupPagesHandler::HandleOnStartupPrefsPageLoad( 138 void StartupPagesHandler::HandleOnStartupPrefsPageLoad(
109 const base::ListValue* args) { 139 const base::ListValue* args) {
110 startup_custom_pages_table_model_.SetObserver(this); 140 startup_custom_pages_table_model_.SetObserver(this);
111 141
112 PrefService* prefService = Profile::FromWebUI(web_ui())->GetPrefs(); 142 PrefService* prefService = Profile::FromWebUI(web_ui())->GetPrefs();
113 SessionStartupPref pref = SessionStartupPref::GetStartupPref( 143 SessionStartupPref pref = SessionStartupPref::GetStartupPref(
114 prefService); 144 prefService);
115 startup_custom_pages_table_model_.SetURLs(pref.urls); 145 startup_custom_pages_table_model_.SetURLs(pref.urls);
116 146
117 if (pref.urls.empty()) 147 if (pref.urls.empty())
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 209
180 void StartupPagesHandler::UpdateStartupPages() { 210 void StartupPagesHandler::UpdateStartupPages() {
181 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref( 211 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref(
182 Profile::FromWebUI(web_ui())->GetPrefs()); 212 Profile::FromWebUI(web_ui())->GetPrefs());
183 startup_custom_pages_table_model_.SetURLs(startup_pref.urls); 213 startup_custom_pages_table_model_.SetURLs(startup_pref.urls);
184 // The change will go to the JS code in the 214 // The change will go to the JS code in the
185 // StartupPagesHandler::OnModelChanged() method. 215 // StartupPagesHandler::OnModelChanged() method.
186 } 216 }
187 217
188 } // namespace settings 218 } // 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