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/internal_api/public/change_record.h"
6
7#include "base/strings/string_number_conversions.h"
8#include "base/values.h"
9#include "sync/internal_api/public/base_node.h"
10#include "sync/internal_api/public/read_node.h"
11#include "sync/protocol/proto_value_conversions.h"
12
13namespace syncer {
14
15ChangeRecord::ChangeRecord()
16    : id(kInvalidId), action(ACTION_ADD) {}
17
18ChangeRecord::~ChangeRecord() {}
19
20base::DictionaryValue* ChangeRecord::ToValue() const {
21  base::DictionaryValue* value = new base::DictionaryValue();
22  std::string action_str;
23  switch (action) {
24    case ACTION_ADD:
25      action_str = "Add";
26      break;
27    case ACTION_DELETE:
28      action_str = "Delete";
29      break;
30    case ACTION_UPDATE:
31      action_str = "Update";
32      break;
33    default:
34      NOTREACHED();
35      action_str = "Unknown";
36      break;
37  }
38  value->SetString("action", action_str);
39  value->SetString("id", base::Int64ToString(id));
40  if (action == ACTION_DELETE) {
41    if (extra.get()) {
42      value->Set("extra", extra->ToValue());
43    }
44    value->Set("specifics", EntitySpecificsToValue(specifics));
45  }
46  return value;
47}
48
49ExtraPasswordChangeRecordData::ExtraPasswordChangeRecordData() {}
50
51ExtraPasswordChangeRecordData::ExtraPasswordChangeRecordData(
52    const sync_pb::PasswordSpecificsData& data)
53    : unencrypted_(data) {
54}
55
56ExtraPasswordChangeRecordData::~ExtraPasswordChangeRecordData() {}
57
58base::DictionaryValue* ExtraPasswordChangeRecordData::ToValue() const {
59  return PasswordSpecificsDataToValue(unencrypted_);
60}
61
62const sync_pb::PasswordSpecificsData&
63    ExtraPasswordChangeRecordData::unencrypted() const {
64  return unencrypted_;
65}
66
67}  // namespace syncer
68