OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/message_loop.h" | 6 #include "base/message_loop.h" |
7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
8 #include "chromeos/chromeos_switches.h" | 8 #include "chromeos/chromeos_switches.h" |
9 #include "chromeos/dbus/fake_bluetooth_adapter_client.h" | 9 #include "chromeos/dbus/fake_bluetooth_adapter_client.h" |
10 #include "chromeos/dbus/fake_bluetooth_device_client.h" | 10 #include "chromeos/dbus/fake_bluetooth_device_client.h" |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 }; | 121 }; |
122 | 122 |
123 class TestPairingDelegate : public BluetoothDevice::PairingDelegate { | 123 class TestPairingDelegate : public BluetoothDevice::PairingDelegate { |
124 public: | 124 public: |
125 TestPairingDelegate() | 125 TestPairingDelegate() |
126 : call_count_(0), | 126 : call_count_(0), |
127 request_pincode_count_(0), | 127 request_pincode_count_(0), |
128 request_passkey_count_(0), | 128 request_passkey_count_(0), |
129 display_pincode_count_(0), | 129 display_pincode_count_(0), |
130 display_passkey_count_(0), | 130 display_passkey_count_(0), |
| 131 keys_entered_count_(0), |
131 confirm_passkey_count_(0), | 132 confirm_passkey_count_(0), |
132 dismiss_count_(0) {} | 133 dismiss_count_(0), |
| 134 last_passkey_(9999999U), |
| 135 last_entered_(999U) {} |
133 virtual ~TestPairingDelegate() {} | 136 virtual ~TestPairingDelegate() {} |
134 | 137 |
135 void RequestPinCode(BluetoothDevice* device) OVERRIDE { | 138 void RequestPinCode(BluetoothDevice* device) OVERRIDE { |
136 ++call_count_; | 139 ++call_count_; |
137 ++request_pincode_count_; | 140 ++request_pincode_count_; |
138 QuitMessageLoop(); | 141 QuitMessageLoop(); |
139 } | 142 } |
140 | 143 |
141 void RequestPasskey(BluetoothDevice* device) OVERRIDE { | 144 void RequestPasskey(BluetoothDevice* device) OVERRIDE { |
142 ++call_count_; | 145 ++call_count_; |
(...skipping 10 matching lines...) Expand all Loading... |
153 } | 156 } |
154 | 157 |
155 void DisplayPasskey(BluetoothDevice* device, | 158 void DisplayPasskey(BluetoothDevice* device, |
156 uint32 passkey) OVERRIDE { | 159 uint32 passkey) OVERRIDE { |
157 ++call_count_; | 160 ++call_count_; |
158 ++display_passkey_count_; | 161 ++display_passkey_count_; |
159 last_passkey_ = passkey; | 162 last_passkey_ = passkey; |
160 QuitMessageLoop(); | 163 QuitMessageLoop(); |
161 } | 164 } |
162 | 165 |
| 166 void KeysEntered(BluetoothDevice* device, |
| 167 uint32 entered) OVERRIDE { |
| 168 ++call_count_; |
| 169 ++keys_entered_count_; |
| 170 last_entered_ = entered; |
| 171 QuitMessageLoop(); |
| 172 } |
| 173 |
163 void ConfirmPasskey(BluetoothDevice* device, | 174 void ConfirmPasskey(BluetoothDevice* device, |
164 uint32 passkey) OVERRIDE { | 175 uint32 passkey) OVERRIDE { |
165 ++call_count_; | 176 ++call_count_; |
166 ++confirm_passkey_count_; | 177 ++confirm_passkey_count_; |
167 last_passkey_ = passkey; | 178 last_passkey_ = passkey; |
168 QuitMessageLoop(); | 179 QuitMessageLoop(); |
169 } | 180 } |
170 | 181 |
171 void DismissDisplayOrConfirm() OVERRIDE { | 182 void DismissDisplayOrConfirm() OVERRIDE { |
172 ++call_count_; | 183 ++call_count_; |
173 ++dismiss_count_; | 184 ++dismiss_count_; |
174 QuitMessageLoop(); | 185 QuitMessageLoop(); |
175 } | 186 } |
176 | 187 |
177 int call_count_; | 188 int call_count_; |
178 int request_pincode_count_; | 189 int request_pincode_count_; |
179 int request_passkey_count_; | 190 int request_passkey_count_; |
180 int display_pincode_count_; | 191 int display_pincode_count_; |
181 int display_passkey_count_; | 192 int display_passkey_count_; |
| 193 int keys_entered_count_; |
182 int confirm_passkey_count_; | 194 int confirm_passkey_count_; |
183 int dismiss_count_; | 195 int dismiss_count_; |
184 uint32 last_passkey_; | 196 uint32 last_passkey_; |
| 197 uint32 last_entered_; |
185 std::string last_pincode_; | 198 std::string last_pincode_; |
186 | 199 |
187 private: | 200 private: |
188 // Some tests use a message loop since background processing is simulated; | 201 // Some tests use a message loop since background processing is simulated; |
189 // break out of those loops. | 202 // break out of those loops. |
190 void QuitMessageLoop() { | 203 void QuitMessageLoop() { |
191 if (MessageLoop::current() && MessageLoop::current()->is_running()) | 204 if (MessageLoop::current() && MessageLoop::current()->is_running()) |
192 MessageLoop::current()->Quit(); | 205 MessageLoop::current()->Quit(); |
193 } | 206 } |
194 }; | 207 }; |
(...skipping 1037 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1232 // One change for connected, and one for paired. | 1245 // One change for connected, and one for paired. |
1233 EXPECT_EQ(2, observer.device_changed_count_); | 1246 EXPECT_EQ(2, observer.device_changed_count_); |
1234 EXPECT_EQ(device, observer.last_device_); | 1247 EXPECT_EQ(device, observer.last_device_); |
1235 | 1248 |
1236 EXPECT_TRUE(device->IsConnected()); | 1249 EXPECT_TRUE(device->IsConnected()); |
1237 EXPECT_FALSE(device->IsConnecting()); | 1250 EXPECT_FALSE(device->IsConnecting()); |
1238 | 1251 |
1239 EXPECT_TRUE(device->IsPaired()); | 1252 EXPECT_TRUE(device->IsPaired()); |
1240 | 1253 |
1241 // Pairing dialog should be dismissed | 1254 // Pairing dialog should be dismissed |
1242 EXPECT_EQ(2, pairing_delegate.call_count_); | |
1243 EXPECT_EQ(1, pairing_delegate.dismiss_count_); | 1255 EXPECT_EQ(1, pairing_delegate.dismiss_count_); |
1244 | 1256 |
1245 // Make sure the trusted property has been set to true. | 1257 // Make sure the trusted property has been set to true. |
1246 FakeBluetoothDeviceClient::Properties* properties = | 1258 FakeBluetoothDeviceClient::Properties* properties = |
1247 fake_bluetooth_device_client_->GetProperties( | 1259 fake_bluetooth_device_client_->GetProperties( |
1248 dbus::ObjectPath(FakeBluetoothDeviceClient::kAppleKeyboardPath)); | 1260 dbus::ObjectPath(FakeBluetoothDeviceClient::kAppleKeyboardPath)); |
1249 EXPECT_TRUE(properties->trusted.value()); | 1261 EXPECT_TRUE(properties->trusted.value()); |
1250 } | 1262 } |
1251 | 1263 |
1252 TEST_F(BluetoothExperimentalChromeOSTest, PairMotorolaKeyboard) { | 1264 TEST_F(BluetoothExperimentalChromeOSTest, PairMotorolaKeyboard) { |
(...skipping 14 matching lines...) Expand all Loading... |
1267 adapter_->AddObserver(&observer); | 1279 adapter_->AddObserver(&observer); |
1268 | 1280 |
1269 TestPairingDelegate pairing_delegate; | 1281 TestPairingDelegate pairing_delegate; |
1270 device->Connect( | 1282 device->Connect( |
1271 &pairing_delegate, | 1283 &pairing_delegate, |
1272 base::Bind(&BluetoothExperimentalChromeOSTest::Callback, | 1284 base::Bind(&BluetoothExperimentalChromeOSTest::Callback, |
1273 base::Unretained(this)), | 1285 base::Unretained(this)), |
1274 base::Bind(&BluetoothExperimentalChromeOSTest::ConnectErrorCallback, | 1286 base::Bind(&BluetoothExperimentalChromeOSTest::ConnectErrorCallback, |
1275 base::Unretained(this))); | 1287 base::Unretained(this))); |
1276 | 1288 |
1277 EXPECT_EQ(1, pairing_delegate.call_count_); | 1289 // One call for DisplayPasskey() and one for KeysEntered(). |
| 1290 EXPECT_EQ(2, pairing_delegate.call_count_); |
1278 EXPECT_EQ(1, pairing_delegate.display_passkey_count_); | 1291 EXPECT_EQ(1, pairing_delegate.display_passkey_count_); |
1279 EXPECT_EQ(123456U, pairing_delegate.last_passkey_); | 1292 EXPECT_EQ(123456U, pairing_delegate.last_passkey_); |
| 1293 EXPECT_EQ(1, pairing_delegate.keys_entered_count_); |
| 1294 EXPECT_EQ(0U, pairing_delegate.last_entered_); |
| 1295 |
1280 EXPECT_TRUE(device->IsConnecting()); | 1296 EXPECT_TRUE(device->IsConnecting()); |
1281 | 1297 |
1282 // TODO(keybuk): verify we get typing notifications | 1298 // One call to KeysEntered() for each key, including [enter]. |
| 1299 for(int i = 1; i <= 7; ++i) { |
| 1300 message_loop.Run(); |
| 1301 |
| 1302 EXPECT_EQ(2 + i, pairing_delegate.call_count_); |
| 1303 EXPECT_EQ(1 + i, pairing_delegate.keys_entered_count_); |
| 1304 EXPECT_EQ(static_cast<uint32_t>(i), pairing_delegate.last_entered_); |
| 1305 } |
1283 | 1306 |
1284 message_loop.Run(); | 1307 message_loop.Run(); |
1285 | 1308 |
| 1309 // 8 KeysEntered notifications (0 to 7, inclusive). Two aditional calls for |
| 1310 // DisplayPasskey() and DismissDisplayOrConfirm(). |
| 1311 EXPECT_EQ(10, pairing_delegate.call_count_); |
| 1312 EXPECT_EQ(8, pairing_delegate.keys_entered_count_); |
| 1313 EXPECT_EQ(7U, pairing_delegate.last_entered_); |
| 1314 |
1286 EXPECT_EQ(1, callback_count_); | 1315 EXPECT_EQ(1, callback_count_); |
1287 EXPECT_EQ(0, error_callback_count_); | 1316 EXPECT_EQ(0, error_callback_count_); |
1288 | 1317 |
1289 // One change for connected, and one for paired. | 1318 // One change for connected, and one for paired. |
1290 EXPECT_EQ(2, observer.device_changed_count_); | 1319 EXPECT_EQ(2, observer.device_changed_count_); |
1291 EXPECT_EQ(device, observer.last_device_); | 1320 EXPECT_EQ(device, observer.last_device_); |
1292 | 1321 |
1293 EXPECT_TRUE(device->IsConnected()); | 1322 EXPECT_TRUE(device->IsConnected()); |
1294 EXPECT_FALSE(device->IsConnecting()); | 1323 EXPECT_FALSE(device->IsConnecting()); |
1295 | 1324 |
1296 EXPECT_TRUE(device->IsPaired()); | 1325 EXPECT_TRUE(device->IsPaired()); |
1297 | 1326 |
1298 // Pairing dialog should be dismissed | 1327 // Pairing dialog should be dismissed |
1299 EXPECT_EQ(2, pairing_delegate.call_count_); | |
1300 EXPECT_EQ(1, pairing_delegate.dismiss_count_); | 1328 EXPECT_EQ(1, pairing_delegate.dismiss_count_); |
1301 | 1329 |
1302 // Make sure the trusted property has been set to true. | 1330 // Make sure the trusted property has been set to true. |
1303 FakeBluetoothDeviceClient::Properties* properties = | 1331 FakeBluetoothDeviceClient::Properties* properties = |
1304 fake_bluetooth_device_client_->GetProperties( | 1332 fake_bluetooth_device_client_->GetProperties( |
1305 dbus::ObjectPath(FakeBluetoothDeviceClient::kMotorolaKeyboardPath)); | 1333 dbus::ObjectPath(FakeBluetoothDeviceClient::kMotorolaKeyboardPath)); |
1306 EXPECT_TRUE(properties->trusted.value()); | 1334 EXPECT_TRUE(properties->trusted.value()); |
1307 } | 1335 } |
1308 | 1336 |
1309 TEST_F(BluetoothExperimentalChromeOSTest, PairSonyHeadphones) { | 1337 TEST_F(BluetoothExperimentalChromeOSTest, PairSonyHeadphones) { |
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1895 EXPECT_FALSE(device->IsConnected()); | 1923 EXPECT_FALSE(device->IsConnected()); |
1896 EXPECT_FALSE(device->IsConnecting()); | 1924 EXPECT_FALSE(device->IsConnecting()); |
1897 EXPECT_FALSE(device->IsPaired()); | 1925 EXPECT_FALSE(device->IsPaired()); |
1898 | 1926 |
1899 // Pairing dialog should be dismissed | 1927 // Pairing dialog should be dismissed |
1900 EXPECT_EQ(1, pairing_delegate.call_count_); | 1928 EXPECT_EQ(1, pairing_delegate.call_count_); |
1901 EXPECT_EQ(1, pairing_delegate.dismiss_count_); | 1929 EXPECT_EQ(1, pairing_delegate.dismiss_count_); |
1902 } | 1930 } |
1903 | 1931 |
1904 } // namespace chromeos | 1932 } // namespace chromeos |
OLD | NEW |