| Index: chrome/browser/ui/webui/options2/chromeos/bluetooth_options_handler2.cc
|
| diff --git a/chrome/browser/ui/webui/options2/chromeos/bluetooth_options_handler2.cc b/chrome/browser/ui/webui/options2/chromeos/bluetooth_options_handler2.cc
|
| deleted file mode 100644
|
| index e5a7a64c607ad7c8c86a3999b7fe623d97b9b86f..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/webui/options2/chromeos/bluetooth_options_handler2.cc
|
| +++ /dev/null
|
| @@ -1,428 +0,0 @@
|
| -// Copyright (c) 2012 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/webui/options2/chromeos/bluetooth_options_handler2.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/bind_helpers.h"
|
| -#include "base/callback.h"
|
| -#include "base/command_line.h"
|
| -#include "base/string_number_conversions.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "base/values.h"
|
| -#include "chrome/browser/chromeos/bluetooth/bluetooth_adapter.h"
|
| -#include "chrome/browser/chromeos/bluetooth/bluetooth_device.h"
|
| -#include "content/public/browser/web_ui.h"
|
| -#include "grit/chromium_strings.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "third_party/cros_system_api/dbus/service_constants.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -
|
| -namespace {
|
| -
|
| -// |UpdateDeviceCallback| takes a variable length list as an argument. The
|
| -// value stored in each list element is indicated by the following constants.
|
| -const int kUpdateDeviceAddressIndex = 0;
|
| -const int kUpdateDeviceCommandIndex = 1;
|
| -const int kUpdateDeviceAuthTokenIndex = 2;
|
| -
|
| -// |UpdateDeviceCallback| provides a command value of one of the following
|
| -// constants that indicates what update it is providing to us.
|
| -const char kConnectCommand[] = "connect";
|
| -const char kCancelCommand[] = "cancel";
|
| -const char kAcceptCommand[] = "accept";
|
| -const char kRejectCommand[] = "reject";
|
| -const char kDisconnectCommand[] = "disconnect";
|
| -const char kForgetCommand[] = "forget";
|
| -
|
| -// |SendDeviceNotification| may include a pairing parameter whose value
|
| -// is one of the following constants instructing the UI to perform a certain
|
| -// action.
|
| -const char kEnterPinCode[] = "bluetoothEnterPinCode";
|
| -const char kEnterPasskey[] = "bluetoothEnterPasskey";
|
| -const char kRemotePinCode[] = "bluetoothRemotePinCode";
|
| -const char kRemotePasskey[] = "bluetoothRemotePasskey";
|
| -const char kConfirmPasskey[] = "bluetoothConfirmPasskey";
|
| -
|
| -} // namespace
|
| -
|
| -namespace chromeos {
|
| -namespace options2 {
|
| -
|
| -BluetoothOptionsHandler::BluetoothOptionsHandler() : weak_ptr_factory_(this) {
|
| -}
|
| -
|
| -BluetoothOptionsHandler::~BluetoothOptionsHandler() {
|
| - if (adapter_.get())
|
| - adapter_->RemoveObserver(this);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::GetLocalizedValues(
|
| - DictionaryValue* localized_strings) {
|
| - DCHECK(localized_strings);
|
| -
|
| - static OptionsStringResource resources[] = {
|
| - { "bluetooth", IDS_OPTIONS_SETTINGS_SECTION_TITLE_BLUETOOTH },
|
| - { "disableBluetooth", IDS_OPTIONS_SETTINGS_BLUETOOTH_DISABLE },
|
| - { "enableBluetooth", IDS_OPTIONS_SETTINGS_BLUETOOTH_ENABLE },
|
| - { "addBluetoothDevice", IDS_OPTIONS_SETTINGS_ADD_BLUETOOTH_DEVICE },
|
| - { "bluetoothAddDeviceTitle",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_ADD_DEVICE_TITLE },
|
| - { "bluetoothOptionsPageTabTitle",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_ADD_DEVICE_TITLE },
|
| - { "findBluetoothDevices", IDS_OPTIONS_SETTINGS_FIND_BLUETOOTH_DEVICES },
|
| - { "bluetoothNoDevices", IDS_OPTIONS_SETTINGS_BLUETOOTH_NO_DEVICES },
|
| - { "bluetoothNoDevicesFound",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_NO_DEVICES_FOUND },
|
| - {"bluetoothScanning", IDS_OPTIONS_SETTINGS_BLUETOOTH_SCANNING },
|
| - {"bluetoothDeviceConnected", IDS_OPTIONS_SETTINGS_BLUETOOTH_CONNECTED },
|
| - { "bluetoothDeviceNotConnected",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_NOT_CONNECTED },
|
| - { "bluetoothConnectDevice", IDS_OPTIONS_SETTINGS_BLUETOOTH_CONNECT },
|
| - { "bluetoothDisconnectDevice", IDS_OPTIONS_SETTINGS_BLUETOOTH_DISCONNECT },
|
| - { "bluetoothForgetDevice", IDS_OPTIONS_SETTINGS_BLUETOOTH_FORGET },
|
| - { "bluetoothCancel", IDS_OPTIONS_SETTINGS_BLUETOOTH_CANCEL },
|
| - { "bluetoothEnterKey", IDS_OPTIONS_SETTINGS_BLUETOOTH_ENTER_KEY },
|
| - { "bluetoothDismissError", IDS_OPTIONS_SETTINGS_BLUETOOTH_DISMISS_ERROR },
|
| -
|
| - // Device connecting and pairing.
|
| - { "bluetoothStartConnecting",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_START_CONNECTING },
|
| - { "bluetoothAcceptPasskey",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_ACCEPT_PASSKEY },
|
| - { "bluetoothRejectPasskey",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_REJECT_PASSKEY },
|
| - { "bluetoothEnterPinCode",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_ENTER_PIN_CODE_REQUEST },
|
| - { "bluetoothEnterPasskey",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_ENTER_PASSKEY_REQUEST },
|
| - { "bluetoothRemotePinCode",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_REMOTE_PIN_CODE_REQUEST },
|
| - { "bluetoothRemotePasskey",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_REMOTE_PASSKEY_REQUEST },
|
| - { "bluetoothConfirmPasskey",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_CONFIRM_PASSKEY_REQUEST },
|
| -
|
| - // Error messages.
|
| - { "bluetoothStartDiscoveryFailed",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_START_DISCOVERY_FAILED },
|
| - { "bluetoothStopDiscoveryFailed",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_STOP_DISCOVERY_FAILED },
|
| - { "bluetoothChangePowerFailed",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_CHANGE_POWER_FAILED },
|
| - { "bluetoothConnectFailed",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_CONNECT_FAILED },
|
| - { "bluetoothDisconnectFailed",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_DISCONNECT_FAILED },
|
| - { "bluetoothForgetFailed",
|
| - IDS_OPTIONS_SETTINGS_BLUETOOTH_FORGET_FAILED }};
|
| -
|
| - RegisterStrings(localized_strings, resources, arraysize(resources));
|
| -}
|
| -
|
| -// TODO(kevers): Reorder methods to match ordering in the header file.
|
| -
|
| -void BluetoothOptionsHandler::AdapterPresentChanged(BluetoothAdapter* adapter,
|
| - bool present) {
|
| - DCHECK(adapter == adapter_.get());
|
| - if (present) {
|
| - web_ui()->CallJavascriptFunction(
|
| - "options.BrowserOptions.showBluetoothSettings");
|
| -
|
| - // Update the checkbox and visibility based on the powered state of the
|
| - // new adapter.
|
| - AdapterPoweredChanged(adapter_.get(), adapter_->IsPowered());
|
| - } else {
|
| - web_ui()->CallJavascriptFunction(
|
| - "options.BrowserOptions.hideBluetoothSettings");
|
| - }
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::AdapterPoweredChanged(BluetoothAdapter* adapter,
|
| - bool powered) {
|
| - DCHECK(adapter == adapter_.get());
|
| - base::FundamentalValue checked(powered);
|
| - web_ui()->CallJavascriptFunction(
|
| - "options.BrowserOptions.setBluetoothState", checked);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::RegisterMessages() {
|
| - web_ui()->RegisterMessageCallback("bluetoothEnableChange",
|
| - base::Bind(&BluetoothOptionsHandler::EnableChangeCallback,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("findBluetoothDevices",
|
| - base::Bind(&BluetoothOptionsHandler::FindDevicesCallback,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("updateBluetoothDevice",
|
| - base::Bind(&BluetoothOptionsHandler::UpdateDeviceCallback,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("stopBluetoothDeviceDiscovery",
|
| - base::Bind(&BluetoothOptionsHandler::StopDiscoveryCallback,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("getPairedBluetoothDevices",
|
| - base::Bind(&BluetoothOptionsHandler::GetPairedDevicesCallback,
|
| - base::Unretained(this)));
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::InitializeHandler() {
|
| - adapter_ = BluetoothAdapter::DefaultAdapter();
|
| - adapter_->AddObserver(this);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::InitializePage() {
|
| - // Show or hide the bluetooth settings and update the checkbox based
|
| - // on the current present/powered state.
|
| - AdapterPresentChanged(adapter_.get(), adapter_->IsPresent());
|
| - // Automatically start device discovery if the "Add Bluetooth Device"
|
| - // overlay is visible.
|
| - web_ui()->CallJavascriptFunction(
|
| - "options.BluetoothOptions.updateDiscovery");
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::EnableChangeCallback(
|
| - const ListValue* args) {
|
| - bool bluetooth_enabled;
|
| - args->GetBoolean(0, &bluetooth_enabled);
|
| -
|
| - adapter_->SetPowered(bluetooth_enabled,
|
| - base::Bind(&base::DoNothing),
|
| - base::Bind(&BluetoothOptionsHandler::EnableChangeError,
|
| - weak_ptr_factory_.GetWeakPtr()));
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::EnableChangeError() {
|
| - DVLOG(1) << "Failed to change power state.";
|
| - ReportError("bluetoothChangePowerFailed", std::string());
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::FindDevicesCallback(
|
| - const ListValue* args) {
|
| - adapter_->SetDiscovering(
|
| - true,
|
| - base::Bind(&base::DoNothing),
|
| - base::Bind(&BluetoothOptionsHandler::FindDevicesError,
|
| - weak_ptr_factory_.GetWeakPtr()));
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::FindDevicesError() {
|
| - DVLOG(1) << "Failed to start discovery.";
|
| - ReportError("bluetoothStartDiscoveryFailed", std::string());
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::UpdateDeviceCallback(
|
| - const ListValue* args) {
|
| - std::string address;
|
| - args->GetString(kUpdateDeviceAddressIndex, &address);
|
| -
|
| - BluetoothDevice* device = adapter_->GetDevice(address);
|
| - if (!device)
|
| - return;
|
| -
|
| - std::string command;
|
| - args->GetString(kUpdateDeviceCommandIndex, &command);
|
| -
|
| - if (command == kConnectCommand) {
|
| - int size = args->GetSize();
|
| - if (size > kUpdateDeviceAuthTokenIndex) {
|
| - // PIN code or Passkey entry during the pairing process.
|
| - std::string auth_token;
|
| - args->GetString(kUpdateDeviceAuthTokenIndex, &auth_token);
|
| -
|
| - if (device->ExpectingPinCode()) {
|
| - // PIN Code is an array of 1 to 16 8-bit bytes, the usual
|
| - // interpretation, and the one shared by BlueZ, is a UTF-8 string
|
| - // of as many characters that will fit in that space, thus we
|
| - // can use the auth token from JavaScript unmodified.
|
| - DVLOG(1) << "PIN Code supplied: " << address << ": " << auth_token;
|
| - device->SetPinCode(auth_token);
|
| - } else if (device->ExpectingPasskey()) {
|
| - // Passkey is a numeric in the range 0-999999, in this case the
|
| - // JavaScript code should have ensured the auth token string only
|
| - // contains digits so a simple conversion is sufficient. In the
|
| - // failure case, just use 0 since that's the most likely Passkey
|
| - // anyway, and if it's refused the device will request a new one.
|
| - unsigned passkey = 0;
|
| - base::StringToUint(auth_token, &passkey);
|
| -
|
| - DVLOG(1) << "Passkey supplied: " << address << ": " << passkey;
|
| - device->SetPasskey(passkey);
|
| - } else {
|
| - LOG(WARNING) << "Auth token supplied after pairing ended: " << address
|
| - << ": " << auth_token;
|
| - }
|
| - } else {
|
| - // Connection request.
|
| - DVLOG(1) << "Connect: " << address;
|
| - device->Connect(
|
| - this,
|
| - base::Bind(&base::DoNothing),
|
| - base::Bind(&BluetoothOptionsHandler::ConnectError,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - device->address()));
|
| - }
|
| - } else if (command == kCancelCommand) {
|
| - // Cancel pairing.
|
| - DVLOG(1) << "Cancel pairing: " << address;
|
| - device->CancelPairing();
|
| - } else if (command == kAcceptCommand) {
|
| - // Confirm displayed Passkey.
|
| - DVLOG(1) << "Confirm pairing: " << address;
|
| - device->ConfirmPairing();
|
| - } else if (command == kRejectCommand) {
|
| - // Reject displayed Passkey.
|
| - DVLOG(1) << "Reject pairing: " << address;
|
| - device->RejectPairing();
|
| - } else if (command == kDisconnectCommand) {
|
| - // Disconnect from device.
|
| - DVLOG(1) << "Disconnect device: " << address;
|
| - device->Disconnect(
|
| - base::Bind(&base::DoNothing),
|
| - base::Bind(&BluetoothOptionsHandler::DisconnectError,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - device->address()));
|
| - } else if (command == kForgetCommand) {
|
| - // Disconnect from device and delete pairing information.
|
| - DVLOG(1) << "Forget device: " << address;
|
| - device->Forget(base::Bind(&BluetoothOptionsHandler::ForgetError,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - device->address()));
|
| - } else {
|
| - LOG(WARNING) << "Unknown updateBluetoothDevice command: " << command;
|
| - }
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::ConnectError(const std::string& address) {
|
| - DVLOG(1) << "Failed to connect to device: " << address;
|
| - ReportError("bluetoothConnectFailed", address);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::DisconnectError(const std::string& address) {
|
| - DVLOG(1) << "Failed to disconnect from device: " << address;
|
| - ReportError("bluetoothDisconnectFailed", address);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::ForgetError(const std::string& address) {
|
| - DVLOG(1) << "Failed to disconnect and unpair device: " << address;
|
| - ReportError("bluetoothForgetFailed", address);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::StopDiscoveryCallback(
|
| - const ListValue* args) {
|
| - adapter_->SetDiscovering(
|
| - false,
|
| - base::Bind(&base::DoNothing),
|
| - base::Bind(&BluetoothOptionsHandler::StopDiscoveryError,
|
| - weak_ptr_factory_.GetWeakPtr()));
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::StopDiscoveryError() {
|
| - DVLOG(1) << "Failed to stop discovery.";
|
| - ReportError("bluetoothStopDiscoveryFailed", std::string());
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::GetPairedDevicesCallback(
|
| - const ListValue* args) {
|
| - BluetoothAdapter::DeviceList devices = adapter_->GetDevices();
|
| -
|
| - for (BluetoothAdapter::DeviceList::iterator iter = devices.begin();
|
| - iter != devices.end(); ++iter)
|
| - SendDeviceNotification(*iter, NULL);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::SendDeviceNotification(
|
| - const BluetoothDevice* device,
|
| - base::DictionaryValue* params) {
|
| - base::DictionaryValue js_properties;
|
| - js_properties.SetString("name", device->GetName());
|
| - js_properties.SetString("address", device->address());
|
| - js_properties.SetBoolean("paired", device->IsPaired());
|
| - js_properties.SetBoolean("bonded", device->IsBonded());
|
| - js_properties.SetBoolean("connected", device->IsConnected());
|
| - if (params) {
|
| - js_properties.MergeDictionary(params);
|
| - }
|
| - web_ui()->CallJavascriptFunction(
|
| - "options.BrowserOptions.addBluetoothDevice",
|
| - js_properties);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::RequestPinCode(BluetoothDevice* device) {
|
| - DictionaryValue params;
|
| - params.SetString("pairing", kEnterPinCode);
|
| - SendDeviceNotification(device, ¶ms);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::RequestPasskey(BluetoothDevice* device) {
|
| - DictionaryValue params;
|
| - params.SetString("pairing", kEnterPasskey);
|
| - SendDeviceNotification(device, ¶ms);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::DisplayPinCode(BluetoothDevice* device,
|
| - const std::string& pincode) {
|
| - DictionaryValue params;
|
| - params.SetString("pairing", kRemotePinCode);
|
| - params.SetString("pincode", pincode);
|
| - SendDeviceNotification(device, ¶ms);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::DisplayPasskey(BluetoothDevice* device,
|
| - uint32 passkey) {
|
| - DictionaryValue params;
|
| - params.SetString("pairing", kRemotePasskey);
|
| - params.SetInteger("passkey", passkey);
|
| - SendDeviceNotification(device, ¶ms);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::ConfirmPasskey(BluetoothDevice* device,
|
| - uint32 passkey) {
|
| - DictionaryValue params;
|
| - params.SetString("pairing", kConfirmPasskey);
|
| - params.SetInteger("passkey", passkey);
|
| - SendDeviceNotification(device, ¶ms);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::DismissDisplayOrConfirm() {
|
| - web_ui()->CallJavascriptFunction(
|
| - "options.BluetoothPairing.dismissDialog");
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::ReportError(
|
| - const std::string& error,
|
| - const std::string& address) {
|
| - base::DictionaryValue properties;
|
| - properties.SetString("label", error);
|
| - properties.SetString("address", address);
|
| - web_ui()->CallJavascriptFunction(
|
| - "options.BluetoothPairing.showMessage",
|
| - properties);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::DeviceAdded(BluetoothAdapter* adapter,
|
| - BluetoothDevice* device) {
|
| - DCHECK(adapter == adapter_.get());
|
| - DCHECK(device);
|
| - SendDeviceNotification(device, NULL);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::DeviceChanged(BluetoothAdapter* adapter,
|
| - BluetoothDevice* device) {
|
| - DCHECK(adapter == adapter_.get());
|
| - DCHECK(device);
|
| - SendDeviceNotification(device, NULL);
|
| -}
|
| -
|
| -void BluetoothOptionsHandler::DeviceRemoved(BluetoothAdapter* adapter,
|
| - BluetoothDevice* device) {
|
| - DCHECK(adapter == adapter_.get());
|
| - DCHECK(device);
|
| -
|
| - base::StringValue address(device->address());
|
| - web_ui()->CallJavascriptFunction(
|
| - "options.BrowserOptions.removeBluetoothDevice",
|
| - address);
|
| -}
|
| -
|
| -} // namespace options2
|
| -} // namespace chromeos
|
|
|