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 "chrome/test/base/ui_test_utils.h" | 18 #include "chrome/test/base/ui_test_utils.h" |
19 #include "testing/gmock/include/gmock/gmock.h" | 19 #include "testing/gmock/include/gmock/gmock.h" |
20 | 20 |
21 using extensions::Extension; | 21 using extensions::Extension; |
22 | 22 |
23 namespace utils = extension_function_test_utils; | 23 namespace utils = extension_function_test_utils; |
24 namespace api = extensions::api; | 24 namespace api = extensions::api; |
25 | 25 |
26 namespace { | 26 namespace { |
27 | 27 |
| 28 static const char* kAdapterAddress = "A1:A2:A3:A4:A5:A6"; |
| 29 static const char* kName = "whatsinaname"; |
| 30 |
28 class BluetoothApiTest : public PlatformAppApiTest { | 31 class BluetoothApiTest : public PlatformAppApiTest { |
29 public: | 32 public: |
30 BluetoothApiTest() : empty_extension_(utils::CreateEmptyExtension()) {} | 33 BluetoothApiTest() : empty_extension_(utils::CreateEmptyExtension()) {} |
31 | 34 |
32 virtual void SetUpOnMainThread() OVERRIDE { | 35 virtual void SetUpOnMainThread() OVERRIDE { |
33 // The browser will clean this up when it is torn down | 36 // The browser will clean this up when it is torn down |
34 mock_adapter_ = new testing::StrictMock<chromeos::MockBluetoothAdapter>; | 37 mock_adapter_ = new testing::StrictMock<chromeos::MockBluetoothAdapter>( |
| 38 kAdapterAddress, kName); |
35 event_router()->SetAdapterForTest(mock_adapter_); | 39 event_router()->SetAdapterForTest(mock_adapter_); |
36 | 40 |
37 device1_.reset(new testing::NiceMock<chromeos::MockBluetoothDevice>( | 41 device1_.reset(new testing::NiceMock<chromeos::MockBluetoothDevice>( |
38 mock_adapter_, "d1", "11:12:13:14:15:16", | 42 mock_adapter_, "d1", "11:12:13:14:15:16", |
39 true /* paired */, false /* bonded */, true /* connected */)); | 43 true /* paired */, false /* bonded */, true /* connected */)); |
40 device2_.reset(new testing::NiceMock<chromeos::MockBluetoothDevice>( | 44 device2_.reset(new testing::NiceMock<chromeos::MockBluetoothDevice>( |
41 mock_adapter_, "d2", "21:22:23:24:25:26", | 45 mock_adapter_, "d2", "21:22:23:24:25:26", |
42 false /* paired */, true /* bonded */, false /* connected */)); | 46 false /* paired */, true /* bonded */, false /* connected */)); |
43 } | 47 } |
44 | 48 |
45 void expectBooleanResult(bool expected, | 49 void expectBooleanResult(bool expected, |
46 UIThreadExtensionFunction* function, | 50 UIThreadExtensionFunction* function) { |
47 const std::string& args) { | |
48 scoped_ptr<base::Value> result( | 51 scoped_ptr<base::Value> result( |
49 utils::RunFunctionAndReturnSingleResult(function, args, browser())); | 52 utils::RunFunctionAndReturnSingleResult(function, "[]", browser())); |
50 ASSERT_TRUE(result.get() != NULL); | 53 ASSERT_TRUE(result.get() != NULL); |
51 ASSERT_EQ(base::Value::TYPE_BOOLEAN, result->GetType()); | 54 ASSERT_EQ(base::Value::TYPE_BOOLEAN, result->GetType()); |
52 bool boolean_value; | 55 bool boolean_value; |
53 result->GetAsBoolean(&boolean_value); | 56 result->GetAsBoolean(&boolean_value); |
54 EXPECT_EQ(expected, boolean_value); | 57 EXPECT_EQ(expected, boolean_value); |
55 } | 58 } |
56 | 59 |
| 60 void expectStringResult(const std::string& expected, |
| 61 UIThreadExtensionFunction* function) { |
| 62 scoped_ptr<base::Value> result( |
| 63 utils::RunFunctionAndReturnSingleResult(function, "[]", browser())); |
| 64 ASSERT_TRUE(result.get() != NULL); |
| 65 ASSERT_EQ(base::Value::TYPE_STRING, result->GetType()); |
| 66 std::string string_value; |
| 67 result->GetAsString(&string_value); |
| 68 EXPECT_EQ(expected, string_value); |
| 69 } |
| 70 |
57 template <class T> | 71 template <class T> |
58 T* setupFunction(T* function) { | 72 T* setupFunction(T* function) { |
59 function->set_extension(empty_extension_.get()); | 73 function->set_extension(empty_extension_.get()); |
60 function->set_has_callback(true); | 74 function->set_has_callback(true); |
61 return function; | 75 return function; |
62 } | 76 } |
63 | 77 |
64 protected: | 78 protected: |
65 testing::StrictMock<chromeos::MockBluetoothAdapter>* mock_adapter_; | 79 testing::StrictMock<chromeos::MockBluetoothAdapter>* mock_adapter_; |
66 scoped_ptr<testing::NiceMock<chromeos::MockBluetoothDevice> > device1_; | 80 scoped_ptr<testing::NiceMock<chromeos::MockBluetoothDevice> > device1_; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 | 117 |
104 } // namespace | 118 } // namespace |
105 | 119 |
106 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, IsAvailable) { | 120 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, IsAvailable) { |
107 EXPECT_CALL(*mock_adapter_, IsPresent()) | 121 EXPECT_CALL(*mock_adapter_, IsPresent()) |
108 .WillOnce(testing::Return(false)); | 122 .WillOnce(testing::Return(false)); |
109 | 123 |
110 scoped_refptr<api::BluetoothIsAvailableFunction> is_available; | 124 scoped_refptr<api::BluetoothIsAvailableFunction> is_available; |
111 | 125 |
112 is_available = setupFunction(new api::BluetoothIsAvailableFunction); | 126 is_available = setupFunction(new api::BluetoothIsAvailableFunction); |
113 expectBooleanResult(false, is_available, "[]"); | 127 expectBooleanResult(false, is_available); |
114 | 128 |
115 testing::Mock::VerifyAndClearExpectations(mock_adapter_); | 129 testing::Mock::VerifyAndClearExpectations(mock_adapter_); |
116 EXPECT_CALL(*mock_adapter_, IsPresent()) | 130 EXPECT_CALL(*mock_adapter_, IsPresent()) |
117 .WillOnce(testing::Return(true)); | 131 .WillOnce(testing::Return(true)); |
118 | 132 |
119 is_available = setupFunction(new api::BluetoothIsAvailableFunction); | 133 is_available = setupFunction(new api::BluetoothIsAvailableFunction); |
120 expectBooleanResult(true, is_available, "[]"); | 134 expectBooleanResult(true, is_available); |
121 } | 135 } |
122 | 136 |
123 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, IsPowered) { | 137 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, IsPowered) { |
124 EXPECT_CALL(*mock_adapter_, IsPowered()) | 138 EXPECT_CALL(*mock_adapter_, IsPowered()) |
125 .WillOnce(testing::Return(false)); | 139 .WillOnce(testing::Return(false)); |
126 | 140 |
127 scoped_refptr<api::BluetoothIsPoweredFunction> is_powered; | 141 scoped_refptr<api::BluetoothIsPoweredFunction> is_powered; |
128 | 142 |
129 is_powered = setupFunction(new api::BluetoothIsPoweredFunction); | 143 is_powered = setupFunction(new api::BluetoothIsPoweredFunction); |
130 expectBooleanResult(false, is_powered, "[]"); | 144 expectBooleanResult(false, is_powered); |
131 | 145 |
132 testing::Mock::VerifyAndClearExpectations(mock_adapter_); | 146 testing::Mock::VerifyAndClearExpectations(mock_adapter_); |
133 EXPECT_CALL(*mock_adapter_, IsPowered()) | 147 EXPECT_CALL(*mock_adapter_, IsPowered()) |
134 .WillOnce(testing::Return(true)); | 148 .WillOnce(testing::Return(true)); |
135 | 149 |
136 is_powered = setupFunction(new api::BluetoothIsPoweredFunction); | 150 is_powered = setupFunction(new api::BluetoothIsPoweredFunction); |
137 expectBooleanResult(true, is_powered, "[]"); | 151 expectBooleanResult(true, is_powered); |
| 152 } |
| 153 |
| 154 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetAddress) { |
| 155 scoped_refptr<api::BluetoothGetAddressFunction> get_address; |
| 156 get_address = setupFunction(new api::BluetoothGetAddressFunction); |
| 157 expectStringResult(kAdapterAddress, get_address); |
| 158 } |
| 159 |
| 160 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetName) { |
| 161 scoped_refptr<api::BluetoothGetNameFunction> get_name; |
| 162 get_name = setupFunction(new api::BluetoothGetNameFunction); |
| 163 expectStringResult(kName, get_name); |
138 } | 164 } |
139 | 165 |
140 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetDevices) { | 166 IN_PROC_BROWSER_TEST_F(BluetoothApiTest, GetDevices) { |
141 chromeos::BluetoothAdapter::ConstDeviceList devices; | 167 chromeos::BluetoothAdapter::ConstDeviceList devices; |
142 devices.push_back(device1_.get()); | 168 devices.push_back(device1_.get()); |
143 devices.push_back(device2_.get()); | 169 devices.push_back(device2_.get()); |
144 | 170 |
145 EXPECT_CALL(*device1_, ProvidesServiceWithUUID(kCanonicalUuid)) | 171 EXPECT_CALL(*device1_, ProvidesServiceWithUUID(kCanonicalUuid)) |
146 .WillOnce(testing::Return(false)); | 172 .WillOnce(testing::Return(false)); |
147 EXPECT_CALL(*device2_, ProvidesServiceWithUUID(kCanonicalUuid)) | 173 EXPECT_CALL(*device2_, ProvidesServiceWithUUID(kCanonicalUuid)) |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 event_router()->AdapterPoweredChanged(mock_adapter_, false); | 436 event_router()->AdapterPoweredChanged(mock_adapter_, false); |
411 event_router()->AdapterPresentChanged(mock_adapter_, true); | 437 event_router()->AdapterPresentChanged(mock_adapter_, true); |
412 event_router()->AdapterPresentChanged(mock_adapter_, false); | 438 event_router()->AdapterPresentChanged(mock_adapter_, false); |
413 event_router()->AdapterDiscoveringChanged(mock_adapter_, true); | 439 event_router()->AdapterDiscoveringChanged(mock_adapter_, true); |
414 event_router()->AdapterDiscoveringChanged(mock_adapter_, false); | 440 event_router()->AdapterDiscoveringChanged(mock_adapter_, false); |
415 | 441 |
416 listener.Reply("go"); | 442 listener.Reply("go"); |
417 | 443 |
418 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 444 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
419 } | 445 } |
OLD | NEW |