1// Copyright 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_SYNCABLE_SYNCABLE_UTIL_H_
6#define SYNC_SYNCABLE_SYNCABLE_UTIL_H_
7
8#include <string>
9#include <vector>
10
11#include "base/basictypes.h"
12#include "sync/base/sync_export.h"
13#include "sync/internal_api/public/base/model_type.h"
14
15namespace tracked_objects {
16class Location;
17}
18
19namespace syncer {
20namespace syncable {
21
22class BaseTransaction;
23class BaseWriteTransaction;
24class ModelNeutralMutableEntry;
25class Id;
26
27SYNC_EXPORT_PRIVATE void ChangeEntryIDAndUpdateChildren(
28    BaseWriteTransaction* trans,
29    ModelNeutralMutableEntry* entry,
30    const Id& new_id);
31
32SYNC_EXPORT_PRIVATE bool IsLegalNewParent(BaseTransaction* trans,
33                                          const Id& id,
34                                          const Id& parentid);
35
36bool SyncAssert(bool condition,
37                const tracked_objects::Location& location,
38                const char* msg,
39                BaseTransaction* trans);
40
41SYNC_EXPORT_PRIVATE int GetUnsyncedEntries(BaseTransaction* trans,
42                                           std::vector<int64> *handles);
43
44// Generates a fixed-length tag for the given string under the given model_type.
45SYNC_EXPORT_PRIVATE std::string GenerateSyncableHash(
46    ModelType model_type, const std::string& client_tag);
47
48// A helper for generating the bookmark type's tag.  This is required in more
49// than one place, so we define the algorithm here to make sure the
50// implementation is consistent.
51SYNC_EXPORT_PRIVATE std::string GenerateSyncableBookmarkHash(
52    const std::string& originator_cache_guid,
53    const std::string& originator_client_item_id);
54
55}  // namespace syncable
56}  // namespace syncer
57
58#endif  // SYNC_SYNCABLE_SYNCABLE_UTIL_H_
59