| OLD | NEW |
| 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.h> | 5 #include <string.h> |
| 6 | 6 |
| 7 #include "chrome/browser/chromeos/bluetooth/bluetooth_adapter.h" | 7 #include "chrome/browser/chromeos/bluetooth/bluetooth_adapter.h" |
| 8 #include "chrome/browser/chromeos/bluetooth/test/mock_bluetooth_adapter.h" | 8 #include "chrome/browser/chromeos/bluetooth/test/mock_bluetooth_adapter.h" |
| 9 #include "chrome/browser/chromeos/bluetooth/test/mock_bluetooth_device.h" | 9 #include "chrome/browser/chromeos/bluetooth/test/mock_bluetooth_device.h" |
| 10 #include "chrome/browser/chromeos/extensions/bluetooth_event_router.h" | 10 #include "chrome/browser/chromeos/extensions/bluetooth_event_router.h" |
| 11 #include "chrome/browser/extensions/api/bluetooth/bluetooth_api.h" | 11 #include "chrome/browser/extensions/api/bluetooth/bluetooth_api.h" |
| 12 #include "chrome/browser/extensions/extension_apitest.h" | 12 #include "chrome/browser/extensions/extension_apitest.h" |
| 13 #include "chrome/browser/extensions/extension_function_test_utils.h" | 13 #include "chrome/browser/extensions/extension_function_test_utils.h" |
| 14 #include "chrome/browser/extensions/extension_service.h" | 14 #include "chrome/browser/extensions/extension_service.h" |
| 15 #include "chrome/browser/extensions/extension_test_message_listener.h" | 15 #include "chrome/browser/extensions/extension_test_message_listener.h" |
| 16 #include "chrome/browser/ui/browser.h" | 16 #include "chrome/browser/ui/browser.h" |
| 17 #include "chromeos/dbus/bluetooth_out_of_band_client.h" | 17 #include "chromeos/dbus/bluetooth_out_of_band_client.h" |
| 18 #include "chromeos/dbus/bluetooth_out_of_band_pairing_data.h" |
| 18 #include "chrome/test/base/ui_test_utils.h" | 19 #include "chrome/test/base/ui_test_utils.h" |
| 19 #include "testing/gmock/include/gmock/gmock.h" | 20 #include "testing/gmock/include/gmock/gmock.h" |
| 20 | 21 |
| 21 using extensions::Extension; | 22 using extensions::Extension; |
| 22 | 23 |
| 23 namespace utils = extension_function_test_utils; | 24 namespace utils = extension_function_test_utils; |
| 24 namespace api = extensions::api; | 25 namespace api = extensions::api; |
| 25 | 26 |
| 26 namespace { | 27 namespace { |
| 27 | 28 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 chromeos::kBluetoothOutOfBandPairingDataSize); | 102 chromeos::kBluetoothOutOfBandPairingDataSize); |
| 102 return data; | 103 return data; |
| 103 } | 104 } |
| 104 | 105 |
| 105 static bool CallClosure(const base::Closure& callback) { | 106 static bool CallClosure(const base::Closure& callback) { |
| 106 callback.Run(); | 107 callback.Run(); |
| 107 return true; | 108 return true; |
| 108 } | 109 } |
| 109 | 110 |
| 110 static void CallOutOfBandPairingDataCallback( | 111 static void CallOutOfBandPairingDataCallback( |
| 111 const chromeos::BluetoothAdapter::BluetoothOutOfBandPairingDataCallback& | 112 const chromeos::BluetoothAdapter::BluetoothOutOfBandPairingDataCallback& |
| 112 callback, | 113 callback, |
| 113 const chromeos::BluetoothAdapter::ErrorCallback& error_callback) { | 114 const chromeos::BluetoothAdapter::ErrorCallback& error_callback) { |
| 114 callback.Run(GetOutOfBandPairingData()); | 115 callback.Run(GetOutOfBandPairingData()); |
| 115 } | 116 } |
| 116 | 117 |
| 117 template <bool Value> | 118 template <bool Value> |
| 118 static void CallProvidesServiceCallback( | 119 static void CallProvidesServiceCallback( |
| 119 const std::string& name, | 120 const std::string& name, |
| 120 const chromeos::BluetoothDevice::ProvidesServiceCallback& callback) { | 121 const chromeos::BluetoothDevice::ProvidesServiceCallback& callback) { |
| 121 callback.Run(Value); | 122 callback.Run(Value); |
| 122 } | 123 } |
| 123 | 124 |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 387 EXPECT_CALL(*device1_, ProvidesServiceWithUUID(testing::_)) | 388 EXPECT_CALL(*device1_, ProvidesServiceWithUUID(testing::_)) |
| 388 .WillOnce(testing::Return(false)); | 389 .WillOnce(testing::Return(false)); |
| 389 EXPECT_CALL(*device1_, ProvidesServiceWithName(testing::_, testing::_)) | 390 EXPECT_CALL(*device1_, ProvidesServiceWithName(testing::_, testing::_)) |
| 390 .WillOnce(testing::Invoke(CallProvidesServiceCallback<true>)); | 391 .WillOnce(testing::Invoke(CallProvidesServiceCallback<true>)); |
| 391 | 392 |
| 392 EXPECT_CALL(*device2_, ProvidesServiceWithUUID(testing::_)) | 393 EXPECT_CALL(*device2_, ProvidesServiceWithUUID(testing::_)) |
| 393 .WillOnce(testing::Return(true)); | 394 .WillOnce(testing::Return(true)); |
| 394 EXPECT_CALL(*device2_, ProvidesServiceWithName(testing::_, testing::_)) | 395 EXPECT_CALL(*device2_, ProvidesServiceWithName(testing::_, testing::_)) |
| 395 .WillOnce(testing::Invoke(CallProvidesServiceCallback<false>)); | 396 .WillOnce(testing::Invoke(CallProvidesServiceCallback<false>)); |
| 396 | 397 |
| 397 EXPECT_CALL(*mock_adapter_, GetDevices()) | 398 EXPECT_CALL(testing::Const(*mock_adapter_), GetDevices()) |
| 398 .Times(3) | 399 .Times(3) |
| 399 .WillRepeatedly(testing::Return(devices)); | 400 .WillRepeatedly(testing::Return(devices)); |
| 400 | 401 |
| 401 // Load and wait for setup | 402 // Load and wait for setup |
| 402 ExtensionTestMessageListener listener("ready", true); | 403 ExtensionTestMessageListener listener("ready", true); |
| 403 const extensions::Extension* extension = | 404 const extensions::Extension* extension = |
| 404 LoadExtension(test_data_dir_.AppendASCII("bluetooth")); | 405 LoadExtension(test_data_dir_.AppendASCII("bluetooth")); |
| 405 GURL page_url = extension->GetResourceURL("test_getdevices.html"); | 406 GURL page_url = extension->GetResourceURL("test_getdevices.html"); |
| 406 ui_test_utils::NavigateToURL(browser(), page_url); | 407 ui_test_utils::NavigateToURL(browser(), page_url); |
| 407 EXPECT_TRUE(listener.WaitUntilSatisfied()); | 408 EXPECT_TRUE(listener.WaitUntilSatisfied()); |
| 408 | 409 |
| 409 listener.Reply("go"); | 410 listener.Reply("go"); |
| 410 | 411 |
| 411 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 412 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 412 } | 413 } |
| 413 | 414 |
| 414 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetDevicesConcurrently) { | 415 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetDevicesConcurrently) { |
| 415 ResultCatcher catcher; | 416 ResultCatcher catcher; |
| 416 catcher.RestrictToProfile(browser()->profile()); | 417 catcher.RestrictToProfile(browser()->profile()); |
| 417 | 418 |
| 418 chromeos::BluetoothAdapter::ConstDeviceList devices; | 419 chromeos::BluetoothAdapter::ConstDeviceList devices; |
| 419 devices.push_back(device1_.get()); | 420 devices.push_back(device1_.get()); |
| 420 | 421 |
| 421 // Save the callback to delay execution so that we can force the calls to | 422 // Save the callback to delay execution so that we can force the calls to |
| 422 // happen concurrently. This will be called after the listener is satisfied. | 423 // happen concurrently. This will be called after the listener is satisfied. |
| 423 chromeos::BluetoothDevice::ProvidesServiceCallback callback; | 424 chromeos::BluetoothDevice::ProvidesServiceCallback callback; |
| 424 EXPECT_CALL(*device1_, ProvidesServiceWithName(testing::_, testing::_)) | 425 EXPECT_CALL(*device1_, ProvidesServiceWithName(testing::_, testing::_)) |
| 425 .WillOnce(testing::SaveArg<1>(&callback)); | 426 .WillOnce(testing::SaveArg<1>(&callback)); |
| 426 | 427 |
| 427 EXPECT_CALL(*mock_adapter_, GetDevices()) | 428 EXPECT_CALL(testing::Const(*mock_adapter_), GetDevices()) |
| 428 .WillOnce(testing::Return(devices)); | 429 .WillOnce(testing::Return(devices)); |
| 429 | 430 |
| 430 // Load and wait for setup | 431 // Load and wait for setup |
| 431 ExtensionTestMessageListener listener("ready", true); | 432 ExtensionTestMessageListener listener("ready", true); |
| 432 const extensions::Extension* extension = | 433 const extensions::Extension* extension = |
| 433 LoadExtension(test_data_dir_.AppendASCII("bluetooth")); | 434 LoadExtension(test_data_dir_.AppendASCII("bluetooth")); |
| 434 GURL page_url = | 435 GURL page_url = |
| 435 extension->GetResourceURL("test_getdevices_concurrently.html"); | 436 extension->GetResourceURL("test_getdevices_concurrently.html"); |
| 436 ui_test_utils::NavigateToURL(browser(), page_url); | 437 ui_test_utils::NavigateToURL(browser(), page_url); |
| 437 EXPECT_TRUE(listener.WaitUntilSatisfied()); | 438 EXPECT_TRUE(listener.WaitUntilSatisfied()); |
| 438 | 439 |
| 439 callback.Run(false); | 440 callback.Run(false); |
| 440 listener.Reply("go"); | 441 listener.Reply("go"); |
| 441 | 442 |
| 442 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 443 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 443 } | 444 } |
| OLD | NEW |