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

Side by Side Diff: chrome/browser/ui/webui/options2/options_ui2.cc

Issue 10154004: re-use WebUIs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix reload DCHECKs 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/options2/options_ui2.h" 5 #include "chrome/browser/ui/webui/options2/options_ui2.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 } 324 }
325 325
326 void OptionsUI::RenderViewCreated(RenderViewHost* render_view_host) { 326 void OptionsUI::RenderViewCreated(RenderViewHost* render_view_host) {
327 SetCommandLineString(render_view_host); 327 SetCommandLineString(render_view_host);
328 } 328 }
329 329
330 void OptionsUI::RenderViewReused(RenderViewHost* render_view_host) { 330 void OptionsUI::RenderViewReused(RenderViewHost* render_view_host) {
331 SetCommandLineString(render_view_host); 331 SetCommandLineString(render_view_host);
332 } 332 }
333 333
334 void OptionsUI::DidBecomeActiveForReusedRenderView() {
335 // When the renderer is re-used (e.g., for back/forward navigation within
336 // options), the handlers are torn down and rebuilt, so are no longer
337 // initialized, but the web page's DOM may remain intact, in which case onload
338 // won't fire to initilize the handlers. To make sure initialization always
339 // happens, call reinitializeCore (which is a no-op unless the DOM was already
340 // initialized).
341 web_ui()->CallJavascriptFunction("OptionsPage.reinitializeCore");
342 }
343
344 // static 334 // static
345 void OptionsUI::ProcessAutocompleteSuggestions( 335 void OptionsUI::ProcessAutocompleteSuggestions(
346 const AutocompleteResult& autocompleteResult, 336 const AutocompleteResult& autocompleteResult,
347 ListValue * const suggestions) { 337 ListValue * const suggestions) {
348 for (size_t i = 0; i < autocompleteResult.size(); ++i) { 338 for (size_t i = 0; i < autocompleteResult.size(); ++i) {
349 const AutocompleteMatch& match = autocompleteResult.match_at(i); 339 const AutocompleteMatch& match = autocompleteResult.match_at(i);
350 AutocompleteMatch::Type type = match.type; 340 AutocompleteMatch::Type type = match.type;
351 if (type != AutocompleteMatch::HISTORY_URL && 341 if (type != AutocompleteMatch::HISTORY_URL &&
352 type != AutocompleteMatch::HISTORY_TITLE && 342 type != AutocompleteMatch::HISTORY_TITLE &&
353 type != AutocompleteMatch::HISTORY_BODY && 343 type != AutocompleteMatch::HISTORY_BODY &&
(...skipping 11 matching lines...) Expand all
365 // static 355 // static
366 RefCountedMemory* OptionsUI::GetFaviconResourceBytes() { 356 RefCountedMemory* OptionsUI::GetFaviconResourceBytes() {
367 return ResourceBundle::GetSharedInstance(). 357 return ResourceBundle::GetSharedInstance().
368 LoadDataResourceBytes(IDR_SETTINGS_FAVICON); 358 LoadDataResourceBytes(IDR_SETTINGS_FAVICON);
369 } 359 }
370 360
371 void OptionsUI::InitializeHandlers() { 361 void OptionsUI::InitializeHandlers() {
372 Profile* profile = Profile::FromWebUI(web_ui()); 362 Profile* profile = Profile::FromWebUI(web_ui());
373 DCHECK(!profile->IsOffTheRecord() || Profile::IsGuestSession()); 363 DCHECK(!profile->IsOffTheRecord() || Profile::IsGuestSession());
374 364
375 // The reinitialize call from DidBecomeActiveForReusedRenderView end up being 365 // A new web page DOM has been brought up in an existing renderer, causing
376 // delivered after a new web page DOM has been brought up in an existing 366 // this method to be called twice. If that happens, ignore the second call.
377 // renderer (due to IPC delays), causing this method to be called twice. If
378 // that happens, ignore the second call.
379 if (!initialized_handlers_) { 367 if (!initialized_handlers_) {
380 for (size_t i = 0; i < handlers_.size(); ++i) 368 for (size_t i = 0; i < handlers_.size(); ++i)
381 handlers_[i]->InitializeHandler(); 369 handlers_[i]->InitializeHandler();
382 initialized_handlers_ = true; 370 initialized_handlers_ = true;
383 } 371 }
384 372
385 // Always initialize the page as when handlers are left over we still need to 373 // Always initialize the page as when handlers are left over we still need to
386 // do various things like show/hide sections and send data to the Javascript. 374 // do various things like show/hide sections and send data to the Javascript.
387 for (size_t i = 0; i < handlers_.size(); ++i) 375 for (size_t i = 0; i < handlers_.size(); ++i)
388 handlers_[i]->InitializePage(); 376 handlers_[i]->InitializePage();
(...skipping 24 matching lines...) Expand all
413 WideToASCII(CommandLine::ForCurrentProcess()->GetCommandLineString()); 401 WideToASCII(CommandLine::ForCurrentProcess()->GetCommandLineString());
414 #else 402 #else
415 command_line_string = 403 command_line_string =
416 CommandLine::ForCurrentProcess()->GetCommandLineString(); 404 CommandLine::ForCurrentProcess()->GetCommandLineString();
417 #endif 405 #endif
418 406
419 render_view_host->SetWebUIProperty("commandLineString", command_line_string); 407 render_view_host->SetWebUIProperty("commandLineString", command_line_string);
420 } 408 }
421 409
422 } // namespace options2 410 } // namespace options2
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698