diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-12 00:22:46 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-12 00:22:46 +0000 |
commit | c2d9865134afd8c10f392b3bc0b3e9206f9d87a3 (patch) | |
tree | 4e1a015e79f642c51938902e263e1694d7058835 | |
parent | a0c2a06993ded904d18f29acbce37f896ec82701 (diff) | |
download | chromium_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.cc | 4 | ||||
-rw-r--r-- | content/browser/download/save_file_manager.h | 5 | ||||
-rw-r--r-- | content/browser/download/save_item.cc | 4 | ||||
-rw-r--r-- | content/browser/download/save_item.h | 9 | ||||
-rw-r--r-- | content/browser/download/save_package.cc | 6 | ||||
-rw-r--r-- | content/browser/download/save_package.h | 3 | ||||
-rw-r--r-- | content/browser/renderer_host/resource_dispatcher_host_impl.cc | 5 | ||||
-rw-r--r-- | content/browser/renderer_host/resource_dispatcher_host_impl.h | 3 | ||||
-rw-r--r-- | content/common/view_messages.h | 2 | ||||
-rw-r--r-- | content/renderer/render_view_impl.cc | 19 | ||||
-rw-r--r-- | webkit/glue/dom_operations.cc | 5 | ||||
-rw-r--r-- | webkit/glue/dom_operations.h | 18 | ||||
-rw-r--r-- | webkit/glue/dom_operations_unittest.cc | 8 |
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[] = { |