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

Side by Side Diff: chrome/browser/chromeos/drive/sync_client.cc

Issue 1036723003: favor DCHECK_CURRENTLY_ON for better logs in chrome/browser/chromeos/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 (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 "chrome/browser/chromeos/drive/sync_client.h" 5 #include "chrome/browser/chromeos/drive/sync_client.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/message_loop/message_loop_proxy.h" 10 #include "base/message_loop/message_loop_proxy.h"
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 temporary_file_directory)), 158 temporary_file_directory)),
159 entry_update_performer_(new EntryUpdatePerformer(blocking_task_runner, 159 entry_update_performer_(new EntryUpdatePerformer(blocking_task_runner,
160 delegate, 160 delegate,
161 scheduler, 161 scheduler,
162 metadata, 162 metadata,
163 cache, 163 cache,
164 loader_controller)), 164 loader_controller)),
165 delay_(base::TimeDelta::FromSeconds(kDelaySeconds)), 165 delay_(base::TimeDelta::FromSeconds(kDelaySeconds)),
166 long_delay_(base::TimeDelta::FromSeconds(kLongDelaySeconds)), 166 long_delay_(base::TimeDelta::FromSeconds(kLongDelaySeconds)),
167 weak_ptr_factory_(this) { 167 weak_ptr_factory_(this) {
168 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 168 DCHECK_CURRENTLY_ON(BrowserThread::UI);
169 } 169 }
170 170
171 SyncClient::~SyncClient() { 171 SyncClient::~SyncClient() {
172 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 172 DCHECK_CURRENTLY_ON(BrowserThread::UI);
173 } 173 }
174 174
175 void SyncClient::StartProcessingBacklog() { 175 void SyncClient::StartProcessingBacklog() {
176 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 176 DCHECK_CURRENTLY_ON(BrowserThread::UI);
177 177
178 std::vector<std::string>* to_fetch = new std::vector<std::string>; 178 std::vector<std::string>* to_fetch = new std::vector<std::string>;
179 std::vector<std::string>* to_update = new std::vector<std::string>; 179 std::vector<std::string>* to_update = new std::vector<std::string>;
180 blocking_task_runner_->PostTaskAndReply( 180 blocking_task_runner_->PostTaskAndReply(
181 FROM_HERE, 181 FROM_HERE,
182 base::Bind(&CollectBacklog, metadata_, to_fetch, to_update), 182 base::Bind(&CollectBacklog, metadata_, to_fetch, to_update),
183 base::Bind(&SyncClient::OnGetLocalIdsOfBacklog, 183 base::Bind(&SyncClient::OnGetLocalIdsOfBacklog,
184 weak_ptr_factory_.GetWeakPtr(), 184 weak_ptr_factory_.GetWeakPtr(),
185 base::Owned(to_fetch), 185 base::Owned(to_fetch),
186 base::Owned(to_update))); 186 base::Owned(to_update)));
187 } 187 }
188 188
189 void SyncClient::StartCheckingExistingPinnedFiles() { 189 void SyncClient::StartCheckingExistingPinnedFiles() {
190 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 190 DCHECK_CURRENTLY_ON(BrowserThread::UI);
191 191
192 std::vector<std::string>* local_ids = new std::vector<std::string>; 192 std::vector<std::string>* local_ids = new std::vector<std::string>;
193 blocking_task_runner_->PostTaskAndReply( 193 blocking_task_runner_->PostTaskAndReply(
194 FROM_HERE, 194 FROM_HERE,
195 base::Bind(&CheckExistingPinnedFiles, 195 base::Bind(&CheckExistingPinnedFiles,
196 metadata_, 196 metadata_,
197 cache_, 197 cache_,
198 local_ids), 198 local_ids),
199 base::Bind(&SyncClient::AddFetchTasks, 199 base::Bind(&SyncClient::AddFetchTasks,
200 weak_ptr_factory_.GetWeakPtr(), 200 weak_ptr_factory_.GetWeakPtr(),
201 base::Owned(local_ids))); 201 base::Owned(local_ids)));
202 } 202 }
203 203
204 void SyncClient::AddFetchTask(const std::string& local_id) { 204 void SyncClient::AddFetchTask(const std::string& local_id) {
205 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 205 DCHECK_CURRENTLY_ON(BrowserThread::UI);
206 AddFetchTaskInternal(local_id, delay_); 206 AddFetchTaskInternal(local_id, delay_);
207 } 207 }
208 208
209 void SyncClient::RemoveFetchTask(const std::string& local_id) { 209 void SyncClient::RemoveFetchTask(const std::string& local_id) {
210 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 210 DCHECK_CURRENTLY_ON(BrowserThread::UI);
211 211
212 SyncTasks::iterator it = tasks_.find(SyncTasks::key_type(FETCH, local_id)); 212 SyncTasks::iterator it = tasks_.find(SyncTasks::key_type(FETCH, local_id));
213 if (it == tasks_.end()) 213 if (it == tasks_.end())
214 return; 214 return;
215 215
216 SyncTask* task = &it->second; 216 SyncTask* task = &it->second;
217 switch (task->state) { 217 switch (task->state) {
218 case SUSPENDED: 218 case SUSPENDED:
219 case PENDING: 219 case PENDING:
220 OnTaskComplete(FETCH, local_id, FILE_ERROR_ABORT); 220 OnTaskComplete(FETCH, local_id, FILE_ERROR_ABORT);
221 break; 221 break;
222 case RUNNING: 222 case RUNNING:
223 if (!task->cancel_closure.is_null()) 223 if (!task->cancel_closure.is_null())
224 task->cancel_closure.Run(); 224 task->cancel_closure.Run();
225 break; 225 break;
226 } 226 }
227 } 227 }
228 228
229 void SyncClient::AddUpdateTask(const ClientContext& context, 229 void SyncClient::AddUpdateTask(const ClientContext& context,
230 const std::string& local_id) { 230 const std::string& local_id) {
231 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 231 DCHECK_CURRENTLY_ON(BrowserThread::UI);
232 AddUpdateTaskInternal(context, local_id, delay_); 232 AddUpdateTaskInternal(context, local_id, delay_);
233 } 233 }
234 234
235 bool SyncClient:: WaitForUpdateTaskToComplete( 235 bool SyncClient:: WaitForUpdateTaskToComplete(
236 const std::string& local_id, 236 const std::string& local_id,
237 const FileOperationCallback& callback) { 237 const FileOperationCallback& callback) {
238 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 238 DCHECK_CURRENTLY_ON(BrowserThread::UI);
239 239
240 SyncTasks::iterator it = tasks_.find(SyncTasks::key_type(UPDATE, local_id)); 240 SyncTasks::iterator it = tasks_.find(SyncTasks::key_type(UPDATE, local_id));
241 if (it == tasks_.end()) 241 if (it == tasks_.end())
242 return false; 242 return false;
243 243
244 SyncTask* task = &it->second; 244 SyncTask* task = &it->second;
245 task->waiting_callbacks.push_back(callback); 245 task->waiting_callbacks.push_back(callback);
246 return true; 246 return true;
247 } 247 }
248 248
249 base::Closure SyncClient::PerformFetchTask(const std::string& local_id, 249 base::Closure SyncClient::PerformFetchTask(const std::string& local_id,
250 const ClientContext& context) { 250 const ClientContext& context) {
251 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 251 DCHECK_CURRENTLY_ON(BrowserThread::UI);
252 return download_operation_->EnsureFileDownloadedByLocalId( 252 return download_operation_->EnsureFileDownloadedByLocalId(
253 local_id, 253 local_id,
254 context, 254 context,
255 GetFileContentInitializedCallback(), 255 GetFileContentInitializedCallback(),
256 google_apis::GetContentCallback(), 256 google_apis::GetContentCallback(),
257 base::Bind(&SyncClient::OnFetchFileComplete, 257 base::Bind(&SyncClient::OnFetchFileComplete,
258 weak_ptr_factory_.GetWeakPtr(), 258 weak_ptr_factory_.GetWeakPtr(),
259 local_id)); 259 local_id));
260 } 260 }
261 261
262 void SyncClient::AddFetchTaskInternal(const std::string& local_id, 262 void SyncClient::AddFetchTaskInternal(const std::string& local_id,
263 const base::TimeDelta& delay) { 263 const base::TimeDelta& delay) {
264 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 264 DCHECK_CURRENTLY_ON(BrowserThread::UI);
265 265
266 SyncTask task; 266 SyncTask task;
267 task.state = PENDING; 267 task.state = PENDING;
268 task.context = ClientContext(BACKGROUND); 268 task.context = ClientContext(BACKGROUND);
269 task.task = base::Bind(&SyncClient::PerformFetchTask, 269 task.task = base::Bind(&SyncClient::PerformFetchTask,
270 base::Unretained(this), 270 base::Unretained(this),
271 local_id); 271 local_id);
272 AddTask(SyncTasks::key_type(FETCH, local_id), task, delay); 272 AddTask(SyncTasks::key_type(FETCH, local_id), task, delay);
273 } 273 }
274 274
275 base::Closure SyncClient::PerformUpdateTask(const std::string& local_id, 275 base::Closure SyncClient::PerformUpdateTask(const std::string& local_id,
276 const ClientContext& context) { 276 const ClientContext& context) {
277 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 277 DCHECK_CURRENTLY_ON(BrowserThread::UI);
278 entry_update_performer_->UpdateEntry( 278 entry_update_performer_->UpdateEntry(
279 local_id, 279 local_id,
280 context, 280 context,
281 base::Bind(&SyncClient::OnTaskComplete, 281 base::Bind(&SyncClient::OnTaskComplete,
282 weak_ptr_factory_.GetWeakPtr(), 282 weak_ptr_factory_.GetWeakPtr(),
283 UPDATE, 283 UPDATE,
284 local_id)); 284 local_id));
285 return base::Closure(); 285 return base::Closure();
286 } 286 }
287 287
288 void SyncClient::AddUpdateTaskInternal(const ClientContext& context, 288 void SyncClient::AddUpdateTaskInternal(const ClientContext& context,
289 const std::string& local_id, 289 const std::string& local_id,
290 const base::TimeDelta& delay) { 290 const base::TimeDelta& delay) {
291 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 291 DCHECK_CURRENTLY_ON(BrowserThread::UI);
292 292
293 SyncTask task; 293 SyncTask task;
294 task.state = PENDING; 294 task.state = PENDING;
295 task.context = context; 295 task.context = context;
296 task.task = base::Bind(&SyncClient::PerformUpdateTask, 296 task.task = base::Bind(&SyncClient::PerformUpdateTask,
297 base::Unretained(this), 297 base::Unretained(this),
298 local_id); 298 local_id);
299 AddTask(SyncTasks::key_type(UPDATE, local_id), task, delay); 299 AddTask(SyncTasks::key_type(UPDATE, local_id), task, delay);
300 } 300 }
301 301
302 void SyncClient::AddTask(const SyncTasks::key_type& key, 302 void SyncClient::AddTask(const SyncTasks::key_type& key,
303 const SyncTask& task, 303 const SyncTask& task,
304 const base::TimeDelta& delay) { 304 const base::TimeDelta& delay) {
305 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 305 DCHECK_CURRENTLY_ON(BrowserThread::UI);
306 306
307 SyncTasks::iterator it = tasks_.find(key); 307 SyncTasks::iterator it = tasks_.find(key);
308 if (it != tasks_.end()) { 308 if (it != tasks_.end()) {
309 switch (it->second.state) { 309 switch (it->second.state) {
310 case SUSPENDED: 310 case SUSPENDED:
311 // Activate the task. 311 // Activate the task.
312 it->second.state = PENDING; 312 it->second.state = PENDING;
313 break; 313 break;
314 case PENDING: 314 case PENDING:
315 // The same task will run, do nothing. 315 // The same task will run, do nothing.
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 } 384 }
385 385
386 // Run the task. 386 // Run the task.
387 task->state = RUNNING; 387 task->state = RUNNING;
388 task->cancel_closure = task->task.Run(task->context); 388 task->cancel_closure = task->task.Run(task->context);
389 } 389 }
390 390
391 void SyncClient::OnGetLocalIdsOfBacklog( 391 void SyncClient::OnGetLocalIdsOfBacklog(
392 const std::vector<std::string>* to_fetch, 392 const std::vector<std::string>* to_fetch,
393 const std::vector<std::string>* to_update) { 393 const std::vector<std::string>* to_update) {
394 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 394 DCHECK_CURRENTLY_ON(BrowserThread::UI);
395 395
396 // Give priority to upload tasks over fetch tasks, so that dirty files are 396 // Give priority to upload tasks over fetch tasks, so that dirty files are
397 // uploaded as soon as possible. 397 // uploaded as soon as possible.
398 for (size_t i = 0; i < to_update->size(); ++i) { 398 for (size_t i = 0; i < to_update->size(); ++i) {
399 const std::string& local_id = (*to_update)[i]; 399 const std::string& local_id = (*to_update)[i];
400 DVLOG(1) << "Queuing to update: " << local_id; 400 DVLOG(1) << "Queuing to update: " << local_id;
401 AddUpdateTask(ClientContext(BACKGROUND), local_id); 401 AddUpdateTask(ClientContext(BACKGROUND), local_id);
402 } 402 }
403 403
404 for (size_t i = 0; i < to_fetch->size(); ++i) { 404 for (size_t i = 0; i < to_fetch->size(); ++i) {
405 const std::string& local_id = (*to_fetch)[i]; 405 const std::string& local_id = (*to_fetch)[i];
406 DVLOG(1) << "Queuing to fetch: " << local_id; 406 DVLOG(1) << "Queuing to fetch: " << local_id;
407 AddFetchTaskInternal(local_id, delay_); 407 AddFetchTaskInternal(local_id, delay_);
408 } 408 }
409 } 409 }
410 410
411 void SyncClient::AddFetchTasks(const std::vector<std::string>* local_ids) { 411 void SyncClient::AddFetchTasks(const std::vector<std::string>* local_ids) {
412 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 412 DCHECK_CURRENTLY_ON(BrowserThread::UI);
413 413
414 for (size_t i = 0; i < local_ids->size(); ++i) 414 for (size_t i = 0; i < local_ids->size(); ++i)
415 AddFetchTask((*local_ids)[i]); 415 AddFetchTask((*local_ids)[i]);
416 } 416 }
417 417
418 void SyncClient::OnTaskComplete(SyncType type, 418 void SyncClient::OnTaskComplete(SyncType type,
419 const std::string& local_id, 419 const std::string& local_id,
420 FileError error) { 420 FileError error) {
421 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 421 DCHECK_CURRENTLY_ON(BrowserThread::UI);
422 422
423 const SyncTasks::key_type key(type, local_id); 423 const SyncTasks::key_type key(type, local_id);
424 SyncTasks::iterator it = tasks_.find(key); 424 SyncTasks::iterator it = tasks_.find(key);
425 DCHECK(it != tasks_.end()); 425 DCHECK(it != tasks_.end());
426 426
427 base::TimeDelta retry_delay = base::TimeDelta::FromSeconds(0); 427 base::TimeDelta retry_delay = base::TimeDelta::FromSeconds(0);
428 428
429 switch (error) { 429 switch (error) {
430 case FILE_ERROR_OK: 430 case FILE_ERROR_OK:
431 DVLOG(1) << "Completed: type = " << type << ", id = " << local_id; 431 DVLOG(1) << "Completed: type = " << type << ", id = " << local_id;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 for (size_t i = 0; i < it->second.dependent_tasks.size(); ++i) 471 for (size_t i = 0; i < it->second.dependent_tasks.size(); ++i)
472 StartTask(it->second.dependent_tasks[i]); 472 StartTask(it->second.dependent_tasks[i]);
473 tasks_.erase(it); 473 tasks_.erase(it);
474 } 474 }
475 } 475 }
476 476
477 void SyncClient::OnFetchFileComplete(const std::string& local_id, 477 void SyncClient::OnFetchFileComplete(const std::string& local_id,
478 FileError error, 478 FileError error,
479 const base::FilePath& local_path, 479 const base::FilePath& local_path,
480 scoped_ptr<ResourceEntry> entry) { 480 scoped_ptr<ResourceEntry> entry) {
481 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 481 DCHECK_CURRENTLY_ON(BrowserThread::UI);
482 OnTaskComplete(FETCH, local_id, error); 482 OnTaskComplete(FETCH, local_id, error);
483 if (error == FILE_ERROR_ABORT) { 483 if (error == FILE_ERROR_ABORT) {
484 // If user cancels download, unpin the file so that we do not sync the file 484 // If user cancels download, unpin the file so that we do not sync the file
485 // again. 485 // again.
486 base::PostTaskAndReplyWithResult( 486 base::PostTaskAndReplyWithResult(
487 blocking_task_runner_.get(), 487 blocking_task_runner_.get(),
488 FROM_HERE, 488 FROM_HERE,
489 base::Bind(&FileCache::Unpin, base::Unretained(cache_), local_id), 489 base::Bind(&FileCache::Unpin, base::Unretained(cache_), local_id),
490 base::Bind(&util::EmptyFileOperationCallback)); 490 base::Bind(&util::EmptyFileOperationCallback));
491 } 491 }
492 } 492 }
493 493
494 } // namespace internal 494 } // namespace internal
495 } // namespace drive 495 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/sync/remove_performer.cc ('k') | chrome/browser/chromeos/drive/write_on_cache_file.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698