12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef SYNC_SYNCABLE_SYNCABLE_UTIL_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SYNC_SYNCABLE_SYNCABLE_UTIL_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "sync/base/sync_export.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "sync/internal_api/public/base/model_type.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace tracked_objects { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Location; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncer { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncable { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BaseTransaction; 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class BaseWriteTransaction; 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class ModelNeutralMutableEntry; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Id; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)SYNC_EXPORT_PRIVATE void ChangeEntryIDAndUpdateChildren( 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) BaseWriteTransaction* trans, 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ModelNeutralMutableEntry* entry, 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const Id& new_id); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SYNC_EXPORT_PRIVATE bool IsLegalNewParent(BaseTransaction* trans, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const Id& id, 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const Id& parentid); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SyncAssert(bool condition, 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const tracked_objects::Location& location, 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* msg, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BaseTransaction* trans); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SYNC_EXPORT_PRIVATE int GetUnsyncedEntries(BaseTransaction* trans, 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<int64> *handles); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Generates a fixed-length tag for the given string under the given model_type. 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SYNC_EXPORT_PRIVATE std::string GenerateSyncableHash( 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ModelType model_type, const std::string& client_tag); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// A helper for generating the bookmark type's tag. This is required in more 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// than one place, so we define the algorithm here to make sure the 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// implementation is consistent. 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)SYNC_EXPORT_PRIVATE std::string GenerateSyncableBookmarkHash( 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& originator_cache_guid, 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& originator_client_item_id); 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncable 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncer 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // SYNC_SYNCABLE_SYNCABLE_UTIL_H_ 59