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

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

Powered by Google App Engine
This is Rietveld 408576698