summaryrefslogtreecommitdiffstats
path: root/components/pairing
diff options
context:
space:
mode:
Diffstat (limited to 'components/pairing')
-rw-r--r--components/pairing/shark_connection_listener.cc46
-rw-r--r--components/pairing/shark_connection_listener.h48
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_