Chromium Code Reviews| Index: chrome/browser/chromeos/drive/change_list_loader.h |
| diff --git a/chrome/browser/chromeos/drive/change_list_loader.h b/chrome/browser/chromeos/drive/change_list_loader.h |
| index 201745c416f19149624c7a9f97cadb9ae65b701f..8bcaa81aa824baf27d4345d0163f4ebfb6dd88c5 100644 |
| --- a/chrome/browser/chromeos/drive/change_list_loader.h |
| +++ b/chrome/browser/chromeos/drive/change_list_loader.h |
| @@ -104,25 +104,44 @@ class ChangeListLoader { |
| const base::Closure& update_finished_callback); |
| // Indicates whether there is a feed refreshing server request is in flight. |
| - bool refreshing() const { return refreshing_; } |
| + bool refreshing() const; |
|
satorux1
2013/04/17 07:50:15
IsRefreshing()? This is now a non inline function.
kinaba
2013/04/17 08:46:23
Done.
|
| private: |
| - // Initiates the change list loading from the server if the local |
| - // changestamp is older than the server changestamp. |
| - // See the comment at Load() for |directory_fetch_info| parameter. |
| - // |callback| must not be null. |
| + // Implementation of LoadIfNeeded and CheckForUpdates. Start metadata loading |
| + // of |directory_fetch_info|, and calls |callback| when it's done. If there is |
| + // already a loading job in-flight for |directory_fetch_info|, just append |
| + // the |callback| to the callback queue of the already running job. |
| + void Load(const DirectoryFetchInfo& directory_fetch_info, |
| + const FileOperationCallback& callback); |
| + |
| + // Part of Load(). DoInitialLoad() is called if it is the first time to Load. |
| + // Otherwise DoUpdateLoad() is used. The difference of two cases are: |
| + // - When we could load from cache, DoInitialLoad runs callback immediately |
| + // and further operations (check changestamp and load from server if needed) |
| + // in background. |
| + // - Even when |directory_fetch_info| is set, DoInitialLoad runs change list |
| + // loading after directory loading is finished. |
| + void DoInitialLoad(const DirectoryFetchInfo& directory_fetch_info, |
| + int64 local_changestamp); |
| + void DoUpdateLoad(const DirectoryFetchInfo& directory_fetch_info, |
| + int64 local_changestamp); |
| + |
| + // Part of Load(). |
| + // Initiates the change list loading from the server when |local_changestamp| |
| + // is older than the server changestamp. If |directory_fetch_info| is set, |
| + // do directory loading before change list loading. |
| void LoadFromServerIfNeeded(const DirectoryFetchInfo& directory_fetch_info, |
| - const FileOperationCallback& callback); |
| - |
| - // Checks the local changestamp. |callback| must not be null. |
| - void CheckLocalChangestamp(const GetChangestampCallback& callback); |
| + int64 local_changestamp); |
| - // Part of Load(). Called after checking the local changestamp completes. |
| - void LoadAfterCheckLocalChangestamp( |
| + // Part of Load(). |
| + // Check the directory's changestamp and |last_known_remote_changestamp_|, and |
|
satorux1
2013/04/17 07:50:15
Checks
kinaba
2013/04/17 08:46:23
Done.
|
| + // load the feed from server if it is old. Runs |callback| when it's done. |
| + void CheckChangestampAndLoadDirectoryIfNeeed( |
| const DirectoryFetchInfo& directory_fetch_info, |
| - const FileOperationCallback& callback, |
| - int64 local_changestamp); |
| + int64 local_changestamp, |
| + const FileOperationCallback& callback); |
| + // Part of LoadChangeListFromServer(). |
| // Callback to fetch all the resource list response from the server. |
| // After all the resource list are fetched, |callback| |
| // will be invoked with the collected change lists. |
| @@ -184,40 +203,28 @@ class ChangeListLoader { |
| DriveFileError error, |
| const base::FilePath& directory_path); |
| - // Part of LoadFromServerIfNeeded(). Called when |
| - // DriveScheduler::GetAboutResource() is complete. This method calls |
| - // CompareChangestampsAndLoadIfNeeded() to make a decision about whether or |
| - // not to fetch the change list. |
| + // Part of LoadFromServerIfNeeded(). Called when GetAboutResource is complete. |
| void LoadFromServerIfNeededAfterGetAbout( |
| const DirectoryFetchInfo& directory_fetch_info, |
| - const FileOperationCallback& callback, |
| + int64 local_changestamp, |
| google_apis::GDataErrorCode status, |
| scoped_ptr<google_apis::AboutResource> about_resource); |
| - // Compares the largetst_change_id in |about_resource| and |local_changestamp| |
| - // and triggers LoadFromServer if necessary. |
| - void CompareChangestampsAndLoadIfNeeded( |
| - const DirectoryFetchInfo& directory_fetch_info, |
| - const FileOperationCallback& callback, |
| - scoped_ptr<google_apis::AboutResource> about_resource, |
| - int64 local_changestamp); |
| - |
| + // Part of LoadFromServerIfNeeded(). |
| // Starts loading the change list since |start_changestamp|, or the full |
| // resource list if |start_changestamp| is zero. For full update, the |
| // largest_change_id and root_folder_id from |about_resource| will be used. |
| - // |callback| must not be null. |
| void LoadChangeListFromServer( |
| scoped_ptr<google_apis::AboutResource> about_resource, |
| - int64 start_changestamp, |
| - const FileOperationCallback& callback); |
| + int64 start_changestamp); |
| + // Part of LoadFromServerIfNeeded(). |
| // Starts loading the change list from the server. Called after the |
| // directory contents are "fast-fetch"ed. |
| - void StartLoadChangeListFromServer( |
| + void LoadChangeListFromServerAfterLoadDirectory( |
| const DirectoryFetchInfo& directory_fetch_info, |
| scoped_ptr<google_apis::AboutResource> about_resource, |
| int64 start_changestamp, |
| - const FileOperationCallback& callback, |
| DriveFileError error); |
| // Callback for handling response from |DriveAPIService::GetAppList|. |
| @@ -234,15 +241,11 @@ class ChangeListLoader { |
| google_apis::GDataErrorCode status, |
| scoped_ptr<google_apis::ResourceList> resource_list); |
| - // Callback for handling feed content fetching while searching for file info. |
| - // This callback is invoked after async feed fetch operation that was |
| - // invoked by StartDirectoryRefresh() completes. This callback will update |
| - // the content of the refreshed directory object and continue initially |
| - // started FindEntryByPath() request. |
| + // Part of LoadChangeListFromServer(). |
| + // Applies the change list loaded from the server to local metadata storage. |
| void UpdateMetadataFromFeedAfterLoadFromServer( |
| scoped_ptr<google_apis::AboutResource> about_resource, |
| bool is_delta_feed, |
| - const FileOperationCallback& callback, |
| ScopedVector<ChangeList> change_lists, |
| DriveFileError error); |
| @@ -251,37 +254,19 @@ class ChangeListLoader { |
| bool should_notify, |
| const base::Closure& update_finished_callback); |
| - // Callback for UpdateFromFeed. |
| - void OnUpdateFromFeed(bool is_initial_load, |
| - const FileOperationCallback& load_finished_callback); |
| + // Part of LoadChangeListFromServer(). |
| + // Called when UpdateMetadataFromFeedAfterLoadFromServer is finished. |
| + void OnUpdateFromFeed(); |
| // This function should be called when the change list load is complete. |
| - // Runs |callback| with |error|, and flushes the pending callbacks. |
| - void OnChangeListLoadComplete(const FileOperationCallback& callback, |
| - DriveFileError error); |
| + // Flushes the callbacks for change list loading and all directory loading. |
| + void OnChangeListLoadComplete(DriveFileError error); |
| - // This function should be called when the change list load is complete. |
| - // Runs |callback| with |error|, and flushes the pending callbacks. |
| + // This function should be called when the directory load is complete. |
| + // Flushes the callbacks waiting for the directory to be loaded. |
| void OnDirectoryLoadComplete(const DirectoryFetchInfo& directory_fetch_info, |
| - const FileOperationCallback& callback, |
| DriveFileError error); |
| - // Schedules |callback| to run when it's ready (i.e. the change list |
| - // loading is complete or the directory specified by |directory_fetch_info| |
| - // is loaded). |directory_fetch_info| can be empty if the callback is not |
| - // interested in a particular directory. |
| - // |callback| must not be null. |
| - void ScheduleRun(const DirectoryFetchInfo& directory_fetch_info, |
| - const FileOperationCallback& callback); |
| - |
| - // Flushes the feed loading callbacks added via ScheduleRun(), by scheduling |
| - // to run all of them with the given error code. |
| - void FlushPendingLoadCallback(DriveFileError error); |
| - |
| - // Processes tasks that match the resource ID. |
| - void ProcessPendingLoadCallbackForDirectory(const std::string& resource_id, |
| - DriveFileError error); |
| - |
| DriveResourceMetadata* resource_metadata_; // Not owned. |
| DriveScheduler* scheduler_; // Not owned. |
| DriveWebAppsRegistry* webapps_registry_; // Not owned. |
| @@ -292,7 +277,6 @@ class ChangeListLoader { |
| LoadCallbackMap pending_load_callback_; |
| // Indicates whether there is a feed refreshing server request is in flight. |
| - bool refreshing_; |
| int64 last_known_remote_changestamp_; |
| // True if the file system feed is loaded from the cache or from the server. |