Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / drive / file_system.h
index 28f608a..f2fcde7 100644 (file)
@@ -12,7 +12,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
 #include "chrome/browser/chromeos/drive/change_list_loader_observer.h"
-#include "chrome/browser/chromeos/drive/file_system/operation_observer.h"
+#include "chrome/browser/chromeos/drive/file_system/operation_delegate.h"
 #include "chrome/browser/chromeos/drive/file_system_interface.h"
 #include "google_apis/drive/gdata_errorcode.h"
 
@@ -30,13 +30,17 @@ class ResourceEntry;
 namespace drive {
 
 class DriveServiceInterface;
+class EventLogger;
 class FileCacheEntry;
 class FileSystemObserver;
 class JobScheduler;
 
 namespace internal {
+class AboutResourceLoader;
 class ChangeListLoader;
+class DirectoryLoader;
 class FileCache;
+class LoaderController;
 class ResourceMetadata;
 class SyncClient;
 }  // namespace internal
@@ -49,7 +53,6 @@ class DownloadOperation;
 class GetFileForSavingOperation;
 class MoveOperation;
 class OpenFileOperation;
-class OperationObserver;
 class RemoveOperation;
 class SearchOperation;
 class TouchOperation;
@@ -59,9 +62,10 @@ class TruncateOperation;
 // The production implementation of FileSystemInterface.
 class FileSystem : public FileSystemInterface,
                    public internal::ChangeListLoaderObserver,
-                   public file_system::OperationObserver {
+                   public file_system::OperationDelegate {
  public:
   FileSystem(PrefService* pref_service,
+             EventLogger* logger,
              internal::FileCache* cache,
              DriveServiceInterface* drive_service,
              JobScheduler* scheduler,
@@ -71,101 +75,109 @@ class FileSystem : public FileSystemInterface,
   virtual ~FileSystem();
 
   // FileSystemInterface overrides.
-  virtual void AddObserver(FileSystemObserver* observer) OVERRIDE;
-  virtual void RemoveObserver(FileSystemObserver* observer) OVERRIDE;
-  virtual void CheckForUpdates() OVERRIDE;
+  virtual void AddObserver(FileSystemObserver* observer) override;
+  virtual void RemoveObserver(FileSystemObserver* observer) override;
+  virtual void CheckForUpdates() override;
   virtual void Search(const std::string& search_query,
                       const GURL& next_link,
-                      const SearchCallback& callback) OVERRIDE;
+                      const SearchCallback& callback) override;
   virtual void SearchMetadata(const std::string& query,
                               int options,
                               int at_most_num_matches,
-                              const SearchMetadataCallback& callback) OVERRIDE;
+                              const SearchMetadataCallback& callback) override;
   virtual void TransferFileFromLocalToRemote(
       const base::FilePath& local_src_file_path,
       const base::FilePath& remote_dest_file_path,
-      const FileOperationCallback& callback) OVERRIDE;
+      const FileOperationCallback& callback) override;
   virtual void OpenFile(const base::FilePath& file_path,
                         OpenMode open_mode,
                         const std::string& mime_type,
-                        const OpenFileCallback& callback) OVERRIDE;
+                        const OpenFileCallback& callback) override;
   virtual void Copy(const base::FilePath& src_file_path,
                     const base::FilePath& dest_file_path,
                     bool preserve_last_modified,
-                    const FileOperationCallback& callback) OVERRIDE;
+                    const FileOperationCallback& callback) override;
   virtual void Move(const base::FilePath& src_file_path,
                     const base::FilePath& dest_file_path,
-                    bool preserve_last_modified,
-                    const FileOperationCallback& callback) OVERRIDE;
+                    const FileOperationCallback& callback) override;
   virtual void Remove(const base::FilePath& file_path,
                       bool is_recursive,
-                      const FileOperationCallback& callback) OVERRIDE;
+                      const FileOperationCallback& callback) override;
   virtual void CreateDirectory(const base::FilePath& directory_path,
                                bool is_exclusive,
                                bool is_recursive,
-                               const FileOperationCallback& callback) OVERRIDE;
+                               const FileOperationCallback& callback) override;
   virtual void CreateFile(const base::FilePath& file_path,
                           bool is_exclusive,
                           const std::string& mime_type,
-                          const FileOperationCallback& callback) OVERRIDE;
+                          const FileOperationCallback& callback) override;
   virtual void TouchFile(const base::FilePath& file_path,
                          const base::Time& last_access_time,
                          const base::Time& last_modified_time,
-                         const FileOperationCallback& callback) OVERRIDE;
+                         const FileOperationCallback& callback) override;
   virtual void TruncateFile(const base::FilePath& file_path,
                             int64 length,
-                            const FileOperationCallback& callback) OVERRIDE;
+                            const FileOperationCallback& callback) override;
   virtual void Pin(const base::FilePath& file_path,
-                   const FileOperationCallback& callback) OVERRIDE;
+                   const FileOperationCallback& callback) override;
   virtual void Unpin(const base::FilePath& file_path,
-                     const FileOperationCallback& callback) OVERRIDE;
+                     const FileOperationCallback& callback) override;
   virtual void GetFile(const base::FilePath& file_path,
-                             const GetFileCallback& callback) OVERRIDE;
+                             const GetFileCallback& callback) override;
   virtual void GetFileForSaving(const base::FilePath& file_path,
-                                      const GetFileCallback& callback) OVERRIDE;
-  virtual void GetFileContent(
+                                      const GetFileCallback& callback) override;
+  virtual base::Closure GetFileContent(
       const base::FilePath& file_path,
       const GetFileContentInitializedCallback& initialized_callback,
       const google_apis::GetContentCallback& get_content_callback,
-      const FileOperationCallback& completion_callback) OVERRIDE;
+      const FileOperationCallback& completion_callback) override;
   virtual void GetResourceEntry(
       const base::FilePath& file_path,
-      const GetResourceEntryCallback& callback) OVERRIDE;
+      const GetResourceEntryCallback& callback) override;
   virtual void ReadDirectory(
       const base::FilePath& directory_path,
-      const ReadDirectoryCallback& callback) OVERRIDE;
+      const ReadDirectoryEntriesCallback& entries_callback,
+      const FileOperationCallback& completion_callback) override;
   virtual void GetAvailableSpace(
-      const GetAvailableSpaceCallback& callback) OVERRIDE;
+      const GetAvailableSpaceCallback& callback) override;
   virtual void GetShareUrl(
       const base::FilePath& file_path,
       const GURL& embed_origin,
-      const GetShareUrlCallback& callback) OVERRIDE;
+      const GetShareUrlCallback& callback) override;
   virtual void GetMetadata(
-      const GetFilesystemMetadataCallback& callback) OVERRIDE;
+      const GetFilesystemMetadataCallback& callback) override;
   virtual void MarkCacheFileAsMounted(
       const base::FilePath& drive_file_path,
-      const MarkMountedCallback& callback) OVERRIDE;
+      const MarkMountedCallback& callback) override;
   virtual void MarkCacheFileAsUnmounted(
       const base::FilePath& cache_file_path,
-      const FileOperationCallback& callback) OVERRIDE;
-  virtual void GetCacheEntry(
-      const base::FilePath& drive_file_path,
-      const GetCacheEntryCallback& callback) OVERRIDE;
-  virtual void Reset(const FileOperationCallback& callback) OVERRIDE;
-
-  // file_system::OperationObserver overrides.
-  virtual void OnDirectoryChangedByOperation(
-      const base::FilePath& directory_path) OVERRIDE;
-  virtual void OnEntryUpdatedByOperation(const std::string& local_id) OVERRIDE;
+      const FileOperationCallback& callback) override;
+  virtual void AddPermission(const base::FilePath& drive_file_path,
+                             const std::string& email,
+                             google_apis::drive::PermissionRole role,
+                             const FileOperationCallback& callback) override;
+  virtual void Reset(const FileOperationCallback& callback) override;
+  virtual void GetPathFromResourceId(const std::string& resource_id,
+                                     const GetFilePathCallback& callback)
+      override;
+
+  // file_system::OperationDelegate overrides.
+  virtual void OnFileChangedByOperation(
+      const FileChange& changed_files) override;
+  virtual void OnEntryUpdatedByOperation(const std::string& local_id) override;
   virtual void OnDriveSyncError(file_system::DriveSyncErrorType type,
-                                const std::string& local_id) OVERRIDE;
+                                const std::string& local_id) override;
+  virtual bool WaitForSyncComplete(
+      const std::string& local_id,
+      const FileOperationCallback& callback) override;
 
   // ChangeListLoader::Observer overrides.
   // Used to propagate events from ChangeListLoader.
