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

Side by Side Diff: chrome/browser/safe_browsing/safe_browsing_navigation_observer_unittest.cc

Issue 2302913003: Add SafeBrowsingNavigationObserver to listen to navigation events (Closed)
Patch Set: resolve final nit Created 4 years, 1 month 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 2016 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 "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h"
6 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer_manager .h"
7 #include "chrome/browser/sessions/session_tab_helper.h"
8 #include "chrome/browser/ui/tabs/tab_strip_model.h"
9 #include "chrome/test/base/browser_with_test_window_test.h"
10 #include "content/public/test/test_renderer_host.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "ui/base/window_open_disposition.h"
13
14 namespace safe_browsing {
15
16 class SBNavigationObserverTest : public BrowserWithTestWindowTest {
17 public:
18 SBNavigationObserverTest() {}
19 void SetUp() override {
20 BrowserWithTestWindowTest::SetUp();
21 AddTab(browser(), GURL("http://foo/0"));
22 navigation_observer_manager_ = new SafeBrowsingNavigationObserverManager();
23 navigation_observer_ = new SafeBrowsingNavigationObserver(
24 browser()->tab_strip_model()->GetWebContentsAt(0),
25 navigation_observer_manager_);
26 }
27 void TearDown() override {
28 delete navigation_observer_;
29 BrowserWithTestWindowTest::TearDown();
30 }
31 void VerifyNavigationEvent(const GURL& expected_source_url,
32 const GURL& expected_source_main_frame_url,
33 const GURL& expected_original_request_url,
34 const GURL& expected_destination_url,
35 int expected_source_tab,
36 int expected_target_tab,
37 bool expected_is_user_initiated,
38 bool expected_has_committed,
39 bool expected_has_server_redirect,
40 const NavigationEvent& actual_nav_event) {
41 EXPECT_EQ(expected_source_url, actual_nav_event.source_url);
42 EXPECT_EQ(expected_source_main_frame_url,
43 actual_nav_event.source_main_frame_url);
44 EXPECT_EQ(expected_original_request_url,
45 actual_nav_event.original_request_url);
46 EXPECT_EQ(expected_destination_url, actual_nav_event.destination_url);
47 EXPECT_EQ(expected_source_tab, actual_nav_event.source_tab_id);
48 EXPECT_EQ(expected_target_tab, actual_nav_event.target_tab_id);
49 EXPECT_EQ(expected_is_user_initiated, actual_nav_event.is_user_initiated);
50 EXPECT_EQ(expected_has_committed, actual_nav_event.has_committed);
51 EXPECT_EQ(expected_has_server_redirect,
52 actual_nav_event.has_server_redirect);
53 }
54
55 SafeBrowsingNavigationObserverManager::NavigationMap* navigation_map() {
56 return navigation_observer_manager_->navigation_map();
57 }
58
59 protected:
60 SafeBrowsingNavigationObserverManager* navigation_observer_manager_;
61 SafeBrowsingNavigationObserver* navigation_observer_;
62
63 private:
64 DISALLOW_COPY_AND_ASSIGN(SBNavigationObserverTest);
65 };
66
67 TEST_F(SBNavigationObserverTest, BasicNavigationAndCommit) {
68 // Navigation in current tab.
69 content::NavigationController* controller =
70 &browser()->tab_strip_model()->GetWebContentsAt(0)->GetController();
71 browser()->OpenURL(
72 content::OpenURLParams(GURL("http://foo/1"), content::Referrer(),
73 WindowOpenDisposition::CURRENT_TAB,
74 ui::PAGE_TRANSITION_AUTO_BOOKMARK, false));
75 CommitPendingLoad(controller);
76 int tab_id = SessionTabHelper::IdForTab(controller->GetWebContents());
77 auto nav_map = navigation_map();
78 ASSERT_EQ(std::size_t(1), nav_map->size());
79 ASSERT_EQ(std::size_t(1), nav_map->at(GURL("http://foo/1")).size());
80 VerifyNavigationEvent(GURL("http://foo/0"), // source_url
81 GURL("http://foo/0"), // source_main_frame_url
82 GURL("http://foo/1"), // original_request_url
83 GURL("http://foo/1"), // destination_url
84 tab_id, // source_tab_id
85 tab_id, // target_tab_id
86 true, // is_user_initiated
87 true, // has_committed
88 false, // has_server_redirect
89 nav_map->at(GURL("http://foo/1")).at(0));
90 }
91
92 TEST_F(SBNavigationObserverTest, ServerRedirect) {
93 content::RenderFrameHostTester* rfh_tester =
94 content::RenderFrameHostTester::For(
95 browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame());
96 rfh_tester->SimulateNavigationStart(GURL("http://foo/3"));
97 GURL redirect("http://redirect/1");
98 rfh_tester->SimulateRedirect(redirect);
99 rfh_tester->SimulateNavigationCommit(redirect);
100 int tab_id = SessionTabHelper::IdForTab(
101 browser()->tab_strip_model()->GetWebContentsAt(0));
102 auto nav_map = navigation_map();
103 ASSERT_EQ(std::size_t(1), nav_map->size());
104 ASSERT_EQ(std::size_t(1), nav_map->at(redirect).size());
105 VerifyNavigationEvent(GURL("http://foo/0"), // source_url
106 GURL("http://foo/0"), // source_main_frame_url
107 GURL("http://foo/3"), // original_request_url
108 GURL("http://redirect/1"), // destination_url
109 tab_id, // source_tab_id
110 tab_id, // target_tab_id
111 false, // is_user_initiated
112 true, // has_committed
113 true, // has_server_redirect
114 nav_map->at(GURL("http://redirect/1")).at(0));
115 }
116
117 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/safe_browsing_navigation_observer_manager.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698