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 /content | |
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 'content')
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 = |