| 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 29 matching lines...) Expand all Loading... |
| 40 base::Bind(&StartupPagesHandler::HandleRemoveStartupPage, | 40 base::Bind(&StartupPagesHandler::HandleRemoveStartupPage, |
| 41 base::Unretained(this))); | 41 base::Unretained(this))); |
| 42 web_ui()->RegisterMessageCallback("setStartupPagesToCurrentPages", | 42 web_ui()->RegisterMessageCallback("setStartupPagesToCurrentPages", |
| 43 base::Bind(&StartupPagesHandler::HandleSetStartupPagesToCurrentPages, | 43 base::Bind(&StartupPagesHandler::HandleSetStartupPagesToCurrentPages, |
| 44 base::Unretained(this))); | 44 base::Unretained(this))); |
| 45 web_ui()->RegisterMessageCallback("validateStartupPage", | 45 web_ui()->RegisterMessageCallback("validateStartupPage", |
| 46 base::Bind(&StartupPagesHandler::HandleValidateStartupPage, | 46 base::Bind(&StartupPagesHandler::HandleValidateStartupPage, |
| 47 base::Unretained(this))); | 47 base::Unretained(this))); |
| 48 } | 48 } |
| 49 | 49 |
| 50 void StartupPagesHandler::RenderViewReused() { | 50 void StartupPagesHandler::OnJavascriptAllowed() { |
| 51 startup_custom_pages_table_model_.SetObserver(this); |
| 52 |
| 53 PrefService* prefService = Profile::FromWebUI(web_ui())->GetPrefs(); |
| 54 SessionStartupPref pref = SessionStartupPref::GetStartupPref(prefService); |
| 55 startup_custom_pages_table_model_.SetURLs(pref.urls); |
| 56 |
| 57 if (pref.urls.empty()) |
| 58 pref.type = SessionStartupPref::DEFAULT; |
| 59 |
| 60 pref_change_registrar_.Init(prefService); |
| 61 pref_change_registrar_.Add( |
| 62 prefs::kURLsToRestoreOnStartup, |
| 63 base::Bind(&StartupPagesHandler::UpdateStartupPages, |
| 64 base::Unretained(this))); |
| 65 } |
| 66 |
| 67 void StartupPagesHandler::OnJavascriptDisallowed() { |
| 51 startup_custom_pages_table_model_.SetObserver(nullptr); | 68 startup_custom_pages_table_model_.SetObserver(nullptr); |
| 52 pref_change_registrar_.RemoveAll(); | 69 pref_change_registrar_.RemoveAll(); |
| 53 } | 70 } |
| 54 | 71 |
| 55 void StartupPagesHandler::OnModelChanged() { | 72 void StartupPagesHandler::OnModelChanged() { |
| 56 base::ListValue startup_pages; | 73 base::ListValue startup_pages; |
| 57 int page_count = startup_custom_pages_table_model_.RowCount(); | 74 int page_count = startup_custom_pages_table_model_.RowCount(); |
| 58 std::vector<GURL> urls = startup_custom_pages_table_model_.GetURLs(); | 75 std::vector<GURL> urls = startup_custom_pages_table_model_.GetURLs(); |
| 59 for (int i = 0; i < page_count; ++i) { | 76 for (int i = 0; i < page_count; ++i) { |
| 60 std::unique_ptr<base::DictionaryValue> entry(new base::DictionaryValue()); | 77 std::unique_ptr<base::DictionaryValue> entry(new base::DictionaryValue()); |
| 61 entry->SetString("title", startup_custom_pages_table_model_.GetText(i, 0)); | 78 entry->SetString("title", startup_custom_pages_table_model_.GetText(i, 0)); |
| 62 entry->SetString("url", urls[i].spec()); | 79 entry->SetString("url", urls[i].spec()); |
| 63 entry->SetString("tooltip", | 80 entry->SetString("tooltip", |
| 64 startup_custom_pages_table_model_.GetTooltip(i)); | 81 startup_custom_pages_table_model_.GetTooltip(i)); |
| 65 entry->SetInteger("modelIndex", i); | 82 entry->SetInteger("modelIndex", i); |
| 66 startup_pages.Append(entry.release()); | 83 startup_pages.Append(entry.release()); |
| 67 } | 84 } |
| 68 | 85 |
| 69 web_ui()->CallJavascriptFunction("cr.webUIListenerCallback", | 86 CallJavascriptFunction("cr.webUIListenerCallback", |
| 70 base::StringValue("update-startup-pages"), | 87 base::StringValue("update-startup-pages"), |
| 71 startup_pages); | 88 startup_pages); |
| 72 } | 89 } |
| 73 | 90 |
| 74 void StartupPagesHandler::OnItemsChanged(int start, int length) { | 91 void StartupPagesHandler::OnItemsChanged(int start, int length) { |
| 75 OnModelChanged(); | 92 OnModelChanged(); |
| 76 } | 93 } |
| 77 | 94 |
| 78 void StartupPagesHandler::OnItemsAdded(int start, int length) { | 95 void StartupPagesHandler::OnItemsAdded(int start, int length) { |
| 79 OnModelChanged(); | 96 OnModelChanged(); |
| 80 } | 97 } |
| 81 | 98 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 startup_custom_pages_table_model_.SetURLs(urls); | 148 startup_custom_pages_table_model_.SetURLs(urls); |
| 132 SaveStartupPagesPref(); | 149 SaveStartupPagesPref(); |
| 133 ResolveJavascriptCallback(*callback_id, base::FundamentalValue(true)); | 150 ResolveJavascriptCallback(*callback_id, base::FundamentalValue(true)); |
| 134 } else { | 151 } else { |
| 135 ResolveJavascriptCallback(*callback_id, base::FundamentalValue(false)); | 152 ResolveJavascriptCallback(*callback_id, base::FundamentalValue(false)); |
| 136 } | 153 } |
| 137 } | 154 } |
| 138 | 155 |
| 139 void StartupPagesHandler::HandleOnStartupPrefsPageLoad( | 156 void StartupPagesHandler::HandleOnStartupPrefsPageLoad( |
| 140 const base::ListValue* args) { | 157 const base::ListValue* args) { |
| 141 startup_custom_pages_table_model_.SetObserver(this); | 158 AllowJavascript(); |
| 142 | |
| 143 PrefService* prefService = Profile::FromWebUI(web_ui())->GetPrefs(); | |
| 144 SessionStartupPref pref = SessionStartupPref::GetStartupPref( | |
| 145 prefService); | |
| 146 startup_custom_pages_table_model_.SetURLs(pref.urls); | |
| 147 | |
| 148 if (pref.urls.empty()) | |
| 149 pref.type = SessionStartupPref::DEFAULT; | |
| 150 | |
| 151 pref_change_registrar_.Init(prefService); | |
| 152 pref_change_registrar_.Add( | |
| 153 prefs::kURLsToRestoreOnStartup, | |
| 154 base::Bind(&StartupPagesHandler::UpdateStartupPages, | |
| 155 base::Unretained(this))); | |
| 156 | |
| 157 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref( | |
| 158 Profile::FromWebUI(web_ui())->GetPrefs()); | |
| 159 startup_custom_pages_table_model_.SetURLs(startup_pref.urls); | |
| 160 } | 159 } |
| 161 | 160 |
| 162 void StartupPagesHandler::HandleRemoveStartupPage(const base::ListValue* args) { | 161 void StartupPagesHandler::HandleRemoveStartupPage(const base::ListValue* args) { |
| 163 int selected_index; | 162 int selected_index; |
| 164 if (!args->GetInteger(0, &selected_index)) { | 163 if (!args->GetInteger(0, &selected_index)) { |
| 165 NOTREACHED(); | 164 NOTREACHED(); |
| 166 return; | 165 return; |
| 167 } | 166 } |
| 168 | 167 |
| 169 if (selected_index < 0 || | 168 if (selected_index < 0 || |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 | 209 |
| 211 void StartupPagesHandler::UpdateStartupPages() { | 210 void StartupPagesHandler::UpdateStartupPages() { |
| 212 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref( | 211 const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref( |
| 213 Profile::FromWebUI(web_ui())->GetPrefs()); | 212 Profile::FromWebUI(web_ui())->GetPrefs()); |
| 214 startup_custom_pages_table_model_.SetURLs(startup_pref.urls); | 213 startup_custom_pages_table_model_.SetURLs(startup_pref.urls); |
| 215 // The change will go to the JS code in the | 214 // The change will go to the JS code in the |
| 216 // StartupPagesHandler::OnModelChanged() method. | 215 // StartupPagesHandler::OnModelChanged() method. |
| 217 } | 216 } |
| 218 | 217 |
| 219 } // namespace settings | 218 } // namespace settings |
| OLD | NEW |