Home | History | Annotate | Download | only in test
      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 
     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   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