// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "device/usb/usb_service.h" #include "base/at_exit.h" #include "base/bind.h" #include "build/build_config.h" #include "components/device_event_log/device_event_log.h" #include "device/usb/usb_device.h" #if defined(OS_ANDROID) #include "device/usb/usb_service_android.h" #else #include "device/usb/usb_service_impl.h" #endif namespace device { UsbService::Observer::~Observer() {} void UsbService::Observer::OnDeviceAdded(scoped_refptr device) { } void UsbService::Observer::OnDeviceRemoved(scoped_refptr device) { } void UsbService::Observer::OnDeviceRemovedCleanup( scoped_refptr device) { } void UsbService::Observer::WillDestroyUsbService() {} // static scoped_ptr UsbService::Create( scoped_refptr blocking_task_runner) { #if defined(OS_ANDROID) return make_scoped_ptr(new UsbServiceAndroid()); #else return make_scoped_ptr(new UsbServiceImpl(blocking_task_runner)); #endif } UsbService::~UsbService() { FOR_EACH_OBSERVER(Observer, observer_list_, WillDestroyUsbService()); } UsbService::UsbService() {} void UsbService::AddObserver(Observer* observer) { DCHECK(CalledOnValidThread()); observer_list_.AddObserver(observer); } void UsbService::RemoveObserver(Observer* observer) { DCHECK(CalledOnValidThread()); observer_list_.RemoveObserver(observer); } void UsbService::NotifyDeviceAdded(scoped_refptr device) { DCHECK(CalledOnValidThread()); FOR_EACH_OBSERVER(Observer, observer_list_, OnDeviceAdded(device)); } void UsbService::NotifyDeviceRemoved(scoped_refptr device) { DCHECK(CalledOnValidThread()); FOR_EACH_OBSERVER(Observer, observer_list_, OnDeviceRemoved(device)); device->NotifyDeviceRemoved(); FOR_EACH_OBSERVER(Observer, observer_list_, OnDeviceRemovedCleanup(device)); } } // namespace device