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 | |
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')
-rw-r--r-- | chrome/browser/sessions/base_session_service.cc | 20 | ||||
-rw-r--r-- | chrome/browser/sessions/session_service_test_helper.cc | 3 | ||||
-rw-r--r-- | chrome/browser/sessions/session_service_unittest.cc | 49 | ||||
-rw-r--r-- | chrome/browser/sessions/session_types.cc | 2 | ||||
-rw-r--r-- | chrome/browser/sessions/session_types.h | 7 |
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_; |