Index: chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc |
diff --git a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc |
index 7cd3320dc3ca8f083ccd22b217aa51f813313bf3..28ccbaad4f9d8ae866de1df1c7376bf426485213 100644 |
--- a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc |
+++ b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc |
@@ -26,7 +26,9 @@ using device::MockBluetoothGattService; |
using extensions::BluetoothLowEnergyEventRouter; |
using testing::Invoke; |
using testing::Return; |
+using testing::ReturnRef; |
using testing::ReturnRefOfCopy; |
+using testing::SaveArg; |
using testing::_; |
namespace utils = extension_function_test_utils; |
@@ -178,6 +180,18 @@ void ReadValueErrorCallback( |
error_callback.Run(); |
} |
+void WriteValueSuccessCallback(const std::vector<uint8>& value, |
+ const base::Closure& callback, |
+ const base::Closure& error_callback) { |
+ callback.Run(); |
+} |
+ |
+void WriteValueErrorCallback(const std::vector<uint8>& value, |
+ const base::Closure& callback, |
+ const base::Closure& error_callback) { |
+ error_callback.Run(); |
+} |
+ |
IN_PROC_BROWSER_TEST_F(BluetoothLowEnergyApiTest, GetServices) { |
ResultCatcher catcher; |
catcher.RestrictToProfile(browser()->profile()); |
@@ -552,4 +566,46 @@ IN_PROC_BROWSER_TEST_F(BluetoothLowEnergyApiTest, ReadCharacteristicValue) { |
event_router()->DeviceRemoved(mock_adapter_, device_.get()); |
} |
+IN_PROC_BROWSER_TEST_F(BluetoothLowEnergyApiTest, WriteCharacteristicValue) { |
+ ResultCatcher catcher; |
+ catcher.RestrictToProfile(browser()->profile()); |
+ |
+ event_router()->DeviceAdded(mock_adapter_, device_.get()); |
+ event_router()->GattServiceAdded(device_.get(), service0_.get()); |
+ event_router()->GattCharacteristicAdded(service0_.get(), chrc0_.get()); |
+ |
+ EXPECT_CALL(*mock_adapter_, GetDevice(_)) |
+ .Times(3) |
+ .WillRepeatedly(Return(device_.get())); |
+ |
+ EXPECT_CALL(*device_, GetGattService(kTestServiceId0)) |
+ .Times(3) |
+ .WillRepeatedly(Return(service0_.get())); |
+ |
+ EXPECT_CALL(*service0_, GetCharacteristic(kTestCharacteristicId0)) |
+ .Times(3) |
+ .WillRepeatedly(Return(chrc0_.get())); |
+ |
+ std::vector<uint8> write_value; |
+ EXPECT_CALL(*chrc0_, WriteRemoteCharacteristic(_, _, _)) |
+ .Times(2) |
+ .WillOnce(Invoke(&WriteValueErrorCallback)) |
+ .WillOnce( |
+ DoAll(SaveArg<0>(&write_value), Invoke(&WriteValueSuccessCallback))); |
+ EXPECT_CALL(*chrc0_, GetValue()).Times(1).WillOnce(ReturnRef(write_value)); |
+ |
+ ExtensionTestMessageListener listener("ready", true); |
+ ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII( |
+ "bluetooth_low_energy/write_characteristic_value"))); |
+ EXPECT_TRUE(listener.WaitUntilSatisfied()); |
+ |
+ listener.Reply("go"); |
+ |
+ EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
+ |
+ event_router()->GattCharacteristicRemoved(service0_.get(), chrc0_.get()); |
+ event_router()->GattServiceRemoved(device_.get(), service0_.get()); |
+ event_router()->DeviceRemoved(mock_adapter_, device_.get()); |
+} |
+ |
} // namespace |