Home | History | Annotate | Download | only in drive_backend
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_LIST_CHANGES_TASK_H_
      6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_LIST_CHANGES_TASK_H_
      7 
      8 #include "base/memory/scoped_ptr.h"
      9 #include "base/memory/scoped_vector.h"
     10 #include "base/memory/weak_ptr.h"
     11 #include "chrome/browser/sync_file_system/drive_backend/sync_task.h"
     12 #include "google_apis/drive/gdata_errorcode.h"
     13 
     14 namespace drive {
     15 class DriveServiceInterface;
     16 }
     17 
     18 namespace google_apis {
     19 class ChangeList;
     20 class ChangeResource;
     21 }
     22 
     23 namespace sync_file_system {
     24 namespace drive_backend {
     25 
     26 class MetadataDatabase;
     27 class SyncEngineContext;
     28 
     29 class ListChangesTask : public SyncTask {
     30  public:
     31   explicit ListChangesTask(SyncEngineContext* sync_context);
     32   virtual ~ListChangesTask();
     33 
     34   virtual void RunPreflight(scoped_ptr<SyncTaskToken> token) OVERRIDE;
     35 
     36  private:
     37   void StartListing(scoped_ptr<SyncTaskToken> token);
     38   void DidListChanges(scoped_ptr<SyncTaskToken> token,
     39                       google_apis::GDataErrorCode error,
     40                       scoped_ptr<google_apis::ChangeList> change_list);
     41   void CheckInChangeList(int64 largest_change_id,
     42                          scoped_ptr<SyncTaskToken> token);
     43 
     44   bool IsContextReady();
     45   MetadataDatabase* metadata_database();
     46   drive::DriveServiceInterface* drive_service();
     47 
     48   SyncEngineContext* sync_context_;
     49   ScopedVector<google_apis::ChangeResource> change_list_;
     50 
     51   base::WeakPtrFactory<ListChangesTask> weak_ptr_factory_;
     52 
     53   DISALLOW_COPY_AND_ASSIGN(ListChangesTask);
     54 };
     55 
     56 }  // namespace drive_backend
     57 }  // namespace sync_file_system
     58 
     59 #endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_LIST_CHANGES_TASK_H_
     60