| Index: components/sessions/core/serialized_navigation_entry.cc
|
| diff --git a/components/sessions/core/serialized_navigation_entry.cc b/components/sessions/core/serialized_navigation_entry.cc
|
| index ca686b0add4feaa9f0568128ead68ed1b5836604..3dda4ae452bb051173dcc5eb57535f1d54a2ed89 100644
|
| --- a/components/sessions/core/serialized_navigation_entry.cc
|
| +++ b/components/sessions/core/serialized_navigation_entry.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include <stddef.h>
|
|
|
| +#include "base/macros.h"
|
| #include "base/pickle.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/trace_event/memory_usage_estimator.h"
|
| @@ -18,6 +19,9 @@ namespace sessions {
|
| // TODO(treib): Remove, not needed anymore. crbug.com/627747
|
| const char kSearchTermsKey[] = "search_terms";
|
|
|
| +// The previous referrer policy value corresponding to |Never|.
|
| +const int kObsoleteReferrerPolicyNever = 2;
|
| +
|
| SerializedNavigationEntry::SerializedNavigationEntry()
|
| : index_(-1),
|
| unique_id_(0),
|
| @@ -48,14 +52,8 @@ SerializedNavigationEntry SerializedNavigationEntry::FromSyncData(
|
| navigation.referrer_url_ = GURL(sync_data.referrer());
|
| navigation.referrer_policy_ = sync_data.correct_referrer_policy();
|
| } else {
|
| - int mapped_referrer_policy;
|
| - if (SerializedNavigationDriver::Get()->MapReferrerPolicyToNewValues(
|
| - sync_data.obsolete_referrer_policy(), &mapped_referrer_policy)) {
|
| - navigation.referrer_url_ = GURL(sync_data.referrer());
|
| - } else {
|
| - navigation.referrer_url_ = GURL();
|
| - }
|
| - navigation.referrer_policy_ = mapped_referrer_policy;
|
| + navigation.referrer_url_ = GURL();
|
| + navigation.referrer_policy_ = kObsoleteReferrerPolicyNever;
|
| }
|
| navigation.virtual_url_ = GURL(sync_data.virtual_url());
|
| navigation.title_ = base::UTF8ToUTF16(sync_data.title());
|
| @@ -236,15 +234,11 @@ void SerializedNavigationEntry::WriteToPickle(int max_size,
|
| const int type_mask = has_post_data_ ? HAS_POST_DATA : 0;
|
| pickle->WriteInt(type_mask);
|
|
|
| - int mapped_referrer_policy;
|
| - if (SerializedNavigationDriver::Get()->MapReferrerPolicyToOldValues(
|
| - referrer_policy_, &mapped_referrer_policy) &&
|
| - referrer_url_.is_valid()) {
|
| - WriteStringToPickle(pickle, &bytes_written, max_size, referrer_url_.spec());
|
| - } else {
|
| - WriteStringToPickle(pickle, &bytes_written, max_size, std::string());
|
| - }
|
| - pickle->WriteInt(mapped_referrer_policy);
|
| + WriteStringToPickle(pickle, &bytes_written, max_size, referrer_url_.spec());
|
| +
|
| + // This field was deprecated in m61, but we still write it to the pickle for
|
| + // forwards compatibility.
|
| + pickle->WriteInt(kObsoleteReferrerPolicyNever);
|
|
|
| // Save info required to override the user agent.
|
| WriteStringToPickle(
|
| @@ -294,15 +288,11 @@ bool SerializedNavigationEntry::ReadFromPickle(base::PickleIterator* iterator) {
|
| referrer_spec = std::string();
|
| referrer_url_ = GURL(referrer_spec);
|
|
|
| - // The "referrer policy" property was added even later, so we fall back to
|
| - // the default policy if the property is not present.
|
| - //
|
| - // Note: due to crbug.com/450589 this value might be incorrect, and a
|
| - // corrected version is stored later in the pickle.
|
| - if (!iterator->ReadInt(&referrer_policy_)) {
|
| - referrer_policy_ =
|
| - SerializedNavigationDriver::Get()->GetDefaultReferrerPolicy();
|
| - }
|
| + // Note: due to crbug.com/450589 the initial referrer policy is incorrect,
|
| + // and ignored. A correct referrer policy is extracted later (see
|
| + // |correct_referrer_policy| below).
|
| + int ignored_referrer_policy;
|
| + ignore_result(iterator->ReadInt(&ignored_referrer_policy));
|
|
|
| // If the original URL can't be found, leave it empty.
|
| std::string original_request_url_spec;
|
| @@ -333,12 +323,6 @@ bool SerializedNavigationEntry::ReadFromPickle(base::PickleIterator* iterator) {
|
| if (iterator->ReadInt(&correct_referrer_policy)) {
|
| referrer_policy_ = correct_referrer_policy;
|
| } else {
|
| - int mapped_referrer_policy;
|
| - if (!SerializedNavigationDriver::Get()->MapReferrerPolicyToNewValues(
|
| - referrer_policy_, &mapped_referrer_policy)) {
|
| - referrer_url_ = GURL();
|
| - }
|
| - referrer_policy_ = mapped_referrer_policy;
|
| encoded_page_state_ =
|
| SerializedNavigationDriver::Get()->StripReferrerFromPageState(
|
| encoded_page_state_);
|
| @@ -368,14 +352,7 @@ bool SerializedNavigationEntry::ReadFromPickle(base::PickleIterator* iterator) {
|
| sync_pb::TabNavigation SerializedNavigationEntry::ToSyncData() const {
|
| sync_pb::TabNavigation sync_data;
|
| sync_data.set_virtual_url(virtual_url_.spec());
|
| - int mapped_referrer_policy;
|
| - if (SerializedNavigationDriver::Get()->MapReferrerPolicyToOldValues(
|
| - referrer_policy_, &mapped_referrer_policy)) {
|
| - sync_data.set_referrer(referrer_url_.spec());
|
| - } else {
|
| - sync_data.set_referrer(std::string());
|
| - }
|
| - sync_data.set_obsolete_referrer_policy(mapped_referrer_policy);
|
| + sync_data.set_referrer(referrer_url_.spec());
|
| sync_data.set_correct_referrer_policy(referrer_policy_);
|
| sync_data.set_title(base::UTF16ToUTF8(title_));
|
|
|
|
|