|  | // 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/internal_api/public/change_record.h" | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "base/strings/string_number_conversions.h" | 
|  | #include "base/values.h" | 
|  | #include "sync/internal_api/public/base_node.h" | 
|  | #include "sync/internal_api/public/read_node.h" | 
|  | #include "sync/protocol/proto_value_conversions.h" | 
|  |  | 
|  | namespace syncer { | 
|  |  | 
|  | ChangeRecord::ChangeRecord() | 
|  | : id(kInvalidId), action(ACTION_ADD) {} | 
|  |  | 
|  | ChangeRecord::ChangeRecord(const ChangeRecord& other) = default; | 
|  |  | 
|  | ChangeRecord::~ChangeRecord() {} | 
|  |  | 
|  | std::unique_ptr<base::DictionaryValue> ChangeRecord::ToValue() const { | 
|  | std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); | 
|  | std::string action_str; | 
|  | switch (action) { | 
|  | case ACTION_ADD: | 
|  | action_str = "Add"; | 
|  | break; | 
|  | case ACTION_DELETE: | 
|  | action_str = "Delete"; | 
|  | break; | 
|  | case ACTION_UPDATE: | 
|  | action_str = "Update"; | 
|  | break; | 
|  | default: | 
|  | NOTREACHED(); | 
|  | action_str = "Unknown"; | 
|  | break; | 
|  | } | 
|  | value->SetString("action", action_str); | 
|  | value->SetString("id", base::Int64ToString(id)); | 
|  | if (action == ACTION_DELETE) { | 
|  | if (extra.get()) { | 
|  | value->Set("extra", extra->ToValue()); | 
|  | } | 
|  | value->Set("specifics", EntitySpecificsToValue(specifics)); | 
|  | } | 
|  | return value; | 
|  | } | 
|  |  | 
|  | ExtraPasswordChangeRecordData::ExtraPasswordChangeRecordData() {} | 
|  |  | 
|  | ExtraPasswordChangeRecordData::ExtraPasswordChangeRecordData( | 
|  | const sync_pb::PasswordSpecificsData& data) | 
|  | : unencrypted_(data) { | 
|  | } | 
|  |  | 
|  | ExtraPasswordChangeRecordData::~ExtraPasswordChangeRecordData() {} | 
|  |  | 
|  | std::unique_ptr<base::DictionaryValue> ExtraPasswordChangeRecordData::ToValue() | 
|  | const { | 
|  | return PasswordSpecificsDataToValue(unencrypted_); | 
|  | } | 
|  |  | 
|  | const sync_pb::PasswordSpecificsData& | 
|  | ExtraPasswordChangeRecordData::unencrypted() const { | 
|  | return unencrypted_; | 
|  | } | 
|  |  | 
|  | }  // namespace syncer |