Home | History | Annotate | Download | only in public
      1 // Copyright 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 #ifndef SYNC_INTERNAL_PUBLIC_API_CHANGE_RECORD_H_
      6 #define SYNC_INTERNAL_PUBLIC_API_CHANGE_RECORD_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/memory/linked_ptr.h"
     12 #include "sync/base/sync_export.h"
     13 #include "sync/internal_api/public/util/immutable.h"
     14 #include "sync/protocol/password_specifics.pb.h"
     15 #include "sync/protocol/sync.pb.h"
     16 
     17 namespace base {
     18 class DictionaryValue;
     19 }  // namespace base
     20 
     21 namespace syncer {
     22 
     23 // TODO(zea): One day get passwords playing nicely with the rest of encryption
     24 // and get rid of this.
     25 class SYNC_EXPORT ExtraPasswordChangeRecordData {
     26  public:
     27   ExtraPasswordChangeRecordData();
     28   explicit ExtraPasswordChangeRecordData(
     29       const sync_pb::PasswordSpecificsData& data);
     30   virtual ~ExtraPasswordChangeRecordData();
     31 
     32   // Transfers ownership of the DictionaryValue to the caller.
     33   virtual base::DictionaryValue* ToValue() const;
     34 
     35   const sync_pb::PasswordSpecificsData& unencrypted() const;
     36  private:
     37   sync_pb::PasswordSpecificsData unencrypted_;
     38 };
     39 
     40 // ChangeRecord indicates a single item that changed as a result of a sync
     41 // operation.  This gives the sync id of the node that changed, and the type
     42 // of change.  To get the actual property values after an ADD or UPDATE, the
     43 // client should get the node with InitByIdLookup(), using the provided id.
     44 struct SYNC_EXPORT_PRIVATE ChangeRecord {
     45   enum Action {
     46     ACTION_ADD,
     47     ACTION_DELETE,
     48     ACTION_UPDATE,
     49   };
     50   ChangeRecord();
     51   ~ChangeRecord();
     52 
     53   // Transfers ownership of the DictionaryValue to the caller.
     54   base::DictionaryValue* ToValue() const;
     55 
     56   int64 id;
     57   Action action;
     58   sync_pb::EntitySpecifics specifics;
     59   linked_ptr<ExtraPasswordChangeRecordData> extra;
     60 };
     61 
     62 typedef std::vector<ChangeRecord> ChangeRecordList;
     63 
     64 typedef Immutable<ChangeRecordList> ImmutableChangeRecordList;
     65 
     66 }  // namespace syncer
     67 
     68 #endif  // SYNC_INTERNAL_API_PUBLIC_CHANGE_RECORD_H_
     69