OLD | NEW |
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 Loading... |
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 Loading... |
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; |
| 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 SaveStartupPagesPref(); |
| 133 ResolveJavascriptCallback(*callback_id, base::FundamentalValue(true)); |
| 134 } else { |
| 135 ResolveJavascriptCallback(*callback_id, base::FundamentalValue(false)); |
| 136 } |
| 137 } |
| 138 |
108 void StartupPagesHandler::HandleOnStartupPrefsPageLoad( | 139 void StartupPagesHandler::HandleOnStartupPrefsPageLoad( |
109 const base::ListValue* args) { | 140 const base::ListValue* args) { |
110 startup_custom_pages_table_model_.SetObserver(this); | 141 startup_custom_pages_table_model_.SetObserver(this); |
111 | 142 |
112 PrefService* prefService = Profile::FromWebUI(web_ui())->GetPrefs(); | 143 PrefService* prefService = Profile::FromWebUI(web_ui())->GetPrefs(); |
113 SessionStartupPref pref = SessionStartupPref::GetStartupPref( | 144 SessionStartupPref pref = SessionStartupPref::GetStartupPref( |
114 prefService); | 145 prefService); |
115 startup_custom_pages_table_model_.SetURLs(pref.urls); | 146 startup_custom_pages_table_model_.SetURLs(pref.urls); |
116 | 147 |
117 if (pref.urls.empty()) | 148 if (pref.urls.empty()) |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 | 210 |
180 void StartupPagesHandler::UpdateStartupPages() { | 211 void StartupPagesHandler::UpdateStartupPages() { |
181 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref( | 212 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref( |
182 Profile::FromWebUI(web_ui())->GetPrefs()); | 213 Profile::FromWebUI(web_ui())->GetPrefs()); |
183 startup_custom_pages_table_model_.SetURLs(startup_pref.urls); | 214 startup_custom_pages_table_model_.SetURLs(startup_pref.urls); |
184 // The change will go to the JS code in the | 215 // The change will go to the JS code in the |
185 // StartupPagesHandler::OnModelChanged() method. | 216 // StartupPagesHandler::OnModelChanged() method. |
186 } | 217 } |
187 | 218 |
188 } // namespace settings | 219 } // namespace settings |
OLD | NEW |