summaryrefslogtreecommitdiffstats
path: root/components/sessions
diff options
context:
space:
mode:
authorrohitrao <rohitrao@chromium.org>2014-10-24 12:00:27 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-24 19:00:51 +0000
commit2975885b004a6de5c3df6b847795bd9d698a2d38 (patch)
tree020328de11fd04923d23fa31dc66a77a4a4d59ae /components/sessions
parent20ead2917f581bc315ac40bafb4dd3f563ba7e09 (diff)
downloadchromium_src-2975885b004a6de5c3df6b847795bd9d698a2d38.zip
chromium_src-2975885b004a6de5c3df6b847795bd9d698a2d38.tar.gz
chromium_src-2975885b004a6de5c3df6b847795bd9d698a2d38.tar.bz2
Adds web implementations for SerializedNavigationEntry.
Also adds ui/base/page_transition_types* to the iOS build. TBR=dglazkov@chromium.org BUG=371476 TEST=Tests pass on iOS. Review URL: https://codereview.chromium.org/676753003 Cr-Commit-Position: refs/heads/master@{#301159}
Diffstat (limited to 'components/sessions')
-rw-r--r--components/sessions/BUILD.gn42
-rw-r--r--components/sessions/DEPS3
-rw-r--r--components/sessions/content/DEPS5
-rw-r--r--components/sessions/ios/DEPS3
-rw-r--r--components/sessions/ios/ios_serialized_navigation_builder.cc55
-rw-r--r--components/sessions/ios/ios_serialized_navigation_builder.h37
-rw-r--r--components/sessions/ios/ios_serialized_navigation_builder_unittest.cc106
-rw-r--r--components/sessions/ios/ios_serialized_navigation_driver.cc79
-rw-r--r--components/sessions/ios/ios_serialized_navigation_driver.h38
-rw-r--r--components/sessions/ios/ios_serialized_navigation_driver_unittest.cc92
-rw-r--r--components/sessions/serialized_navigation_entry.cc1
-rw-r--r--components/sessions/serialized_navigation_entry.h2
12 files changed, 439 insertions, 24 deletions
diff --git a/components/sessions/BUILD.gn b/components/sessions/BUILD.gn
index 1b75012..68b84d2 100644
--- a/components/sessions/BUILD.gn
+++ b/components/sessions/BUILD.gn
@@ -33,26 +33,6 @@ source_set("sessions_core") {
}
}
-component("sessions_content") {
- sources = [
- "content/content_serialized_navigation_builder.cc",
- "content/content_serialized_navigation_builder.h",
- "content/content_serialized_navigation_driver.cc",
- "content/content_serialized_navigation_driver.h",
- ]
-
- defines = [ "SESSIONS_IMPLEMENTATION" ]
-
- deps = [
- ":sessions_core",
- "//base",
- "//base/third_party/dynamic_annotations",
- "//content/public/browser",
- "//ui/base",
- "//url",
- ]
-}
-
static_library("test_support") {
testonly = true
sources = [
@@ -69,3 +49,25 @@ static_library("test_support") {
deps += [ "//sync" ]
}
}
+
+if (!is_ios) {
+ component("sessions_content") {
+ sources = [
+ "content/content_serialized_navigation_builder.cc",
+ "content/content_serialized_navigation_builder.h",
+ "content/content_serialized_navigation_driver.cc",
+ "content/content_serialized_navigation_driver.h",
+ ]
+
+ defines = [ "SESSIONS_IMPLEMENTATION" ]
+
+ deps = [
+ ":sessions_core",
+ "//base",
+ "//base/third_party/dynamic_annotations",
+ "//content/public/browser",
+ "//ui/base",
+ "//url",
+ ]
+ }
+}
diff --git a/components/sessions/DEPS b/components/sessions/DEPS
index 966369f..9fb0e13 100644
--- a/components/sessions/DEPS
+++ b/components/sessions/DEPS
@@ -1,7 +1,4 @@
include_rules = [
- "+content/public/browser",
- "+content/public/common",
"+sync",
- "+third_party/WebKit/public/platform",
"+ui/base",
]
diff --git a/components/sessions/content/DEPS b/components/sessions/content/DEPS
new file mode 100644
index 0000000..1187a87
--- /dev/null
+++ b/components/sessions/content/DEPS
@@ -0,0 +1,5 @@
+include_rules = [
+ "+content/public/browser",
+ "+content/public/common",
+ "+third_party/WebKit/public/platform",
+]
diff --git a/components/sessions/ios/DEPS b/components/sessions/ios/DEPS
new file mode 100644
index 0000000..0fc0ddd
--- /dev/null
+++ b/components/sessions/ios/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+ "+ios/web/public",
+]
diff --git a/components/sessions/ios/ios_serialized_navigation_builder.cc b/components/sessions/ios/ios_serialized_navigation_builder.cc
new file mode 100644
index 0000000..135b7d5
--- /dev/null
+++ b/components/sessions/ios/ios_serialized_navigation_builder.cc
@@ -0,0 +1,55 @@
+// Copyright 2014 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 "components/sessions/ios/ios_serialized_navigation_builder.h"
+
+#include "components/sessions/serialized_navigation_entry.h"
+#include "ios/web/public/favicon_status.h"
+#include "ios/web/public/navigation_item.h"
+#include "ios/web/public/referrer.h"
+
+namespace sessions {
+
+// static
+SerializedNavigationEntry
+IOSSerializedNavigationBuilder::FromNavigationItem(
+ int index, const web::NavigationItem& item) {
+ SerializedNavigationEntry navigation;
+ navigation.index_ = index;
+ navigation.unique_id_ = item.GetUniqueID();
+ navigation.referrer_url_ = item.GetReferrer().url;
+ navigation.referrer_policy_ = item.GetReferrer().policy;
+ navigation.virtual_url_ = item.GetVirtualURL();
+ navigation.title_ = item.GetTitle();
+ navigation.transition_type_ = item.GetTransitionType();
+ navigation.timestamp_ = item.GetTimestamp();
+ if (item.GetFavicon().valid)
+ navigation.favicon_url_ = item.GetFavicon().url;
+
+ return navigation;
+}
+
+// static
+scoped_ptr<web::NavigationItem>
+IOSSerializedNavigationBuilder::ToNavigationItem(
+ const SerializedNavigationEntry* navigation, int page_id) {
+ scoped_ptr<web::NavigationItem> item(web::NavigationItem::Create());
+
+ item->SetURL(navigation->virtual_url_);
+ item->SetReferrer(web::Referrer(
+ navigation->referrer_url_,
+ static_cast<web::ReferrerPolicy>(navigation->referrer_policy_)));
+ item->SetTitle(navigation->title_);
+ item->SetPageID(page_id);
+ item->SetTransitionType(ui::PAGE_TRANSITION_RELOAD);
+ item->SetTimestamp(navigation->timestamp_);
+
+ if (navigation->favicon_url_.is_valid()) {
+ item->GetFavicon().url = navigation->favicon_url_;
+ }
+
+ return item.Pass();
+}
+
+} // namespace sessions
diff --git a/components/sessions/ios/ios_serialized_navigation_builder.h b/components/sessions/ios/ios_serialized_navigation_builder.h
new file mode 100644
index 0000000..73cbfc9
--- /dev/null
+++ b/components/sessions/ios/ios_serialized_navigation_builder.h
@@ -0,0 +1,37 @@
+// Copyright 2014 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.
+
+#ifndef COMPONENTS_SESSIONS_IOS_IOS_SERIALIZED_NAVIGATION_BUILDER_H_
+#define COMPONENTS_SESSIONS_IOS_IOS_SERIALIZED_NAVIGATION_BUILDER_H_
+
+#include <vector>
+
+#include "base/memory/scoped_ptr.h"
+
+namespace web {
+class NavigationItem;
+}
+
+namespace sessions {
+class SerializedNavigationEntry;
+
+// Provides methods to convert between SerializedNavigationEntry and //ios/web
+// classes.
+class IOSSerializedNavigationBuilder {
+ public:
+ // Construct a SerializedNavigationEntry for a particular index from the given
+ // NavigationItem.
+ static SerializedNavigationEntry FromNavigationItem(
+ int index, const web::NavigationItem& item);
+
+ // Convert the given SerializedNavigationEntry into a NavigationItem with the
+ // given page ID. The NavigationItem will have a transition type of
+ // PAGE_TRANSITION_RELOAD and a new unique ID.
+ static scoped_ptr<web::NavigationItem> ToNavigationItem(
+ const SerializedNavigationEntry* navigation, int page_id);
+};
+
+} // namespace sessions
+
+#endif // COMPONENTS_SESSIONS_IOS_IOS_SERIALIZED_NAVIGATION_BUILDER_H_
diff --git a/components/sessions/ios/ios_serialized_navigation_builder_unittest.cc b/components/sessions/ios/ios_serialized_navigation_builder_unittest.cc
new file mode 100644
index 0000000..a437c3d
--- /dev/null
+++ b/components/sessions/ios/ios_serialized_navigation_builder_unittest.cc
@@ -0,0 +1,106 @@
+// Copyright 2014 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 "components/sessions/ios/ios_serialized_navigation_builder.h"
+
+#include "components/sessions/serialized_navigation_entry.h"
+#include "components/sessions/serialized_navigation_entry_test_helper.h"
+#include "ios/web/public/favicon_status.h"
+#include "ios/web/public/navigation_item.h"
+#include "ios/web/public/referrer.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace sessions {
+
+namespace {
+// Creates a NavigationItem from the test_data constants in
+// serialized_navigation_entry_test_helper.h.
+scoped_ptr<web::NavigationItem> MakeNavigationItemForTest() {
+ scoped_ptr<web::NavigationItem> navigation_item(
+ web::NavigationItem::Create());
+ navigation_item->SetReferrer(web::Referrer(
+ test_data::kReferrerURL,
+ static_cast<web::ReferrerPolicy>(test_data::kReferrerPolicy)));
+ navigation_item->SetURL(test_data::kVirtualURL);
+ navigation_item->SetTitle(test_data::kTitle);
+ navigation_item->SetTransitionType(test_data::kTransitionType);
+ navigation_item->SetTimestamp(test_data::kTimestamp);
+ navigation_item->GetFavicon().valid = true;
+ navigation_item->GetFavicon().url = test_data::kFaviconURL;
+ return navigation_item.Pass();
+}
+
+} // namespace
+
+
+// Create a SerializedNavigationEntry from a NavigationItem. All its fields
+// should match the NavigationItem's.
+TEST(IOSSerializedNavigationBuilderTest, FromNavigationItem) {
+ const scoped_ptr<web::NavigationItem> navigation_item(
+ MakeNavigationItemForTest());
+
+ const SerializedNavigationEntry& navigation =
+ IOSSerializedNavigationBuilder::FromNavigationItem(
+ test_data::kIndex, *navigation_item);
+
+ EXPECT_EQ(test_data::kIndex, navigation.index());
+
+ EXPECT_EQ(navigation_item->GetUniqueID(), navigation.unique_id());
+ EXPECT_EQ(test_data::kReferrerURL, navigation.referrer_url());
+ EXPECT_EQ(test_data::kReferrerPolicy, navigation.referrer_policy());
+ EXPECT_EQ(test_data::kVirtualURL, navigation.virtual_url());
+ EXPECT_EQ(test_data::kTitle, navigation.title());
+ EXPECT_EQ(test_data::kTransitionType, navigation.transition_type());
+ EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
+ EXPECT_EQ(test_data::kFaviconURL, navigation.favicon_url());
+
+ // The following fields should be left at their default values.
+ SerializedNavigationEntry default_navigation;
+ EXPECT_EQ(default_navigation.encoded_page_state(),
+ navigation.encoded_page_state());
+ EXPECT_EQ(default_navigation.has_post_data(), navigation.has_post_data());
+ EXPECT_EQ(default_navigation.post_id(), navigation.post_id());
+ EXPECT_EQ(default_navigation.original_request_url(),
+ navigation.original_request_url());
+ EXPECT_EQ(default_navigation.is_overriding_user_agent(),
+ navigation.is_overriding_user_agent());
+ EXPECT_EQ(default_navigation.http_status_code(),
+ navigation.http_status_code());
+ ASSERT_EQ(0U, navigation.redirect_chain().size());
+}
+
+// Create a NavigationItem, then create another one by converting to
+// a SerializedNavigationEntry and back. The new one should match the old one
+// except for fields that aren't preserved, which should be set to
+// expected values.
+TEST(IOSSerializedNavigationBuilderTest, ToNavigationItem) {
+ const scoped_ptr<web::NavigationItem> old_navigation_item(
+ MakeNavigationItemForTest());
+
+ const SerializedNavigationEntry& navigation =
+ IOSSerializedNavigationBuilder::FromNavigationItem(
+ test_data::kIndex, *old_navigation_item);
+
+ const scoped_ptr<web::NavigationItem> new_navigation_item(
+ IOSSerializedNavigationBuilder::ToNavigationItem(
+ &navigation, test_data::kPageID));
+
+ EXPECT_EQ(old_navigation_item->GetURL(),
+ new_navigation_item->GetURL());
+ EXPECT_EQ(old_navigation_item->GetReferrer().url,
+ new_navigation_item->GetReferrer().url);
+ EXPECT_EQ(old_navigation_item->GetReferrer().policy,
+ new_navigation_item->GetReferrer().policy);
+ EXPECT_EQ(old_navigation_item->GetVirtualURL(),
+ new_navigation_item->GetVirtualURL());
+ EXPECT_EQ(old_navigation_item->GetTitle(),
+ new_navigation_item->GetTitle());
+ EXPECT_EQ(test_data::kPageID, new_navigation_item->GetPageID());
+ EXPECT_EQ(ui::PAGE_TRANSITION_RELOAD,
+ new_navigation_item->GetTransitionType());
+ EXPECT_EQ(old_navigation_item->GetTimestamp(),
+ new_navigation_item->GetTimestamp());
+}
+
+} // namespace sessions
diff --git a/components/sessions/ios/ios_serialized_navigation_driver.cc b/components/sessions/ios/ios_serialized_navigation_driver.cc
new file mode 100644
index 0000000..f6324ab
--- /dev/null
+++ b/components/sessions/ios/ios_serialized_navigation_driver.cc
@@ -0,0 +1,79 @@
+// Copyright 2014 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 "components/sessions/ios/ios_serialized_navigation_driver.h"
+
+#include "base/memory/singleton.h"
+#include "components/sessions/serialized_navigation_entry.h"
+#include "ios/web/public/referrer.h"
+
+namespace sessions {
+
+// static
+SerializedNavigationDriver* SerializedNavigationDriver::Get() {
+ return IOSSerializedNavigationDriver::GetInstance();
+}
+
+// static
+IOSSerializedNavigationDriver*
+IOSSerializedNavigationDriver::GetInstance() {
+ return Singleton<IOSSerializedNavigationDriver,
+ LeakySingletonTraits<IOSSerializedNavigationDriver>>::get();
+}
+
+IOSSerializedNavigationDriver::IOSSerializedNavigationDriver() {
+}
+
+IOSSerializedNavigationDriver::~IOSSerializedNavigationDriver() {
+}
+
+int IOSSerializedNavigationDriver::GetDefaultReferrerPolicy() const {
+ return web::ReferrerPolicyDefault;
+}
+
+std::string
+IOSSerializedNavigationDriver::GetSanitizedPageStateForPickle(
+ const SerializedNavigationEntry* navigation) const {
+ return std::string();
+}
+
+void IOSSerializedNavigationDriver::Sanitize(
+ SerializedNavigationEntry* navigation) const {
+ web::Referrer referrer(
+ navigation->referrer_url_,
+ static_cast<web::ReferrerPolicy>(navigation->referrer_policy_));
+
+ if (!navigation->virtual_url_.SchemeIsHTTPOrHTTPS() ||
+ !referrer.url.SchemeIsHTTPOrHTTPS()) {
+ referrer.url = GURL();
+ } else {
+ switch (referrer.policy) {
+ case web::ReferrerPolicyDefault:
+ if (referrer.url.SchemeIsSecure() &&
+ !navigation->virtual_url_.SchemeIsSecure()) {
+ referrer.url = GURL();
+ }
+ break;
+ case web::ReferrerPolicyAlways:
+ break;
+ case web::ReferrerPolicyNever:
+ referrer.url = GURL();
+ break;
+ case web::ReferrerPolicyOrigin:
+ referrer.url = referrer.url.GetOrigin();
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+ }
+
+ // Reset the referrer if it has changed.
+ if (navigation->referrer_url_ != referrer.url) {
+ navigation->referrer_url_ = GURL();
+ navigation->referrer_policy_ = GetDefaultReferrerPolicy();
+ }
+}
+
+} // namespace sessions
diff --git a/components/sessions/ios/ios_serialized_navigation_driver.h b/components/sessions/ios/ios_serialized_navigation_driver.h
new file mode 100644
index 0000000..d5b7f88
--- /dev/null
+++ b/components/sessions/ios/ios_serialized_navigation_driver.h
@@ -0,0 +1,38 @@
+// Copyright 2014 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.
+
+#ifndef COMPONENTS_SESSIONS_IOS_IOS_SERIALIZED_NAVIGATION_DRIVER_H_
+#define COMPONENTS_SESSIONS_IOS_IOS_SERIALIZED_NAVIGATION_DRIVER_H_
+
+#include "components/sessions/core/serialized_navigation_driver.h"
+
+template <typename T> struct DefaultSingletonTraits;
+
+namespace sessions {
+
+// Provides an iOS implementation of SerializedNavigationDriver that is backed
+// by //ios/web classes.
+class IOSSerializedNavigationDriver
+ : public SerializedNavigationDriver {
+ public:
+ virtual ~IOSSerializedNavigationDriver();
+
+ // Returns the singleton IOSSerializedNavigationDriver. Almost all
+ // callers should use SerializedNavigationDriver::Get() instead.
+ static IOSSerializedNavigationDriver* GetInstance();
+
+ // SerializedNavigationDriver implementation.
+ int GetDefaultReferrerPolicy() const override;
+ std::string GetSanitizedPageStateForPickle(
+ const SerializedNavigationEntry* navigation) const override;
+ void Sanitize(SerializedNavigationEntry* navigation) const override;
+
+ private:
+ IOSSerializedNavigationDriver();
+ friend struct DefaultSingletonTraits<IOSSerializedNavigationDriver>;
+};
+
+} // namespace sessions
+
+#endif // COMPONENTS_SESSIONS_IOS_IOS_SERIALIZED_NAVIGATION_DRIVER_H_
diff --git a/components/sessions/ios/ios_serialized_navigation_driver_unittest.cc b/components/sessions/ios/ios_serialized_navigation_driver_unittest.cc
new file mode 100644
index 0000000..c9bde7f
--- /dev/null
+++ b/components/sessions/ios/ios_serialized_navigation_driver_unittest.cc
@@ -0,0 +1,92 @@
+// Copyright 2014 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 "components/sessions/ios/ios_serialized_navigation_driver.h"
+
+#include "components/sessions/serialized_navigation_entry.h"
+#include "components/sessions/serialized_navigation_entry_test_helper.h"
+#include "ios/web/public/referrer.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace sessions {
+
+// Tests that PageState data is properly sanitized when post data is present.
+TEST(IOSSerializedNavigationDriverTest, PickleSanitization) {
+ IOSSerializedNavigationDriver* driver =
+ IOSSerializedNavigationDriver::GetInstance();
+ SerializedNavigationEntry navigation =
+ SerializedNavigationEntryTestHelper::CreateNavigationForTest();
+ EXPECT_EQ(test_data::kEncodedPageState, navigation.encoded_page_state());
+
+ // Sanitization always clears the page state.
+ std::string sanitized_page_state =
+ driver->GetSanitizedPageStateForPickle(&navigation);
+ EXPECT_EQ(std::string(), sanitized_page_state);
+}
+
+// Tests that the input data is left unsanitized when the referrer policy is
+// Always.
+TEST(IOSSerializedNavigationDriverTest, SanitizeWithReferrerPolicyAlways) {
+ IOSSerializedNavigationDriver* driver =
+ IOSSerializedNavigationDriver::GetInstance();
+ SerializedNavigationEntry navigation =
+ SerializedNavigationEntryTestHelper::CreateNavigationForTest();
+ SerializedNavigationEntryTestHelper::SetReferrerPolicy(
+ web::ReferrerPolicyAlways, &navigation);
+
+ driver->Sanitize(&navigation);
+ EXPECT_EQ(test_data::kIndex, navigation.index());
+ EXPECT_EQ(test_data::kUniqueID, navigation.unique_id());
+ EXPECT_EQ(test_data::kReferrerURL, navigation.referrer_url());
+ EXPECT_EQ(web::ReferrerPolicyAlways, navigation.referrer_policy());
+ EXPECT_EQ(test_data::kVirtualURL, navigation.virtual_url());
+ EXPECT_EQ(test_data::kTitle, navigation.title());
+ EXPECT_EQ(test_data::kEncodedPageState, navigation.encoded_page_state());
+ EXPECT_EQ(test_data::kTransitionType, navigation.transition_type());
+ EXPECT_EQ(test_data::kHasPostData, navigation.has_post_data());
+ EXPECT_EQ(test_data::kPostID, navigation.post_id());
+ EXPECT_EQ(test_data::kOriginalRequestURL, navigation.original_request_url());
+ EXPECT_EQ(test_data::kIsOverridingUserAgent,
+ navigation.is_overriding_user_agent());
+ EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
+ EXPECT_EQ(test_data::kSearchTerms, navigation.search_terms());
+ EXPECT_EQ(test_data::kFaviconURL, navigation.favicon_url());
+ EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code());
+}
+
+// Tests that the input data is properly sanitized when the referrer policy is
+// Never.
+TEST(IOSSerializedNavigationDriverTest, SanitizeWithReferrerPolicyNever) {
+ IOSSerializedNavigationDriver* driver =
+ IOSSerializedNavigationDriver::GetInstance();
+ SerializedNavigationEntry navigation =
+ SerializedNavigationEntryTestHelper::CreateNavigationForTest();
+ SerializedNavigationEntryTestHelper::SetReferrerPolicy(
+ web::ReferrerPolicyNever, &navigation);
+
+ driver->Sanitize(&navigation);
+
+ // Fields that should remain untouched.
+ EXPECT_EQ(test_data::kIndex, navigation.index());
+ EXPECT_EQ(test_data::kUniqueID, navigation.unique_id());
+ EXPECT_EQ(test_data::kVirtualURL, navigation.virtual_url());
+ EXPECT_EQ(test_data::kTitle, navigation.title());
+ EXPECT_EQ(test_data::kEncodedPageState, navigation.encoded_page_state());
+ EXPECT_EQ(test_data::kTransitionType, navigation.transition_type());
+ EXPECT_EQ(test_data::kHasPostData, navigation.has_post_data());
+ EXPECT_EQ(test_data::kPostID, navigation.post_id());
+ EXPECT_EQ(test_data::kOriginalRequestURL, navigation.original_request_url());
+ EXPECT_EQ(test_data::kIsOverridingUserAgent,
+ navigation.is_overriding_user_agent());
+ EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
+ EXPECT_EQ(test_data::kSearchTerms, navigation.search_terms());
+ EXPECT_EQ(test_data::kFaviconURL, navigation.favicon_url());
+ EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code());
+
+ // Fields that were sanitized.
+ EXPECT_EQ(GURL(), navigation.referrer_url());
+ EXPECT_EQ(web::ReferrerPolicyDefault, navigation.referrer_policy());
+}
+
+} // namespace sessions
diff --git a/components/sessions/serialized_navigation_entry.cc b/components/sessions/serialized_navigation_entry.cc
index 5135223..8c35828 100644
--- a/components/sessions/serialized_navigation_entry.cc
+++ b/components/sessions/serialized_navigation_entry.cc
@@ -9,7 +9,6 @@
#include "components/sessions/core/serialized_navigation_driver.h"
#include "sync/protocol/session_specifics.pb.h"
#include "sync/util/time.h"
-#include "third_party/WebKit/public/platform/WebReferrerPolicy.h"
namespace sessions {
diff --git a/components/sessions/serialized_navigation_entry.h b/components/sessions/serialized_navigation_entry.h
index 7db46c0..49ae3dd 100644
--- a/components/sessions/serialized_navigation_entry.h
+++ b/components/sessions/serialized_navigation_entry.h
@@ -109,6 +109,8 @@ class SESSIONS_EXPORT SerializedNavigationEntry {
friend class ContentSerializedNavigationBuilder;
friend class ContentSerializedNavigationDriver;
friend class SerializedNavigationEntryTestHelper;
+ friend class IOSSerializedNavigationBuilder;
+ friend class IOSSerializedNavigationDriver;
// Index in the NavigationController.
int index_;