Chromium Code Reviews| 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" |
| 11 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
| 12 #include "chrome/browser/ui/webui/settings_utils.h" | |
| 12 #include "chrome/common/pref_names.h" | 13 #include "chrome/common/pref_names.h" |
| 13 #include "components/url_formatter/url_fixer.h" | |
| 14 #include "content/public/browser/web_ui.h" | 14 #include "content/public/browser/web_ui.h" |
| 15 #include "url/gurl.h" | |
| 15 | 16 |
| 16 namespace settings { | 17 namespace settings { |
| 17 | 18 |
| 18 StartupPagesHandler::StartupPagesHandler(content::WebUI* webui) | 19 StartupPagesHandler::StartupPagesHandler(content::WebUI* webui) |
| 19 : startup_custom_pages_table_model_(Profile::FromWebUI(webui)) { | 20 : startup_custom_pages_table_model_(Profile::FromWebUI(webui)) { |
| 20 } | 21 } |
| 21 | 22 |
| 22 StartupPagesHandler::~StartupPagesHandler() { | 23 StartupPagesHandler::~StartupPagesHandler() { |
| 23 } | 24 } |
| 24 | 25 |
| 25 void StartupPagesHandler::RegisterMessages() { | 26 void StartupPagesHandler::RegisterMessages() { |
| 26 if (Profile::FromWebUI(web_ui())->IsOffTheRecord()) | 27 if (Profile::FromWebUI(web_ui())->IsOffTheRecord()) |
| 27 return; | 28 return; |
| 28 | 29 |
| 29 web_ui()->RegisterMessageCallback("addStartupPage", | 30 web_ui()->RegisterMessageCallback("addStartupPage", |
| 30 base::Bind(&StartupPagesHandler::HandleAddStartupPage, | 31 base::Bind(&StartupPagesHandler::HandleAddStartupPage, |
| 31 base::Unretained(this))); | 32 base::Unretained(this))); |
| 32 web_ui()->RegisterMessageCallback("onStartupPrefsPageLoad", | 33 web_ui()->RegisterMessageCallback("onStartupPrefsPageLoad", |
| 33 base::Bind(&StartupPagesHandler::HandleOnStartupPrefsPageLoad, | 34 base::Bind(&StartupPagesHandler::HandleOnStartupPrefsPageLoad, |
| 34 base::Unretained(this))); | 35 base::Unretained(this))); |
| 35 web_ui()->RegisterMessageCallback("removeStartupPage", | 36 web_ui()->RegisterMessageCallback("removeStartupPage", |
| 36 base::Bind(&StartupPagesHandler::HandleRemoveStartupPage, | 37 base::Bind(&StartupPagesHandler::HandleRemoveStartupPage, |
| 37 base::Unretained(this))); | 38 base::Unretained(this))); |
| 38 web_ui()->RegisterMessageCallback("setStartupPagesToCurrentPages", | 39 web_ui()->RegisterMessageCallback("setStartupPagesToCurrentPages", |
| 39 base::Bind(&StartupPagesHandler::HandleSetStartupPagesToCurrentPages, | 40 base::Bind(&StartupPagesHandler::HandleSetStartupPagesToCurrentPages, |
| 40 base::Unretained(this))); | 41 base::Unretained(this))); |
| 42 web_ui()->RegisterMessageCallback("validateStartupPage", | |
| 43 base::Bind(&StartupPagesHandler::HandleValidateStartupPage, | |
| 44 base::Unretained(this))); | |
| 41 } | 45 } |
| 42 | 46 |
| 43 void StartupPagesHandler::RenderViewReused() { | 47 void StartupPagesHandler::RenderViewReused() { |
| 44 startup_custom_pages_table_model_.SetObserver(nullptr); | 48 startup_custom_pages_table_model_.SetObserver(nullptr); |
| 45 pref_change_registrar_.RemoveAll(); | 49 pref_change_registrar_.RemoveAll(); |
| 46 } | 50 } |
| 47 | 51 |
| 48 void StartupPagesHandler::OnModelChanged() { | 52 void StartupPagesHandler::OnModelChanged() { |
| 49 base::ListValue startup_pages; | 53 base::ListValue startup_pages; |
| 50 int page_count = startup_custom_pages_table_model_.RowCount(); | 54 int page_count = startup_custom_pages_table_model_.RowCount(); |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 72 OnModelChanged(); | 76 OnModelChanged(); |
| 73 } | 77 } |
| 74 | 78 |
| 75 void StartupPagesHandler::OnItemsRemoved(int start, int length) { | 79 void StartupPagesHandler::OnItemsRemoved(int start, int length) { |
| 76 OnModelChanged(); | 80 OnModelChanged(); |
| 77 } | 81 } |
| 78 | 82 |
| 79 void StartupPagesHandler::HandleAddStartupPage(const base::ListValue* args) { | 83 void StartupPagesHandler::HandleAddStartupPage(const base::ListValue* args) { |
| 80 std::string url_string; | 84 std::string url_string; |
| 81 if (!args->GetString(0, &url_string)) { | 85 if (!args->GetString(0, &url_string)) { |
| 82 DLOG(ERROR) << "Missing URL string parameter"; | 86 NOTREACHED(); |
| 83 return; | 87 return; |
| 84 } | 88 } |
| 85 | 89 |
| 86 GURL url = url_formatter::FixupURL(url_string, std::string()); | 90 GURL url; |
| 87 if (!url.is_valid()) { | 91 if (!settings_utils::FixupAndValidateStartupPage(url_string, &url)) { |
| 88 LOG(ERROR) << "FixupURL failed on " << url_string; | 92 NOTREACHED(); |
|
dschuyler
2016/03/31 20:29:26
Would these be ok as a DLOG instead of NOTREACHED(
Dan Beam
2016/03/31 22:06:55
this should never be reached as the user shouldn't
| |
| 89 return; | 93 return; |
| 90 } | 94 } |
| 91 | 95 |
| 92 int row_count = startup_custom_pages_table_model_.RowCount(); | 96 int row_count = startup_custom_pages_table_model_.RowCount(); |
| 93 int index; | 97 int index; |
| 94 if (!args->GetInteger(1, &index) || index > row_count) | 98 if (!args->GetInteger(1, &index) || index > row_count) |
| 95 index = row_count; | 99 index = row_count; |
| 96 | 100 |
| 97 startup_custom_pages_table_model_.Add(index, url); | 101 startup_custom_pages_table_model_.Add(index, url); |
| 98 SaveStartupPagesPref(); | 102 SaveStartupPagesPref(); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 117 base::Unretained(this))); | 121 base::Unretained(this))); |
| 118 | 122 |
| 119 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref( | 123 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref( |
| 120 Profile::FromWebUI(web_ui())->GetPrefs()); | 124 Profile::FromWebUI(web_ui())->GetPrefs()); |
| 121 startup_custom_pages_table_model_.SetURLs(startup_pref.urls); | 125 startup_custom_pages_table_model_.SetURLs(startup_pref.urls); |
| 122 } | 126 } |
| 123 | 127 |
| 124 void StartupPagesHandler::HandleRemoveStartupPage(const base::ListValue* args) { | 128 void StartupPagesHandler::HandleRemoveStartupPage(const base::ListValue* args) { |
| 125 int selected_index; | 129 int selected_index; |
| 126 if (!args->GetInteger(0, &selected_index)) { | 130 if (!args->GetInteger(0, &selected_index)) { |
| 127 DLOG(ERROR) << "Missing index parameter"; | 131 NOTREACHED(); |
| 128 return; | 132 return; |
| 129 } | 133 } |
| 130 | 134 |
| 131 if (selected_index < 0 || | 135 if (selected_index < 0 || |
| 132 selected_index >= startup_custom_pages_table_model_.RowCount()) { | 136 selected_index >= startup_custom_pages_table_model_.RowCount()) { |
| 133 LOG(ERROR) << "Index out of range " << selected_index; | 137 NOTREACHED(); |
| 134 return; | 138 return; |
| 135 } | 139 } |
| 136 | 140 |
| 137 startup_custom_pages_table_model_.Remove(selected_index); | 141 startup_custom_pages_table_model_.Remove(selected_index); |
| 138 SaveStartupPagesPref(); | 142 SaveStartupPagesPref(); |
| 139 } | 143 } |
| 140 | 144 |
| 141 void StartupPagesHandler::HandleSetStartupPagesToCurrentPages( | 145 void StartupPagesHandler::HandleSetStartupPagesToCurrentPages( |
| 142 const base::ListValue* args) { | 146 const base::ListValue* args) { |
| 143 startup_custom_pages_table_model_.SetToCurrentlyOpenPages(); | 147 startup_custom_pages_table_model_.SetToCurrentlyOpenPages(); |
| 144 SaveStartupPagesPref(); | 148 SaveStartupPagesPref(); |
| 145 } | 149 } |
| 146 | 150 |
| 151 void StartupPagesHandler::HandleValidateStartupPage( | |
| 152 const base::ListValue* args) { | |
| 153 CHECK_EQ(args->GetSize(), 2U); | |
| 154 | |
| 155 const base::Value* callback_id; | |
| 156 CHECK(args->Get(0, &callback_id)); | |
| 157 | |
| 158 std::string url_string; | |
| 159 CHECK(args->GetString(1, &url_string)); | |
| 160 | |
| 161 bool valid = settings_utils::FixupAndValidateStartupPage(url_string, nullptr); | |
| 162 ResolveJavascriptCallback(*callback_id, base::FundamentalValue(valid)); | |
| 163 } | |
| 164 | |
| 147 void StartupPagesHandler::SaveStartupPagesPref() { | 165 void StartupPagesHandler::SaveStartupPagesPref() { |
| 148 PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs(); | 166 PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs(); |
| 149 | 167 |
| 150 SessionStartupPref pref = SessionStartupPref::GetStartupPref(prefs); | 168 SessionStartupPref pref = SessionStartupPref::GetStartupPref(prefs); |
| 151 pref.urls = startup_custom_pages_table_model_.GetURLs(); | 169 pref.urls = startup_custom_pages_table_model_.GetURLs(); |
| 152 | 170 |
| 153 if (pref.urls.empty()) | 171 if (pref.urls.empty()) |
| 154 pref.type = SessionStartupPref::DEFAULT; | 172 pref.type = SessionStartupPref::DEFAULT; |
| 155 | 173 |
| 156 SessionStartupPref::SetStartupPref(prefs, pref); | 174 SessionStartupPref::SetStartupPref(prefs, pref); |
| 157 } | 175 } |
| 158 | 176 |
| 159 void StartupPagesHandler::UpdateStartupPages() { | 177 void StartupPagesHandler::UpdateStartupPages() { |
| 160 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref( | 178 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref( |
| 161 Profile::FromWebUI(web_ui())->GetPrefs()); | 179 Profile::FromWebUI(web_ui())->GetPrefs()); |
| 162 startup_custom_pages_table_model_.SetURLs(startup_pref.urls); | 180 startup_custom_pages_table_model_.SetURLs(startup_pref.urls); |
| 163 // The change will go to the JS code in the | 181 // The change will go to the JS code in the |
| 164 // StartupPagesHandler::OnModelChanged() method. | 182 // StartupPagesHandler::OnModelChanged() method. |
| 165 } | 183 } |
| 166 | 184 |
| 167 } // namespace settings | 185 } // namespace settings |
| OLD | NEW |