diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-05 21:01:14 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-05 21:01:14 +0000 |
commit | cb8fb01a632a496caeba0b8602bbd698b259f571 (patch) | |
tree | 9288c943d08631225991fd086fe5a345aed0c148 /chrome/browser/sessions/base_session_service.cc | |
parent | 8f2fa3282fa65db14ed33ed711d0304cef954a29 (diff) | |
download | chromium_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.cc | 20 |
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); |