1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef SYNC_TEST_FAKE_SERVER_FAKE_SERVER_ENTITY_H_ 6 #define SYNC_TEST_FAKE_SERVER_FAKE_SERVER_ENTITY_H_ 7 8 #include <map> 9 #include <string> 10 11 #include "base/basictypes.h" 12 #include "sync/internal_api/public/base/model_type.h" 13 #include "sync/protocol/sync.pb.h" 14 15 namespace fake_server { 16 17 // The representation of a Sync entity for the fake server. 18 class FakeServerEntity { 19 public: 20 // Creates an ID of the form <type><separator><inner-id> where 21 // <type> is the EntitySpecifics field number for |model_type|, <separator> 22 // is kIdSeparator, and <inner-id> is |inner_id|. 23 // 24 // If |inner_id| is globally unique, then the returned ID will also be 25 // globally unique. 26 static std::string CreateId(const syncer::ModelType& model_type, 27 const std::string& inner_id); 28 29 // Returns the ID string of the top level node for the specified type. 30 static std::string GetTopLevelId(const syncer::ModelType& model_type); 31 32 virtual ~FakeServerEntity(); 33 const std::string& GetId() const; 34 syncer::ModelType GetModelType() const; 35 int64 GetVersion() const; 36 void SetVersion(int64 version); 37 const std::string& GetName() const; 38 39 // Common data items needed by server 40 virtual std::string GetParentId() const = 0; 41 virtual void SerializeAsProto(sync_pb::SyncEntity* proto) = 0; 42 virtual bool IsDeleted() const = 0; 43 virtual bool IsFolder() const = 0; 44 45 protected: 46 // Extracts the ModelType from |id|. If |id| is malformed or does not contain 47 // a valid ModelType, UNSPECIFIED is returned. 48 static syncer::ModelType GetModelTypeFromId(const std::string& id); 49 50 FakeServerEntity(const std::string& id, 51 const syncer::ModelType& model_type, 52 int64 version, 53 const std::string& name); 54 55 void SerializeBaseProtoFields(sync_pb::SyncEntity* sync_entity); 56 57 // The ModelType that categorizes this entity. 58 syncer::ModelType model_type_; 59 60 private: 61 // The entity's ID. 62 std::string id_; 63 64 // The version of this entity. 65 int64 version_; 66 67 // The name of the entity. 68 std::string name_; 69 }; 70 71 } // namespace fake_server 72 73 #endif // SYNC_TEST_FAKE_SERVER_FAKE_SERVER_ENTITY_H_ 74