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

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

Issue 2978603003: [Background Fetch] Tidy up getting/activating pending requests (Closed)
Patch Set: Address 2nd round review comments Created 3 years, 5 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_context.h" 5 #include "content/browser/background_fetch/background_fetch_context.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "content/browser/background_fetch/background_fetch_data_manager.h" 8 #include "content/browser/background_fetch/background_fetch_data_manager.h"
9 #include "content/browser/background_fetch/background_fetch_event_dispatcher.h" 9 #include "content/browser/background_fetch/background_fetch_event_dispatcher.h"
10 #include "content/browser/background_fetch/background_fetch_job_controller.h" 10 #include "content/browser/background_fetch/background_fetch_job_controller.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 registration_id, requests, options, 69 registration_id, requests, options,
70 base::BindOnce(&BackgroundFetchContext::DidCreateRegistration, 70 base::BindOnce(&BackgroundFetchContext::DidCreateRegistration,
71 weak_factory_.GetWeakPtr(), registration_id, options, 71 weak_factory_.GetWeakPtr(), registration_id, options,
72 std::move(callback))); 72 std::move(callback)));
73 } 73 }
74 74
75 void BackgroundFetchContext::DidCreateRegistration( 75 void BackgroundFetchContext::DidCreateRegistration(
76 const BackgroundFetchRegistrationId& registration_id, 76 const BackgroundFetchRegistrationId& registration_id,
77 const BackgroundFetchOptions& options, 77 const BackgroundFetchOptions& options,
78 blink::mojom::BackgroundFetchService::FetchCallback callback, 78 blink::mojom::BackgroundFetchService::FetchCallback callback,
79 blink::mojom::BackgroundFetchError error, 79 blink::mojom::BackgroundFetchError error) {
80 std::vector<scoped_refptr<BackgroundFetchRequestInfo>> initial_requests) {
81 DCHECK_CURRENTLY_ON(BrowserThread::IO); 80 DCHECK_CURRENTLY_ON(BrowserThread::IO);
82 81
83 RecordRegistrationCreatedError(error); 82 RecordRegistrationCreatedError(error);
84 if (error != blink::mojom::BackgroundFetchError::NONE) { 83 if (error != blink::mojom::BackgroundFetchError::NONE) {
85 std::move(callback).Run(error, base::nullopt /* registration */); 84 std::move(callback).Run(error, base::nullopt /* registration */);
86 return; 85 return;
87 } 86 }
88 87
89 // Create the BackgroundFetchJobController, which will do the actual fetching. 88 // Create the BackgroundFetchJobController, which will do the actual fetching.
90 CreateController(registration_id, options, std::move(initial_requests)); 89 CreateController(registration_id, options);
91 90
92 // Create the BackgroundFetchRegistration the renderer process will receive, 91 // Create the BackgroundFetchRegistration the renderer process will receive,
93 // which enables it to resolve the promise telling the developer it worked. 92 // which enables it to resolve the promise telling the developer it worked.
94 BackgroundFetchRegistration registration; 93 BackgroundFetchRegistration registration;
95 registration.tag = registration_id.tag(); 94 registration.tag = registration_id.tag();
96 registration.icons = options.icons; 95 registration.icons = options.icons;
97 registration.title = options.title; 96 registration.title = options.title;
98 registration.total_download_size = options.total_download_size; 97 registration.total_download_size = options.total_download_size;
99 98
100 std::move(callback).Run(blink::mojom::BackgroundFetchError::NONE, 99 std::move(callback).Run(blink::mojom::BackgroundFetchError::NONE,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 if (controller->state() == BackgroundFetchJobController::State::ABORTED || 134 if (controller->state() == BackgroundFetchJobController::State::ABORTED ||
136 controller->state() == BackgroundFetchJobController::State::COMPLETED) { 135 controller->state() == BackgroundFetchJobController::State::COMPLETED) {
137 return nullptr; 136 return nullptr;
138 } 137 }
139 138
140 return controller; 139 return controller;
141 } 140 }
142 141
143 void BackgroundFetchContext::CreateController( 142 void BackgroundFetchContext::CreateController(
144 const BackgroundFetchRegistrationId& registration_id, 143 const BackgroundFetchRegistrationId& registration_id,
145 const BackgroundFetchOptions& options, 144 const BackgroundFetchOptions& options) {
146 std::vector<scoped_refptr<BackgroundFetchRequestInfo>> initial_requests) {
147 DCHECK_CURRENTLY_ON(BrowserThread::IO); 145 DCHECK_CURRENTLY_ON(BrowserThread::IO);
148 146
149 net::NetworkTrafficAnnotationTag traffic_annotation = 147 net::NetworkTrafficAnnotationTag traffic_annotation =
150 net::DefineNetworkTrafficAnnotation("background_fetch_context", R"( 148 net::DefineNetworkTrafficAnnotation("background_fetch_context", R"(
151 semantics { 149 semantics {
152 sender: "Background Fetch API" 150 sender: "Background Fetch API"
153 description: 151 description:
154 "The Background Fetch API enables developers to upload or download " 152 "The Background Fetch API enables developers to upload or download "
155 "files on behalf of the user. Such fetches will yield a user " 153 "files on behalf of the user. Such fetches will yield a user "
156 "visible notification to inform the user of the operation, through " 154 "visible notification to inform the user of the operation, through "
(...skipping 19 matching lines...) Expand all
176 base::MakeUnique<BackgroundFetchJobController>( 174 base::MakeUnique<BackgroundFetchJobController>(
177 registration_id, options, data_manager_.get(), browser_context_, 175 registration_id, options, data_manager_.get(), browser_context_,
178 request_context_getter_, 176 request_context_getter_,
179 base::BindOnce(&BackgroundFetchContext::DidCompleteJob, 177 base::BindOnce(&BackgroundFetchContext::DidCompleteJob,
180 weak_factory_.GetWeakPtr()), 178 weak_factory_.GetWeakPtr()),
181 traffic_annotation); 179 traffic_annotation);
182 180
183 // TODO(peter): We should actually be able to use Background Fetch in layout 181 // TODO(peter): We should actually be able to use Background Fetch in layout
184 // tests. That requires a download manager and a request context. 182 // tests. That requires a download manager and a request context.
185 if (request_context_getter_) { 183 if (request_context_getter_) {
186 // Start fetching the |initial_requests| immediately. At some point in the 184 // Start fetching the first few requests immediately. At some point in the
187 // future we may want a more elaborate scheduling mechanism here. 185 // future we may want a more elaborate scheduling mechanism here.
188 controller->Start(std::move(initial_requests)); 186 controller->Start();
189 } 187 }
190 188
191 active_fetches_.insert( 189 active_fetches_.insert(
192 std::make_pair(registration_id, std::move(controller))); 190 std::make_pair(registration_id, std::move(controller)));
193 } 191 }
194 192
195 void BackgroundFetchContext::DidCompleteJob( 193 void BackgroundFetchContext::DidCompleteJob(
196 BackgroundFetchJobController* controller) { 194 BackgroundFetchJobController* controller) {
197 DCHECK_CURRENTLY_ON(BrowserThread::IO); 195 DCHECK_CURRENTLY_ON(BrowserThread::IO);
198 196
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 260
263 // Delete all persistent information associated with the |registration_id|. 261 // Delete all persistent information associated with the |registration_id|.
264 data_manager_->DeleteRegistration( 262 data_manager_->DeleteRegistration(
265 registration_id, base::BindOnce(&RecordRegistrationDeletedError)); 263 registration_id, base::BindOnce(&RecordRegistrationDeletedError));
266 264
267 // Delete the local state associated with the |registration_id|. 265 // Delete the local state associated with the |registration_id|.
268 active_fetches_.erase(registration_id); 266 active_fetches_.erase(registration_id);
269 } 267 }
270 268
271 } // namespace content 269 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698