-  virtual void OnDirectoryChanged(
-      const base::FilePath& directory_path) OVERRIDE;
-  virtual void OnLoadFromServerComplete() OVERRIDE;
-  virtual void OnInitialLoadComplete() OVERRIDE;
+  virtual void OnDirectoryReloaded(
+      const base::FilePath& directory_path) override;
+  virtual void OnFileChanged(const FileChange& changed_files) override;
+  virtual void OnLoadFromServerComplete() override;
+  virtual void OnInitialLoadComplete() override;
 
   // Used by tests.
   internal::ChangeListLoader* change_list_loader_for_testing() {
@@ -174,17 +186,16 @@ class FileSystem : public FileSystemInterface,
   internal::SyncClient* sync_client_for_testing() { return sync_client_.get(); }
 
  private:
+  struct CreateDirectoryParams;
+
   // Used for initialization and Reset(). (Re-)initializes sub components that
   // need to be recreated during the reset of resource metadata and the cache.
   void ResetComponents();
 
-  // Part of CreateDirectory(). Called after ChangeListLoader::LoadIfNeeded()
+  // Part of CreateDirectory(). Called after ReadDirectory()
   // is called and made sure that the resource metadata is loaded.
-  void CreateDirectoryAfterLoad(const base::FilePath& directory_path,
-                                bool is_exclusive,
-                                bool is_recursive,
-                                const FileOperationCallback& callback,
-                                FileError load_error);
+  void CreateDirectoryAfterRead(const CreateDirectoryParams& params,
+                                FileError error);
 
   void FinishPin(const FileOperationCallback& callback,
                  const std::string* local_id,
@@ -205,45 +216,40 @@ class FileSystem : public FileSystemInterface,
   void OnUpdateChecked(FileError error);
 
   // Part of GetResourceEntry().
-  // Called when LoadDirectoryIfNeeded() is complete.
-  void GetResourceEntryAfterLoad(const base::FilePath& file_path,
+  // Called when ReadDirectory() is complete.
+  void GetResourceEntryAfterRead(const base::FilePath& file_path,
                                  const GetResourceEntryCallback& callback,
                                  FileError error);
 
-  // Part of ReadDirectory()
-  // 1) Called when LoadDirectoryIfNeeded() is complete.
-  // 2) Called when ResourceMetadata::ReadDirectory() is complete.
-  // |callback| must not be null.
-  void ReadDirectoryAfterLoad(const base::FilePath& directory_path,
-                              const ReadDirectoryCallback& callback,
-                              FileError error);
-  void ReadDirectoryAfterRead(const base::FilePath& directory_path,
-                              const ReadDirectoryCallback& callback,
-                              FileError error,
-                              scoped_ptr<ResourceEntryVector> entries);
-
   // Part of GetShareUrl. Resolves the resource entry to get the resource it,
   // and then uses it to ask for the share url. |callback| must not be null.
-  void GetShareUrlAfterGetResourceEntry(
-      const base::FilePath& file_path,
-      const GURL& embed_origin,
-      const GetShareUrlCallback& callback,
-      FileError error,
-      scoped_ptr<ResourceEntry> entry);
-  void OnGetResourceEntryForGetShareUrl(
-      const GetShareUrlCallback& callback,
-      google_apis::GDataErrorCode status,
-      const GURL& share_url);
+  void GetShareUrlAfterGetResourceEntry(const base::FilePath& file_path,
+                                        const GURL& embed_origin,
+                                        const GetShareUrlCallback& callback,
+                                        ResourceEntry* entry,
+                                        FileError error);
+  void OnGetResourceEntryForGetShareUrl(const GetShareUrlCallback& callback,
+                                        google_apis::GDataErrorCode status,
+                                        const GURL& share_url);
+  // Part of AddPermission.
+  void AddPermissionAfterGetResourceEntry(
+      const std::string& email,
+      google_apis::drive::PermissionRole role,
+      const FileOperationCallback& callback,
+      ResourceEntry* entry,
+      FileError error);
 
   // Part of OnDriveSyncError().
   virtual void OnDriveSyncErrorAfterGetFilePath(
       file_system::DriveSyncErrorType type,
-      const base::FilePath& fiepath);
+      const base::FilePath* file_path,
+      FileError error);
 
   // Used to get Drive related preferences.
   PrefService* pref_service_;
 
   // Sub components owned by DriveIntegrationService.
+  EventLogger* logger_;
   internal::FileCache* cache_;
   DriveServiceInterface* drive_service_;
   JobScheduler* scheduler_;
@@ -255,11 +261,19 @@ class FileSystem : public FileSystemInterface,
   // Error of the last update check.
   FileError last_update_check_error_;
 
-  scoped_ptr<internal::SyncClient> sync_client_;
+  // Used to load about resource.
+  scoped_ptr<internal::AboutResourceLoader> about_resource_loader_;
+
+  // Used to control ChangeListLoader.
+  scoped_ptr<internal::LoaderController> loader_controller_;
 
   // The loader is used to load the change lists.
   scoped_ptr<internal::ChangeListLoader> change_list_loader_;
 
+  scoped_ptr<internal::DirectoryLoader> directory_loader_;
+
+  scoped_ptr<internal::SyncClient> sync_client_;
+
   ObserverList<FileSystemObserver> observers_;
 
   scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;