| Index: sync/syncable/syncable_proto_util.cc
 | 
| diff --git a/sync/syncable/syncable_proto_util.cc b/sync/syncable/syncable_proto_util.cc
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..4f35b1930e57ac1e03bc7d84efe0e063d19e7fe1
 | 
| --- /dev/null
 | 
| +++ b/sync/syncable/syncable_proto_util.cc
 | 
| @@ -0,0 +1,32 @@
 | 
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +#include "sync/syncable/syncable_proto_util.h"
 | 
| +
 | 
| +#include "sync/protocol/sync.pb.h"
 | 
| +
 | 
| +namespace syncer {
 | 
| +
 | 
| +syncable::Id SyncableIdFromProto(const std::string& proto_string) {
 | 
| +  return syncable::Id::CreateFromServerId(proto_string);
 | 
| +}
 | 
| +
 | 
| +std::string SyncableIdToProto(const syncable::Id& syncable_id) {
 | 
| +  return syncable_id.GetServerId();
 | 
| +}
 | 
| +
 | 
| +bool IsFolder(const sync_pb::SyncEntity& entity) {
 | 
| +  // TODO(sync): The checks for has_folder() and has_bookmarkdata() are likely
 | 
| +  // no longer necessary.  We should remove them if we can convince ourselves
 | 
| +  // that doing so won't break anything.
 | 
| +  return ((entity.has_folder() && entity.folder()) ||
 | 
| +          (entity.has_bookmarkdata() &&
 | 
| +           entity.bookmarkdata().bookmark_folder()));
 | 
| +}
 | 
| +
 | 
| +bool IsRoot(const sync_pb::SyncEntity& entity) {
 | 
| +  return SyncableIdFromProto(entity.id_string()).IsRoot();
 | 
| +}
 | 
| +
 | 
| +}  // namespace syncer
 | 
| 
 |