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

Side by Side Diff: content/browser/browser_side_navigation_browsertest.cc

Issue 715203004: PlzNavigate: Add a browser test for basic navigations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added a browser test for renderer initiated navigations Created 6 years 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
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/command_line.h"
6 #include "content/browser/web_contents/web_contents_impl.h"
7 #include "content/public/browser/web_contents.h"
8 #include "content/public/common/content_switches.h"
9 #include "content/public/test/browser_test_utils.h"
10 #include "content/public/test/content_browser_test.h"
11 #include "content/public/test/content_browser_test_utils.h"
12 #include "content/shell/browser/shell.h"
13 #include "content/test/content_browser_test_utils_internal.h"
14 #include "net/dns/mock_host_resolver.h"
15 #include "net/test/embedded_test_server/embedded_test_server.h"
16 #include "url/gurl.h"
17
18 namespace content {
19
20 class BrowserSideNavigationBrowserTest : public ContentBrowserTest {
21 public:
22 BrowserSideNavigationBrowserTest() {}
23
24 protected:
25 void SetUpCommandLine(base::CommandLine* command_line) override {
26 command_line->AppendSwitch(switches::kEnableBrowserSideNavigation);
27 }
28
29 void SetUpOnMainThread() override {
30 host_resolver()->AddRule("*", "127.0.0.1");
31 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
32 }
33 };
34
35 // Ensure that browser initiated basic navigations work with browser side
36 // navigation.
37 IN_PROC_BROWSER_TEST_F(BrowserSideNavigationBrowserTest,
38 BrowserInitiatedNavigations) {
39 // Perform a navigation with no live renderer.
40 TestNavigationWebContentsObserver observer1(shell()->web_contents());
41 GURL main_url1(embedded_test_server()->GetURL("/title1.html"));
42 NavigateToURL(shell(), main_url1);
43 EXPECT_EQ(main_url1, observer1.navigation_url());
44 EXPECT_TRUE(observer1.navigation_succeeded());
45
46 RenderFrameHost* initial_rfh =
47 static_cast<WebContentsImpl*>(shell()->web_contents())
48 ->GetFrameTree()->root()->current_frame_host();
49
50 // Perform a same site navigation.
51 TestNavigationWebContentsObserver observer2(shell()->web_contents());
nasko 2014/11/24 23:15:00 It will be a bit more readable if you scope each o
clamy 2014/11/26 12:47:42 Done.
52 GURL main_url2(embedded_test_server()->GetURL("/title2.html"));
53 NavigateToURL(shell(), main_url2);
54 EXPECT_EQ(main_url2, observer2.navigation_url());
55 EXPECT_TRUE(observer2.navigation_succeeded());
56
57 // The RenderFrameHost should not have changed.
58 EXPECT_EQ(initial_rfh, static_cast<WebContentsImpl*>(shell()->web_contents())
59 ->GetFrameTree()->root()->current_frame_host());
60
61 // Perform a cross-site navigation.
62 TestNavigationWebContentsObserver observer3(shell()->web_contents());
63 GURL main_url3 = embedded_test_server()->GetURL("foo.com", "/title3.html");
64 NavigateToURL(shell(), main_url3);
65 EXPECT_EQ(main_url3, observer3.navigation_url());
66 EXPECT_TRUE(observer3.navigation_succeeded());
67
68 // The RenderFrameHost should have changed.
69 EXPECT_NE(initial_rfh, static_cast<WebContentsImpl*>(shell()->web_contents())
70 ->GetFrameTree()->root()->current_frame_host());
71 }
72
73 // Ensure that renderer initiated basic navigations work with browser side
74 // navigation.
75 IN_PROC_BROWSER_TEST_F(BrowserSideNavigationBrowserTest,
76 RendererInitiatedNavigations) {
77 // Perform a navigation with no live renderer.
78 TestNavigationWebContentsObserver observer1(shell()->web_contents());
79 GURL main_url1(embedded_test_server()->GetURL("/simple_links.html"));
nasko 2014/11/24 23:15:00 Any reason why the page that already exists doesn'
clamy 2014/11/26 12:47:42 I wanted a simpler page with simple links, both sa
nasko 2014/11/26 16:00:33 Acknowledged.
80 NavigateToURL(shell(), main_url1);
81 EXPECT_EQ(main_url1, observer1.navigation_url());
82 EXPECT_TRUE(observer1.navigation_succeeded());
83
84 RenderFrameHost* initial_rfh =
85 static_cast<WebContentsImpl*>(shell()->web_contents())
86 ->GetFrameTree()->root()->current_frame_host();
87
88 // Simulate clicking on a same-site link.
89 TestNavigationWebContentsObserver observer2(shell()->web_contents());
90 GURL main_url2(embedded_test_server()->GetURL("/title2.html"));
91 bool success = false;
92 EXPECT_TRUE(ExecuteScriptAndExtractBool(
93 shell()->web_contents(),
94 "window.domAutomationController.send(clickSameSiteLink());", &success));
95 EXPECT_TRUE(success);
96 WaitForLoadStop(shell()->web_contents());
nasko 2014/11/24 23:15:00 alexmos@ has done some recent work to add return v
clamy 2014/11/26 12:47:42 Done.
97 EXPECT_EQ(main_url2, observer2.navigation_url());
98 EXPECT_TRUE(observer2.navigation_succeeded());
99
100 // The RenderFrameHost should not have changed.
101 EXPECT_EQ(initial_rfh, static_cast<WebContentsImpl*>(shell()->web_contents())
102 ->GetFrameTree()->root()->current_frame_host());
103
104 // Go to the main link page again.
105 TestNavigationWebContentsObserver observer3(shell()->web_contents());
106 NavigateToURL(shell(), main_url1);
107 EXPECT_EQ(main_url1, observer3.navigation_url());
108 EXPECT_TRUE(observer3.navigation_succeeded());
109
110 // The RenderFrameHost should not have changed.
111 EXPECT_EQ(initial_rfh, static_cast<WebContentsImpl*>(shell()->web_contents())
112 ->GetFrameTree()->root()->current_frame_host());
113
114 // Simulate clicking on a cross-site link.
115 TestNavigationWebContentsObserver observer4(shell()->web_contents());
116 GURL main_url3 = GURL("http://foo.com/title2.html");
117 success = false;
118 EXPECT_TRUE(ExecuteScriptAndExtractBool(
119 shell()->web_contents(),
120 "window.domAutomationController.send(clickCrossSiteLink());", &success));
121 EXPECT_TRUE(success);
122 WaitForLoadStop(shell()->web_contents());
123 EXPECT_EQ(main_url3, observer4.navigation_url());
124 EXPECT_TRUE(observer4.navigation_succeeded());
125
126 // The RenderFrameHost should have changed.
127 EXPECT_NE(initial_rfh, static_cast<WebContentsImpl*>(shell()->web_contents())
128 ->GetFrameTree()->root()->current_frame_host());
129 }
130
131 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/site_per_process_browsertest.cc » ('j') | content/renderer/render_frame_impl.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698