summaryrefslogtreecommitdiffstats
path: root/content
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 /content
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 'content')
-rw-r--r--content/browser/site_instance_unittest.cc9
-rw-r--r--content/browser/tab_contents/navigation_controller.cc11
-rw-r--r--content/browser/tab_contents/navigation_controller.h3
-rw-r--r--content/browser/tab_contents/navigation_controller_unittest.cc8
-rw-r--r--content/browser/tab_contents/navigation_entry.cc2
-rw-r--r--content/browser/tab_contents/navigation_entry.h9
-rw-r--r--content/browser/tab_contents/navigation_entry_unittest.cc22
-rw-r--r--content/browser/tab_contents/render_view_host_manager_unittest.cc32
-rw-r--r--content/browser/tab_contents/tab_contents.cc3
9 files changed, 53 insertions, 46 deletions
diff --git a/content/browser/site_instance_unittest.cc b/content/browser/site_instance_unittest.cc
index 1c8b47c..9e439b4 100644
--- a/content/browser/site_instance_unittest.cc
+++ b/content/browser/site_instance_unittest.cc
@@ -173,7 +173,8 @@ TEST_F(SiteInstanceTest, SiteInstanceDestructor) {
&browsingDeleteCounter);
EXPECT_EQ(0, siteDeleteCounter);
- NavigationEntry* e1 = new NavigationEntry(instance, 0, url, GURL(),
+ NavigationEntry* e1 = new NavigationEntry(instance, 0, url,
+ content::Referrer(),
string16(),
content::PAGE_TRANSITION_LINK,
false);
@@ -184,7 +185,7 @@ TEST_F(SiteInstanceTest, SiteInstanceDestructor) {
// Add a second reference
NavigationEntry* e2 = new NavigationEntry(instance, 0, url,
- GURL(), string16(),
+ content::Referrer(), string16(),
content::PAGE_TRANSITION_LINK,
false);
@@ -239,8 +240,8 @@ TEST_F(SiteInstanceTest, CloneNavigationEntry) {
TestSiteInstance::CreateTestSiteInstance(NULL, &siteDeleteCounter2,
&browsingDeleteCounter);
- NavigationEntry* e1 = new NavigationEntry(instance1, 0, url, GURL(),
- string16(),
+ NavigationEntry* e1 = new NavigationEntry(instance1, 0, url,
+ content::Referrer(), string16(),
content::PAGE_TRANSITION_LINK,
false);
// Clone the entry
diff --git a/content/browser/tab_contents/navigation_controller.cc b/content/browser/tab_contents/navigation_controller.cc
index 13a6766..a194a7e 100644
--- a/content/browser/tab_contents/navigation_controller.cc
+++ b/content/browser/tab_contents/navigation_controller.cc
@@ -223,7 +223,8 @@ bool NavigationController::IsInitialNavigation() {
// static
NavigationEntry* NavigationController::CreateNavigationEntry(
- const GURL& url, const GURL& referrer, content::PageTransition transition,
+ const GURL& url, const content::Referrer& referrer,
+ content::PageTransition transition,
bool is_renderer_initiated, const std::string& extra_headers,
content::BrowserContext* browser_context) {
// Allow the browser URL handler to rewrite the URL. This will, for example,
@@ -508,7 +509,7 @@ void NavigationController::TransferURL(
// The user initiated a load, we don't need to reload anymore.
needs_reload_ = false;
- NavigationEntry* entry = CreateNavigationEntry(url, referrer.url, transition,
+ NavigationEntry* entry = CreateNavigationEntry(url, referrer, transition,
is_renderer_initiated,
extra_headers,
browser_context_);
@@ -525,7 +526,7 @@ void NavigationController::LoadURL(
// The user initiated a load, we don't need to reload anymore.
needs_reload_ = false;
- NavigationEntry* entry = CreateNavigationEntry(url, referrer.url, transition,
+ NavigationEntry* entry = CreateNavigationEntry(url, referrer, transition,
false,
extra_headers,
browser_context_);
@@ -541,7 +542,7 @@ void NavigationController::LoadURLFromRenderer(
// The user initiated a load, we don't need to reload anymore.
needs_reload_ = false;
- NavigationEntry* entry = CreateNavigationEntry(url, referrer.url, transition,
+ NavigationEntry* entry = CreateNavigationEntry(url, referrer, transition,
true,
extra_headers,
browser_context_);
@@ -803,7 +804,7 @@ void NavigationController::RendererDidNavigateToNewPage(
new_entry->set_url(params.url);
if (update_virtual_url)
UpdateVirtualURLToURL(new_entry, params.url);
- new_entry->set_referrer(params.referrer.url);
+ new_entry->set_referrer(params.referrer);
new_entry->set_page_id(params.page_id);
new_entry->set_transition_type(params.transition);
new_entry->set_site_instance(tab_contents_->GetSiteInstance());
diff --git a/content/browser/tab_contents/navigation_controller.h b/content/browser/tab_contents/navigation_controller.h
index 710c33e..a5c5a9c 100644
--- a/content/browser/tab_contents/navigation_controller.h
+++ b/content/browser/tab_contents/navigation_controller.h
@@ -30,6 +30,7 @@ struct ViewHostMsg_FrameNavigate_Params;
namespace content {
class BrowserContext;
struct LoadCommittedDetails;
+struct Referrer;
}
// A NavigationController maintains the back-forward list for a single tab and
@@ -352,7 +353,7 @@ class CONTENT_EXPORT NavigationController {
// separated by \n.
static NavigationEntry* CreateNavigationEntry(
const GURL& url,
- const GURL& referrer,
+ const content::Referrer& referrer,
content::PageTransition transition,
bool is_renderer_initiated,
const std::string& extra_headers,
diff --git a/content/browser/tab_contents/navigation_controller_unittest.cc b/content/browser/tab_contents/navigation_controller_unittest.cc
index d9871d4..bcd87cb 100644
--- a/content/browser/tab_contents/navigation_controller_unittest.cc
+++ b/content/browser/tab_contents/navigation_controller_unittest.cc
@@ -1477,8 +1477,8 @@ TEST_F(NavigationControllerTest, RestoreNavigate) {
GURL url("http://foo");
std::vector<NavigationEntry*> entries;
NavigationEntry* entry = NavigationController::CreateNavigationEntry(
- url, GURL(), content::PAGE_TRANSITION_RELOAD, false, std::string(),
- browser_context());
+ url, content::Referrer(), content::PAGE_TRANSITION_RELOAD, false,
+ std::string(), browser_context());
entry->set_page_id(0);
entry->set_title(ASCIIToUTF16("Title"));
entry->set_content_state("state");
@@ -1537,8 +1537,8 @@ TEST_F(NavigationControllerTest, RestoreNavigateAfterFailure) {
GURL url("http://foo");
std::vector<NavigationEntry*> entries;
NavigationEntry* entry = NavigationController::CreateNavigationEntry(
- url, GURL(), content::PAGE_TRANSITION_RELOAD, false, std::string(),
- browser_context());
+ url, content::Referrer(), content::PAGE_TRANSITION_RELOAD, false,
+ std::string(), browser_context());
entry->set_page_id(0);
entry->set_title(ASCIIToUTF16("Title"));
entry->set_content_state("state");
diff --git a/content/browser/tab_contents/navigation_entry.cc b/content/browser/tab_contents/navigation_entry.cc
index b84050a..8efaab4 100644
--- a/content/browser/tab_contents/navigation_entry.cc
+++ b/content/browser/tab_contents/navigation_entry.cc
@@ -49,7 +49,7 @@ NavigationEntry::NavigationEntry()
NavigationEntry::NavigationEntry(SiteInstance* instance,
int page_id,
const GURL& url,
- const GURL& referrer,
+ const content::Referrer& referrer,
const string16& title,
content::PageTransition transition_type,
bool is_renderer_initiated)
diff --git a/content/browser/tab_contents/navigation_entry.h b/content/browser/tab_contents/navigation_entry.h
index 8648ebb..6b139a1 100644
--- a/content/browser/tab_contents/navigation_entry.h
+++ b/content/browser/tab_contents/navigation_entry.h
@@ -14,6 +14,7 @@
#include "content/common/content_export.h"
#include "content/public/common/page_transition_types.h"
#include "content/public/common/page_type.h"
+#include "content/public/common/referrer.h"
#include "content/public/common/security_style.h"
#include "googleurl/src/gurl.h"
#include "net/base/cert_status_flags.h"
@@ -185,7 +186,7 @@ class CONTENT_EXPORT NavigationEntry {
NavigationEntry(SiteInstance* instance,
int page_id,
const GURL& url,
- const GURL& referrer,
+ const content::Referrer& referrer,
const string16& title,
content::PageTransition transition_type,
bool is_renderer_initiated);
@@ -237,10 +238,10 @@ class CONTENT_EXPORT NavigationEntry {
}
// The referring URL. Can be empty.
- void set_referrer(const GURL& referrer) {
+ void set_referrer(const content::Referrer& referrer) {
referrer_ = referrer;
}
- const GURL& referrer() const {
+ const content::Referrer& referrer() const {
return referrer_;
}
@@ -434,7 +435,7 @@ class CONTENT_EXPORT NavigationEntry {
scoped_refptr<SiteInstance> site_instance_;
content::PageType page_type_;
GURL url_;
- GURL referrer_;
+ content::Referrer referrer_;
GURL virtual_url_;
bool update_virtual_url_with_url_;
string16 title_;
diff --git a/content/browser/tab_contents/navigation_entry_unittest.cc b/content/browser/tab_contents/navigation_entry_unittest.cc
index 2dbece97..4d394ef 100644
--- a/content/browser/tab_contents/navigation_entry_unittest.cc
+++ b/content/browser/tab_contents/navigation_entry_unittest.cc
@@ -18,12 +18,13 @@ class NavigationEntryTest : public testing::Test {
entry1_.reset(new NavigationEntry);
instance_ = SiteInstance::CreateSiteInstance(NULL);
- entry2_.reset(new NavigationEntry(instance_, 3,
- GURL("test:url"),
- GURL("from"),
- ASCIIToUTF16("title"),
- content::PAGE_TRANSITION_TYPED,
- false));
+ entry2_.reset(new NavigationEntry(
+ instance_, 3,
+ GURL("test:url"),
+ content::Referrer(GURL("from"), WebKit::WebReferrerPolicyDefault),
+ ASCIIToUTF16("title"),
+ content::PAGE_TRANSITION_TYPED,
+ false));
}
virtual void TearDown() {
@@ -151,10 +152,11 @@ TEST_F(NavigationEntryTest, NavigationEntryAccessors) {
EXPECT_EQ(content::PAGE_TYPE_INTERSTITIAL, entry2_.get()->page_type());
// Referrer
- EXPECT_EQ(GURL(), entry1_.get()->referrer());
- EXPECT_EQ(GURL("from"), entry2_.get()->referrer());
- entry2_.get()->set_referrer(GURL("from2"));
- EXPECT_EQ(GURL("from2"), entry2_.get()->referrer());
+ EXPECT_EQ(GURL(), entry1_.get()->referrer().url);
+ EXPECT_EQ(GURL("from"), entry2_.get()->referrer().url);
+ entry2_.get()->set_referrer(
+ content::Referrer(GURL("from2"), WebKit::WebReferrerPolicyDefault));
+ EXPECT_EQ(GURL("from2"), entry2_.get()->referrer().url);
// Title
EXPECT_EQ(string16(), entry1_.get()->title());
diff --git a/content/browser/tab_contents/render_view_host_manager_unittest.cc b/content/browser/tab_contents/render_view_host_manager_unittest.cc
index 0d0c02d..6d84a63 100644
--- a/content/browser/tab_contents/render_view_host_manager_unittest.cc
+++ b/content/browser/tab_contents/render_view_host_manager_unittest.cc
@@ -300,7 +300,7 @@ TEST_F(RenderViewHostManagerTest, Navigate) {
// 1) The first navigation. --------------------------
const GURL kUrl1("http://www.google.com/");
NavigationEntry entry1(NULL /* instance */, -1 /* page_id */, kUrl1,
- GURL() /* referrer */, string16() /* title */,
+ content::Referrer(), string16() /* title */,
content::PAGE_TRANSITION_TYPED,
false /* is_renderer_init */);
host = manager.Navigate(entry1);
@@ -319,10 +319,11 @@ TEST_F(RenderViewHostManagerTest, Navigate) {
// 2) Navigate to next site. -------------------------
const GURL kUrl2("http://www.google.com/foo");
- NavigationEntry entry2(NULL /* instance */, -1 /* page_id */, kUrl2,
- kUrl1 /* referrer */, string16() /* title */,
- content::PAGE_TRANSITION_LINK,
- true /* is_renderer_init */);
+ NavigationEntry entry2(
+ NULL /* instance */, -1 /* page_id */, kUrl2,
+ content::Referrer(kUrl1, WebKit::WebReferrerPolicyDefault),
+ string16() /* title */, content::PAGE_TRANSITION_LINK,
+ true /* is_renderer_init */);
host = manager.Navigate(entry2);
// The RenderViewHost created in Init will be reused.
@@ -337,10 +338,11 @@ TEST_F(RenderViewHostManagerTest, Navigate) {
// 3) Cross-site navigate to next site. --------------
const GURL kUrl3("http://webkit.org/");
- NavigationEntry entry3(NULL /* instance */, -1 /* page_id */, kUrl3,
- kUrl2 /* referrer */, string16() /* title */,
- content::PAGE_TRANSITION_LINK,
- false /* is_renderer_init */);
+ NavigationEntry entry3(
+ NULL /* instance */, -1 /* page_id */, kUrl3,
+ content::Referrer(kUrl2, WebKit::WebReferrerPolicyDefault),
+ string16() /* title */, content::PAGE_TRANSITION_LINK,
+ false /* is_renderer_init */);
host = manager.Navigate(entry3);
// A new RenderViewHost should be created.
@@ -384,7 +386,7 @@ TEST_F(RenderViewHostManagerTest, NavigateWithEarlyReNavigation) {
// 1) The first navigation. --------------------------
const GURL kUrl1("http://www.google.com/");
NavigationEntry entry1(NULL /* instance */, -1 /* page_id */, kUrl1,
- GURL() /* referrer */, string16() /* title */,
+ content::Referrer(), string16() /* title */,
content::PAGE_TRANSITION_TYPED,
false /* is_renderer_init */);
RenderViewHost* host = manager.Navigate(entry1);
@@ -410,7 +412,7 @@ TEST_F(RenderViewHostManagerTest, NavigateWithEarlyReNavigation) {
// 2) Cross-site navigate to next site. -------------------------
const GURL kUrl2("http://www.example.com");
NavigationEntry entry2(NULL /* instance */, -1 /* page_id */, kUrl2,
- GURL() /* referrer */, string16() /* title */,
+ content::Referrer(), string16() /* title */,
content::PAGE_TRANSITION_TYPED,
false /* is_renderer_init */);
RenderViewHost* host2 = manager.Navigate(entry2);
@@ -458,7 +460,7 @@ TEST_F(RenderViewHostManagerTest, NavigateWithEarlyReNavigation) {
// 3) Cross-site navigate to next site before 2) has committed. --------------
const GURL kUrl3("http://webkit.org/");
NavigationEntry entry3(NULL /* instance */, -1 /* page_id */, kUrl3,
- GURL() /* referrer */, string16() /* title */,
+ content::Referrer(), string16() /* title */,
content::PAGE_TRANSITION_TYPED,
false /* is_renderer_init */);
RenderViewHost* host3 = manager.Navigate(entry3);
@@ -510,7 +512,7 @@ TEST_F(RenderViewHostManagerTest, WebUI) {
const GURL kUrl(chrome::kTestNewTabURL);
NavigationEntry entry(NULL /* instance */, -1 /* page_id */, kUrl,
- GURL() /* referrer */, string16() /* title */,
+ content::Referrer(), string16() /* title */,
content::PAGE_TRANSITION_TYPED,
false /* is_renderer_init */);
RenderViewHost* host = manager.Navigate(entry);
@@ -549,14 +551,14 @@ TEST_F(RenderViewHostManagerTest, NonWebUIChromeURLs) {
// NTP is a Web UI page.
const GURL kNtpUrl(chrome::kTestNewTabURL);
NavigationEntry ntp_entry(NULL /* instance */, -1 /* page_id */, kNtpUrl,
- GURL() /* referrer */, string16() /* title */,
+ content::Referrer(), string16() /* title */,
content::PAGE_TRANSITION_TYPED,
false /* is_renderer_init */);
// A URL with the Chrome UI scheme, that isn't handled by Web UI.
GURL about_url(kChromeUISchemeButNotWebUIURL);
NavigationEntry about_entry(NULL /* instance */, -1 /* page_id */, about_url,
- GURL() /* referrer */, string16() /* title */,
+ content::Referrer(), string16() /* title */,
content::PAGE_TRANSITION_TYPED,
false /* is_renderer_init */);
diff --git a/content/browser/tab_contents/tab_contents.cc b/content/browser/tab_contents/tab_contents.cc
index 1e8881f..e716148 100644
--- a/content/browser/tab_contents/tab_contents.cc
+++ b/content/browser/tab_contents/tab_contents.cc
@@ -160,8 +160,7 @@ void MakeNavigateParams(const NavigationEntry& entry,
params->current_history_list_offset = controller.last_committed_entry_index();
params->current_history_list_length = controller.entry_count();
params->url = entry.url();
- params->referrer = content::Referrer(entry.referrer(),
- WebKit::WebReferrerPolicyDefault);
+ params->referrer = entry.referrer();
params->transition = entry.transition_type();
params->state = entry.content_state();
params->navigation_type =