Home | History | Annotate | Download | only in test
      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 
     14 namespace syncer {
     15 
     16 namespace syncable {
     17 class Directory;
     18 class Id;
     19 }
     20 
     21 class 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