Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(501)

Side by Side Diff: content/browser/download/save_file_manager.cc

Issue 10069016: TabContents -> WebContentsImpl, part 9. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/browser/download/save_file_manager.h ('k') | content/browser/download/save_package.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #include "content/browser/download/save_file_manager.h" 7 #include "content/browser/download/save_file_manager.h"
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 // unique save ID. 62 // unique save ID.
63 int SaveFileManager::GetNextId() { 63 int SaveFileManager::GetNextId() {
64 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 64 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
65 return next_id_++; 65 return next_id_++;
66 } 66 }
67 67
68 void SaveFileManager::RegisterStartingRequest(const GURL& save_url, 68 void SaveFileManager::RegisterStartingRequest(const GURL& save_url,
69 SavePackage* save_package) { 69 SavePackage* save_package) {
70 // Make sure it runs in the UI thread. 70 // Make sure it runs in the UI thread.
71 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 71 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
72 int tab_id = save_package->tab_id(); 72 int contents_id = save_package->contents_id();
73 73
74 // Register this starting request. 74 // Register this starting request.
75 StartingRequestsMap& starting_requests = tab_starting_requests_[tab_id]; 75 StartingRequestsMap& starting_requests =
76 contents_starting_requests_[contents_id];
76 bool never_present = starting_requests.insert( 77 bool never_present = starting_requests.insert(
77 StartingRequestsMap::value_type(save_url.spec(), save_package)).second; 78 StartingRequestsMap::value_type(save_url.spec(), save_package)).second;
78 DCHECK(never_present); 79 DCHECK(never_present);
79 } 80 }
80 81
81 SavePackage* SaveFileManager::UnregisterStartingRequest( 82 SavePackage* SaveFileManager::UnregisterStartingRequest(
82 const GURL& save_url, int tab_id) { 83 const GURL& save_url, int contents_id) {
83 // Make sure it runs in UI thread. 84 // Make sure it runs in UI thread.
84 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 85 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
85 86
86 TabToStartingRequestsMap::iterator it = tab_starting_requests_.find(tab_id); 87 ContentsToStartingRequestsMap::iterator it =
87 if (it != tab_starting_requests_.end()) { 88 contents_starting_requests_.find(contents_id);
89 if (it != contents_starting_requests_.end()) {
88 StartingRequestsMap& requests = it->second; 90 StartingRequestsMap& requests = it->second;
89 StartingRequestsMap::iterator sit = requests.find(save_url.spec()); 91 StartingRequestsMap::iterator sit = requests.find(save_url.spec());
90 if (sit == requests.end()) 92 if (sit == requests.end())
91 return NULL; 93 return NULL;
92 94
93 // Found, erase it from starting list and return SavePackage. 95 // Found, erase it from starting list and return SavePackage.
94 SavePackage* save_package = sit->second; 96 SavePackage* save_package = sit->second;
95 requests.erase(sit); 97 requests.erase(sit);
96 // If there is no element in requests, remove it 98 // If there is no element in requests, remove it
97 if (requests.empty()) 99 if (requests.empty())
98 tab_starting_requests_.erase(it); 100 contents_starting_requests_.erase(it);
99 return save_package; 101 return save_package;
100 } 102 }
101 103
102 return NULL; 104 return NULL;
103 } 105 }
104 106
105 // Look up a SavePackage according to a save id. 107 // Look up a SavePackage according to a save id.
106 SavePackage* SaveFileManager::LookupPackage(int save_id) { 108 SavePackage* SaveFileManager::LookupPackage(int save_id) {
107 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 109 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
108 SavePackageMap::iterator it = packages_.find(save_id); 110 SavePackageMap::iterator it = packages_.find(save_id);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 // If the save id is -1, it means we just send a request to save, but the 158 // If the save id is -1, it means we just send a request to save, but the
157 // saving action has still not happened, need to call UnregisterStartingRequest 159 // saving action has still not happened, need to call UnregisterStartingRequest
158 // to remove it from the tracking map. 160 // to remove it from the tracking map.
159 void SaveFileManager::RemoveSaveFile(int save_id, const GURL& save_url, 161 void SaveFileManager::RemoveSaveFile(int save_id, const GURL& save_url,
160 SavePackage* package) { 162 SavePackage* package) {
161 DCHECK(package); 163 DCHECK(package);
162 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 164 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
163 // A save page job (SavePackage) can only have one manager, 165 // A save page job (SavePackage) can only have one manager,
164 // so remove it if it exists. 166 // so remove it if it exists.
165 if (save_id == -1) { 167 if (save_id == -1) {
166 SavePackage* old_package = UnregisterStartingRequest(save_url, 168 SavePackage* old_package =
167 package->tab_id()); 169 UnregisterStartingRequest(save_url, package->contents_id());
168 DCHECK_EQ(old_package, package); 170 DCHECK_EQ(old_package, package);
169 } else { 171 } else {
170 SavePackageMap::iterator it = packages_.find(save_id); 172 SavePackageMap::iterator it = packages_.find(save_id);
171 if (it != packages_.end()) 173 if (it != packages_.end())
172 packages_.erase(it); 174 packages_.erase(it);
173 } 175 }
174 } 176 }
175 177
176 // Static 178 // Static
177 SavePackage* SaveFileManager::GetSavePackageFromRenderIds( 179 SavePackage* SaveFileManager::GetSavePackageFromRenderIds(
178 int render_process_id, int render_view_id) { 180 int render_process_id, int render_view_id) {
179 RenderViewHostImpl* render_view_host = 181 RenderViewHostImpl* render_view_host =
180 RenderViewHostImpl::FromID(render_process_id, render_view_id); 182 RenderViewHostImpl::FromID(render_process_id, render_view_id);
181 if (!render_view_host) 183 if (!render_view_host)
182 return NULL; 184 return NULL;
183 185
184 TabContents* tab = static_cast<TabContents*>( 186 WebContentsImpl* contents = static_cast<WebContentsImpl*>(
185 render_view_host->GetDelegate()->GetAsWebContents()); 187 render_view_host->GetDelegate()->GetAsWebContents());
186 if (!tab) 188 if (!contents)
187 return NULL; 189 return NULL;
188 190
189 return tab->save_package(); 191 return contents->save_package();
190 } 192 }
191 193
192 void SaveFileManager::DeleteDirectoryOrFile(const FilePath& full_path, 194 void SaveFileManager::DeleteDirectoryOrFile(const FilePath& full_path,
193 bool is_dir) { 195 bool is_dir) {
194 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 196 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
195 BrowserThread::PostTask( 197 BrowserThread::PostTask(
196 BrowserThread::FILE, FROM_HERE, 198 BrowserThread::FILE, FROM_HERE,
197 base::Bind(&SaveFileManager::OnDeleteDirectoryOrFile, 199 base::Bind(&SaveFileManager::OnDeleteDirectoryOrFile,
198 this, full_path, is_dir)); 200 this, full_path, is_dir));
199 } 201 }
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 337
336 void SaveFileManager::OnSaveFinished(int save_id, 338 void SaveFileManager::OnSaveFinished(int save_id,
337 int64 bytes_so_far, 339 int64 bytes_so_far,
338 bool is_success) { 340 bool is_success) {
339 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 341 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
340 SavePackage* package = LookupPackage(save_id); 342 SavePackage* package = LookupPackage(save_id);
341 if (package) 343 if (package)
342 package->SaveFinished(save_id, bytes_so_far, is_success); 344 package->SaveFinished(save_id, bytes_so_far, is_success);
343 } 345 }
344 346
345 void SaveFileManager::OnErrorFinished(const GURL& save_url, int tab_id) { 347 void SaveFileManager::OnErrorFinished(const GURL& save_url, int contents_id) {
346 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 348 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
347 SavePackage* save_package = UnregisterStartingRequest(save_url, tab_id); 349 SavePackage* save_package = UnregisterStartingRequest(save_url, contents_id);
348 if (save_package) 350 if (save_package)
349 save_package->SaveFailed(save_url); 351 save_package->SaveFailed(save_url);
350 } 352 }
351 353
352 // Notifications sent from the UI thread and run on the IO thread. 354 // Notifications sent from the UI thread and run on the IO thread.
353 355
354 void SaveFileManager::OnSaveURL( 356 void SaveFileManager::OnSaveURL(
355 const GURL& url, 357 const GURL& url,
356 const GURL& referrer, 358 const GURL& referrer,
357 int render_process_host_id, 359 int render_process_host_id,
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 SaveFileMap::iterator it = save_file_map_.find(*i); 517 SaveFileMap::iterator it = save_file_map_.find(*i);
516 if (it != save_file_map_.end()) { 518 if (it != save_file_map_.end()) {
517 SaveFile* save_file = it->second; 519 SaveFile* save_file = it->second;
518 DCHECK(!save_file->InProgress()); 520 DCHECK(!save_file->InProgress());
519 file_util::Delete(save_file->FullPath(), false); 521 file_util::Delete(save_file->FullPath(), false);
520 delete save_file; 522 delete save_file;
521 save_file_map_.erase(it); 523 save_file_map_.erase(it);
522 } 524 }
523 } 525 }
524 } 526 }
OLDNEW
« no previous file with comments | « content/browser/download/save_file_manager.h ('k') | content/browser/download/save_package.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698