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

Side by Side Diff: components/pairing/bluetooth_host_pairing_controller.cc

Issue 2937253003: cros: Replace BrowserThread::FILE in InputServiceProxy (Closed)
Patch Set: update dependent code to fix tests Created 3 years, 6 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/pairing/bluetooth_host_pairing_controller.h" 5 #include "components/pairing/bluetooth_host_pairing_controller.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/hash.h" 8 #include "base/hash.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/single_thread_task_runner.h"
12 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
12 #include "base/task_runner.h"
13 #include "base/task_runner_util.h" 13 #include "base/task_runner_util.h"
14 #include "chromeos/system/devicetype.h" 14 #include "chromeos/system/devicetype.h"
15 #include "components/pairing/bluetooth_pairing_constants.h" 15 #include "components/pairing/bluetooth_pairing_constants.h"
16 #include "components/pairing/pairing_api.pb.h" 16 #include "components/pairing/pairing_api.pb.h"
17 #include "components/pairing/proto_decoder.h" 17 #include "components/pairing/proto_decoder.h"
18 #include "device/bluetooth/bluetooth_adapter_factory.h" 18 #include "device/bluetooth/bluetooth_adapter_factory.h"
19 #include "net/base/io_buffer.h" 19 #include "net/base/io_buffer.h"
20 20
21 namespace pairing_chromeos { 21 namespace pairing_chromeos {
22 22
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 std::vector<BluetoothHostPairingController::InputDeviceInfo> GetDevices() { 79 std::vector<BluetoothHostPairingController::InputDeviceInfo> GetDevices() {
80 std::vector<BluetoothHostPairingController::InputDeviceInfo> devices; 80 std::vector<BluetoothHostPairingController::InputDeviceInfo> devices;
81 if (device::InputServiceLinux::HasInstance()) 81 if (device::InputServiceLinux::HasInstance())
82 device::InputServiceLinux::GetInstance()->GetDevices(&devices); 82 device::InputServiceLinux::GetInstance()->GetDevices(&devices);
83 return devices; 83 return devices;
84 } 84 }
85 85
86 } // namespace 86 } // namespace
87 87
88 BluetoothHostPairingController::BluetoothHostPairingController( 88 BluetoothHostPairingController::BluetoothHostPairingController(
89 const scoped_refptr<base::SingleThreadTaskRunner>& file_task_runner) 89 const scoped_refptr<base::TaskRunner>& input_service_task_runner)
90 : current_stage_(STAGE_NONE), 90 : current_stage_(STAGE_NONE),
achuithb 2017/06/19 22:34:42 I don't know if you have any interest in moving th
xiyuan 2017/06/19 23:00:26 I am a fan of in-place initializers. Done.
91 connectivity_status_(CONNECTIVITY_UNTESTED), 91 connectivity_status_(CONNECTIVITY_UNTESTED),
92 update_status_(UPDATE_STATUS_UNKNOWN), 92 update_status_(UPDATE_STATUS_UNKNOWN),
93 enrollment_status_(ENROLLMENT_STATUS_UNKNOWN), 93 enrollment_status_(ENROLLMENT_STATUS_UNKNOWN),
94 proto_decoder_(new ProtoDecoder(this)), 94 proto_decoder_(new ProtoDecoder(this)),
95 file_task_runner_(file_task_runner), 95 input_service_task_runner_(input_service_task_runner),
96 ptr_factory_(this) {} 96 ptr_factory_(this) {}
97 97
98 BluetoothHostPairingController::~BluetoothHostPairingController() { 98 BluetoothHostPairingController::~BluetoothHostPairingController() {
99 Reset(); 99 Reset();
100 } 100 }
101 101
102 void BluetoothHostPairingController::SetDelegateForTesting( 102 void BluetoothHostPairingController::SetDelegateForTesting(
103 TestDelegate* delegate) { 103 TestDelegate* delegate) {
104 delegate_ = delegate; 104 delegate_ = delegate;
105 } 105 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 base::Bind(&BluetoothHostPairingController::OnForget, 160 base::Bind(&BluetoothHostPairingController::OnForget,
161 ptr_factory_.GetWeakPtr())); 161 ptr_factory_.GetWeakPtr()));
162 return; 162 return;
163 } 163 }
164 } 164 }
165 OnForget(); 165 OnForget();
166 } 166 }
167 167
168 void BluetoothHostPairingController::OnGetAdapter( 168 void BluetoothHostPairingController::OnGetAdapter(
169 scoped_refptr<device::BluetoothAdapter> adapter) { 169 scoped_refptr<device::BluetoothAdapter> adapter) {
170 DCHECK(thread_checker_.CalledOnValidThread()); 170 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
171 DCHECK(!adapter_.get()); 171 DCHECK(!adapter_.get());
172 adapter_ = adapter; 172 adapter_ = adapter;
173 173
174 if (adapter_->IsPresent()) { 174 if (adapter_->IsPresent()) {
175 SetPowered(); 175 SetPowered();
176 } else { 176 } else {
177 // Set the name once the adapter is present. 177 // Set the name once the adapter is present.
178 adapter_->AddObserver(this); 178 adapter_->AddObserver(this);
179 } 179 }
180 } 180 }
181 181
182 void BluetoothHostPairingController::SetPowered() { 182 void BluetoothHostPairingController::SetPowered() {
183 DCHECK(thread_checker_.CalledOnValidThread()); 183 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
184 if (adapter_->IsPowered()) { 184 if (adapter_->IsPowered()) {
185 was_powered_ = true; 185 was_powered_ = true;
186 OnSetPowered(); 186 OnSetPowered();
187 } else { 187 } else {
188 adapter_->SetPowered( 188 adapter_->SetPowered(
189 true, 189 true,
190 base::Bind(&BluetoothHostPairingController::OnSetPowered, 190 base::Bind(&BluetoothHostPairingController::OnSetPowered,
191 ptr_factory_.GetWeakPtr()), 191 ptr_factory_.GetWeakPtr()),
192 base::Bind(&BluetoothHostPairingController::OnSetError, 192 base::Bind(&BluetoothHostPairingController::OnSetError,
193 ptr_factory_.GetWeakPtr())); 193 ptr_factory_.GetWeakPtr()));
194 } 194 }
195 } 195 }
196 196
197 void BluetoothHostPairingController::OnSetPowered() { 197 void BluetoothHostPairingController::OnSetPowered() {
198 DCHECK(thread_checker_.CalledOnValidThread()); 198 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
199 adapter_->AddPairingDelegate( 199 adapter_->AddPairingDelegate(
200 this, device::BluetoothAdapter::PAIRING_DELEGATE_PRIORITY_HIGH); 200 this, device::BluetoothAdapter::PAIRING_DELEGATE_PRIORITY_HIGH);
201 201
202 device::BluetoothAdapter::ServiceOptions options; 202 device::BluetoothAdapter::ServiceOptions options;
203 options.name.reset(new std::string(kPairingServiceName)); 203 options.name.reset(new std::string(kPairingServiceName));
204 204
205 adapter_->CreateRfcommService( 205 adapter_->CreateRfcommService(
206 device::BluetoothUUID(kPairingServiceUUID), options, 206 device::BluetoothUUID(kPairingServiceUUID), options,
207 base::Bind(&BluetoothHostPairingController::OnCreateService, 207 base::Bind(&BluetoothHostPairingController::OnCreateService,
208 ptr_factory_.GetWeakPtr()), 208 ptr_factory_.GetWeakPtr()),
209 base::Bind(&BluetoothHostPairingController::OnCreateServiceError, 209 base::Bind(&BluetoothHostPairingController::OnCreateServiceError,
210 ptr_factory_.GetWeakPtr())); 210 ptr_factory_.GetWeakPtr()));
211 } 211 }
212 212
213 void BluetoothHostPairingController::OnCreateService( 213 void BluetoothHostPairingController::OnCreateService(
214 scoped_refptr<device::BluetoothSocket> socket) { 214 scoped_refptr<device::BluetoothSocket> socket) {
215 DCHECK(thread_checker_.CalledOnValidThread()); 215 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
216 service_socket_ = socket; 216 service_socket_ = socket;
217 217
218 service_socket_->Accept( 218 service_socket_->Accept(
219 base::Bind(&BluetoothHostPairingController::OnAccept, 219 base::Bind(&BluetoothHostPairingController::OnAccept,
220 ptr_factory_.GetWeakPtr()), 220 ptr_factory_.GetWeakPtr()),
221 base::Bind(&BluetoothHostPairingController::OnAcceptError, 221 base::Bind(&BluetoothHostPairingController::OnAcceptError,
222 ptr_factory_.GetWeakPtr())); 222 ptr_factory_.GetWeakPtr()));
223 223
224 adapter_->SetDiscoverable( 224 adapter_->SetDiscoverable(
225 true, 225 true,
226 base::Bind(&BluetoothHostPairingController::OnSetDiscoverable, 226 base::Bind(&BluetoothHostPairingController::OnSetDiscoverable,
227 ptr_factory_.GetWeakPtr(), true), 227 ptr_factory_.GetWeakPtr(), true),
228 base::Bind(&BluetoothHostPairingController::OnSetError, 228 base::Bind(&BluetoothHostPairingController::OnSetError,
229 ptr_factory_.GetWeakPtr())); 229 ptr_factory_.GetWeakPtr()));
230 } 230 }
231 231
232 void BluetoothHostPairingController::OnAccept( 232 void BluetoothHostPairingController::OnAccept(
233 const device::BluetoothDevice* device, 233 const device::BluetoothDevice* device,
234 scoped_refptr<device::BluetoothSocket> socket) { 234 scoped_refptr<device::BluetoothSocket> socket) {
235 controller_device_address_ = device->GetAddress(); 235 controller_device_address_ = device->GetAddress();
236 236
237 DCHECK(thread_checker_.CalledOnValidThread()); 237 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
238 adapter_->SetDiscoverable( 238 adapter_->SetDiscoverable(
239 false, 239 false,
240 base::Bind(&BluetoothHostPairingController::OnSetDiscoverable, 240 base::Bind(&BluetoothHostPairingController::OnSetDiscoverable,
241 ptr_factory_.GetWeakPtr(), false), 241 ptr_factory_.GetWeakPtr(), false),
242 base::Bind(&BluetoothHostPairingController::OnSetError, 242 base::Bind(&BluetoothHostPairingController::OnSetError,
243 ptr_factory_.GetWeakPtr())); 243 ptr_factory_.GetWeakPtr()));
244 controller_socket_ = socket; 244 controller_socket_ = socket;
245 245
246 SendHostStatus(); 246 SendHostStatus();
247 247
248 controller_socket_->Receive( 248 controller_socket_->Receive(
249 kReceiveSize, 249 kReceiveSize,
250 base::Bind(&BluetoothHostPairingController::OnReceiveComplete, 250 base::Bind(&BluetoothHostPairingController::OnReceiveComplete,
251 ptr_factory_.GetWeakPtr()), 251 ptr_factory_.GetWeakPtr()),
252 base::Bind(&BluetoothHostPairingController::OnReceiveError, 252 base::Bind(&BluetoothHostPairingController::OnReceiveError,
253 ptr_factory_.GetWeakPtr())); 253 ptr_factory_.GetWeakPtr()));
254 } 254 }
255 255
256 void BluetoothHostPairingController::OnSetDiscoverable(bool change_stage) { 256 void BluetoothHostPairingController::OnSetDiscoverable(bool change_stage) {
257 DCHECK(thread_checker_.CalledOnValidThread()); 257 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
258 if (change_stage) { 258 if (change_stage) {
259 DCHECK_EQ(current_stage_, STAGE_NONE); 259 DCHECK_EQ(current_stage_, STAGE_NONE);
260 ChangeStage(STAGE_WAITING_FOR_CONTROLLER); 260 ChangeStage(STAGE_WAITING_FOR_CONTROLLER);
261 } 261 }
262 } 262 }
263 263
264 void BluetoothHostPairingController::OnSendComplete(int bytes_sent) {} 264 void BluetoothHostPairingController::OnSendComplete(int bytes_sent) {}
265 265
266 void BluetoothHostPairingController::OnReceiveComplete( 266 void BluetoothHostPairingController::OnReceiveComplete(
267 int bytes, scoped_refptr<net::IOBuffer> io_buffer) { 267 int bytes, scoped_refptr<net::IOBuffer> io_buffer) {
268 DCHECK(thread_checker_.CalledOnValidThread()); 268 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
269 proto_decoder_->DecodeIOBuffer(bytes, io_buffer); 269 proto_decoder_->DecodeIOBuffer(bytes, io_buffer);
270 270
271 if (controller_socket_.get()) { 271 if (controller_socket_.get()) {
272 controller_socket_->Receive( 272 controller_socket_->Receive(
273 kReceiveSize, 273 kReceiveSize,
274 base::Bind(&BluetoothHostPairingController::OnReceiveComplete, 274 base::Bind(&BluetoothHostPairingController::OnReceiveComplete,
275 ptr_factory_.GetWeakPtr()), 275 ptr_factory_.GetWeakPtr()),
276 base::Bind(&BluetoothHostPairingController::OnReceiveError, 276 base::Bind(&BluetoothHostPairingController::OnReceiveError,
277 ptr_factory_.GetWeakPtr())); 277 ptr_factory_.GetWeakPtr()));
278 } 278 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 service_socket_ = nullptr; 342 service_socket_ = nullptr;
343 } 343 }
344 344
345 if (adapter_.get()) { 345 if (adapter_.get()) {
346 if (adapter_->IsDiscoverable()) { 346 if (adapter_->IsDiscoverable()) {
347 adapter_->SetDiscoverable(false, base::Bind(&base::DoNothing), 347 adapter_->SetDiscoverable(false, base::Bind(&base::DoNothing),
348 base::Bind(&base::DoNothing)); 348 base::Bind(&base::DoNothing));
349 } 349 }
350 350
351 base::PostTaskAndReplyWithResult( 351 base::PostTaskAndReplyWithResult(
352 file_task_runner_.get(), FROM_HERE, base::Bind(&GetDevices), 352 input_service_task_runner_.get(), FROM_HERE, base::Bind(&GetDevices),
353 base::Bind(&BluetoothHostPairingController::PowerOffAdapterIfApplicable, 353 base::Bind(&BluetoothHostPairingController::PowerOffAdapterIfApplicable,
354 ptr_factory_.GetWeakPtr())); 354 ptr_factory_.GetWeakPtr()));
355 } 355 }
356 ChangeStage(STAGE_NONE); 356 ChangeStage(STAGE_NONE);
357 } 357 }
358 358
359 void BluetoothHostPairingController::SetControllerDeviceAddressForTesting( 359 void BluetoothHostPairingController::SetControllerDeviceAddressForTesting(
360 const std::string& address) { 360 const std::string& address) {
361 controller_device_address_ = address; 361 controller_device_address_ = address;
362 } 362 }
(...skipping 16 matching lines...) Expand all
379 for (Observer& observer : observers_) { 379 for (Observer& observer : observers_) {
380 observer.ConfigureHostRequested( 380 observer.ConfigureHostRequested(
381 message.parameters().accepted_eula(), message.parameters().lang(), 381 message.parameters().accepted_eula(), message.parameters().lang(),
382 message.parameters().timezone(), message.parameters().send_reports(), 382 message.parameters().timezone(), message.parameters().send_reports(),
383 message.parameters().keyboard_layout()); 383 message.parameters().keyboard_layout());
384 } 384 }
385 } 385 }
386 386
387 void BluetoothHostPairingController::OnPairDevicesMessage( 387 void BluetoothHostPairingController::OnPairDevicesMessage(
388 const pairing_api::PairDevices& message) { 388 const pairing_api::PairDevices& message) {
389 DCHECK(thread_checker_.CalledOnValidThread()); 389 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
390 enrollment_domain_ = message.parameters().enrolling_domain(); 390 enrollment_domain_ = message.parameters().enrolling_domain();
391 ChangeStage(STAGE_ENROLLING); 391 ChangeStage(STAGE_ENROLLING);
392 for (Observer& observer : observers_) 392 for (Observer& observer : observers_)
393 observer.EnrollHostRequested(message.parameters().admin_access_token()); 393 observer.EnrollHostRequested(message.parameters().admin_access_token());
394 } 394 }
395 395
396 void BluetoothHostPairingController::OnCompleteSetupMessage( 396 void BluetoothHostPairingController::OnCompleteSetupMessage(
397 const pairing_api::CompleteSetup& message) { 397 const pairing_api::CompleteSetup& message) {
398 DCHECK(thread_checker_.CalledOnValidThread()); 398 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
399 if (current_stage_ != STAGE_ENROLLMENT_SUCCESS) { 399 if (current_stage_ != STAGE_ENROLLMENT_SUCCESS) {
400 ChangeStage(STAGE_ENROLLMENT_ERROR); 400 ChangeStage(STAGE_ENROLLMENT_ERROR);
401 } else { 401 } else {
402 // TODO(zork): Handle adding another controller. (http://crbug.com/405757) 402 // TODO(zork): Handle adding another controller. (http://crbug.com/405757)
403 ChangeStage(STAGE_FINISHED); 403 ChangeStage(STAGE_FINISHED);
404 } 404 }
405 Reset(); 405 Reset();
406 } 406 }
407 407
408 void BluetoothHostPairingController::OnErrorMessage( 408 void BluetoothHostPairingController::OnErrorMessage(
409 const pairing_api::Error& message) { 409 const pairing_api::Error& message) {
410 NOTREACHED(); 410 NOTREACHED();
411 } 411 }
412 412
413 void BluetoothHostPairingController::OnRebootMessage( 413 void BluetoothHostPairingController::OnRebootMessage(
414 const pairing_api::Reboot& message) { 414 const pairing_api::Reboot& message) {
415 DCHECK(thread_checker_.CalledOnValidThread()); 415 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
416 for (Observer& observer : observers_) 416 for (Observer& observer : observers_)
417 observer.RebootHostRequested(); 417 observer.RebootHostRequested();
418 } 418 }
419 419
420 void BluetoothHostPairingController::OnAddNetworkMessage( 420 void BluetoothHostPairingController::OnAddNetworkMessage(
421 const pairing_api::AddNetwork& message) { 421 const pairing_api::AddNetwork& message) {
422 DCHECK(thread_checker_.CalledOnValidThread()); 422 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
423 for (Observer& observer : observers_) 423 for (Observer& observer : observers_)
424 observer.AddNetworkRequested(message.parameters().onc_spec()); 424 observer.AddNetworkRequested(message.parameters().onc_spec());
425 } 425 }
426 426
427 void BluetoothHostPairingController::AdapterPresentChanged( 427 void BluetoothHostPairingController::AdapterPresentChanged(
428 device::BluetoothAdapter* adapter, 428 device::BluetoothAdapter* adapter,
429 bool present) { 429 bool present) {
430 DCHECK_EQ(adapter, adapter_.get()); 430 DCHECK_EQ(adapter, adapter_.get());
431 if (present) { 431 if (present) {
432 adapter_->RemoveObserver(this); 432 adapter_->RemoveObserver(this);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 UpdateStatus update_status) { 485 UpdateStatus update_status) {
486 update_status_ = update_status; 486 update_status_ = update_status;
487 if (update_status == UPDATE_STATUS_UPDATED) 487 if (update_status == UPDATE_STATUS_UPDATED)
488 ChangeStage(STAGE_WAITING_FOR_CREDENTIALS); 488 ChangeStage(STAGE_WAITING_FOR_CREDENTIALS);
489 SendHostStatus(); 489 SendHostStatus();
490 } 490 }
491 491
492 void BluetoothHostPairingController::OnEnrollmentStatusChanged( 492 void BluetoothHostPairingController::OnEnrollmentStatusChanged(
493 EnrollmentStatus enrollment_status) { 493 EnrollmentStatus enrollment_status) {
494 DCHECK_EQ(current_stage_, STAGE_ENROLLING); 494 DCHECK_EQ(current_stage_, STAGE_ENROLLING);
495 DCHECK(thread_checker_.CalledOnValidThread()); 495 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
496 496
497 enrollment_status_ = enrollment_status; 497 enrollment_status_ = enrollment_status;
498 if (enrollment_status == ENROLLMENT_STATUS_SUCCESS) { 498 if (enrollment_status == ENROLLMENT_STATUS_SUCCESS) {
499 ChangeStage(STAGE_ENROLLMENT_SUCCESS); 499 ChangeStage(STAGE_ENROLLMENT_SUCCESS);
500 } else if (enrollment_status == ENROLLMENT_STATUS_FAILURE) { 500 } else if (enrollment_status == ENROLLMENT_STATUS_FAILURE) {
501 ChangeStage(STAGE_ENROLLMENT_ERROR); 501 ChangeStage(STAGE_ENROLLMENT_ERROR);
502 } 502 }
503 SendHostStatus(); 503 SendHostStatus();
504 } 504 }
505 505
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 ChangeStage(STAGE_WAITING_FOR_CODE_CONFIRMATION); 554 ChangeStage(STAGE_WAITING_FOR_CODE_CONFIRMATION);
555 } 555 }
556 556
557 void BluetoothHostPairingController::AuthorizePairing( 557 void BluetoothHostPairingController::AuthorizePairing(
558 device::BluetoothDevice* device) { 558 device::BluetoothDevice* device) {
559 // Disallow unknown device. 559 // Disallow unknown device.
560 device->RejectPairing(); 560 device->RejectPairing();
561 } 561 }
562 562
563 } // namespace pairing_chromeos 563 } // namespace pairing_chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698