| 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_interface.h" |
| 8 #include "chrome/browser/chromeos/bluetooth/test/mock_bluetooth_adapter.h" | 8 #include "chrome/browser/chromeos/bluetooth/test/mock_bluetooth_adapter_dbus.h" |
| 9 #include "chrome/browser/chromeos/bluetooth/test/mock_bluetooth_device.h" | 9 #include "chrome/browser/chromeos/bluetooth/test/mock_bluetooth_device_dbus.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 |
| 22 using chromeos::BluetoothAdapterDBus; |
| 21 using extensions::Extension; | 23 using extensions::Extension; |
| 22 | 24 |
| 23 namespace utils = extension_function_test_utils; | 25 namespace utils = extension_function_test_utils; |
| 24 namespace api = extensions::api; | 26 namespace api = extensions::api; |
| 25 | 27 |
| 26 namespace { | 28 namespace { |
| 27 | 29 |
| 28 static const char* kAdapterAddress = "A1:A2:A3:A4:A5:A6"; | 30 static const char* kAdapterAddress = "A1:A2:A3:A4:A5:A6"; |
| 29 static const char* kName = "whatsinaname"; | 31 static const char* kName = "whatsinaname"; |
| 30 | 32 |
| 31 class BluetoothApiTest : public PlatformAppApiTest { | 33 class BluetoothApiTest : public PlatformAppApiTest { |
| 32 public: | 34 public: |
| 33 BluetoothApiTest() : empty_extension_(utils::CreateEmptyExtension()) {} | 35 BluetoothApiTest() : empty_extension_(utils::CreateEmptyExtension()) {} |
| 34 | 36 |
| 35 virtual void SetUpOnMainThread() OVERRIDE { | 37 virtual void SetUpOnMainThread() OVERRIDE { |
| 36 // The browser will clean this up when it is torn down | 38 // The browser will clean this up when it is torn down |
| 37 mock_adapter_ = new testing::StrictMock<chromeos::MockBluetoothAdapter>( | 39 mock_adapter_ = |
| 38 kAdapterAddress, kName); | 40 new testing::StrictMock<chromeos::MockBluetoothAdapterDBus>( |
| 41 kAdapterAddress, kName); |
| 39 event_router()->SetAdapterForTest(mock_adapter_); | 42 event_router()->SetAdapterForTest(mock_adapter_); |
| 40 | 43 |
| 41 device1_.reset(new testing::NiceMock<chromeos::MockBluetoothDevice>( | 44 device1_.reset(new testing::NiceMock<chromeos::MockBluetoothDeviceDBus>( |
| 42 mock_adapter_, "d1", "11:12:13:14:15:16", | 45 mock_adapter_, "d1", "11:12:13:14:15:16", |
| 43 true /* paired */, false /* bonded */, true /* connected */)); | 46 true /* paired */, false /* bonded */, true /* connected */)); |
| 44 device2_.reset(new testing::NiceMock<chromeos::MockBluetoothDevice>( | 47 device2_.reset(new testing::NiceMock<chromeos::MockBluetoothDeviceDBus>( |
| 45 mock_adapter_, "d2", "21:22:23:24:25:26", | 48 mock_adapter_, "d2", "21:22:23:24:25:26", |
| 46 false /* paired */, true /* bonded */, false /* connected */)); | 49 false /* paired */, true /* bonded */, false /* connected */)); |
| 47 } | 50 } |
| 48 | 51 |
| 49 void expectBooleanResult(bool expected, | 52 void expectBooleanResult(bool expected, |
| 50 UIThreadExtensionFunction* function) { | 53 UIThreadExtensionFunction* function) { |
| 51 scoped_ptr<base::Value> result( | 54 scoped_ptr<base::Value> result( |
| 52 utils::RunFunctionAndReturnSingleResult(function, "[]", browser())); | 55 utils::RunFunctionAndReturnSingleResult(function, "[]", browser())); |
| 53 ASSERT_TRUE(result.get() != NULL); | 56 ASSERT_TRUE(result.get() != NULL); |
| 54 ASSERT_EQ(base::Value::TYPE_BOOLEAN, result->GetType()); | 57 ASSERT_EQ(base::Value::TYPE_BOOLEAN, result->GetType()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 69 } | 72 } |
| 70 | 73 |
| 71 template <class T> | 74 template <class T> |
| 72 T* setupFunction(T* function) { | 75 T* setupFunction(T* function) { |
| 73 function->set_extension(empty_extension_.get()); | 76 function->set_extension(empty_extension_.get()); |
| 74 function->set_has_callback(true); | 77 function->set_has_callback(true); |
| 75 return function; | 78 return function; |
| 76 } | 79 } |
| 77 | 80 |
| 78 protected: | 81 protected: |
| 79 testing::StrictMock<chromeos::MockBluetoothAdapter>* mock_adapter_; | 82 testing::StrictMock<chromeos::MockBluetoothAdapterDBus>* mock_adapter_; |
| 80 scoped_ptr<testing::NiceMock<chromeos::MockBluetoothDevice> > device1_; | 83 scoped_ptr<testing::NiceMock<chromeos::MockBluetoothDeviceDBus> > device1_; |
| 81 scoped_ptr<testing::NiceMock<chromeos::MockBluetoothDevice> > device2_; | 84 scoped_ptr<testing::NiceMock<chromeos::MockBluetoothDeviceDBus> > device2_; |
| 82 | 85 |
| 83 chromeos::ExtensionBluetoothEventRouter* event_router() { | 86 chromeos::ExtensionBluetoothEventRouter* event_router() { |
| 84 return browser()->profile()->GetExtensionService()-> | 87 return browser()->profile()->GetExtensionService()-> |
| 85 bluetooth_event_router(); | 88 bluetooth_event_router(); |
| 86 } | 89 } |
| 87 | 90 |
| 88 private: | 91 private: |
| 89 scoped_refptr<Extension> empty_extension_; | 92 scoped_refptr<Extension> empty_extension_; |
| 90 }; | 93 }; |
| 91 | 94 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 102 chromeos::kBluetoothOutOfBandPairingDataSize); | 105 chromeos::kBluetoothOutOfBandPairingDataSize); |
| 103 return data; | 106 return data; |
| 104 } | 107 } |
| 105 | 108 |
| 106 static bool CallClosure(const base::Closure& callback) { | 109 static bool CallClosure(const base::Closure& callback) { |
| 107 callback.Run(); | 110 callback.Run(); |
| 108 return true; | 111 return true; |
| 109 } | 112 } |
| 110 | 113 |
| 111 static bool CallOutOfBandPairingDataCallback( | 114 static bool CallOutOfBandPairingDataCallback( |
| 112 const chromeos::BluetoothAdapter::BluetoothOutOfBandPairingDataCallback& | 115 const BluetoothAdapterDBus::BluetoothOutOfBandPairingDataCallback& |
| 113 callback) { | 116 callback) { |
| 114 callback.Run(GetOutOfBandPairingData()); | 117 callback.Run(GetOutOfBandPairingData()); |
| 115 return true; | 118 return true; |
| 116 } | 119 } |
| 117 | 120 |
| 118 } // namespace | 121 } // namespace |
| 119 | 122 |
| 120 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, IsAvailable) { | 123 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, IsAvailable) { |
| 121 EXPECT_CALL(*mock_adapter_, IsPresent()) | 124 EXPECT_CALL(*mock_adapter_, IsPresent()) |
| 122 .WillOnce(testing::Return(false)); | 125 .WillOnce(testing::Return(false)); |
| 123 | 126 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 expectStringResult(kAdapterAddress, get_address); | 160 expectStringResult(kAdapterAddress, get_address); |
| 158 } | 161 } |
| 159 | 162 |
| 160 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetName) { | 163 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetName) { |
| 161 scoped_refptr<api::BluetoothGetNameFunction> get_name; | 164 scoped_refptr<api::BluetoothGetNameFunction> get_name; |
| 162 get_name = setupFunction(new api::BluetoothGetNameFunction); | 165 get_name = setupFunction(new api::BluetoothGetNameFunction); |
| 163 expectStringResult(kName, get_name); | 166 expectStringResult(kName, get_name); |
| 164 } | 167 } |
| 165 | 168 |
| 166 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetDevices) { | 169 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetDevices) { |
| 167 chromeos::BluetoothAdapter::ConstDeviceList devices; | 170 chromeos::BluetoothAdapterDBus::ConstDeviceList devices; |
| 168 devices.push_back(device1_.get()); | 171 devices.push_back(device1_.get()); |
| 169 devices.push_back(device2_.get()); | 172 devices.push_back(device2_.get()); |
| 170 | 173 |
| 171 EXPECT_CALL(*device1_, ProvidesServiceWithUUID(kCanonicalUuid)) | 174 EXPECT_CALL(*device1_, ProvidesServiceWithUUID(kCanonicalUuid)) |
| 172 .WillOnce(testing::Return(false)); | 175 .WillOnce(testing::Return(false)); |
| 173 EXPECT_CALL(*device2_, ProvidesServiceWithUUID(kCanonicalUuid)) | 176 EXPECT_CALL(*device2_, ProvidesServiceWithUUID(kCanonicalUuid)) |
| 174 .WillOnce(testing::Return(true)); | 177 .WillOnce(testing::Return(true)); |
| 175 | 178 |
| 176 EXPECT_CALL(*mock_adapter_, GetDevices()) | 179 EXPECT_CALL(*mock_adapter_, GetDevices()) |
| 177 .WillOnce(testing::Return(devices)); | 180 .WillOnce(testing::Return(devices)); |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 event_router()->AdapterPoweredChanged(mock_adapter_, false); | 439 event_router()->AdapterPoweredChanged(mock_adapter_, false); |
| 437 event_router()->AdapterPresentChanged(mock_adapter_, true); | 440 event_router()->AdapterPresentChanged(mock_adapter_, true); |
| 438 event_router()->AdapterPresentChanged(mock_adapter_, false); | 441 event_router()->AdapterPresentChanged(mock_adapter_, false); |
| 439 event_router()->AdapterDiscoveringChanged(mock_adapter_, true); | 442 event_router()->AdapterDiscoveringChanged(mock_adapter_, true); |
| 440 event_router()->AdapterDiscoveringChanged(mock_adapter_, false); | 443 event_router()->AdapterDiscoveringChanged(mock_adapter_, false); |
| 441 | 444 |
| 442 listener.Reply("go"); | 445 listener.Reply("go"); |
| 443 | 446 |
| 444 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 447 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 445 } | 448 } |
| OLD | NEW |