| Index: content/browser/frame_host/interstitial_page_impl.cc
|
| diff --git a/content/browser/frame_host/interstitial_page_impl.cc b/content/browser/frame_host/interstitial_page_impl.cc
|
| index 962f5f3bbd3c821421b0763220ef30256ca234e1..1ad4907bda546a2f637cfe9f7be0ad4eddbcecfc 100644
|
| --- a/content/browser/frame_host/interstitial_page_impl.cc
|
| +++ b/content/browser/frame_host/interstitial_page_impl.cc
|
| @@ -164,6 +164,7 @@
|
| original_child_id_(web_contents->GetRenderProcessHost()->GetID()),
|
| original_rvh_id_(web_contents->GetRenderViewHost()->GetRoutingID()),
|
| should_revert_web_contents_title_(false),
|
| + web_contents_was_loading_(false),
|
| resource_dispatcher_host_notified_(false),
|
| rvh_delegate_view_(new InterstitialPageRVHDelegateView(this)),
|
| create_view_(true),
|
| @@ -517,6 +518,14 @@
|
| // Hide the original RVH since we're showing the interstitial instead.
|
| rwh_view->Hide();
|
| }
|
| +
|
| + // Notify the tab we are not loading so the throbber is stopped. It also
|
| + // causes a WebContentsObserver::DidStopLoading callback that the
|
| + // AutomationProvider (used by the UI tests) expects to consider a navigation
|
| + // as complete. Without this, navigating in a UI test to a URL that triggers
|
| + // an interstitial would hang.
|
| + web_contents_was_loading_ = controller_->delegate()->IsLoading();
|
| + controller_->delegate()->SetIsLoading(false, true, NULL);
|
| }
|
|
|
| RendererPreferences InterstitialPageImpl::GetRendererPrefs(
|
| @@ -625,7 +634,9 @@
|
| Disable();
|
| action_taken_ = PROCEED_ACTION;
|
|
|
| - controller_->delegate()->DidProceedOnInterstitial();
|
| + // Resumes the throbber, if applicable.
|
| + if (web_contents_was_loading_)
|
| + controller_->delegate()->SetIsLoading(true, true, NULL);
|
|
|
| // If this is a new navigation, the old page is going away, so we cancel any
|
| // blocked requests for it. If it is not a new navigation, then it means the
|
|
|