write_transaction_info.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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#include "sync/syncable/write_transaction_info.h" 6 7#include "base/string_number_conversions.h" 8 9namespace syncer { 10namespace syncable { 11 12WriteTransactionInfo::WriteTransactionInfo( 13 int64 id, 14 tracked_objects::Location location, 15 WriterTag writer, 16 ImmutableEntryKernelMutationMap mutations) 17 : id(id), 18 location_string(location.ToString()), 19 writer(writer), 20 mutations(mutations) {} 21 22WriteTransactionInfo::WriteTransactionInfo() 23 : id(-1), writer(INVALID) {} 24 25WriteTransactionInfo::~WriteTransactionInfo() {} 26 27base::DictionaryValue* WriteTransactionInfo::ToValue( 28 size_t max_mutations_size) const { 29 base::DictionaryValue* dict = new base::DictionaryValue(); 30 dict->SetString("id", base::Int64ToString(id)); 31 dict->SetString("location", location_string); 32 dict->SetString("writer", WriterTagToString(writer)); 33 base::Value* mutations_value = NULL; 34 const size_t mutations_size = mutations.Get().size(); 35 if (mutations_size <= max_mutations_size) { 36 mutations_value = EntryKernelMutationMapToValue(mutations.Get()); 37 } else { 38 mutations_value = 39 new base::StringValue( 40 base::Uint64ToString(static_cast<uint64>(mutations_size)) + 41 " mutations"); 42 } 43 dict->Set("mutations", mutations_value); 44 return dict; 45} 46 47} // namespace syncable 48} // namespace syncer 49