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

Side by Side Diff: chrome/browser/chromeos/drive/directory_loader.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 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/chromeos/drive/directory_loader.h" 5 #include "chrome/browser/chromeos/drive/directory_loader.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/callback_helpers.h" 8 #include "base/callback_helpers.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 : loader_(loader), 99 : loader_(loader),
100 directory_fetch_info_(directory_fetch_info), 100 directory_fetch_info_(directory_fetch_info),
101 root_folder_id_(root_folder_id), 101 root_folder_id_(root_folder_id),
102 weak_ptr_factory_(this) { 102 weak_ptr_factory_(this) {
103 } 103 }
104 104
105 ~FeedFetcher() { 105 ~FeedFetcher() {
106 } 106 }
107 107
108 void Run(const FileOperationCallback& callback) { 108 void Run(const FileOperationCallback& callback) {
109 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 109 DCHECK_CURRENTLY_ON(BrowserThread::UI);
110 DCHECK(!callback.is_null()); 110 DCHECK(!callback.is_null());
111 DCHECK(!directory_fetch_info_.resource_id().empty()); 111 DCHECK(!directory_fetch_info_.resource_id().empty());
112 112
113 // Remember the time stamp for usage stats. 113 // Remember the time stamp for usage stats.
114 start_time_ = base::TimeTicks::Now(); 114 start_time_ = base::TimeTicks::Now();
115 115
116 loader_->scheduler_->GetFileListInDirectory( 116 loader_->scheduler_->GetFileListInDirectory(
117 directory_fetch_info_.resource_id(), 117 directory_fetch_info_.resource_id(),
118 base::Bind(&FeedFetcher::OnFileListFetched, 118 base::Bind(&FeedFetcher::OnFileListFetched,
119 weak_ptr_factory_.GetWeakPtr(), callback)); 119 weak_ptr_factory_.GetWeakPtr(), callback));
120 } 120 }
121 121
122 private: 122 private:
123 void OnFileListFetched(const FileOperationCallback& callback, 123 void OnFileListFetched(const FileOperationCallback& callback,
124 google_apis::DriveApiErrorCode status, 124 google_apis::DriveApiErrorCode status,
125 scoped_ptr<google_apis::FileList> file_list) { 125 scoped_ptr<google_apis::FileList> file_list) {
126 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 126 DCHECK_CURRENTLY_ON(BrowserThread::UI);
127 DCHECK(!callback.is_null()); 127 DCHECK(!callback.is_null());
128 128
129 FileError error = GDataToFileError(status); 129 FileError error = GDataToFileError(status);
130 if (error != FILE_ERROR_OK) { 130 if (error != FILE_ERROR_OK) {
131 callback.Run(error); 131 callback.Run(error);
132 return; 132 return;
133 } 133 }
134 134
135 DCHECK(file_list); 135 DCHECK(file_list);
136 scoped_ptr<ChangeList> change_list(new ChangeList(*file_list)); 136 scoped_ptr<ChangeList> change_list(new ChangeList(*file_list));
(...skipping 15 matching lines...) Expand all
152 callback, 152 callback,
153 next_url, 153 next_url,
154 base::Owned(entries)))); 154 base::Owned(entries))));
155 } 155 }
156 156
157 void OnDirectoryRefreshed( 157 void OnDirectoryRefreshed(
158 const FileOperationCallback& callback, 158 const FileOperationCallback& callback,
159 const GURL& next_url, 159 const GURL& next_url,
160 const std::vector<ResourceEntry>* refreshed_entries, 160 const std::vector<ResourceEntry>* refreshed_entries,
161 FileError error) { 161 FileError error) {
162 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 162 DCHECK_CURRENTLY_ON(BrowserThread::UI);
163 DCHECK(!callback.is_null()); 163 DCHECK(!callback.is_null());
164 164
165 if (error != FILE_ERROR_OK) { 165 if (error != FILE_ERROR_OK) {
166 callback.Run(error); 166 callback.Run(error);
167 return; 167 return;
168 } 168 }
169 169
170 loader_->SendEntries(directory_fetch_info_.local_id(), *refreshed_entries); 170 loader_->SendEntries(directory_fetch_info_.local_id(), *refreshed_entries);
171 171
172 if (!next_url.is_empty()) { 172 if (!next_url.is_empty()) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 about_resource_loader_(about_resource_loader), 209 about_resource_loader_(about_resource_loader),
210 loader_controller_(loader_controller), 210 loader_controller_(loader_controller),
211 weak_ptr_factory_(this) { 211 weak_ptr_factory_(this) {
212 } 212 }
213 213
214 DirectoryLoader::~DirectoryLoader() { 214 DirectoryLoader::~DirectoryLoader() {
215 STLDeleteElements(&fast_fetch_feed_fetcher_set_); 215 STLDeleteElements(&fast_fetch_feed_fetcher_set_);
216 } 216 }
217 217
218 void DirectoryLoader::AddObserver(ChangeListLoaderObserver* observer) { 218 void DirectoryLoader::AddObserver(ChangeListLoaderObserver* observer) {
219 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 219 DCHECK_CURRENTLY_ON(BrowserThread::UI);
220 observers_.AddObserver(observer); 220 observers_.AddObserver(observer);
221 } 221 }
222 222
223 void DirectoryLoader::RemoveObserver(ChangeListLoaderObserver* observer) { 223 void DirectoryLoader::RemoveObserver(ChangeListLoaderObserver* observer) {
224 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 224 DCHECK_CURRENTLY_ON(BrowserThread::UI);
225 observers_.RemoveObserver(observer); 225 observers_.RemoveObserver(observer);
226 } 226 }
227 227
228 void DirectoryLoader::ReadDirectory( 228 void DirectoryLoader::ReadDirectory(
229 const base::FilePath& directory_path, 229 const base::FilePath& directory_path,
230 const ReadDirectoryEntriesCallback& entries_callback, 230 const ReadDirectoryEntriesCallback& entries_callback,
231 const FileOperationCallback& completion_callback) { 231 const FileOperationCallback& completion_callback) {
232 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 232 DCHECK_CURRENTLY_ON(BrowserThread::UI);
233 DCHECK(!completion_callback.is_null()); 233 DCHECK(!completion_callback.is_null());
234 234
235 ResourceEntry* entry = new ResourceEntry; 235 ResourceEntry* entry = new ResourceEntry;
236 base::PostTaskAndReplyWithResult( 236 base::PostTaskAndReplyWithResult(
237 blocking_task_runner_.get(), 237 blocking_task_runner_.get(),
238 FROM_HERE, 238 FROM_HERE,
239 base::Bind(&ResourceMetadata::GetResourceEntryByPath, 239 base::Bind(&ResourceMetadata::GetResourceEntryByPath,
240 base::Unretained(resource_metadata_), 240 base::Unretained(resource_metadata_),
241 directory_path, 241 directory_path,
242 entry), 242 entry),
243 base::Bind(&DirectoryLoader::ReadDirectoryAfterGetEntry, 243 base::Bind(&DirectoryLoader::ReadDirectoryAfterGetEntry,
244 weak_ptr_factory_.GetWeakPtr(), 244 weak_ptr_factory_.GetWeakPtr(),
245 directory_path, 245 directory_path,
246 entries_callback, 246 entries_callback,
247 completion_callback, 247 completion_callback,
248 true, // should_try_loading_parent 248 true, // should_try_loading_parent
249 base::Owned(entry))); 249 base::Owned(entry)));
250 } 250 }
251 251
252 void DirectoryLoader::ReadDirectoryAfterGetEntry( 252 void DirectoryLoader::ReadDirectoryAfterGetEntry(
253 const base::FilePath& directory_path, 253 const base::FilePath& directory_path,
254 const ReadDirectoryEntriesCallback& entries_callback, 254 const ReadDirectoryEntriesCallback& entries_callback,
255 const FileOperationCallback& completion_callback, 255 const FileOperationCallback& completion_callback,
256 bool should_try_loading_parent, 256 bool should_try_loading_parent,
257 const ResourceEntry* entry, 257 const ResourceEntry* entry,
258 FileError error) { 258 FileError error) {
259 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 259 DCHECK_CURRENTLY_ON(BrowserThread::UI);
260 DCHECK(!completion_callback.is_null()); 260 DCHECK(!completion_callback.is_null());
261 261
262 if (error == FILE_ERROR_NOT_FOUND && 262 if (error == FILE_ERROR_NOT_FOUND &&
263 should_try_loading_parent && 263 should_try_loading_parent &&
264 util::GetDriveGrandRootPath().IsParent(directory_path)) { 264 util::GetDriveGrandRootPath().IsParent(directory_path)) {
265 // This entry may be found after loading the parent. 265 // This entry may be found after loading the parent.
266 ReadDirectory(directory_path.DirName(), 266 ReadDirectory(directory_path.DirName(),
267 ReadDirectoryEntriesCallback(), 267 ReadDirectoryEntriesCallback(),
268 base::Bind(&DirectoryLoader::ReadDirectoryAfterLoadParent, 268 base::Bind(&DirectoryLoader::ReadDirectoryAfterLoadParent,
269 weak_ptr_factory_.GetWeakPtr(), 269 weak_ptr_factory_.GetWeakPtr(),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 about_resource_loader_->GetAboutResource( 301 about_resource_loader_->GetAboutResource(
302 base::Bind(&DirectoryLoader::ReadDirectoryAfterGetAboutResource, 302 base::Bind(&DirectoryLoader::ReadDirectoryAfterGetAboutResource,
303 weak_ptr_factory_.GetWeakPtr(), local_id)); 303 weak_ptr_factory_.GetWeakPtr(), local_id));
304 } 304 }
305 305
306 void DirectoryLoader::ReadDirectoryAfterLoadParent( 306 void DirectoryLoader::ReadDirectoryAfterLoadParent(
307 const base::FilePath& directory_path, 307 const base::FilePath& directory_path,
308 const ReadDirectoryEntriesCallback& entries_callback, 308 const ReadDirectoryEntriesCallback& entries_callback,
309 const FileOperationCallback& completion_callback, 309 const FileOperationCallback& completion_callback,
310 FileError error) { 310 FileError error) {
311 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 311 DCHECK_CURRENTLY_ON(BrowserThread::UI);
312 DCHECK(!completion_callback.is_null()); 312 DCHECK(!completion_callback.is_null());
313 313
314 if (error != FILE_ERROR_OK) { 314 if (error != FILE_ERROR_OK) {
315 completion_callback.Run(error); 315 completion_callback.Run(error);
316 return; 316 return;
317 } 317 }
318 318
319 ResourceEntry* entry = new ResourceEntry; 319 ResourceEntry* entry = new ResourceEntry;
320 base::PostTaskAndReplyWithResult( 320 base::PostTaskAndReplyWithResult(
321 blocking_task_runner_.get(), 321 blocking_task_runner_.get(),
322 FROM_HERE, 322 FROM_HERE,
323 base::Bind(&ResourceMetadata::GetResourceEntryByPath, 323 base::Bind(&ResourceMetadata::GetResourceEntryByPath,
324 base::Unretained(resource_metadata_), 324 base::Unretained(resource_metadata_),
325 directory_path, 325 directory_path,
326 entry), 326 entry),
327 base::Bind(&DirectoryLoader::ReadDirectoryAfterGetEntry, 327 base::Bind(&DirectoryLoader::ReadDirectoryAfterGetEntry,
328 weak_ptr_factory_.GetWeakPtr(), 328 weak_ptr_factory_.GetWeakPtr(),
329 directory_path, 329 directory_path,
330 entries_callback, 330 entries_callback,
331 completion_callback, 331 completion_callback,
332 false, // should_try_loading_parent 332 false, // should_try_loading_parent
333 base::Owned(entry))); 333 base::Owned(entry)));
334 } 334 }
335 335
336 void DirectoryLoader::ReadDirectoryAfterGetAboutResource( 336 void DirectoryLoader::ReadDirectoryAfterGetAboutResource(
337 const std::string& local_id, 337 const std::string& local_id,
338 google_apis::DriveApiErrorCode status, 338 google_apis::DriveApiErrorCode status,
339 scoped_ptr<google_apis::AboutResource> about_resource) { 339 scoped_ptr<google_apis::AboutResource> about_resource) {
340 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 340 DCHECK_CURRENTLY_ON(BrowserThread::UI);
341 341
342 FileError error = GDataToFileError(status); 342 FileError error = GDataToFileError(status);
343 if (error != FILE_ERROR_OK) { 343 if (error != FILE_ERROR_OK) {
344 OnDirectoryLoadComplete(local_id, error); 344 OnDirectoryLoadComplete(local_id, error);
345 return; 345 return;
346 } 346 }
347 347
348 DCHECK(about_resource); 348 DCHECK(about_resource);
349 349
350 // Check the current status of local metadata, and start loading if needed. 350 // Check the current status of local metadata, and start loading if needed.
(...skipping 16 matching lines...) Expand all
367 base::Owned(entry), 367 base::Owned(entry),
368 base::Owned(local_changestamp))); 368 base::Owned(local_changestamp)));
369 } 369 }
370 370
371 void DirectoryLoader::ReadDirectoryAfterCheckLocalState( 371 void DirectoryLoader::ReadDirectoryAfterCheckLocalState(
372 scoped_ptr<google_apis::AboutResource> about_resource, 372 scoped_ptr<google_apis::AboutResource> about_resource,
373 const std::string& local_id, 373 const std::string& local_id,
374 const ResourceEntry* entry, 374 const ResourceEntry* entry,
375 const int64* local_changestamp, 375 const int64* local_changestamp,
376 FileError error) { 376 FileError error) {
377 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 377 DCHECK_CURRENTLY_ON(BrowserThread::UI);
378 DCHECK(about_resource); 378 DCHECK(about_resource);
379 379
380 if (error != FILE_ERROR_OK) { 380 if (error != FILE_ERROR_OK) {
381 OnDirectoryLoadComplete(local_id, error); 381 OnDirectoryLoadComplete(local_id, error);
382 return; 382 return;
383 } 383 }
384 // This entry does not exist on the server. 384 // This entry does not exist on the server.
385 if (entry->resource_id().empty()) { 385 if (entry->resource_id().empty()) {
386 OnDirectoryLoadComplete(local_id, FILE_ERROR_OK); 386 OnDirectoryLoadComplete(local_id, FILE_ERROR_OK);
387 return; 387 return;
(...skipping 17 matching lines...) Expand all
405 OnDirectoryLoadComplete(local_id, FILE_ERROR_OK); 405 OnDirectoryLoadComplete(local_id, FILE_ERROR_OK);
406 } else { 406 } else {
407 // Start fetching the directory content, and mark it with the changestamp 407 // Start fetching the directory content, and mark it with the changestamp
408 // |remote_changestamp|. 408 // |remote_changestamp|.
409 LoadDirectoryFromServer(directory_fetch_info); 409 LoadDirectoryFromServer(directory_fetch_info);
410 } 410 }
411 } 411 }
412 412
413 void DirectoryLoader::OnDirectoryLoadComplete(const std::string& local_id, 413 void DirectoryLoader::OnDirectoryLoadComplete(const std::string& local_id,
414 FileError error) { 414 FileError error) {
415 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 415 DCHECK_CURRENTLY_ON(BrowserThread::UI);
416 416
417 LoadCallbackMap::iterator it = pending_load_callback_.find(local_id); 417 LoadCallbackMap::iterator it = pending_load_callback_.find(local_id);
418 if (it == pending_load_callback_.end()) 418 if (it == pending_load_callback_.end())
419 return; 419 return;
420 420
421 // No need to read metadata when no one needs entries. 421 // No need to read metadata when no one needs entries.
422 bool needs_to_send_entries = false; 422 bool needs_to_send_entries = false;
423 for (size_t i = 0; i < it->second.size(); ++i) { 423 for (size_t i = 0; i < it->second.size(); ++i) {
424 const ReadDirectoryCallbackState& callback_state = it->second[i]; 424 const ReadDirectoryCallbackState& callback_state = it->second[i];
425 if (!callback_state.entries_callback.is_null()) 425 if (!callback_state.entries_callback.is_null())
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 callback_state->sent_entry_names.insert(entry.base_name()); 480 callback_state->sent_entry_names.insert(entry.base_name());
481 entries_to_send->push_back(entry); 481 entries_to_send->push_back(entry);
482 } 482 }
483 } 483 }
484 callback_state->entries_callback.Run(entries_to_send.Pass()); 484 callback_state->entries_callback.Run(entries_to_send.Pass());
485 } 485 }
486 } 486 }
487 487
488 void DirectoryLoader::LoadDirectoryFromServer( 488 void DirectoryLoader::LoadDirectoryFromServer(
489 const DirectoryFetchInfo& directory_fetch_info) { 489 const DirectoryFetchInfo& directory_fetch_info) {
490 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 490 DCHECK_CURRENTLY_ON(BrowserThread::UI);
491 DCHECK(!directory_fetch_info.empty()); 491 DCHECK(!directory_fetch_info.empty());
492 DVLOG(1) << "Start loading directory: " << directory_fetch_info.ToString(); 492 DVLOG(1) << "Start loading directory: " << directory_fetch_info.ToString();
493 493
494 const google_apis::AboutResource* about_resource = 494 const google_apis::AboutResource* about_resource =
495 about_resource_loader_->cached_about_resource(); 495 about_resource_loader_->cached_about_resource();
496 DCHECK(about_resource); 496 DCHECK(about_resource);
497 497
498 logger_->Log(logging::LOG_INFO, 498 logger_->Log(logging::LOG_INFO,
499 "Fast-fetch start: %s; Server changestamp: %s", 499 "Fast-fetch start: %s; Server changestamp: %s",
500 directory_fetch_info.ToString().c_str(), 500 directory_fetch_info.ToString().c_str(),
501 base::Int64ToString( 501 base::Int64ToString(
502 about_resource->largest_change_id()).c_str()); 502 about_resource->largest_change_id()).c_str());
503 503
504 FeedFetcher* fetcher = new FeedFetcher(this, 504 FeedFetcher* fetcher = new FeedFetcher(this,
505 directory_fetch_info, 505 directory_fetch_info,
506 about_resource->root_folder_id()); 506 about_resource->root_folder_id());
507 fast_fetch_feed_fetcher_set_.insert(fetcher); 507 fast_fetch_feed_fetcher_set_.insert(fetcher);
508 fetcher->Run( 508 fetcher->Run(
509 base::Bind(&DirectoryLoader::LoadDirectoryFromServerAfterLoad, 509 base::Bind(&DirectoryLoader::LoadDirectoryFromServerAfterLoad,
510 weak_ptr_factory_.GetWeakPtr(), 510 weak_ptr_factory_.GetWeakPtr(),
511 directory_fetch_info, 511 directory_fetch_info,
512 fetcher)); 512 fetcher));
513 } 513 }
514 514
515 void DirectoryLoader::LoadDirectoryFromServerAfterLoad( 515 void DirectoryLoader::LoadDirectoryFromServerAfterLoad(
516 const DirectoryFetchInfo& directory_fetch_info, 516 const DirectoryFetchInfo& directory_fetch_info,
517 FeedFetcher* fetcher, 517 FeedFetcher* fetcher,
518 FileError error) { 518 FileError error) {
519 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 519 DCHECK_CURRENTLY_ON(BrowserThread::UI);
520 DCHECK(!directory_fetch_info.empty()); 520 DCHECK(!directory_fetch_info.empty());
521 521
522 // Delete the fetcher. 522 // Delete the fetcher.
523 fast_fetch_feed_fetcher_set_.erase(fetcher); 523 fast_fetch_feed_fetcher_set_.erase(fetcher);
524 delete fetcher; 524 delete fetcher;
525 525
526 logger_->Log(logging::LOG_INFO, 526 logger_->Log(logging::LOG_INFO,
527 "Fast-fetch complete: %s => %s", 527 "Fast-fetch complete: %s => %s",
528 directory_fetch_info.ToString().c_str(), 528 directory_fetch_info.ToString().c_str(),
529 FileErrorToString(error).c_str()); 529 FileErrorToString(error).c_str());
(...skipping 19 matching lines...) Expand all
549 &DirectoryLoader::LoadDirectoryFromServerAfterUpdateChangestamp, 549 &DirectoryLoader::LoadDirectoryFromServerAfterUpdateChangestamp,
550 weak_ptr_factory_.GetWeakPtr(), 550 weak_ptr_factory_.GetWeakPtr(),
551 directory_fetch_info, 551 directory_fetch_info,
552 base::Owned(directory_path))); 552 base::Owned(directory_path)));
553 } 553 }
554 554
555 void DirectoryLoader::LoadDirectoryFromServerAfterUpdateChangestamp( 555 void DirectoryLoader::LoadDirectoryFromServerAfterUpdateChangestamp(
556 const DirectoryFetchInfo& directory_fetch_info, 556 const DirectoryFetchInfo& directory_fetch_info,
557 const base::FilePath* directory_path, 557 const base::FilePath* directory_path,
558 FileError error) { 558 FileError error) {
559 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 559 DCHECK_CURRENTLY_ON(BrowserThread::UI);
560 560
561 DVLOG(1) << "Directory loaded: " << directory_fetch_info.ToString(); 561 DVLOG(1) << "Directory loaded: " << directory_fetch_info.ToString();
562 OnDirectoryLoadComplete(directory_fetch_info.local_id(), error); 562 OnDirectoryLoadComplete(directory_fetch_info.local_id(), error);
563 563
564 // Also notify the observers. 564 // Also notify the observers.
565 if (error == FILE_ERROR_OK && !directory_path->empty()) { 565 if (error == FILE_ERROR_OK && !directory_path->empty()) {
566 FOR_EACH_OBSERVER(ChangeListLoaderObserver, 566 FOR_EACH_OBSERVER(ChangeListLoaderObserver,
567 observers_, 567 observers_,
568 OnDirectoryReloaded(*directory_path)); 568 OnDirectoryReloaded(*directory_path));
569 } 569 }
570 } 570 }
571 571
572 } // namespace internal 572 } // namespace internal
573 } // namespace drive 573 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/debug_info_collector.cc ('k') | chrome/browser/chromeos/drive/download_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698