| 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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 // the WebContents one, so we can enforce no navigation policy here. | 179 // the WebContents one, so we can enforce no navigation policy here. |
| 180 // While we get the code to a point to do this, pass NULL for it. | 180 // While we get the code to a point to do this, pass NULL for it. |
| 181 // TODO(creis): We will also need to pass delegates for the RVHM as we | 181 // TODO(creis): We will also need to pass delegates for the RVHM as we |
| 182 // start to use it. | 182 // start to use it. |
| 183 frame_tree_(new InterstitialPageNavigatorImpl(this, controller_), | 183 frame_tree_(new InterstitialPageNavigatorImpl(this, controller_), |
| 184 this, this, this, | 184 this, this, this, |
| 185 static_cast<WebContentsImpl*>(web_contents)), | 185 static_cast<WebContentsImpl*>(web_contents)), |
| 186 original_child_id_(web_contents->GetRenderProcessHost()->GetID()), | 186 original_child_id_(web_contents->GetRenderProcessHost()->GetID()), |
| 187 original_rvh_id_(web_contents->GetRenderViewHost()->GetRoutingID()), | 187 original_rvh_id_(web_contents->GetRenderViewHost()->GetRoutingID()), |
| 188 should_revert_web_contents_title_(false), | 188 should_revert_web_contents_title_(false), |
| 189 web_contents_was_loading_(false), | |
| 190 resource_dispatcher_host_notified_(false), | 189 resource_dispatcher_host_notified_(false), |
| 191 rvh_delegate_view_(new InterstitialPageRVHDelegateView(this)), | 190 rvh_delegate_view_(new InterstitialPageRVHDelegateView(this)), |
| 192 create_view_(true), | 191 create_view_(true), |
| 193 delegate_(delegate), | 192 delegate_(delegate), |
| 194 weak_ptr_factory_(this) { | 193 weak_ptr_factory_(this) { |
| 195 InitInterstitialPageMap(); | 194 InitInterstitialPageMap(); |
| 196 } | 195 } |
| 197 | 196 |
| 198 InterstitialPageImpl::~InterstitialPageImpl() { | 197 InterstitialPageImpl::~InterstitialPageImpl() { |
| 199 } | 198 } |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 | 532 |
| 534 // The RenderViewHost may already have crashed before we even get here. | 533 // The RenderViewHost may already have crashed before we even get here. |
| 535 if (rwh_view) { | 534 if (rwh_view) { |
| 536 // If the page has focus, focus the interstitial. | 535 // If the page has focus, focus the interstitial. |
| 537 if (rwh_view->HasFocus()) | 536 if (rwh_view->HasFocus()) |
| 538 Focus(); | 537 Focus(); |
| 539 | 538 |
| 540 // Hide the original RVH since we're showing the interstitial instead. | 539 // Hide the original RVH since we're showing the interstitial instead. |
| 541 rwh_view->Hide(); | 540 rwh_view->Hide(); |
| 542 } | 541 } |
| 543 | |
| 544 // Notify the tab we are not loading so the throbber is stopped. It also | |
| 545 // causes a WebContentsObserver::DidStopLoading callback that the | |
| 546 // AutomationProvider (used by the UI tests) expects to consider a navigation | |
| 547 // as complete. Without this, navigating in a UI test to a URL that triggers | |
| 548 // an interstitial would hang. | |
| 549 web_contents_was_loading_ = controller_->delegate()->IsLoading(); | |
| 550 controller_->delegate()->SetIsLoading(false, true, NULL); | |
| 551 } | 542 } |
| 552 | 543 |
| 553 RendererPreferences InterstitialPageImpl::GetRendererPrefs( | 544 RendererPreferences InterstitialPageImpl::GetRendererPrefs( |
| 554 BrowserContext* browser_context) const { | 545 BrowserContext* browser_context) const { |
| 555 delegate_->OverrideRendererPrefs(&renderer_preferences_); | 546 delegate_->OverrideRendererPrefs(&renderer_preferences_); |
| 556 return renderer_preferences_; | 547 return renderer_preferences_; |
| 557 } | 548 } |
| 558 | 549 |
| 559 void InterstitialPageImpl::RenderWidgetDeleted( | 550 void InterstitialPageImpl::RenderWidgetDeleted( |
| 560 RenderWidgetHostImpl* render_widget_host) { | 551 RenderWidgetHostImpl* render_widget_host) { |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 649 if (!render_view_host_) | 640 if (!render_view_host_) |
| 650 return; | 641 return; |
| 651 | 642 |
| 652 if (action_taken_ != NO_ACTION) { | 643 if (action_taken_ != NO_ACTION) { |
| 653 NOTREACHED(); | 644 NOTREACHED(); |
| 654 return; | 645 return; |
| 655 } | 646 } |
| 656 Disable(); | 647 Disable(); |
| 657 action_taken_ = PROCEED_ACTION; | 648 action_taken_ = PROCEED_ACTION; |
| 658 | 649 |
| 659 // Resumes the throbber, if applicable. | 650 controller_->delegate()->DidProceedOnInterstitial(); |
| 660 if (web_contents_was_loading_) | |
| 661 controller_->delegate()->SetIsLoading(true, true, NULL); | |
| 662 | 651 |
| 663 // If this is a new navigation, the old page is going away, so we cancel any | 652 // If this is a new navigation, the old page is going away, so we cancel any |
| 664 // blocked requests for it. If it is not a new navigation, then it means the | 653 // blocked requests for it. If it is not a new navigation, then it means the |
| 665 // interstitial was shown as a result of a resource loading in the page. | 654 // interstitial was shown as a result of a resource loading in the page. |
| 666 // Since the user wants to proceed, we'll let any blocked request go through. | 655 // Since the user wants to proceed, we'll let any blocked request go through. |
| 667 if (new_navigation_) | 656 if (new_navigation_) |
| 668 TakeActionOnResourceDispatcher(CANCEL); | 657 TakeActionOnResourceDispatcher(CANCEL); |
| 669 else | 658 else |
| 670 TakeActionOnResourceDispatcher(RESUME); | 659 TakeActionOnResourceDispatcher(RESUME); |
| 671 | 660 |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 957 void InterstitialPageImpl::UnderlyingContentObserver::NavigationEntryCommitted( | 946 void InterstitialPageImpl::UnderlyingContentObserver::NavigationEntryCommitted( |
| 958 const LoadCommittedDetails& load_details) { | 947 const LoadCommittedDetails& load_details) { |
| 959 interstitial_->OnNavigatingAwayOrTabClosing(); | 948 interstitial_->OnNavigatingAwayOrTabClosing(); |
| 960 } | 949 } |
| 961 | 950 |
| 962 void InterstitialPageImpl::UnderlyingContentObserver::WebContentsDestroyed() { | 951 void InterstitialPageImpl::UnderlyingContentObserver::WebContentsDestroyed() { |
| 963 interstitial_->OnNavigatingAwayOrTabClosing(); | 952 interstitial_->OnNavigatingAwayOrTabClosing(); |
| 964 } | 953 } |
| 965 | 954 |
| 966 } // namespace content | 955 } // namespace content |
| OLD | NEW |