Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Unified Diff: device/bluetooth/bluetooth_adapter_win_unittest.cc

Issue 424093004: Improve processing of Bluetooth device discovery on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address code review feedback (nits and memory leak). Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/bluetooth/bluetooth_adapter_win.cc ('k') | device/bluetooth/bluetooth_device_win.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/bluetooth/bluetooth_adapter_win_unittest.cc
diff --git a/device/bluetooth/bluetooth_adapter_win_unittest.cc b/device/bluetooth/bluetooth_adapter_win_unittest.cc
index c3dc9101ec4dc7d457aa3366a68b3dc1736a4fca..ed3a3047ac0afe894a46f036adf06f5c2eba1605 100644
--- a/device/bluetooth/bluetooth_adapter_win_unittest.cc
+++ b/device/bluetooth/bluetooth_adapter_win_unittest.cc
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "base/memory/ref_counted.h"
+#include "base/strings/string_number_conversions.h"
#include "base/test/test_simple_task_runner.h"
#include "device/bluetooth/bluetooth_adapter.h"
#include "device/bluetooth/bluetooth_adapter_win.h"
@@ -18,6 +19,13 @@ namespace {
const char kAdapterAddress[] = "A1:B2:C3:D4:E5:F6";
const char kAdapterName[] = "Bluetooth Adapter Name";
+const char kTestAudioSdpName[] = "Audio";
+const char kTestAudioSdpName2[] = "Audio2";
+const char kTestAudioSdpBytes[] =
+ "35510900000a00010001090001350319110a09000435103506190100090019350619001909"
+ "010209000535031910020900093508350619110d090102090100250c417564696f20536f75"
+ "726365090311090001";
+const device::BluetoothUUID kTestAudioSdpUuid("110a");
void MakeDeviceState(const std::string& name,
const std::string& address,
@@ -31,11 +39,15 @@ void MakeDeviceState(const std::string& name,
class AdapterObserver : public device::BluetoothAdapter::Observer {
public:
- AdapterObserver()
- : num_present_changed_(0),
- num_powered_changed_(0),
- num_discovering_changed_(0),
- num_device_added_(0) {
+ AdapterObserver() { ResetCounters(); }
+
+ void ResetCounters() {
+ num_present_changed_ = 0;
+ num_powered_changed_ = 0;
+ num_discovering_changed_ = 0;
+ num_device_added_ = 0;
+ num_device_removed_ = 0;
+ num_device_changed_ = 0;
}
virtual void AdapterPresentChanged(
@@ -59,27 +71,35 @@ class AdapterObserver : public device::BluetoothAdapter::Observer {
num_device_added_++;
}
- int num_present_changed() const {
- return num_present_changed_;
+ virtual void DeviceRemoved(device::BluetoothAdapter* adapter,
+ device::BluetoothDevice* device) OVERRIDE {
+ num_device_removed_++;
}
- int num_powered_changed() const {
- return num_powered_changed_;
+ virtual void DeviceChanged(device::BluetoothAdapter* adapter,
+ device::BluetoothDevice* device) OVERRIDE {
+ num_device_changed_++;
}
- int num_discovering_changed() const {
- return num_discovering_changed_;
- }
+ int num_present_changed() const { return num_present_changed_; }
- int num_device_added() const {
- return num_device_added_;
- }
+ int num_powered_changed() const { return num_powered_changed_; }
+
+ int num_discovering_changed() const { return num_discovering_changed_; }
+
+ int num_device_added() const { return num_device_added_; }
+
+ int num_device_removed() const { return num_device_removed_; }
+
+ int num_device_changed() const { return num_device_changed_; }
private:
int num_present_changed_;
int num_powered_changed_;
int num_discovering_changed_;
int num_device_added_;
+ int num_device_removed_;
+ int num_device_changed_;
};
} // namespace
@@ -487,23 +507,79 @@ TEST_F(BluetoothAdapterWinTest, StopDiscoveryBeforeDiscoveryStartedAndFailed) {
EXPECT_EQ(0, adapter_observer_.num_discovering_changed());
}
-TEST_F(BluetoothAdapterWinTest, DevicesDiscovered) {
+TEST_F(BluetoothAdapterWinTest, DevicesPolled) {
BluetoothTaskManagerWin::DeviceState* android_phone_state =
new BluetoothTaskManagerWin::DeviceState();
- MakeDeviceState("phone", "android phone address", android_phone_state);
+ MakeDeviceState("phone", "A1:B2:C3:D4:E5:E0", android_phone_state);
BluetoothTaskManagerWin::DeviceState* laptop_state =
new BluetoothTaskManagerWin::DeviceState();
- MakeDeviceState("laptop", "laptop address", laptop_state);
+ MakeDeviceState("laptop", "A1:B2:C3:D4:E5:E1", laptop_state);
BluetoothTaskManagerWin::DeviceState* iphone_state =
new BluetoothTaskManagerWin::DeviceState();
- MakeDeviceState("phone", "iphone address", iphone_state);
+ MakeDeviceState("phone", "A1:B2:C3:D4:E5:E2", iphone_state);
ScopedVector<BluetoothTaskManagerWin::DeviceState> devices;
devices.push_back(android_phone_state);
devices.push_back(laptop_state);
devices.push_back(iphone_state);
- adapter_win_->DevicesDiscovered(devices);
+ // Add 3 devices
+ adapter_observer_.ResetCounters();
+ adapter_win_->DevicesPolled(devices);
EXPECT_EQ(3, adapter_observer_.num_device_added());
+ EXPECT_EQ(0, adapter_observer_.num_device_removed());
+ EXPECT_EQ(0, adapter_observer_.num_device_changed());
+
+ // Change a device name
+ android_phone_state->name = "phone2";
+ adapter_observer_.ResetCounters();
+ adapter_win_->DevicesPolled(devices);
+ EXPECT_EQ(0, adapter_observer_.num_device_added());
+ EXPECT_EQ(0, adapter_observer_.num_device_removed());
+ EXPECT_EQ(1, adapter_observer_.num_device_changed());
+
+ // Change a device address
+ android_phone_state->address = "A1:B2:C3:D4:E5:E6";
+ adapter_observer_.ResetCounters();
+ adapter_win_->DevicesPolled(devices);
+ EXPECT_EQ(1, adapter_observer_.num_device_added());
+ EXPECT_EQ(1, adapter_observer_.num_device_removed());
+ EXPECT_EQ(0, adapter_observer_.num_device_changed());
+
+ // Remove a device
+ devices.erase(devices.begin());
+ adapter_observer_.ResetCounters();
+ adapter_win_->DevicesPolled(devices);
+ EXPECT_EQ(0, adapter_observer_.num_device_added());
+ EXPECT_EQ(1, adapter_observer_.num_device_removed());
+ EXPECT_EQ(0, adapter_observer_.num_device_changed());
+
+ // Add a service
+ BluetoothTaskManagerWin::ServiceRecordState* audio_state =
+ new BluetoothTaskManagerWin::ServiceRecordState();
+ audio_state->name = kTestAudioSdpName;
+ base::HexStringToBytes(kTestAudioSdpBytes, &audio_state->sdp_bytes);
+ laptop_state->service_record_states.push_back(audio_state);
+ adapter_observer_.ResetCounters();
+ adapter_win_->DevicesPolled(devices);
+ EXPECT_EQ(0, adapter_observer_.num_device_added());
+ EXPECT_EQ(0, adapter_observer_.num_device_removed());
+ EXPECT_EQ(1, adapter_observer_.num_device_changed());
+
+ // Change a service
+ audio_state->name = kTestAudioSdpName2;
+ adapter_observer_.ResetCounters();
+ adapter_win_->DevicesPolled(devices);
+ EXPECT_EQ(0, adapter_observer_.num_device_added());
+ EXPECT_EQ(0, adapter_observer_.num_device_removed());
+ EXPECT_EQ(1, adapter_observer_.num_device_changed());
+
+ // Remove a service
+ laptop_state->service_record_states.clear();
+ adapter_observer_.ResetCounters();
+ adapter_win_->DevicesPolled(devices);
+ EXPECT_EQ(0, adapter_observer_.num_device_added());
+ EXPECT_EQ(0, adapter_observer_.num_device_removed());
+ EXPECT_EQ(1, adapter_observer_.num_device_changed());
}
} // namespace device
« no previous file with comments | « device/bluetooth/bluetooth_adapter_win.cc ('k') | device/bluetooth/bluetooth_device_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698