зеркало из https://github.com/mozilla/gecko-dev.git
84 строки
2.6 KiB
Python
84 строки
2.6 KiB
Python
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
# You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
from devicemanagerADB import DeviceManagerADB
|
|
from devicemanagerSUT import DeviceManagerSUT
|
|
import StringIO
|
|
|
|
class DroidMixin(object):
|
|
"""Mixin to extend DeviceManager with Android-specific functionality"""
|
|
|
|
def launchApplication(self, appName, activityName, intent, url=None,
|
|
extras=None):
|
|
"""
|
|
Launches an Android application
|
|
returns:
|
|
success: True
|
|
failure: False
|
|
"""
|
|
# only one instance of an application may be running at once
|
|
if self.processExist(appName):
|
|
return False
|
|
|
|
acmd = [ "am", "start", "-W", "-n", "%s/%s" % (appName, activityName)]
|
|
|
|
if intent:
|
|
acmd.extend(["-a", intent])
|
|
|
|
if extras:
|
|
for (key, val) in extras.iteritems():
|
|
if type(val) is int:
|
|
extraTypeParam = "--ei"
|
|
elif type(val) is bool:
|
|
extraTypeParam = "--ez"
|
|
else:
|
|
extraTypeParam = "--es"
|
|
acmd.extend([extraTypeParam, str(key), str(val)])
|
|
|
|
if url:
|
|
acmd.extend(["-d", url])
|
|
|
|
# shell output not that interesting and debugging logs should already
|
|
# show what's going on here... so just create an empty memory buffer
|
|
# and ignore
|
|
shellOutput = StringIO.StringIO()
|
|
if self.shell(acmd, shellOutput) == 0:
|
|
return True
|
|
|
|
return False
|
|
|
|
def launchFennec(self, appName, intent="android.intent.action.VIEW",
|
|
mozEnv=None, extraArgs=None, url=None):
|
|
"""
|
|
Convenience method to launch Fennec on Android with various debugging
|
|
arguments
|
|
WARNING: FIXME: This would go better in mozrunner. Please do not
|
|
use this method if you are not comfortable with it going away sometime
|
|
in the near future
|
|
returns:
|
|
success: True
|
|
failure: False
|
|
"""
|
|
extras = {}
|
|
|
|
if mozEnv:
|
|
# mozEnv is expected to be a dictionary of environment variables: Fennec
|
|
# itself will set them when launched
|
|
for (envCnt, (envkey, envval)) in enumerate(mozEnv.iteritems()):
|
|
extras["env" + str(envCnt)] = envkey + "=" + envval
|
|
|
|
# Additional command line arguments that fennec will read and use (e.g.
|
|
# with a custom profile)
|
|
if extraArgs:
|
|
extras['args'] = " ".join(extraArgs)
|
|
|
|
return self.launchApplication(appName, ".App", intent, url=url,
|
|
extras=extras)
|
|
|
|
class DroidADB(DeviceManagerADB, DroidMixin):
|
|
pass
|
|
|
|
class DroidSUT(DeviceManagerSUT, DroidMixin):
|
|
pass
|