OLD | NEW |
| (Empty) |
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 #ifndef SYNC_TEST_FAKE_SYNC_ENCRYPTION_HANDLER_H_ | |
6 #define SYNC_TEST_FAKE_SYNC_ENCRYPTION_HANDLER_H_ | |
7 | |
8 #include <string> | |
9 | |
10 #include "base/compiler_specific.h" | |
11 #include "base/observer_list.h" | |
12 #include "sync/internal_api/public/sync_encryption_handler.h" | |
13 #include "sync/syncable/nigori_handler.h" | |
14 #include "sync/test/fake_encryptor.h" | |
15 #include "sync/util/cryptographer.h" | |
16 | |
17 namespace syncer { | |
18 | |
19 // A fake sync encryption handler capable of keeping track of the encryption | |
20 // state without opening any transactions or interacting with the nigori node. | |
21 // Note that this only performs basic interactions with the cryptographer | |
22 // (setting pending keys, installing keys). | |
23 // Note: NOT thread safe. If threads attempt to check encryption state | |
24 // while another thread is modifying it, races can occur. | |
25 class FakeSyncEncryptionHandler : public SyncEncryptionHandler, | |
26 public syncable::NigoriHandler { | |
27 public: | |
28 FakeSyncEncryptionHandler(); | |
29 ~FakeSyncEncryptionHandler() override; | |
30 | |
31 // SyncEncryptionHandler implementation. | |
32 void AddObserver(Observer* observer) override; | |
33 void RemoveObserver(Observer* observer) override; | |
34 void Init() override; | |
35 void SetEncryptionPassphrase(const std::string& passphrase, | |
36 bool is_explicit) override; | |
37 void SetDecryptionPassphrase(const std::string& passphrase) override; | |
38 void EnableEncryptEverything() override; | |
39 bool IsEncryptEverythingEnabled() const override; | |
40 PassphraseType GetPassphraseType() const override; | |
41 | |
42 // NigoriHandler implemenation. | |
43 void ApplyNigoriUpdate(const sync_pb::NigoriSpecifics& nigori, | |
44 syncable::BaseTransaction* const trans) override; | |
45 void UpdateNigoriFromEncryptedTypes( | |
46 sync_pb::NigoriSpecifics* nigori, | |
47 syncable::BaseTransaction* const trans) const override; | |
48 bool NeedKeystoreKey(syncable::BaseTransaction* const trans) const override; | |
49 bool SetKeystoreKeys( | |
50 const google::protobuf::RepeatedPtrField<google::protobuf::string>& keys, | |
51 syncable::BaseTransaction* const trans) override; | |
52 ModelTypeSet GetEncryptedTypes( | |
53 syncable::BaseTransaction* const trans) const override; | |
54 | |
55 Cryptographer* cryptographer() { return &cryptographer_; } | |
56 | |
57 private: | |
58 base::ObserverList<SyncEncryptionHandler::Observer> observers_; | |
59 ModelTypeSet encrypted_types_; | |
60 bool encrypt_everything_; | |
61 PassphraseType passphrase_type_; | |
62 | |
63 FakeEncryptor encryptor_; | |
64 Cryptographer cryptographer_; | |
65 std::string keystore_key_; | |
66 }; | |
67 | |
68 } // namespace syncer | |
69 | |
70 #endif // SYNC_TEST_FAKE_SYNC_ENCRYPTION_HANDLER_H_ | |
OLD | NEW |