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

Unified Diff: chrome/browser/sync_file_system/local/local_file_sync_context.h

Issue 24106002: Add SNAPSHOT sync mode to LocalFileSyncContext::PrepareForSync (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: change handling fix Created 7 years, 3 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/sync_file_system/local/local_file_sync_context.h
diff --git a/chrome/browser/sync_file_system/local/local_file_sync_context.h b/chrome/browser/sync_file_system/local/local_file_sync_context.h
index 778802ded22ca8e29c2f7af3e9b8338b388a803d..a17863b7c56baad96efbd415e1268f3bba61f596 100644
--- a/chrome/browser/sync_file_system/local/local_file_sync_context.h
+++ b/chrome/browser/sync_file_system/local/local_file_sync_context.h
@@ -36,8 +36,8 @@ class FileSystemURL;
namespace sync_file_system {
class FileChange;
-class LocalFileChangeTracker;
struct LocalFileSyncInfo;
nhiroki 2013/09/13 06:23:08 nit: can you sort this alphabetically?
kinuko 2013/09/13 08:21:46 Done.
+class LocalFileChangeTracker;
class LocalOriginChangeObserver;
class SyncableFileOperationRunner;
@@ -50,6 +50,11 @@ class LocalFileSyncContext
: public base::RefCountedThreadSafe<LocalFileSyncContext>,
public LocalFileSyncStatus::Observer {
public:
+ enum SyncMode {
+ SYNC_EXCLUSIVE,
+ SYNC_SNAPSHOT,
+ };
+
typedef base::Callback<void(
SyncStatusCode status, const LocalFileSyncInfo& sync_file_info)>
LocalFileSyncInfoCallback;
@@ -87,6 +92,16 @@ class LocalFileSyncContext
const fileapi::FileSystemURL& url,
const base::Closure& done_callback);
+ // Updates the on-disk dirty flag for |url| in the tracker DB.
+ // This will clear the dirty flag if |sync_finish_status| is SYNC_STATUS_OK
+ // or SYNC_STATUS_HAS_CONFLICT.
+ // |done_callback| is called when the changes are committed.
+ void CommitChangeStatusForURL(
+ fileapi::FileSystemContext* file_system_context,
+ const fileapi::FileSystemURL& url,
+ SyncStatusCode sync_finish_status,
+ 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.
@@ -95,11 +110,16 @@ class LocalFileSyncContext
// 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|.
+ // Otherwise returns the current change sets made on |url|.
+ //
+ // If |sync_mode| is SYNC_EXCLUSIVE this leaves the target file.
+ // If |sync_mode| is SYNC_SNAPSHOT this creates a snapshot (if the
+ // target file is not deleted) and unlocks the file before returning.
+ //
// This method must be called on UI thread.
void PrepareForSync(fileapi::FileSystemContext* file_system_context,
const fileapi::FileSystemURL& url,
+ SyncMode sync_mode,
const LocalFileSyncInfoCallback& callback);
// Registers |url| to wait until sync is enabled for |url|.
@@ -224,10 +244,12 @@ class LocalFileSyncContext
fileapi::FileSystemContext* file_system_context,
SyncStatusCode status,
const fileapi::FileSystemURL& url,
+ SyncMode sync_mode,
const LocalFileSyncInfoCallback& callback);
// Helper routine for ClearSyncFlagForURL.
- void EnableWritingOnIOThread(const fileapi::FileSystemURL& url);
+ void EnableWritingOnIOThread(const fileapi::FileSystemURL& url,
+ bool may_have_updates);
void DidRemoveExistingEntryForApplyRemoteChange(
fileapi::FileSystemContext* file_system_context,

Powered by Google App Engine
This is Rietveld 408576698