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

Unified Diff: chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc

Issue 2759333002: Move chrome-specific SerializedNavigation code to chrome/. (Closed)
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc
diff --git a/chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc b/chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a6455d94e8bb48f8743546fbf1fa0b074a2c88dd
--- /dev/null
+++ b/chrome/browser/sessions/chrome_serialized_navigation_driver_unittest.cc
@@ -0,0 +1,109 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/sessions/chrome_serialized_navigation_driver.h"
+
+#include "components/sessions/core/serialized_navigation_entry_test_helper.h"
+#include "content/public/common/page_state.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/WebKit/public/platform/WebReferrerPolicy.h"
+#include "ui/base/page_transition_types.h"
+
+class ChromeSerializedNavigationDriverTest : public ::testing::Test {
+ public:
+ ChromeSerializedNavigationDriverTest() {}
+ ~ChromeSerializedNavigationDriverTest() override {}
+
+ void SetUp() override {
+ sessions::ContentSerializedNavigationDriver::SetInstance(
+ ChromeSerializedNavigationDriver::GetInstance());
+ }
+
+ void TearDown() override {
+ sessions::ContentSerializedNavigationDriver::SetInstance(nullptr);
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ChromeSerializedNavigationDriverTest);
+};
+
+// Tests that the input data is left unsanitized when the referrer policy is
+// Always.
+TEST_F(ChromeSerializedNavigationDriverTest, SanitizeWithReferrerPolicyAlways) {
+ sessions::ContentSerializedNavigationDriver* driver =
+ sessions::ContentSerializedNavigationDriver::GetInstance();
+ sessions::SerializedNavigationEntry navigation =
+ sessions::SerializedNavigationEntryTestHelper::CreateNavigationForTest();
+ sessions::SerializedNavigationEntryTestHelper::SetReferrerPolicy(
+ blink::WebReferrerPolicyAlways, &navigation);
+
+ content::PageState page_state =
+ content::PageState::CreateFromURL(sessions::test_data::kVirtualURL);
+ sessions::SerializedNavigationEntryTestHelper::SetEncodedPageState(
+ page_state.ToEncodedData(), &navigation);
+
+ driver->Sanitize(&navigation);
+ EXPECT_EQ(sessions::test_data::kIndex, navigation.index());
+ EXPECT_EQ(sessions::test_data::kUniqueID, navigation.unique_id());
+ EXPECT_EQ(sessions::test_data::kReferrerURL, navigation.referrer_url());
+ EXPECT_EQ(blink::WebReferrerPolicyAlways, navigation.referrer_policy());
+ EXPECT_EQ(sessions::test_data::kVirtualURL, navigation.virtual_url());
+ EXPECT_EQ(sessions::test_data::kTitle, navigation.title());
+ EXPECT_EQ(page_state.ToEncodedData(), navigation.encoded_page_state());
+ EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
+ navigation.transition_type(), sessions::test_data::kTransitionType));
+ EXPECT_EQ(sessions::test_data::kHasPostData, navigation.has_post_data());
+ EXPECT_EQ(sessions::test_data::kPostID, navigation.post_id());
+ EXPECT_EQ(sessions::test_data::kOriginalRequestURL,
+ navigation.original_request_url());
+ EXPECT_EQ(sessions::test_data::kIsOverridingUserAgent,
+ navigation.is_overriding_user_agent());
+ EXPECT_EQ(sessions::test_data::kTimestamp, navigation.timestamp());
+ EXPECT_EQ(sessions::test_data::kSearchTerms, navigation.search_terms());
+ EXPECT_EQ(sessions::test_data::kFaviconURL, navigation.favicon_url());
+ EXPECT_EQ(sessions::test_data::kHttpStatusCode,
+ navigation.http_status_code());
+}
+
+// Tests that the input data is properly sanitized when the referrer policy is
+// Never.
+TEST_F(ChromeSerializedNavigationDriverTest, SanitizeWithReferrerPolicyNever) {
+ sessions::ContentSerializedNavigationDriver* driver =
+ sessions::ContentSerializedNavigationDriver::GetInstance();
+ sessions::SerializedNavigationEntry navigation =
+ sessions::SerializedNavigationEntryTestHelper::CreateNavigationForTest();
+ sessions::SerializedNavigationEntryTestHelper::SetReferrerPolicy(
+ blink::WebReferrerPolicyNever, &navigation);
+
+ content::PageState page_state =
+ content::PageState::CreateFromURL(sessions::test_data::kVirtualURL);
+ sessions::SerializedNavigationEntryTestHelper::SetEncodedPageState(
+ page_state.ToEncodedData(), &navigation);
+
+ driver->Sanitize(&navigation);
+
+ // Fields that should remain untouched.
+ EXPECT_EQ(sessions::test_data::kIndex, navigation.index());
+ EXPECT_EQ(sessions::test_data::kUniqueID, navigation.unique_id());
+ EXPECT_EQ(sessions::test_data::kVirtualURL, navigation.virtual_url());
+ EXPECT_EQ(sessions::test_data::kTitle, navigation.title());
+ EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
+ navigation.transition_type(), sessions::test_data::kTransitionType));
+ EXPECT_EQ(sessions::test_data::kHasPostData, navigation.has_post_data());
+ EXPECT_EQ(sessions::test_data::kPostID, navigation.post_id());
+ EXPECT_EQ(sessions::test_data::kOriginalRequestURL,
+ navigation.original_request_url());
+ EXPECT_EQ(sessions::test_data::kIsOverridingUserAgent,
+ navigation.is_overriding_user_agent());
+ EXPECT_EQ(sessions::test_data::kTimestamp, navigation.timestamp());
+ EXPECT_EQ(sessions::test_data::kSearchTerms, navigation.search_terms());
+ EXPECT_EQ(sessions::test_data::kFaviconURL, navigation.favicon_url());
+ EXPECT_EQ(sessions::test_data::kHttpStatusCode,
+ navigation.http_status_code());
+
+ // Fields that were sanitized.
+ EXPECT_EQ(GURL(), navigation.referrer_url());
+ EXPECT_EQ(blink::WebReferrerPolicyDefault, navigation.referrer_policy());
+ EXPECT_EQ(page_state.ToEncodedData(), navigation.encoded_page_state());
+}

Powered by Google App Engine
This is Rietveld 408576698