test_entry_factory.h revision 116680a4aac90f2aa7413d9095a592090648e557
1// Copyright (c) 2012 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_TEST_ENTRY_FACTORY_H_ 6#define SYNC_TEST_TEST_ENTRY_FACTORY_H_ 7 8#include <string> 9 10#include "base/basictypes.h" 11#include "sync/internal_api/public/base/model_type.h" 12#include "sync/protocol/sync.pb.h" 13 14namespace syncer { 15 16namespace syncable { 17class Directory; 18class Id; 19} 20 21class TestEntryFactory { 22 public: 23 explicit TestEntryFactory(syncable::Directory* dir); 24 ~TestEntryFactory(); 25 26 // Create a new unapplied folder node with a parent. 27 int64 CreateUnappliedNewItemWithParent( 28 const std::string& item_id, 29 const sync_pb::EntitySpecifics& specifics, 30 const std::string& parent_id); 31 32 int64 CreateUnappliedNewBookmarkItemWithParent( 33 const std::string& item_id, 34 const sync_pb::EntitySpecifics& specifics, 35 const std::string& parent_id); 36 37 // Create a new unapplied update without a parent. 38 int64 CreateUnappliedNewItem(const std::string& item_id, 39 const sync_pb::EntitySpecifics& specifics, 40 bool is_unique); 41 42 // Create an unsynced unique_client_tag item in the database. If item_id is a 43 // local ID, it will be treated as a create-new. Otherwise, if it's a server 44 // ID, we'll fake the server data so that it looks like it exists on the 45 // server. Returns the methandle of the created item in |metahandle_out| if 46 // not NULL. 47 void CreateUnsyncedItem(const syncable::Id& item_id, 48 const syncable::Id& parent_id, 49 const std::string& name, 50 bool is_folder, 51 ModelType model_type, 52 int64* metahandle_out); 53 54 // Creates a bookmark that is both unsynced an an unapplied update. Returns 55 // the metahandle of the created item. 56 int64 CreateUnappliedAndUnsyncedBookmarkItem(const std::string& name); 57 58 // Creates a unique_client_tag item that has neither IS_UNSYNED or 59 // IS_UNAPPLIED_UPDATE. The item is known to both the server and client. 60 // Returns the metahandle of the created item. 61 int64 CreateSyncedItem(const std::string& name, 62 ModelType model_type, bool is_folder); 63 64 // Creates a root node that IS_UNAPPLIED. Similar to what one would find in 65 // the database between the ProcessUpdates of an initial datatype configure 66 // cycle and the ApplyUpdates step of the same sync cycle. 67 int64 CreateUnappliedRootNode(ModelType model_type); 68 69 // Looks up the item referenced by |meta_handle|. If successful, overwrites 70 // the server specifics with |specifics|, sets 71 // IS_UNAPPLIED_UPDATES/IS_UNSYNCED appropriately, and returns true. 72 // Else, return false. 73 bool SetServerSpecificsForItem(int64 meta_handle, 74 const sync_pb::EntitySpecifics specifics); 75 76 // Looks up the item referenced by |meta_handle|. If successful, overwrites 77 // the local specifics with |specifics|, sets 78 // IS_UNAPPLIED_UPDATES/IS_UNSYNCED appropriately, and returns true. 79 // Else, return false. 80 bool SetLocalSpecificsForItem(int64 meta_handle, 81 const sync_pb::EntitySpecifics specifics); 82 83 // Looks up the item referenced by |meta_handle| and returns its server 84 // specifics. 85 const sync_pb::EntitySpecifics& GetServerSpecificsForItem( 86 int64 meta_handle) const; 87 88 // Looks up the item referenced by |meta_handle| and returns its specifics. 89 const sync_pb::EntitySpecifics& GetLocalSpecificsForItem( 90 int64 meta_handle) const; 91 92 // Looks up the item referenced by |meta_handle|. If successful, overwrites 93 // the server attachment metadata with |metadata|, sets 94 // IS_UNAPPLIED_UPDATES/IS_UNSYNCED appropriately, and returns true. 95 // Else, return false. 96 bool SetServerAttachmentMetadataForItem( 97 int64 meta_handle, 98 const sync_pb::AttachmentMetadata metadata); 99 100 // Looks up the item referenced by |meta_handle|. If successful, overwrites 101 // the local attachment metadata with |metadata|, sets 102 // IS_UNAPPLIED_UPDATES/IS_UNSYNCED appropriately, and returns true. 103 // Else, return false. 104 bool SetLocalAttachmentMetadataForItem( 105 int64 meta_handle, 106 const sync_pb::AttachmentMetadata metadata); 107 108 // Looks up the item referenced by |meta_handle| and returns its server 109 // attachment metadata. 110 const sync_pb::AttachmentMetadata& GetServerAttachmentMetadataForItem( 111 int64 meta_handle) const; 112 113 // Looks up the item referenced by |meta_handle| and returns its attachment 114 // metadata. 115 const sync_pb::AttachmentMetadata& GetLocalAttachmentMetadataForItem( 116 int64 meta_handle) const; 117 118 // Getters for IS_UNSYNCED and IS_UNAPPLIED_UPDATE bit fields. 119 bool GetIsUnsyncedForItem(int64 meta_handle) const; 120 bool GetIsUnappliedForItem(int64 meta_handle) const; 121 122 int64 GetNextRevision(); 123 124 private: 125 syncable::Directory* directory_; 126 int64 next_revision_; 127 128 DISALLOW_COPY_AND_ASSIGN(TestEntryFactory); 129}; 130 131} // namespace syncer 132 133#endif // SYNC_TEST_TEST_ENTRY_FACTORY_H_ 134