Index: chrome/browser/renderer_host/resource_dispatcher_host.h |
=================================================================== |
--- chrome/browser/renderer_host/resource_dispatcher_host.h (revision 60837) |
+++ chrome/browser/renderer_host/resource_dispatcher_host.h (working copy) |
@@ -47,6 +47,10 @@ |
struct ViewHostMsg_Resource_Request; |
struct ViewMsg_ClosePage_Params; |
+namespace webkit_blob { |
+class DeletableFileReference; |
+} |
+ |
class ResourceDispatcherHost : public URLRequest::Delegate { |
public: |
// Implemented by the client of ResourceDispatcherHost to receive messages in |
@@ -264,6 +268,15 @@ |
// messages sent. |
void DataReceivedACK(int process_unique_id, int request_id); |
+ // Maintains a collection of temp files created in support of |
+ // the download_to_file capability. Used to grant access to the |
+ // child process and to defer deletion of the file until it's |
+ // no longer needed. |
+ void RegisterDownloadedTempFile( |
+ int receiver_id, int request_id, |
+ webkit_blob::DeletableFileReference* reference); |
+ void UnregisterDownloadedTempFile(int receiver_id, int request_id); |
+ |
// Needed for the sync IPC message dispatcher macros. |
bool Send(IPC::Message* message); |
@@ -397,11 +410,13 @@ |
IPC::Message* sync_result, // only valid for sync |
int route_id); // only valid for async |
void OnDataReceivedACK(int request_id); |
+ void OnDataDownloadedACK(int request_id); |
void OnUploadProgressACK(int request_id); |
void OnCancelRequest(int request_id); |
void OnFollowRedirect(int request_id, |
bool has_new_first_party_for_cookies, |
const GURL& new_first_party_for_cookies); |
+ void OnReleaseDownloadedFile(int request_id); |
ResourceHandler* CreateSafeBrowsingResourceHandler( |
ResourceHandler* handler, int child_id, int route_id, |
@@ -432,6 +447,15 @@ |
PendingRequestList pending_requests_; |
+ // Collection of temp files downloaded for child processes via |
+ // the download_to_file mechanism. We avoid deleting them until |
+ // the client no longer needs them. |
+ typedef std::map<int, scoped_refptr<webkit_blob::DeletableFileReference> > |
+ DeletableFilesMap; // key is request id |
+ typedef std::map<int, DeletableFilesMap> |
+ RegisteredTempFiles; // key is child process id |
+ RegisteredTempFiles registered_temp_files_; |
+ |
// A timer that periodically calls UpdateLoadStates while pending_requests_ |
// is not empty. |
base::RepeatingTimer<ResourceDispatcherHost> update_load_states_timer_; |