// 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; } } }