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

Side by Side Diff: content/browser/background_fetch/background_fetch_job_controller.cc

Issue 2860593003: Refactoring DownloadManager::DownloadURL to add proper annotation. (Closed)
Patch Set: Comment addressed. Created 3 years, 6 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
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "content/browser/background_fetch/background_fetch_job_controller.h" 5 #include "content/browser/background_fetch/background_fetch_job_controller.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 52
53 ~Core() final { 53 ~Core() final {
54 for (const auto& pair : downloads_) 54 for (const auto& pair : downloads_)
55 pair.first->RemoveObserver(this); 55 pair.first->RemoveObserver(this);
56 } 56 }
57 57
58 // Returns a weak pointer that can be used to talk to |this|. 58 // Returns a weak pointer that can be used to talk to |this|.
59 base::WeakPtr<Core> GetWeakPtr() { return weak_ptr_factory_.GetWeakPtr(); } 59 base::WeakPtr<Core> GetWeakPtr() { return weak_ptr_factory_.GetWeakPtr(); }
60 60
61 // Starts fetching the |request| with the download manager. 61 // Starts fetching the |request| with the download manager.
62 void StartRequest(scoped_refptr<BackgroundFetchRequestInfo> request) { 62 void StartRequest(
63 scoped_refptr<BackgroundFetchRequestInfo> request,
64 const net::NetworkTrafficAnnotationTag& traffic_annotation) {
63 DCHECK_CURRENTLY_ON(BrowserThread::UI); 65 DCHECK_CURRENTLY_ON(BrowserThread::UI);
64 DCHECK(request_context_); 66 DCHECK(request_context_);
65 DCHECK(request); 67 DCHECK(request);
66 68
67 DownloadManager* download_manager = 69 DownloadManager* download_manager =
68 BrowserContext::GetDownloadManager(browser_context_); 70 BrowserContext::GetDownloadManager(browser_context_);
69 DCHECK(download_manager); 71 DCHECK(download_manager);
70 72
71 const ServiceWorkerFetchRequest& fetch_request = request->fetch_request(); 73 const ServiceWorkerFetchRequest& fetch_request = request->fetch_request();
72 74
(...skipping 28 matching lines...) Expand all
101 if (base::android::GetDownloadInternalDirectory(&download_directory)) { 103 if (base::android::GetDownloadInternalDirectory(&download_directory)) {
102 download_parameters->set_file_path(download_directory.Append( 104 download_parameters->set_file_path(download_directory.Append(
103 std::string(kBackgroundFetchFilePrefix) + base::GenerateGUID())); 105 std::string(kBackgroundFetchFilePrefix) + base::GenerateGUID()));
104 } 106 }
105 #endif // defined(OS_ANDROID) 107 #endif // defined(OS_ANDROID)
106 108
107 download_parameters->set_callback(base::Bind(&Core::DidStartRequest, 109 download_parameters->set_callback(base::Bind(&Core::DidStartRequest,
108 weak_ptr_factory_.GetWeakPtr(), 110 weak_ptr_factory_.GetWeakPtr(),
109 std::move(request))); 111 std::move(request)));
110 112
111 download_manager->DownloadUrl(std::move(download_parameters)); 113 download_manager->DownloadUrl(std::move(download_parameters),
114 traffic_annotation);
112 } 115 }
113 116
114 // DownloadItem::Observer overrides: 117 // DownloadItem::Observer overrides:
115 void OnDownloadUpdated(DownloadItem* download_item) override { 118 void OnDownloadUpdated(DownloadItem* download_item) override {
116 DCHECK_CURRENTLY_ON(BrowserThread::UI); 119 DCHECK_CURRENTLY_ON(BrowserThread::UI);
117 120
118 auto iter = downloads_.find(download_item); 121 auto iter = downloads_.find(download_item);
119 DCHECK(iter != downloads_.end()); 122 DCHECK(iter != downloads_.end());
120 123
121 scoped_refptr<BackgroundFetchRequestInfo> request = iter->second; 124 scoped_refptr<BackgroundFetchRequestInfo> request = iter->second;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 ui_core_.reset(new Core(weak_ptr_factory_.GetWeakPtr(), registration_id, 232 ui_core_.reset(new Core(weak_ptr_factory_.GetWeakPtr(), registration_id,
230 browser_context, std::move(request_context))); 233 browser_context, std::move(request_context)));
231 234
232 // Get a WeakPtr over which we can talk to the |ui_core_|. 235 // Get a WeakPtr over which we can talk to the |ui_core_|.
233 ui_core_ptr_ = ui_core_->GetWeakPtr(); 236 ui_core_ptr_ = ui_core_->GetWeakPtr();
234 } 237 }
235 238
236 BackgroundFetchJobController::~BackgroundFetchJobController() = default; 239 BackgroundFetchJobController::~BackgroundFetchJobController() = default;
237 240
238 void BackgroundFetchJobController::Start( 241 void BackgroundFetchJobController::Start(
239 std::vector<scoped_refptr<BackgroundFetchRequestInfo>> initial_requests) { 242 std::vector<scoped_refptr<BackgroundFetchRequestInfo>> initial_requests,
243 const net::NetworkTrafficAnnotationTag& traffic_annotation) {
240 DCHECK_CURRENTLY_ON(BrowserThread::IO); 244 DCHECK_CURRENTLY_ON(BrowserThread::IO);
241 DCHECK_LE(initial_requests.size(), kMaximumBackgroundFetchParallelRequests); 245 DCHECK_LE(initial_requests.size(), kMaximumBackgroundFetchParallelRequests);
242 DCHECK_EQ(state_, State::INITIALIZED); 246 DCHECK_EQ(state_, State::INITIALIZED);
243 247
244 state_ = State::FETCHING; 248 state_ = State::FETCHING;
245 249
246 for (const auto& request : initial_requests) 250 for (const auto& request : initial_requests)
247 StartRequest(request); 251 StartRequest(request, traffic_annotation);
248 } 252 }
249 253
250 void BackgroundFetchJobController::StartRequest( 254 void BackgroundFetchJobController::StartRequest(
251 scoped_refptr<BackgroundFetchRequestInfo> request) { 255 scoped_refptr<BackgroundFetchRequestInfo> request,
256 const net::NetworkTrafficAnnotationTag& traffic_annotation) {
252 DCHECK_CURRENTLY_ON(BrowserThread::IO); 257 DCHECK_CURRENTLY_ON(BrowserThread::IO);
253 DCHECK_EQ(state_, State::FETCHING); 258 DCHECK_EQ(state_, State::FETCHING);
254 BrowserThread::PostTask( 259 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
255 BrowserThread::UI, FROM_HERE, 260 base::Bind(&Core::StartRequest, ui_core_ptr_,
256 base::Bind(&Core::StartRequest, ui_core_ptr_, std::move(request))); 261 std::move(request), traffic_annotation));
257 } 262 }
258 263
259 void BackgroundFetchJobController::DidStartRequest( 264 void BackgroundFetchJobController::DidStartRequest(
260 scoped_refptr<BackgroundFetchRequestInfo> request, 265 scoped_refptr<BackgroundFetchRequestInfo> request,
261 const std::string& download_guid) { 266 const std::string& download_guid) {
262 DCHECK_CURRENTLY_ON(BrowserThread::IO); 267 DCHECK_CURRENTLY_ON(BrowserThread::IO);
263 data_manager_->MarkRequestAsStarted(registration_id_, request.get(), 268 data_manager_->MarkRequestAsStarted(registration_id_, request.get(),
264 download_guid); 269 download_guid);
265 } 270 }
266 271
(...skipping 11 matching lines...) Expand all
278 weak_ptr_factory_.GetWeakPtr())); 283 weak_ptr_factory_.GetWeakPtr()));
279 } 284 }
280 285
281 void BackgroundFetchJobController::DidGetNextRequest( 286 void BackgroundFetchJobController::DidGetNextRequest(
282 scoped_refptr<BackgroundFetchRequestInfo> request) { 287 scoped_refptr<BackgroundFetchRequestInfo> request) {
283 DCHECK_LE(pending_completed_file_acknowledgements_, 1); 288 DCHECK_LE(pending_completed_file_acknowledgements_, 1);
284 pending_completed_file_acknowledgements_--; 289 pending_completed_file_acknowledgements_--;
285 290
286 // If a |request| has been given, start downloading the file and bail. 291 // If a |request| has been given, start downloading the file and bail.
287 if (request) { 292 if (request) {
288 StartRequest(std::move(request)); 293 StartRequest(std::move(request), NO_TRAFFIC_ANNOTATION_YET);
289 return; 294 return;
290 } 295 }
291 296
292 // If there are outstanding completed file acknowlegements, bail as well. 297 // If there are outstanding completed file acknowlegements, bail as well.
293 if (pending_completed_file_acknowledgements_ > 0) 298 if (pending_completed_file_acknowledgements_ > 0)
294 return; 299 return;
295 300
296 state_ = State::COMPLETED; 301 state_ = State::COMPLETED;
297 302
298 // Otherwise the job this controller is responsible for has completed. 303 // Otherwise the job this controller is responsible for has completed.
(...skipping 11 matching lines...) Expand all
310 315
311 // TODO(harkness): Abort all in-progress downloads. 316 // TODO(harkness): Abort all in-progress downloads.
312 317
313 state_ = State::ABORTED; 318 state_ = State::ABORTED;
314 319
315 // Inform the owner of the controller about the job having completed. 320 // Inform the owner of the controller about the job having completed.
316 std::move(completed_callback_).Run(this); 321 std::move(completed_callback_).Run(this);
317 } 322 }
318 323
319 } // namespace content 324 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698