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

Side by Side Diff: components/dom_distiller/content/browser/web_contents_main_frame_observer_unittest.cc

Issue 2663333004: Convert dom_distiller::WebContentsMainFrameObserver to use the new navigation callbacks. (Closed)
Patch Set: undo testing change Created 3 years, 10 months 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/dom_distiller/content/browser/web_contents_main_frame_obser ver.h" 5 #include "components/dom_distiller/content/browser/web_contents_main_frame_obser ver.h"
6 6
7 #include "content/public/browser/navigation_details.h" 7 #include "content/public/browser/navigation_handle.h"
8 #include "content/public/browser/render_frame_host.h" 8 #include "content/public/browser/render_frame_host.h"
9 #include "content/public/browser/web_contents.h" 9 #include "content/public/browser/web_contents.h"
10 #include "content/public/browser/web_contents_observer.h" 10 #include "content/public/browser/web_contents_observer.h"
11 #include "content/public/browser/web_contents_user_data.h" 11 #include "content/public/browser/web_contents_user_data.h"
12 #include "content/public/test/test_renderer_host.h" 12 #include "content/public/test/test_renderer_host.h"
13 13
14 namespace dom_distiller { 14 namespace dom_distiller {
15 15
16 class WebContentsMainFrameObserverTest 16 class WebContentsMainFrameObserverTest
17 : public content::RenderViewHostTestHarness { 17 : public content::RenderViewHostTestHarness {
18 public:
18 void SetUp() override { 19 void SetUp() override {
19 content::RenderViewHostTestHarness::SetUp(); 20 content::RenderViewHostTestHarness::SetUp();
21 // This needed to keep the WebContentsObserverSanityChecker checks happy for
22 // when AppendChild is called.
23 NavigateAndCommit(GURL("about:blank"));
20 dom_distiller::WebContentsMainFrameObserver::CreateForWebContents( 24 dom_distiller::WebContentsMainFrameObserver::CreateForWebContents(
21 web_contents()); 25 web_contents());
22 main_frame_observer_ = 26 main_frame_observer_ =
23 WebContentsMainFrameObserver::FromWebContents(web_contents()); 27 WebContentsMainFrameObserver::FromWebContents(web_contents());
24 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame()); 28 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame());
25 } 29 }
26 30
31 void Navigate(bool main_frame, bool in_page) {
32 content::RenderFrameHost* rfh = main_rfh();
33 content::RenderFrameHostTester* rfh_tester =
34 content::RenderFrameHostTester::For(rfh);
35 if (!main_frame)
36 rfh = rfh_tester->AppendChild("subframe");
37 std::unique_ptr<content::NavigationHandle> navigation_handle =
38 content::NavigationHandle::CreateNavigationHandleForTesting(
39 GURL(), rfh, true, net::OK, in_page);
40 // Destructor calls DidFinishNavigation.
41 }
42
27 protected: 43 protected:
28 WebContentsMainFrameObserver* main_frame_observer_; // weak 44 WebContentsMainFrameObserver* main_frame_observer_; // weak
29 }; 45 };
30 46
31 TEST_F(WebContentsMainFrameObserverTest, ListensForMainFrameNavigation) { 47 TEST_F(WebContentsMainFrameObserverTest, ListensForMainFrameNavigation) {
32 content::LoadCommittedDetails details = content::LoadCommittedDetails(); 48 Navigate(true, false);
33 details.is_main_frame = true;
34 details.is_in_page = false;
35 content::FrameNavigateParams params = content::FrameNavigateParams();
36 main_frame_observer_->DidNavigateMainFrame(details, params);
37 ASSERT_TRUE(main_frame_observer_->is_initialized()); 49 ASSERT_TRUE(main_frame_observer_->is_initialized());
38 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame()); 50 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame());
39 51
40 main_frame_observer_->DocumentLoadedInFrame(main_rfh()); 52 main_frame_observer_->DocumentLoadedInFrame(main_rfh());
41 ASSERT_TRUE(main_frame_observer_->is_document_loaded_in_main_frame()); 53 ASSERT_TRUE(main_frame_observer_->is_document_loaded_in_main_frame());
42 } 54 }
43 55
44 TEST_F(WebContentsMainFrameObserverTest, IgnoresChildFrameNavigation) { 56 TEST_F(WebContentsMainFrameObserverTest, IgnoresChildFrameNavigation) {
45 content::LoadCommittedDetails details = content::LoadCommittedDetails(); 57 Navigate(false, false);
46 details.is_main_frame = false;
47 details.is_in_page = false;
48 content::FrameNavigateParams params = content::FrameNavigateParams();
49 main_frame_observer_->DidNavigateMainFrame(details, params);
50 ASSERT_FALSE(main_frame_observer_->is_initialized()); 58 ASSERT_FALSE(main_frame_observer_->is_initialized());
51 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame()); 59 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame());
52 } 60 }
53 61
54 TEST_F(WebContentsMainFrameObserverTest, IgnoresInPageNavigation) { 62 TEST_F(WebContentsMainFrameObserverTest, IgnoresInPageNavigation) {
55 content::LoadCommittedDetails details = content::LoadCommittedDetails(); 63 Navigate(true, true);
56 details.is_main_frame = true;
57 details.is_in_page = true;
58 content::FrameNavigateParams params = content::FrameNavigateParams();
59 main_frame_observer_->DidNavigateMainFrame(details, params);
60 ASSERT_FALSE(main_frame_observer_->is_initialized()); 64 ASSERT_FALSE(main_frame_observer_->is_initialized());
61 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame()); 65 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame());
62 } 66 }
63 67
64 TEST_F(WebContentsMainFrameObserverTest, 68 TEST_F(WebContentsMainFrameObserverTest,
65 IgnoresInPageNavigationUnlessMainFrameLoads) { 69 IgnoresInPageNavigationUnlessMainFrameLoads) {
66 content::LoadCommittedDetails details = content::LoadCommittedDetails(); 70 Navigate(true, true);
67 details.is_main_frame = true;
68 details.is_in_page = true;
69 content::FrameNavigateParams params = content::FrameNavigateParams();
70 main_frame_observer_->DidNavigateMainFrame(details, params);
71 ASSERT_FALSE(main_frame_observer_->is_initialized()); 71 ASSERT_FALSE(main_frame_observer_->is_initialized());
72 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame()); 72 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame());
73 73
74 // Even if we didn't acknowledge an in_page navigation, if the main frame 74 // Even if we didn't acknowledge an in_page navigation, if the main frame
75 // loads, consider a load complete. 75 // loads, consider a load complete.
76 main_frame_observer_->DocumentLoadedInFrame(main_rfh()); 76 main_frame_observer_->DocumentLoadedInFrame(main_rfh());
77 ASSERT_TRUE(main_frame_observer_->is_document_loaded_in_main_frame()); 77 ASSERT_TRUE(main_frame_observer_->is_document_loaded_in_main_frame());
78 } 78 }
79 79
80 TEST_F(WebContentsMainFrameObserverTest, ResetOnPageNavigation) { 80 TEST_F(WebContentsMainFrameObserverTest, ResetOnPageNavigation) {
81 content::LoadCommittedDetails details = content::LoadCommittedDetails(); 81 Navigate(true, false);
82 details.is_main_frame = true;
83 details.is_in_page = false;
84 content::FrameNavigateParams params = content::FrameNavigateParams();
85 main_frame_observer_->DidNavigateMainFrame(details, params);
86 main_frame_observer_->DocumentLoadedInFrame(main_rfh()); 82 main_frame_observer_->DocumentLoadedInFrame(main_rfh());
87 ASSERT_TRUE(main_frame_observer_->is_document_loaded_in_main_frame()); 83 ASSERT_TRUE(main_frame_observer_->is_document_loaded_in_main_frame());
88 84
89 // Another navigation should result in waiting for a page load. 85 // Another navigation should result in waiting for a page load.
90 main_frame_observer_->DidNavigateMainFrame(details, params); 86 Navigate(true, false);
91 ASSERT_TRUE(main_frame_observer_->is_initialized()); 87 ASSERT_TRUE(main_frame_observer_->is_initialized());
92 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame()); 88 ASSERT_FALSE(main_frame_observer_->is_document_loaded_in_main_frame());
93 } 89 }
94 90
95 TEST_F(WebContentsMainFrameObserverTest, DoesNotResetOnInPageNavigation) { 91 TEST_F(WebContentsMainFrameObserverTest, DoesNotResetOnInPageNavigation) {
96 content::LoadCommittedDetails details = content::LoadCommittedDetails(); 92 Navigate(true, false);
97 details.is_main_frame = true;
98 details.is_in_page = false;
99 content::FrameNavigateParams params = content::FrameNavigateParams();
100 main_frame_observer_->DidNavigateMainFrame(details, params);
101 main_frame_observer_->DocumentLoadedInFrame(main_rfh()); 93 main_frame_observer_->DocumentLoadedInFrame(main_rfh());
102 ASSERT_TRUE(main_frame_observer_->is_document_loaded_in_main_frame()); 94 ASSERT_TRUE(main_frame_observer_->is_document_loaded_in_main_frame());
103 95
104 // Navigating withing the page should not result in waiting for a page load. 96 // Navigating withing the page should not result in waiting for a page load.
105 details.is_in_page = true; 97 Navigate(true, true);
106 main_frame_observer_->DidNavigateMainFrame(details, params);
107 ASSERT_TRUE(main_frame_observer_->is_initialized()); 98 ASSERT_TRUE(main_frame_observer_->is_initialized());
108 ASSERT_TRUE(main_frame_observer_->is_document_loaded_in_main_frame()); 99 ASSERT_TRUE(main_frame_observer_->is_document_loaded_in_main_frame());
109 } 100 }
110 101
111 } // namespace dom_distiller 102 } // namespace dom_distiller
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698