| OLD | NEW |
| (Empty) | |
| 1 // Copyright 2017 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/sessions/chrome_serialized_navigation_driver.h" |
| 6 |
| 7 #include "components/sessions/core/serialized_navigation_entry_test_helper.h" |
| 8 #include "content/public/common/page_state.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h" |
| 11 #include "ui/base/page_transition_types.h" |
| 12 |
| 13 class ChromeSerializedNavigationDriverTest : public ::testing::Test { |
| 14 public: |
| 15 ChromeSerializedNavigationDriverTest() {} |
| 16 ~ChromeSerializedNavigationDriverTest() override {} |
| 17 |
| 18 void SetUp() override { |
| 19 sessions::ContentSerializedNavigationDriver::SetInstance( |
| 20 ChromeSerializedNavigationDriver::GetInstance()); |
| 21 } |
| 22 |
| 23 void TearDown() override { |
| 24 sessions::ContentSerializedNavigationDriver::SetInstance(nullptr); |
| 25 } |
| 26 |
| 27 private: |
| 28 DISALLOW_COPY_AND_ASSIGN(ChromeSerializedNavigationDriverTest); |
| 29 }; |
| 30 |
| 31 // Tests that the input data is left unsanitized when the referrer policy is |
| 32 // Always. |
| 33 TEST_F(ChromeSerializedNavigationDriverTest, SanitizeWithReferrerPolicyAlways) { |
| 34 sessions::ContentSerializedNavigationDriver* driver = |
| 35 sessions::ContentSerializedNavigationDriver::GetInstance(); |
| 36 sessions::SerializedNavigationEntry navigation = |
| 37 sessions::SerializedNavigationEntryTestHelper::CreateNavigationForTest(); |
| 38 sessions::SerializedNavigationEntryTestHelper::SetReferrerPolicy( |
| 39 blink::WebReferrerPolicyAlways, &navigation); |
| 40 |
| 41 content::PageState page_state = |
| 42 content::PageState::CreateFromURL(sessions::test_data::kVirtualURL); |
| 43 sessions::SerializedNavigationEntryTestHelper::SetEncodedPageState( |
| 44 page_state.ToEncodedData(), &navigation); |
| 45 |
| 46 driver->Sanitize(&navigation); |
| 47 EXPECT_EQ(sessions::test_data::kIndex, navigation.index()); |
| 48 EXPECT_EQ(sessions::test_data::kUniqueID, navigation.unique_id()); |
| 49 EXPECT_EQ(sessions::test_data::kReferrerURL, navigation.referrer_url()); |
| 50 EXPECT_EQ(blink::WebReferrerPolicyAlways, navigation.referrer_policy()); |
| 51 EXPECT_EQ(sessions::test_data::kVirtualURL, navigation.virtual_url()); |
| 52 EXPECT_EQ(sessions::test_data::kTitle, navigation.title()); |
| 53 EXPECT_EQ(page_state.ToEncodedData(), navigation.encoded_page_state()); |
| 54 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
| 55 navigation.transition_type(), sessions::test_data::kTransitionType)); |
| 56 EXPECT_EQ(sessions::test_data::kHasPostData, navigation.has_post_data()); |
| 57 EXPECT_EQ(sessions::test_data::kPostID, navigation.post_id()); |
| 58 EXPECT_EQ(sessions::test_data::kOriginalRequestURL, |
| 59 navigation.original_request_url()); |
| 60 EXPECT_EQ(sessions::test_data::kIsOverridingUserAgent, |
| 61 navigation.is_overriding_user_agent()); |
| 62 EXPECT_EQ(sessions::test_data::kTimestamp, navigation.timestamp()); |
| 63 EXPECT_EQ(sessions::test_data::kSearchTerms, navigation.search_terms()); |
| 64 EXPECT_EQ(sessions::test_data::kFaviconURL, navigation.favicon_url()); |
| 65 EXPECT_EQ(sessions::test_data::kHttpStatusCode, |
| 66 navigation.http_status_code()); |
| 67 } |
| 68 |
| 69 // Tests that the input data is properly sanitized when the referrer policy is |
| 70 // Never. |
| 71 TEST_F(ChromeSerializedNavigationDriverTest, SanitizeWithReferrerPolicyNever) { |
| 72 sessions::ContentSerializedNavigationDriver* driver = |
| 73 sessions::ContentSerializedNavigationDriver::GetInstance(); |
| 74 sessions::SerializedNavigationEntry navigation = |
| 75 sessions::SerializedNavigationEntryTestHelper::CreateNavigationForTest(); |
| 76 sessions::SerializedNavigationEntryTestHelper::SetReferrerPolicy( |
| 77 blink::WebReferrerPolicyNever, &navigation); |
| 78 |
| 79 content::PageState page_state = |
| 80 content::PageState::CreateFromURL(sessions::test_data::kVirtualURL); |
| 81 sessions::SerializedNavigationEntryTestHelper::SetEncodedPageState( |
| 82 page_state.ToEncodedData(), &navigation); |
| 83 |
| 84 driver->Sanitize(&navigation); |
| 85 |
| 86 // Fields that should remain untouched. |
| 87 EXPECT_EQ(sessions::test_data::kIndex, navigation.index()); |
| 88 EXPECT_EQ(sessions::test_data::kUniqueID, navigation.unique_id()); |
| 89 EXPECT_EQ(sessions::test_data::kVirtualURL, navigation.virtual_url()); |
| 90 EXPECT_EQ(sessions::test_data::kTitle, navigation.title()); |
| 91 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
| 92 navigation.transition_type(), sessions::test_data::kTransitionType)); |
| 93 EXPECT_EQ(sessions::test_data::kHasPostData, navigation.has_post_data()); |
| 94 EXPECT_EQ(sessions::test_data::kPostID, navigation.post_id()); |
| 95 EXPECT_EQ(sessions::test_data::kOriginalRequestURL, |
| 96 navigation.original_request_url()); |
| 97 EXPECT_EQ(sessions::test_data::kIsOverridingUserAgent, |
| 98 navigation.is_overriding_user_agent()); |
| 99 EXPECT_EQ(sessions::test_data::kTimestamp, navigation.timestamp()); |
| 100 EXPECT_EQ(sessions::test_data::kSearchTerms, navigation.search_terms()); |
| 101 EXPECT_EQ(sessions::test_data::kFaviconURL, navigation.favicon_url()); |
| 102 EXPECT_EQ(sessions::test_data::kHttpStatusCode, |
| 103 navigation.http_status_code()); |
| 104 |
| 105 // Fields that were sanitized. |
| 106 EXPECT_EQ(GURL(), navigation.referrer_url()); |
| 107 EXPECT_EQ(blink::WebReferrerPolicyDefault, navigation.referrer_policy()); |
| 108 EXPECT_EQ(page_state.ToEncodedData(), navigation.encoded_page_state()); |
| 109 } |
| OLD | NEW |