summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-12 00:22:46 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-12 00:22:46 +0000
commitc2d9865134afd8c10f392b3bc0b3e9206f9d87a3 (patch)
tree4e1a015e79f642c51938902e263e1694d7058835
parenta0c2a06993ded904d18f29acbce37f896ec82701 (diff)
downloadchromium_src-c2d9865134afd8c10f392b3bc0b3e9206f9d87a3.zip
chromium_src-c2d9865134afd8c10f392b3bc0b3e9206f9d87a3.tar.gz
chromium_src-c2d9865134afd8c10f392b3bc0b3e9206f9d87a3.tar.bz2
Pass the referrer policy with the referrer for the save package code path
BUG=124750 TEST=none. That code path doesn't actually use referrers, it just passes empty GURL()s around. But it might one day. And then it supports referrer policies. Hurray. Review URL: https://chromiumcodereview.appspot.com/10387090 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136723 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/download/save_file_manager.cc4
-rw-r--r--content/browser/download/save_file_manager.h5
-rw-r--r--content/browser/download/save_item.cc4
-rw-r--r--content/browser/download/save_item.h9
-rw-r--r--content/browser/download/save_package.cc6
-rw-r--r--content/browser/download/save_package.h3
-rw-r--r--content/browser/renderer_host/resource_dispatcher_host_impl.cc5
-rw-r--r--content/browser/renderer_host/resource_dispatcher_host_impl.h3
-rw-r--r--content/common/view_messages.h2
-rw-r--r--content/renderer/render_view_impl.cc19
-rw-r--r--webkit/glue/dom_operations.cc5
-rw-r--r--webkit/glue/dom_operations.h18
-rw-r--r--webkit/glue/dom_operations_unittest.cc8
13 files changed, 57 insertions, 34 deletions
diff --git a/content/browser/download/save_file_manager.cc b/content/browser/download/save_file_manager.cc
index b4e88c1..cd7efbf 100644
--- a/content/browser/download/save_file_manager.cc
+++ b/content/browser/download/save_file_manager.cc
@@ -116,7 +116,7 @@ SavePackage* SaveFileManager::LookupPackage(int save_id) {
// Call from SavePackage for starting a saving job
void SaveFileManager::SaveURL(
const GURL& url,
- const GURL& referrer,
+ const content::Referrer& referrer,
int render_process_host_id,
int render_view_id,
SaveFileCreateInfo::SaveFileSource save_source,
@@ -355,7 +355,7 @@ void SaveFileManager::OnErrorFinished(const GURL& save_url, int contents_id) {
void SaveFileManager::OnSaveURL(
const GURL& url,
- const GURL& referrer,
+ const content::Referrer& referrer,
int render_process_host_id,
int render_view_id,
content::ResourceContext* context) {
diff --git a/content/browser/download/save_file_manager.h b/content/browser/download/save_file_manager.h
index c973011..a677fe8 100644
--- a/content/browser/download/save_file_manager.h
+++ b/content/browser/download/save_file_manager.h
@@ -73,6 +73,7 @@ class SaveFile;
class SavePackage;
namespace content {
+struct Referrer;
class ResourceContext;
}
@@ -96,7 +97,7 @@ class SaveFileManager
// Save the specified URL. Called on the UI thread and forwarded to the
// ResourceDispatcherHostImpl on the IO thread.
void SaveURL(const GURL& url,
- const GURL& referrer,
+ const content::Referrer& referrer,
int render_process_host_id,
int render_view_id,
SaveFileCreateInfo::SaveFileSource save_source,
@@ -206,7 +207,7 @@ class SaveFileManager
// Initiates a request for URL to be saved.
void OnSaveURL(const GURL& url,
- const GURL& referrer,
+ const content::Referrer& referrer,
int render_process_host_id,
int render_view_id,
content::ResourceContext* context);
diff --git a/content/browser/download/save_item.cc b/content/browser/download/save_item.cc
index d156b48..0d2001f 100644
--- a/content/browser/download/save_item.cc
+++ b/content/browser/download/save_item.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -13,7 +13,7 @@
// Constructor for SaveItem when creating each saving job.
SaveItem::SaveItem(const GURL& url,
- const GURL& referrer,
+ const content::Referrer& referrer,
SavePackage* package,
SaveFileCreateInfo::SaveFileSource save_source)
: save_id_(-1),
diff --git a/content/browser/download/save_item.h b/content/browser/download/save_item.h
index 53553d8..a2e47ce 100644
--- a/content/browser/download/save_item.h
+++ b/content/browser/download/save_item.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
@@ -9,6 +9,7 @@
#include "base/basictypes.h"
#include "base/file_path.h"
#include "content/browser/download/save_types.h"
+#include "content/public/common/referrer.h"
#include "googleurl/src/gurl.h"
class SavePackage;
@@ -25,7 +26,7 @@ class SaveItem {
};
SaveItem(const GURL& url,
- const GURL& referrer,
+ const content::Referrer& referrer,
SavePackage* package,
SaveFileCreateInfo::SaveFileSource save_source);
@@ -58,7 +59,7 @@ class SaveItem {
const FilePath& full_path() const { return full_path_; }
const FilePath& file_name() const { return file_name_; }
const GURL& url() const { return url_; }
- const GURL& referrer() const { return referrer_; }
+ const content::Referrer& referrer() const { return referrer_; }
int64 total_bytes() const { return total_bytes_; }
int64 received_bytes() const { return received_bytes_; }
int32 save_id() const { return save_id_; }
@@ -84,7 +85,7 @@ class SaveItem {
// The URL for this save item.
GURL url_;
- GURL referrer_;
+ content::Referrer referrer_;
// Total bytes expected.
int64 total_bytes_;
diff --git a/content/browser/download/save_package.cc b/content/browser/download/save_package.cc
index 15a97f6..f2f782c 100644
--- a/content/browser/download/save_package.cc
+++ b/content/browser/download/save_package.cc
@@ -311,7 +311,7 @@ bool SavePackage::Init(
SaveFileCreateInfo::SAVE_FILE_FROM_FILE :
SaveFileCreateInfo::SAVE_FILE_FROM_NET;
SaveItem* save_item = new SaveItem(page_url_,
- GURL(),
+ content::Referrer(),
this,
save_source);
// Add this item to waiting list.
@@ -1084,7 +1084,7 @@ void SavePackage::GetAllSavableResourceLinksForCurrentPage() {
// HTML data.
void SavePackage::OnReceivedSavableResourceLinksForCurrentPage(
const std::vector<GURL>& resources_list,
- const std::vector<GURL>& referrers_list,
+ const std::vector<content::Referrer>& referrers_list,
const std::vector<GURL>& frames_list) {
if (wait_state_ != RESOURCES_LIST)
return;
@@ -1113,7 +1113,7 @@ void SavePackage::OnReceivedSavableResourceLinksForCurrentPage(
for (int i = 0; i < static_cast<int>(frames_list.size()); ++i) {
const GURL& u = frames_list[i];
DCHECK(u.is_valid());
- SaveItem* save_item = new SaveItem(u, GURL(),
+ SaveItem* save_item = new SaveItem(u, content::Referrer(),
this, SaveFileCreateInfo::SAVE_FILE_FROM_DOM);
waiting_item_queue_.push(save_item);
}
diff --git a/content/browser/download/save_package.h b/content/browser/download/save_package.h
index 6edd59c..d35b9c3 100644
--- a/content/browser/download/save_package.h
+++ b/content/browser/download/save_package.h
@@ -22,6 +22,7 @@
#include "content/public/browser/download_manager_delegate.h"
#include "content/public/browser/save_page_type.h"
#include "content/public/browser/web_contents_observer.h"
+#include "content/public/common/referrer.h"
#include "googleurl/src/gurl.h"
class GURL;
@@ -198,7 +199,7 @@ class CONTENT_EXPORT SavePackage
const content::SavePackageDownloadCreatedCallback& cb);
void OnReceivedSavableResourceLinksForCurrentPage(
const std::vector<GURL>& resources_list,
- const std::vector<GURL>& referrers_list,
+ const std::vector<content::Referrer>& referrers_list,
const std::vector<GURL>& frames_list);
void OnReceivedSerializedHtmlData(const GURL& frame_url,
diff --git a/content/browser/renderer_host/resource_dispatcher_host_impl.cc b/content/browser/renderer_host/resource_dispatcher_host_impl.cc
index ecc525b..45b3092 100644
--- a/content/browser/renderer_host/resource_dispatcher_host_impl.cc
+++ b/content/browser/renderer_host/resource_dispatcher_host_impl.cc
@@ -1138,7 +1138,7 @@ void ResourceDispatcherHostImpl::OnDidLoadResourceFromMemoryCache(
// This function is only used for saving feature.
void ResourceDispatcherHostImpl::BeginSaveFile(
const GURL& url,
- const GURL& referrer,
+ const content::Referrer& referrer,
int child_id,
int route_id,
ResourceContext* context) {
@@ -1171,7 +1171,8 @@ void ResourceDispatcherHostImpl::BeginSaveFile(
net::URLRequest* request = new net::URLRequest(url, this);
request->set_method("GET");
- request->set_referrer(MaybeStripReferrer(referrer).spec());
+ request->set_referrer(MaybeStripReferrer(referrer.url).spec());
+ webkit_glue::ConfigureURLRequestForReferrerPolicy(request, referrer.policy);
// So far, for saving page, we need fetch content from cache, in the
// future, maybe we can use a configuration to configure this behavior.
request->set_load_flags(net::LOAD_PREFERRING_CACHE);
diff --git a/content/browser/renderer_host/resource_dispatcher_host_impl.h b/content/browser/renderer_host/resource_dispatcher_host_impl.h
index abfaee7..c306c46 100644
--- a/content/browser/renderer_host/resource_dispatcher_host_impl.h
+++ b/content/browser/renderer_host/resource_dispatcher_host_impl.h
@@ -57,6 +57,7 @@ class ResourceDispatcherHostDelegate;
class ResourceRequestInfoImpl;
struct DownloadSaveInfo;
struct GlobalRequestID;
+struct Referrer;
class CONTENT_EXPORT ResourceDispatcherHostImpl
: public ResourceDispatcherHost,
@@ -102,7 +103,7 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl
// Initiates a save file from the browser process (as opposed to a resource
// request from the renderer or another child process).
void BeginSaveFile(const GURL& url,
- const GURL& referrer,
+ const content::Referrer& referrer,
int child_id,
int route_id,
ResourceContext* context);
diff --git a/content/common/view_messages.h b/content/common/view_messages.h
index 957b465..4cf55f4 100644
--- a/content/common/view_messages.h
+++ b/content/common/view_messages.h
@@ -1995,7 +1995,7 @@ IPC_MESSAGE_CONTROL2(ViewHostMsg_SavedPageAsMHTML,
IPC_MESSAGE_ROUTED3(ViewHostMsg_SendCurrentPageAllSavableResourceLinks,
std::vector<GURL> /* all savable resource links */,
- std::vector<GURL> /* all referrers of resource links */,
+ std::vector<content::Referrer> /* all referrers */,
std::vector<GURL> /* all frame links */)
IPC_MESSAGE_ROUTED3(ViewHostMsg_SendSerializedHtmlData,
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index f915189..ca97f70 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -4428,14 +4428,15 @@ void RenderViewImpl::OnGetAllSavableResourceLinksForCurrentPage(
const GURL& page_url) {
// Prepare list to storage all savable resource links.
std::vector<GURL> resources_list;
- std::vector<GURL> referrers_list;
+ std::vector<GURL> referrer_urls_list;
+ std::vector<WebKit::WebReferrerPolicy> referrer_policies_list;
std::vector<GURL> frames_list;
webkit_glue::SavableResourcesResult result(&resources_list,
- &referrers_list,
+ &referrer_urls_list,
+ &referrer_policies_list,
&frames_list);
- // FIXME(rdsmith): When GetAllSavableResourceLinksForCurrentPage starts to
- // return referrers, it should also return the referrer policies.
+ // webkit/ doesn't know about content::Referrer.
if (!webkit_glue::GetAllSavableResourceLinksForCurrentPage(
webview(),
page_url,
@@ -4443,11 +4444,19 @@ void RenderViewImpl::OnGetAllSavableResourceLinksForCurrentPage(
content::GetSavableSchemes())) {
// If something is wrong when collecting all savable resource links,
// send empty list to embedder(browser) to tell it failed.
- referrers_list.clear();
+ referrer_urls_list.clear();
+ referrer_policies_list.clear();
resources_list.clear();
frames_list.clear();
}
+ std::vector<content::Referrer> referrers_list;
+ CHECK_EQ(referrer_urls_list.size(), referrer_policies_list.size());
+ for (unsigned i = 0; i < referrer_urls_list.size(); ++i) {
+ referrers_list.push_back(
+ content::Referrer(referrer_urls_list[i], referrer_policies_list[i]));
+ }
+
// Send result of all savable resource links to embedder.
Send(new ViewHostMsg_SendCurrentPageAllSavableResourceLinks(routing_id(),
resources_list,
diff --git a/webkit/glue/dom_operations.cc b/webkit/glue/dom_operations.cc
index 9468f2b..cedf58e 100644
--- a/webkit/glue/dom_operations.cc
+++ b/webkit/glue/dom_operations.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -98,7 +98,8 @@ void GetSavableResourceLinkForElement(
return;
result->resources_list->push_back(u);
// Insert referrer for above new resource link.
- result->referrers_list->push_back(GURL());
+ result->referrer_urls_list->push_back(GURL());
+ result->referrer_policies_list->push_back(WebKit::WebReferrerPolicyDefault);
}
// Get all savable resource links from current WebFrameImpl object pointer.
diff --git a/webkit/glue/dom_operations.h b/webkit/glue/dom_operations.h
index eb99966..bfaa40a 100644
--- a/webkit/glue/dom_operations.h
+++ b/webkit/glue/dom_operations.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -9,6 +9,7 @@
#include <vector>
#include "googleurl/src/gurl.h"
+#include "third_party/WebKit/Source/Platform/chromium/public/WebReferrerPolicy.h"
#include "webkit/glue/webkit_glue_export.h"
namespace WebKit {
@@ -30,16 +31,21 @@ struct SavableResourcesResult {
std::vector<GURL>* resources_list;
// vector which contains corresponding all referral links of sub resource,
// it matched with links one by one.
- std::vector<GURL>* referrers_list;
+ std::vector<GURL>* referrer_urls_list;
+ // and the corresponding referrer policies.
+ std::vector<WebKit::WebReferrerPolicy>* referrer_policies_list;
// vector which contains all savable links of main frame and sub frames.
std::vector<GURL>* frames_list;
// Constructor.
- SavableResourcesResult(std::vector<GURL>* resources_list,
- std::vector<GURL>* referrers_list,
- std::vector<GURL>* frames_list)
+ SavableResourcesResult(
+ std::vector<GURL>* resources_list,
+ std::vector<GURL>* referrer_urls_list,
+ std::vector<WebKit::WebReferrerPolicy>* referrer_policies_list,
+ std::vector<GURL>* frames_list)
: resources_list(resources_list),
- referrers_list(referrers_list),
+ referrer_urls_list(referrer_urls_list),
+ referrer_policies_list(referrer_policies_list),
frames_list(frames_list) { }
private:
diff --git a/webkit/glue/dom_operations_unittest.cc b/webkit/glue/dom_operations_unittest.cc
index 8d8d96b..05aeb76 100644
--- a/webkit/glue/dom_operations_unittest.cc
+++ b/webkit/glue/dom_operations_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -46,10 +46,12 @@ void DomOperationsTests::GetSavableResourceLinksForPage(
test_shell_->WaitTestFinished();
// Get all savable resource links for the page.
std::vector<GURL> resources_list;
- std::vector<GURL> referrers_list;
+ std::vector<GURL> referrer_urls_list;
+ std::vector<WebKit::WebReferrerPolicy> referrer_policies_list;
std::vector<GURL> frames_list;
webkit_glue::SavableResourcesResult result(&resources_list,
- &referrers_list,
+ &referrer_urls_list,
+ &referrer_policies_list,
&frames_list);
const char* savable_schemes[] = {