| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "device/usb/mojo/device_impl.h" | 5 #include "device/usb/mojo/device_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 scoped_refptr<net::IOBuffer> buffer, | 96 scoped_refptr<net::IOBuffer> buffer, |
| 97 const std::vector<UsbDeviceHandle::IsochronousPacket>& packets) { | 97 const std::vector<UsbDeviceHandle::IsochronousPacket>& packets) { |
| 98 callback.Run(mojo::ConvertTo<std::vector<IsochronousPacketPtr>>(packets)); | 98 callback.Run(mojo::ConvertTo<std::vector<IsochronousPacketPtr>>(packets)); |
| 99 } | 99 } |
| 100 | 100 |
| 101 } // namespace | 101 } // namespace |
| 102 | 102 |
| 103 DeviceImpl::DeviceImpl(scoped_refptr<UsbDevice> device, | 103 DeviceImpl::DeviceImpl(scoped_refptr<UsbDevice> device, |
| 104 DeviceInfoPtr device_info, | 104 DeviceInfoPtr device_info, |
| 105 base::WeakPtr<PermissionProvider> permission_provider, | 105 base::WeakPtr<PermissionProvider> permission_provider, |
| 106 mojo::InterfaceRequest<Device> request) | 106 DeviceRequest request) |
| 107 : device_(device), | 107 : device_(device), |
| 108 device_info_(std::move(device_info)), | 108 device_info_(std::move(device_info)), |
| 109 permission_provider_(permission_provider), | 109 permission_provider_(permission_provider), |
| 110 observer_(this), | 110 observer_(this), |
| 111 binding_(this, std::move(request)), | 111 binding_(this, std::move(request)), |
| 112 weak_factory_(this) { | 112 weak_factory_(this) { |
| 113 DCHECK(device_); | 113 DCHECK(device_); |
| 114 // This object owns itself and will be destroyed if, | 114 // This object owns itself and will be destroyed if, |
| 115 // * the device is disconnected or | 115 // * the device is disconnected or |
| 116 // * the message pipe it is bound to is closed or the message loop is | 116 // * the message pipe it is bound to is closed or the message loop is |
| 117 // * destructed. | 117 // * destructed. |
| 118 observer_.Add(device_.get()); | 118 observer_.Add(device_.get()); |
| 119 binding_.set_connection_error_handler( |
| 120 base::Bind([](DeviceImpl* self) { delete self; }, this)); |
| 119 } | 121 } |
| 120 | 122 |
| 121 DeviceImpl::~DeviceImpl() { | 123 DeviceImpl::~DeviceImpl() { |
| 122 CloseHandle(); | 124 CloseHandle(); |
| 123 } | 125 } |
| 124 | 126 |
| 125 void DeviceImpl::CloseHandle() { | 127 void DeviceImpl::CloseHandle() { |
| 126 if (device_handle_) { | 128 if (device_handle_) { |
| 127 device_handle_->Close(); | 129 device_handle_->Close(); |
| 128 if (permission_provider_) | 130 if (permission_provider_) |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 base::Bind(&OnIsochronousTransferOut, callback)); | 433 base::Bind(&OnIsochronousTransferOut, callback)); |
| 432 } | 434 } |
| 433 | 435 |
| 434 void DeviceImpl::OnDeviceRemoved(scoped_refptr<UsbDevice> device) { | 436 void DeviceImpl::OnDeviceRemoved(scoped_refptr<UsbDevice> device) { |
| 435 DCHECK_EQ(device_, device); | 437 DCHECK_EQ(device_, device); |
| 436 delete this; | 438 delete this; |
| 437 } | 439 } |
| 438 | 440 |
| 439 } // namespace usb | 441 } // namespace usb |
| 440 } // namespace device | 442 } // namespace device |
| OLD | NEW |