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

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

Issue 1896463003: WebUI: Add JavaScript lifecycle-control to WebUIMessageHandler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
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 29 matching lines...) Expand all
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698