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

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

Issue 8806011: Make NavigationEntry and friends use content::Referrer instead of plain URLs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates Created 9 years 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/base_session_service.cc
diff --git a/chrome/browser/sessions/base_session_service.cc b/chrome/browser/sessions/base_session_service.cc
index 93e0826464290c4da560d90145e20ef970bb8a9a..36edcec6a3fba1c758454fa90ee5b2bf07fed5dd 100644
--- a/chrome/browser/sessions/base_session_service.cc
+++ b/chrome/browser/sessions/base_session_service.cc
@@ -14,8 +14,11 @@
#include "chrome/browser/sessions/session_types.h"
#include "chrome/common/url_constants.h"
#include "content/browser/tab_contents/navigation_entry.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebReferrerPolicy.h"
#include "webkit/glue/webkit_glue.h"
+using WebKit::WebReferrerPolicy;
+
// InternalGetCommandsRequest -------------------------------------------------
BaseSessionService::InternalGetCommandsRequest::~InternalGetCommandsRequest() {
@@ -178,7 +181,9 @@ SessionCommand* BaseSessionService::CreateUpdateTabNavigationCommand(
pickle.WriteInt(type_mask);
WriteStringToPickle(pickle, &bytes_written, max_state_size,
- entry.referrer().is_valid() ? entry.referrer().spec() : std::string());
+ entry.referrer().url.is_valid() ?
+ entry.referrer().url.spec() : std::string());
+ pickle.WriteInt(entry.referrer().policy);
// Adding more data? Be sure and update TabRestoreService too.
return new SessionCommand(command_id, pickle);
@@ -229,8 +234,17 @@ bool BaseSessionService::RestoreUpdateTabNavigationCommand(
// stream. As such, we don't fail if it can't be read.
std::string referrer_spec;
pickle->ReadString(&iterator, &referrer_spec);
- if (!referrer_spec.empty())
- navigation->referrer_ = 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.
+ int policy_int;
+ WebReferrerPolicy policy;
+ if (pickle->ReadInt(&iterator, &policy_int))
+ policy = static_cast<WebReferrerPolicy>(policy_int);
+ else
+ policy = WebKit::WebReferrerPolicyDefault;
+ navigation->referrer_ = content::Referrer(
+ referrer_spec.empty() ? GURL() : GURL(referrer_spec),
+ policy);
}
navigation->virtual_url_ = GURL(url_spec);
« no previous file with comments | « chrome/browser/safe_browsing/safe_browsing_service.cc ('k') | chrome/browser/sessions/session_service_test_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698