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 <iostream> | 5 #include <iostream> |
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/bluetooth_adapter_dbus.h" | |
8 #include "chrome/browser/chromeos/bluetooth/test/mock_bluetooth_adapter.h" | 9 #include "chrome/browser/chromeos/bluetooth/test/mock_bluetooth_adapter.h" |
9 #include "chromeos/dbus/mock_bluetooth_adapter_client.h" | 10 #include "chromeos/dbus/mock_bluetooth_adapter_client.h" |
10 #include "chromeos/dbus/mock_bluetooth_manager_client.h" | 11 #include "chromeos/dbus/mock_bluetooth_manager_client.h" |
11 #include "chromeos/dbus/mock_dbus_thread_manager.h" | 12 #include "chromeos/dbus/mock_dbus_thread_manager.h" |
12 #include "dbus/object_path.h" | 13 #include "dbus/object_path.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
14 | 15 |
15 using ::testing::_; | 16 using ::testing::_; |
16 using ::testing::Return; | 17 using ::testing::Return; |
17 using ::testing::SaveArg; | 18 using ::testing::SaveArg; |
(...skipping 25 matching lines...) Expand all Loading... | |
43 }; | 44 }; |
44 | 45 |
45 TEST_F(BluetoothAdapterTest, DefaultAdapterNotPresent) { | 46 TEST_F(BluetoothAdapterTest, DefaultAdapterNotPresent) { |
46 // Create the default adapter instance; | 47 // Create the default adapter instance; |
47 // BluetoothManagerClient::DefaultAdapter will be called once, passing | 48 // BluetoothManagerClient::DefaultAdapter will be called once, passing |
48 // a callback to obtain the adapter path. | 49 // a callback to obtain the adapter path. |
49 BluetoothManagerClient::AdapterCallback adapter_callback; | 50 BluetoothManagerClient::AdapterCallback adapter_callback; |
50 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) | 51 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) |
51 .WillOnce(SaveArg<0>(&adapter_callback)); | 52 .WillOnce(SaveArg<0>(&adapter_callback)); |
52 | 53 |
53 scoped_refptr<BluetoothAdapter> adapter = BluetoothAdapter::DefaultAdapter(); | 54 scoped_refptr<BluetoothAdapter> adapter = |
55 BluetoothAdapterDBus::DefaultAdapter(); | |
54 | 56 |
55 // Call the adapter callback; make out it failed. | 57 // Call the adapter callback; make out it failed. |
56 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called. | 58 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called. |
57 MockBluetoothAdapter::Observer adapter_observer; | 59 MockBluetoothAdapter::Observer adapter_observer; |
58 adapter->AddObserver(&adapter_observer); | 60 adapter->AddObserver(&adapter_observer); |
59 | 61 |
60 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) | 62 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) |
61 .Times(0); | 63 .Times(0); |
62 | 64 |
63 adapter_callback.Run(dbus::ObjectPath(""), false); | 65 adapter_callback.Run(dbus::ObjectPath(""), false); |
64 | 66 |
65 // Adapter should not be present. | 67 // Adapter should not be present. |
66 EXPECT_FALSE(adapter->IsPresent()); | 68 EXPECT_FALSE(adapter->IsPresent()); |
67 } | 69 } |
68 | 70 |
69 TEST_F(BluetoothAdapterTest, DefaultAdapterWithAddress) { | 71 TEST_F(BluetoothAdapterTest, DefaultAdapterWithAddress) { |
70 const dbus::ObjectPath adapter_path("/fake/hci0"); | 72 const dbus::ObjectPath adapter_path("/fake/hci0"); |
71 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; | 73 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; |
72 | 74 |
73 // Create the default adapter instance; | 75 // Create the default adapter instance; |
74 // BluetoothManagerClient::DefaultAdapter will be called once, passing | 76 // BluetoothManagerClient::DefaultAdapter will be called once, passing |
75 // a callback to obtain the adapter path. | 77 // a callback to obtain the adapter path. |
76 BluetoothManagerClient::AdapterCallback adapter_callback; | 78 BluetoothManagerClient::AdapterCallback adapter_callback; |
77 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) | 79 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) |
78 .WillOnce(SaveArg<0>(&adapter_callback)); | 80 .WillOnce(SaveArg<0>(&adapter_callback)); |
79 | 81 |
80 scoped_refptr<BluetoothAdapter> adapter = BluetoothAdapter::DefaultAdapter(); | 82 scoped_refptr<BluetoothAdapter> adapter = |
83 BluetoothAdapterDBus::DefaultAdapter(); | |
81 | 84 |
82 // Call the adapter callback; | 85 // Call the adapter callback; |
83 // BluetoothAdapterClient::GetProperties will be called once to obtain | 86 // BluetoothAdapterClient::GetProperties will be called once to obtain |
84 // the property set. | 87 // the property set. |
85 MockBluetoothAdapterClient::Properties adapter_properties; | 88 MockBluetoothAdapterClient::Properties adapter_properties; |
86 adapter_properties.address.ReplaceValue(adapter_address); | 89 adapter_properties.address.ReplaceValue(adapter_address); |
87 | 90 |
88 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) | 91 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) |
89 .WillRepeatedly(Return(&adapter_properties)); | 92 .WillRepeatedly(Return(&adapter_properties)); |
90 | 93 |
(...skipping 16 matching lines...) Expand all Loading... | |
107 const dbus::ObjectPath adapter_path("/fake/hci0"); | 110 const dbus::ObjectPath adapter_path("/fake/hci0"); |
108 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; | 111 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; |
109 | 112 |
110 // Create the default adapter instance; | 113 // Create the default adapter instance; |
111 // BluetoothManagerClient::DefaultAdapter will be called once, passing | 114 // BluetoothManagerClient::DefaultAdapter will be called once, passing |
112 // a callback to obtain the adapter path. | 115 // a callback to obtain the adapter path. |
113 BluetoothManagerClient::AdapterCallback adapter_callback; | 116 BluetoothManagerClient::AdapterCallback adapter_callback; |
114 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) | 117 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) |
115 .WillOnce(SaveArg<0>(&adapter_callback)); | 118 .WillOnce(SaveArg<0>(&adapter_callback)); |
116 | 119 |
117 scoped_refptr<BluetoothAdapter> adapter = BluetoothAdapter::DefaultAdapter(); | 120 scoped_refptr<BluetoothAdapter> adapter = |
121 BluetoothAdapterDBus::DefaultAdapter(); | |
118 | 122 |
119 // Call the adapter callback; | 123 // Call the adapter callback; |
120 // BluetoothAdapterClient::GetProperties will be called once to obtain | 124 // BluetoothAdapterClient::GetProperties will be called once to obtain |
121 // the property set. | 125 // the property set. |
122 MockBluetoothAdapterClient::Properties adapter_properties; | 126 MockBluetoothAdapterClient::Properties adapter_properties; |
123 | 127 |
124 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) | 128 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) |
125 .WillRepeatedly(Return(&adapter_properties)); | 129 .WillRepeatedly(Return(&adapter_properties)); |
126 | 130 |
127 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called | 131 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called |
128 // yet. | 132 // yet. |
129 MockBluetoothAdapter::Observer adapter_observer; | 133 MockBluetoothAdapter::Observer adapter_observer; |
130 adapter->AddObserver(&adapter_observer); | 134 adapter->AddObserver(&adapter_observer); |
131 | 135 |
132 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) | 136 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) |
133 .Times(0); | 137 .Times(0); |
134 | 138 |
135 adapter_callback.Run(adapter_path, true); | 139 adapter_callback.Run(adapter_path, true); |
136 | 140 |
137 // Adapter should not be present yet. | 141 // Adapter should not be present yet. |
138 EXPECT_FALSE(adapter->IsPresent()); | 142 EXPECT_FALSE(adapter->IsPresent()); |
139 | 143 |
140 // Tell the adapter the address now; | 144 // Tell the adapter the address now; |
141 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called. | 145 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called. |
142 adapter_properties.address.ReplaceValue(adapter_address); | 146 adapter_properties.address.ReplaceValue(adapter_address); |
143 | 147 |
144 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) | 148 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) |
145 .Times(1); | 149 .Times(1); |
146 | 150 |
147 static_cast<BluetoothAdapterClient::Observer*>(adapter.get()) | 151 BluetoothAdapterDBus* adapter_dbus = |
152 static_cast<BluetoothAdapterDBus*>(adapter.get()); | |
153 | |
154 static_cast<BluetoothAdapterClient::Observer*>(adapter_dbus) | |
148 ->AdapterPropertyChanged(adapter_path, | 155 ->AdapterPropertyChanged(adapter_path, |
149 adapter_properties.address.name()); | 156 adapter_properties.address.name()); |
keybuk
2012/09/13 23:57:30
Why does this now need to be double-cast?
youngki
2012/09/17 21:53:02
Because BluetoothAdapterClient::Observer is implem
| |
150 | 157 |
151 // Adapter should be present with the given address. | 158 // Adapter should be present with the given address. |
152 EXPECT_TRUE(adapter->IsPresent()); | 159 EXPECT_TRUE(adapter->IsPresent()); |
153 EXPECT_EQ(adapter_address, adapter->address()); | 160 EXPECT_EQ(adapter_address, adapter->address()); |
154 } | 161 } |
155 | 162 |
156 TEST_F(BluetoothAdapterTest, DefaultAdapterBecomesPresentWithAddress) { | 163 TEST_F(BluetoothAdapterTest, DefaultAdapterBecomesPresentWithAddress) { |
157 const dbus::ObjectPath adapter_path("/fake/hci0"); | 164 const dbus::ObjectPath adapter_path("/fake/hci0"); |
158 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; | 165 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; |
159 | 166 |
160 // Create the default adapter instance; | 167 // Create the default adapter instance; |
161 // BluetoothManagerClient::DefaultAdapter will be called once, passing | 168 // BluetoothManagerClient::DefaultAdapter will be called once, passing |
162 // a callback to obtain the adapter path. | 169 // a callback to obtain the adapter path. |
163 BluetoothManagerClient::AdapterCallback adapter_callback; | 170 BluetoothManagerClient::AdapterCallback adapter_callback; |
164 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) | 171 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) |
165 .WillOnce(SaveArg<0>(&adapter_callback)); | 172 .WillOnce(SaveArg<0>(&adapter_callback)); |
166 | 173 |
167 scoped_refptr<BluetoothAdapter> adapter = BluetoothAdapter::DefaultAdapter(); | 174 scoped_refptr<BluetoothAdapter> adapter = |
175 BluetoothAdapterDBus::DefaultAdapter(); | |
168 | 176 |
169 // Call the adapter callback; make out it failed. | 177 // Call the adapter callback; make out it failed. |
170 adapter_callback.Run(dbus::ObjectPath(""), false); | 178 adapter_callback.Run(dbus::ObjectPath(""), false); |
171 | 179 |
172 // Tell the adapter the default adapter changed; | 180 // Tell the adapter the default adapter changed; |
173 // BluetoothAdapterClient::GetProperties will be called once to obtain | 181 // BluetoothAdapterClient::GetProperties will be called once to obtain |
174 // the property set. | 182 // the property set. |
175 MockBluetoothAdapterClient::Properties adapter_properties; | 183 MockBluetoothAdapterClient::Properties adapter_properties; |
176 adapter_properties.address.ReplaceValue(adapter_address); | 184 adapter_properties.address.ReplaceValue(adapter_address); |
177 | 185 |
178 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) | 186 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) |
179 .WillRepeatedly(Return(&adapter_properties)); | 187 .WillRepeatedly(Return(&adapter_properties)); |
180 | 188 |
181 // BluetoothAdapter::Observer::AdapterPresentChanged must be called. | 189 // BluetoothAdapter::Observer::AdapterPresentChanged must be called. |
182 MockBluetoothAdapter::Observer adapter_observer; | 190 MockBluetoothAdapter::Observer adapter_observer; |
183 adapter->AddObserver(&adapter_observer); | 191 adapter->AddObserver(&adapter_observer); |
184 | 192 |
185 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) | 193 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) |
186 .Times(1); | 194 .Times(1); |
187 | 195 |
188 static_cast<BluetoothManagerClient::Observer*>(adapter.get()) | 196 BluetoothAdapterDBus* adapter_dbus = |
197 static_cast<BluetoothAdapterDBus*>(adapter.get()); | |
198 | |
199 static_cast<BluetoothManagerClient::Observer*>(adapter_dbus) | |
189 ->DefaultAdapterChanged(adapter_path); | 200 ->DefaultAdapterChanged(adapter_path); |
190 | 201 |
191 // Adapter should be present with the new address. | 202 // Adapter should be present with the new address. |
192 EXPECT_TRUE(adapter->IsPresent()); | 203 EXPECT_TRUE(adapter->IsPresent()); |
193 EXPECT_EQ(adapter_address, adapter->address()); | 204 EXPECT_EQ(adapter_address, adapter->address()); |
194 } | 205 } |
195 | 206 |
196 TEST_F(BluetoothAdapterTest, DefaultAdapterReplacedWithAddress) { | 207 TEST_F(BluetoothAdapterTest, DefaultAdapterReplacedWithAddress) { |
197 const dbus::ObjectPath initial_adapter_path("/fake/hci0"); | 208 const dbus::ObjectPath initial_adapter_path("/fake/hci0"); |
198 const dbus::ObjectPath new_adapter_path("/fake/hci1"); | 209 const dbus::ObjectPath new_adapter_path("/fake/hci1"); |
199 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE"; | 210 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE"; |
200 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE"; | 211 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE"; |
201 | 212 |
202 // Create the default adapter instance; | 213 // Create the default adapter instance; |
203 // BluetoothManagerClient::DefaultAdapter will be called once, passing | 214 // BluetoothManagerClient::DefaultAdapter will be called once, passing |
204 // a callback to obtain the adapter path. | 215 // a callback to obtain the adapter path. |
205 BluetoothManagerClient::AdapterCallback adapter_callback; | 216 BluetoothManagerClient::AdapterCallback adapter_callback; |
206 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) | 217 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) |
207 .WillOnce(SaveArg<0>(&adapter_callback)); | 218 .WillOnce(SaveArg<0>(&adapter_callback)); |
208 | 219 |
209 scoped_refptr<BluetoothAdapter> adapter = BluetoothAdapter::DefaultAdapter(); | 220 scoped_refptr<BluetoothAdapter> adapter = |
221 BluetoothAdapterDBus::DefaultAdapter(); | |
210 | 222 |
211 // Call the adapter callback; | 223 // Call the adapter callback; |
212 // BluetoothAdapterClient::GetProperties will be called once to obtain | 224 // BluetoothAdapterClient::GetProperties will be called once to obtain |
213 // the property set. | 225 // the property set. |
214 MockBluetoothAdapterClient::Properties initial_adapter_properties; | 226 MockBluetoothAdapterClient::Properties initial_adapter_properties; |
215 initial_adapter_properties.address.ReplaceValue(initial_adapter_address); | 227 initial_adapter_properties.address.ReplaceValue(initial_adapter_address); |
216 | 228 |
217 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path)) | 229 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path)) |
218 .WillRepeatedly(Return(&initial_adapter_properties)); | 230 .WillRepeatedly(Return(&initial_adapter_properties)); |
219 | 231 |
(...skipping 12 matching lines...) Expand all Loading... | |
232 // with false to indicate the old adapter being removed and once with true | 244 // with false to indicate the old adapter being removed and once with true |
233 // to announce the new adapter. | 245 // to announce the new adapter. |
234 MockBluetoothAdapter::Observer adapter_observer; | 246 MockBluetoothAdapter::Observer adapter_observer; |
235 adapter->AddObserver(&adapter_observer); | 247 adapter->AddObserver(&adapter_observer); |
236 | 248 |
237 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) | 249 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) |
238 .Times(1); | 250 .Times(1); |
239 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) | 251 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) |
240 .Times(1); | 252 .Times(1); |
241 | 253 |
242 static_cast<BluetoothManagerClient::Observer*>(adapter.get()) | 254 BluetoothAdapterDBus* adapter_dbus = |
255 static_cast<BluetoothAdapterDBus*>(adapter.get()); | |
256 | |
257 static_cast<BluetoothManagerClient::Observer*>(adapter_dbus) | |
243 ->DefaultAdapterChanged(new_adapter_path); | 258 ->DefaultAdapterChanged(new_adapter_path); |
244 | 259 |
245 // Adapter should be present with the new address. | 260 // Adapter should be present with the new address. |
246 EXPECT_TRUE(adapter->IsPresent()); | 261 EXPECT_TRUE(adapter->IsPresent()); |
247 EXPECT_EQ(new_adapter_address, adapter->address()); | 262 EXPECT_EQ(new_adapter_address, adapter->address()); |
248 } | 263 } |
249 | 264 |
250 TEST_F(BluetoothAdapterTest, DefaultAdapterBecomesPresentWithoutAddress) { | 265 TEST_F(BluetoothAdapterTest, DefaultAdapterBecomesPresentWithoutAddress) { |
251 const dbus::ObjectPath adapter_path("/fake/hci0"); | 266 const dbus::ObjectPath adapter_path("/fake/hci0"); |
252 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; | 267 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; |
253 | 268 |
254 // Create the default adapter instance; | 269 // Create the default adapter instance; |
255 // BluetoothManagerClient::DefaultAdapter will be called once, passing | 270 // BluetoothManagerClient::DefaultAdapter will be called once, passing |
256 // a callback to obtain the adapter path. | 271 // a callback to obtain the adapter path. |
257 BluetoothManagerClient::AdapterCallback adapter_callback; | 272 BluetoothManagerClient::AdapterCallback adapter_callback; |
258 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) | 273 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) |
259 .WillOnce(SaveArg<0>(&adapter_callback)); | 274 .WillOnce(SaveArg<0>(&adapter_callback)); |
260 | 275 |
261 scoped_refptr<BluetoothAdapter> adapter = BluetoothAdapter::DefaultAdapter(); | 276 scoped_refptr<BluetoothAdapter> adapter = |
277 BluetoothAdapterDBus::DefaultAdapter(); | |
262 | 278 |
263 // Call the adapter callback; make out it failed. | 279 // Call the adapter callback; make out it failed. |
264 adapter_callback.Run(dbus::ObjectPath(""), false); | 280 adapter_callback.Run(dbus::ObjectPath(""), false); |
265 | 281 |
266 // Tell the adapter the default adapter changed; | 282 // Tell the adapter the default adapter changed; |
267 // BluetoothAdapterClient::GetProperties will be called once to obtain | 283 // BluetoothAdapterClient::GetProperties will be called once to obtain |
268 // the property set. | 284 // the property set. |
269 MockBluetoothAdapterClient::Properties adapter_properties; | 285 MockBluetoothAdapterClient::Properties adapter_properties; |
270 | 286 |
271 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) | 287 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) |
272 .WillRepeatedly(Return(&adapter_properties)); | 288 .WillRepeatedly(Return(&adapter_properties)); |
273 | 289 |
274 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called. | 290 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called. |
275 MockBluetoothAdapter::Observer adapter_observer; | 291 MockBluetoothAdapter::Observer adapter_observer; |
276 adapter->AddObserver(&adapter_observer); | 292 adapter->AddObserver(&adapter_observer); |
277 | 293 |
278 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) | 294 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) |
279 .Times(0); | 295 .Times(0); |
280 | 296 |
281 static_cast<BluetoothManagerClient::Observer*>(adapter.get()) | 297 BluetoothAdapterDBus* adapter_dbus = |
298 static_cast<BluetoothAdapterDBus*>(adapter.get()); | |
299 | |
300 static_cast<BluetoothManagerClient::Observer*>(adapter_dbus) | |
282 ->DefaultAdapterChanged(adapter_path); | 301 ->DefaultAdapterChanged(adapter_path); |
283 | 302 |
284 // Adapter should not be present yet. | 303 // Adapter should not be present yet. |
285 EXPECT_FALSE(adapter->IsPresent()); | 304 EXPECT_FALSE(adapter->IsPresent()); |
286 | 305 |
287 // Tell the adapter the address now; | 306 // Tell the adapter the address now; |
288 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called. | 307 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called. |
289 adapter_properties.address.ReplaceValue(adapter_address); | 308 adapter_properties.address.ReplaceValue(adapter_address); |
290 | 309 |
291 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) | 310 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) |
292 .Times(1); | 311 .Times(1); |
293 | 312 |
294 static_cast<BluetoothAdapterClient::Observer*>(adapter.get()) | 313 static_cast<BluetoothAdapterClient::Observer*>(adapter_dbus) |
295 ->AdapterPropertyChanged(adapter_path, | 314 ->AdapterPropertyChanged(adapter_path, |
296 adapter_properties.address.name()); | 315 adapter_properties.address.name()); |
297 | 316 |
298 // Adapter should be present with the new address. | 317 // Adapter should be present with the new address. |
299 EXPECT_TRUE(adapter->IsPresent()); | 318 EXPECT_TRUE(adapter->IsPresent()); |
300 EXPECT_EQ(adapter_address, adapter->address()); | 319 EXPECT_EQ(adapter_address, adapter->address()); |
301 } | 320 } |
302 | 321 |
303 TEST_F(BluetoothAdapterTest, DefaultAdapterReplacedWithoutAddress) { | 322 TEST_F(BluetoothAdapterTest, DefaultAdapterReplacedWithoutAddress) { |
304 const dbus::ObjectPath initial_adapter_path("/fake/hci0"); | 323 const dbus::ObjectPath initial_adapter_path("/fake/hci0"); |
305 const dbus::ObjectPath new_adapter_path("/fake/hci1"); | 324 const dbus::ObjectPath new_adapter_path("/fake/hci1"); |
306 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE"; | 325 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE"; |
307 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE"; | 326 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE"; |
308 | 327 |
309 // Create the default adapter instance; | 328 // Create the default adapter instance; |
310 // BluetoothManagerClient::DefaultAdapter will be called once, passing | 329 // BluetoothManagerClient::DefaultAdapter will be called once, passing |
311 // a callback to obtain the adapter path. | 330 // a callback to obtain the adapter path. |
312 BluetoothManagerClient::AdapterCallback adapter_callback; | 331 BluetoothManagerClient::AdapterCallback adapter_callback; |
313 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) | 332 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) |
314 .WillOnce(SaveArg<0>(&adapter_callback)); | 333 .WillOnce(SaveArg<0>(&adapter_callback)); |
315 | 334 |
316 scoped_refptr<BluetoothAdapter> adapter = BluetoothAdapter::DefaultAdapter(); | 335 scoped_refptr<BluetoothAdapter> adapter = |
336 BluetoothAdapterDBus::DefaultAdapter(); | |
317 | 337 |
318 // Call the adapter callback; | 338 // Call the adapter callback; |
319 // BluetoothAdapterClient::GetProperties will be called once to obtain | 339 // BluetoothAdapterClient::GetProperties will be called once to obtain |
320 // the property set. | 340 // the property set. |
321 MockBluetoothAdapterClient::Properties initial_adapter_properties; | 341 MockBluetoothAdapterClient::Properties initial_adapter_properties; |
322 initial_adapter_properties.address.ReplaceValue(initial_adapter_address); | 342 initial_adapter_properties.address.ReplaceValue(initial_adapter_address); |
323 | 343 |
324 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path)) | 344 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path)) |
325 .WillRepeatedly(Return(&initial_adapter_properties)); | 345 .WillRepeatedly(Return(&initial_adapter_properties)); |
326 | 346 |
327 adapter_callback.Run(initial_adapter_path, true); | 347 adapter_callback.Run(initial_adapter_path, true); |
328 | 348 |
329 // Tell the adapter the default adapter changed; | 349 // Tell the adapter the default adapter changed; |
330 // BluetoothAdapterClient::GetProperties will be called once to obtain | 350 // BluetoothAdapterClient::GetProperties will be called once to obtain |
331 // the property set. | 351 // the property set. |
332 MockBluetoothAdapterClient::Properties new_adapter_properties; | 352 MockBluetoothAdapterClient::Properties new_adapter_properties; |
333 | 353 |
334 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path)) | 354 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path)) |
335 .WillRepeatedly(Return(&new_adapter_properties)); | 355 .WillRepeatedly(Return(&new_adapter_properties)); |
336 | 356 |
337 // BluetoothAdapter::Observer::AdapterPresentChanged must be called to | 357 // BluetoothAdapter::Observer::AdapterPresentChanged must be called to |
338 // indicate the adapter has gone away. | 358 // indicate the adapter has gone away. |
339 MockBluetoothAdapter::Observer adapter_observer; | 359 MockBluetoothAdapter::Observer adapter_observer; |
340 adapter->AddObserver(&adapter_observer); | 360 adapter->AddObserver(&adapter_observer); |
341 | 361 |
342 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) | 362 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) |
343 .Times(1); | 363 .Times(1); |
344 | 364 |
345 static_cast<BluetoothManagerClient::Observer*>(adapter.get()) | 365 BluetoothAdapterDBus* adapter_dbus = |
366 static_cast<BluetoothAdapterDBus*>(adapter.get()); | |
367 | |
368 static_cast<BluetoothManagerClient::Observer*>(adapter_dbus) | |
346 ->DefaultAdapterChanged(new_adapter_path); | 369 ->DefaultAdapterChanged(new_adapter_path); |
347 | 370 |
348 // Adapter should be now marked not present. | 371 // Adapter should be now marked not present. |
349 EXPECT_FALSE(adapter->IsPresent()); | 372 EXPECT_FALSE(adapter->IsPresent()); |
350 | 373 |
351 // Tell the adapter the address now; | 374 // Tell the adapter the address now; |
352 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called. | 375 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called. |
353 new_adapter_properties.address.ReplaceValue(new_adapter_address); | 376 new_adapter_properties.address.ReplaceValue(new_adapter_address); |
354 | 377 |
355 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) | 378 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) |
356 .Times(1); | 379 .Times(1); |
357 | 380 |
358 static_cast<BluetoothAdapterClient::Observer*>(adapter.get()) | 381 static_cast<BluetoothAdapterClient::Observer*>(adapter_dbus) |
359 ->AdapterPropertyChanged(new_adapter_path, | 382 ->AdapterPropertyChanged(new_adapter_path, |
360 new_adapter_properties.address.name()); | 383 new_adapter_properties.address.name()); |
361 | 384 |
362 // Adapter should be present with the new address. | 385 // Adapter should be present with the new address. |
363 EXPECT_TRUE(adapter->IsPresent()); | 386 EXPECT_TRUE(adapter->IsPresent()); |
364 EXPECT_EQ(new_adapter_address, adapter->address()); | 387 EXPECT_EQ(new_adapter_address, adapter->address()); |
365 } | 388 } |
366 | 389 |
367 TEST_F(BluetoothAdapterTest, DefaultAdapterRemoved) { | 390 TEST_F(BluetoothAdapterTest, DefaultAdapterRemoved) { |
368 const dbus::ObjectPath adapter_path("/fake/hci0"); | 391 const dbus::ObjectPath adapter_path("/fake/hci0"); |
369 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; | 392 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; |
370 | 393 |
371 // Create the default adapter instance; | 394 // Create the default adapter instance; |
372 // BluetoothManagerClient::DefaultAdapter will be called once, passing | 395 // BluetoothManagerClient::DefaultAdapter will be called once, passing |
373 // a callback to obtain the adapter path. | 396 // a callback to obtain the adapter path. |
374 BluetoothManagerClient::AdapterCallback adapter_callback; | 397 BluetoothManagerClient::AdapterCallback adapter_callback; |
375 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) | 398 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) |
376 .WillOnce(SaveArg<0>(&adapter_callback)); | 399 .WillOnce(SaveArg<0>(&adapter_callback)); |
377 | 400 |
378 scoped_refptr<BluetoothAdapter> adapter = BluetoothAdapter::DefaultAdapter(); | 401 scoped_refptr<BluetoothAdapter> adapter = |
402 BluetoothAdapterDBus::DefaultAdapter(); | |
379 | 403 |
380 // Call the adapter callback; | 404 // Call the adapter callback; |
381 // BluetoothAdapterClient::GetProperties will be called once to obtain | 405 // BluetoothAdapterClient::GetProperties will be called once to obtain |
382 // the property set. | 406 // the property set. |
383 MockBluetoothAdapterClient::Properties adapter_properties; | 407 MockBluetoothAdapterClient::Properties adapter_properties; |
384 adapter_properties.address.ReplaceValue(adapter_address); | 408 adapter_properties.address.ReplaceValue(adapter_address); |
385 | 409 |
386 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) | 410 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) |
387 .WillRepeatedly(Return(&adapter_properties)); | 411 .WillRepeatedly(Return(&adapter_properties)); |
388 | 412 |
389 adapter_callback.Run(adapter_path, true); | 413 adapter_callback.Run(adapter_path, true); |
390 | 414 |
391 // Report that the adapter has been removed; | 415 // Report that the adapter has been removed; |
392 // BluetoothAdapter::Observer::AdapterPresentChanged will be called to | 416 // BluetoothAdapter::Observer::AdapterPresentChanged will be called to |
393 // indicate the adapter is no longer present. | 417 // indicate the adapter is no longer present. |
394 MockBluetoothAdapter::Observer adapter_observer; | 418 MockBluetoothAdapter::Observer adapter_observer; |
395 adapter->AddObserver(&adapter_observer); | 419 adapter->AddObserver(&adapter_observer); |
396 | 420 |
397 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) | 421 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) |
398 .Times(1); | 422 .Times(1); |
399 | 423 |
400 static_cast<BluetoothManagerClient::Observer*>(adapter.get()) | 424 BluetoothAdapterDBus* adapter_dbus = |
425 static_cast<BluetoothAdapterDBus*>(adapter.get()); | |
426 | |
427 static_cast<BluetoothManagerClient::Observer*>(adapter_dbus) | |
401 ->AdapterRemoved(adapter_path); | 428 ->AdapterRemoved(adapter_path); |
402 | 429 |
403 // Adapter should be no longer present. | 430 // Adapter should be no longer present. |
404 EXPECT_FALSE(adapter->IsPresent()); | 431 EXPECT_FALSE(adapter->IsPresent()); |
405 } | 432 } |
406 | 433 |
407 TEST_F(BluetoothAdapterTest, DefaultAdapterWithoutAddressRemoved) { | 434 TEST_F(BluetoothAdapterTest, DefaultAdapterWithoutAddressRemoved) { |
408 const dbus::ObjectPath adapter_path("/fake/hci0"); | 435 const dbus::ObjectPath adapter_path("/fake/hci0"); |
409 | 436 |
410 // Create the default adapter instance; | 437 // Create the default adapter instance; |
411 // BluetoothManagerClient::DefaultAdapter will be called once, passing | 438 // BluetoothManagerClient::DefaultAdapter will be called once, passing |
412 // a callback to obtain the adapter path. | 439 // a callback to obtain the adapter path. |
413 BluetoothManagerClient::AdapterCallback adapter_callback; | 440 BluetoothManagerClient::AdapterCallback adapter_callback; |
414 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) | 441 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) |
415 .WillOnce(SaveArg<0>(&adapter_callback)); | 442 .WillOnce(SaveArg<0>(&adapter_callback)); |
416 | 443 |
417 scoped_refptr<BluetoothAdapter> adapter = BluetoothAdapter::DefaultAdapter(); | 444 scoped_refptr<BluetoothAdapter> adapter = |
445 BluetoothAdapterDBus::DefaultAdapter(); | |
418 | 446 |
419 // Call the adapter callback; | 447 // Call the adapter callback; |
420 // BluetoothAdapterClient::GetProperties will be called once to obtain | 448 // BluetoothAdapterClient::GetProperties will be called once to obtain |
421 // the property set. | 449 // the property set. |
422 MockBluetoothAdapterClient::Properties adapter_properties; | 450 MockBluetoothAdapterClient::Properties adapter_properties; |
423 | 451 |
424 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) | 452 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) |
425 .WillRepeatedly(Return(&adapter_properties)); | 453 .WillRepeatedly(Return(&adapter_properties)); |
426 | 454 |
427 adapter_callback.Run(adapter_path, true); | 455 adapter_callback.Run(adapter_path, true); |
428 | 456 |
429 // Report that the adapter has been removed; | 457 // Report that the adapter has been removed; |
430 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called | 458 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called |
431 // since we never should have announced it in the first place. | 459 // since we never should have announced it in the first place. |
432 MockBluetoothAdapter::Observer adapter_observer; | 460 MockBluetoothAdapter::Observer adapter_observer; |
433 adapter->AddObserver(&adapter_observer); | 461 adapter->AddObserver(&adapter_observer); |
434 | 462 |
435 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) | 463 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) |
436 .Times(0); | 464 .Times(0); |
437 | 465 |
438 static_cast<BluetoothManagerClient::Observer*>(adapter.get()) | 466 BluetoothAdapterDBus* adapter_dbus = |
467 static_cast<BluetoothAdapterDBus*>(adapter.get()); | |
468 | |
469 static_cast<BluetoothManagerClient::Observer*>(adapter_dbus) | |
439 ->AdapterRemoved(adapter_path); | 470 ->AdapterRemoved(adapter_path); |
440 | 471 |
441 // Adapter should be still no longer present. | 472 // Adapter should be still no longer present. |
442 EXPECT_FALSE(adapter->IsPresent()); | 473 EXPECT_FALSE(adapter->IsPresent()); |
443 } | 474 } |
444 | 475 |
445 } // namespace chromeos | 476 } // namespace chromeos |
OLD | NEW |