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

Side by Side 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: Rebasing, code cleanup, git cl format. Created 6 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/strings/string_number_conversions.h"
9 #include "base/test/test_simple_task_runner.h" 10 #include "base/test/test_simple_task_runner.h"
10 #include "device/bluetooth/bluetooth_adapter.h" 11 #include "device/bluetooth/bluetooth_adapter.h"
11 #include "device/bluetooth/bluetooth_adapter_win.h" 12 #include "device/bluetooth/bluetooth_adapter_win.h"
12 #include "device/bluetooth/bluetooth_device.h" 13 #include "device/bluetooth/bluetooth_device.h"
13 #include "device/bluetooth/bluetooth_task_manager_win.h" 14 #include "device/bluetooth/bluetooth_task_manager_win.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 16
16 namespace { 17 namespace {
17 18
18 const char kAdapterAddress[] = "A1:B2:C3:D4:E5:F6"; 19 const char kAdapterAddress[] = "A1:B2:C3:D4:E5:F6";
19 const char kAdapterName[] = "Bluetooth Adapter Name"; 20 const char kAdapterName[] = "Bluetooth Adapter Name";
20 21
22 const char kTestAudioSdpName[] = "Audio";
23 const char kTestAudioSdpName2[] = "Audio2";
24 const char kTestAudioSdpBytes[] =
25 "35510900000a00010001090001350319110a09000435103506190100090019350619001909"
26 "010209000535031910020900093508350619110d090102090100250c417564696f20536f75"
27 "726365090311090001";
28 const device::BluetoothUUID kTestAudioSdpUuid("110a");
21 29
22 void MakeDeviceState(const std::string& name, 30 void MakeDeviceState(const std::string& name,
23 const std::string& address, 31 const std::string& address,
24 device::BluetoothTaskManagerWin::DeviceState* state) { 32 device::BluetoothTaskManagerWin::DeviceState* state) {
25 state->name = name; 33 state->name = name;
26 state->address = address; 34 state->address = address;
27 state->bluetooth_class = 0; 35 state->bluetooth_class = 0;
28 state->authenticated = false; 36 state->authenticated = false;
29 state->connected = false; 37 state->connected = false;
30 } 38 }
31 39
32 class AdapterObserver : public device::BluetoothAdapter::Observer { 40 class AdapterObserver : public device::BluetoothAdapter::Observer {
33 public: 41 public:
34 AdapterObserver() 42 AdapterObserver() {
35 : num_present_changed_(0), 43 ResetCounters();
36 num_powered_changed_(0), 44 }
37 num_discovering_changed_(0), 45
38 num_device_added_(0) { 46 void ResetCounters() {
47 num_present_changed_ = 0;
48 num_powered_changed_ = 0;
49 num_discovering_changed_ = 0;
50 num_device_added_ = 0;
51 num_device_removed_ = 0;
52 num_device_changed_ = 0;
39 } 53 }
40 54
41 virtual void AdapterPresentChanged( 55 virtual void AdapterPresentChanged(
42 device::BluetoothAdapter* adapter, bool present) OVERRIDE { 56 device::BluetoothAdapter* adapter, bool present) OVERRIDE {
43 num_present_changed_++; 57 num_present_changed_++;
44 } 58 }
45 59
46 virtual void AdapterPoweredChanged( 60 virtual void AdapterPoweredChanged(
47 device::BluetoothAdapter* adapter, bool powered) OVERRIDE { 61 device::BluetoothAdapter* adapter, bool powered) OVERRIDE {
48 num_powered_changed_++; 62 num_powered_changed_++;
49 } 63 }
50 64
51 virtual void AdapterDiscoveringChanged( 65 virtual void AdapterDiscoveringChanged(
52 device::BluetoothAdapter* adapter, bool discovering) OVERRIDE { 66 device::BluetoothAdapter* adapter, bool discovering) OVERRIDE {
53 num_discovering_changed_++; 67 num_discovering_changed_++;
54 } 68 }
55 69
56 virtual void DeviceAdded( 70 virtual void DeviceAdded(
57 device::BluetoothAdapter* adapter, 71 device::BluetoothAdapter* adapter,
58 device::BluetoothDevice* device) OVERRIDE { 72 device::BluetoothDevice* device) OVERRIDE {
59 num_device_added_++; 73 num_device_added_++;
60 } 74 }
61 75
62 int num_present_changed() const { 76 virtual void DeviceRemoved(device::BluetoothAdapter* adapter,
63 return num_present_changed_; 77 device::BluetoothDevice* device) OVERRIDE {
78 num_device_removed_++;
64 } 79 }
65 80
66 int num_powered_changed() const { 81 virtual void DeviceChanged(device::BluetoothAdapter* adapter,
67 return num_powered_changed_; 82 device::BluetoothDevice* device) OVERRIDE {
83 num_device_changed_++;
68 } 84 }
69 85
70 int num_discovering_changed() const { 86 int num_present_changed() const { return num_present_changed_; }
71 return num_discovering_changed_;
72 }
73 87
74 int num_device_added() const { 88 int num_powered_changed() const { return num_powered_changed_; }
75 return num_device_added_; 89
76 } 90 int num_discovering_changed() const { return num_discovering_changed_; }
91
92 int num_device_added() const { return num_device_added_; }
93
94 int num_device_removed() const { return num_device_removed_; }
95
96 int num_device_changed() const { return num_device_changed_; }
77 97
78 private: 98 private:
79 int num_present_changed_; 99 int num_present_changed_;
80 int num_powered_changed_; 100 int num_powered_changed_;
81 int num_discovering_changed_; 101 int num_discovering_changed_;
82 int num_device_added_; 102 int num_device_added_;
103 int num_device_removed_;
104 int num_device_changed_;
83 }; 105 };
84 106
85 } // namespace 107 } // namespace
86 108
87 namespace device { 109 namespace device {
88 110
89 class BluetoothAdapterWinTest : public testing::Test { 111 class BluetoothAdapterWinTest : public testing::Test {
90 public: 112 public:
91 BluetoothAdapterWinTest() 113 BluetoothAdapterWinTest()
92 : ui_task_runner_(new base::TestSimpleTaskRunner()), 114 : ui_task_runner_(new base::TestSimpleTaskRunner()),
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 base::Unretained(this)), 502 base::Unretained(this)),
481 BluetoothAdapter::ErrorCallback()); 503 BluetoothAdapter::ErrorCallback());
482 ui_task_runner_->ClearPendingTasks(); 504 ui_task_runner_->ClearPendingTasks();
483 adapter_win_->DiscoveryStarted(false); 505 adapter_win_->DiscoveryStarted(false);
484 ui_task_runner_->RunPendingTasks(); 506 ui_task_runner_->RunPendingTasks();
485 EXPECT_EQ(1, num_start_discovery_error_callbacks_); 507 EXPECT_EQ(1, num_start_discovery_error_callbacks_);
486 EXPECT_EQ(1, num_stop_discovery_callbacks_); 508 EXPECT_EQ(1, num_stop_discovery_callbacks_);
487 EXPECT_EQ(0, adapter_observer_.num_discovering_changed()); 509 EXPECT_EQ(0, adapter_observer_.num_discovering_changed());
488 } 510 }
489 511
490 TEST_F(BluetoothAdapterWinTest, DevicesDiscovered) { 512 TEST_F(BluetoothAdapterWinTest, DevicesPolled) {
491 BluetoothTaskManagerWin::DeviceState* android_phone_state = 513 BluetoothTaskManagerWin::DeviceState* android_phone_state =
492 new BluetoothTaskManagerWin::DeviceState(); 514 new BluetoothTaskManagerWin::DeviceState();
493 MakeDeviceState("phone", "android phone address", android_phone_state); 515 MakeDeviceState("phone", "A1:B2:C3:D4:E5:E0", android_phone_state);
494 BluetoothTaskManagerWin::DeviceState* laptop_state = 516 BluetoothTaskManagerWin::DeviceState* laptop_state =
495 new BluetoothTaskManagerWin::DeviceState(); 517 new BluetoothTaskManagerWin::DeviceState();
496 MakeDeviceState("laptop", "laptop address", laptop_state); 518 MakeDeviceState("laptop", "A1:B2:C3:D4:E5:E1", laptop_state);
497 BluetoothTaskManagerWin::DeviceState* iphone_state = 519 BluetoothTaskManagerWin::DeviceState* iphone_state =
498 new BluetoothTaskManagerWin::DeviceState(); 520 new BluetoothTaskManagerWin::DeviceState();
499 MakeDeviceState("phone", "iphone address", iphone_state); 521 MakeDeviceState("phone", "A1:B2:C3:D4:E5:E2", iphone_state);
500 ScopedVector<BluetoothTaskManagerWin::DeviceState> devices; 522 ScopedVector<BluetoothTaskManagerWin::DeviceState> devices;
501 devices.push_back(android_phone_state); 523 devices.push_back(android_phone_state);
502 devices.push_back(laptop_state); 524 devices.push_back(laptop_state);
503 devices.push_back(iphone_state); 525 devices.push_back(iphone_state);
504 526
505 adapter_win_->DevicesDiscovered(devices); 527 // Add 3 devices
528 adapter_observer_.ResetCounters();
529 adapter_win_->DevicesPolled(devices);
506 EXPECT_EQ(3, adapter_observer_.num_device_added()); 530 EXPECT_EQ(3, adapter_observer_.num_device_added());
531 EXPECT_EQ(0, adapter_observer_.num_device_removed());
532 EXPECT_EQ(0, adapter_observer_.num_device_changed());
533
534 // Change a device name
535 android_phone_state->name = "phone2";
536 adapter_observer_.ResetCounters();
537 adapter_win_->DevicesPolled(devices);
538 EXPECT_EQ(0, adapter_observer_.num_device_added());
539 EXPECT_EQ(0, adapter_observer_.num_device_removed());
540 EXPECT_EQ(1, adapter_observer_.num_device_changed());
541
542 // Change a device address
543 android_phone_state->address = "A1:B2:C3:D4:E5:E6";
544 adapter_observer_.ResetCounters();
545 adapter_win_->DevicesPolled(devices);
546 EXPECT_EQ(1, adapter_observer_.num_device_added());
547 EXPECT_EQ(1, adapter_observer_.num_device_removed());
548 EXPECT_EQ(0, adapter_observer_.num_device_changed());
549
550 // Remove a device
551 devices.erase(devices.begin());
552 adapter_observer_.ResetCounters();
553 adapter_win_->DevicesPolled(devices);
554 EXPECT_EQ(0, adapter_observer_.num_device_added());
555 EXPECT_EQ(1, adapter_observer_.num_device_removed());
556 EXPECT_EQ(0, adapter_observer_.num_device_changed());
557
558 // Add a service
559 BluetoothTaskManagerWin::ServiceRecordState* audio_state =
560 new BluetoothTaskManagerWin::ServiceRecordState();
561 audio_state->name = kTestAudioSdpName;
562 base::HexStringToBytes(kTestAudioSdpBytes, &audio_state->sdp_bytes);
563 laptop_state->service_record_states.push_back(audio_state);
564 adapter_observer_.ResetCounters();
565 adapter_win_->DevicesPolled(devices);
566 EXPECT_EQ(0, adapter_observer_.num_device_added());
567 EXPECT_EQ(0, adapter_observer_.num_device_removed());
568 EXPECT_EQ(1, adapter_observer_.num_device_changed());
569
570 // Change a service
571 audio_state->name = kTestAudioSdpName2;
572 adapter_observer_.ResetCounters();
573 adapter_win_->DevicesPolled(devices);
574 EXPECT_EQ(0, adapter_observer_.num_device_added());
575 EXPECT_EQ(0, adapter_observer_.num_device_removed());
576 EXPECT_EQ(1, adapter_observer_.num_device_changed());
577
578 // Remove a service
579 laptop_state->service_record_states.clear();
580 adapter_observer_.ResetCounters();
581 adapter_win_->DevicesPolled(devices);
582 EXPECT_EQ(0, adapter_observer_.num_device_added());
583 EXPECT_EQ(0, adapter_observer_.num_device_removed());
584 EXPECT_EQ(1, adapter_observer_.num_device_changed());
507 } 585 }
508 586
509 } // namespace device 587 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698