// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_INITIALIZER_H_ #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_INITIALIZER_H_ #include <stdint.h> #include <memory> #include <string> #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "chrome/browser/sync_file_system/drive_backend/sync_task.h" #include "chrome/browser/sync_file_system/sync_callbacks.h" #include "google_apis/common/api_error_codes.h" #include "google_apis/drive/drive_common_callbacks.h" namespace google_apis { class AboutResource; class FileList; class FileResource; } // namespace google_apis namespace leveldb { class Env; } namespace sync_file_system { namespace drive_backend { class MetadataDatabase; class SyncEngineContext; // This class performs initializion sequence of SyncEngine. // // After initialize sequence completed, the Database must have // - Largest change ID, // - Sync-root folder and its tracker, // - All children of sync-root folder that have inactive and non-dirty // trackers. // // The initialization sequence is: // - Open database and load its contents, // - If the database is already populated, complete the sequence. // - Get AboutResource to get the largest change ID and the Drive root folder // ID. // - Find the remote sync-root folder, whose title is // "Chrome Syncable FileSystem" and has no parent. // Note that if the initialization is interrupted by the browser restart or // an error, the sequence leaves the folder in the Drive root folder. So, if // we find the folder in the Drive root folder, handle it as the sync-root // folder. // - Create the remote sync-root folder if we don't have. // - Detach the remote sync-root folder from its parent if it has. // - Fetch the folder contents of the remote sync-root folder. // The contents are likely registered as app-root folders, but handle them // as regular inactive folders until they are registered explicitly. // - Populate database with the largest change ID, the sync-root folder and // its contents. // class SyncEngineInitializer : public SyncTask { … }; } // namespace drive_backend } // namespace sync_file_system #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_INITIALIZER_H_