| Index: content/browser/frame_host/navigation_controller_impl_browsertest.cc
|
| diff --git a/content/browser/frame_host/navigation_controller_impl_browsertest.cc b/content/browser/frame_host/navigation_controller_impl_browsertest.cc
|
| index d0c797accff73530650ccb7b55f8132b3edaa7e2..75b8e0912f53a6c5e14cc6c2b5eb865f4c7e22ed 100644
|
| --- a/content/browser/frame_host/navigation_controller_impl_browsertest.cc
|
| +++ b/content/browser/frame_host/navigation_controller_impl_browsertest.cc
|
| @@ -1207,96 +1207,4 @@
|
| }
|
| }
|
|
|
| -namespace {
|
| -
|
| -class FailureWatcher : public WebContentsObserver {
|
| - public:
|
| - // Observes failure for the specified |node|.
|
| - explicit FailureWatcher(FrameTreeNode* node)
|
| - : WebContentsObserver(
|
| - node->current_frame_host()->delegate()->GetAsWebContents()),
|
| - frame_tree_node_id_(node->frame_tree_node_id()),
|
| - message_loop_runner_(new MessageLoopRunner) {}
|
| -
|
| - void Wait() {
|
| - message_loop_runner_->Run();
|
| - }
|
| -
|
| - private:
|
| - void DidFailLoad(RenderFrameHost* render_frame_host,
|
| - const GURL& validated_url,
|
| - int error_code,
|
| - const base::string16& error_description) override {
|
| - RenderFrameHostImpl* rfh =
|
| - static_cast<RenderFrameHostImpl*>(render_frame_host);
|
| - if (rfh->frame_tree_node()->frame_tree_node_id() != frame_tree_node_id_)
|
| - return;
|
| -
|
| - message_loop_runner_->Quit();
|
| - }
|
| -
|
| - void DidFailProvisionalLoad(
|
| - RenderFrameHost* render_frame_host,
|
| - const GURL& validated_url,
|
| - int error_code,
|
| - const base::string16& error_description) override {
|
| - RenderFrameHostImpl* rfh =
|
| - static_cast<RenderFrameHostImpl*>(render_frame_host);
|
| - if (rfh->frame_tree_node()->frame_tree_node_id() != frame_tree_node_id_)
|
| - return;
|
| -
|
| - message_loop_runner_->Quit();
|
| - }
|
| -
|
| - // The id of the FrameTreeNode whose navigations to observe.
|
| - int frame_tree_node_id_;
|
| -
|
| - // The MessageLoopRunner used to spin the message loop.
|
| - scoped_refptr<MessageLoopRunner> message_loop_runner_;
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| - StopCausesFailureDespiteJavaScriptURL) {
|
| - NavigationControllerImpl& controller =
|
| - static_cast<NavigationControllerImpl&>(
|
| - shell()->web_contents()->GetController());
|
| -
|
| - FrameTreeNode* root =
|
| - static_cast<WebContentsImpl*>(shell()->web_contents())->
|
| - GetFrameTree()->root();
|
| -
|
| - // Start with a normal page.
|
| - GURL url1(embedded_test_server()->GetURL(
|
| - "/navigation_controller/simple_page_1.html"));
|
| - EXPECT_TRUE(NavigateToURL(shell(), url1));
|
| -
|
| - // Have the user decide to go to a different page which is very slow.
|
| - StallDelegate stall_delegate;
|
| - ResourceDispatcherHost::Get()->SetDelegate(&stall_delegate);
|
| - GURL url2(embedded_test_server()->GetURL(
|
| - "/navigation_controller/simple_page_2.html"));
|
| - controller.LoadURL(url2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
|
| -
|
| - // That should be the pending entry.
|
| - NavigationEntryImpl* entry = controller.GetPendingEntry();
|
| - ASSERT_NE(nullptr, entry);
|
| - EXPECT_EQ(url2, entry->GetURL());
|
| -
|
| - // Loading a JavaScript URL shouldn't affect the ability to stop.
|
| - {
|
| - FailureWatcher watcher(root);
|
| - GURL js("javascript:(function(){})()");
|
| - controller.LoadURL(js, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
|
| - // This LoadURL ends up purging the pending entry, which is why this is
|
| - // tricky.
|
| - EXPECT_EQ(nullptr, controller.GetPendingEntry());
|
| - shell()->web_contents()->Stop();
|
| - watcher.Wait();
|
| - }
|
| -
|
| - ResourceDispatcherHost::Get()->SetDelegate(nullptr);
|
| -}
|
| -
|
| } // namespace content
|
|
|