Index: chrome/browser/devtools/device/usb/android_usb_device.cc |
diff --git a/chrome/browser/devtools/device/usb/android_usb_device.cc b/chrome/browser/devtools/device/usb/android_usb_device.cc |
index 9e5d700e885f5df9e14a128a9a87be722b508721..f23b78b3b20c9912ad81793183f9132f9929b912 100644 |
--- a/chrome/browser/devtools/device/usb/android_usb_device.cc |
+++ b/chrome/browser/devtools/device/usb/android_usb_device.cc |
@@ -9,11 +9,12 @@ |
#include "base/barrier_closure.h" |
#include "base/base64.h" |
#include "base/lazy_instance.h" |
-#include "base/message_loop/message_loop.h" |
+#include "base/single_thread_task_runner.h" |
#include "base/stl_util.h" |
#include "base/strings/string_util.h" |
#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "base/thread_task_runner_handle.h" |
#include "chrome/browser/devtools/device/usb/android_rsa.h" |
#include "chrome/browser/devtools/device/usb/android_usb_socket.h" |
#include "content/public/browser/browser_thread.h" |
@@ -69,38 +70,22 @@ bool IsAndroidInterface(const UsbInterfaceDescriptor& interface) { |
return true; |
} |
-scoped_refptr<AndroidUsbDevice> ClaimInterface( |
- crypto::RSAPrivateKey* rsa_key, |
- scoped_refptr<UsbDeviceHandle> usb_handle, |
- const base::string16& serial, |
- const UsbInterfaceDescriptor& interface) { |
- int inbound_address = 0; |
- int outbound_address = 0; |
- int zero_mask = 0; |
- |
- for (const UsbEndpointDescriptor& endpoint : interface.endpoints) { |
- if (endpoint.transfer_type != device::USB_TRANSFER_BULK) |
- continue; |
- if (endpoint.direction == device::USB_DIRECTION_INBOUND) |
- inbound_address = endpoint.address; |
- else |
- outbound_address = endpoint.address; |
- zero_mask = endpoint.maximum_packet_size - 1; |
+void CountAndroidDevices(const base::Callback<void(int)>& callback, |
+ const UsbDevices& devices) { |
+ int device_count = 0; |
+ for (const scoped_refptr<UsbDevice>& device : devices) { |
+ const UsbConfigDescriptor* config = device->GetConfiguration(); |
+ if (config) { |
+ for (const UsbInterfaceDescriptor& iface : config->interfaces) { |
+ if (IsAndroidInterface(iface)) { |
+ ++device_count; |
+ } |
+ } |
+ } |
} |
- if (inbound_address == 0 || outbound_address == 0) |
- return NULL; |
- |
- if (!usb_handle->ClaimInterface(interface.interface_number)) |
- return NULL; |
- |
- return new AndroidUsbDevice(rsa_key, |
- usb_handle, |
- base::UTF16ToASCII(serial), |
- inbound_address, |
- outbound_address, |
- zero_mask, |
- interface.interface_number); |
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
+ base::Bind(callback, device_count)); |
} |
uint32 Checksum(const std::string& data) { |
@@ -147,23 +132,8 @@ void ReleaseInterface(scoped_refptr<UsbDeviceHandle> usb_device, |
usb_device->Close(); |
} |
-} // namespace |
- |
-AdbMessage::AdbMessage(uint32 command, |
- uint32 arg0, |
- uint32 arg1, |
- const std::string& body) |
- : command(command), |
- arg0(arg0), |
- arg1(arg1), |
- body(body) { |
-} |
- |
-AdbMessage::~AdbMessage() { |
-} |
- |
-static void RespondOnCallerThread(const AndroidUsbDevicesCallback& callback, |
- AndroidUsbDevices* new_devices) { |
+void RespondOnCallerThread(const AndroidUsbDevicesCallback& callback, |
+ AndroidUsbDevices* new_devices) { |
scoped_ptr<AndroidUsbDevices> devices(new_devices); |
// Add raw pointers to the newly claimed devices. |
@@ -176,82 +146,111 @@ static void RespondOnCallerThread(const AndroidUsbDevicesCallback& callback, |
callback.Run(result); |
} |
-static void RespondOnFileThread( |
+void RespondOnUIThread( |
const AndroidUsbDevicesCallback& callback, |
AndroidUsbDevices* devices, |
- scoped_refptr<base::MessageLoopProxy> caller_message_loop_proxy) { |
- DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
- caller_message_loop_proxy->PostTask( |
- FROM_HERE, |
- base::Bind(&RespondOnCallerThread, callback, devices)); |
+ scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ caller_task_runner->PostTask( |
+ FROM_HERE, base::Bind(&RespondOnCallerThread, callback, devices)); |
} |
-static void OpenAndroidDeviceOnFileThread( |
- AndroidUsbDevices* devices, |
- crypto::RSAPrivateKey* rsa_key, |
- const base::Closure& barrier, |
- scoped_refptr<UsbDevice> device, |
- int interface_id, |
- bool success) { |
- DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
+void CreateDeviceOnInterfaceClaimed(AndroidUsbDevices* devices, |
+ crypto::RSAPrivateKey* rsa_key, |
+ scoped_refptr<UsbDeviceHandle> usb_handle, |
+ int inbound_address, |
+ int outbound_address, |
+ int zero_mask, |
+ int interface_number, |
+ const base::Closure& barrier, |
+ bool success) { |
if (success) { |
- base::string16 serial; |
- if (device->GetSerialNumber(&serial) && !serial.empty()) { |
- const UsbConfigDescriptor* config = device->GetConfiguration(); |
- if (config) { |
- scoped_refptr<UsbDeviceHandle> usb_handle = device->Open(); |
- if (usb_handle.get()) { |
- scoped_refptr<AndroidUsbDevice> android_device = ClaimInterface( |
- rsa_key, usb_handle, serial, config->interfaces[interface_id]); |
- if (android_device.get()) |
- devices->push_back(android_device); |
- else |
- usb_handle->Close(); |
- } |
- } |
- } |
+ devices->push_back(new AndroidUsbDevice( |
+ rsa_key, usb_handle, |
+ base::UTF16ToASCII(usb_handle->GetDevice()->serial_number()), |
+ inbound_address, outbound_address, zero_mask, interface_number)); |
+ } else { |
+ usb_handle->Close(); |
} |
barrier.Run(); |
} |
-static int CountOnFileThread() { |
- DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
- UsbService* service = device::DeviceClient::Get()->GetUsbService(); |
- UsbDevices usb_devices; |
- if (service != NULL) |
- service->GetDevices(&usb_devices); |
- int device_count = 0; |
- for (const scoped_refptr<UsbDevice>& device : usb_devices) { |
- const UsbConfigDescriptor* config = device->GetConfiguration(); |
- if (config) { |
- for (const UsbInterfaceDescriptor& iface : config->interfaces) { |
- if (IsAndroidInterface(iface)) { |
- ++device_count; |
- } |
- } |
- } |
+void OnDeviceOpened(AndroidUsbDevices* devices, |
+ crypto::RSAPrivateKey* rsa_key, |
+ int inbound_address, |
+ int outbound_address, |
+ int zero_mask, |
+ int interface_number, |
+ const base::Closure& barrier, |
+ scoped_refptr<UsbDeviceHandle> usb_handle) { |
+ if (usb_handle.get()) { |
+ usb_handle->ClaimInterface( |
+ interface_number, |
+ base::Bind(&CreateDeviceOnInterfaceClaimed, devices, rsa_key, |
+ usb_handle, inbound_address, outbound_address, zero_mask, |
+ interface_number, barrier)); |
+ } else { |
+ barrier.Run(); |
} |
- return device_count; |
} |
-static void EnumerateOnFileThread( |
- crypto::RSAPrivateKey* rsa_key, |
- const AndroidUsbDevicesCallback& callback, |
- scoped_refptr<base::MessageLoopProxy> caller_message_loop_proxy) { |
- DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
+void OpenAndroidDevice(AndroidUsbDevices* devices, |
+ crypto::RSAPrivateKey* rsa_key, |
+ const base::Closure& barrier, |
+ scoped_refptr<UsbDevice> device, |
+ int interface_id, |
+ bool success) { |
+ if (!success) { |
+ barrier.Run(); |
+ return; |
+ } |
- UsbService* service = device::DeviceClient::Get()->GetUsbService(); |
- UsbDevices usb_devices; |
- if (service != NULL) |
- service->GetDevices(&usb_devices); |
+ if (device->serial_number().empty()) { |
+ barrier.Run(); |
+ return; |
+ } |
+ const UsbConfigDescriptor* config = device->GetConfiguration(); |
+ if (!config) { |
+ barrier.Run(); |
+ return; |
+ } |
+ |
+ const UsbInterfaceDescriptor& interface = config->interfaces[interface_id]; |
+ int inbound_address = 0; |
+ int outbound_address = 0; |
+ int zero_mask = 0; |
+ |
+ for (const UsbEndpointDescriptor& endpoint : interface.endpoints) { |
+ if (endpoint.transfer_type != device::USB_TRANSFER_BULK) |
+ continue; |
+ if (endpoint.direction == device::USB_DIRECTION_INBOUND) |
+ inbound_address = endpoint.address; |
+ else |
+ outbound_address = endpoint.address; |
+ zero_mask = endpoint.maximum_packet_size - 1; |
+ } |
+ |
+ if (inbound_address == 0 || outbound_address == 0) { |
+ barrier.Run(); |
+ return; |
+ } |
+ |
+ device->Open(base::Bind(&OnDeviceOpened, devices, rsa_key, inbound_address, |
+ outbound_address, zero_mask, |
+ interface.interface_number, barrier)); |
+} |
+ |
+void OpenAndroidDevices( |
+ crypto::RSAPrivateKey* rsa_key, |
+ const AndroidUsbDevicesCallback& callback, |
+ scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, |
+ const UsbDevices& usb_devices) { |
// Add new devices. |
AndroidUsbDevices* devices = new AndroidUsbDevices(); |
base::Closure barrier = base::BarrierClosure( |
- usb_devices.size(), base::Bind(&RespondOnFileThread, |
- callback, |
- devices, |
- caller_message_loop_proxy)); |
+ usb_devices.size(), |
+ base::Bind(&RespondOnUIThread, callback, devices, caller_task_runner)); |
for (const scoped_refptr<UsbDevice>& device : usb_devices) { |
const UsbConfigDescriptor* config = device->GetConfiguration(); |
@@ -265,45 +264,73 @@ static void EnumerateOnFileThread( |
continue; |
} |
- device->RequestUsbAccess( |
- j, base::Bind(&OpenAndroidDeviceOnFileThread, devices, rsa_key, |
- barrier, device, j)); |
+ device->RequestUsbAccess(j, base::Bind(&OpenAndroidDevice, devices, |
+ rsa_key, barrier, device, j)); |
has_android_interface = true; |
break; |
} |
- if (!has_android_interface) |
+ if (!has_android_interface) { |
barrier.Run(); |
+ } |
+ } |
+} |
+ |
+void EnumerateOnUIThread( |
+ crypto::RSAPrivateKey* rsa_key, |
+ const AndroidUsbDevicesCallback& callback, |
+ scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ |
+ UsbService* service = device::DeviceClient::Get()->GetUsbService(); |
+ if (service == NULL) { |
+ caller_task_runner->PostTask(FROM_HERE, |
+ base::Bind(callback, AndroidUsbDevices())); |
+ } else { |
+ service->GetDevices( |
+ base::Bind(&OpenAndroidDevices, rsa_key, callback, caller_task_runner)); |
} |
} |
+} // namespace |
+ |
+AdbMessage::AdbMessage(uint32 command, |
+ uint32 arg0, |
+ uint32 arg1, |
+ const std::string& body) |
+ : command(command), arg0(arg0), arg1(arg1), body(body) { |
+} |
+ |
+AdbMessage::~AdbMessage() { |
+} |
+ |
// static |
-void AndroidUsbDevice::CountDevices( |
- const base::Callback<void(int)>& callback) { |
- BrowserThread::PostTaskAndReplyWithResult( |
- BrowserThread::FILE, |
- FROM_HERE, |
- base::Bind(&CountOnFileThread), |
- callback); |
+void AndroidUsbDevice::CountDevices(const base::Callback<void(int)>& callback) { |
+ UsbService* service = device::DeviceClient::Get()->GetUsbService(); |
+ if (service != NULL) { |
+ service->GetDevices(base::Bind(&CountAndroidDevices, callback)); |
+ } else { |
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
+ base::Bind(callback, 0)); |
+ } |
} |
// static |
void AndroidUsbDevice::Enumerate(crypto::RSAPrivateKey* rsa_key, |
const AndroidUsbDevicesCallback& callback) { |
- |
// Collect devices with closed handles. |
for (AndroidUsbDevice* device : g_devices.Get()) { |
if (device->usb_handle_.get()) { |
- BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
- base::Bind(&AndroidUsbDevice::TerminateIfReleased, device, |
- device->usb_handle_)); |
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
+ base::Bind(&AndroidUsbDevice::TerminateIfReleased, |
+ device, device->usb_handle_)); |
} |
} |
// Then look for the new devices. |
- BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
- base::Bind(&EnumerateOnFileThread, rsa_key, callback, |
- base::MessageLoopProxy::current())); |
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
+ base::Bind(&EnumerateOnUIThread, rsa_key, callback, |
+ base::ThreadTaskRunnerHandle::Get())); |
} |
AndroidUsbDevice::AndroidUsbDevice(crypto::RSAPrivateKey* rsa_key, |
@@ -313,8 +340,7 @@ AndroidUsbDevice::AndroidUsbDevice(crypto::RSAPrivateKey* rsa_key, |
int outbound_address, |
int zero_mask, |
int interface_id) |
- : message_loop_(NULL), |
- rsa_key_(rsa_key->Copy()), |
+ : rsa_key_(rsa_key->Copy()), |
usb_handle_(usb_device), |
serial_(serial), |
inbound_address_(inbound_address), |
@@ -328,9 +354,9 @@ AndroidUsbDevice::AndroidUsbDevice(crypto::RSAPrivateKey* rsa_key, |
} |
void AndroidUsbDevice::InitOnCallerThread() { |
- if (message_loop_) |
+ if (task_runner_) |
return; |
- message_loop_ = base::MessageLoop::current(); |
+ task_runner_ = base::ThreadTaskRunnerHandle::Get(); |
Queue(make_scoped_ptr(new AdbMessage(AdbMessage::kCommandCNXN, kVersion, |
kMaxPayload, kHostConnectMessage))); |
ReadHeader(); |
@@ -360,12 +386,12 @@ void AndroidUsbDevice::Send(uint32 command, |
} |
AndroidUsbDevice::~AndroidUsbDevice() { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
Terminate(); |
} |
void AndroidUsbDevice::Queue(scoped_ptr<AdbMessage> message) { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
// Queue header. |
std::vector<uint32> header; |
@@ -407,7 +433,7 @@ void AndroidUsbDevice::Queue(scoped_ptr<AdbMessage> message) { |
} |
void AndroidUsbDevice::ProcessOutgoing() { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
if (outgoing_queue_.empty() || !usb_handle_.get()) |
return; |
@@ -415,11 +441,9 @@ void AndroidUsbDevice::ProcessOutgoing() { |
BulkMessage message = outgoing_queue_.front(); |
outgoing_queue_.pop(); |
DumpMessage(true, message->data(), message->size()); |
- usb_handle_->BulkTransfer(device::USB_DIRECTION_OUTBOUND, |
- outbound_address_, |
- message.get(), |
- message->size(), |
- kUsbTimeout, |
+ |
+ usb_handle_->BulkTransfer(device::USB_DIRECTION_OUTBOUND, outbound_address_, |
+ message, message->size(), kUsbTimeout, |
base::Bind(&AndroidUsbDevice::OutgoingMessageSent, |
weak_factory_.GetWeakPtr())); |
} |
@@ -427,25 +451,23 @@ void AndroidUsbDevice::ProcessOutgoing() { |
void AndroidUsbDevice::OutgoingMessageSent(UsbTransferStatus status, |
scoped_refptr<net::IOBuffer> buffer, |
size_t result) { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
- |
- if (status != device::USB_TRANSFER_COMPLETED) |
+ if (status != device::USB_TRANSFER_COMPLETED) { |
return; |
- message_loop_->PostTask(FROM_HERE, |
- base::Bind(&AndroidUsbDevice::ProcessOutgoing, this)); |
+ } |
+ |
+ ProcessOutgoing(); |
vkuzkokov
2015/04/15 14:15:46
This and other |PostTask|'s are ok to remove as lo
Reilly Grant (use Gerrit)
2015/04/15 20:03:47
I'll replace the PostTask calls in BulkTransfer ca
|
} |
void AndroidUsbDevice::ReadHeader() { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
- if (!usb_handle_.get()) |
+ if (!usb_handle_.get()) { |
return; |
+ } |
+ |
scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kHeaderSize); |
usb_handle_->BulkTransfer( |
- device::USB_DIRECTION_INBOUND, |
- inbound_address_, |
- buffer.get(), |
- kHeaderSize, |
+ device::USB_DIRECTION_INBOUND, inbound_address_, buffer, kHeaderSize, |
kUsbTimeout, |
base::Bind(&AndroidUsbDevice::ParseHeader, weak_factory_.GetWeakPtr())); |
} |
@@ -453,11 +475,10 @@ void AndroidUsbDevice::ReadHeader() { |
void AndroidUsbDevice::ParseHeader(UsbTransferStatus status, |
scoped_refptr<net::IOBuffer> buffer, |
size_t result) { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
if (status == device::USB_TRANSFER_TIMEOUT) { |
- message_loop_->PostTask(FROM_HERE, |
- base::Bind(&AndroidUsbDevice::ReadHeader, this)); |
+ ReadHeader(); |
return; |
} |
@@ -480,35 +501,27 @@ void AndroidUsbDevice::ParseHeader(UsbTransferStatus status, |
} |
if (data_length == 0) { |
- message_loop_->PostTask(FROM_HERE, |
- base::Bind(&AndroidUsbDevice::HandleIncoming, this, |
- base::Passed(&message))); |
- return; |
+ HandleIncoming(message.Pass()); |
+ } else { |
+ ReadBody(message.Pass(), data_length, data_check); |
} |
- |
- message_loop_->PostTask(FROM_HERE, |
- base::Bind(&AndroidUsbDevice::ReadBody, this, |
- base::Passed(&message), data_length, data_check)); |
} |
void AndroidUsbDevice::ReadBody(scoped_ptr<AdbMessage> message, |
uint32 data_length, |
uint32 data_check) { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
- if (!usb_handle_.get()) |
+ if (!usb_handle_.get()) { |
return; |
+ } |
+ |
scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(data_length); |
- usb_handle_->BulkTransfer(device::USB_DIRECTION_INBOUND, |
- inbound_address_, |
- buffer.get(), |
- data_length, |
- kUsbTimeout, |
- base::Bind(&AndroidUsbDevice::ParseBody, |
- weak_factory_.GetWeakPtr(), |
- base::Passed(&message), |
- data_length, |
- data_check)); |
+ usb_handle_->BulkTransfer( |
+ device::USB_DIRECTION_INBOUND, inbound_address_, buffer, data_length, |
+ kUsbTimeout, |
+ base::Bind(&AndroidUsbDevice::ParseBody, weak_factory_.GetWeakPtr(), |
+ base::Passed(&message), data_length, data_check)); |
} |
void AndroidUsbDevice::ParseBody(scoped_ptr<AdbMessage> message, |
@@ -517,12 +530,10 @@ void AndroidUsbDevice::ParseBody(scoped_ptr<AdbMessage> message, |
UsbTransferStatus status, |
scoped_refptr<net::IOBuffer> buffer, |
size_t result) { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
if (status == device::USB_TRANSFER_TIMEOUT) { |
- message_loop_->PostTask(FROM_HERE, |
- base::Bind(&AndroidUsbDevice::ReadBody, this, |
- base::Passed(&message), data_length, data_check)); |
+ ReadBody(message.Pass(), data_length, data_check); |
return; |
} |
@@ -539,13 +550,11 @@ void AndroidUsbDevice::ParseBody(scoped_ptr<AdbMessage> message, |
return; |
} |
- message_loop_->PostTask(FROM_HERE, |
- base::Bind(&AndroidUsbDevice::HandleIncoming, this, |
- base::Passed(&message))); |
+ HandleIncoming(message.Pass()); |
} |
void AndroidUsbDevice::HandleIncoming(scoped_ptr<AdbMessage> message) { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
switch (message->command) { |
case AdbMessage::kCommandAUTH: |
@@ -599,23 +608,24 @@ void AndroidUsbDevice::HandleIncoming(scoped_ptr<AdbMessage> message) { |
} |
void AndroidUsbDevice::TransferError(UsbTransferStatus status) { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
- message_loop_->PostTask(FROM_HERE, |
- base::Bind(&AndroidUsbDevice::Terminate, this)); |
+ Terminate(); |
} |
void AndroidUsbDevice::TerminateIfReleased( |
scoped_refptr<UsbDeviceHandle> usb_handle) { |
- DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
- if (usb_handle->GetDevice().get()) |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ if (usb_handle->GetDevice().get()) { |
return; |
- message_loop_->PostTask(FROM_HERE, |
- base::Bind(&AndroidUsbDevice::Terminate, this)); |
+ } |
+ |
+ task_runner_->PostTask(FROM_HERE, |
+ base::Bind(&AndroidUsbDevice::Terminate, this)); |
} |
void AndroidUsbDevice::Terminate() { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
std::vector<AndroidUsbDevice*>::iterator it = |
std::find(g_devices.Get().begin(), g_devices.Get().end(), this); |
@@ -639,12 +649,12 @@ void AndroidUsbDevice::Terminate() { |
DCHECK(sockets_.empty()); |
BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
+ BrowserThread::UI, FROM_HERE, |
base::Bind(&ReleaseInterface, usb_handle, interface_id_)); |
} |
void AndroidUsbDevice::SocketDeleted(uint32 socket_id) { |
- DCHECK(message_loop_ == base::MessageLoop::current()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
sockets_.erase(socket_id); |
} |