OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 """Brings in Chrome Android's android_commands module, which itself is a | 4 """Brings in Chrome Android's android_commands module, which itself is a |
5 thin(ish) wrapper around adb.""" | 5 thin(ish) wrapper around adb.""" |
6 import os | 6 import os |
7 import sys | 7 import sys |
8 | 8 |
9 # This is currently a thin wrapper around Chrome Android's | 9 # This is currently a thin wrapper around Chrome Android's |
10 # build scripts, located in chrome/build/android. This file exists mainly to | 10 # build scripts, located in chrome/build/android. This file exists mainly to |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 def Pull(self, remote, local): | 113 def Pull(self, remote, local): |
114 return self._adb.Adb().Pull(remote, local) | 114 return self._adb.Adb().Pull(remote, local) |
115 | 115 |
116 def FileExistsOnDevice(self, file_name): | 116 def FileExistsOnDevice(self, file_name): |
117 return self._adb.FileExistsOnDevice(file_name) | 117 return self._adb.FileExistsOnDevice(file_name) |
118 | 118 |
119 def IsRootEnabled(self): | 119 def IsRootEnabled(self): |
120 return self._adb.IsRootEnabled() | 120 return self._adb.IsRootEnabled() |
121 | 121 |
122 def HasForwarder(adb): | 122 def HasForwarder(adb): |
123 return adb.FileExistsOnDevice('/data/local/tmp/forwarder') | 123 return adb.FileExistsOnDevice('/data/local/tmp/device_forwarder') |
124 | 124 |
125 def HowToInstallForwarder(): | 125 def HowToInstallForwarder(): |
126 return 'adb push out/$BUILD_TYPE/forwarder %s' % ( | 126 return 'adb push out/$BUILD_TYPE/device_forwarder %s' % ( |
127 '/data/local/tmp/forwarder') | 127 '/data/local/tmp/device_forwarder') |
128 | 128 |
129 class Forwarder(object): | 129 class Forwarder(object): |
130 def __init__(self, adb, host_port): | 130 def __init__(self, adb, host_port): |
131 assert HasForwarder(adb) | 131 assert HasForwarder(adb) |
132 | 132 |
133 port_pairs = [(host_port, host_port), ] | 133 port_pairs = [(0, host_port), ] |
134 tool = valgrind_tools.BaseTool() | 134 tool = valgrind_tools.BaseTool() |
135 | 135 |
136 self._host_port = host_port | 136 self._host_port = host_port |
137 | 137 |
138 # Currently, Forwarder requires that ../out/Debug/forwarder exists, | 138 # Currently, Forwarder requires that ../out/Debug/forwarder exists, |
139 # in case it needs to push it to the device. However, to get to here, | 139 # in case it needs to push it to the device. However, to get to here, |
140 # android_browser_finder has ensured that device HasForwarder, above. | 140 # android_browser_finder has ensured that device HasForwarder, above. |
141 # | 141 # |
142 # Therefore, here, we just need to instantiate the forwarder, no push | 142 # Therefore, here, we just need to instantiate the forwarder, no push |
143 # needed. | 143 # needed. |
144 # | 144 # |
145 # To do this, we monkey patch adb.PushIfNeeded to a noop. | 145 # To do this, we monkey patch adb.PushIfNeeded to a noop. |
146 # | 146 # |
147 # TODO(nduca): Fix build.android.pylib.Forwarder to not need this. | 147 # TODO(nduca): Fix build.android.pylib.Forwarder to not need this. |
148 real_push_if_needed = adb.Adb().PushIfNeeded | 148 real_push_if_needed = adb.Adb().PushIfNeeded |
149 def FakePush(_, device_path): | 149 def FakePush(_, device_path): |
150 assert adb.FileExistsOnDevice(device_path) | 150 assert adb.FileExistsOnDevice(device_path) |
151 try: | 151 try: |
152 adb.Adb().PushIfNeeded = FakePush | 152 adb.Adb().PushIfNeeded = FakePush |
153 self._forwarder = forwarder.Forwarder( | 153 self._forwarder = forwarder.Forwarder( |
154 adb.Adb(), port_pairs, | 154 adb.Adb(), port_pairs, |
155 tool, 'localhost', 'unused') | 155 tool, '127.0.0.1', os.environ.get('BUILDTYPE', 'Debug')) |
156 finally: | 156 finally: |
157 adb.Adb().PushIfNeeded = real_push_if_needed | 157 adb.Adb().PushIfNeeded = real_push_if_needed |
158 self._device_port = self._forwarder.DevicePortForHostPort(self._host_port) | 158 self._device_port = self._forwarder.DevicePortForHostPort(self._host_port) |
159 | 159 |
160 @property | 160 @property |
161 def url(self): | 161 def url(self): |
162 assert self._forwarder | 162 assert self._forwarder |
163 return 'http://localhost:%i' % self._device_port | 163 return 'http://localhost:%i' % self._device_port |
164 | 164 |
165 def Close(self): | 165 def Close(self): |
166 if self._forwarder: | 166 if self._forwarder: |
167 self._forwarder.Close() | 167 self._forwarder.Close() |
168 self._forwarder = None | 168 self._forwarder = None |
OLD | NEW |