| Index: sync/internal_api/js_sync_encryption_handler_observer.cc
|
| diff --git a/sync/internal_api/js_sync_encryption_handler_observer.cc b/sync/internal_api/js_sync_encryption_handler_observer.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1e76575860759bd7f9bc3455193615daf709f3d4
|
| --- /dev/null
|
| +++ b/sync/internal_api/js_sync_encryption_handler_observer.cc
|
| @@ -0,0 +1,109 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "sync/internal_api/js_sync_encryption_handler_observer.h"
|
| +
|
| +#include <cstddef>
|
| +
|
| +#include "base/location.h"
|
| +#include "base/logging.h"
|
| +#include "base/string_number_conversions.h"
|
| +#include "base/values.h"
|
| +#include "sync/internal_api/public/base/model_type.h"
|
| +#include "sync/internal_api/public/util/sync_string_conversions.h"
|
| +#include "sync/js/js_arg_list.h"
|
| +#include "sync/js/js_event_details.h"
|
| +#include "sync/js/js_event_handler.h"
|
| +#include "sync/util/cryptographer.h"
|
| +
|
| +namespace syncer {
|
| +
|
| +JsSyncEncryptionHandlerObserver::JsSyncEncryptionHandlerObserver() {}
|
| +
|
| +JsSyncEncryptionHandlerObserver::~JsSyncEncryptionHandlerObserver() {}
|
| +
|
| +void JsSyncEncryptionHandlerObserver::SetJsEventHandler(
|
| + const WeakHandle<JsEventHandler>& event_handler) {
|
| + event_handler_ = event_handler;
|
| +}
|
| +
|
| +void JsSyncEncryptionHandlerObserver::OnPassphraseRequired(
|
| + PassphraseRequiredReason reason,
|
| + const sync_pb::EncryptedData& pending_keys) {
|
| + if (!event_handler_.IsInitialized()) {
|
| + return;
|
| + }
|
| + DictionaryValue details;
|
| + details.SetString("reason",
|
| + PassphraseRequiredReasonToString(reason));
|
| + HandleJsEvent(FROM_HERE, "onPassphraseRequired", JsEventDetails(&details));
|
| +}
|
| +
|
| +void JsSyncEncryptionHandlerObserver::OnPassphraseAccepted() {
|
| + if (!event_handler_.IsInitialized()) {
|
| + return;
|
| + }
|
| + DictionaryValue details;
|
| + HandleJsEvent(FROM_HERE, "onPassphraseAccepted", JsEventDetails(&details));
|
| +}
|
| +
|
| +void JsSyncEncryptionHandlerObserver::OnBootstrapTokenUpdated(
|
| + const std::string& boostrap_token) {
|
| + if (!event_handler_.IsInitialized()) {
|
| + return;
|
| + }
|
| + DictionaryValue details;
|
| + details.SetString("bootstrapToken", "<redacted>");
|
| + HandleJsEvent(FROM_HERE, "OnBootstrapTokenUpdated", JsEventDetails(&details));
|
| +}
|
| +
|
| +void JsSyncEncryptionHandlerObserver::OnEncryptedTypesChanged(
|
| + ModelTypeSet encrypted_types,
|
| + bool encrypt_everything) {
|
| + if (!event_handler_.IsInitialized()) {
|
| + return;
|
| + }
|
| + DictionaryValue details;
|
| + details.Set("encryptedTypes",
|
| + ModelTypeSetToValue(encrypted_types));
|
| + details.SetBoolean("encryptEverything", encrypt_everything);
|
| + HandleJsEvent(FROM_HERE,
|
| + "onEncryptedTypesChanged", JsEventDetails(&details));
|
| +}
|
| +
|
| +void JsSyncEncryptionHandlerObserver::OnEncryptionComplete() {
|
| + if (!event_handler_.IsInitialized()) {
|
| + return;
|
| + }
|
| + DictionaryValue details;
|
| + HandleJsEvent(FROM_HERE, "onEncryptionComplete", JsEventDetails());
|
| +}
|
| +
|
| +void JsSyncEncryptionHandlerObserver::OnCryptographerStateChanged(
|
| + Cryptographer* cryptographer) {
|
| + if (!event_handler_.IsInitialized()) {
|
| + return;
|
| + }
|
| + DictionaryValue details;
|
| + details.SetBoolean("ready",
|
| + cryptographer->is_ready());
|
| + details.SetBoolean("hasPendingKeys",
|
| + cryptographer->has_pending_keys());
|
| + HandleJsEvent(FROM_HERE,
|
| + "onCryptographerStateChanged",
|
| + JsEventDetails(&details));
|
| +}
|
| +
|
| +void JsSyncEncryptionHandlerObserver::HandleJsEvent(
|
| + const tracked_objects::Location& from_here,
|
| + const std::string& name, const JsEventDetails& details) {
|
| + if (!event_handler_.IsInitialized()) {
|
| + NOTREACHED();
|
| + return;
|
| + }
|
| + event_handler_.Call(from_here,
|
| + &JsEventHandler::HandleJsEvent, name, details);
|
| +}
|
| +
|
| +} // namespace syncer
|
|
|