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

Unified Diff: components/sessions/core/serialized_navigation_entry.cc

Issue 2921883003: [Sync] Ensure referrer is recorded regardless of policy conversion (Closed)
Patch Set: Tighten Created 3 years, 6 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: 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_));
« no previous file with comments | « components/sessions/core/serialized_navigation_driver.h ('k') | components/sessions/ios/ios_serialized_navigation_driver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698