OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "chrome/browser/devtools/devtools_adb_bridge.h" | 5 #include "chrome/browser/devtools/devtools_adb_bridge.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 362 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
363 adb_thread_->message_loop()->PostTask( | 363 adb_thread_->message_loop()->PostTask( |
364 FROM_HERE, | 364 FROM_HERE, |
365 base::Bind(&AgentHostDelegate::SendFrameOnHandlerThread, this, | 365 base::Bind(&AgentHostDelegate::SendFrameOnHandlerThread, this, |
366 message)); | 366 message)); |
367 } | 367 } |
368 | 368 |
369 void StartListeningOnHandlerThread() { | 369 void StartListeningOnHandlerThread() { |
370 scoped_refptr<net::IOBuffer> response_buffer = | 370 scoped_refptr<net::IOBuffer> response_buffer = |
371 new net::IOBuffer(kBufferSize); | 371 new net::IOBuffer(kBufferSize); |
372 int result = socket_->Read(response_buffer, kBufferSize, | 372 int result = socket_->Read( |
| 373 response_buffer.get(), |
| 374 kBufferSize, |
373 base::Bind(&AgentHostDelegate::OnBytesRead, this, response_buffer)); | 375 base::Bind(&AgentHostDelegate::OnBytesRead, this, response_buffer)); |
374 if (result != net::ERR_IO_PENDING) | 376 if (result != net::ERR_IO_PENDING) |
375 OnBytesRead(response_buffer, result); | 377 OnBytesRead(response_buffer, result); |
376 } | 378 } |
377 | 379 |
378 void OnBytesRead(scoped_refptr<net::IOBuffer> response_buffer, int result) { | 380 void OnBytesRead(scoped_refptr<net::IOBuffer> response_buffer, int result) { |
379 if (!socket_) | 381 if (!socket_) |
380 return; | 382 return; |
381 | 383 |
382 if (result <= 0) { | 384 if (result <= 0) { |
(...skipping 18 matching lines...) Expand all Loading... |
401 parse_result = WebSocket::DecodeFrameHybi17( | 403 parse_result = WebSocket::DecodeFrameHybi17( |
402 response_buffer_, false, &bytes_consumed, &output); | 404 response_buffer_, false, &bytes_consumed, &output); |
403 } | 405 } |
404 | 406 |
405 if (parse_result == WebSocket::FRAME_ERROR || | 407 if (parse_result == WebSocket::FRAME_ERROR || |
406 parse_result == WebSocket::FRAME_CLOSE) { | 408 parse_result == WebSocket::FRAME_CLOSE) { |
407 CloseIfNecessary(net::ERR_CONNECTION_CLOSED); | 409 CloseIfNecessary(net::ERR_CONNECTION_CLOSED); |
408 return; | 410 return; |
409 } | 411 } |
410 | 412 |
411 result = socket_->Read(response_buffer, kBufferSize, | 413 result = socket_->Read( |
| 414 response_buffer.get(), |
| 415 kBufferSize, |
412 base::Bind(&AgentHostDelegate::OnBytesRead, this, response_buffer)); | 416 base::Bind(&AgentHostDelegate::OnBytesRead, this, response_buffer)); |
413 if (result != net::ERR_IO_PENDING) | 417 if (result != net::ERR_IO_PENDING) |
414 OnBytesRead(response_buffer, result); | 418 OnBytesRead(response_buffer, result); |
415 } | 419 } |
416 | 420 |
417 void SendFrameOnHandlerThread(const std::string& data) { | 421 void SendFrameOnHandlerThread(const std::string& data) { |
418 tethering_adb_filter_.ProcessOutgoingMessage(data); | 422 tethering_adb_filter_.ProcessOutgoingMessage(data); |
419 int mask = base::RandInt(0, 0x7FFFFFFF); | 423 int mask = base::RandInt(0, 0x7FFFFFFF); |
420 std::string encoded_frame = WebSocket::EncodeFrameHybi17(data, mask); | 424 std::string encoded_frame = WebSocket::EncodeFrameHybi17(data, mask); |
421 scoped_refptr<net::StringIOBuffer> request_buffer = | 425 scoped_refptr<net::StringIOBuffer> request_buffer = |
422 new net::StringIOBuffer(encoded_frame); | 426 new net::StringIOBuffer(encoded_frame); |
423 if (!socket_) | 427 if (!socket_) |
424 return; | 428 return; |
425 int result = socket_->Write(request_buffer, request_buffer->size(), | 429 int result = |
426 base::Bind(&AgentHostDelegate::CloseIfNecessary, this)); | 430 socket_->Write(request_buffer.get(), |
| 431 request_buffer->size(), |
| 432 base::Bind(&AgentHostDelegate::CloseIfNecessary, this)); |
427 if (result != net::ERR_IO_PENDING) | 433 if (result != net::ERR_IO_PENDING) |
428 CloseIfNecessary(result); | 434 CloseIfNecessary(result); |
429 } | 435 } |
430 | 436 |
431 void CloseConnection(int result, bool initiated_by_me) { | 437 void CloseConnection(int result, bool initiated_by_me) { |
432 if (!socket_) | 438 if (!socket_) |
433 return; | 439 return; |
434 socket_->Disconnect(); | 440 socket_->Disconnect(); |
435 socket_.reset(); | 441 socket_.reset(); |
436 if (initiated_by_me) { | 442 if (initiated_by_me) { |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 if (!has_message_loop_) | 653 if (!has_message_loop_) |
648 return; | 654 return; |
649 | 655 |
650 scoped_refptr<AdbAttachCommand> command( | 656 scoped_refptr<AdbAttachCommand> command( |
651 new AdbAttachCommand(weak_factory_.GetWeakPtr(), serial, socket, | 657 new AdbAttachCommand(weak_factory_.GetWeakPtr(), serial, socket, |
652 debug_url, frontend_url)); | 658 debug_url, frontend_url)); |
653 adb_thread_->message_loop()->PostTask( | 659 adb_thread_->message_loop()->PostTask( |
654 FROM_HERE, | 660 FROM_HERE, |
655 base::Bind(&AdbAttachCommand::Run, command)); | 661 base::Bind(&AdbAttachCommand::Run, command)); |
656 } | 662 } |
OLD | NEW |