Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / devtools / device / usb / android_usb_socket.cc
index 415518e..f9fa086 100644 (file)
@@ -45,7 +45,7 @@ AndroidUsbSocket::~AndroidUsbSocket() {
 }
 
 void AndroidUsbSocket::HandleIncoming(scoped_refptr<AdbMessage> message) {
-  if (!device_)
+  if (!device_.get())
     return;
 
   CHECK_EQ(message->arg1, local_id_);
@@ -82,7 +82,7 @@ void AndroidUsbSocket::HandleIncoming(scoped_refptr<AdbMessage> message) {
     case AdbMessage::kCommandCLSE:
       if (is_connected_)
         device_->Send(AdbMessage::kCommandCLSE, local_id_, 0, "");
-      Terminated();
+      Terminated(true);
       // "this" can be NULL.
       break;
     default:
@@ -90,7 +90,7 @@ void AndroidUsbSocket::HandleIncoming(scoped_refptr<AdbMessage> message) {
   }
 }
 
-void AndroidUsbSocket::Terminated() {
+void AndroidUsbSocket::Terminated(bool closed_by_device) {
   is_connected_ = false;
 
   // Break the socket -> device connection, release the device.
@@ -98,6 +98,9 @@ void AndroidUsbSocket::Terminated() {
   delete_callback_.Reset();
   device_ = NULL;
 
+  if (!closed_by_device)
+    return;
+
   // Respond to pending callbacks.
   if (!connect_callback_.is_null()) {
     net::CompletionCallback callback = connect_callback_;
@@ -113,7 +116,7 @@ int AndroidUsbSocket::Read(net::IOBuffer* buffer,
                            int length,
                            const net::CompletionCallback& callback) {
   if (!is_connected_)
-    return device_ ? net::ERR_SOCKET_NOT_CONNECTED : 0;
+    return device_.get() ? net::ERR_SOCKET_NOT_CONNECTED : 0;
 
   if (read_buffer_.empty()) {
     read_requests_.push_back(IORequest(buffer, length, callback));
@@ -156,7 +159,7 @@ int AndroidUsbSocket::SetSendBufferSize(int32 size) {
 
 int AndroidUsbSocket::Connect(const net::CompletionCallback& callback) {
   DCHECK(CalledOnValidThread());
-  if (!device_)
+  if (!device_.get())
     return net::ERR_FAILED;
   connect_callback_ = callback;
   device_->Send(AdbMessage::kCommandOPEN, local_id_, 0, command_);
@@ -164,10 +167,10 @@ int AndroidUsbSocket::Connect(const net::CompletionCallback& callback) {
 }
 
 void AndroidUsbSocket::Disconnect() {
-  if (!device_)
+  if (!device_.get())
     return;
   device_->Send(AdbMessage::kCommandCLSE, local_id_, remote_id_, "");
-  Terminated();
+  Terminated(false);
 }
 
 bool AndroidUsbSocket::IsConnected() const {