Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(80)

Side by Side Diff: device/bluetooth/bluetooth_adapter_chromeos_unittest.cc

Issue 11819007: Changed DefaultAdapter to RunCallbackOnAdapterReady function. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created IsBluetoothSupported in BluetoothEventRouter to fix browser_tests. Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "chromeos/dbus/mock_bluetooth_adapter_client.h" 5 #include "chromeos/dbus/mock_bluetooth_adapter_client.h"
6 #include "chromeos/dbus/mock_bluetooth_manager_client.h" 6 #include "chromeos/dbus/mock_bluetooth_manager_client.h"
7 #include "chromeos/dbus/mock_dbus_thread_manager.h" 7 #include "chromeos/dbus/mock_dbus_thread_manager.h"
8 #include "dbus/object_path.h" 8 #include "dbus/object_path.h"
9 #include "device/bluetooth/bluetooth_adapter.h" 9 #include "device/bluetooth/bluetooth_adapter.h"
10 #include "device/bluetooth/bluetooth_adapter_chromeos.h" 10 #include "device/bluetooth/bluetooth_adapter_chromeos.h"
(...skipping 23 matching lines...) Expand all
34 mock_manager_client_ = 34 mock_manager_client_ =
35 mock_dbus_thread_manager->mock_bluetooth_manager_client(); 35 mock_dbus_thread_manager->mock_bluetooth_manager_client();
36 mock_adapter_client_ = 36 mock_adapter_client_ =
37 mock_dbus_thread_manager->mock_bluetooth_adapter_client(); 37 mock_dbus_thread_manager->mock_bluetooth_adapter_client();
38 38
39 set_callback_called_ = false; 39 set_callback_called_ = false;
40 error_callback_called_ = false; 40 error_callback_called_ = false;
41 } 41 }
42 42
43 virtual void TearDown() { 43 virtual void TearDown() {
44 adapter_ = NULL;
44 DBusThreadManager::Shutdown(); 45 DBusThreadManager::Shutdown();
45 } 46 }
46 47
47 void SetCallback() { 48 void SetCallback() {
48 set_callback_called_ = true; 49 set_callback_called_ = true;
49 } 50 }
50 51
51 void ErrorCallback() { 52 void ErrorCallback() {
52 error_callback_called_ = true; 53 error_callback_called_ = true;
53 } 54 }
54 55
56 void SetAdapter(scoped_refptr<device::BluetoothAdapter> adapter) {
57 adapter_ = adapter;
58 }
59
55 protected: 60 protected:
56 MockBluetoothManagerClient* mock_manager_client_; 61 MockBluetoothManagerClient* mock_manager_client_;
57 MockBluetoothAdapterClient* mock_adapter_client_; 62 MockBluetoothAdapterClient* mock_adapter_client_;
58 63
59 bool set_callback_called_; 64 bool set_callback_called_;
60 bool error_callback_called_; 65 bool error_callback_called_;
66
67 scoped_refptr<BluetoothAdapter> adapter_;
61 }; 68 };
62 69
63 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterNotPresent) { 70 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterNotPresent) {
64 // Create the default adapter instance; 71 // Create the default adapter instance;
65 // BluetoothManagerClient::DefaultAdapter will be called once, passing 72 // BluetoothManagerClient::DefaultAdapter will be called once, passing
66 // a callback to obtain the adapter path. 73 // a callback to obtain the adapter path.
67 BluetoothManagerClient::AdapterCallback adapter_callback; 74 BluetoothManagerClient::AdapterCallback adapter_callback;
68 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 75 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
69 .WillOnce(SaveArg<0>(&adapter_callback)); 76 .WillOnce(SaveArg<0>(&adapter_callback));
70 77
71 scoped_refptr<BluetoothAdapter> adapter = 78 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
72 BluetoothAdapterFactory::DefaultAdapter(); 79 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
73 ASSERT_TRUE(adapter.get() != NULL); 80 base::Unretained(this)));
81 ASSERT_TRUE(adapter_ != NULL);
74 82
75 // Call the adapter callback; make out it failed. 83 // Call the adapter callback; make out it failed.
76 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called. 84 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called.
77 MockBluetoothAdapter::Observer adapter_observer; 85 MockBluetoothAdapter::Observer adapter_observer;
78 adapter->AddObserver(&adapter_observer); 86 adapter_->AddObserver(&adapter_observer);
79 87
80 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) 88 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), _))
81 .Times(0); 89 .Times(0);
82 90
83 adapter_callback.Run(dbus::ObjectPath(""), false); 91 adapter_callback.Run(dbus::ObjectPath(""), false);
84 92
85 // Adapter should not be present. 93 // Adapter should not be present.
86 EXPECT_FALSE(adapter->IsPresent()); 94 EXPECT_FALSE(adapter_->IsPresent());
87 } 95 }
88 96
89 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithAddress) { 97 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithAddress) {
90 const dbus::ObjectPath adapter_path("/fake/hci0"); 98 const dbus::ObjectPath adapter_path("/fake/hci0");
91 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 99 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
92 100
93 // Create the default adapter instance; 101 // Create the default adapter instance;
94 // BluetoothManagerClient::DefaultAdapter will be called once, passing 102 // BluetoothManagerClient::DefaultAdapter will be called once, passing
95 // a callback to obtain the adapter path. 103 // a callback to obtain the adapter path.
96 BluetoothManagerClient::AdapterCallback adapter_callback; 104 BluetoothManagerClient::AdapterCallback adapter_callback;
97 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 105 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
98 .WillOnce(SaveArg<0>(&adapter_callback)); 106 .WillOnce(SaveArg<0>(&adapter_callback));
99 107
100 scoped_refptr<BluetoothAdapter> adapter = 108 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
101 BluetoothAdapterFactory::DefaultAdapter(); 109 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
110 base::Unretained(this)));
102 111
103 // Call the adapter callback; 112 // Call the adapter callback;
104 // BluetoothAdapterClient::GetProperties will be called once to obtain 113 // BluetoothAdapterClient::GetProperties will be called once to obtain
105 // the property set. 114 // the property set.
106 MockBluetoothAdapterClient::Properties adapter_properties; 115 MockBluetoothAdapterClient::Properties adapter_properties;
107 adapter_properties.address.ReplaceValue(adapter_address); 116 adapter_properties.address.ReplaceValue(adapter_address);
108 117
109 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 118 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
110 .WillRepeatedly(Return(&adapter_properties)); 119 .WillRepeatedly(Return(&adapter_properties));
111 120
112 // BluetoothAdapter::Observer::AdapterPresentChanged will be called to 121 // BluetoothAdapter::Observer::AdapterPresentChanged will be called to
113 // indicate the adapter is now present. 122 // indicate the adapter is now present.
114 MockBluetoothAdapter::Observer adapter_observer; 123 MockBluetoothAdapter::Observer adapter_observer;
115 adapter->AddObserver(&adapter_observer); 124 adapter_->AddObserver(&adapter_observer);
116 125
117 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 126 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
118 .Times(1); 127 .Times(1);
119 128
120 adapter_callback.Run(adapter_path, true); 129 adapter_callback.Run(adapter_path, true);
121 130
122 // Adapter should be present with the given address. 131 // Adapter should be present with the given address.
123 EXPECT_TRUE(adapter->IsPresent()); 132 EXPECT_TRUE(adapter_->IsPresent());
124 EXPECT_EQ(adapter_address, adapter->address()); 133 EXPECT_EQ(adapter_address, adapter_->address());
125 } 134 }
126 135
127 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithoutAddress) { 136 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithoutAddress) {
128 const dbus::ObjectPath adapter_path("/fake/hci0"); 137 const dbus::ObjectPath adapter_path("/fake/hci0");
129 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 138 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
130 139
131 // Create the default adapter instance; 140 // Create the default adapter instance;
132 // BluetoothManagerClient::DefaultAdapter will be called once, passing 141 // BluetoothManagerClient::DefaultAdapter will be called once, passing
133 // a callback to obtain the adapter path. 142 // a callback to obtain the adapter path.
134 BluetoothManagerClient::AdapterCallback adapter_callback; 143 BluetoothManagerClient::AdapterCallback adapter_callback;
135 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 144 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
136 .WillOnce(SaveArg<0>(&adapter_callback)); 145 .WillOnce(SaveArg<0>(&adapter_callback));
137 146
138 scoped_refptr<BluetoothAdapter> adapter = 147 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
139 BluetoothAdapterFactory::DefaultAdapter(); 148 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
149 base::Unretained(this)));
140 150
141 // Call the adapter callback; 151 // Call the adapter callback;
142 // BluetoothAdapterClient::GetProperties will be called once to obtain 152 // BluetoothAdapterClient::GetProperties will be called once to obtain
143 // the property set. 153 // the property set.
144 MockBluetoothAdapterClient::Properties adapter_properties; 154 MockBluetoothAdapterClient::Properties adapter_properties;
145 155
146 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 156 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
147 .WillRepeatedly(Return(&adapter_properties)); 157 .WillRepeatedly(Return(&adapter_properties));
148 158
149 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called 159 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called
150 // yet. 160 // yet.
151 MockBluetoothAdapter::Observer adapter_observer; 161 MockBluetoothAdapter::Observer adapter_observer;
152 adapter->AddObserver(&adapter_observer); 162 adapter_->AddObserver(&adapter_observer);
153 163
154 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) 164 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), _))
155 .Times(0); 165 .Times(0);
156 166
157 adapter_callback.Run(adapter_path, true); 167 adapter_callback.Run(adapter_path, true);
158 168
159 // Adapter should not be present yet. 169 // Adapter should not be present yet.
160 EXPECT_FALSE(adapter->IsPresent()); 170 EXPECT_FALSE(adapter_->IsPresent());
161 171
162 // Tell the adapter the address now; 172 // Tell the adapter the address now;
163 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called. 173 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called.
164 adapter_properties.address.ReplaceValue(adapter_address); 174 adapter_properties.address.ReplaceValue(adapter_address);
165 175
166 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 176 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
167 .Times(1); 177 .Times(1);
168 178
169 BluetoothAdapterChromeOs* adapter_chromeos = 179 BluetoothAdapterChromeOs* adapter_chromeos =
170 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 180 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
171 181
172 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 182 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
173 ->AdapterPropertyChanged(adapter_path, 183 ->AdapterPropertyChanged(adapter_path,
174 adapter_properties.address.name()); 184 adapter_properties.address.name());
175 185
176 // Adapter should be present with the given address. 186 // Adapter should be present with the given address.
177 EXPECT_TRUE(adapter->IsPresent()); 187 EXPECT_TRUE(adapter_->IsPresent());
178 EXPECT_EQ(adapter_address, adapter->address()); 188 EXPECT_EQ(adapter_address, adapter_->address());
179 } 189 }
180 190
181 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterBecomesPresentWithAddress) { 191 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterBecomesPresentWithAddress) {
182 const dbus::ObjectPath adapter_path("/fake/hci0"); 192 const dbus::ObjectPath adapter_path("/fake/hci0");
183 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 193 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
184 194
185 // Create the default adapter instance; 195 // Create the default adapter instance;
186 // BluetoothManagerClient::DefaultAdapter will be called once, passing 196 // BluetoothManagerClient::DefaultAdapter will be called once, passing
187 // a callback to obtain the adapter path. 197 // a callback to obtain the adapter path.
188 BluetoothManagerClient::AdapterCallback adapter_callback; 198 BluetoothManagerClient::AdapterCallback adapter_callback;
189 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 199 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
190 .WillOnce(SaveArg<0>(&adapter_callback)); 200 .WillOnce(SaveArg<0>(&adapter_callback));
191 201
192 scoped_refptr<BluetoothAdapter> adapter = 202 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
193 BluetoothAdapterFactory::DefaultAdapter(); 203 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
204 base::Unretained(this)));
194 205
195 // Call the adapter callback; make out it failed. 206 // Call the adapter callback; make out it failed.
196 adapter_callback.Run(dbus::ObjectPath(""), false); 207 adapter_callback.Run(dbus::ObjectPath(""), false);
197 208
198 // Tell the adapter the default adapter changed; 209 // Tell the adapter the default adapter changed;
199 // BluetoothAdapterClient::GetProperties will be called once to obtain 210 // BluetoothAdapterClient::GetProperties will be called once to obtain
200 // the property set. 211 // the property set.
201 MockBluetoothAdapterClient::Properties adapter_properties; 212 MockBluetoothAdapterClient::Properties adapter_properties;
202 adapter_properties.address.ReplaceValue(adapter_address); 213 adapter_properties.address.ReplaceValue(adapter_address);
203 214
204 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 215 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
205 .WillRepeatedly(Return(&adapter_properties)); 216 .WillRepeatedly(Return(&adapter_properties));
206 217
207 // BluetoothAdapter::Observer::AdapterPresentChanged must be called. 218 // BluetoothAdapter::Observer::AdapterPresentChanged must be called.
208 MockBluetoothAdapter::Observer adapter_observer; 219 MockBluetoothAdapter::Observer adapter_observer;
209 adapter->AddObserver(&adapter_observer); 220 adapter_->AddObserver(&adapter_observer);
210 221
211 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 222 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
212 .Times(1); 223 .Times(1);
213 224
214 BluetoothAdapterChromeOs* adapter_chromeos = 225 BluetoothAdapterChromeOs* adapter_chromeos =
215 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 226 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
216 227
217 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 228 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
218 ->DefaultAdapterChanged(adapter_path); 229 ->DefaultAdapterChanged(adapter_path);
219 230
220 // Adapter should be present with the new address. 231 // Adapter should be present with the new address.
221 EXPECT_TRUE(adapter->IsPresent()); 232 EXPECT_TRUE(adapter_->IsPresent());
222 EXPECT_EQ(adapter_address, adapter->address()); 233 EXPECT_EQ(adapter_address, adapter_->address());
223 } 234 }
224 235
225 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterReplacedWithAddress) { 236 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterReplacedWithAddress) {
226 const dbus::ObjectPath initial_adapter_path("/fake/hci0"); 237 const dbus::ObjectPath initial_adapter_path("/fake/hci0");
227 const dbus::ObjectPath new_adapter_path("/fake/hci1"); 238 const dbus::ObjectPath new_adapter_path("/fake/hci1");
228 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE"; 239 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE";
229 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE"; 240 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE";
230 241
231 // Create the default adapter instance; 242 // Create the default adapter instance;
232 // BluetoothManagerClient::DefaultAdapter will be called once, passing 243 // BluetoothManagerClient::DefaultAdapter will be called once, passing
233 // a callback to obtain the adapter path. 244 // a callback to obtain the adapter path.
234 BluetoothManagerClient::AdapterCallback adapter_callback; 245 BluetoothManagerClient::AdapterCallback adapter_callback;
235 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 246 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
236 .WillOnce(SaveArg<0>(&adapter_callback)); 247 .WillOnce(SaveArg<0>(&adapter_callback));
237 248
238 scoped_refptr<BluetoothAdapter> adapter = 249 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
239 BluetoothAdapterFactory::DefaultAdapter(); 250 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
251 base::Unretained(this)));
240 252
241 // Call the adapter callback; 253 // Call the adapter callback;
242 // BluetoothAdapterClient::GetProperties will be called once to obtain 254 // BluetoothAdapterClient::GetProperties will be called once to obtain
243 // the property set. 255 // the property set.
244 MockBluetoothAdapterClient::Properties initial_adapter_properties; 256 MockBluetoothAdapterClient::Properties initial_adapter_properties;
245 initial_adapter_properties.address.ReplaceValue(initial_adapter_address); 257 initial_adapter_properties.address.ReplaceValue(initial_adapter_address);
246 258
247 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path)) 259 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path))
248 .WillRepeatedly(Return(&initial_adapter_properties)); 260 .WillRepeatedly(Return(&initial_adapter_properties));
249 261
250 adapter_callback.Run(initial_adapter_path, true); 262 adapter_callback.Run(initial_adapter_path, true);
251 263
252 // Tell the adapter the default adapter changed; 264 // Tell the adapter the default adapter changed;
253 // BluetoothAdapterClient::GetProperties will be called once to obtain 265 // BluetoothAdapterClient::GetProperties will be called once to obtain
254 // the property set. 266 // the property set.
255 MockBluetoothAdapterClient::Properties new_adapter_properties; 267 MockBluetoothAdapterClient::Properties new_adapter_properties;
256 new_adapter_properties.address.ReplaceValue(new_adapter_address); 268 new_adapter_properties.address.ReplaceValue(new_adapter_address);
257 269
258 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path)) 270 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path))
259 .WillRepeatedly(Return(&new_adapter_properties)); 271 .WillRepeatedly(Return(&new_adapter_properties));
260 272
261 // BluetoothAdapter::Observer::AdapterPresentChanged must be called once 273 // BluetoothAdapter::Observer::AdapterPresentChanged must be called once
262 // with false to indicate the old adapter being removed and once with true 274 // with false to indicate the old adapter being removed and once with true
263 // to announce the new adapter. 275 // to announce the new adapter.
264 MockBluetoothAdapter::Observer adapter_observer; 276 MockBluetoothAdapter::Observer adapter_observer;
265 adapter->AddObserver(&adapter_observer); 277 adapter_->AddObserver(&adapter_observer);
266 278
267 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) 279 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
268 .Times(1); 280 .Times(1);
269 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 281 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
270 .Times(1); 282 .Times(1);
271 283
272 BluetoothAdapterChromeOs* adapter_chromeos = 284 BluetoothAdapterChromeOs* adapter_chromeos =
273 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 285 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
274 286
275 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 287 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
276 ->DefaultAdapterChanged(new_adapter_path); 288 ->DefaultAdapterChanged(new_adapter_path);
277 289
278 // Adapter should be present with the new address. 290 // Adapter should be present with the new address.
279 EXPECT_TRUE(adapter->IsPresent()); 291 EXPECT_TRUE(adapter_->IsPresent());
280 EXPECT_EQ(new_adapter_address, adapter->address()); 292 EXPECT_EQ(new_adapter_address, adapter_->address());
281 } 293 }
282 294
283 TEST_F(BluetoothAdapterChromeOsTest, 295 TEST_F(BluetoothAdapterChromeOsTest,
284 DefaultAdapterBecomesPresentWithoutAddress) { 296 DefaultAdapterBecomesPresentWithoutAddress) {
285 const dbus::ObjectPath adapter_path("/fake/hci0"); 297 const dbus::ObjectPath adapter_path("/fake/hci0");
286 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 298 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
287 299
288 // Create the default adapter instance; 300 // Create the default adapter instance;
289 // BluetoothManagerClient::DefaultAdapter will be called once, passing 301 // BluetoothManagerClient::DefaultAdapter will be called once, passing
290 // a callback to obtain the adapter path. 302 // a callback to obtain the adapter path.
291 BluetoothManagerClient::AdapterCallback adapter_callback; 303 BluetoothManagerClient::AdapterCallback adapter_callback;
292 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 304 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
293 .WillOnce(SaveArg<0>(&adapter_callback)); 305 .WillOnce(SaveArg<0>(&adapter_callback));
294 306
295 scoped_refptr<BluetoothAdapter> adapter = 307 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
296 BluetoothAdapterFactory::DefaultAdapter(); 308 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
309 base::Unretained(this)));
297 310
298 // Call the adapter callback; make out it failed. 311 // Call the adapter callback; make out it failed.
299 adapter_callback.Run(dbus::ObjectPath(""), false); 312 adapter_callback.Run(dbus::ObjectPath(""), false);
300 313
301 // Tell the adapter the default adapter changed; 314 // Tell the adapter the default adapter changed;
302 // BluetoothAdapterClient::GetProperties will be called once to obtain 315 // BluetoothAdapterClient::GetProperties will be called once to obtain
303 // the property set. 316 // the property set.
304 MockBluetoothAdapterClient::Properties adapter_properties; 317 MockBluetoothAdapterClient::Properties adapter_properties;
305 318
306 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 319 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
307 .WillRepeatedly(Return(&adapter_properties)); 320 .WillRepeatedly(Return(&adapter_properties));
308 321
309 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called. 322 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called.
310 MockBluetoothAdapter::Observer adapter_observer; 323 MockBluetoothAdapter::Observer adapter_observer;
311 adapter->AddObserver(&adapter_observer); 324 adapter_->AddObserver(&adapter_observer);
312 325
313 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) 326 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), _))
314 .Times(0); 327 .Times(0);
315 328
316 BluetoothAdapterChromeOs* adapter_chromeos = 329 BluetoothAdapterChromeOs* adapter_chromeos =
317 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 330 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
318 331
319 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 332 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
320 ->DefaultAdapterChanged(adapter_path); 333 ->DefaultAdapterChanged(adapter_path);
321 334
322 // Adapter should not be present yet. 335 // Adapter should not be present yet.
323 EXPECT_FALSE(adapter->IsPresent()); 336 EXPECT_FALSE(adapter_->IsPresent());
324 337
325 // Tell the adapter the address now; 338 // Tell the adapter the address now;
326 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called. 339 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called.
327 adapter_properties.address.ReplaceValue(adapter_address); 340 adapter_properties.address.ReplaceValue(adapter_address);
328 341
329 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 342 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
330 .Times(1); 343 .Times(1);
331 344
332 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 345 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
333 ->AdapterPropertyChanged(adapter_path, 346 ->AdapterPropertyChanged(adapter_path,
334 adapter_properties.address.name()); 347 adapter_properties.address.name());
335 348
336 // Adapter should be present with the new address. 349 // Adapter should be present with the new address.
337 EXPECT_TRUE(adapter->IsPresent()); 350 EXPECT_TRUE(adapter_->IsPresent());
338 EXPECT_EQ(adapter_address, adapter->address()); 351 EXPECT_EQ(adapter_address, adapter_->address());
339 } 352 }
340 353
341 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterReplacedWithoutAddress) { 354 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterReplacedWithoutAddress) {
342 const dbus::ObjectPath initial_adapter_path("/fake/hci0"); 355 const dbus::ObjectPath initial_adapter_path("/fake/hci0");
343 const dbus::ObjectPath new_adapter_path("/fake/hci1"); 356 const dbus::ObjectPath new_adapter_path("/fake/hci1");
344 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE"; 357 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE";
345 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE"; 358 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE";
346 359
347 // Create the default adapter instance; 360 // Create the default adapter instance;
348 // BluetoothManagerClient::DefaultAdapter will be called once, passing 361 // BluetoothManagerClient::DefaultAdapter will be called once, passing
349 // a callback to obtain the adapter path. 362 // a callback to obtain the adapter path.
350 BluetoothManagerClient::AdapterCallback adapter_callback; 363 BluetoothManagerClient::AdapterCallback adapter_callback;
351 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 364 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
352 .WillOnce(SaveArg<0>(&adapter_callback)); 365 .WillOnce(SaveArg<0>(&adapter_callback));
353 366
354 scoped_refptr<BluetoothAdapter> adapter = 367 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
355 BluetoothAdapterFactory::DefaultAdapter(); 368 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
369 base::Unretained(this)));
356 370
357 // Call the adapter callback; 371 // Call the adapter callback;
358 // BluetoothAdapterClient::GetProperties will be called once to obtain 372 // BluetoothAdapterClient::GetProperties will be called once to obtain
359 // the property set. 373 // the property set.
360 MockBluetoothAdapterClient::Properties initial_adapter_properties; 374 MockBluetoothAdapterClient::Properties initial_adapter_properties;
361 initial_adapter_properties.address.ReplaceValue(initial_adapter_address); 375 initial_adapter_properties.address.ReplaceValue(initial_adapter_address);
362 376
363 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path)) 377 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path))
364 .WillRepeatedly(Return(&initial_adapter_properties)); 378 .WillRepeatedly(Return(&initial_adapter_properties));
365 379
366 adapter_callback.Run(initial_adapter_path, true); 380 adapter_callback.Run(initial_adapter_path, true);
367 381
368 // Tell the adapter the default adapter changed; 382 // Tell the adapter the default adapter changed;
369 // BluetoothAdapterClient::GetProperties will be called once to obtain 383 // BluetoothAdapterClient::GetProperties will be called once to obtain
370 // the property set. 384 // the property set.
371 MockBluetoothAdapterClient::Properties new_adapter_properties; 385 MockBluetoothAdapterClient::Properties new_adapter_properties;
372 386
373 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path)) 387 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path))
374 .WillRepeatedly(Return(&new_adapter_properties)); 388 .WillRepeatedly(Return(&new_adapter_properties));
375 389
376 // BluetoothAdapter::Observer::AdapterPresentChanged must be called to 390 // BluetoothAdapter::Observer::AdapterPresentChanged must be called to
377 // indicate the adapter has gone away. 391 // indicate the adapter has gone away.
378 MockBluetoothAdapter::Observer adapter_observer; 392 MockBluetoothAdapter::Observer adapter_observer;
379 adapter->AddObserver(&adapter_observer); 393 adapter_->AddObserver(&adapter_observer);
380 394
381 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) 395 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
382 .Times(1); 396 .Times(1);
383 397
384 BluetoothAdapterChromeOs* adapter_chromeos = 398 BluetoothAdapterChromeOs* adapter_chromeos =
385 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 399 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
386 400
387 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 401 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
388 ->DefaultAdapterChanged(new_adapter_path); 402 ->DefaultAdapterChanged(new_adapter_path);
389 403
390 // Adapter should be now marked not present. 404 // Adapter should be now marked not present.
391 EXPECT_FALSE(adapter->IsPresent()); 405 EXPECT_FALSE(adapter_->IsPresent());
392 406
393 // Tell the adapter the address now; 407 // Tell the adapter the address now;
394 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called. 408 // BluetoothAdapter::Observer::AdapterPresentChanged now must be called.
395 new_adapter_properties.address.ReplaceValue(new_adapter_address); 409 new_adapter_properties.address.ReplaceValue(new_adapter_address);
396 410
397 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 411 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
398 .Times(1); 412 .Times(1);
399 413
400 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 414 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
401 ->AdapterPropertyChanged(new_adapter_path, 415 ->AdapterPropertyChanged(new_adapter_path,
402 new_adapter_properties.address.name()); 416 new_adapter_properties.address.name());
403 417
404 // Adapter should be present with the new address. 418 // Adapter should be present with the new address.
405 EXPECT_TRUE(adapter->IsPresent()); 419 EXPECT_TRUE(adapter_->IsPresent());
406 EXPECT_EQ(new_adapter_address, adapter->address()); 420 EXPECT_EQ(new_adapter_address, adapter_->address());
407 } 421 }
408 422
409 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterRemoved) { 423 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterRemoved) {
410 const dbus::ObjectPath adapter_path("/fake/hci0"); 424 const dbus::ObjectPath adapter_path("/fake/hci0");
411 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 425 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
412 426
413 // Create the default adapter instance; 427 // Create the default adapter instance;
414 // BluetoothManagerClient::DefaultAdapter will be called once, passing 428 // BluetoothManagerClient::DefaultAdapter will be called once, passing
415 // a callback to obtain the adapter path. 429 // a callback to obtain the adapter path.
416 BluetoothManagerClient::AdapterCallback adapter_callback; 430 BluetoothManagerClient::AdapterCallback adapter_callback;
417 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 431 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
418 .WillOnce(SaveArg<0>(&adapter_callback)); 432 .WillOnce(SaveArg<0>(&adapter_callback));
419 433
420 scoped_refptr<BluetoothAdapter> adapter = 434 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
421 BluetoothAdapterFactory::DefaultAdapter(); 435 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
436 base::Unretained(this)));
422 437
423 // Call the adapter callback; 438 // Call the adapter callback;
424 // BluetoothAdapterClient::GetProperties will be called once to obtain 439 // BluetoothAdapterClient::GetProperties will be called once to obtain
425 // the property set. 440 // the property set.
426 MockBluetoothAdapterClient::Properties adapter_properties; 441 MockBluetoothAdapterClient::Properties adapter_properties;
427 adapter_properties.address.ReplaceValue(adapter_address); 442 adapter_properties.address.ReplaceValue(adapter_address);
428 443
429 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 444 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
430 .WillRepeatedly(Return(&adapter_properties)); 445 .WillRepeatedly(Return(&adapter_properties));
431 446
432 adapter_callback.Run(adapter_path, true); 447 adapter_callback.Run(adapter_path, true);
433 448
434 // Report that the adapter has been removed; 449 // Report that the adapter has been removed;
435 // BluetoothAdapter::Observer::AdapterPresentChanged will be called to 450 // BluetoothAdapter::Observer::AdapterPresentChanged will be called to
436 // indicate the adapter is no longer present. 451 // indicate the adapter is no longer present.
437 MockBluetoothAdapter::Observer adapter_observer; 452 MockBluetoothAdapter::Observer adapter_observer;
438 adapter->AddObserver(&adapter_observer); 453 adapter_->AddObserver(&adapter_observer);
439 454
440 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) 455 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
441 .Times(1); 456 .Times(1);
442 457
443 BluetoothAdapterChromeOs* adapter_chromeos = 458 BluetoothAdapterChromeOs* adapter_chromeos =
444 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 459 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
445 460
446 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 461 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
447 ->AdapterRemoved(adapter_path); 462 ->AdapterRemoved(adapter_path);
448 463
449 // Adapter should be no longer present. 464 // Adapter should be no longer present.
450 EXPECT_FALSE(adapter->IsPresent()); 465 EXPECT_FALSE(adapter_->IsPresent());
451 } 466 }
452 467
453 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithoutAddressRemoved) { 468 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterWithoutAddressRemoved) {
454 const dbus::ObjectPath adapter_path("/fake/hci0"); 469 const dbus::ObjectPath adapter_path("/fake/hci0");
455 470
456 // Create the default adapter instance; 471 // Create the default adapter instance;
457 // BluetoothManagerClient::DefaultAdapter will be called once, passing 472 // BluetoothManagerClient::DefaultAdapter will be called once, passing
458 // a callback to obtain the adapter path. 473 // a callback to obtain the adapter path.
459 BluetoothManagerClient::AdapterCallback adapter_callback; 474 BluetoothManagerClient::AdapterCallback adapter_callback;
460 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 475 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
461 .WillOnce(SaveArg<0>(&adapter_callback)); 476 .WillOnce(SaveArg<0>(&adapter_callback));
462 477
463 scoped_refptr<BluetoothAdapter> adapter = 478 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
464 BluetoothAdapterFactory::DefaultAdapter(); 479 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
480 base::Unretained(this)));
465 481
466 // Call the adapter callback; 482 // Call the adapter callback;
467 // BluetoothAdapterClient::GetProperties will be called once to obtain 483 // BluetoothAdapterClient::GetProperties will be called once to obtain
468 // the property set. 484 // the property set.
469 MockBluetoothAdapterClient::Properties adapter_properties; 485 MockBluetoothAdapterClient::Properties adapter_properties;
470 486
471 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 487 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
472 .WillRepeatedly(Return(&adapter_properties)); 488 .WillRepeatedly(Return(&adapter_properties));
473 489
474 adapter_callback.Run(adapter_path, true); 490 adapter_callback.Run(adapter_path, true);
475 491
476 // Report that the adapter has been removed; 492 // Report that the adapter has been removed;
477 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called 493 // BluetoothAdapter::Observer::AdapterPresentChanged must not be called
478 // since we never should have announced it in the first place. 494 // since we never should have announced it in the first place.
479 MockBluetoothAdapter::Observer adapter_observer; 495 MockBluetoothAdapter::Observer adapter_observer;
480 adapter->AddObserver(&adapter_observer); 496 adapter_->AddObserver(&adapter_observer);
481 497
482 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), _)) 498 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), _))
483 .Times(0); 499 .Times(0);
484 500
485 BluetoothAdapterChromeOs* adapter_chromeos = 501 BluetoothAdapterChromeOs* adapter_chromeos =
486 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 502 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
487 503
488 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 504 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
489 ->AdapterRemoved(adapter_path); 505 ->AdapterRemoved(adapter_path);
490 506
491 // Adapter should be still no longer present. 507 // Adapter should be still no longer present.
492 EXPECT_FALSE(adapter->IsPresent()); 508 EXPECT_FALSE(adapter_->IsPresent());
493 } 509 }
494 510
495 TEST_F(BluetoothAdapterChromeOsTest, 511 TEST_F(BluetoothAdapterChromeOsTest,
496 DefaultAdapterPoweredPropertyInitiallyFalse) { 512 DefaultAdapterPoweredPropertyInitiallyFalse) {
497 const dbus::ObjectPath adapter_path("/fake/hci0"); 513 const dbus::ObjectPath adapter_path("/fake/hci0");
498 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 514 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
499 515
500 // Create the default adapter instance; 516 // Create the default adapter instance;
501 // BluetoothManagerClient::DefaultAdapter will be called once, passing 517 // BluetoothManagerClient::DefaultAdapter will be called once, passing
502 // a callback to obtain the adapter path. 518 // a callback to obtain the adapter path.
503 BluetoothManagerClient::AdapterCallback adapter_callback; 519 BluetoothManagerClient::AdapterCallback adapter_callback;
504 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 520 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
505 .WillOnce(SaveArg<0>(&adapter_callback)); 521 .WillOnce(SaveArg<0>(&adapter_callback));
506 522
507 scoped_refptr<BluetoothAdapter> adapter = 523 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
508 BluetoothAdapterFactory::DefaultAdapter(); 524 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
525 base::Unretained(this)));
509 526
510 // Call the adapter callback; 527 // Call the adapter callback;
511 // BluetoothAdapterClient::GetProperties will be called once to obtain 528 // BluetoothAdapterClient::GetProperties will be called once to obtain
512 // the property set. 529 // the property set.
513 MockBluetoothAdapterClient::Properties adapter_properties; 530 MockBluetoothAdapterClient::Properties adapter_properties;
514 adapter_properties.address.ReplaceValue(adapter_address); 531 adapter_properties.address.ReplaceValue(adapter_address);
515 adapter_properties.powered.ReplaceValue(false); 532 adapter_properties.powered.ReplaceValue(false);
516 533
517 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 534 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
518 .WillRepeatedly(Return(&adapter_properties)); 535 .WillRepeatedly(Return(&adapter_properties));
519 536
520 adapter_callback.Run(adapter_path, true); 537 adapter_callback.Run(adapter_path, true);
521 538
522 // Adapter should have the correct property value. 539 // Adapter should have the correct property value.
523 EXPECT_FALSE(adapter->IsPowered()); 540 EXPECT_FALSE(adapter_->IsPowered());
524 } 541 }
525 542
526 TEST_F(BluetoothAdapterChromeOsTest, 543 TEST_F(BluetoothAdapterChromeOsTest,
527 DefaultAdapterPoweredPropertyInitiallyTrue) { 544 DefaultAdapterPoweredPropertyInitiallyTrue) {
528 const dbus::ObjectPath adapter_path("/fake/hci0"); 545 const dbus::ObjectPath adapter_path("/fake/hci0");
529 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 546 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
530 547
531 // Create the default adapter instance; 548 // Create the default adapter instance;
532 // BluetoothManagerClient::DefaultAdapter will be called once, passing 549 // BluetoothManagerClient::DefaultAdapter will be called once, passing
533 // a callback to obtain the adapter path. 550 // a callback to obtain the adapter path.
534 BluetoothManagerClient::AdapterCallback adapter_callback; 551 BluetoothManagerClient::AdapterCallback adapter_callback;
535 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 552 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
536 .WillOnce(SaveArg<0>(&adapter_callback)); 553 .WillOnce(SaveArg<0>(&adapter_callback));
537 554
538 scoped_refptr<BluetoothAdapter> adapter = 555 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
539 BluetoothAdapterFactory::DefaultAdapter(); 556 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
557 base::Unretained(this)));
540 558
541 // Call the adapter callback; 559 // Call the adapter callback;
542 // BluetoothAdapterClient::GetProperties will be called once to obtain 560 // BluetoothAdapterClient::GetProperties will be called once to obtain
543 // the property set. 561 // the property set.
544 MockBluetoothAdapterClient::Properties adapter_properties; 562 MockBluetoothAdapterClient::Properties adapter_properties;
545 adapter_properties.address.ReplaceValue(adapter_address); 563 adapter_properties.address.ReplaceValue(adapter_address);
546 adapter_properties.powered.ReplaceValue(true); 564 adapter_properties.powered.ReplaceValue(true);
547 565
548 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 566 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
549 .WillRepeatedly(Return(&adapter_properties)); 567 .WillRepeatedly(Return(&adapter_properties));
550 568
551 // BluetoothAdapter::Observer::AdapterPoweredChanged will be called. 569 // BluetoothAdapter::Observer::AdapterPoweredChanged will be called.
552 MockBluetoothAdapter::Observer adapter_observer; 570 MockBluetoothAdapter::Observer adapter_observer;
553 adapter->AddObserver(&adapter_observer); 571 adapter_->AddObserver(&adapter_observer);
554 572
555 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 573 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
556 .Times(1); 574 .Times(1);
557 575
558 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), true)) 576 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), true))
559 .Times(1); 577 .Times(1);
560 578
561 adapter_callback.Run(adapter_path, true); 579 adapter_callback.Run(adapter_path, true);
562 580
563 // Adapter should have the correct property value. 581 // Adapter should have the correct property value.
564 EXPECT_TRUE(adapter->IsPowered()); 582 EXPECT_TRUE(adapter_->IsPowered());
565 } 583 }
566 584
567 TEST_F(BluetoothAdapterChromeOsTest, 585 TEST_F(BluetoothAdapterChromeOsTest,
568 DefaultAdapterPoweredPropertyInitiallyTrueWithoutAddress) { 586 DefaultAdapterPoweredPropertyInitiallyTrueWithoutAddress) {
569 const dbus::ObjectPath adapter_path("/fake/hci0"); 587 const dbus::ObjectPath adapter_path("/fake/hci0");
570 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 588 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
571 589
572 // Create the default adapter instance; 590 // Create the default adapter instance;
573 // BluetoothManagerClient::DefaultAdapter will be called once, passing 591 // BluetoothManagerClient::DefaultAdapter will be called once, passing
574 // a callback to obtain the adapter path. 592 // a callback to obtain the adapter path.
575 BluetoothManagerClient::AdapterCallback adapter_callback; 593 BluetoothManagerClient::AdapterCallback adapter_callback;
576 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 594 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
577 .WillOnce(SaveArg<0>(&adapter_callback)); 595 .WillOnce(SaveArg<0>(&adapter_callback));
578 596
579 scoped_refptr<BluetoothAdapter> adapter = 597 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
580 BluetoothAdapterFactory::DefaultAdapter(); 598 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
599 base::Unretained(this)));
581 600
582 // Call the adapter callback; 601 // Call the adapter callback;
583 // BluetoothAdapterClient::GetProperties will be called once to obtain 602 // BluetoothAdapterClient::GetProperties will be called once to obtain
584 // the property set but BluetoothAdapter::Observer::AdapterPoweredChanged 603 // the property set but BluetoothAdapter::Observer::AdapterPoweredChanged
585 // should not yet be called. 604 // should not yet be called.
586 MockBluetoothAdapterClient::Properties adapter_properties; 605 MockBluetoothAdapterClient::Properties adapter_properties;
587 adapter_properties.powered.ReplaceValue(true); 606 adapter_properties.powered.ReplaceValue(true);
588 607
589 MockBluetoothAdapter::Observer adapter_observer; 608 MockBluetoothAdapter::Observer adapter_observer;
590 adapter->AddObserver(&adapter_observer); 609 adapter_->AddObserver(&adapter_observer);
591 610
592 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 611 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
593 .WillRepeatedly(Return(&adapter_properties)); 612 .WillRepeatedly(Return(&adapter_properties));
594 613
595 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), _)) 614 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), _))
596 .Times(0); 615 .Times(0);
597 616
598 adapter_callback.Run(adapter_path, true); 617 adapter_callback.Run(adapter_path, true);
599 618
600 // Adapter should not yet have the property value. 619 // Adapter should not yet have the property value.
601 EXPECT_FALSE(adapter->IsPowered()); 620 EXPECT_FALSE(adapter_->IsPowered());
602 621
603 // Tell the adapter the address now, 622 // Tell the adapter the address now,
604 // BluetoothAdapter::Observer::AdapterPresentChanged and 623 // BluetoothAdapter::Observer::AdapterPresentChanged and
605 // BluetoothAdapter::Observer::AdapterPoweredChanged now must be called. 624 // BluetoothAdapter::Observer::AdapterPoweredChanged now must be called.
606 adapter_properties.address.ReplaceValue(adapter_address); 625 adapter_properties.address.ReplaceValue(adapter_address);
607 626
608 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 627 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
609 .Times(1); 628 .Times(1);
610 629
611 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), true)) 630 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), true))
612 .Times(1); 631 .Times(1);
613 632
614 BluetoothAdapterChromeOs* adapter_chromeos = 633 BluetoothAdapterChromeOs* adapter_chromeos =
615 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 634 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
616 635
617 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 636 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
618 ->AdapterPropertyChanged(adapter_path, 637 ->AdapterPropertyChanged(adapter_path,
619 adapter_properties.address.name()); 638 adapter_properties.address.name());
620 639
621 // Adapter should have the correct property value. 640 // Adapter should have the correct property value.
622 EXPECT_TRUE(adapter->IsPowered()); 641 EXPECT_TRUE(adapter_->IsPowered());
623 } 642 }
624 643
625 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterPoweredPropertyChanged) { 644 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterPoweredPropertyChanged) {
626 const dbus::ObjectPath adapter_path("/fake/hci0"); 645 const dbus::ObjectPath adapter_path("/fake/hci0");
627 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 646 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
628 647
629 // Create the default adapter instance; 648 // Create the default adapter instance;
630 // BluetoothManagerClient::DefaultAdapter will be called once, passing 649 // BluetoothManagerClient::DefaultAdapter will be called once, passing
631 // a callback to obtain the adapter path. 650 // a callback to obtain the adapter path.
632 BluetoothManagerClient::AdapterCallback adapter_callback; 651 BluetoothManagerClient::AdapterCallback adapter_callback;
633 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 652 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
634 .WillOnce(SaveArg<0>(&adapter_callback)); 653 .WillOnce(SaveArg<0>(&adapter_callback));
635 654
636 scoped_refptr<BluetoothAdapter> adapter = 655 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
637 BluetoothAdapterFactory::DefaultAdapter(); 656 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
657 base::Unretained(this)));
638 658
639 // Call the adapter callback; 659 // Call the adapter callback;
640 // BluetoothAdapterClient::GetProperties will be called once to obtain 660 // BluetoothAdapterClient::GetProperties will be called once to obtain
641 // the property set. 661 // the property set.
642 MockBluetoothAdapterClient::Properties adapter_properties; 662 MockBluetoothAdapterClient::Properties adapter_properties;
643 adapter_properties.address.ReplaceValue(adapter_address); 663 adapter_properties.address.ReplaceValue(adapter_address);
644 adapter_properties.powered.ReplaceValue(false); 664 adapter_properties.powered.ReplaceValue(false);
645 665
646 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 666 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
647 .WillRepeatedly(Return(&adapter_properties)); 667 .WillRepeatedly(Return(&adapter_properties));
648 668
649 adapter_callback.Run(adapter_path, true); 669 adapter_callback.Run(adapter_path, true);
650 670
651 // Adapter should have the correct property value. 671 // Adapter should have the correct property value.
652 EXPECT_FALSE(adapter->IsPowered()); 672 EXPECT_FALSE(adapter_->IsPowered());
653 673
654 // Report that the property has been changed; 674 // Report that the property has been changed;
655 // BluetoothAdapter::Observer::AdapterPoweredChanged will be called. 675 // BluetoothAdapter::Observer::AdapterPoweredChanged will be called.
656 MockBluetoothAdapter::Observer adapter_observer; 676 MockBluetoothAdapter::Observer adapter_observer;
657 adapter->AddObserver(&adapter_observer); 677 adapter_->AddObserver(&adapter_observer);
658 678
659 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), true)) 679 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), true))
660 .Times(1); 680 .Times(1);
661 681
662 adapter_properties.powered.ReplaceValue(true); 682 adapter_properties.powered.ReplaceValue(true);
663 683
664 BluetoothAdapterChromeOs* adapter_chromeos = 684 BluetoothAdapterChromeOs* adapter_chromeos =
665 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 685 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
666 686
667 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 687 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
668 ->AdapterPropertyChanged(adapter_path, 688 ->AdapterPropertyChanged(adapter_path,
669 adapter_properties.powered.name()); 689 adapter_properties.powered.name());
670 690
671 // Adapter should have the new property values. 691 // Adapter should have the new property values.
672 EXPECT_TRUE(adapter->IsPowered()); 692 EXPECT_TRUE(adapter_->IsPowered());
673 } 693 }
674 694
675 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterPoweredPropertyUnchanged) { 695 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterPoweredPropertyUnchanged) {
676 const dbus::ObjectPath adapter_path("/fake/hci0"); 696 const dbus::ObjectPath adapter_path("/fake/hci0");
677 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 697 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
678 698
679 // Create the default adapter instance; 699 // Create the default adapter instance;
680 // BluetoothManagerClient::DefaultAdapter will be called once, passing 700 // BluetoothManagerClient::DefaultAdapter will be called once, passing
681 // a callback to obtain the adapter path. 701 // a callback to obtain the adapter path.
682 BluetoothManagerClient::AdapterCallback adapter_callback; 702 BluetoothManagerClient::AdapterCallback adapter_callback;
683 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 703 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
684 .WillOnce(SaveArg<0>(&adapter_callback)); 704 .WillOnce(SaveArg<0>(&adapter_callback));
685 705
686 scoped_refptr<BluetoothAdapter> adapter = 706 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
687 BluetoothAdapterFactory::DefaultAdapter(); 707 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
708 base::Unretained(this)));
688 709
689 // Call the adapter callback; 710 // Call the adapter callback;
690 // BluetoothAdapterClient::GetProperties will be called once to obtain 711 // BluetoothAdapterClient::GetProperties will be called once to obtain
691 // the property set. 712 // the property set.
692 MockBluetoothAdapterClient::Properties adapter_properties; 713 MockBluetoothAdapterClient::Properties adapter_properties;
693 adapter_properties.address.ReplaceValue(adapter_address); 714 adapter_properties.address.ReplaceValue(adapter_address);
694 adapter_properties.powered.ReplaceValue(true); 715 adapter_properties.powered.ReplaceValue(true);
695 716
696 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 717 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
697 .WillRepeatedly(Return(&adapter_properties)); 718 .WillRepeatedly(Return(&adapter_properties));
698 719
699 adapter_callback.Run(adapter_path, true); 720 adapter_callback.Run(adapter_path, true);
700 721
701 // Adapter should have the correct property value. 722 // Adapter should have the correct property value.
702 EXPECT_TRUE(adapter->IsPowered()); 723 EXPECT_TRUE(adapter_->IsPowered());
703 724
704 // Report that the property has been changed, but don't change the value; 725 // Report that the property has been changed, but don't change the value;
705 // BluetoothAdapter::Observer::AdapterPoweredChanged should not be called. 726 // BluetoothAdapter::Observer::AdapterPoweredChanged should not be called.
706 MockBluetoothAdapter::Observer adapter_observer; 727 MockBluetoothAdapter::Observer adapter_observer;
707 adapter->AddObserver(&adapter_observer); 728 adapter_->AddObserver(&adapter_observer);
708 729
709 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), _)) 730 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), _))
710 .Times(0); 731 .Times(0);
711 732
712 BluetoothAdapterChromeOs* adapter_chromeos = 733 BluetoothAdapterChromeOs* adapter_chromeos =
713 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 734 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
714 735
715 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 736 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
716 ->AdapterPropertyChanged(adapter_path, 737 ->AdapterPropertyChanged(adapter_path,
717 adapter_properties.powered.name()); 738 adapter_properties.powered.name());
718 739
719 // Adapter should still have the same property values. 740 // Adapter should still have the same property values.
720 EXPECT_TRUE(adapter->IsPowered()); 741 EXPECT_TRUE(adapter_->IsPowered());
721 } 742 }
722 743
723 TEST_F(BluetoothAdapterChromeOsTest, 744 TEST_F(BluetoothAdapterChromeOsTest,
724 DefaultAdapterPoweredPropertyChangedWithoutAddress) { 745 DefaultAdapterPoweredPropertyChangedWithoutAddress) {
725 const dbus::ObjectPath adapter_path("/fake/hci0"); 746 const dbus::ObjectPath adapter_path("/fake/hci0");
726 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 747 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
727 748
728 // Create the default adapter instance; 749 // Create the default adapter instance;
729 // BluetoothManagerClient::DefaultAdapter will be called once, passing 750 // BluetoothManagerClient::DefaultAdapter will be called once, passing
730 // a callback to obtain the adapter path. 751 // a callback to obtain the adapter path.
731 BluetoothManagerClient::AdapterCallback adapter_callback; 752 BluetoothManagerClient::AdapterCallback adapter_callback;
732 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 753 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
733 .WillOnce(SaveArg<0>(&adapter_callback)); 754 .WillOnce(SaveArg<0>(&adapter_callback));
734 755
735 scoped_refptr<BluetoothAdapter> adapter = 756 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
736 BluetoothAdapterFactory::DefaultAdapter(); 757 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
758 base::Unretained(this)));
737 759
738 // Call the adapter callback; 760 // Call the adapter callback;
739 // BluetoothAdapterClient::GetProperties will be called once to obtain 761 // BluetoothAdapterClient::GetProperties will be called once to obtain
740 // the property set but BluetoothAdapter::Observer::AdapterPoweredChanged 762 // the property set but BluetoothAdapter::Observer::AdapterPoweredChanged
741 // should not yet be called. 763 // should not yet be called.
742 MockBluetoothAdapterClient::Properties adapter_properties; 764 MockBluetoothAdapterClient::Properties adapter_properties;
743 765
744 MockBluetoothAdapter::Observer adapter_observer; 766 MockBluetoothAdapter::Observer adapter_observer;
745 adapter->AddObserver(&adapter_observer); 767 adapter_->AddObserver(&adapter_observer);
746 768
747 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 769 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
748 .WillRepeatedly(Return(&adapter_properties)); 770 .WillRepeatedly(Return(&adapter_properties));
749 771
750 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), _)) 772 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), _))
751 .Times(0); 773 .Times(0);
752 774
753 adapter_callback.Run(adapter_path, true); 775 adapter_callback.Run(adapter_path, true);
754 776
755 // Tell the adapter that its powered property changed, the observer 777 // Tell the adapter that its powered property changed, the observer
756 // method should still not be called because there is no address for 778 // method should still not be called because there is no address for
757 // the adapter so it is not present. 779 // the adapter so it is not present.
758 adapter_properties.powered.ReplaceValue(true); 780 adapter_properties.powered.ReplaceValue(true);
759 781
760 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), _)) 782 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), _))
761 .Times(0); 783 .Times(0);
762 784
763 BluetoothAdapterChromeOs* adapter_chromeos = 785 BluetoothAdapterChromeOs* adapter_chromeos =
764 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 786 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
765 787
766 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 788 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
767 ->AdapterPropertyChanged(adapter_path, 789 ->AdapterPropertyChanged(adapter_path,
768 adapter_properties.powered.name()); 790 adapter_properties.powered.name());
769 791
770 // Adapter should not yet have the property value. 792 // Adapter should not yet have the property value.
771 EXPECT_FALSE(adapter->IsPowered()); 793 EXPECT_FALSE(adapter_->IsPowered());
772 794
773 // Tell the adapter the address now, 795 // Tell the adapter the address now,
774 // BluetoothAdapter::Observer::AdapterPresentChanged and 796 // BluetoothAdapter::Observer::AdapterPresentChanged and
775 // BluetoothAdapter::Observer::AdapterPoweredChanged now must be called. 797 // BluetoothAdapter::Observer::AdapterPoweredChanged now must be called.
776 adapter_properties.address.ReplaceValue(adapter_address); 798 adapter_properties.address.ReplaceValue(adapter_address);
777 799
778 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 800 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
779 .Times(1); 801 .Times(1);
780 802
781 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), true)) 803 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), true))
782 .Times(1); 804 .Times(1);
783 805
784 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 806 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
785 ->AdapterPropertyChanged(adapter_path, 807 ->AdapterPropertyChanged(adapter_path,
786 adapter_properties.address.name()); 808 adapter_properties.address.name());
787 809
788 // Adapter should now have the correct property value. 810 // Adapter should now have the correct property value.
789 EXPECT_TRUE(adapter->IsPowered()); 811 EXPECT_TRUE(adapter_->IsPowered());
790 } 812 }
791 813
792 TEST_F(BluetoothAdapterChromeOsTest, 814 TEST_F(BluetoothAdapterChromeOsTest,
793 DefaultAdapterPoweredPropertyResetOnReplace) { 815 DefaultAdapterPoweredPropertyResetOnReplace) {
794 const dbus::ObjectPath initial_adapter_path("/fake/hci0"); 816 const dbus::ObjectPath initial_adapter_path("/fake/hci0");
795 const dbus::ObjectPath new_adapter_path("/fake/hci1"); 817 const dbus::ObjectPath new_adapter_path("/fake/hci1");
796 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE"; 818 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE";
797 const std::string new_adapter_address = "00:C0:11:CO:FE:FE"; 819 const std::string new_adapter_address = "00:C0:11:CO:FE:FE";
798 820
799 // Create the default adapter instance; 821 // Create the default adapter instance;
800 // BluetoothManagerClient::DefaultAdapter will be called once, passing 822 // BluetoothManagerClient::DefaultAdapter will be called once, passing
801 // a callback to obtain the adapter path. 823 // a callback to obtain the adapter path.
802 BluetoothManagerClient::AdapterCallback adapter_callback; 824 BluetoothManagerClient::AdapterCallback adapter_callback;
803 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 825 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
804 .WillOnce(SaveArg<0>(&adapter_callback)); 826 .WillOnce(SaveArg<0>(&adapter_callback));
805 827
806 scoped_refptr<BluetoothAdapter> adapter = 828 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
807 BluetoothAdapterFactory::DefaultAdapter(); 829 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
830 base::Unretained(this)));
808 831
809 // Call the adapter callback; 832 // Call the adapter callback;
810 // BluetoothAdapterClient::GetProperties will be called once to obtain 833 // BluetoothAdapterClient::GetProperties will be called once to obtain
811 // the property set. 834 // the property set.
812 MockBluetoothAdapterClient::Properties initial_adapter_properties; 835 MockBluetoothAdapterClient::Properties initial_adapter_properties;
813 initial_adapter_properties.address.ReplaceValue(initial_adapter_address); 836 initial_adapter_properties.address.ReplaceValue(initial_adapter_address);
814 initial_adapter_properties.powered.ReplaceValue(true); 837 initial_adapter_properties.powered.ReplaceValue(true);
815 838
816 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path)) 839 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path))
817 .WillRepeatedly(Return(&initial_adapter_properties)); 840 .WillRepeatedly(Return(&initial_adapter_properties));
818 841
819 adapter_callback.Run(initial_adapter_path, true); 842 adapter_callback.Run(initial_adapter_path, true);
820 843
821 // Tell the adapter the default adapter changed; 844 // Tell the adapter the default adapter changed;
822 // BluetoothAdapterClient::GetProperties will be called once to obtain 845 // BluetoothAdapterClient::GetProperties will be called once to obtain
823 // the property set. 846 // the property set.
824 MockBluetoothAdapterClient::Properties new_adapter_properties; 847 MockBluetoothAdapterClient::Properties new_adapter_properties;
825 new_adapter_properties.address.ReplaceValue(new_adapter_address); 848 new_adapter_properties.address.ReplaceValue(new_adapter_address);
826 849
827 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path)) 850 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path))
828 .WillRepeatedly(Return(&new_adapter_properties)); 851 .WillRepeatedly(Return(&new_adapter_properties));
829 852
830 // BluetoothAdapter::Observer::AdapterPoweredChanged will be called. 853 // BluetoothAdapter::Observer::AdapterPoweredChanged will be called.
831 MockBluetoothAdapter::Observer adapter_observer; 854 MockBluetoothAdapter::Observer adapter_observer;
832 adapter->AddObserver(&adapter_observer); 855 adapter_->AddObserver(&adapter_observer);
833 856
834 { 857 {
835 InSequence s; 858 InSequence s;
836 859
837 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) 860 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
838 .Times(1); 861 .Times(1);
839 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 862 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
840 .Times(1); 863 .Times(1);
841 } 864 }
842 865
843 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), false)) 866 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), false))
844 .Times(1); 867 .Times(1);
845 868
846 BluetoothAdapterChromeOs* adapter_chromeos = 869 BluetoothAdapterChromeOs* adapter_chromeos =
847 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 870 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
848 871
849 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 872 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
850 ->DefaultAdapterChanged(new_adapter_path); 873 ->DefaultAdapterChanged(new_adapter_path);
851 874
852 // Adapter should have the new property value. 875 // Adapter should have the new property value.
853 EXPECT_FALSE(adapter->IsPowered()); 876 EXPECT_FALSE(adapter_->IsPowered());
854 } 877 }
855 878
856 TEST_F(BluetoothAdapterChromeOsTest, 879 TEST_F(BluetoothAdapterChromeOsTest,
857 DefaultAdapterPoweredPropertyResetOnReplaceWhenTrue) { 880 DefaultAdapterPoweredPropertyResetOnReplaceWhenTrue) {
858 const dbus::ObjectPath initial_adapter_path("/fake/hci0"); 881 const dbus::ObjectPath initial_adapter_path("/fake/hci0");
859 const dbus::ObjectPath new_adapter_path("/fake/hci1"); 882 const dbus::ObjectPath new_adapter_path("/fake/hci1");
860 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE"; 883 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE";
861 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE"; 884 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE";
862 885
863 // Create the default adapter instance; 886 // Create the default adapter instance;
864 // BluetoothManagerClient::DefaultAdapter will be called once, passing 887 // BluetoothManagerClient::DefaultAdapter will be called once, passing
865 // a callback to obtain the adapter path. 888 // a callback to obtain the adapter path.
866 BluetoothManagerClient::AdapterCallback adapter_callback; 889 BluetoothManagerClient::AdapterCallback adapter_callback;
867 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 890 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
868 .WillOnce(SaveArg<0>(&adapter_callback)); 891 .WillOnce(SaveArg<0>(&adapter_callback));
869 892
870 scoped_refptr<BluetoothAdapter> adapter = 893 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
871 BluetoothAdapterFactory::DefaultAdapter(); 894 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
895 base::Unretained(this)));
872 896
873 // Call the adapter callback; 897 // Call the adapter callback;
874 // BluetoothAdapterClient::GetProperties will be called once to obtain 898 // BluetoothAdapterClient::GetProperties will be called once to obtain
875 // the property set. 899 // the property set.
876 MockBluetoothAdapterClient::Properties initial_adapter_properties; 900 MockBluetoothAdapterClient::Properties initial_adapter_properties;
877 initial_adapter_properties.address.ReplaceValue(initial_adapter_address); 901 initial_adapter_properties.address.ReplaceValue(initial_adapter_address);
878 initial_adapter_properties.powered.ReplaceValue(true); 902 initial_adapter_properties.powered.ReplaceValue(true);
879 903
880 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path)) 904 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path))
881 .WillRepeatedly(Return(&initial_adapter_properties)); 905 .WillRepeatedly(Return(&initial_adapter_properties));
882 906
883 adapter_callback.Run(initial_adapter_path, true); 907 adapter_callback.Run(initial_adapter_path, true);
884 908
885 // Tell the adapter the default adapter changed; 909 // Tell the adapter the default adapter changed;
886 // BluetoothAdapterClient::GetProperties will be called once to obtain 910 // BluetoothAdapterClient::GetProperties will be called once to obtain
887 // the property set. 911 // the property set.
888 MockBluetoothAdapterClient::Properties new_adapter_properties; 912 MockBluetoothAdapterClient::Properties new_adapter_properties;
889 new_adapter_properties.address.ReplaceValue(new_adapter_address); 913 new_adapter_properties.address.ReplaceValue(new_adapter_address);
890 new_adapter_properties.powered.ReplaceValue(true); 914 new_adapter_properties.powered.ReplaceValue(true);
891 915
892 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path)) 916 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path))
893 .WillRepeatedly(Return(&new_adapter_properties)); 917 .WillRepeatedly(Return(&new_adapter_properties));
894 918
895 // BluetoothAdapter::Observer::AdapterPoweredChanged will be called once 919 // BluetoothAdapter::Observer::AdapterPoweredChanged will be called once
896 // to set the value to false for the previous adapter and once to set the 920 // to set the value to false for the previous adapter and once to set the
897 // value to true for the new adapter. 921 // value to true for the new adapter.
898 MockBluetoothAdapter::Observer adapter_observer; 922 MockBluetoothAdapter::Observer adapter_observer;
899 adapter->AddObserver(&adapter_observer); 923 adapter_->AddObserver(&adapter_observer);
900 924
901 { 925 {
902 InSequence s; 926 InSequence s;
903 927
904 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) 928 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
905 .Times(1); 929 .Times(1);
906 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 930 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
907 .Times(1); 931 .Times(1);
908 } 932 }
909 933
910 { 934 {
911 InSequence s; 935 InSequence s;
912 936
913 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), false)) 937 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), false))
914 .Times(1); 938 .Times(1);
915 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), true)) 939 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), true))
916 .Times(1); 940 .Times(1);
917 } 941 }
918 942
919 BluetoothAdapterChromeOs* adapter_chromeos = 943 BluetoothAdapterChromeOs* adapter_chromeos =
920 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 944 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
921 945
922 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 946 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
923 ->DefaultAdapterChanged(new_adapter_path); 947 ->DefaultAdapterChanged(new_adapter_path);
924 948
925 // Adapter should have the new property value. 949 // Adapter should have the new property value.
926 EXPECT_TRUE(adapter->IsPowered()); 950 EXPECT_TRUE(adapter_->IsPowered());
927 } 951 }
928 952
929 TEST_F(BluetoothAdapterChromeOsTest, 953 TEST_F(BluetoothAdapterChromeOsTest,
930 DefaultAdapterPoweredPropertyResetOnRemove) { 954 DefaultAdapterPoweredPropertyResetOnRemove) {
931 const dbus::ObjectPath adapter_path("/fake/hci0"); 955 const dbus::ObjectPath adapter_path("/fake/hci0");
932 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 956 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
933 957
934 // Create the default adapter instance; 958 // Create the default adapter instance;
935 // BluetoothManagerClient::DefaultAdapter will be called once, passing 959 // BluetoothManagerClient::DefaultAdapter will be called once, passing
936 // a callback to obtain the adapter path. 960 // a callback to obtain the adapter path.
937 BluetoothManagerClient::AdapterCallback adapter_callback; 961 BluetoothManagerClient::AdapterCallback adapter_callback;
938 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 962 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
939 .WillOnce(SaveArg<0>(&adapter_callback)); 963 .WillOnce(SaveArg<0>(&adapter_callback));
940 964
941 scoped_refptr<BluetoothAdapter> adapter = 965 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
942 BluetoothAdapterFactory::DefaultAdapter(); 966 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
967 base::Unretained(this)));
943 968
944 // Call the adapter callback; 969 // Call the adapter callback;
945 // BluetoothAdapterClient::GetProperties will be called once to obtain 970 // BluetoothAdapterClient::GetProperties will be called once to obtain
946 // the property set. 971 // the property set.
947 MockBluetoothAdapterClient::Properties adapter_properties; 972 MockBluetoothAdapterClient::Properties adapter_properties;
948 adapter_properties.address.ReplaceValue(adapter_address); 973 adapter_properties.address.ReplaceValue(adapter_address);
949 adapter_properties.powered.ReplaceValue(true); 974 adapter_properties.powered.ReplaceValue(true);
950 975
951 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 976 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
952 .WillRepeatedly(Return(&adapter_properties)); 977 .WillRepeatedly(Return(&adapter_properties));
953 978
954 adapter_callback.Run(adapter_path, true); 979 adapter_callback.Run(adapter_path, true);
955 980
956 // Report that the adapter has been removed; 981 // Report that the adapter has been removed;
957 // BluetoothAdapter::Observer::AdapterPoweredChanged will be called. 982 // BluetoothAdapter::Observer::AdapterPoweredChanged will be called.
958 MockBluetoothAdapter::Observer adapter_observer; 983 MockBluetoothAdapter::Observer adapter_observer;
959 adapter->AddObserver(&adapter_observer); 984 adapter_->AddObserver(&adapter_observer);
960 985
961 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) 986 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
962 .Times(1); 987 .Times(1);
963 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter.get(), false)) 988 EXPECT_CALL(adapter_observer, AdapterPoweredChanged(adapter_.get(), false))
964 .Times(1); 989 .Times(1);
965 990
966 BluetoothAdapterChromeOs* adapter_chromeos = 991 BluetoothAdapterChromeOs* adapter_chromeos =
967 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 992 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
968 993
969 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 994 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
970 ->AdapterRemoved(adapter_path); 995 ->AdapterRemoved(adapter_path);
971 996
972 // Adapter should have the new property value. 997 // Adapter should have the new property value.
973 EXPECT_FALSE(adapter->IsPowered()); 998 EXPECT_FALSE(adapter_->IsPowered());
974 } 999 }
975 1000
976 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterSetPowered) { 1001 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterSetPowered) {
977 const dbus::ObjectPath adapter_path("/fake/hci0"); 1002 const dbus::ObjectPath adapter_path("/fake/hci0");
978 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 1003 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
979 1004
980 // Create the default adapter instance; 1005 // Create the default adapter instance;
981 // BluetoothManagerClient::DefaultAdapter will be called once, passing 1006 // BluetoothManagerClient::DefaultAdapter will be called once, passing
982 // a callback to obtain the adapter path. 1007 // a callback to obtain the adapter path.
983 BluetoothManagerClient::AdapterCallback adapter_callback; 1008 BluetoothManagerClient::AdapterCallback adapter_callback;
984 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 1009 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
985 .WillOnce(SaveArg<0>(&adapter_callback)); 1010 .WillOnce(SaveArg<0>(&adapter_callback));
986 1011
987 scoped_refptr<BluetoothAdapter> adapter = 1012 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
988 BluetoothAdapterFactory::DefaultAdapter(); 1013 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
1014 base::Unretained(this)));
989 1015
990 // Call the adapter callback; 1016 // Call the adapter callback;
991 // BluetoothAdapterClient::GetProperties will be called once to obtain 1017 // BluetoothAdapterClient::GetProperties will be called once to obtain
992 // the property set. 1018 // the property set.
993 MockBluetoothAdapterClient::Properties adapter_properties; 1019 MockBluetoothAdapterClient::Properties adapter_properties;
994 1020
995 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 1021 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
996 .WillRepeatedly(Return(&adapter_properties)); 1022 .WillRepeatedly(Return(&adapter_properties));
997 1023
998 adapter_callback.Run(adapter_path, true); 1024 adapter_callback.Run(adapter_path, true);
999 1025
1000 // Request that the powered property be changed; 1026 // Request that the powered property be changed;
1001 // MockBluetoothAdapterClient::Set should be called, passing the address 1027 // MockBluetoothAdapterClient::Set should be called, passing the address
1002 // of the powered property and a callback to receive the response. 1028 // of the powered property and a callback to receive the response.
1003 dbus::PropertySet::SetCallback set_callback; 1029 dbus::PropertySet::SetCallback set_callback;
1004 EXPECT_CALL(adapter_properties, Set(&adapter_properties.powered, _)) 1030 EXPECT_CALL(adapter_properties, Set(&adapter_properties.powered, _))
1005 .WillOnce(SaveArg<1>(&set_callback)); 1031 .WillOnce(SaveArg<1>(&set_callback));
1006 1032
1007 adapter->SetPowered(true, 1033 adapter_->SetPowered(true,
1008 base::Bind(&BluetoothAdapterChromeOsTest::SetCallback, 1034 base::Bind(&BluetoothAdapterChromeOsTest::SetCallback,
1009 base::Unretained(this)), 1035 base::Unretained(this)),
1010 base::Bind(&BluetoothAdapterChromeOsTest::ErrorCallback, 1036 base::Bind(&BluetoothAdapterChromeOsTest::ErrorCallback,
1011 base::Unretained(this))); 1037 base::Unretained(this)));
1012 1038
1013 // Reply to the callback to indicate success, the set callback we provided 1039 // Reply to the callback to indicate success, the set callback we provided
1014 // should be called but the properties should not be refetched. 1040 // should be called but the properties should not be refetched.
1015 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 1041 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
1016 .Times(0); 1042 .Times(0);
1017 1043
1018 set_callback.Run(true); 1044 set_callback.Run(true);
1019 1045
1020 EXPECT_TRUE(set_callback_called_); 1046 EXPECT_TRUE(set_callback_called_);
1021 EXPECT_FALSE(error_callback_called_); 1047 EXPECT_FALSE(error_callback_called_);
1022 } 1048 }
1023 1049
1024 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterSetPoweredError) { 1050 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterSetPoweredError) {
1025 const dbus::ObjectPath adapter_path("/fake/hci0"); 1051 const dbus::ObjectPath adapter_path("/fake/hci0");
1026 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 1052 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
1027 1053
1028 // Create the default adapter instance; 1054 // Create the default adapter instance;
1029 // BluetoothManagerClient::DefaultAdapter will be called once, passing 1055 // BluetoothManagerClient::DefaultAdapter will be called once, passing
1030 // a callback to obtain the adapter path. 1056 // a callback to obtain the adapter path.
1031 BluetoothManagerClient::AdapterCallback adapter_callback; 1057 BluetoothManagerClient::AdapterCallback adapter_callback;
1032 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 1058 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
1033 .WillOnce(SaveArg<0>(&adapter_callback)); 1059 .WillOnce(SaveArg<0>(&adapter_callback));
1034 1060
1035 scoped_refptr<BluetoothAdapter> adapter = 1061 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
1036 BluetoothAdapterFactory::DefaultAdapter(); 1062 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
1063 base::Unretained(this)));
1037 1064
1038 // Call the adapter callback; 1065 // Call the adapter callback;
1039 // BluetoothAdapterClient::GetProperties will be called once to obtain 1066 // BluetoothAdapterClient::GetProperties will be called once to obtain
1040 // the property set. 1067 // the property set.
1041 MockBluetoothAdapterClient::Properties adapter_properties; 1068 MockBluetoothAdapterClient::Properties adapter_properties;
1042 1069
1043 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 1070 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
1044 .WillRepeatedly(Return(&adapter_properties)); 1071 .WillRepeatedly(Return(&adapter_properties));
1045 1072
1046 adapter_callback.Run(adapter_path, true); 1073 adapter_callback.Run(adapter_path, true);
1047 1074
1048 // Request that the powered property be changed; 1075 // Request that the powered property be changed;
1049 // MockBluetoothAdapterClient::Set should be called, passing the address 1076 // MockBluetoothAdapterClient::Set should be called, passing the address
1050 // of the powered property and a callback to receive the response. 1077 // of the powered property and a callback to receive the response.
1051 dbus::PropertySet::SetCallback set_callback; 1078 dbus::PropertySet::SetCallback set_callback;
1052 EXPECT_CALL(adapter_properties, Set(&adapter_properties.powered, _)) 1079 EXPECT_CALL(adapter_properties, Set(&adapter_properties.powered, _))
1053 .WillOnce(SaveArg<1>(&set_callback)); 1080 .WillOnce(SaveArg<1>(&set_callback));
1054 1081
1055 adapter->SetPowered(true, 1082 adapter_->SetPowered(true,
1056 base::Bind(&BluetoothAdapterChromeOsTest::SetCallback, 1083 base::Bind(&BluetoothAdapterChromeOsTest::SetCallback,
1057 base::Unretained(this)), 1084 base::Unretained(this)),
1058 base::Bind(&BluetoothAdapterChromeOsTest::ErrorCallback, 1085 base::Bind(&BluetoothAdapterChromeOsTest::ErrorCallback,
1059 base::Unretained(this))); 1086 base::Unretained(this)));
1060 1087
1061 // Reply to the callback to indicate failure, the error callback we provided 1088 // Reply to the callback to indicate failure, the error callback we provided
1062 // should be called but the properties should not be refetched. 1089 // should be called but the properties should not be refetched.
1063 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 1090 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
1064 .Times(0); 1091 .Times(0);
1065 1092
1066 set_callback.Run(false); 1093 set_callback.Run(false);
1067 1094
1068 EXPECT_FALSE(set_callback_called_); 1095 EXPECT_FALSE(set_callback_called_);
1069 EXPECT_TRUE(error_callback_called_); 1096 EXPECT_TRUE(error_callback_called_);
1070 } 1097 }
1071 1098
1072 TEST_F(BluetoothAdapterChromeOsTest, 1099 TEST_F(BluetoothAdapterChromeOsTest,
1073 DefaultAdapterDiscoveringPropertyInitiallyFalse) { 1100 DefaultAdapterDiscoveringPropertyInitiallyFalse) {
1074 const dbus::ObjectPath adapter_path("/fake/hci0"); 1101 const dbus::ObjectPath adapter_path("/fake/hci0");
1075 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 1102 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
1076 1103
1077 // Create the default adapter instance; 1104 // Create the default adapter instance;
1078 // BluetoothManagerClient::DefaultAdapter will be called once, passing 1105 // BluetoothManagerClient::DefaultAdapter will be called once, passing
1079 // a callback to obtain the adapter path. 1106 // a callback to obtain the adapter path.
1080 BluetoothManagerClient::AdapterCallback adapter_callback; 1107 BluetoothManagerClient::AdapterCallback adapter_callback;
1081 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 1108 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
1082 .WillOnce(SaveArg<0>(&adapter_callback)); 1109 .WillOnce(SaveArg<0>(&adapter_callback));
1083 1110
1084 scoped_refptr<BluetoothAdapter> adapter = 1111 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
1085 BluetoothAdapterFactory::DefaultAdapter(); 1112 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
1113 base::Unretained(this)));
1086 1114
1087 // Call the adapter callback; 1115 // Call the adapter callback;
1088 // BluetoothAdapterClient::GetProperties will be called once to obtain 1116 // BluetoothAdapterClient::GetProperties will be called once to obtain
1089 // the property set. 1117 // the property set.
1090 MockBluetoothAdapterClient::Properties adapter_properties; 1118 MockBluetoothAdapterClient::Properties adapter_properties;
1091 adapter_properties.address.ReplaceValue(adapter_address); 1119 adapter_properties.address.ReplaceValue(adapter_address);
1092 adapter_properties.discovering.ReplaceValue(false); 1120 adapter_properties.discovering.ReplaceValue(false);
1093 1121
1094 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 1122 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
1095 .WillRepeatedly(Return(&adapter_properties)); 1123 .WillRepeatedly(Return(&adapter_properties));
1096 1124
1097 adapter_callback.Run(adapter_path, true); 1125 adapter_callback.Run(adapter_path, true);
1098 1126
1099 // Adapter should have the correct property value. 1127 // Adapter should have the correct property value.
1100 EXPECT_FALSE(adapter->IsDiscovering()); 1128 EXPECT_FALSE(adapter_->IsDiscovering());
1101 } 1129 }
1102 1130
1103 TEST_F(BluetoothAdapterChromeOsTest, 1131 TEST_F(BluetoothAdapterChromeOsTest,
1104 DefaultAdapterDiscoveringPropertyInitiallyTrue) { 1132 DefaultAdapterDiscoveringPropertyInitiallyTrue) {
1105 const dbus::ObjectPath adapter_path("/fake/hci0"); 1133 const dbus::ObjectPath adapter_path("/fake/hci0");
1106 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 1134 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
1107 1135
1108 // Create the default adapter instance; 1136 // Create the default adapter instance;
1109 // BluetoothManagerClient::DefaultAdapter will be called once, passing 1137 // BluetoothManagerClient::DefaultAdapter will be called once, passing
1110 // a callback to obtain the adapter path. 1138 // a callback to obtain the adapter path.
1111 BluetoothManagerClient::AdapterCallback adapter_callback; 1139 BluetoothManagerClient::AdapterCallback adapter_callback;
1112 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 1140 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
1113 .WillOnce(SaveArg<0>(&adapter_callback)); 1141 .WillOnce(SaveArg<0>(&adapter_callback));
1114 1142
1115 scoped_refptr<BluetoothAdapter> adapter = 1143 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
1116 BluetoothAdapterFactory::DefaultAdapter(); 1144 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
1145 base::Unretained(this)));
1117 1146
1118 // Call the adapter callback; 1147 // Call the adapter callback;
1119 // BluetoothAdapterClient::GetProperties will be called once to obtain 1148 // BluetoothAdapterClient::GetProperties will be called once to obtain
1120 // the property set. 1149 // the property set.
1121 MockBluetoothAdapterClient::Properties adapter_properties; 1150 MockBluetoothAdapterClient::Properties adapter_properties;
1122 adapter_properties.address.ReplaceValue(adapter_address); 1151 adapter_properties.address.ReplaceValue(adapter_address);
1123 adapter_properties.discovering.ReplaceValue(true); 1152 adapter_properties.discovering.ReplaceValue(true);
1124 1153
1125 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 1154 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
1126 .WillRepeatedly(Return(&adapter_properties)); 1155 .WillRepeatedly(Return(&adapter_properties));
1127 1156
1128 // BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called. 1157 // BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called.
1129 MockBluetoothAdapter::Observer adapter_observer; 1158 MockBluetoothAdapter::Observer adapter_observer;
1130 adapter->AddObserver(&adapter_observer); 1159 adapter_->AddObserver(&adapter_observer);
1131 1160
1132 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 1161 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
1133 .Times(1); 1162 .Times(1);
1134 1163
1135 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), true)) 1164 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), true))
1136 .Times(1); 1165 .Times(1);
1137 1166
1138 adapter_callback.Run(adapter_path, true); 1167 adapter_callback.Run(adapter_path, true);
1139 1168
1140 // Adapter should have the correct property value. 1169 // Adapter should have the correct property value.
1141 EXPECT_TRUE(adapter->IsDiscovering()); 1170 EXPECT_TRUE(adapter_->IsDiscovering());
1142 } 1171 }
1143 1172
1144 TEST_F(BluetoothAdapterChromeOsTest, 1173 TEST_F(BluetoothAdapterChromeOsTest,
1145 DefaultAdapterDiscoveringPropertyInitiallyTrueWithoutAddress) { 1174 DefaultAdapterDiscoveringPropertyInitiallyTrueWithoutAddress) {
1146 const dbus::ObjectPath adapter_path("/fake/hci0"); 1175 const dbus::ObjectPath adapter_path("/fake/hci0");
1147 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 1176 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
1148 1177
1149 // Create the default adapter instance; 1178 // Create the default adapter instance;
1150 // BluetoothManagerClient::DefaultAdapter will be called once, passing 1179 // BluetoothManagerClient::DefaultAdapter will be called once, passing
1151 // a callback to obtain the adapter path. 1180 // a callback to obtain the adapter path.
1152 BluetoothManagerClient::AdapterCallback adapter_callback; 1181 BluetoothManagerClient::AdapterCallback adapter_callback;
1153 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 1182 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
1154 .WillOnce(SaveArg<0>(&adapter_callback)); 1183 .WillOnce(SaveArg<0>(&adapter_callback));
1155 1184
1156 scoped_refptr<BluetoothAdapter> adapter = 1185 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
1157 BluetoothAdapterFactory::DefaultAdapter(); 1186 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
1187 base::Unretained(this)));
1158 1188
1159 // Call the adapter callback; 1189 // Call the adapter callback;
1160 // BluetoothAdapterClient::GetProperties will be called once to obtain 1190 // BluetoothAdapterClient::GetProperties will be called once to obtain
1161 // the property set but BluetoothAdapter::Observer::AdapterDiscoveringChanged 1191 // the property set but BluetoothAdapter::Observer::AdapterDiscoveringChanged
1162 // should not yet be called. 1192 // should not yet be called.
1163 MockBluetoothAdapterClient::Properties adapter_properties; 1193 MockBluetoothAdapterClient::Properties adapter_properties;
1164 adapter_properties.discovering.ReplaceValue(true); 1194 adapter_properties.discovering.ReplaceValue(true);
1165 1195
1166 MockBluetoothAdapter::Observer adapter_observer; 1196 MockBluetoothAdapter::Observer adapter_observer;
1167 adapter->AddObserver(&adapter_observer); 1197 adapter_->AddObserver(&adapter_observer);
1168 1198
1169 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 1199 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
1170 .WillRepeatedly(Return(&adapter_properties)); 1200 .WillRepeatedly(Return(&adapter_properties));
1171 1201
1172 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), _)) 1202 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), _))
1173 .Times(0); 1203 .Times(0);
1174 1204
1175 adapter_callback.Run(adapter_path, true); 1205 adapter_callback.Run(adapter_path, true);
1176 1206
1177 // Adapter should not yet have the property value. 1207 // Adapter should not yet have the property value.
1178 EXPECT_FALSE(adapter->IsDiscovering()); 1208 EXPECT_FALSE(adapter_->IsDiscovering());
1179 1209
1180 // Tell the adapter the address now, 1210 // Tell the adapter the address now,
1181 // BluetoothAdapter::Observer::AdapterPresentChanged and 1211 // BluetoothAdapter::Observer::AdapterPresentChanged and
1182 // BluetoothAdapter::Observer::AdapterDiscoveringChanged now must be called. 1212 // BluetoothAdapter::Observer::AdapterDiscoveringChanged now must be called.
1183 adapter_properties.address.ReplaceValue(adapter_address); 1213 adapter_properties.address.ReplaceValue(adapter_address);
1184 1214
1185 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 1215 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
1186 .Times(1); 1216 .Times(1);
1187 1217
1188 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), true)) 1218 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), true))
1189 .Times(1); 1219 .Times(1);
1190 1220
1191 BluetoothAdapterChromeOs* adapter_chromeos = 1221 BluetoothAdapterChromeOs* adapter_chromeos =
1192 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 1222 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
1193 1223
1194 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 1224 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
1195 ->AdapterPropertyChanged(adapter_path, 1225 ->AdapterPropertyChanged(adapter_path,
1196 adapter_properties.address.name()); 1226 adapter_properties.address.name());
1197 1227
1198 // Adapter should have the correct property value. 1228 // Adapter should have the correct property value.
1199 EXPECT_TRUE(adapter->IsDiscovering()); 1229 EXPECT_TRUE(adapter_->IsDiscovering());
1200 } 1230 }
1201 1231
1202 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterDiscoveringPropertyChanged) { 1232 TEST_F(BluetoothAdapterChromeOsTest, DefaultAdapterDiscoveringPropertyChanged) {
1203 const dbus::ObjectPath adapter_path("/fake/hci0"); 1233 const dbus::ObjectPath adapter_path("/fake/hci0");
1204 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 1234 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
1205 1235
1206 // Create the default adapter instance; 1236 // Create the default adapter instance;
1207 // BluetoothManagerClient::DefaultAdapter will be called once, passing 1237 // BluetoothManagerClient::DefaultAdapter will be called once, passing
1208 // a callback to obtain the adapter path. 1238 // a callback to obtain the adapter path.
1209 BluetoothManagerClient::AdapterCallback adapter_callback; 1239 BluetoothManagerClient::AdapterCallback adapter_callback;
1210 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 1240 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
1211 .WillOnce(SaveArg<0>(&adapter_callback)); 1241 .WillOnce(SaveArg<0>(&adapter_callback));
1212 1242
1213 scoped_refptr<BluetoothAdapter> adapter = 1243 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
1214 BluetoothAdapterFactory::DefaultAdapter(); 1244 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
1245 base::Unretained(this)));
1215 1246
1216 // Call the adapter callback; 1247 // Call the adapter callback;
1217 // BluetoothAdapterClient::GetProperties will be called once to obtain 1248 // BluetoothAdapterClient::GetProperties will be called once to obtain
1218 // the property set. 1249 // the property set.
1219 MockBluetoothAdapterClient::Properties adapter_properties; 1250 MockBluetoothAdapterClient::Properties adapter_properties;
1220 adapter_properties.address.ReplaceValue(adapter_address); 1251 adapter_properties.address.ReplaceValue(adapter_address);
1221 adapter_properties.discovering.ReplaceValue(false); 1252 adapter_properties.discovering.ReplaceValue(false);
1222 1253
1223 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 1254 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
1224 .WillRepeatedly(Return(&adapter_properties)); 1255 .WillRepeatedly(Return(&adapter_properties));
1225 1256
1226 adapter_callback.Run(adapter_path, true); 1257 adapter_callback.Run(adapter_path, true);
1227 1258
1228 // Adapter should have the correct property value. 1259 // Adapter should have the correct property value.
1229 EXPECT_FALSE(adapter->IsDiscovering()); 1260 EXPECT_FALSE(adapter_->IsDiscovering());
1230 1261
1231 // Report that the property has been changed; 1262 // Report that the property has been changed;
1232 // BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called. 1263 // BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called.
1233 MockBluetoothAdapter::Observer adapter_observer; 1264 MockBluetoothAdapter::Observer adapter_observer;
1234 adapter->AddObserver(&adapter_observer); 1265 adapter_->AddObserver(&adapter_observer);
1235 1266
1236 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), true)) 1267 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), true))
1237 .Times(1); 1268 .Times(1);
1238 1269
1239 adapter_properties.discovering.ReplaceValue(true); 1270 adapter_properties.discovering.ReplaceValue(true);
1240 1271
1241 BluetoothAdapterChromeOs* adapter_chromeos = 1272 BluetoothAdapterChromeOs* adapter_chromeos =
1242 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 1273 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
1243 1274
1244 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 1275 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
1245 ->AdapterPropertyChanged(adapter_path, 1276 ->AdapterPropertyChanged(adapter_path,
1246 adapter_properties.discovering.name()); 1277 adapter_properties.discovering.name());
1247 1278
1248 // Adapter should have the new property values. 1279 // Adapter should have the new property values.
1249 EXPECT_TRUE(adapter->IsDiscovering()); 1280 EXPECT_TRUE(adapter_->IsDiscovering());
1250 } 1281 }
1251 1282
1252 TEST_F(BluetoothAdapterChromeOsTest, 1283 TEST_F(BluetoothAdapterChromeOsTest,
1253 DefaultAdapterDiscoveringPropertyUnchanged) { 1284 DefaultAdapterDiscoveringPropertyUnchanged) {
1254 const dbus::ObjectPath adapter_path("/fake/hci0"); 1285 const dbus::ObjectPath adapter_path("/fake/hci0");
1255 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 1286 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
1256 1287
1257 // Create the default adapter instance; 1288 // Create the default adapter instance;
1258 // BluetoothManagerClient::DefaultAdapter will be called once, passing 1289 // BluetoothManagerClient::DefaultAdapter will be called once, passing
1259 // a callback to obtain the adapter path. 1290 // a callback to obtain the adapter path.
1260 BluetoothManagerClient::AdapterCallback adapter_callback; 1291 BluetoothManagerClient::AdapterCallback adapter_callback;
1261 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 1292 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
1262 .WillOnce(SaveArg<0>(&adapter_callback)); 1293 .WillOnce(SaveArg<0>(&adapter_callback));
1263 1294
1264 scoped_refptr<BluetoothAdapter> adapter = 1295 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
1265 BluetoothAdapterFactory::DefaultAdapter(); 1296 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
1297 base::Unretained(this)));
1266 1298
1267 // Call the adapter callback; 1299 // Call the adapter callback;
1268 // BluetoothAdapterClient::GetProperties will be called once to obtain 1300 // BluetoothAdapterClient::GetProperties will be called once to obtain
1269 // the property set. 1301 // the property set.
1270 MockBluetoothAdapterClient::Properties adapter_properties; 1302 MockBluetoothAdapterClient::Properties adapter_properties;
1271 adapter_properties.address.ReplaceValue(adapter_address); 1303 adapter_properties.address.ReplaceValue(adapter_address);
1272 adapter_properties.discovering.ReplaceValue(true); 1304 adapter_properties.discovering.ReplaceValue(true);
1273 1305
1274 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 1306 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
1275 .WillRepeatedly(Return(&adapter_properties)); 1307 .WillRepeatedly(Return(&adapter_properties));
1276 1308
1277 adapter_callback.Run(adapter_path, true); 1309 adapter_callback.Run(adapter_path, true);
1278 1310
1279 // Adapter should have the correct property value. 1311 // Adapter should have the correct property value.
1280 EXPECT_TRUE(adapter->IsDiscovering()); 1312 EXPECT_TRUE(adapter_->IsDiscovering());
1281 1313
1282 // Report that the property has been changed, but don't change the value; 1314 // Report that the property has been changed, but don't change the value;
1283 // BluetoothAdapter::Observer::AdapterDiscoveringChanged should not be 1315 // BluetoothAdapter::Observer::AdapterDiscoveringChanged should not be
1284 // called. 1316 // called.
1285 MockBluetoothAdapter::Observer adapter_observer; 1317 MockBluetoothAdapter::Observer adapter_observer;
1286 adapter->AddObserver(&adapter_observer); 1318 adapter_->AddObserver(&adapter_observer);
1287 1319
1288 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), _)) 1320 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), _))
1289 .Times(0); 1321 .Times(0);
1290 1322
1291 BluetoothAdapterChromeOs* adapter_chromeos = 1323 BluetoothAdapterChromeOs* adapter_chromeos =
1292 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 1324 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
1293 1325
1294 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 1326 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
1295 ->AdapterPropertyChanged(adapter_path, 1327 ->AdapterPropertyChanged(adapter_path,
1296 adapter_properties.discovering.name()); 1328 adapter_properties.discovering.name());
1297 1329
1298 // Adapter should still have the same property values. 1330 // Adapter should still have the same property values.
1299 EXPECT_TRUE(adapter->IsDiscovering()); 1331 EXPECT_TRUE(adapter_->IsDiscovering());
1300 } 1332 }
1301 1333
1302 TEST_F(BluetoothAdapterChromeOsTest, 1334 TEST_F(BluetoothAdapterChromeOsTest,
1303 DefaultAdapterDiscoveringPropertyChangedWithoutAddress) { 1335 DefaultAdapterDiscoveringPropertyChangedWithoutAddress) {
1304 const dbus::ObjectPath adapter_path("/fake/hci0"); 1336 const dbus::ObjectPath adapter_path("/fake/hci0");
1305 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 1337 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
1306 1338
1307 // Create the default adapter instance; 1339 // Create the default adapter instance;
1308 // BluetoothManagerClient::DefaultAdapter will be called once, passing 1340 // BluetoothManagerClient::DefaultAdapter will be called once, passing
1309 // a callback to obtain the adapter path. 1341 // a callback to obtain the adapter path.
1310 BluetoothManagerClient::AdapterCallback adapter_callback; 1342 BluetoothManagerClient::AdapterCallback adapter_callback;
1311 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 1343 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
1312 .WillOnce(SaveArg<0>(&adapter_callback)); 1344 .WillOnce(SaveArg<0>(&adapter_callback));
1313 1345
1314 scoped_refptr<BluetoothAdapter> adapter = 1346 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
1315 BluetoothAdapterFactory::DefaultAdapter(); 1347 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
1348 base::Unretained(this)));
1316 1349
1317 // Call the adapter callback; 1350 // Call the adapter callback;
1318 // BluetoothAdapterClient::GetProperties will be called once to obtain 1351 // BluetoothAdapterClient::GetProperties will be called once to obtain
1319 // the property set but BluetoothAdapter::Observer::AdapterDiscoveringChanged 1352 // the property set but BluetoothAdapter::Observer::AdapterDiscoveringChanged
1320 // should not yet be called. 1353 // should not yet be called.
1321 MockBluetoothAdapterClient::Properties adapter_properties; 1354 MockBluetoothAdapterClient::Properties adapter_properties;
1322 1355
1323 MockBluetoothAdapter::Observer adapter_observer; 1356 MockBluetoothAdapter::Observer adapter_observer;
1324 adapter->AddObserver(&adapter_observer); 1357 adapter_->AddObserver(&adapter_observer);
1325 1358
1326 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 1359 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
1327 .WillRepeatedly(Return(&adapter_properties)); 1360 .WillRepeatedly(Return(&adapter_properties));
1328 1361
1329 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), _)) 1362 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), _))
1330 .Times(0); 1363 .Times(0);
1331 1364
1332 adapter_callback.Run(adapter_path, true); 1365 adapter_callback.Run(adapter_path, true);
1333 1366
1334 // Tell the adapter that its discovering property changed, the observer 1367 // Tell the adapter that its discovering property changed, the observer
1335 // method should still not be called because there is no address for 1368 // method should still not be called because there is no address for
1336 // the adapter so it is not present. 1369 // the adapter so it is not present.
1337 adapter_properties.discovering.ReplaceValue(true); 1370 adapter_properties.discovering.ReplaceValue(true);
1338 1371
1339 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), _)) 1372 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), _))
1340 .Times(0); 1373 .Times(0);
1341 1374
1342 BluetoothAdapterChromeOs* adapter_chromeos = 1375 BluetoothAdapterChromeOs* adapter_chromeos =
1343 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 1376 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
1344 1377
1345 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 1378 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
1346 ->AdapterPropertyChanged(adapter_path, 1379 ->AdapterPropertyChanged(adapter_path,
1347 adapter_properties.discovering.name()); 1380 adapter_properties.discovering.name());
1348 1381
1349 // Adapter should not yet have the property value. 1382 // Adapter should not yet have the property value.
1350 EXPECT_FALSE(adapter->IsDiscovering()); 1383 EXPECT_FALSE(adapter_->IsDiscovering());
1351 1384
1352 // Tell the adapter the address now, 1385 // Tell the adapter the address now,
1353 // BluetoothAdapter::Observer::AdapterPresentChanged and 1386 // BluetoothAdapter::Observer::AdapterPresentChanged and
1354 // BluetoothAdapter::Observer::AdapterDiscoveringChanged now must be called. 1387 // BluetoothAdapter::Observer::AdapterDiscoveringChanged now must be called.
1355 adapter_properties.address.ReplaceValue(adapter_address); 1388 adapter_properties.address.ReplaceValue(adapter_address);
1356 1389
1357 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 1390 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
1358 .Times(1); 1391 .Times(1);
1359 1392
1360 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), true)) 1393 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(), true))
1361 .Times(1); 1394 .Times(1);
1362 1395
1363 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos) 1396 static_cast<BluetoothAdapterClient::Observer*>(adapter_chromeos)
1364 ->AdapterPropertyChanged(adapter_path, 1397 ->AdapterPropertyChanged(adapter_path,
1365 adapter_properties.address.name()); 1398 adapter_properties.address.name());
1366 1399
1367 // Adapter should now have the correct property value. 1400 // Adapter should now have the correct property value.
1368 EXPECT_TRUE(adapter->IsDiscovering()); 1401 EXPECT_TRUE(adapter_->IsDiscovering());
1369 } 1402 }
1370 1403
1371 TEST_F(BluetoothAdapterChromeOsTest, 1404 TEST_F(BluetoothAdapterChromeOsTest,
1372 DefaultAdapterDiscoveringPropertyResetOnReplace) { 1405 DefaultAdapterDiscoveringPropertyResetOnReplace) {
1373 const dbus::ObjectPath initial_adapter_path("/fake/hci0"); 1406 const dbus::ObjectPath initial_adapter_path("/fake/hci0");
1374 const dbus::ObjectPath new_adapter_path("/fake/hci1"); 1407 const dbus::ObjectPath new_adapter_path("/fake/hci1");
1375 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE"; 1408 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE";
1376 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE"; 1409 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE";
1377 1410
1378 // Create the default adapter instance; 1411 // Create the default adapter instance;
1379 // BluetoothManagerClient::DefaultAdapter will be called once, passing 1412 // BluetoothManagerClient::DefaultAdapter will be called once, passing
1380 // a callback to obtain the adapter path. 1413 // a callback to obtain the adapter path.
1381 BluetoothManagerClient::AdapterCallback adapter_callback; 1414 BluetoothManagerClient::AdapterCallback adapter_callback;
1382 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 1415 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
1383 .WillOnce(SaveArg<0>(&adapter_callback)); 1416 .WillOnce(SaveArg<0>(&adapter_callback));
1384 1417
1385 scoped_refptr<BluetoothAdapter> adapter = 1418 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
1386 BluetoothAdapterFactory::DefaultAdapter(); 1419 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
1420 base::Unretained(this)));
1387 1421
1388 // Call the adapter callback; 1422 // Call the adapter callback;
1389 // BluetoothAdapterClient::GetProperties will be called once to obtain 1423 // BluetoothAdapterClient::GetProperties will be called once to obtain
1390 // the property set. 1424 // the property set.
1391 MockBluetoothAdapterClient::Properties initial_adapter_properties; 1425 MockBluetoothAdapterClient::Properties initial_adapter_properties;
1392 initial_adapter_properties.address.ReplaceValue(initial_adapter_address); 1426 initial_adapter_properties.address.ReplaceValue(initial_adapter_address);
1393 initial_adapter_properties.discovering.ReplaceValue(true); 1427 initial_adapter_properties.discovering.ReplaceValue(true);
1394 1428
1395 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path)) 1429 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path))
1396 .WillRepeatedly(Return(&initial_adapter_properties)); 1430 .WillRepeatedly(Return(&initial_adapter_properties));
1397 1431
1398 adapter_callback.Run(initial_adapter_path, true); 1432 adapter_callback.Run(initial_adapter_path, true);
1399 1433
1400 // Tell the adapter the default adapter changed; 1434 // Tell the adapter the default adapter changed;
1401 // BluetoothAdapterClient::GetProperties will be called once to obtain 1435 // BluetoothAdapterClient::GetProperties will be called once to obtain
1402 // the property set. 1436 // the property set.
1403 MockBluetoothAdapterClient::Properties new_adapter_properties; 1437 MockBluetoothAdapterClient::Properties new_adapter_properties;
1404 new_adapter_properties.address.ReplaceValue(new_adapter_address); 1438 new_adapter_properties.address.ReplaceValue(new_adapter_address);
1405 1439
1406 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path)) 1440 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path))
1407 .WillRepeatedly(Return(&new_adapter_properties)); 1441 .WillRepeatedly(Return(&new_adapter_properties));
1408 1442
1409 // BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called. 1443 // BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called.
1410 MockBluetoothAdapter::Observer adapter_observer; 1444 MockBluetoothAdapter::Observer adapter_observer;
1411 adapter->AddObserver(&adapter_observer); 1445 adapter_->AddObserver(&adapter_observer);
1412 1446
1413 { 1447 {
1414 InSequence s; 1448 InSequence s;
1415 1449
1416 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) 1450 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
1417 .Times(1); 1451 .Times(1);
1418 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 1452 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
1419 .Times(1); 1453 .Times(1);
1420 } 1454 }
1421 1455
1422 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), false)) 1456 EXPECT_CALL(adapter_observer,
1457 AdapterDiscoveringChanged(adapter_.get(), false))
1423 .Times(1); 1458 .Times(1);
1424 1459
1425 BluetoothAdapterChromeOs* adapter_chromeos = 1460 BluetoothAdapterChromeOs* adapter_chromeos =
1426 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 1461 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
1427 1462
1428 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 1463 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
1429 ->DefaultAdapterChanged(new_adapter_path); 1464 ->DefaultAdapterChanged(new_adapter_path);
1430 1465
1431 // Adapter should have the new property value. 1466 // Adapter should have the new property value.
1432 EXPECT_FALSE(adapter->IsDiscovering()); 1467 EXPECT_FALSE(adapter_->IsDiscovering());
1433 } 1468 }
1434 1469
1435 TEST_F(BluetoothAdapterChromeOsTest, 1470 TEST_F(BluetoothAdapterChromeOsTest,
1436 DefaultAdapterDiscoveringPropertyResetOnReplaceWhenTrue) { 1471 DefaultAdapterDiscoveringPropertyResetOnReplaceWhenTrue) {
1437 const dbus::ObjectPath initial_adapter_path("/fake/hci0"); 1472 const dbus::ObjectPath initial_adapter_path("/fake/hci0");
1438 const dbus::ObjectPath new_adapter_path("/fake/hci1"); 1473 const dbus::ObjectPath new_adapter_path("/fake/hci1");
1439 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE"; 1474 const std::string initial_adapter_address = "CA:FE:4A:C0:FE:FE";
1440 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE"; 1475 const std::string new_adapter_address = "BA:C0:11:CO:FE:FE";
1441 1476
1442 // Create the default adapter instance; 1477 // Create the default adapter instance;
1443 // BluetoothManagerClient::DefaultAdapter will be called once, passing 1478 // BluetoothManagerClient::DefaultAdapter will be called once, passing
1444 // a callback to obtain the adapter path. 1479 // a callback to obtain the adapter path.
1445 BluetoothManagerClient::AdapterCallback adapter_callback; 1480 BluetoothManagerClient::AdapterCallback adapter_callback;
1446 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 1481 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
1447 .WillOnce(SaveArg<0>(&adapter_callback)); 1482 .WillOnce(SaveArg<0>(&adapter_callback));
1448 1483
1449 scoped_refptr<BluetoothAdapter> adapter = 1484 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
1450 BluetoothAdapterFactory::DefaultAdapter(); 1485 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
1486 base::Unretained(this)));
1451 1487
1452 // Call the adapter callback; 1488 // Call the adapter callback;
1453 // BluetoothAdapterClient::GetProperties will be called once to obtain 1489 // BluetoothAdapterClient::GetProperties will be called once to obtain
1454 // the property set. 1490 // the property set.
1455 MockBluetoothAdapterClient::Properties initial_adapter_properties; 1491 MockBluetoothAdapterClient::Properties initial_adapter_properties;
1456 initial_adapter_properties.address.ReplaceValue(initial_adapter_address); 1492 initial_adapter_properties.address.ReplaceValue(initial_adapter_address);
1457 initial_adapter_properties.discovering.ReplaceValue(true); 1493 initial_adapter_properties.discovering.ReplaceValue(true);
1458 1494
1459 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path)) 1495 EXPECT_CALL(*mock_adapter_client_, GetProperties(initial_adapter_path))
1460 .WillRepeatedly(Return(&initial_adapter_properties)); 1496 .WillRepeatedly(Return(&initial_adapter_properties));
1461 1497
1462 adapter_callback.Run(initial_adapter_path, true); 1498 adapter_callback.Run(initial_adapter_path, true);
1463 1499
1464 // Tell the adapter the default adapter changed; 1500 // Tell the adapter the default adapter changed;
1465 // BluetoothAdapterClient::GetProperties will be called once to obtain 1501 // BluetoothAdapterClient::GetProperties will be called once to obtain
1466 // the property set. 1502 // the property set.
1467 MockBluetoothAdapterClient::Properties new_adapter_properties; 1503 MockBluetoothAdapterClient::Properties new_adapter_properties;
1468 new_adapter_properties.address.ReplaceValue(new_adapter_address); 1504 new_adapter_properties.address.ReplaceValue(new_adapter_address);
1469 new_adapter_properties.discovering.ReplaceValue(true); 1505 new_adapter_properties.discovering.ReplaceValue(true);
1470 1506
1471 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path)) 1507 EXPECT_CALL(*mock_adapter_client_, GetProperties(new_adapter_path))
1472 .WillRepeatedly(Return(&new_adapter_properties)); 1508 .WillRepeatedly(Return(&new_adapter_properties));
1473 1509
1474 // BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called once 1510 // BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called once
1475 // to set the value to false for the previous adapter and once to set the 1511 // to set the value to false for the previous adapter and once to set the
1476 // value to true for the new adapter. 1512 // value to true for the new adapter.
1477 MockBluetoothAdapter::Observer adapter_observer; 1513 MockBluetoothAdapter::Observer adapter_observer;
1478 adapter->AddObserver(&adapter_observer); 1514 adapter_->AddObserver(&adapter_observer);
1479 1515
1480 { 1516 {
1481 InSequence s; 1517 InSequence s;
1482 1518
1483 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) 1519 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
1484 .Times(1); 1520 .Times(1);
1485 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), true)) 1521 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), true))
1486 .Times(1); 1522 .Times(1);
1487 } 1523 }
1488 1524
1489 { 1525 {
1490 InSequence s; 1526 InSequence s;
1491 1527
1492 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), 1528 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(),
1493 false)) 1529 false))
1494 .Times(1); 1530 .Times(1);
1495 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), 1531 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter_.get(),
1496 true)) 1532 true))
1497 .Times(1); 1533 .Times(1);
1498 } 1534 }
1499 1535
1500 BluetoothAdapterChromeOs* adapter_chromeos = 1536 BluetoothAdapterChromeOs* adapter_chromeos =
1501 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 1537 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
1502 1538
1503 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 1539 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
1504 ->DefaultAdapterChanged(new_adapter_path); 1540 ->DefaultAdapterChanged(new_adapter_path);
1505 1541
1506 // Adapter should have the new property value. 1542 // Adapter should have the new property value.
1507 EXPECT_TRUE(adapter->IsDiscovering()); 1543 EXPECT_TRUE(adapter_->IsDiscovering());
1508 } 1544 }
1509 1545
1510 TEST_F(BluetoothAdapterChromeOsTest, 1546 TEST_F(BluetoothAdapterChromeOsTest,
1511 DefaultAdapterDiscoveringPropertyResetOnRemove) { 1547 DefaultAdapterDiscoveringPropertyResetOnRemove) {
1512 const dbus::ObjectPath adapter_path("/fake/hci0"); 1548 const dbus::ObjectPath adapter_path("/fake/hci0");
1513 const std::string adapter_address = "CA:FE:4A:C0:FE:FE"; 1549 const std::string adapter_address = "CA:FE:4A:C0:FE:FE";
1514 1550
1515 // Create the default adapter instance; 1551 // Create the default adapter instance;
1516 // BluetoothManagerClient::DefaultAdapter will be called once, passing 1552 // BluetoothManagerClient::DefaultAdapter will be called once, passing
1517 // a callback to obtain the adapter path. 1553 // a callback to obtain the adapter path.
1518 BluetoothManagerClient::AdapterCallback adapter_callback; 1554 BluetoothManagerClient::AdapterCallback adapter_callback;
1519 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_)) 1555 EXPECT_CALL(*mock_manager_client_, DefaultAdapter(_))
1520 .WillOnce(SaveArg<0>(&adapter_callback)); 1556 .WillOnce(SaveArg<0>(&adapter_callback));
1521 1557
1522 scoped_refptr<BluetoothAdapter> adapter = 1558 BluetoothAdapterFactory::RunCallbackOnAdapterReady(
1523 BluetoothAdapterFactory::DefaultAdapter(); 1559 base::Bind(&BluetoothAdapterChromeOsTest::SetAdapter,
1560 base::Unretained(this)));
1524 1561
1525 // Call the adapter callback; 1562 // Call the adapter callback;
1526 // BluetoothAdapterClient::GetProperties will be called once to obtain 1563 // BluetoothAdapterClient::GetProperties will be called once to obtain
1527 // the property set. 1564 // the property set.
1528 MockBluetoothAdapterClient::Properties adapter_properties; 1565 MockBluetoothAdapterClient::Properties adapter_properties;
1529 adapter_properties.address.ReplaceValue(adapter_address); 1566 adapter_properties.address.ReplaceValue(adapter_address);
1530 adapter_properties.discovering.ReplaceValue(true); 1567 adapter_properties.discovering.ReplaceValue(true);
1531 1568
1532 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path)) 1569 EXPECT_CALL(*mock_adapter_client_, GetProperties(adapter_path))
1533 .WillRepeatedly(Return(&adapter_properties)); 1570 .WillRepeatedly(Return(&adapter_properties));
1534 1571
1535 adapter_callback.Run(adapter_path, true); 1572 adapter_callback.Run(adapter_path, true);
1536 1573
1537 // Report that the adapter has been removed; 1574 // Report that the adapter has been removed;
1538 // BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called. 1575 // BluetoothAdapter::Observer::AdapterDiscoveringChanged will be called.
1539 MockBluetoothAdapter::Observer adapter_observer; 1576 MockBluetoothAdapter::Observer adapter_observer;
1540 adapter->AddObserver(&adapter_observer); 1577 adapter_->AddObserver(&adapter_observer);
1541 1578
1542 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter.get(), false)) 1579 EXPECT_CALL(adapter_observer, AdapterPresentChanged(adapter_.get(), false))
1543 .Times(1); 1580 .Times(1);
1544 EXPECT_CALL(adapter_observer, AdapterDiscoveringChanged(adapter.get(), false)) 1581 EXPECT_CALL(adapter_observer,
1582 AdapterDiscoveringChanged(adapter_.get(), false))
1545 .Times(1); 1583 .Times(1);
1546 1584
1547 BluetoothAdapterChromeOs* adapter_chromeos = 1585 BluetoothAdapterChromeOs* adapter_chromeos =
1548 static_cast<BluetoothAdapterChromeOs*>(adapter.get()); 1586 static_cast<BluetoothAdapterChromeOs*>(adapter_.get());
1549 1587
1550 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos) 1588 static_cast<BluetoothManagerClient::Observer*>(adapter_chromeos)
1551 ->AdapterRemoved(adapter_path); 1589 ->AdapterRemoved(adapter_path);
1552 1590
1553 // Adapter should have the new property value. 1591 // Adapter should have the new property value.
1554 EXPECT_FALSE(adapter->IsDiscovering()); 1592 EXPECT_FALSE(adapter_->IsDiscovering());
1555 } 1593 }
1556 1594
1557 } // namespace chromeos 1595 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698