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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc
diff --git a/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc b/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc
index 6f919d5048b1bfe4731d98f891fdcc5c2d1fd225..8ef6ebd7cfddd1eb7a7974fbd1a6af403bf04295 100644
--- a/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc
+++ b/chrome/browser/ui/webui/settings/settings_startup_pages_handler.cc
@@ -47,7 +47,24 @@ void StartupPagesHandler::RegisterMessages() {
base::Unretained(this)));
}
-void StartupPagesHandler::RenderViewReused() {
+void StartupPagesHandler::OnJavascriptAllowed() {
+ startup_custom_pages_table_model_.SetObserver(this);
+
+ PrefService* prefService = Profile::FromWebUI(web_ui())->GetPrefs();
+ SessionStartupPref pref = SessionStartupPref::GetStartupPref(prefService);
+ startup_custom_pages_table_model_.SetURLs(pref.urls);
+
+ if (pref.urls.empty())
+ pref.type = SessionStartupPref::DEFAULT;
+
+ pref_change_registrar_.Init(prefService);
+ pref_change_registrar_.Add(
+ prefs::kURLsToRestoreOnStartup,
+ base::Bind(&StartupPagesHandler::UpdateStartupPages,
+ base::Unretained(this)));
+}
+
+void StartupPagesHandler::OnJavascriptDisallowed() {
startup_custom_pages_table_model_.SetObserver(nullptr);
pref_change_registrar_.RemoveAll();
}
@@ -66,9 +83,9 @@ void StartupPagesHandler::OnModelChanged() {
startup_pages.Append(entry.release());
}
- web_ui()->CallJavascriptFunction("cr.webUIListenerCallback",
- base::StringValue("update-startup-pages"),
- startup_pages);
+ CallJavascriptFunction("cr.webUIListenerCallback",
+ base::StringValue("update-startup-pages"),
+ startup_pages);
}
void StartupPagesHandler::OnItemsChanged(int start, int length) {
@@ -138,25 +155,7 @@ void StartupPagesHandler::HandleEditStartupPage(const base::ListValue* args) {
void StartupPagesHandler::HandleOnStartupPrefsPageLoad(
const base::ListValue* args) {
- startup_custom_pages_table_model_.SetObserver(this);
-
- PrefService* prefService = Profile::FromWebUI(web_ui())->GetPrefs();
- SessionStartupPref pref = SessionStartupPref::GetStartupPref(
- prefService);
- startup_custom_pages_table_model_.SetURLs(pref.urls);
-
- if (pref.urls.empty())
- pref.type = SessionStartupPref::DEFAULT;
-
- pref_change_registrar_.Init(prefService);
- pref_change_registrar_.Add(
- prefs::kURLsToRestoreOnStartup,
- base::Bind(&StartupPagesHandler::UpdateStartupPages,
- base::Unretained(this)));
-
- const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref(
- Profile::FromWebUI(web_ui())->GetPrefs());
- startup_custom_pages_table_model_.SetURLs(startup_pref.urls);
+ AllowJavascript();
}
void StartupPagesHandler::HandleRemoveStartupPage(const base::ListValue* args) {

Powered by Google App Engine
This is Rietveld 408576698