diff options
author | felipeg@chromium.org <felipeg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-16 17:16:43 +0000 |
---|---|---|
committer | felipeg@chromium.org <felipeg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-16 17:16:43 +0000 |
commit | 5d26b477fdbcdee36696db414806e043e2c09d97 (patch) | |
tree | 5eb77ef8de312cb18b7bf9a1b8cbd98c6e828ae8 /tools/android | |
parent | 774842a3ea78ab60b4f2856d12b42a92fb513f9c (diff) | |
download | chromium_src-5d26b477fdbcdee36696db414806e043e2c09d97.zip chromium_src-5d26b477fdbcdee36696db414806e043e2c09d97.tar.gz chromium_src-5d26b477fdbcdee36696db414806e043e2c09d97.tar.bz2 |
Upstream the android python scripts changes that enable the new Forwarder2 to be used in our test framework.
BUG=146502
content/ changes are trivial so I am adding a TBR.
TBR=avi
Review URL: https://chromiumcodereview.appspot.com/11148018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@162150 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/android')
-rw-r--r-- | tools/android/forwarder2/device_forwarder_main.cc | 2 | ||||
-rw-r--r-- | tools/android/forwarder2/host_controller.cc | 4 | ||||
-rw-r--r-- | tools/android/forwarder2/host_forwarder_main.cc | 9 | ||||
-rw-r--r-- | tools/android/forwarder2/socket.cc | 24 |
4 files changed, 26 insertions, 13 deletions
diff --git a/tools/android/forwarder2/device_forwarder_main.cc b/tools/android/forwarder2/device_forwarder_main.cc index c0142a1..4a731b2 100644 --- a/tools/android/forwarder2/device_forwarder_main.cc +++ b/tools/android/forwarder2/device_forwarder_main.cc @@ -26,7 +26,7 @@ const char kDefaultAdbSocket[] = "chrome_device_forwarder"; void KillHandler(int /* unused */) { CHECK(g_notifier); if (!g_notifier->Notify()) - exit(-1); + exit(1); } } // namespace diff --git a/tools/android/forwarder2/host_controller.cc b/tools/android/forwarder2/host_controller.cc index 0507c11..98e487f 100644 --- a/tools/android/forwarder2/host_controller.cc +++ b/tools/android/forwarder2/host_controller.cc @@ -68,7 +68,9 @@ bool HostController::Connect() { return false; } // Send the command to the device start listening to the "device_forward_port" - SendCommand(command::LISTEN, device_port_, &adb_control_socket_); + bool send_command_success = SendCommand( + command::LISTEN, device_port_, &adb_control_socket_); + CHECK(send_command_success); int device_port_allocated; command::Type command; if (!ReadCommand(&adb_control_socket_, &device_port_allocated, &command) || diff --git a/tools/android/forwarder2/host_forwarder_main.cc b/tools/android/forwarder2/host_forwarder_main.cc index 1b3bf5d..6e54189 100644 --- a/tools/android/forwarder2/host_forwarder_main.cc +++ b/tools/android/forwarder2/host_forwarder_main.cc @@ -39,7 +39,7 @@ void KillHandler(int /* unused */) { // (non-nicely). This is useful when debugging. ++s_kill_handler_count; if (!g_notifier->Notify() || s_kill_handler_count > 2) - exit(-1); + exit(1); } // Format of arg: <Device port>[:<Forward to port>:<Forward to address>] @@ -77,6 +77,11 @@ int main(int argc, char** argv) { printf("Could not parse adb port number: %s\n", adb_port_str.c_str()); show_help = true; } + if (adb_port <= 0) { + printf("Invalid adb port number: %s. Adb port must be a " + "postivie integer.\n", adb_port_str.c_str()); + show_help = true; + } CommandLine::StringVector forward_args = command_line.GetArgs(); if (show_help || forward_args.empty()) { tools::ShowHelp( @@ -89,7 +94,7 @@ int main(int argc, char** argv) { " <Forward to port> default is <Device port>\n" " <Forward to address> default is 127.0.0.1.", kDefaultAdbPort).c_str()); - return 0; + return 1; } g_notifier = new forwarder2::PipeNotifier(); diff --git a/tools/android/forwarder2/socket.cc b/tools/android/forwarder2/socket.cc index 898afc3d..35553bb 100644 --- a/tools/android/forwarder2/socket.cc +++ b/tools/android/forwarder2/socket.cc @@ -36,6 +36,10 @@ namespace { const int kNoTimeout = -1; const int kConnectTimeOut = 10; // Seconds. + +bool FamilyIsTCP(int family) { + return family == AF_INET || family == AF_INET6; +} } // namespace namespace forwarder2 { @@ -129,7 +133,6 @@ bool Socket::InitUnixSocket(const std::string& path, bool abstract) { abstract_ = abstract; family_ = PF_UNIX; addr_.addr_un.sun_family = family_; - if (abstract) { // Copied from net/base/unix_domain_socket_posix.cc // Convert the path given into abstract socket name. It must start with @@ -143,14 +146,12 @@ bool Socket::InitUnixSocket(const std::string& path, bool abstract) { memcpy(addr_.addr_un.sun_path, path.c_str(), path.size()); addr_len_ = sizeof(sockaddr_un); } - addr_ptr_ = reinterpret_cast<sockaddr*>(&addr_.addr_un); return InitSocketInternal(); } bool Socket::InitTcpSocket(const std::string& host, int port) { port_ = port; - if (host.empty()) { // Use localhost: INADDR_LOOPBACK family_ = AF_INET; @@ -159,8 +160,7 @@ bool Socket::InitTcpSocket(const std::string& host, int port) { } else if (!Resolve(host)) { return false; } - CHECK(family_ == AF_INET || family_ == AF_INET6) - << "Invalid socket family."; + CHECK(FamilyIsTCP(family_)) << "Invalid socket family."; if (family_ == AF_INET) { addr_.addr4.sin_port = htons(port_); addr_ptr_ = reinterpret_cast<sockaddr*>(&addr_.addr4); @@ -180,7 +180,7 @@ bool Socket::BindAndListen() { SetSocketError(); return false; } - if (port_ == 0) { + if (port_ == 0 && FamilyIsTCP(family_)) { SockAddr addr; memset(&addr, 0, sizeof(addr)); socklen_t addrlen = 0; @@ -225,19 +225,25 @@ bool Socket::Accept(Socket* new_socket) { } bool Socket::Connect() { - // Set non-block because we use select. - fcntl(socket_, F_SETFL, fcntl(socket_, F_GETFL) | O_NONBLOCK); + // Set non-block because we use select for connect. + const int kFlags = fcntl(socket_, F_GETFL); + DCHECK(!(kFlags & O_NONBLOCK)); + fcntl(socket_, F_SETFL, kFlags | O_NONBLOCK); errno = 0; if (HANDLE_EINTR(connect(socket_, addr_ptr_, addr_len_)) < 0 && errno != EINPROGRESS) { SetSocketError(); + PRESERVE_ERRNO_HANDLE_EINTR(fcntl(socket_, F_SETFL, kFlags)); return false; } // Wait for connection to complete, or receive a notification. if (!WaitForEvent(WRITE, kConnectTimeOut)) { SetSocketError(); + PRESERVE_ERRNO_HANDLE_EINTR(fcntl(socket_, F_SETFL, kFlags)); return false; } + // Disable non-block since our code assumes blocking semantics. + fcntl(socket_, F_SETFL, kFlags); return true; } @@ -271,7 +277,7 @@ bool Socket::Resolve(const std::string& host) { } int Socket::GetPort() { - if (family_ != AF_INET && family_ != AF_INET6) { + if (!FamilyIsTCP(family_)) { LOG(ERROR) << "Can't call GetPort() on an unix domain socket."; return 0; } |