summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/bluetooth/bluetooth_chooser_bubble_controller.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/bluetooth/bluetooth_chooser_bubble_controller.cc')
-rw-r--r--chrome/browser/ui/bluetooth/bluetooth_chooser_bubble_controller.cc85
1 files changed, 85 insertions, 0 deletions
diff --git a/chrome/browser/ui/bluetooth/bluetooth_chooser_bubble_controller.cc b/chrome/browser/ui/bluetooth/bluetooth_chooser_bubble_controller.cc
new file mode 100644
index 0000000..9e9e280
--- /dev/null
+++ b/chrome/browser/ui/bluetooth/bluetooth_chooser_bubble_controller.cc
@@ -0,0 +1,85 @@
+// Copyright 2015 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 "chrome/browser/ui/bluetooth/bluetooth_chooser_bubble_controller.h"
+
+#include "base/stl_util.h"
+#include "chrome/browser/ui/bluetooth/bluetooth_chooser_desktop.h"
+#include "chrome/common/url_constants.h"
+#include "components/bubble/bubble_controller.h"
+#include "url/gurl.h"
+
+BluetoothChooserBubbleController::BluetoothChooserBubbleController(
+ content::RenderFrameHost* owner)
+ : ChooserBubbleController(owner), bluetooth_chooser_(nullptr) {}
+
+BluetoothChooserBubbleController::~BluetoothChooserBubbleController() {
+ if (bluetooth_chooser_)
+ bluetooth_chooser_->set_bluetooth_chooser_bubble_controller(nullptr);
+}
+
+size_t BluetoothChooserBubbleController::NumOptions() const {
+ return device_names_and_ids_.size();
+}
+
+const base::string16& BluetoothChooserBubbleController::GetOption(
+ size_t index) const {
+ DCHECK_LT(index, device_names_and_ids_.size());
+ return device_names_and_ids_[index].first;
+}
+
+void BluetoothChooserBubbleController::Select(size_t index) {
+ DCHECK_LT(index, device_names_and_ids_.size());
+ if (bluetooth_chooser_) {
+ bluetooth_chooser_->CallEventHandler(
+ content::BluetoothChooser::Event::SELECTED,
+ device_names_and_ids_[index].second);
+ }
+
+ if (bubble_reference_)
+ bubble_reference_->CloseBubble(BUBBLE_CLOSE_ACCEPTED);
+}
+
+void BluetoothChooserBubbleController::Cancel() {
+ if (bluetooth_chooser_) {
+ bluetooth_chooser_->CallEventHandler(
+ content::BluetoothChooser::Event::CANCELLED, std::string());
+ }
+
+ if (bubble_reference_)
+ bubble_reference_->CloseBubble(BUBBLE_CLOSE_CANCELED);
+}
+
+void BluetoothChooserBubbleController::Close() {
+ if (bluetooth_chooser_) {
+ bluetooth_chooser_->CallEventHandler(
+ content::BluetoothChooser::Event::CANCELLED, std::string());
+ }
+}
+
+GURL BluetoothChooserBubbleController::GetHelpCenterUrl() const {
+ return GURL(chrome::kChooserBluetoothOverviewURL);
+}
+
+void BluetoothChooserBubbleController::AddDevice(
+ const std::string& device_id,
+ const base::string16& device_name) {
+ device_names_and_ids_.push_back(std::make_pair(device_name, device_id));
+ if (observer())
+ observer()->OnOptionAdded(device_names_and_ids_.size() - 1);
+}
+
+void BluetoothChooserBubbleController::RemoveDevice(
+ const std::string& device_id) {
+ for (auto it = device_names_and_ids_.begin();
+ it != device_names_and_ids_.end(); ++it) {
+ if (it->second == device_id) {
+ size_t index = it - device_names_and_ids_.begin();
+ device_names_and_ids_.erase(it);
+ if (observer())
+ observer()->OnOptionRemoved(index);
+ return;
+ }
+ }
+}