summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sessions
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
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')
-rw-r--r--chrome/browser/sessions/base_session_service.cc20
-rw-r--r--chrome/browser/sessions/session_service_test_helper.cc3
-rw-r--r--chrome/browser/sessions/session_service_unittest.cc49
-rw-r--r--chrome/browser/sessions/session_types.cc2
-rw-r--r--chrome/browser/sessions/session_types.h7
5 files changed, 51 insertions, 30 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);
diff --git a/chrome/browser/sessions/session_service_test_helper.cc b/chrome/browser/sessions/session_service_test_helper.cc
index 11e1f43..24909d39 100644
--- a/chrome/browser/sessions/session_service_test_helper.cc
+++ b/chrome/browser/sessions/session_service_test_helper.cc
@@ -77,7 +77,8 @@ void SessionServiceTestHelper::AssertNavigationEquals(
const TabNavigation& expected,
const TabNavigation& actual) {
EXPECT_TRUE(expected.virtual_url() == actual.virtual_url());
- EXPECT_EQ(expected.referrer(), actual.referrer());
+ EXPECT_EQ(expected.referrer().url, actual.referrer().url);
+ EXPECT_EQ(expected.referrer().policy, actual.referrer().policy);
EXPECT_EQ(expected.title(), actual.title());
EXPECT_EQ(expected.state(), actual.state());
EXPECT_EQ(expected.transition(), actual.transition());
diff --git a/chrome/browser/sessions/session_service_unittest.cc b/chrome/browser/sessions/session_service_unittest.cc
index 75573db..f6cd26b 100644
--- a/chrome/browser/sessions/session_service_unittest.cc
+++ b/chrome/browser/sessions/session_service_unittest.cc
@@ -98,7 +98,8 @@ class SessionServiceTest : public BrowserWithTestWindowTest,
bool CreateAndWriteSessionWithOneTab(bool pinned_state, bool write_always) {
SessionID tab_id;
TabNavigation nav1(0, GURL("http://google.com"),
- GURL("http://www.referrer.com"),
+ content::Referrer(GURL("http://www.referrer.com"),
+ WebKit::WebReferrerPolicyDefault),
ASCIIToUTF16("abc"), "def",
content::PAGE_TRANSITION_QUALIFIER_MASK);
@@ -146,7 +147,8 @@ TEST_F(SessionServiceTest, Basic) {
ASSERT_NE(window_id.id(), tab_id.id());
TabNavigation nav1(0, GURL("http://google.com"),
- GURL("http://www.referrer.com"),
+ content::Referrer(GURL("http://www.referrer.com"),
+ WebKit::WebReferrerPolicyDefault),
ASCIIToUTF16("abc"), "def",
content::PAGE_TRANSITION_QUALIFIER_MASK);
@@ -174,7 +176,7 @@ TEST_F(SessionServiceTest, PersistPostData) {
SessionID tab_id;
ASSERT_NE(window_id.id(), tab_id.id());
- TabNavigation nav1(0, GURL("http://google.com"), GURL(),
+ TabNavigation nav1(0, GURL("http://google.com"), content::Referrer(),
ASCIIToUTF16("abc"), std::string(),
content::PAGE_TRANSITION_QUALIFIER_MASK);
nav1.set_type_mask(TabNavigation::HAS_POST_DATA);
@@ -193,10 +195,10 @@ TEST_F(SessionServiceTest, ClosingTabStaysClosed) {
SessionID tab2_id;
ASSERT_NE(tab_id.id(), tab2_id.id());
- TabNavigation nav1(0, GURL("http://google.com"), GURL(),
+ TabNavigation nav1(0, GURL("http://google.com"), content::Referrer(),
ASCIIToUTF16("abc"), "def",
content::PAGE_TRANSITION_QUALIFIER_MASK);
- TabNavigation nav2(0, GURL("http://google2.com"), GURL(),
+ TabNavigation nav2(0, GURL("http://google2.com"), content::Referrer(),
ASCIIToUTF16("abcd"), "defg",
content::PAGE_TRANSITION_AUTO_BOOKMARK);
@@ -224,10 +226,10 @@ TEST_F(SessionServiceTest, ClosingTabStaysClosed) {
TEST_F(SessionServiceTest, Pruning) {
SessionID tab_id;
- TabNavigation nav1(0, GURL("http://google.com"), GURL(),
+ TabNavigation nav1(0, GURL("http://google.com"), content::Referrer(),
ASCIIToUTF16("abc"), "def",
content::PAGE_TRANSITION_QUALIFIER_MASK);
- TabNavigation nav2(0, GURL("http://google2.com"), GURL(),
+ TabNavigation nav2(0, GURL("http://google2.com"), content::Referrer(),
ASCIIToUTF16("abcd"), "defg",
content::PAGE_TRANSITION_AUTO_BOOKMARK);
@@ -260,10 +262,10 @@ TEST_F(SessionServiceTest, TwoWindows) {
SessionID tab1_id;
SessionID tab2_id;
- TabNavigation nav1(0, GURL("http://google.com"), GURL(),
+ TabNavigation nav1(0, GURL("http://google.com"), content::Referrer(),
ASCIIToUTF16("abc"), "def",
content::PAGE_TRANSITION_QUALIFIER_MASK);
- TabNavigation nav2(0, GURL("http://google2.com"), GURL(),
+ TabNavigation nav2(0, GURL("http://google2.com"), content::Referrer(),
ASCIIToUTF16("abcd"), "defg",
content::PAGE_TRANSITION_AUTO_BOOKMARK);
@@ -317,7 +319,7 @@ TEST_F(SessionServiceTest, WindowWithNoTabsGetsPruned) {
SessionID tab1_id;
SessionID tab2_id;
- TabNavigation nav1(0, GURL("http://google.com"), GURL(),
+ TabNavigation nav1(0, GURL("http://google.com"), content::Referrer(),
ASCIIToUTF16("abc"), "def",
content::PAGE_TRANSITION_QUALIFIER_MASK);
@@ -349,10 +351,10 @@ TEST_F(SessionServiceTest, ClosingWindowDoesntCloseTabs) {
SessionID tab2_id;
ASSERT_NE(tab_id.id(), tab2_id.id());
- TabNavigation nav1(0, GURL("http://google.com"), GURL(),
+ TabNavigation nav1(0, GURL("http://google.com"), content::Referrer(),
ASCIIToUTF16("abc"), "def",
content::PAGE_TRANSITION_QUALIFIER_MASK);
- TabNavigation nav2(0, GURL("http://google2.com"), GURL(),
+ TabNavigation nav2(0, GURL("http://google2.com"), content::Referrer(),
ASCIIToUTF16("abcd"), "defg",
content::PAGE_TRANSITION_AUTO_BOOKMARK);
@@ -392,10 +394,10 @@ TEST_F(SessionServiceTest, WindowCloseCommittedAfterNavigate) {
window_bounds,
ui::SHOW_STATE_NORMAL);
- TabNavigation nav1(0, GURL("http://google.com"), GURL(),
+ TabNavigation nav1(0, GURL("http://google.com"), content::Referrer(),
ASCIIToUTF16("abc"), "def",
content::PAGE_TRANSITION_QUALIFIER_MASK);
- TabNavigation nav2(0, GURL("http://google2.com"), GURL(),
+ TabNavigation nav2(0, GURL("http://google2.com"), content::Referrer(),
ASCIIToUTF16("abcd"), "defg",
content::PAGE_TRANSITION_AUTO_BOOKMARK);
@@ -437,10 +439,10 @@ TEST_F(SessionServiceTest, IgnorePopups) {
window_bounds,
ui::SHOW_STATE_NORMAL);
- TabNavigation nav1(0, GURL("http://google.com"), GURL(),
+ TabNavigation nav1(0, GURL("http://google.com"), content::Referrer(),
ASCIIToUTF16("abc"), "def",
content::PAGE_TRANSITION_QUALIFIER_MASK);
- TabNavigation nav2(0, GURL("http://google2.com"), GURL(),
+ TabNavigation nav2(0, GURL("http://google2.com"), content::Referrer(),
ASCIIToUTF16("abcd"), "defg",
content::PAGE_TRANSITION_AUTO_BOOKMARK);
@@ -478,10 +480,10 @@ TEST_F(SessionServiceTest, RestorePopup) {
window_bounds,
ui::SHOW_STATE_NORMAL);
- TabNavigation nav1(0, GURL("http://google.com"), GURL(),
+ TabNavigation nav1(0, GURL("http://google.com"), content::Referrer(),
ASCIIToUTF16("abc"), "def",
content::PAGE_TRANSITION_QUALIFIER_MASK);
- TabNavigation nav2(0, GURL("http://google2.com"), GURL(),
+ TabNavigation nav2(0, GURL("http://google2.com"), content::Referrer(),
ASCIIToUTF16("abcd"), "defg",
content::PAGE_TRANSITION_AUTO_BOOKMARK);
@@ -524,7 +526,8 @@ TEST_F(SessionServiceTest, PruneFromFront) {
// Add 5 navigations, with the 4th selected.
for (int i = 0; i < 5; ++i) {
- TabNavigation nav(0, GURL(base_url + base::IntToString(i)), GURL(),
+ TabNavigation nav(0, GURL(base_url + base::IntToString(i)),
+ content::Referrer(),
ASCIIToUTF16("a"), "b",
content::PAGE_TRANSITION_QUALIFIER_MASK);
UpdateNavigation(window_id, tab_id, nav, i, (i == 3));
@@ -566,7 +569,8 @@ TEST_F(SessionServiceTest, PruneToEmpty) {
// Add 5 navigations, with the 4th selected.
for (int i = 0; i < 5; ++i) {
- TabNavigation nav(0, GURL(base_url + base::IntToString(i)), GURL(),
+ TabNavigation nav(0, GURL(base_url + base::IntToString(i)),
+ content::Referrer(),
ASCIIToUTF16("a"), "b",
content::PAGE_TRANSITION_QUALIFIER_MASK);
UpdateNavigation(window_id, tab_id, nav, i, (i == 3));
@@ -598,7 +602,7 @@ TEST_F(SessionServiceTest, PersistApplicationExtensionID) {
ASSERT_NE(window_id.id(), tab_id.id());
std::string app_id("foo");
- TabNavigation nav1(0, GURL("http://google.com"), GURL(),
+ TabNavigation nav1(0, GURL("http://google.com"), content::Referrer(),
ASCIIToUTF16("abc"), std::string(),
content::PAGE_TRANSITION_QUALIFIER_MASK);
@@ -665,7 +669,8 @@ TEST_F(SessionServiceTest, CloseTabUserGesture) {
ASSERT_NE(window_id.id(), tab_id.id());
TabNavigation nav1(0, GURL("http://google.com"),
- GURL("http://www.referrer.com"),
+ content::Referrer(GURL("http://www.referrer.com"),
+ WebKit::WebReferrerPolicyDefault),
ASCIIToUTF16("abc"), "def",
content::PAGE_TRANSITION_QUALIFIER_MASK);
diff --git a/chrome/browser/sessions/session_types.cc b/chrome/browser/sessions/session_types.cc
index 70c8b9e..39b92b8 100644
--- a/chrome/browser/sessions/session_types.cc
+++ b/chrome/browser/sessions/session_types.cc
@@ -20,7 +20,7 @@ TabNavigation::TabNavigation()
TabNavigation::TabNavigation(int index,
const GURL& virtual_url,
- const GURL& referrer,
+ const content::Referrer& referrer,
const string16& title,
const std::string& state,
content::PageTransition transition)
diff --git a/chrome/browser/sessions/session_types.h b/chrome/browser/sessions/session_types.h
index 01ed823..c56a508 100644
--- a/chrome/browser/sessions/session_types.h
+++ b/chrome/browser/sessions/session_types.h
@@ -14,6 +14,7 @@
#include "base/time.h"
#include "chrome/browser/sessions/session_id.h"
#include "content/public/common/page_transition_types.h"
+#include "content/public/common/referrer.h"
#include "googleurl/src/gurl.h"
#include "ui/base/ui_base_types.h"
#include "ui/gfx/rect.h"
@@ -36,7 +37,7 @@ class TabNavigation {
TabNavigation();
TabNavigation(int index,
const GURL& virtual_url,
- const GURL& referrer,
+ const content::Referrer& referrer,
const string16& title,
const std::string& state,
content::PageTransition transition);
@@ -56,7 +57,7 @@ class TabNavigation {
const GURL& virtual_url() const { return virtual_url_; }
// The referrer.
- const GURL& referrer() const { return referrer_; }
+ const content::Referrer& referrer() const { return referrer_; }
// The title of the page.
void set_title(const string16& title) { title_ = title; }
@@ -95,7 +96,7 @@ class TabNavigation {
friend class BaseSessionService;
GURL virtual_url_;
- GURL referrer_;
+ content::Referrer referrer_;
string16 title_;
std::string state_;
content::PageTransition transition_;