Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4185)

Unified Diff: chrome/test/chromedriver/adb_commands.py

Issue 12477002: [chromedriver] Add chrome package names to adb_commands.py. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/chromedriver/adb_commands.py
diff --git a/chrome/test/chromedriver/adb_commands.py b/chrome/test/chromedriver/adb_commands.py
index ae44be9ac828af02511984baf79d0319c490e135..583631b04abed65a2cc2b7c2295e2ec795027c5f 100755
--- a/chrome/test/chromedriver/adb_commands.py
+++ b/chrome/test/chromedriver/adb_commands.py
@@ -5,26 +5,31 @@
"""A wrapper around adb commands called by chromedriver.
-Prerequisites:
+Preconditions:
- A single device is attached.
- adb is in PATH.
This script should write everything (including stacktraces) to stdout.
"""
+import collections
import optparse
import subprocess
import sys
import traceback
-# {<package name>: (<activity name>, <device abstract socket>)}
-PACKAGE_INFO = {'org.chromium.chrome.testshell':
- ('org.chromium.chrome.testshell.ChromiumTestShellActivity',
- 'chromium_testshell_devtools_remote'),
- 'com.google.android.apps.chrome':
- ('com.google.android.apps.chrome.Main',
- 'chrome_devtools_remote')}
+PackageInfo = collections.namedtuple('PackageInfo', ['activity', 'socket'])
+CHROME_INFO = PackageInfo('Main', 'chrome_devtools_remote')
+PACKAGE_INFO = {
+ 'org.chromium.chrome.testshell':
+ PackageInfo('ChromiumTestShellActivity',
+ 'chromium_testshell_devtools_remote'),
+ 'com.google.android.apps.chrome': CHROME_INFO,
+ 'com.chrome.dev': CHROME_INFO,
+ 'com.chrome.beta': CHROME_INFO,
+ 'com.android.chrome': CHROME_INFO,
+}
class AdbError(Exception):
@@ -38,29 +43,26 @@ class AdbError(Exception):
(self.message, self.cmd, self.output))
-def RunAdbCommand(args, cwd=None):
+def RunAdbCommand(args):
"""Executes an ADB command and returns its output.
Args:
args: A sequence of program arguments supplied to adb.
- cwd: If not None, the subprocess's current directory will be changed to
- |cwd| before it's executed.
Returns:
- A tuple: (stdout + stderr, command string)
+ output of the command (stdout + stderr).
Raises:
AdbError: if exit code is non-zero.
"""
args = ['adb', '-d'] + args
try:
- p = subprocess.Popen(args, cwd=cwd, stdout=subprocess.PIPE,
+ p = subprocess.Popen(args, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
- stdout, _ = p.communicate()
- args = ' '.join(args)
+ out, _ = p.communicate()
if p.returncode:
- raise AdbError('Command failed.', stdout, args)
- return stdout, args
+ raise AdbError('Command failed.', out, args)
+ return out
except OSError as e:
print 'Make sure adb command is in PATH.'
raise e
@@ -72,12 +74,14 @@ def SetChromeFlags():
Raises:
AdbError: If failed to write the flags file to device.
"""
- out, cmd = RunAdbCommand([
+ cmd = [
'shell',
'echo chrome --disable-fre --metrics-recording-only '
- '--enable-remote-debugging > /data/local/chrome-command-line'
- ])
- if out.strip():
+ '--enable-remote-debugging > /data/local/chrome-command-line;'
+ 'echo $?'
+ ]
+ out = RunAdbCommand(cmd).strip()
+ if out != '0':
raise AdbError('Failed to set the command line flags.', out, cmd)
@@ -90,14 +94,15 @@ def ClearAppData(package):
Raises:
AdbError: if any step fails.
"""
- out, cmd = RunAdbCommand(['shell', 'pm clear %s' % package])
+ cmd = ['shell', 'pm clear %s' % package]
# am/pm package do not return valid exit codes.
+ out = RunAdbCommand(cmd)
if 'Success' not in out:
raise AdbError('Failed to clear the profile.', out, cmd)
-def LaunchApp(package):
- """Launches the application.
+def StartActivity(package):
+ """Start the activity in the package.
Args:
package: Application package name.
@@ -105,13 +110,14 @@ def LaunchApp(package):
Raises:
AdbError: if any step fails.
"""
- out, cmd = RunAdbCommand([
+ cmd = [
'shell',
- 'am start -a android.intent.action.VIEW -S -W -n %s/%s '
+ 'am start -a android.intent.action.VIEW -S -W -n %s/.%s '
'-d "data:text/html;charset=utf-8,"' %
- (package, PACKAGE_INFO[package][0])])
+ (package, PACKAGE_INFO[package].activity)]
+ out = RunAdbCommand(cmd)
if 'Complete' not in out:
- raise AdbError('Failed to start the app. %s', out, cmd)
+ raise AdbError('Failed to start the activity. %s', out, cmd)
def Forward(package, host_port):
@@ -124,8 +130,9 @@ def Forward(package, host_port):
Raises:
AdbError: if command fails.
"""
- RunAdbCommand(['forward', 'tcp:%d' % host_port, 'localabstract:%s' %
- PACKAGE_INFO[package][1]])
+ cmd = ['forward', 'tcp:%d' % host_port,
+ 'localabstract:%s' % PACKAGE_INFO[package].socket]
+ RunAdbCommand(cmd)
if __name__ == '__main__':
@@ -145,13 +152,13 @@ if __name__ == '__main__':
raise Exception('No package specified.')
if options.package not in PACKAGE_INFO:
- raise Exception('Unkown package provided. Supported packages are:\n %s' %
+ raise Exception('Unknown package provided. Supported packages are:\n %s' %
PACKAGE_INFO.keys())
if options.launch:
SetChromeFlags()
ClearAppData(options.package)
- LaunchApp(options.package)
+ StartActivity(options.package)
Forward(options.package, options.port)
else:
raise Exception('No options provided.')
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698