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_SYNCABLE_TEST_FAKE_SYNC_ENCRYPTION_HANDLER_H_ 6#define SYNC_SYNCABLE_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 17namespace 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. 25class FakeSyncEncryptionHandler : public SyncEncryptionHandler, 26 public syncable::NigoriHandler { 27 public: 28 FakeSyncEncryptionHandler(); 29 virtual ~FakeSyncEncryptionHandler(); 30 31 // SyncEncryptionHandler implementation. 32 virtual void AddObserver(Observer* observer) OVERRIDE; 33 virtual void RemoveObserver(Observer* observer) OVERRIDE; 34 virtual void Init() OVERRIDE; 35 virtual void SetEncryptionPassphrase(const std::string& passphrase, 36 bool is_explicit) OVERRIDE; 37 virtual void SetDecryptionPassphrase(const std::string& passphrase) OVERRIDE; 38 virtual void EnableEncryptEverything() OVERRIDE; 39 virtual bool EncryptEverythingEnabled() const OVERRIDE; 40 virtual PassphraseType GetPassphraseType() const OVERRIDE; 41 42 // NigoriHandler implemenation. 43 virtual void ApplyNigoriUpdate( 44 const sync_pb::NigoriSpecifics& nigori, 45 syncable::BaseTransaction* const trans) OVERRIDE; 46 virtual void UpdateNigoriFromEncryptedTypes( 47 sync_pb::NigoriSpecifics* nigori, 48 syncable::BaseTransaction* const trans) const OVERRIDE; 49 virtual bool NeedKeystoreKey( 50 syncable::BaseTransaction* const trans) const OVERRIDE; 51 virtual bool SetKeystoreKeys( 52 const google::protobuf::RepeatedPtrField<google::protobuf::string>& keys, 53 syncable::BaseTransaction* const trans) OVERRIDE; 54 virtual ModelTypeSet GetEncryptedTypes( 55 syncable::BaseTransaction* const trans) const OVERRIDE; 56 57 Cryptographer* cryptographer() { return &cryptographer_; } 58 59 private: 60 ObserverList<SyncEncryptionHandler::Observer> observers_; 61 ModelTypeSet encrypted_types_; 62 bool encrypt_everything_; 63 PassphraseType passphrase_type_; 64 65 FakeEncryptor encryptor_; 66 Cryptographer cryptographer_; 67 std::string keystore_key_; 68}; 69 70} // namespace syncer 71 72#endif // SYNC_INTERNAL_API_PUBLIC_TEST_FAKE_SYNC_ENCRYPTION_HANDLER_H_ 73