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

Unified Diff: chrome/browser/sync/engine/syncapi.h

Issue 593094: Add unique hashing to sync API. (Closed)
Patch Set: New unit test, review fixes. Created 10 years, 10 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/engine/syncapi.h
diff --git a/chrome/browser/sync/engine/syncapi.h b/chrome/browser/sync/engine/syncapi.h
index c53ad474facd8551c99595d5e633c6af7e4b76c4..5e3c183fc2ec7a8eb1ef1c3ac9307089428f7926 100755
--- a/chrome/browser/sync/engine/syncapi.h
+++ b/chrome/browser/sync/engine/syncapi.h
@@ -50,6 +50,8 @@
#include "chrome/browser/sync/syncable/model_type.h"
#include "googleurl/src/gurl.h"
ncarter (slow) 2010/02/18 01:05:40 no blank line.
chron 2010/02/18 01:09:32 Done.
+#include "testing/gtest/include/gtest/gtest_prod.h" // for FRIEND_TEST
+
namespace browser_sync {
class ModelSafeWorkerRegistrar;
}
@@ -115,7 +117,8 @@ class BaseNode {
// All subclasses of BaseNode must also provide a way to initialize themselves
// by doing a client tag lookup. Returns false on failure. A deleted node
// will return FALSE.
- virtual bool InitByClientTagLookup(const std::string& tag) = 0;
+ virtual bool InitByClientTagLookup(syncable::ModelType model_type,
+ const std::string& tag) = 0;
// Each object is identified by a 64-bit id (internally, the syncable
// metahandle). These ids are strictly local handles. They will persist
@@ -185,11 +188,18 @@ class BaseNode {
protected:
BaseNode();
virtual ~BaseNode();
+ // The server has a size limit on client tags, so we generate a fixed length
+ // hash locally. This also ensures that ModelTypes have unique namespaces.
+ static std::string GenerateSyncableHash(syncable::ModelType model_type,
+ const std::string& client_tag);
private:
// Node is meant for stack use only.
void* operator new(size_t size);
+ friend class SyncApiTest;
+ FRIEND_TEST(SyncApiTest, GenerateSyncableHash);
+
DISALLOW_COPY_AND_ASSIGN(BaseNode);
};
@@ -206,7 +216,8 @@ class WriteNode : public BaseNode {
// BaseNode implementation.
virtual bool InitByIdLookup(int64 id);
- virtual bool InitByClientTagLookup(const std::string& tag);
+ virtual bool InitByClientTagLookup(syncable::ModelType model_type,
+ const std::string& tag);
// Create a new node with the specified parent and predecessor. |model_type|
// dictates the type of the item, and controls which EntitySpecifics proto
@@ -311,7 +322,8 @@ class ReadNode : public BaseNode {
// BaseNode implementation.
virtual bool InitByIdLookup(int64 id);
- virtual bool InitByClientTagLookup(const std::string& tag);
+ virtual bool InitByClientTagLookup(syncable::ModelType model_type,
+ const std::string& tag);
// There is always a root node, so this can't fail. The root node is
// never mutable, so root lookup is only possible on a ReadNode.
« no previous file with comments | « no previous file | chrome/browser/sync/engine/syncapi.cc » ('j') | chrome/browser/sync/engine/syncapi_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698