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

Side by Side Diff: chrome/browser/sessions/session_common_utils_unittest.cc

Issue 2759333002: Move chrome-specific SerializedNavigation code to chrome/. (Closed)
Patch Set: Rebase, fix Android? Created 3 years, 9 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 2016 The Chromium Authors. All rights reserved. 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 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 "chrome/browser/sessions/session_common_utils.h" 5 #include "chrome/browser/sessions/session_common_utils.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "components/sessions/content/content_serialized_navigation_builder.h" 9 #include "components/sessions/content/content_serialized_navigation_builder.h"
10 #include "components/sessions/content/content_serialized_navigation_driver.h"
10 #include "components/sessions/core/serialized_navigation_entry.h" 11 #include "components/sessions/core/serialized_navigation_entry.h"
12 #include "components/sessions/core/serialized_navigation_entry_test_helper.h"
11 #include "components/sessions/core/session_types.h" 13 #include "components/sessions/core/session_types.h"
12 #include "content/public/browser/navigation_entry.h" 14 #include "content/public/browser/navigation_entry.h"
15 #include "content/public/common/page_state.h"
13 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h"
18 #include "ui/base/page_transition_types.h"
14 19
15 namespace { 20 namespace {
16 21
17 void AppendNavigations(sessions::SessionTab* tab, 22 void AppendNavigations(sessions::SessionTab* tab,
18 content::NavigationEntry* entry) { 23 content::NavigationEntry* entry) {
19 tab->navigations.push_back( 24 tab->navigations.push_back(
20 sessions::ContentSerializedNavigationBuilder::FromNavigationEntry( 25 sessions::ContentSerializedNavigationBuilder::FromNavigationEntry(
21 0, *entry)); 26 0, *entry));
22 } 27 }
23 28
24 } // namespace 29 } // namespace
30
25 class SessionCommonUtilTest : public ::testing::Test {}; 31 class SessionCommonUtilTest : public ::testing::Test {};
26 32
27 TEST_F(SessionCommonUtilTest, GetSelectedIndex) { 33 TEST_F(SessionCommonUtilTest, GetSelectedIndex) {
28 const GURL settings_page("chrome://settings"); 34 const GURL settings_page("chrome://settings");
29 const GURL sign_out_page("chrome://settings/signOut"); 35 const GURL sign_out_page("chrome://settings/signOut");
30 sessions::SessionTab tab; 36 sessions::SessionTab tab;
31 37
32 std::unique_ptr<content::NavigationEntry> entry1( 38 std::unique_ptr<content::NavigationEntry> entry1(
33 content::NavigationEntry::Create()); 39 content::NavigationEntry::Create());
34 std::unique_ptr<content::NavigationEntry> entry2( 40 std::unique_ptr<content::NavigationEntry> entry2(
35 content::NavigationEntry::Create()); 41 content::NavigationEntry::Create());
36 entry1->SetVirtualURL(settings_page); 42 entry1->SetVirtualURL(settings_page);
37 entry2->SetVirtualURL(sign_out_page); 43 entry2->SetVirtualURL(sign_out_page);
38 44
39 AppendNavigations(&tab, entry1.get()); 45 AppendNavigations(&tab, entry1.get());
40 AppendNavigations(&tab, entry2.get()); 46 AppendNavigations(&tab, entry2.get());
41 47
42 tab.current_navigation_index = 0; 48 tab.current_navigation_index = 0;
43 ASSERT_EQ(0, GetNavigationIndexToSelect(tab)); 49 ASSERT_EQ(0, GetNavigationIndexToSelect(tab));
44 tab.current_navigation_index = 1; 50 tab.current_navigation_index = 1;
45 ASSERT_EQ(0, GetNavigationIndexToSelect(tab)); 51 ASSERT_EQ(0, GetNavigationIndexToSelect(tab));
46 } 52 }
53
54 // Tests that the input data is left unsanitized when the referrer policy is
55 // Always.
56 TEST_F(SessionCommonUtilTest, SanitizeWithReferrerPolicyAlways) {
57 sessions::SerializedNavigationDriver::SetSanitizeCallback(
58 base::Bind(&SanitizeNavigation));
59 sessions::ContentSerializedNavigationDriver* driver =
60 sessions::ContentSerializedNavigationDriver::GetInstance();
61 sessions::SerializedNavigationEntry navigation =
62 sessions::SerializedNavigationEntryTestHelper::CreateNavigationForTest();
63 sessions::SerializedNavigationEntryTestHelper::SetReferrerPolicy(
64 blink::WebReferrerPolicyAlways, &navigation);
65
66 content::PageState page_state =
67 content::PageState::CreateFromURL(sessions::test_data::kVirtualURL);
68 sessions::SerializedNavigationEntryTestHelper::SetEncodedPageState(
69 page_state.ToEncodedData(), &navigation);
70
71 driver->Sanitize(&navigation);
72 EXPECT_EQ(sessions::test_data::kIndex, navigation.index());
73 EXPECT_EQ(sessions::test_data::kUniqueID, navigation.unique_id());
74 EXPECT_EQ(sessions::test_data::kReferrerURL, navigation.referrer_url());
75 EXPECT_EQ(blink::WebReferrerPolicyAlways, navigation.referrer_policy());
76 EXPECT_EQ(sessions::test_data::kVirtualURL, navigation.virtual_url());
77 EXPECT_EQ(sessions::test_data::kTitle, navigation.title());
78 EXPECT_EQ(page_state.ToEncodedData(), navigation.encoded_page_state());
79 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
80 navigation.transition_type(), sessions::test_data::kTransitionType));
81 EXPECT_EQ(sessions::test_data::kHasPostData, navigation.has_post_data());
82 EXPECT_EQ(sessions::test_data::kPostID, navigation.post_id());
83 EXPECT_EQ(sessions::test_data::kOriginalRequestURL,
84 navigation.original_request_url());
85 EXPECT_EQ(sessions::test_data::kIsOverridingUserAgent,
86 navigation.is_overriding_user_agent());
87 EXPECT_EQ(sessions::test_data::kTimestamp, navigation.timestamp());
88 EXPECT_EQ(sessions::test_data::kSearchTerms, navigation.search_terms());
89 EXPECT_EQ(sessions::test_data::kFaviconURL, navigation.favicon_url());
90 EXPECT_EQ(sessions::test_data::kHttpStatusCode,
91 navigation.http_status_code());
92 }
93
94 // Tests that the input data is properly sanitized when the referrer policy is
95 // Never.
96 TEST_F(SessionCommonUtilTest, SanitizeWithReferrerPolicyNever) {
97 sessions::SerializedNavigationDriver::SetSanitizeCallback(
98 base::Bind(&SanitizeNavigation));
99 sessions::ContentSerializedNavigationDriver* driver =
100 sessions::ContentSerializedNavigationDriver::GetInstance();
101 sessions::SerializedNavigationEntry navigation =
102 sessions::SerializedNavigationEntryTestHelper::CreateNavigationForTest();
103 sessions::SerializedNavigationEntryTestHelper::SetReferrerPolicy(
104 blink::WebReferrerPolicyNever, &navigation);
105
106 content::PageState page_state =
107 content::PageState::CreateFromURL(sessions::test_data::kVirtualURL);
108 sessions::SerializedNavigationEntryTestHelper::SetEncodedPageState(
109 page_state.ToEncodedData(), &navigation);
110
111 driver->Sanitize(&navigation);
112
113 // Fields that should remain untouched.
114 EXPECT_EQ(sessions::test_data::kIndex, navigation.index());
115 EXPECT_EQ(sessions::test_data::kUniqueID, navigation.unique_id());
116 EXPECT_EQ(sessions::test_data::kVirtualURL, navigation.virtual_url());
117 EXPECT_EQ(sessions::test_data::kTitle, navigation.title());
118 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
119 navigation.transition_type(), sessions::test_data::kTransitionType));
120 EXPECT_EQ(sessions::test_data::kHasPostData, navigation.has_post_data());
121 EXPECT_EQ(sessions::test_data::kPostID, navigation.post_id());
122 EXPECT_EQ(sessions::test_data::kOriginalRequestURL,
123 navigation.original_request_url());
124 EXPECT_EQ(sessions::test_data::kIsOverridingUserAgent,
125 navigation.is_overriding_user_agent());
126 EXPECT_EQ(sessions::test_data::kTimestamp, navigation.timestamp());
127 EXPECT_EQ(sessions::test_data::kSearchTerms, navigation.search_terms());
128 EXPECT_EQ(sessions::test_data::kFaviconURL, navigation.favicon_url());
129 EXPECT_EQ(sessions::test_data::kHttpStatusCode,
130 navigation.http_status_code());
131
132 // Fields that were sanitized.
133 EXPECT_EQ(GURL(), navigation.referrer_url());
134 EXPECT_EQ(blink::WebReferrerPolicyDefault, navigation.referrer_policy());
135 EXPECT_EQ(page_state.ToEncodedData(), navigation.encoded_page_state());
136 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698