OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/device/adb/mock_adb_server.h" | 5 #include "chrome/browser/devtools/device/adb/mock_adb_server.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 } | 420 } |
421 return 0; | 421 return 0; |
422 } | 422 } |
423 | 423 |
424 void ProcessCommand(const std::string& command) { | 424 void ProcessCommand(const std::string& command) { |
425 CHECK(CalledOnValidThread()); | 425 CHECK(CalledOnValidThread()); |
426 if (command == "host:devices") { | 426 if (command == "host:devices") { |
427 SendSuccess(base::StringPrintf("%s\tdevice\n%s\toffline", | 427 SendSuccess(base::StringPrintf("%s\tdevice\n%s\toffline", |
428 kSerialOnline, | 428 kSerialOnline, |
429 kSerialOffline)); | 429 kSerialOffline)); |
430 } else if (command.find(kHostTransportPrefix) == 0) { | 430 } else if (base::StartsWith(command, kHostTransportPrefix, |
431 serial_ = command.substr(strlen(kHostTransportPrefix)); | 431 base::CompareCase::SENSITIVE)) { |
| 432 serial_ = command.substr(sizeof(kHostTransportPrefix) - 1); |
432 SendSuccess(std::string()); | 433 SendSuccess(std::string()); |
433 } else if (serial_ != kSerialOnline) { | 434 } else if (serial_ != kSerialOnline) { |
434 Send("FAIL", "device offline (x)"); | 435 Send("FAIL", "device offline (x)"); |
435 } else { | 436 } else { |
436 mock_connection_ = | 437 mock_connection_ = |
437 base::WrapUnique(new MockAndroidConnection(this, serial_, command)); | 438 base::WrapUnique(new MockAndroidConnection(this, serial_, command)); |
438 } | 439 } |
439 } | 440 } |
440 | 441 |
441 void SendSuccess(const std::string& response) override { | 442 void SendSuccess(const std::string& response) override { |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 SendHTTPResponse(kSampleChromePages); | 534 SendHTTPResponse(kSampleChromePages); |
534 else | 535 else |
535 NOTREACHED() << "Unknown command " << request; | 536 NOTREACHED() << "Unknown command " << request; |
536 } else if (socket_name_ == "chrome_devtools_remote_1002") { | 537 } else if (socket_name_ == "chrome_devtools_remote_1002") { |
537 if (path == kJsonVersionPath) | 538 if (path == kJsonVersionPath) |
538 SendHTTPResponse(kSampleChromeBetaVersion); | 539 SendHTTPResponse(kSampleChromeBetaVersion); |
539 else if (path == kJsonListPath) | 540 else if (path == kJsonListPath) |
540 SendHTTPResponse(kSampleChromeBetaPages); | 541 SendHTTPResponse(kSampleChromeBetaPages); |
541 else | 542 else |
542 NOTREACHED() << "Unknown command " << request; | 543 NOTREACHED() << "Unknown command " << request; |
543 } else if (socket_name_.find("noprocess_devtools_remote") == 0) { | 544 } else if (base::StartsWith(socket_name_, "noprocess_devtools_remote", |
| 545 base::CompareCase::SENSITIVE)) { |
544 if (path == kJsonVersionPath) | 546 if (path == kJsonVersionPath) |
545 SendHTTPResponse("{}"); | 547 SendHTTPResponse("{}"); |
546 else if (path == kJsonListPath) | 548 else if (path == kJsonListPath) |
547 SendHTTPResponse("[]"); | 549 SendHTTPResponse("[]"); |
548 else | 550 else |
549 NOTREACHED() << "Unknown command " << request; | 551 NOTREACHED() << "Unknown command " << request; |
550 } else if (socket_name_ == "webview_devtools_remote_2425") { | 552 } else if (socket_name_ == "webview_devtools_remote_2425") { |
551 if (path == kJsonVersionPath) | 553 if (path == kJsonVersionPath) |
552 SendHTTPResponse(kSampleWebViewVersion); | 554 SendHTTPResponse(kSampleWebViewVersion); |
553 else if (path == kJsonListPath) | 555 else if (path == kJsonListPath) |
554 SendHTTPResponse(kSampleWebViewPages); | 556 SendHTTPResponse(kSampleWebViewPages); |
555 else | 557 else |
556 NOTREACHED() << "Unknown command " << request; | 558 NOTREACHED() << "Unknown command " << request; |
557 } else { | 559 } else { |
558 NOTREACHED() << "Unknown socket " << socket_name_; | 560 NOTREACHED() << "Unknown socket " << socket_name_; |
559 } | 561 } |
560 } | 562 } |
561 | 563 |
562 void MockAndroidConnection::ProcessCommand(const std::string& command) { | 564 void MockAndroidConnection::ProcessCommand(const std::string& command) { |
563 if (command.find(kLocalAbstractPrefix) == 0) { | 565 if (base::StartsWith(command, kLocalAbstractPrefix, |
564 socket_name_ = command.substr(strlen(kLocalAbstractPrefix)); | 566 base::CompareCase::SENSITIVE)) { |
| 567 socket_name_ = command.substr(sizeof(kLocalAbstractPrefix) - 1); |
565 delegate_->SendSuccess(std::string()); | 568 delegate_->SendSuccess(std::string()); |
| 569 return; |
| 570 } |
| 571 |
| 572 if (base::StartsWith(command, kShellPrefix, base::CompareCase::SENSITIVE)) { |
| 573 std::string result; |
| 574 for (const auto& line : |
| 575 base::SplitString(command.substr(sizeof(kShellPrefix) - 1), "\n", |
| 576 base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) { |
| 577 if (line == kDeviceModelCommand) { |
| 578 result += kDeviceModel; |
| 579 result += "\r\n"; |
| 580 } else if (line == kOpenedUnixSocketsCommand) { |
| 581 result += kSampleOpenedUnixSockets; |
| 582 } else if (line == kDumpsysCommand) { |
| 583 result += kSampleDumpsys; |
| 584 } else if (line == kListProcessesCommand) { |
| 585 result += kSampleListProcesses; |
| 586 } else if (line == kListUsersCommand) { |
| 587 result += kSampleListUsers; |
| 588 } else if (base::StartsWith(line, kEchoCommandPrefix, |
| 589 base::CompareCase::SENSITIVE)) { |
| 590 result += line.substr(sizeof(kEchoCommandPrefix) - 1); |
| 591 result += "\r\n"; |
| 592 } else { |
| 593 NOTREACHED() << "Unknown shell command - " << command; |
| 594 } |
| 595 } |
| 596 delegate_->SendSuccess(result); |
566 } else { | 597 } else { |
567 if (command.find(kShellPrefix) == 0) { | 598 NOTREACHED() << "Unknown command - " << command; |
568 std::string result; | |
569 for (const auto& line : | |
570 base::SplitString(command.substr(strlen(kShellPrefix)), "\n", | |
571 base::KEEP_WHITESPACE, | |
572 base::SPLIT_WANT_NONEMPTY)) { | |
573 if (line == kDeviceModelCommand) { | |
574 result += kDeviceModel; | |
575 result += "\r\n"; | |
576 } else if (line == kOpenedUnixSocketsCommand) { | |
577 result += kSampleOpenedUnixSockets; | |
578 } else if (line == kDumpsysCommand) { | |
579 result += kSampleDumpsys; | |
580 } else if (line == kListProcessesCommand) { | |
581 result += kSampleListProcesses; | |
582 } else if (line == kListUsersCommand) { | |
583 result += kSampleListUsers; | |
584 } else if (line.find(kEchoCommandPrefix) == 0) { | |
585 result += line.substr(strlen(kEchoCommandPrefix)); | |
586 result += "\r\n"; | |
587 } else { | |
588 NOTREACHED() << "Unknown shell command - " << command; | |
589 } | |
590 } | |
591 delegate_->SendSuccess(result); | |
592 } else { | |
593 NOTREACHED() << "Unknown command - " << command; | |
594 } | |
595 delegate_->Close(); | |
596 } | 599 } |
| 600 delegate_->Close(); |
597 } | 601 } |
598 | 602 |
599 void MockAndroidConnection::SendHTTPResponse(const std::string& body) { | 603 void MockAndroidConnection::SendHTTPResponse(const std::string& body) { |
600 std::string response_data(base::StringPrintf(kHttpResponse, | 604 std::string response_data(base::StringPrintf(kHttpResponse, |
601 static_cast<int>(body.size()), | 605 static_cast<int>(body.size()), |
602 body.c_str())); | 606 body.c_str())); |
603 delegate_->SendRaw(response_data); | 607 delegate_->SendRaw(response_data); |
604 } | 608 } |
605 | 609 |
606 void StartMockAdbServer(FlushMode flush_mode) { | 610 void StartMockAdbServer(FlushMode flush_mode) { |
607 BrowserThread::PostTaskAndReply( | 611 BrowserThread::PostTaskAndReply( |
608 BrowserThread::IO, FROM_HERE, | 612 BrowserThread::IO, FROM_HERE, |
609 base::Bind(&StartMockAdbServerOnIOThread, flush_mode), | 613 base::Bind(&StartMockAdbServerOnIOThread, flush_mode), |
610 base::MessageLoop::QuitWhenIdleClosure()); | 614 base::MessageLoop::QuitWhenIdleClosure()); |
611 content::RunMessageLoop(); | 615 content::RunMessageLoop(); |
612 } | 616 } |
613 | 617 |
614 void StopMockAdbServer() { | 618 void StopMockAdbServer() { |
615 BrowserThread::PostTaskAndReply(BrowserThread::IO, FROM_HERE, | 619 BrowserThread::PostTaskAndReply(BrowserThread::IO, FROM_HERE, |
616 base::Bind(&StopMockAdbServerOnIOThread), | 620 base::Bind(&StopMockAdbServerOnIOThread), |
617 base::MessageLoop::QuitWhenIdleClosure()); | 621 base::MessageLoop::QuitWhenIdleClosure()); |
618 content::RunMessageLoop(); | 622 content::RunMessageLoop(); |
619 } | 623 } |
620 | 624 |
OLD | NEW |