| OLD | NEW |
| 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 <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 // the WebContents one, so we can enforce no navigation policy here. | 171 // the WebContents one, so we can enforce no navigation policy here. |
| 172 // While we get the code to a point to do this, pass NULL for it. | 172 // While we get the code to a point to do this, pass NULL for it. |
| 173 // TODO(creis): We will also need to pass delegates for the RVHM as we | 173 // TODO(creis): We will also need to pass delegates for the RVHM as we |
| 174 // start to use it. | 174 // start to use it. |
| 175 frame_tree_(new InterstitialPageNavigatorImpl(this, controller_), | 175 frame_tree_(new InterstitialPageNavigatorImpl(this, controller_), |
| 176 this, this, this, | 176 this, this, this, |
| 177 static_cast<WebContentsImpl*>(web_contents)), | 177 static_cast<WebContentsImpl*>(web_contents)), |
| 178 original_child_id_(web_contents->GetRenderProcessHost()->GetID()), | 178 original_child_id_(web_contents->GetRenderProcessHost()->GetID()), |
| 179 original_rvh_id_(web_contents->GetRenderViewHost()->GetRoutingID()), | 179 original_rvh_id_(web_contents->GetRenderViewHost()->GetRoutingID()), |
| 180 should_revert_web_contents_title_(false), | 180 should_revert_web_contents_title_(false), |
| 181 web_contents_was_loading_(false), | |
| 182 resource_dispatcher_host_notified_(false), | 181 resource_dispatcher_host_notified_(false), |
| 183 rvh_delegate_view_(new InterstitialPageRVHDelegateView(this)), | 182 rvh_delegate_view_(new InterstitialPageRVHDelegateView(this)), |
| 184 create_view_(true), | 183 create_view_(true), |
| 185 delegate_(delegate), | 184 delegate_(delegate), |
| 186 weak_ptr_factory_(this) { | 185 weak_ptr_factory_(this) { |
| 187 InitInterstitialPageMap(); | 186 InitInterstitialPageMap(); |
| 188 } | 187 } |
| 189 | 188 |
| 190 InterstitialPageImpl::~InterstitialPageImpl() { | 189 InterstitialPageImpl::~InterstitialPageImpl() { |
| 191 } | 190 } |
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 | 516 |
| 518 // The RenderViewHost may already have crashed before we even get here. | 517 // The RenderViewHost may already have crashed before we even get here. |
| 519 if (rwh_view) { | 518 if (rwh_view) { |
| 520 // If the page has focus, focus the interstitial. | 519 // If the page has focus, focus the interstitial. |
| 521 if (rwh_view->HasFocus()) | 520 if (rwh_view->HasFocus()) |
| 522 Focus(); | 521 Focus(); |
| 523 | 522 |
| 524 // Hide the original RVH since we're showing the interstitial instead. | 523 // Hide the original RVH since we're showing the interstitial instead. |
| 525 rwh_view->Hide(); | 524 rwh_view->Hide(); |
| 526 } | 525 } |
| 527 | |
| 528 // Notify the tab we are not loading so the throbber is stopped. It also | |
| 529 // causes a WebContentsObserver::DidStopLoading callback that the | |
| 530 // AutomationProvider (used by the UI tests) expects to consider a navigation | |
| 531 // as complete. Without this, navigating in a UI test to a URL that triggers | |
| 532 // an interstitial would hang. | |
| 533 web_contents_was_loading_ = controller_->delegate()->IsLoading(); | |
| 534 controller_->delegate()->SetIsLoading(false, true, NULL); | |
| 535 } | 526 } |
| 536 | 527 |
| 537 RendererPreferences InterstitialPageImpl::GetRendererPrefs( | 528 RendererPreferences InterstitialPageImpl::GetRendererPrefs( |
| 538 BrowserContext* browser_context) const { | 529 BrowserContext* browser_context) const { |
| 539 delegate_->OverrideRendererPrefs(&renderer_preferences_); | 530 delegate_->OverrideRendererPrefs(&renderer_preferences_); |
| 540 return renderer_preferences_; | 531 return renderer_preferences_; |
| 541 } | 532 } |
| 542 | 533 |
| 543 void InterstitialPageImpl::RenderWidgetDeleted( | 534 void InterstitialPageImpl::RenderWidgetDeleted( |
| 544 RenderWidgetHostImpl* render_widget_host) { | 535 RenderWidgetHostImpl* render_widget_host) { |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 633 if (!render_view_host_) | 624 if (!render_view_host_) |
| 634 return; | 625 return; |
| 635 | 626 |
| 636 if (action_taken_ != NO_ACTION) { | 627 if (action_taken_ != NO_ACTION) { |
| 637 NOTREACHED(); | 628 NOTREACHED(); |
| 638 return; | 629 return; |
| 639 } | 630 } |
| 640 Disable(); | 631 Disable(); |
| 641 action_taken_ = PROCEED_ACTION; | 632 action_taken_ = PROCEED_ACTION; |
| 642 | 633 |
| 643 // Resumes the throbber, if applicable. | 634 controller_->delegate()->DidProceedOnInterstitial(); |
| 644 if (web_contents_was_loading_) | |
| 645 controller_->delegate()->SetIsLoading(true, true, NULL); | |
| 646 | 635 |
| 647 // If this is a new navigation, the old page is going away, so we cancel any | 636 // If this is a new navigation, the old page is going away, so we cancel any |
| 648 // blocked requests for it. If it is not a new navigation, then it means the | 637 // blocked requests for it. If it is not a new navigation, then it means the |
| 649 // interstitial was shown as a result of a resource loading in the page. | 638 // interstitial was shown as a result of a resource loading in the page. |
| 650 // Since the user wants to proceed, we'll let any blocked request go through. | 639 // Since the user wants to proceed, we'll let any blocked request go through. |
| 651 if (new_navigation_) | 640 if (new_navigation_) |
| 652 TakeActionOnResourceDispatcher(CANCEL); | 641 TakeActionOnResourceDispatcher(CANCEL); |
| 653 else | 642 else |
| 654 TakeActionOnResourceDispatcher(RESUME); | 643 TakeActionOnResourceDispatcher(RESUME); |
| 655 | 644 |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 941 void InterstitialPageImpl::UnderlyingContentObserver::NavigationEntryCommitted( | 930 void InterstitialPageImpl::UnderlyingContentObserver::NavigationEntryCommitted( |
| 942 const LoadCommittedDetails& load_details) { | 931 const LoadCommittedDetails& load_details) { |
| 943 interstitial_->OnNavigatingAwayOrTabClosing(); | 932 interstitial_->OnNavigatingAwayOrTabClosing(); |
| 944 } | 933 } |
| 945 | 934 |
| 946 void InterstitialPageImpl::UnderlyingContentObserver::WebContentsDestroyed() { | 935 void InterstitialPageImpl::UnderlyingContentObserver::WebContentsDestroyed() { |
| 947 interstitial_->OnNavigatingAwayOrTabClosing(); | 936 interstitial_->OnNavigatingAwayOrTabClosing(); |
| 948 } | 937 } |
| 949 | 938 |
| 950 } // namespace content | 939 } // namespace content |
| OLD | NEW |