diff options
Diffstat (limited to 'components/pairing')
-rw-r--r-- | components/pairing/shark_connection_listener.cc | 46 | ||||
-rw-r--r-- | components/pairing/shark_connection_listener.h | 48 |
2 files changed, 94 insertions, 0 deletions
diff --git a/components/pairing/shark_connection_listener.cc b/components/pairing/shark_connection_listener.cc new file mode 100644 index 0000000..ce63aa0 --- /dev/null +++ b/components/pairing/shark_connection_listener.cc @@ -0,0 +1,46 @@ +// Copyright 2014 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 "components/pairing/shark_connection_listener.h" + +#include "base/logging.h" +#include "base/threading/thread_restrictions.h" +#include "components/pairing/bluetooth_host_pairing_controller.h" + +namespace pairing_chromeos { + +SharkConnectionListener::SharkConnectionListener(OnConnectedCallback callback) + : callback_(callback) { + controller_.reset(new BluetoothHostPairingController()); + controller_->AddObserver(this); + controller_->StartPairing(); +} + +SharkConnectionListener::~SharkConnectionListener() { + if (controller_) + controller_->RemoveObserver(this); +} + +void SharkConnectionListener::PairingStageChanged(Stage new_stage) { + if (new_stage == HostPairingController::STAGE_WAITING_FOR_CODE_CONFIRMATION) { + controller_->RemoveObserver(this); + callback_.Run(controller_.Pass()); + callback_.Reset(); + } +} + +void SharkConnectionListener::ConfigureHost( + bool accepted_eula, + const std::string& lang, + const std::string& timezone, + bool send_reports, + const std::string& keyboard_layout) { + NOTREACHED(); +} + +void SharkConnectionListener::EnrollHost(const std::string& auth_token) { + NOTREACHED(); +} + +} // namespace pairing_chromeos diff --git a/components/pairing/shark_connection_listener.h b/components/pairing/shark_connection_listener.h new file mode 100644 index 0000000..e2e786b --- /dev/null +++ b/components/pairing/shark_connection_listener.h @@ -0,0 +1,48 @@ +// Copyright 2014 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. + +#ifndef COMPONENTS_PAIRING_SHARK_CONNECTION_LISTENER_H_ +#define COMPONENTS_PAIRING_SHARK_CONNECTION_LISTENER_H_ + +#include <string> + +#include "base/callback.h" +#include "base/macros.h" +#include "base/memory/scoped_ptr.h" +#include "components/pairing/host_pairing_controller.h" + +namespace pairing_chromeos { + +// Listens for incoming connection from shark controller. If connection +// is established, invokes callback passing HostPairingController +// as an argument. +class SharkConnectionListener : public HostPairingController::Observer { + public: + typedef base::Callback<void(scoped_ptr<HostPairingController>)> + OnConnectedCallback; + + explicit SharkConnectionListener(OnConnectedCallback callback); + virtual ~SharkConnectionListener(); + + private: + typedef HostPairingController::Stage Stage; + + // HostPairingController::Observer overrides: + virtual void PairingStageChanged(Stage new_stage) OVERRIDE; + virtual void ConfigureHost(bool accepted_eula, + const std::string& lang, + const std::string& timezone, + bool send_reports, + const std::string& keyboard_layout) OVERRIDE; + virtual void EnrollHost(const std::string& auth_token) OVERRIDE; + + OnConnectedCallback callback_; + scoped_ptr<HostPairingController> controller_; + + DISALLOW_COPY_AND_ASSIGN(SharkConnectionListener); +}; + +} // namespace pairing_chromeos + +#endif // COMPONENTS_PAIRING_SHARK_CONNECTION_LISTENER_H_ |