blob: 4334a8966587299309d2fa37a15f08b42ced6786 [file] [log] [blame]
// Copyright 2016 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/chooser_controller/mock_chooser_controller.h"
#include <algorithm>
#include "base/logging.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
MockChooserController::MockChooserController(content::RenderFrameHost* owner)
: ChooserController(owner,
IDS_USB_DEVICE_CHOOSER_PROMPT_ORIGIN,
IDS_USB_DEVICE_CHOOSER_PROMPT_EXTENSION_NAME),
no_options_text_(l10n_util::GetStringUTF16(
IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)) {}
MockChooserController::~MockChooserController() {}
base::string16 MockChooserController::GetNoOptionsText() const {
return no_options_text_;
}
base::string16 MockChooserController::GetOkButtonLabel() const {
return l10n_util::GetStringUTF16(IDS_USB_DEVICE_CHOOSER_CONNECT_BUTTON_TEXT);
}
size_t MockChooserController::NumOptions() const {
return option_names_.size();
}
base::string16 MockChooserController::GetOption(size_t index) const {
return option_names_[index];
}
base::string16 MockChooserController::GetStatus() const {
return status_text_;
}
void MockChooserController::OnAdapterPresenceChanged(
content::BluetoothChooser::AdapterPresence presence) {
ClearAllOptions();
switch (presence) {
case content::BluetoothChooser::AdapterPresence::ABSENT:
NOTREACHED();
break;
case content::BluetoothChooser::AdapterPresence::POWERED_OFF:
no_options_text_ =
l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_ADAPTER_OFF);
status_text_ = base::string16();
if (view())
view()->OnAdapterEnabledChanged(false /* Adapter is turned off */);
break;
case content::BluetoothChooser::AdapterPresence::POWERED_ON:
no_options_text_ =
l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT);
status_text_ =
l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN);
if (view())
view()->OnAdapterEnabledChanged(true /* Adapter is turned on */);
break;
}
}
void MockChooserController::OnDiscoveryStateChanged(
content::BluetoothChooser::DiscoveryState state) {
switch (state) {
case content::BluetoothChooser::DiscoveryState::DISCOVERING:
ClearAllOptions();
status_text_ =
l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_SCANNING);
if (view()) {
view()->OnRefreshStateChanged(
true /* Refreshing options is in progress */);
}
break;
case content::BluetoothChooser::DiscoveryState::IDLE:
case content::BluetoothChooser::DiscoveryState::FAILED_TO_START:
status_text_ =
l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN);
if (view()) {
view()->OnRefreshStateChanged(
false /* Refreshing options is complete */);
}
break;
}
}
void MockChooserController::OptionAdded(const base::string16& option_name) {
option_names_.push_back(option_name);
if (view())
view()->OnOptionAdded(option_names_.size() - 1);
}
void MockChooserController::OptionRemoved(const base::string16& option_name) {
auto it = std::find(option_names_.begin(), option_names_.end(), option_name);
if (it != option_names_.end()) {
size_t index = std::distance(option_names_.begin(), it);
option_names_.erase(it);
if (view())
view()->OnOptionRemoved(index);
}
}
void MockChooserController::OptionUpdated(
const base::string16& previous_option_name,
const base::string16& new_option_name) {
auto it = std::find(option_names_.begin(), option_names_.end(),
previous_option_name);
DCHECK(it != option_names_.end());
size_t index = std::distance(option_names_.begin(), it);
*it = new_option_name;
if (view())
view()->OnOptionUpdated(index);
}
void MockChooserController::ClearAllOptions() {
option_names_.clear();
}