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

Unified Diff: chrome/browser/chromeos/drive/change_list_loader.h

Issue 1215503010: OBSOLETE: Move (most of) chrome/browser/chromeos/drive into components/drive. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@drive-componentize-service
Patch Set: Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
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
deleted file mode 100644
index 612df9749e54bc30bf6dfb58cee9021eaf1364d8..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/drive/change_list_loader.h
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_CHROMEOS_DRIVE_CHANGE_LIST_LOADER_H_
-#define CHROME_BROWSER_CHROMEOS_DRIVE_CHANGE_LIST_LOADER_H_
-
-#include <string>
-#include <vector>
-
-#include "base/callback.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
-#include "base/observer_list.h"
-#include "base/threading/thread_checker.h"
-#include "chrome/browser/chromeos/drive/file_errors.h"
-#include "google_apis/drive/drive_api_error_codes.h"
-#include "google_apis/drive/drive_common_callbacks.h"
-
-class GURL;
-
-namespace base {
-class CancellationFlag;
-class ScopedClosureRunner;
-class SequencedTaskRunner;
-class Time;
-} // namespace base
-
-namespace google_apis {
-class AboutResource;
-} // namespace google_apis
-
-namespace drive {
-
-class EventLogger;
-class JobScheduler;
-class ResourceEntry;
-
-namespace internal {
-
-class ChangeList;
-class ChangeListLoaderObserver;
-class ChangeListProcessor;
-class DirectoryLoader;
-class ResourceMetadata;
-
-// Delays execution of tasks as long as more than one lock is alive.
-// Used to ensure that ChangeListLoader does not cause race condition by adding
-// new entries created by sync tasks before they do.
-// All code which may add entries found on the server to the local metadata
-// should use this class.
-class LoaderController {
- public:
- LoaderController();
- ~LoaderController();
-
- // Increments the lock count and returns an object which decrements the count
- // on its destruction.
- // While the lock count is positive, tasks will be pending.
- scoped_ptr<base::ScopedClosureRunner> GetLock();
-
- // Runs the task if the lock count is 0, otherwise it will be pending.
- void ScheduleRun(const base::Closure& task);
-
- private:
- // Decrements the lock count.
- void Unlock();
-
- int lock_count_;
- std::vector<base::Closure> pending_tasks_;
-
- base::ThreadChecker thread_checker_;
-
- base::WeakPtrFactory<LoaderController> weak_ptr_factory_;
- DISALLOW_COPY_AND_ASSIGN(LoaderController);
-};
-
-// This class is responsible to load AboutResource from the server and cache it.
-class AboutResourceLoader {
- public:
- explicit AboutResourceLoader(JobScheduler* scheduler);
- ~AboutResourceLoader();
-
- // Returns the cached about resource.
- // NULL is returned if the cache is not available.
- const google_apis::AboutResource* cached_about_resource() const {
- return cached_about_resource_.get();
- }
-
- // Gets the 'latest' about resource and asynchronously runs |callback|. I.e.,
- // 1) If the last call to UpdateAboutResource call is in-flight, wait for it.
- // 2) Otherwise, if the resource is cached, just returns the cached value.
- // 3) If neither of the above hold, queries the API server by calling
- // |UpdateAboutResource|.
- void GetAboutResource(const google_apis::AboutResourceCallback& callback);
-
- // Gets the about resource from the server, and caches it if successful. This
- // function calls JobScheduler::GetAboutResource internally. The cache will be
- // used in |GetAboutResource|.
- void UpdateAboutResource(const google_apis::AboutResourceCallback& callback);
-
- private:
- // Part of UpdateAboutResource().
- // This function should be called when the latest about resource is being
- // fetched from the server. The retrieved about resource is cloned, and one is
- // cached and the other is passed to callbacks associated with |task_id|.
- void UpdateAboutResourceAfterGetAbout(
- int task_id,
- google_apis::DriveApiErrorCode status,
- scoped_ptr<google_apis::AboutResource> about_resource);
-
- JobScheduler* scheduler_;
- scoped_ptr<google_apis::AboutResource> cached_about_resource_;
-
- // Identifier to denote the latest UpdateAboutResource call.
- int current_update_task_id_;
- // Mapping from each UpdateAboutResource task ID to the corresponding
- // callbacks. Note that there will be multiple callbacks for a single task
- // when GetAboutResource is called before the task completes.
- std::map<int, std::vector<google_apis::AboutResourceCallback> >
- pending_callbacks_;
-
- base::ThreadChecker thread_checker_;
-
- base::WeakPtrFactory<AboutResourceLoader> weak_ptr_factory_;
- DISALLOW_COPY_AND_ASSIGN(AboutResourceLoader);
-};
-
-// ChangeListLoader is used to load the change list, the full resource list,
-// and directory contents, from Google Drive API. The class also updates the
-// resource metadata with the change list loaded from the server.
-//
-// Note that the difference between "resource list" and "change list" is
-// subtle hence the two words are often used interchangeably. To be precise,
-// "resource list" refers to metadata from the server when fetching the full
-// resource metadata, or fetching directory contents, whereas "change list"
-// refers to metadata from the server when fetching changes (delta).
-class ChangeListLoader {
- public:
- // Resource feed fetcher from the server.
- class FeedFetcher;
-
- ChangeListLoader(EventLogger* logger,
- base::SequencedTaskRunner* blocking_task_runner,
- ResourceMetadata* resource_metadata,
- JobScheduler* scheduler,
- AboutResourceLoader* about_resource_loader,
- LoaderController* apply_task_controller);
- ~ChangeListLoader();
-
- // Indicates whether there is a request for full resource list or change
- // list fetching is in flight (i.e. directory contents fetching does not
- // count).
- bool IsRefreshing() const;
-
- // Adds and removes the observer.
- void AddObserver(ChangeListLoaderObserver* observer);
- void RemoveObserver(ChangeListLoaderObserver* observer);
-
- // Checks for updates on the server. Does nothing if the change list is now
- // being loaded or refreshed. |callback| must not be null.
- // Note: |callback| will be called if the check for updates actually
- // runs, i.e. it may NOT be called if the checking is ignored.
- void CheckForUpdates(const FileOperationCallback& callback);
-
- // Starts the change list loading if needed. If the locally stored metadata is
- // available, runs |callback| immediately and starts checking server for
- // updates in background. If the locally stored metadata is not available,
- // starts loading from the server, and runs |callback| to tell the result to
- // the caller when it is finished.
- //
- // |callback| must not be null.
- void LoadIfNeeded(const FileOperationCallback& callback);
-
- private:
- // Starts the resource metadata loading and calls |callback| when it's done.
- void Load(const FileOperationCallback& callback);
- void LoadAfterGetLargestChangestamp(bool is_initial_load,
- const int64* local_changestamp,
- FileError error);
- void LoadAfterGetAboutResource(
- int64 local_changestamp,
- google_apis::DriveApiErrorCode status,
- scoped_ptr<google_apis::AboutResource> about_resource);
-
- // Part of Load().
- // This function should be called when the change list load is complete.
- // Flushes the callbacks for change list loading and all directory loading.
- void OnChangeListLoadComplete(FileError error);
-
- // Called when the loading about_resource_loader_->UpdateAboutResource is
- // completed.
- void OnAboutResourceUpdated(google_apis::DriveApiErrorCode error,
- scoped_ptr<google_apis::AboutResource> resource);
-
- // ================= Implementation for change list loading =================
-
- // Part of LoadFromServerIfNeeded().
- // Starts loading the change list since |start_changestamp|, or the full
- // resource list if |start_changestamp| is zero.
- void LoadChangeListFromServer(int64 start_changestamp);
-
- // Part of LoadChangeListFromServer().
- // Called when the entire change list is loaded.
- void LoadChangeListFromServerAfterLoadChangeList(
- scoped_ptr<google_apis::AboutResource> about_resource,
- bool is_delta_update,
- FileError error,
- ScopedVector<ChangeList> change_lists);
-
- // Part of LoadChangeListFromServer().
- // Called when the resource metadata is updated.
- void LoadChangeListFromServerAfterUpdate(
- ChangeListProcessor* change_list_processor,
- bool should_notify_changed_directories,
- const base::Time& start_time,
- FileError error);
-
- EventLogger* logger_; // Not owned.
- scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
- scoped_ptr<base::CancellationFlag> in_shutdown_;
- ResourceMetadata* resource_metadata_; // Not owned.
- JobScheduler* scheduler_; // Not owned.
- AboutResourceLoader* about_resource_loader_; // Not owned.
- LoaderController* loader_controller_; // Not owned.
- base::ObserverList<ChangeListLoaderObserver> observers_;
- std::vector<FileOperationCallback> pending_load_callback_;
- FileOperationCallback pending_update_check_callback_;
-
- // Running feed fetcher.
- scoped_ptr<FeedFetcher> change_feed_fetcher_;
-
- // True if the full resource list is loaded (i.e. the resource metadata is
- // stored locally).
- bool loaded_;
-
- base::ThreadChecker thread_checker_;
-
- // Note: This should remain the last member so it'll be destroyed and
- // invalidate its weak pointers before any other members are destroyed.
- base::WeakPtrFactory<ChangeListLoader> weak_ptr_factory_;
- DISALLOW_COPY_AND_ASSIGN(ChangeListLoader);
-};
-
-} // namespace internal
-} // namespace drive
-
-#endif // CHROME_BROWSER_CHROMEOS_DRIVE_CHANGE_LIST_LOADER_H_

Powered by Google App Engine
This is Rietveld 408576698