Index: chrome/browser/sync/api/sync_change.h |
diff --git a/chrome/browser/sync/api/sync_change.h b/chrome/browser/sync/api/sync_change.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0c29cc7ed6f2174090a553755209c043ff725df2 |
--- /dev/null |
+++ b/chrome/browser/sync/api/sync_change.h |
@@ -0,0 +1,56 @@ |
+// Copyright (c) 2011 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_SYNC_API_SYNC_CHANGE_H_ |
+#define CHROME_BROWSER_SYNC_API_SYNC_CHANGE_H_ |
+#pragma once |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include "chrome/browser/sync/api/sync_data.h" |
+ |
+// A SyncChange object reflects a change to a piece of synced data. The change |
+// can be either a delete, add, or an update. All data relevant to the change |
+// is encapsulated within the SyncChange, which, once created, is immutable. |
+// Note: it is safe and cheap to pass these by value or make copies, as they do |
+// not create deep copies of their internal data. |
+class SyncChange { |
+ public: |
+ enum SyncChangeType { |
+ ACTION_INVALID, |
+ ACTION_ADD, |
+ ACTION_UPDATE, |
+ ACTION_DELETE |
+ }; |
+ |
+ // Default constructor creates an invalid change. |
+ SyncChange(); |
+ // Create a new change with the specified sync data. |
+ SyncChange(SyncChangeType change_type, const SyncData& sync_data); |
+ ~SyncChange(); |
+ |
+ // Copy constructor and assignment operator welcome. |
+ |
+ // Whether this change is valid. This must be true before attempting to access |
+ // the data. |
+ // Deletes: Requires valid tag when going to the syncer. Requires valid |
+ // specifics when coming from the syncer. |
+ // Adds, Updates: Require valid tag and specifics when going to the syncer. |
+ // Require only valid specifics when coming from the syncer. |
+ bool IsValid() const; |
+ |
+ // Getters. |
+ SyncChangeType change_type() const; |
+ SyncData sync_data() const; |
+ |
+ private: |
+ SyncChangeType change_type_; |
+ |
+ // An immutable container for the data of this SyncChange. Whenever |
+ // SyncChanges are copied, they copy references to this data. |
+ SyncData sync_data_; |
+}; |
+ |
+#endif // CHROME_BROWSER_SYNC_API_SYNC_CHANGE_H_ |