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

Side by Side Diff: content/browser/frame_host/interstitial_page_impl.cc

Issue 274883002: Move didReceiveTitle and related stuff to RenderFrame. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/browser/frame_host/interstitial_page_impl.h" 5 #include "content/browser/frame_host/interstitial_page_impl.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 } 406 }
407 407
408 void InterstitialPageImpl::RenderFrameCreated( 408 void InterstitialPageImpl::RenderFrameCreated(
409 RenderFrameHost* render_frame_host) { 409 RenderFrameHost* render_frame_host) {
410 // Note this is only for subframes in the interstitial, the notification for 410 // Note this is only for subframes in the interstitial, the notification for
411 // the main frame happens in RenderViewCreated. 411 // the main frame happens in RenderViewCreated.
412 controller_->delegate()->RenderFrameForInterstitialPageCreated( 412 controller_->delegate()->RenderFrameForInterstitialPageCreated(
413 render_frame_host); 413 render_frame_host);
414 } 414 }
415 415
416 void InterstitialPageImpl::UpdateTitle(
417 RenderFrameHost* render_frame_host,
418 int32 page_id,
419 const base::string16& title,
420 base::i18n::TextDirection title_direction) {
421 if (!enabled())
422 return;
423
424 RenderViewHost* render_view_host = render_frame_host->GetRenderViewHost();
425 DCHECK(render_view_host == render_view_host_);
426 NavigationEntry* entry = controller_->GetVisibleEntry();
427 if (!entry) {
428 // Crash reports from the field indicate this can be NULL.
429 // This is unexpected as InterstitialPages constructed with the
430 // new_navigation flag set to true create a transient navigation entry
431 // (that is returned as the active entry). And the only case so far of
432 // interstitial created with that flag set to false is with the
433 // SafeBrowsingBlockingPage, when the resource triggering the interstitial
434 // is a sub-resource, meaning the main page has already been loaded and a
435 // navigation entry should have been created.
436 NOTREACHED();
437 return;
438 }
439
440 // If this interstitial is shown on an existing navigation entry, we'll need
441 // to remember its title so we can revert to it when hidden.
442 if (!new_navigation_ && !should_revert_web_contents_title_) {
443 original_web_contents_title_ = entry->GetTitle();
444 should_revert_web_contents_title_ = true;
445 }
446 // TODO(evan): make use of title_direction.
447 // http://code.google.com/p/chromium/issues/detail?id=27094
448 entry->SetTitle(title);
449 controller_->delegate()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TITLE);
450 }
451
416 RenderViewHostDelegateView* InterstitialPageImpl::GetDelegateView() { 452 RenderViewHostDelegateView* InterstitialPageImpl::GetDelegateView() {
417 return rvh_delegate_view_.get(); 453 return rvh_delegate_view_.get();
418 } 454 }
419 455
420 const GURL& InterstitialPageImpl::GetMainFrameLastCommittedURL() const { 456 const GURL& InterstitialPageImpl::GetMainFrameLastCommittedURL() const {
421 return url_; 457 return url_;
422 } 458 }
423 459
424 void InterstitialPageImpl::RenderViewTerminated( 460 void InterstitialPageImpl::RenderViewTerminated(
425 RenderViewHost* render_view_host, 461 RenderViewHost* render_view_host,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 // Notify the tab we are not loading so the throbber is stopped. It also 506 // Notify the tab we are not loading so the throbber is stopped. It also
471 // causes a WebContentsObserver::DidStopLoading callback that the 507 // causes a WebContentsObserver::DidStopLoading callback that the
472 // AutomationProvider (used by the UI tests) expects to consider a navigation 508 // AutomationProvider (used by the UI tests) expects to consider a navigation
473 // as complete. Without this, navigating in a UI test to a URL that triggers 509 // as complete. Without this, navigating in a UI test to a URL that triggers
474 // an interstitial would hang. 510 // an interstitial would hang.
475 web_contents_was_loading_ = controller_->delegate()->IsLoading(); 511 web_contents_was_loading_ = controller_->delegate()->IsLoading();
476 controller_->delegate()->SetIsLoading( 512 controller_->delegate()->SetIsLoading(
477 controller_->delegate()->GetRenderViewHost(), false, true, NULL); 513 controller_->delegate()->GetRenderViewHost(), false, true, NULL);
478 } 514 }
479 515
480 void InterstitialPageImpl::UpdateTitle(
481 RenderViewHost* render_view_host,
482 int32 page_id,
483 const base::string16& title,
484 base::i18n::TextDirection title_direction) {
485 if (!enabled())
486 return;
487
488 DCHECK(render_view_host == render_view_host_);
489 NavigationEntry* entry = controller_->GetVisibleEntry();
490 if (!entry) {
491 // Crash reports from the field indicate this can be NULL.
492 // This is unexpected as InterstitialPages constructed with the
493 // new_navigation flag set to true create a transient navigation entry
494 // (that is returned as the active entry). And the only case so far of
495 // interstitial created with that flag set to false is with the
496 // SafeBrowsingBlockingPage, when the resource triggering the interstitial
497 // is a sub-resource, meaning the main page has already been loaded and a
498 // navigation entry should have been created.
499 NOTREACHED();
500 return;
501 }
502
503 // If this interstitial is shown on an existing navigation entry, we'll need
504 // to remember its title so we can revert to it when hidden.
505 if (!new_navigation_ && !should_revert_web_contents_title_) {
506 original_web_contents_title_ = entry->GetTitle();
507 should_revert_web_contents_title_ = true;
508 }
509 // TODO(evan): make use of title_direction.
510 // http://code.google.com/p/chromium/issues/detail?id=27094
511 entry->SetTitle(title);
512 controller_->delegate()->NotifyNavigationStateChanged(INVALIDATE_TYPE_TITLE);
513 }
514
515 RendererPreferences InterstitialPageImpl::GetRendererPrefs( 516 RendererPreferences InterstitialPageImpl::GetRendererPrefs(
516 BrowserContext* browser_context) const { 517 BrowserContext* browser_context) const {
517 delegate_->OverrideRendererPrefs(&renderer_preferences_); 518 delegate_->OverrideRendererPrefs(&renderer_preferences_);
518 return renderer_preferences_; 519 return renderer_preferences_;
519 } 520 }
520 521
521 WebPreferences InterstitialPageImpl::GetWebkitPrefs() { 522 WebPreferences InterstitialPageImpl::GetWebkitPrefs() {
522 if (!enabled()) 523 if (!enabled())
523 return WebPreferences(); 524 return WebPreferences();
524 525
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 915
915 web_contents->GetDelegateView()->TakeFocus(reverse); 916 web_contents->GetDelegateView()->TakeFocus(reverse);
916 } 917 }
917 918
918 void InterstitialPageImpl::InterstitialPageRVHDelegateView::OnFindReply( 919 void InterstitialPageImpl::InterstitialPageRVHDelegateView::OnFindReply(
919 int request_id, int number_of_matches, const gfx::Rect& selection_rect, 920 int request_id, int number_of_matches, const gfx::Rect& selection_rect,
920 int active_match_ordinal, bool final_update) { 921 int active_match_ordinal, bool final_update) {
921 } 922 }
922 923
923 } // namespace content 924 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698