summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sessions/base_session_service.cc
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-05 21:01:14 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-05 21:01:14 +0000
commitcb8fb01a632a496caeba0b8602bbd698b259f571 (patch)
tree9288c943d08631225991fd086fe5a345aed0c148 /chrome/browser/sessions/base_session_service.cc
parent8f2fa3282fa65db14ed33ed711d0304cef954a29 (diff)
downloadchromium_src-cb8fb01a632a496caeba0b8602bbd698b259f571.zip
chromium_src-cb8fb01a632a496caeba0b8602bbd698b259f571.tar.gz
chromium_src-cb8fb01a632a496caeba0b8602bbd698b259f571.tar.bz2
Make NavigationEntry and friends use content::Referrer instead of plain URLs
BUG=105028 TEST=none TBR=zea@chromium.org Review URL: http://codereview.chromium.org/8806011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113019 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sessions/base_session_service.cc')
-rw-r--r--chrome/browser/sessions/base_session_service.cc20
1 files changed, 17 insertions, 3 deletions
diff --git a/chrome/browser/sessions/base_session_service.cc b/chrome/browser/sessions/base_session_service.cc
index 93e0826..36edcec 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);