[go: nahoru, domu]

blob: c26d6ff3b142ae69f5a6fe86f34ab7dccae91cb3 [file] [log] [blame]
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "device/bluetooth/test/mock_bluetooth_device.h"
#include <memory>
#include <utility>
#include "base/strings/utf_string_conversions.h"
#include "device/bluetooth/bluetooth_remote_gatt_service.h"
#include "device/bluetooth/test/mock_bluetooth_adapter.h"
namespace device {
using ::testing::Return;
using ::testing::ReturnPointee;
MockBluetoothDevice::MockBluetoothDevice(MockBluetoothAdapter* adapter,
uint32_t bluetooth_class,
const char* name,
const std::string& address,
bool initially_paired,
bool connected)
: BluetoothDevice(adapter),
bluetooth_class_(bluetooth_class),
name_(name ? absl::optional<std::string>(name) : absl::nullopt),
address_(address),
connected_(connected),
paired_(initially_paired) {
ON_CALL(*this, GetBluetoothClass()).WillByDefault(Return(bluetooth_class_));
ON_CALL(*this, GetIdentifier())
.WillByDefault(Return(address_ + "-Identifier"));
ON_CALL(*this, GetAddress()).WillByDefault(Return(address_));
ON_CALL(*this, GetVendorIDSource()).WillByDefault(Return(VENDOR_ID_UNKNOWN));
ON_CALL(*this, GetVendorID()).WillByDefault(Return(0));
ON_CALL(*this, GetProductID()).WillByDefault(Return(0));
ON_CALL(*this, GetDeviceID()).WillByDefault(Return(0));
ON_CALL(*this, GetName()).WillByDefault(Return(name_));
ON_CALL(*this, GetNameForDisplay())
.WillByDefault(
Return(base::UTF8ToUTF16(name_ ? name_.value() : "Unnamed Device")));
ON_CALL(*this, GetType()).WillByDefault(ReturnPointee(&transport_));
ON_CALL(*this, GetDeviceType())
.WillByDefault(Return(BluetoothDeviceType::UNKNOWN));
ON_CALL(*this, IsPaired()).WillByDefault(ReturnPointee(&paired_));
#if BUILDFLAG(IS_CHROMEOS)
ON_CALL(*this, IsBonded()).WillByDefault(ReturnPointee(&paired_));
#endif // BUILDFLAG(IS_CHROMEOS)
ON_CALL(*this, IsConnected()).WillByDefault(ReturnPointee(&connected_));
ON_CALL(*this, IsGattConnected()).WillByDefault(ReturnPointee(&connected_));
ON_CALL(*this, IsConnectable()).WillByDefault(Return(false));
ON_CALL(*this, IsConnecting()).WillByDefault(Return(false));
ON_CALL(*this, GetUUIDs()).WillByDefault(ReturnPointee(&uuids_));
ON_CALL(*this, ExpectingPinCode()).WillByDefault(Return(false));
ON_CALL(*this, ExpectingPasskey()).WillByDefault(Return(false));
ON_CALL(*this, ExpectingConfirmation()).WillByDefault(Return(false));
}
MockBluetoothDevice::~MockBluetoothDevice() = default;
void MockBluetoothDevice::AddMockService(
std::unique_ptr<MockBluetoothGattService> mock_service) {
mock_services_.push_back(std::move(mock_service));
}
std::vector<BluetoothRemoteGattService*> MockBluetoothDevice::GetMockServices()
const {
std::vector<BluetoothRemoteGattService*> services;
for (const auto& service : mock_services_) {
services.push_back(service.get());
}
return services;
}
BluetoothRemoteGattService* MockBluetoothDevice::GetMockService(
const std::string& identifier) const {
for (const auto& service : mock_services_) {
if (service->GetIdentifier() == identifier)
return service.get();
}
return nullptr;
}
void MockBluetoothDevice::PushPendingCallback(base::OnceClosure callback) {
pending_callbacks_.push(std::move(callback));
}
void MockBluetoothDevice::RunPendingCallbacks() {
while (!pending_callbacks_.empty()) {
std::move(pending_callbacks_.front()).Run();
pending_callbacks_.pop();
}
}
} // namespace device