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

Unified Diff: chrome/browser/ui/webui/options2/options_ui2.cc

Issue 9994005: Separate handler initialization from page initialization (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: dbeam review Created 8 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/options2/options_ui2.cc
diff --git a/chrome/browser/ui/webui/options2/options_ui2.cc b/chrome/browser/ui/webui/options2/options_ui2.cc
index 50b39003a501954062d9667c53d958b3404f6ae2..9dd1aa44c9b20b57f1fdd64e158896fd650bc8d6 100644
--- a/chrome/browser/ui/webui/options2/options_ui2.cc
+++ b/chrome/browser/ui/webui/options2/options_ui2.cc
@@ -207,8 +207,7 @@ void OptionsPageUIHandler::RegisterTitle(DictionaryValue* localized_strings,
////////////////////////////////////////////////////////////////////////////////
OptionsUI::OptionsUI(content::WebUI* web_ui)
- : WebUIController(web_ui),
- initialized_handlers_(false) {
+ : WebUIController(web_ui) {
DictionaryValue* localized_strings = new DictionaryValue();
CoreOptionsHandler* core_handler;
@@ -293,6 +292,7 @@ OptionsUI::OptionsUI(content::WebUI* web_ui)
// Set up the chrome://settings-frame/ source.
Profile* profile = Profile::FromWebUI(web_ui);
+ DCHECK(!profile->IsOffTheRecord() || Profile::IsGuestSession());
Dan Beam 2012/04/06 03:38:16 what's this from?
Tyler Breisacher (Chromium) 2012/04/06 16:59:44 It was in the old InitializeHandlers method. I'm n
profile->GetChromeURLDataManager()->AddDataSource(html_source);
// Set up the chrome://theme/ source.
@@ -309,6 +309,7 @@ OptionsUI::OptionsUI(content::WebUI* web_ui)
new chromeos::system::PointerDeviceObserver());
pointer_device_observer_->AddObserver(browser_options_handler);
pointer_device_observer_->AddObserver(pointer_handler);
+ pointer_device_observer_->Init();
#endif
}
@@ -326,16 +327,6 @@ void OptionsUI::RenderViewReused(RenderViewHost* render_view_host) {
SetCommandLineString(render_view_host);
}
-void OptionsUI::DidBecomeActiveForReusedRenderView() {
- // When the renderer is re-used (e.g., for back/forward navigation within
- // options), the handlers are torn down and rebuilt, so are no longer
- // initialized, but the web page's DOM may remain intact, in which case onload
- // won't fire to initilize the handlers. To make sure initialization always
- // happens, call reinitializeCore (which is a no-op unless the DOM was already
- // initialized).
- web_ui()->CallJavascriptFunction("OptionsPage.reinitializeCore");
-}
-
// static
void OptionsUI::ProcessAutocompleteSuggestions(
const AutocompleteResult& autocompleteResult,
@@ -363,28 +354,11 @@ RefCountedMemory* OptionsUI::GetFaviconResourceBytes() {
LoadDataResourceBytes(IDR_SETTINGS_FAVICON);
}
-void OptionsUI::InitializeHandlers() {
- Profile* profile = Profile::FromWebUI(web_ui());
- DCHECK(!profile->IsOffTheRecord() || Profile::IsGuestSession());
-
- // The reinitialize call from DidBecomeActiveForReusedRenderView end up being
- // delivered after a new web page DOM has been brought up in an existing
- // renderer (due to IPC delays), causing this method to be called twice. If
- // that happens, ignore the second call.
- if (!initialized_handlers_) {
- for (size_t i = 0; i < handlers_.size(); ++i)
- handlers_[i]->InitializeHandler();
- initialized_handlers_ = true;
- }
-
+void OptionsUI::InitializePages() {
// Always initialize the page as when handlers are left over we still need to
// do various things like show/hide sections and send data to the Javascript.
for (size_t i = 0; i < handlers_.size(); ++i)
handlers_[i]->InitializePage();
-
-#if defined(OS_CHROMEOS)
- pointer_device_observer_->Init();
-#endif
}
void OptionsUI::AddOptionsPageUIHandler(DictionaryValue* localized_strings,
@@ -393,8 +367,9 @@ void OptionsUI::AddOptionsPageUIHandler(DictionaryValue* localized_strings,
DCHECK(handler.get());
// Add only if handler's service is enabled.
if (handler->IsEnabled()) {
- // Add handler to the list and also pass the ownership.
+ // Add handler to the list
web_ui()->AddMessageHandler(handler.release());
+ handler_raw->InitializeHandler();
handler_raw->GetLocalizedValues(localized_strings);
handlers_.push_back(handler_raw);
}
« no previous file with comments | « chrome/browser/ui/webui/options2/options_ui2.h ('k') | chrome/browser/ui/webui/options2/search_engine_manager_handler2.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698