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

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: nit Created 4 years, 3 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
(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 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h"
5 #include "chrome/browser/sessions/session_tab_helper.h"
6 #include "chrome/browser/ui/tabs/tab_strip_model.h"
7 #include "chrome/test/base/browser_with_test_window_test.h"
8 #include "content/public/test/test_renderer_host.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/base/window_open_disposition.h"
11
12 namespace safe_browsing {
13
14 class SBNavigationObserverTest : public BrowserWithTestWindowTest {
15 public:
16 SBNavigationObserverTest() {}
17 void SetUp() override {
18 BrowserWithTestWindowTest::SetUp();
19 AddTab(browser(), GURL("chrome://blank"));
20 navigation_observer_ = new SafeBrowsingNavigationObserver();
21 }
22 void TearDown() override {
23 delete navigation_observer_;
24 BrowserWithTestWindowTest::TearDown();
25 }
26 void VerifyNavigationEvent(
27 const GURL& expected_source_url,
28 int expected_source_tab,
29 const GURL& expected_target_url,
30 int expected_target_tab,
31 const GURL& expected_main_frame_url,
32 bool expected_is_user_initiated,
33 bool expected_has_committed,
34 bool expected_is_server_redirect,
35 bool expected_is_finished,
36 const GURL& expected_redirect_url,
37 const SafeBrowsingNavigationObserver::NavigationEvent& actual_nav_event) {
38 EXPECT_EQ(expected_source_url, actual_nav_event.source_url);
39 EXPECT_EQ(expected_source_tab, actual_nav_event.source_tab_id);
40 EXPECT_EQ(expected_target_url, actual_nav_event.target_url);
41 EXPECT_EQ(expected_target_tab, actual_nav_event.target_tab_id);
42 EXPECT_EQ(expected_main_frame_url, actual_nav_event.main_frame_url);
43 EXPECT_EQ(expected_is_user_initiated, actual_nav_event.is_user_initiated);
44 EXPECT_EQ(expected_has_committed, actual_nav_event.has_committed);
45 EXPECT_EQ(expected_is_server_redirect, actual_nav_event.is_server_redirect);
46 EXPECT_EQ(expected_is_finished, actual_nav_event.is_finished);
47 EXPECT_EQ(expected_redirect_url, actual_nav_event.server_redirect_url);
48 }
49
50 SafeBrowsingNavigationObserver::NavigationMap* navigation_map() {
51 return navigation_observer_->navigation_map();
52 }
53
54 protected:
55 SafeBrowsingNavigationObserver* navigation_observer_;
56
57 private:
58 DISALLOW_COPY_AND_ASSIGN(SBNavigationObserverTest);
59 };
60
61 TEST_F(SBNavigationObserverTest, BasicNavigationAndCommit) {
62 // Navigation in current tab
63 content::NavigationController* controller =
64 &browser()->tab_strip_model()->GetWebContentsAt(0)->GetController();
65 browser()->OpenURL(
66 content::OpenURLParams(GURL("http://foo/1"), content::Referrer(),
67 WindowOpenDisposition::CURRENT_TAB,
68 ui::PAGE_TRANSITION_AUTO_BOOKMARK, false));
69 CommitPendingLoad(controller);
70 int tab_id = SessionTabHelper::IdForTab(controller->GetWebContents());
71 SafeBrowsingNavigationObserver::NavigationMap* nav_map = navigation_map();
72 ASSERT_EQ(std::size_t(1), nav_map->size());
73 ASSERT_EQ(std::size_t(1), nav_map->at(GURL("http://foo/1")).size());
74 VerifyNavigationEvent(GURL("chrome://blank/"), tab_id, GURL("http://foo/1"),
75 tab_id, GURL("chrome://blank/"), true, true, false,
76 true, GURL(), nav_map->at(GURL("http://foo/1")).at(0));
77 // Open a new tab and navigate
78 browser()->OpenURL(
79 content::OpenURLParams(GURL("http://foo/2"), content::Referrer(),
80 WindowOpenDisposition::NEW_FOREGROUND_TAB,
81 ui::PAGE_TRANSITION_AUTO_BOOKMARK, false));
82 controller =
83 &browser()->tab_strip_model()->GetWebContentsAt(1)->GetController();
84 CommitPendingLoad(controller);
85 int new_tab_id = SessionTabHelper::IdForTab(
86 browser()->tab_strip_model()->GetActiveWebContents());
87 ASSERT_EQ(std::size_t(2), nav_map->size());
88 ASSERT_EQ(std::size_t(1), nav_map->at(GURL("http://foo/2")).size());
89 VerifyNavigationEvent(GURL("http://foo/2"), new_tab_id, GURL("http://foo/2"),
90 new_tab_id, GURL("http://foo/2"), true, true, false,
91 true, GURL(), nav_map->at(GURL("http://foo/2")).at(0));
92 }
93
94 TEST_F(SBNavigationObserverTest, ServerRedirect) {
95 content::RenderFrameHostTester* rfh_tester =
96 content::RenderFrameHostTester::For(
97 browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame());
98 rfh_tester->SimulateNavigationStart(GURL("http://foo/3"));
99 GURL redirect("http://redirect/1");
100 rfh_tester->SimulateRedirect(redirect);
101 rfh_tester->SimulateNavigationCommit(redirect);
102 int tab_id = SessionTabHelper::IdForTab(
103 browser()->tab_strip_model()->GetWebContentsAt(0));
104 SafeBrowsingNavigationObserver::NavigationMap* nav_map = navigation_map();
105 ASSERT_EQ(std::size_t(1), nav_map->size());
106 ASSERT_EQ(std::size_t(1), nav_map->at(redirect).size());
107 VerifyNavigationEvent(GURL("chrome://blank/"), tab_id, GURL("http://foo/3"),
108 tab_id, GURL("chrome://blank/"), true, true, true, true,
109 GURL("http://redirect/1"),
110 nav_map->at(GURL("http://redirect/1")).at(0));
111 }
112
113 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698