OLD | NEW |
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 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 const std::string& local_id = directory_fetch_info.local_id(); | 291 const std::string& local_id = directory_fetch_info.local_id(); |
292 ReadDirectoryCallbackState callback_state; | 292 ReadDirectoryCallbackState callback_state; |
293 callback_state.entries_callback = entries_callback; | 293 callback_state.entries_callback = entries_callback; |
294 callback_state.completion_callback = completion_callback; | 294 callback_state.completion_callback = completion_callback; |
295 pending_load_callback_[local_id].push_back(callback_state); | 295 pending_load_callback_[local_id].push_back(callback_state); |
296 | 296 |
297 // If loading task for |local_id| is already running, do nothing. | 297 // If loading task for |local_id| is already running, do nothing. |
298 if (pending_load_callback_[local_id].size() > 1) | 298 if (pending_load_callback_[local_id].size() > 1) |
299 return; | 299 return; |
300 | 300 |
301 // Note: To be precise, we need to call UpdateAboutResource() here. However, | |
302 // - It is costly to do GetAboutResource HTTP request every time. | |
303 // - The chance using an old value is small; it only happens when | |
304 // ReadDirectory is called during one GetAboutResource roundtrip time | |
305 // of a change list fetching. | |
306 // - Even if the value is old, it just marks the directory as older. It may | |
307 // trigger one future unnecessary re-fetch, but it'll never lose data. | |
308 about_resource_loader_->GetAboutResource( | 301 about_resource_loader_->GetAboutResource( |
309 base::Bind(&DirectoryLoader::ReadDirectoryAfterGetAboutResource, | 302 base::Bind(&DirectoryLoader::ReadDirectoryAfterGetAboutResource, |
310 weak_ptr_factory_.GetWeakPtr(), local_id)); | 303 weak_ptr_factory_.GetWeakPtr(), local_id)); |
311 } | 304 } |
312 | 305 |
313 void DirectoryLoader::ReadDirectoryAfterLoadParent( | 306 void DirectoryLoader::ReadDirectoryAfterLoadParent( |
314 const base::FilePath& directory_path, | 307 const base::FilePath& directory_path, |
315 const ReadDirectoryEntriesCallback& entries_callback, | 308 const ReadDirectoryEntriesCallback& entries_callback, |
316 const FileOperationCallback& completion_callback, | 309 const FileOperationCallback& completion_callback, |
317 FileError error) { | 310 FileError error) { |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
568 // Also notify the observers. | 561 // Also notify the observers. |
569 if (error == FILE_ERROR_OK && !directory_path->empty()) { | 562 if (error == FILE_ERROR_OK && !directory_path->empty()) { |
570 FOR_EACH_OBSERVER(ChangeListLoaderObserver, | 563 FOR_EACH_OBSERVER(ChangeListLoaderObserver, |
571 observers_, | 564 observers_, |
572 OnDirectoryReloaded(*directory_path)); | 565 OnDirectoryReloaded(*directory_path)); |
573 } | 566 } |
574 } | 567 } |
575 | 568 |
576 } // namespace internal | 569 } // namespace internal |
577 } // namespace drive | 570 } // namespace drive |
OLD | NEW |