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.
5 #include "sync/test/fake_server/bookmark_entity_builder.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/time/time.h"
12 #include "sync/internal_api/public/base/model_type.h"
13 #include "sync/internal_api/public/base/unique_position.h"
14 #include "sync/protocol/sync.pb.h"
15 #include "sync/syncable/syncable_util.h"
16 #include "sync/test/fake_server/bookmark_entity.h"
17 #include "sync/test/fake_server/fake_server_entity.h"
18 #include "sync/util/time.h"
23 using syncer::syncable::GenerateSyncableBookmarkHash
;
25 // A version must be passed when creating a FakeServerEntity, but this value
26 // is overrideen immediately when saving the entity in FakeServer.
27 const int64 kUnusedVersion
= 0L;
29 // Default time (creation and last modified) used when creating entities.
30 const int64 kDefaultTime
= 1234L;
32 namespace fake_server
{
34 BookmarkEntityBuilder::BookmarkEntityBuilder(
37 const string
& originator_cache_guid
,
38 const string
& originator_client_item_id
)
39 : EntityBuilder(syncer::BOOKMARKS
, title
),
41 originator_cache_guid_(originator_cache_guid
),
42 originator_client_item_id_(originator_client_item_id
) {
45 BookmarkEntityBuilder::~BookmarkEntityBuilder() {
48 scoped_ptr
<FakeServerEntity
> BookmarkEntityBuilder::Build() {
49 if (!url_
.is_valid()) {
50 return make_scoped_ptr
<FakeServerEntity
>(NULL
);
53 sync_pb::EntitySpecifics entity_specifics
;
54 sync_pb::BookmarkSpecifics
* bookmark_specifics
=
55 entity_specifics
.mutable_bookmark();
56 bookmark_specifics
->set_title(name_
);
57 bookmark_specifics
->set_url(url_
.spec());
59 sync_pb::UniquePosition unique_position
;
60 // TODO(pvalenzuela): Allow caller customization of the position integer.
61 string suffix
= GenerateSyncableBookmarkHash(originator_cache_guid_
,
62 originator_client_item_id_
);
63 syncer::UniquePosition::FromInt64(0, suffix
).ToProto(&unique_position
);
65 return make_scoped_ptr
<FakeServerEntity
>(
66 new BookmarkEntity(id_
,
69 originator_cache_guid_
,
70 originator_client_item_id_
,
73 // TODO(pvalenzuela): Support bookmark folders.
75 // TODO(pvalenzuela): Support caller specification of
76 // the parent bookmark folder.
77 FakeServerEntity::CreateId(syncer::BOOKMARKS
,
83 } // namespace fake_server