blob: 9511a65385df42696bb2f20eaab8393e34811df0 [file] [log] [blame]
// Copyright 2018 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 ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_EXPERIMENTAL_H_
#define ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_EXPERIMENTAL_H_
#include <string>
#include "ash/ash_export.h"
#include "ash/system/bluetooth/tray_bluetooth_helper.h"
#include "base/macros.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "services/device/public/mojom/bluetooth_system.mojom.h"
namespace service_manager {
class Connector;
} // namespace service_manager
namespace ash {
// Implementation of TrayBluetoothHelper on top of the BluetoothSystem Mojo
// interface.
class TrayBluetoothHelperExperimental
: public TrayBluetoothHelper,
public device::mojom::BluetoothSystemClient {
public:
explicit TrayBluetoothHelperExperimental(
service_manager::Connector* connector);
~TrayBluetoothHelperExperimental() override;
// TrayBluetoothHelper:
void Initialize() override;
void StartBluetoothDiscovering() override;
void StopBluetoothDiscovering() override;
void ConnectToBluetoothDevice(const BluetoothAddress& address) override;
device::mojom::BluetoothSystem::State GetBluetoothState() override;
void SetBluetoothEnabled(bool enabled) override;
bool HasBluetoothDiscoverySession() override;
void GetBluetoothDevices(GetBluetoothDevicesCallback callback) const override;
// device::mojom::BluetoothSystemClient
void OnStateChanged(device::mojom::BluetoothSystem::State state) override;
void OnScanStateChanged(
device::mojom::BluetoothSystem::ScanState state) override;
private:
service_manager::Connector* connector_;
device::mojom::BluetoothSystemPtr bluetooth_system_ptr_;
mojo::Binding<device::mojom::BluetoothSystemClient>
bluetooth_system_client_binding_{this};
device::mojom::BluetoothSystem::State cached_state_ =
device::mojom::BluetoothSystem::State::kUnavailable;
device::mojom::BluetoothSystem::ScanState cached_scan_state_;
DISALLOW_COPY_AND_ASSIGN(TrayBluetoothHelperExperimental);
};
} // namespace ash
#endif // ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_EXPERIMENTAL_H_