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_API_JS_SYNC_ENCRYPTION_HANDLER_OBSERVER_H_ 6 #define SYNC_INTERNAL_API_JS_SYNC_ENCRYPTION_HANDLER_OBSERVER_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/compiler_specific.h" 12 #include "sync/base/sync_export.h" 13 #include "sync/internal_api/public/sync_encryption_handler.h" 14 #include "sync/internal_api/public/util/weak_handle.h" 15 #include "sync/protocol/sync_protocol_error.h" 16 17 namespace tracked_objects { 18 class Location; 19 } // namespace tracked_objects 20 21 namespace syncer { 22 23 class JsEventDetails; 24 class JsEventHandler; 25 26 // Routes SyncEncryptionHandler events to a JsEventHandler. 27 class SYNC_EXPORT_PRIVATE JsSyncEncryptionHandlerObserver 28 : public SyncEncryptionHandler::Observer { 29 public: 30 JsSyncEncryptionHandlerObserver(); 31 virtual ~JsSyncEncryptionHandlerObserver(); 32 33 void SetJsEventHandler(const WeakHandle<JsEventHandler>& event_handler); 34 35 // SyncEncryptionHandlerObserver::Observer implementation. 36 virtual void OnPassphraseRequired( 37 PassphraseRequiredReason reason, 38 const sync_pb::EncryptedData& pending_keys) OVERRIDE; 39 virtual void OnPassphraseAccepted() OVERRIDE; 40 virtual void OnBootstrapTokenUpdated( 41 const std::string& bootstrap_token, 42 BootstrapTokenType type) OVERRIDE; 43 virtual void OnEncryptedTypesChanged( 44 ModelTypeSet encrypted_types, 45 bool encrypt_everything) OVERRIDE; 46 virtual void OnEncryptionComplete() OVERRIDE; 47 virtual void OnCryptographerStateChanged( 48 Cryptographer* cryptographer) OVERRIDE; 49 virtual void OnPassphraseTypeChanged( 50 PassphraseType type, 51 base::Time explicit_passphrase_time) OVERRIDE; 52 53 private: 54 void HandleJsEvent(const tracked_objects::Location& from_here, 55 const std::string& name, const JsEventDetails& details); 56 57 WeakHandle<JsEventHandler> event_handler_; 58 59 DISALLOW_COPY_AND_ASSIGN(JsSyncEncryptionHandlerObserver); 60 }; 61 62 } // namespace syncer 63 64 #endif // SYNC_INTERNAL_API_JS_SYNC_ENCRYPTION_HANDLER_OBSERVER_H_ 65