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

Unified Diff: chrome/browser/chromeos/drive/file_system.cc

Issue 118993002: drive: Move FileSystem::LoadDirectoryIfNeeded to ChangeListLoader (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review fix Created 7 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/drive/file_system.cc
diff --git a/chrome/browser/chromeos/drive/file_system.cc b/chrome/browser/chromeos/drive/file_system.cc
index b3eb49f35dc18cac6d4f37a8b9b0ff0b6fbe6512..d8c0b7157ee43549eb1d4b3cb5774fad839234fd 100644
--- a/chrome/browser/chromeos/drive/file_system.cc
+++ b/chrome/browser/chromeos/drive/file_system.cc
@@ -9,7 +9,6 @@
#include "base/platform_file.h"
#include "base/prefs/pref_service.h"
#include "chrome/browser/chromeos/drive/change_list_loader.h"
-#include "chrome/browser/chromeos/drive/change_list_processor.h"
#include "chrome/browser/chromeos/drive/drive.pb.h"
#include "chrome/browser/chromeos/drive/file_cache.h"
#include "chrome/browser/chromeos/drive/file_system/copy_operation.h"
@@ -231,7 +230,7 @@ FileSystem::~FileSystem() {
change_list_loader_->RemoveObserver(this);
}
-void FileSystem::Reload(const FileOperationCallback& callback) {
+void FileSystem::Reset(const FileOperationCallback& callback) {
// Discard the current loader and operation objects and renew them. This is to
// avoid that changes initiated before the metadata reset is applied after the
// reset, which may cause an inconsistent state.
@@ -243,24 +242,7 @@ void FileSystem::Reload(const FileOperationCallback& callback) {
blocking_task_runner_,
FROM_HERE,
base::Bind(&ResetOnBlockingPool, resource_metadata_, cache_),
- base::Bind(&FileSystem::ReloadAfterReset,
- weak_ptr_factory_.GetWeakPtr(),
- callback));
-}
-
-void FileSystem::ReloadAfterReset(const FileOperationCallback& callback,
- FileError error) {
- if (error != FILE_ERROR_OK) {
- LOG(ERROR) << "Failed to reload Drive file system: "
- << FileErrorToString(error);
- callback.Run(error);
- return;
- }
-
- change_list_loader_->LoadIfNeeded(
- internal::DirectoryFetchInfo(),
- base::Bind(&FileSystem::OnUpdateChecked, weak_ptr_factory_.GetWeakPtr()));
- callback.Run(error);
+ callback);
}
void FileSystem::ResetComponents() {
@@ -417,7 +399,7 @@ void FileSystem::CreateDirectory(
DCHECK(!callback.is_null());
// Ensure its parent directory is loaded to the local metadata.
- LoadDirectoryIfNeeded(
+ change_list_loader_->LoadDirectoryIfNeeded(
directory_path.DirName(),
base::Bind(&FileSystem::CreateDirectoryAfterLoad,
weak_ptr_factory_.GetWeakPtr(),
@@ -433,15 +415,11 @@ void FileSystem::CreateDirectoryAfterLoad(
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(!callback.is_null());
- switch (load_error) {
- case FILE_ERROR_OK:
- case FILE_ERROR_NOT_FOUND:
- create_directory_operation_->CreateDirectory(
- directory_path, is_exclusive, is_recursive, callback);
- break;
- default:
- callback.Run(load_error);
- }
+ DVLOG_IF(1, load_error != FILE_ERROR_OK) << "LoadDirectoryIfNeeded failed. "
+ << FileErrorToString(load_error);
+
+ create_directory_operation_->CreateDirectory(
+ directory_path, is_exclusive, is_recursive, callback);
}
void FileSystem::CreateFile(const base::FilePath& file_path,
@@ -606,20 +584,13 @@ void FileSystem::GetResourceEntryAfterGetEntry(
if (error == FILE_ERROR_NOT_FOUND) {
// If the information about the path is not in the local ResourceMetadata,
// try fetching information of the directory and retry.
- //
- // Note: this forms mutual recursion between GetResourceEntry and
- // LoadDirectoryIfNeeded, because directory loading requires the existence
- // of directory entry itself. The recursion terminates because we always go
- // up the hierarchy by .DirName() bounded under the Drive root path.
- if (util::GetDriveGrandRootPath().IsParent(file_path)) {
- LoadDirectoryIfNeeded(
- file_path.DirName(),
- base::Bind(&FileSystem::GetResourceEntryAfterLoad,
- weak_ptr_factory_.GetWeakPtr(),
- file_path,
- callback));
- return;
- }
+ change_list_loader_->LoadDirectoryIfNeeded(
+ file_path.DirName(),
+ base::Bind(&FileSystem::GetResourceEntryAfterLoad,
+ weak_ptr_factory_.GetWeakPtr(),
+ file_path,
+ callback));
+ return;
}
callback.Run(error, entry.Pass());
@@ -632,10 +603,8 @@ void FileSystem::GetResourceEntryAfterLoad(
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(!callback.is_null());
- if (error != FILE_ERROR_OK) {
- callback.Run(error, scoped_ptr<ResourceEntry>());
- return;
- }
+ DVLOG_IF(1, error != FILE_ERROR_OK) << "LoadDirectoryIfNeeded failed. "
+ << FileErrorToString(error);
scoped_ptr<ResourceEntry> entry(new ResourceEntry);
ResourceEntry* entry_ptr = entry.get();
@@ -656,7 +625,7 @@ void FileSystem::ReadDirectory(
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(!callback.is_null());
- LoadDirectoryIfNeeded(
+ change_list_loader_->LoadDirectoryIfNeeded(
directory_path,
base::Bind(&FileSystem::ReadDirectoryAfterLoad,
weak_ptr_factory_.GetWeakPtr(),
@@ -664,51 +633,6 @@ void FileSystem::ReadDirectory(
callback));
}
-void FileSystem::LoadDirectoryIfNeeded(const base::FilePath& directory_path,
- const FileOperationCallback& callback) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- DCHECK(!callback.is_null());
-
- GetResourceEntry(
- directory_path,
- base::Bind(&FileSystem::LoadDirectoryIfNeededAfterGetEntry,
- weak_ptr_factory_.GetWeakPtr(),
- directory_path,
- callback));
-}
-
-void FileSystem::LoadDirectoryIfNeededAfterGetEntry(
- const base::FilePath& directory_path,
- const FileOperationCallback& callback,
- FileError error,
- scoped_ptr<ResourceEntry> entry) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- DCHECK(!callback.is_null());
-
- if (error != FILE_ERROR_OK) {
- callback.Run(error);
- return;
- }
-
- if (!entry->file_info().is_directory()) {
- callback.Run(FILE_ERROR_NOT_A_DIRECTORY);
- return;
- }
-
- // drive/other does not exist on the server.
- if (entry->local_id() == util::kDriveOtherDirLocalId) {
- callback.Run(FILE_ERROR_OK);
- return;
- }
-
- // Pass the directory fetch info so we can fetch the contents of the
- // directory before loading change lists.
- internal::DirectoryFetchInfo directory_fetch_info(
- entry->resource_id(),
- entry->directory_specific_info().changestamp());
- change_list_loader_->LoadIfNeeded(directory_fetch_info, callback);
-}
-
void FileSystem::ReadDirectoryAfterLoad(
const base::FilePath& directory_path,
const ReadDirectoryCallback& callback,
@@ -716,7 +640,7 @@ void FileSystem::ReadDirectoryAfterLoad(
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(!callback.is_null());
- DVLOG_IF(1, error != FILE_ERROR_OK) << "LoadIfNeeded failed. "
+ DVLOG_IF(1, error != FILE_ERROR_OK) << "LoadDirectoryIfNeeded failed. "
<< FileErrorToString(error);
resource_metadata_->ReadDirectoryByPathOnUIThread(
« no previous file with comments | « chrome/browser/chromeos/drive/file_system.h ('k') | chrome/browser/chromeos/drive/file_system/operation_test_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698