• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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