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

Unified Diff: webkit/fileapi/syncable/local_file_sync_context.h

Issue 15806012: Move webkit/fileapi/syncable/* code to webkit/browser/fileapi (final!) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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: webkit/fileapi/syncable/local_file_sync_context.h
diff --git a/webkit/fileapi/syncable/local_file_sync_context.h b/webkit/fileapi/syncable/local_file_sync_context.h
deleted file mode 100644
index 57c5b9ba37a0c81ef50c36c94f6a6cd6e2abb046..0000000000000000000000000000000000000000
--- a/webkit/fileapi/syncable/local_file_sync_context.h
+++ /dev/null
@@ -1,306 +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 WEBKIT_FILEAPI_SYNCABLE_LOCAL_FILE_SYNC_CONTEXT_H_
-#define WEBKIT_FILEAPI_SYNCABLE_LOCAL_FILE_SYNC_CONTEXT_H_
-
-#include <deque>
-#include <map>
-#include <set>
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/callback.h"
-#include "base/files/file_path.h"
-#include "base/logging.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "base/observer_list.h"
-#include "base/timer.h"
-#include "googleurl/src/gurl.h"
-#include "webkit/fileapi/syncable/local_file_sync_status.h"
-#include "webkit/fileapi/syncable/sync_callbacks.h"
-#include "webkit/fileapi/syncable/sync_status_code.h"
-#include "webkit/storage/webkit_storage_export.h"
-
-namespace base {
-class SingleThreadTaskRunner;
-}
-
-namespace fileapi {
-class FileSystemContext;
-class FileSystemURL;
-}
-
-namespace sync_file_system {
-
-class FileChange;
-class LocalFileChangeTracker;
-struct LocalFileSyncInfo;
-class LocalOriginChangeObserver;
-class SyncableFileOperationRunner;
-
-// This class works as a bridge between LocalFileSyncService (which is a
-// per-profile object) and FileSystemContext's (which is a per-storage-partition
-// object and may exist multiple in a profile).
-// An instance of this class is shared by FileSystemContexts and outlives
-// LocalFileSyncService.
-class WEBKIT_STORAGE_EXPORT LocalFileSyncContext
- : public base::RefCountedThreadSafe<LocalFileSyncContext>,
- public LocalFileSyncStatus::Observer {
- public:
- typedef base::Callback<void(
- SyncStatusCode status, const LocalFileSyncInfo& sync_file_info)>
- LocalFileSyncInfoCallback;
-
- typedef base::Callback<void(SyncStatusCode status,
- bool has_pending_changes)>
- HasPendingLocalChangeCallback;
-
- LocalFileSyncContext(base::SingleThreadTaskRunner* ui_task_runner,
- base::SingleThreadTaskRunner* io_task_runner);
-
- // Initializes |file_system_context| for syncable file operations for
- // |service_name| and registers the it into the internal map.
- // Calling this multiple times for the same file_system_context is valid.
- // This method must be called on UI thread.
- void MaybeInitializeFileSystemContext(
- const GURL& source_url,
- const std::string& service_name,
- fileapi::FileSystemContext* file_system_context,
- const SyncStatusCallback& callback);
-
- // Called when the corresponding LocalFileSyncService exits.
- // This method must be called on UI thread.
- void ShutdownOnUIThread();
-
- // Picks a file for next local sync and returns it after disabling writes
- // for the file.
- // This method must be called on UI thread.
- void GetFileForLocalSync(fileapi::FileSystemContext* file_system_context,
- const LocalFileSyncInfoCallback& callback);
-
- // Clears all pending local changes for |url|. |done_callback| is called
- // when the changes are cleared.
- // This method must be called on UI thread.
- void ClearChangesForURL(fileapi::FileSystemContext* file_system_context,
- const fileapi::FileSystemURL& url,
- const base::Closure& done_callback);
-
- // A local or remote sync has been finished (either successfully or
- // with an error). Clears the internal sync flag and enable writing for |url|.
- // This method must be called on UI thread.
- void ClearSyncFlagForURL(const fileapi::FileSystemURL& url);
-
- // Prepares for sync |url| by disabling writes on |url|.
- // If the target |url| is being written and cannot start sync it
- // returns SYNC_STATUS_WRITING status code via |callback|.
- // Otherwise it disables writes, marks the |url| syncing and returns
- // the current change set made on |url|.
- // This method must be called on UI thread.
- void PrepareForSync(fileapi::FileSystemContext* file_system_context,
- const fileapi::FileSystemURL& url,
- const LocalFileSyncInfoCallback& callback);
-
- // Registers |url| to wait until sync is enabled for |url|.
- // |on_syncable_callback| is to be called when |url| becomes syncable
- // (i.e. when we have no pending writes and the file is successfully locked
- // for sync).
- //
- // Calling this method again while this already has another URL waiting
- // for sync will overwrite the previously registered URL.
- //
- // This method must be called on UI thread.
- void RegisterURLForWaitingSync(const fileapi::FileSystemURL& url,
- const base::Closure& on_syncable_callback);
-
- // Applies a remote change.
- // This method must be called on UI thread.
- void ApplyRemoteChange(
- fileapi::FileSystemContext* file_system_context,
- const FileChange& change,
- const base::FilePath& local_path,
- const fileapi::FileSystemURL& url,
- const SyncStatusCallback& callback);
-
- // Records a fake local change in the local change tracker.
- void RecordFakeLocalChange(
- fileapi::FileSystemContext* file_system_context,
- const fileapi::FileSystemURL& url,
- const FileChange& change,
- const SyncStatusCallback& callback);
-
- // This must be called on UI thread.
- void GetFileMetadata(
- fileapi::FileSystemContext* file_system_context,
- const fileapi::FileSystemURL& url,
- const SyncFileMetadataCallback& callback);
-
- // Returns true via |callback| if the given file |url| has local pending
- // changes.
- void HasPendingLocalChanges(
- fileapi::FileSystemContext* file_system_context,
- const fileapi::FileSystemURL& url,
- const HasPendingLocalChangeCallback& callback);
-
- // They must be called on UI thread.
- void AddOriginChangeObserver(LocalOriginChangeObserver* observer);
- void RemoveOriginChangeObserver(LocalOriginChangeObserver* observer);
-
- // OperationRunner is accessible only on IO thread.
- base::WeakPtr<SyncableFileOperationRunner> operation_runner() const;
-
- // SyncContext is accessible only on IO thread.
- LocalFileSyncStatus* sync_status() const;
-
- // For testing; override the duration to notify changes from the
- // default value.
- void set_mock_notify_changes_duration_in_sec(int duration) {
- mock_notify_changes_duration_in_sec_ = duration;
- }
-
- protected:
- // LocalFileSyncStatus::Observer overrides. They are called on IO thread.
- virtual void OnSyncEnabled(const fileapi::FileSystemURL& url) OVERRIDE;
- virtual void OnWriteEnabled(const fileapi::FileSystemURL& url) OVERRIDE;
-
- private:
- typedef base::Callback<void(base::PlatformFileError result)> StatusCallback;
- typedef std::deque<SyncStatusCallback> StatusCallbackQueue;
- friend class base::RefCountedThreadSafe<LocalFileSyncContext>;
- friend class CannedSyncableFileSystem;
-
- virtual ~LocalFileSyncContext();
-
- void ShutdownOnIOThread();
-
- // Starts a timer to eventually call NotifyAvailableChangesOnIOThread.
- // The caller is expected to update origins_with_pending_changes_ before
- // calling this.
- void ScheduleNotifyChangesUpdatedOnIOThread();
-
- // Called by the internal timer on IO thread to notify changes to UI thread.
- void NotifyAvailableChangesOnIOThread();
-
- // Called from NotifyAvailableChangesOnIOThread.
- void NotifyAvailableChanges(const std::set<GURL>& origins);
-
- // Helper routines for MaybeInitializeFileSystemContext.
- void InitializeFileSystemContextOnIOThread(
- const GURL& source_url,
- const std::string& service_name,
- fileapi::FileSystemContext* file_system_context);
- SyncStatusCode InitializeChangeTrackerOnFileThread(
- scoped_ptr<LocalFileChangeTracker>* tracker_ptr,
- fileapi::FileSystemContext* file_system_context,
- std::set<GURL>* origins_with_changes);
- void DidInitializeChangeTrackerOnIOThread(
- scoped_ptr<LocalFileChangeTracker>* tracker_ptr,
- const GURL& source_url,
- const std::string& service_name,
- fileapi::FileSystemContext* file_system_context,
- std::set<GURL>* origins_with_changes,
- SyncStatusCode status);
- void DidInitialize(
- const GURL& source_url,
- fileapi::FileSystemContext* file_system_context,
- SyncStatusCode status);
-
- // Helper routines for GetFileForLocalSync.
- void GetNextURLsForSyncOnFileThread(
- fileapi::FileSystemContext* file_system_context,
- std::deque<fileapi::FileSystemURL>* urls);
- void TryPrepareForLocalSync(
- fileapi::FileSystemContext* file_system_context,
- std::deque<fileapi::FileSystemURL>* urls,
- const LocalFileSyncInfoCallback& callback);
- void DidTryPrepareForLocalSync(
- fileapi::FileSystemContext* file_system_context,
- std::deque<fileapi::FileSystemURL>* remaining_urls,
- const LocalFileSyncInfoCallback& callback,
- SyncStatusCode status,
- const LocalFileSyncInfo& sync_file_info);
-
- // Callback routine for PrepareForSync and GetFileForLocalSync.
- void DidGetWritingStatusForSync(
- fileapi::FileSystemContext* file_system_context,
- SyncStatusCode status,
- const fileapi::FileSystemURL& url,
- const LocalFileSyncInfoCallback& callback);
-
- // Helper routine for ClearSyncFlagForURL.
- void EnableWritingOnIOThread(const fileapi::FileSystemURL& url);
-
- void DidRemoveExistingEntryForApplyRemoteChange(
- fileapi::FileSystemContext* file_system_context,
- const FileChange& change,
- const base::FilePath& local_path,
- const fileapi::FileSystemURL& url,
- const SyncStatusCallback& callback,
- base::PlatformFileError error);
-
- // Callback routine for ApplyRemoteChange.
- void DidApplyRemoteChange(
- const fileapi::FileSystemURL& url,
- const SyncStatusCallback& callback_on_ui,
- base::PlatformFileError file_error);
-
- void DidGetFileMetadata(
- const SyncFileMetadataCallback& callback,
- base::PlatformFileError file_error,
- const base::PlatformFileInfo& file_info,
- const base::FilePath& platform_path);
-
- base::TimeDelta NotifyChangesDuration();
-
- void DidCreateDirectoryForCopyIn(
- fileapi::FileSystemContext* file_system_context,
- const base::FilePath& local_file_path,
- const fileapi::FileSystemURL& dest_url,
- const StatusCallback& callback,
- base::PlatformFileError error);
-
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
- scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
-
- // Indicates if the sync service is shutdown on UI thread.
- bool shutdown_on_ui_;
-
- // OperationRunner. This must be accessed only on IO thread.
- scoped_ptr<SyncableFileOperationRunner> operation_runner_;
-
- // Keeps track of writing/syncing status.
- // This must be accessed only on IO thread.
- scoped_ptr<LocalFileSyncStatus> sync_status_;
-
- // Pointers to file system contexts that have been initialized for
- // synchronization (i.e. that own this instance).
- // This must be accessed only on UI thread.
- std::set<fileapi::FileSystemContext*> file_system_contexts_;
-
- // Accessed only on UI thread.
- std::map<fileapi::FileSystemContext*, StatusCallbackQueue>
- pending_initialize_callbacks_;
-
- // A URL and associated callback waiting for sync is enabled.
- // Accessed only on IO thread.
- fileapi::FileSystemURL url_waiting_sync_on_io_;
- base::Closure url_syncable_callback_;
-
- // Used only on IO thread for available changes notifications.
- base::Time last_notified_changes_;
- scoped_ptr<base::OneShotTimer<LocalFileSyncContext> > timer_on_io_;
- std::set<GURL> origins_with_pending_changes_;
-
- ObserverList<LocalOriginChangeObserver> origin_change_observers_;
-
- int mock_notify_changes_duration_in_sec_;
-
- DISALLOW_COPY_AND_ASSIGN(LocalFileSyncContext);
-};
-
-} // namespace sync_file_system
-
-#endif // WEBKIT_FILEAPI_SYNCABLE_LOCAL_FILE_SYNC_CONTEXT_H_
« no previous file with comments | « webkit/fileapi/syncable/local_file_change_tracker_unittest.cc ('k') | webkit/fileapi/syncable/local_file_sync_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698