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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/sync_task_manager.cc

Issue 2189113002: Rename CalledOnValidSequencedThread() to CalledOnValidSequence(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" 5 #include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 } 72 }
73 73
74 SyncTaskManager::~SyncTaskManager() { 74 SyncTaskManager::~SyncTaskManager() {
75 weak_ptr_factory_.InvalidateWeakPtrs(); 75 weak_ptr_factory_.InvalidateWeakPtrs();
76 76
77 client_.reset(); 77 client_.reset();
78 token_.reset(); 78 token_.reset();
79 } 79 }
80 80
81 void SyncTaskManager::Initialize(SyncStatusCode status) { 81 void SyncTaskManager::Initialize(SyncStatusCode status) {
82 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 82 DCHECK(sequence_checker_.CalledOnValidSequence());
83 DCHECK(!token_); 83 DCHECK(!token_);
84 NotifyTaskDone( 84 NotifyTaskDone(
85 SyncTaskToken::CreateForForegroundTask( 85 SyncTaskToken::CreateForForegroundTask(
86 weak_ptr_factory_.GetWeakPtr(), task_runner_.get()), 86 weak_ptr_factory_.GetWeakPtr(), task_runner_.get()),
87 status); 87 status);
88 } 88 }
89 89
90 void SyncTaskManager::ScheduleTask( 90 void SyncTaskManager::ScheduleTask(
91 const tracked_objects::Location& from_here, 91 const tracked_objects::Location& from_here,
92 const Task& task, 92 const Task& task,
93 Priority priority, 93 Priority priority,
94 const SyncStatusCallback& callback) { 94 const SyncStatusCallback& callback) {
95 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 95 DCHECK(sequence_checker_.CalledOnValidSequence());
96 96
97 ScheduleSyncTask(from_here, 97 ScheduleSyncTask(from_here,
98 std::unique_ptr<SyncTask>(new SyncTaskAdapter(task)), 98 std::unique_ptr<SyncTask>(new SyncTaskAdapter(task)),
99 priority, callback); 99 priority, callback);
100 } 100 }
101 101
102 void SyncTaskManager::ScheduleSyncTask( 102 void SyncTaskManager::ScheduleSyncTask(
103 const tracked_objects::Location& from_here, 103 const tracked_objects::Location& from_here,
104 std::unique_ptr<SyncTask> task, 104 std::unique_ptr<SyncTask> task,
105 Priority priority, 105 Priority priority,
106 const SyncStatusCallback& callback) { 106 const SyncStatusCallback& callback) {
107 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 107 DCHECK(sequence_checker_.CalledOnValidSequence());
108 108
109 std::unique_ptr<SyncTaskToken> token(GetToken(from_here, callback)); 109 std::unique_ptr<SyncTaskToken> token(GetToken(from_here, callback));
110 if (!token) { 110 if (!token) {
111 PushPendingTask( 111 PushPendingTask(
112 base::Bind(&SyncTaskManager::ScheduleSyncTask, 112 base::Bind(&SyncTaskManager::ScheduleSyncTask,
113 weak_ptr_factory_.GetWeakPtr(), from_here, 113 weak_ptr_factory_.GetWeakPtr(), from_here,
114 base::Passed(&task), priority, callback), 114 base::Passed(&task), priority, callback),
115 priority); 115 priority);
116 return; 116 return;
117 } 117 }
118 RunTask(std::move(token), std::move(task)); 118 RunTask(std::move(token), std::move(task));
119 } 119 }
120 120
121 bool SyncTaskManager::ScheduleTaskIfIdle( 121 bool SyncTaskManager::ScheduleTaskIfIdle(
122 const tracked_objects::Location& from_here, 122 const tracked_objects::Location& from_here,
123 const Task& task, 123 const Task& task,
124 const SyncStatusCallback& callback) { 124 const SyncStatusCallback& callback) {
125 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 125 DCHECK(sequence_checker_.CalledOnValidSequence());
126 126
127 return ScheduleSyncTaskIfIdle( 127 return ScheduleSyncTaskIfIdle(
128 from_here, std::unique_ptr<SyncTask>(new SyncTaskAdapter(task)), 128 from_here, std::unique_ptr<SyncTask>(new SyncTaskAdapter(task)),
129 callback); 129 callback);
130 } 130 }
131 131
132 bool SyncTaskManager::ScheduleSyncTaskIfIdle( 132 bool SyncTaskManager::ScheduleSyncTaskIfIdle(
133 const tracked_objects::Location& from_here, 133 const tracked_objects::Location& from_here,
134 std::unique_ptr<SyncTask> task, 134 std::unique_ptr<SyncTask> task,
135 const SyncStatusCallback& callback) { 135 const SyncStatusCallback& callback) {
136 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 136 DCHECK(sequence_checker_.CalledOnValidSequence());
137 137
138 std::unique_ptr<SyncTaskToken> token(GetToken(from_here, callback)); 138 std::unique_ptr<SyncTaskToken> token(GetToken(from_here, callback));
139 if (!token) 139 if (!token)
140 return false; 140 return false;
141 RunTask(std::move(token), std::move(task)); 141 RunTask(std::move(token), std::move(task));
142 return true; 142 return true;
143 } 143 }
144 144
145 // static 145 // static
146 void SyncTaskManager::NotifyTaskDone(std::unique_ptr<SyncTaskToken> token, 146 void SyncTaskManager::NotifyTaskDone(std::unique_ptr<SyncTaskToken> token,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 foreground_task_token = std::move(current_task_token); 185 foreground_task_token = std::move(current_task_token);
186 else 186 else
187 background_task_token = std::move(current_task_token); 187 background_task_token = std::move(current_task_token);
188 188
189 manager->UpdateTaskBlockerBody( 189 manager->UpdateTaskBlockerBody(
190 std::move(foreground_task_token), std::move(background_task_token), 190 std::move(foreground_task_token), std::move(background_task_token),
191 std::move(task_log), std::move(task_blocker), continuation); 191 std::move(task_log), std::move(task_blocker), continuation);
192 } 192 }
193 193
194 bool SyncTaskManager::IsRunningTask(int64_t token_id) const { 194 bool SyncTaskManager::IsRunningTask(int64_t token_id) const {
195 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 195 DCHECK(sequence_checker_.CalledOnValidSequence());
196 196
197 // If the client is gone, all task should be aborted. 197 // If the client is gone, all task should be aborted.
198 if (!client_) 198 if (!client_)
199 return false; 199 return false;
200 200
201 if (token_id == SyncTaskToken::kForegroundTaskTokenID) 201 if (token_id == SyncTaskToken::kForegroundTaskTokenID)
202 return true; 202 return true;
203 203
204 return ContainsKey(running_background_tasks_, token_id); 204 return ContainsKey(running_background_tasks_, token_id);
205 } 205 }
206 206
207 void SyncTaskManager::DetachFromSequence() { 207 void SyncTaskManager::DetachFromSequence() {
208 sequence_checker_.DetachFromSequence(); 208 sequence_checker_.DetachFromSequence();
209 } 209 }
210 210
211 bool SyncTaskManager::ShouldTrackTaskToken() const { 211 bool SyncTaskManager::ShouldTrackTaskToken() const {
212 return !worker_pool_ || !worker_pool_->IsShutdownInProgress(); 212 return !worker_pool_ || !worker_pool_->IsShutdownInProgress();
213 } 213 }
214 214
215 void SyncTaskManager::NotifyTaskDoneBody(std::unique_ptr<SyncTaskToken> token, 215 void SyncTaskManager::NotifyTaskDoneBody(std::unique_ptr<SyncTaskToken> token,
216 SyncStatusCode status) { 216 SyncStatusCode status) {
217 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 217 DCHECK(sequence_checker_.CalledOnValidSequence());
218 DCHECK(token); 218 DCHECK(token);
219 219
220 DVLOG(3) << "NotifyTaskDone: " << "finished with status=" << status 220 DVLOG(3) << "NotifyTaskDone: " << "finished with status=" << status
221 << " (" << SyncStatusCodeToString(status) << ")" 221 << " (" << SyncStatusCodeToString(status) << ")"
222 << " " << token->location().ToString(); 222 << " " << token->location().ToString();
223 223
224 if (token->task_blocker()) { 224 if (token->task_blocker()) {
225 dependency_manager_.Erase(token->task_blocker()); 225 dependency_manager_.Erase(token->task_blocker());
226 token->clear_task_blocker(); 226 token->clear_task_blocker();
227 } 227 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 base::Bind(&SyncTaskManager::MaybeStartNextForegroundTask, 263 base::Bind(&SyncTaskManager::MaybeStartNextForegroundTask,
264 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); 264 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token)));
265 } 265 }
266 266
267 void SyncTaskManager::UpdateTaskBlockerBody( 267 void SyncTaskManager::UpdateTaskBlockerBody(
268 std::unique_ptr<SyncTaskToken> foreground_task_token, 268 std::unique_ptr<SyncTaskToken> foreground_task_token,
269 std::unique_ptr<SyncTaskToken> background_task_token, 269 std::unique_ptr<SyncTaskToken> background_task_token,
270 std::unique_ptr<TaskLogger::TaskLog> task_log, 270 std::unique_ptr<TaskLogger::TaskLog> task_log,
271 std::unique_ptr<TaskBlocker> task_blocker, 271 std::unique_ptr<TaskBlocker> task_blocker,
272 const Continuation& continuation) { 272 const Continuation& continuation) {
273 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 273 DCHECK(sequence_checker_.CalledOnValidSequence());
274 274
275 // Run the task directly if the parallelization is disabled. 275 // Run the task directly if the parallelization is disabled.
276 if (!maximum_background_task_) { 276 if (!maximum_background_task_) {
277 DCHECK(foreground_task_token); 277 DCHECK(foreground_task_token);
278 DCHECK(!background_task_token); 278 DCHECK(!background_task_token);
279 foreground_task_token->SetTaskLog(std::move(task_log)); 279 foreground_task_token->SetTaskLog(std::move(task_log));
280 continuation.Run(std::move(foreground_task_token)); 280 continuation.Run(std::move(foreground_task_token));
281 return; 281 return;
282 } 282 }
283 283
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 349
350 token_ = std::move(foreground_task_token); 350 token_ = std::move(foreground_task_token);
351 MaybeStartNextForegroundTask(nullptr); 351 MaybeStartNextForegroundTask(nullptr);
352 background_task_token->SetTaskLog(std::move(task_log)); 352 background_task_token->SetTaskLog(std::move(task_log));
353 continuation.Run(std::move(background_task_token)); 353 continuation.Run(std::move(background_task_token));
354 } 354 }
355 355
356 std::unique_ptr<SyncTaskToken> SyncTaskManager::GetToken( 356 std::unique_ptr<SyncTaskToken> SyncTaskManager::GetToken(
357 const tracked_objects::Location& from_here, 357 const tracked_objects::Location& from_here,
358 const SyncStatusCallback& callback) { 358 const SyncStatusCallback& callback) {
359 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 359 DCHECK(sequence_checker_.CalledOnValidSequence());
360 360
361 if (!token_) 361 if (!token_)
362 return nullptr; 362 return nullptr;
363 token_->UpdateTask(from_here, callback); 363 token_->UpdateTask(from_here, callback);
364 return std::move(token_); 364 return std::move(token_);
365 } 365 }
366 366
367 void SyncTaskManager::PushPendingTask( 367 void SyncTaskManager::PushPendingTask(
368 const base::Closure& closure, Priority priority) { 368 const base::Closure& closure, Priority priority) {
369 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 369 DCHECK(sequence_checker_.CalledOnValidSequence());
370 370
371 pending_tasks_.push(PendingTask(closure, priority, pending_task_seq_++)); 371 pending_tasks_.push(PendingTask(closure, priority, pending_task_seq_++));
372 } 372 }
373 373
374 void SyncTaskManager::RunTask(std::unique_ptr<SyncTaskToken> token, 374 void SyncTaskManager::RunTask(std::unique_ptr<SyncTaskToken> token,
375 std::unique_ptr<SyncTask> task) { 375 std::unique_ptr<SyncTask> task) {
376 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 376 DCHECK(sequence_checker_.CalledOnValidSequence());
377 DCHECK(!running_foreground_task_); 377 DCHECK(!running_foreground_task_);
378 378
379 running_foreground_task_ = std::move(task); 379 running_foreground_task_ = std::move(task);
380 running_foreground_task_->RunPreflight(std::move(token)); 380 running_foreground_task_->RunPreflight(std::move(token));
381 } 381 }
382 382
383 void SyncTaskManager::MaybeStartNextForegroundTask( 383 void SyncTaskManager::MaybeStartNextForegroundTask(
384 std::unique_ptr<SyncTaskToken> token) { 384 std::unique_ptr<SyncTaskToken> token) {
385 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 385 DCHECK(sequence_checker_.CalledOnValidSequence());
386 386
387 if (token) { 387 if (token) {
388 DCHECK(!token_); 388 DCHECK(!token_);
389 token_ = std::move(token); 389 token_ = std::move(token);
390 } 390 }
391 391
392 if (!pending_backgrounding_task_.is_null()) { 392 if (!pending_backgrounding_task_.is_null()) {
393 base::Closure closure = pending_backgrounding_task_; 393 base::Closure closure = pending_backgrounding_task_;
394 pending_backgrounding_task_.Reset(); 394 pending_backgrounding_task_.Reset();
395 closure.Run(); 395 closure.Run();
396 return; 396 return;
397 } 397 }
398 398
399 if (!token_) 399 if (!token_)
400 return; 400 return;
401 401
402 if (!pending_tasks_.empty()) { 402 if (!pending_tasks_.empty()) {
403 base::Closure closure = pending_tasks_.top().task; 403 base::Closure closure = pending_tasks_.top().task;
404 pending_tasks_.pop(); 404 pending_tasks_.pop();
405 closure.Run(); 405 closure.Run();
406 return; 406 return;
407 } 407 }
408 408
409 if (client_) 409 if (client_)
410 client_->MaybeScheduleNextTask(); 410 client_->MaybeScheduleNextTask();
411 } 411 }
412 412
413 } // namespace drive_backend 413 } // namespace drive_backend
414 } // namespace sync_file_system 414 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698