aboutsummaryrefslogtreecommitdiff
path: root/catapult/devil/docs/device_utils.md
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/devil/docs/device_utils.md')
-rw-r--r--catapult/devil/docs/device_utils.md1183
1 files changed, 743 insertions, 440 deletions
diff --git a/catapult/devil/docs/device_utils.md b/catapult/devil/docs/device_utils.md
index a6e89a70..960ca894 100644
--- a/catapult/devil/docs/device_utils.md
+++ b/catapult/devil/docs/device_utils.md
@@ -1,133 +1,297 @@
# [devil.android.device_utils](https://github.com/catapult-project/catapult/blob/master/devil/devil/android/device_utils.py)
-*This page was autogenerated by `devil/utils/markdown.py --module-link https://github.com/catapult-project/catapult/blob/master/devil/devil/android/device_utils.py`*
+*This page was autogenerated. Run `devil/bin/generate_md_docs` to update*
## DeviceUtils
-### DeviceUtils.\_\_init\_\_
+### DeviceUtils.BroadcastIntent
-DeviceUtils constructor.
+Send a broadcast intent.
```
Args:
- device: Either a device serial, an existing AdbWrapper instance, or an
- an existing AndroidCommands instance.
- enable_device_files_cache: For PushChangedFiles(), cache checksums of
- pushed files rather than recomputing them on a subsequent call.
- default_timeout: An integer containing the default number of seconds to
- wait for an operation to complete if no explicit value is provided.
- default_retries: An integer containing the default number or times an
- operation should be retried on failure if no explicit value is provided.
+ intent: An Intent to broadcast.
+ timeout: timeout in seconds
+ retries: number of retries
+
+ Raises:
+ CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
```
-### DeviceUtils.\_\_eq\_\_
+### DeviceUtils.ChangeOwner
-Checks whether |other| refers to the same device as |self|.
+Changes file system ownership for permissions.
```
Args:
- other: The object to compare to. This can be a basestring, an instance
- of adb_wrapper.AdbWrapper, or an instance of DeviceUtils.
- Returns:
- Whether |other| refers to the same device as |self|.
+ owner_group: New owner and group to assign. Note that this should be a
+ string in the form user[.group] where the group is option.
+ paths: Paths to change ownership of.
+
+ Note that the -R recursive option is not supported by all Android
+ versions.
```
-### DeviceUtils.\_\_lt\_\_
+### DeviceUtils.ChangeSecurityContext
-Compares two instances of DeviceUtils.
+Changes the SELinux security context for files.
```
- This merely compares their serial numbers.
+ Args:
+ security_context: The new security context as a string
+ paths: Paths to change the security context of.
+
+ Note that the -R recursive option is not supported by all Android
+ versions.
+```
+
+### DeviceUtils.ClearApplicationState
+
+Clear all state for the given package.
+```
Args:
- other: The instance of DeviceUtils to compare to.
+ package: A string containing the name of the package to stop.
+ permissions: List of permissions to set after clearing data.
+ timeout: timeout in seconds
+ retries: number of retries
+
+ Raises:
+ CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
+```
+
+
+### DeviceUtils.ClearCache
+
+Clears all caches.
+### DeviceUtils.DismissCrashDialogIfNeeded
+
+Dismiss the error/ANR dialog if present.
+```
+ Returns: Name of the crashed package if a dialog is focused,
+ None otherwise.
+```
+
+
+### DeviceUtils.DumpCacheData
+
+Dumps the current cache state to a string.
+```
+ Args:
+ timeout: timeout in seconds
+ retries: number of retries
+
Returns:
- Whether |self| is less than |other|.
+ A serialized cache as a string.
```
-### DeviceUtils.\_\_str\_\_
+### DeviceUtils.EnableRoot
-Returns the device serial.
-### DeviceUtils.NeedsSU
+Restarts adbd with root privileges.
+```
+ Args:
+ timeout: timeout in seconds
+ retries: number of retries
-Checks whether 'su' is needed to access protected resources.
+ Raises:
+ CommandFailedError if root could not be enabled.
+ CommandTimeoutError on timeout.
+```
+
+
+### DeviceUtils.FileExists
+
+Checks whether the given file exists on the device.
+```
+ Arguments are the same as PathExists.
+```
+
+
+### DeviceUtils.FileSize
+
+Get the size of a file on the device.
```
+ Note: This is implemented by parsing the output of the 'ls' command on
+ the device. On some Android versions, when passing a directory or special
+ file, the size is *not* reported and this function will throw an exception.
+
Args:
+ device_path: A string containing the path of a file on the device.
+ as_root: A boolean indicating whether the to use root privileges to
+ access the file information.
timeout: timeout in seconds
retries: number of retries
Returns:
- True if 'su' is available on the device and is needed to to access
- protected resources; False otherwise if either 'su' is not available
- (e.g. because the device has a user build), or not needed (because adbd
- already has root privileges).
+ The size of the file in bytes.
Raises:
+ CommandFailedError if device_path cannot be found on the device, or
+ its size cannot be determited for some reason.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.IsOnline
+### DeviceUtils.ForceStop
-Checks whether the device is online.
+Close the application.
+```
+ Args:
+ package: A string containing the name of the package to stop.
+ timeout: timeout in seconds
+ retries: number of retries
+
+ Raises:
+ CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
+```
+
+
+### DeviceUtils.GetABI
+
+Gets the device main ABI.
```
Args:
timeout: timeout in seconds
retries: number of retries
Returns:
- True if the device is online, False otherwise.
+ The device's main ABI name. For supported ABIs, the return value will be
+ one of the values defined in devil.android.ndk.abis.
Raises:
CommandTimeoutError on timeout.
```
-### DeviceUtils.HasRoot
+### DeviceUtils.GetAppWritablePath
-Checks whether or not adbd has root privileges.
+Get a path that on the device's SD card that apps can write.
```
Args:
timeout: timeout in seconds
retries: number of retries
Returns:
- True if adbd has root privileges, False otherwise.
+ A app-writeable path on the device's SD card.
Raises:
+ CommandFailedError if the external storage path could not be determined.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.EnableRoot
+### DeviceUtils.GetApplicationDataDirectory
-Restarts adbd with root privileges.
+Get the data directory on the device for the given package.
+```
+ Args:
+ package: Name of the package.
+
+ Returns:
+ The package's data directory.
+ Raises:
+ CommandFailedError if the package's data directory can't be found,
+ whether because it's not installed or otherwise.
+```
+
+
+### DeviceUtils.GetApplicationPaths
+
+Get the paths of the installed apks on the device for the given package.
+```
+ Args:
+ package: Name of the package.
+
+ Returns:
+ List of paths to the apks on the device for the given package.
+```
+
+
+### DeviceUtils.GetApplicationPids
+
+Returns the PID or PIDs of a given process name.
```
+ Note that the |process_name|, often the package name, must match exactly.
+
Args:
+ process_name: A string containing the process name to get the PIDs for.
+ at_most_one: A boolean indicating that at most one PID is expected to
+ be found.
timeout: timeout in seconds
retries: number of retries
+ Returns:
+ A list of the PIDs for the named process. If at_most_one=True returns
+ the single PID found or None otherwise.
+
Raises:
- CommandFailedError if root could not be enabled.
+ CommandFailedError if at_most_one=True and more than one PID is found
+ for the named process.
CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
```
-### DeviceUtils.IsUserBuild
+### DeviceUtils.GetApplicationTargetSdk
-Checks whether or not the device is running a user build.
+Get the targetSdkVersion of a package installed on the device.
+```
+ Args:
+ package: Name of the package.
+
+ Returns:
+ A string with the targetSdkVersion or None if the package is not found on
+ the device. Note: this cannot always be cast to an integer. If this
+ application targets a pre-release SDK, this returns the version codename
+ instead (ex. "R").
+```
+
+
+### DeviceUtils.GetApplicationVersion
+
+Get the version name of a package installed on the device.
+```
+ Args:
+ package: Name of the package.
+
+ Returns:
+ A string with the version name or None if the package is not found
+ on the device.
+```
+
+
+### DeviceUtils.GetClientCache
+
+Returns client cache.
+### DeviceUtils.GetCountry
+
+Returns the country setting on the device.
+```
+ DEPRECATED: Prefer GetLocale() instead.
+
+ Args:
+ cache: Whether to use cached properties when available.
+```
+
+
+### DeviceUtils.GetEnforce
+
+Get the current mode of SELinux.
```
Args:
timeout: timeout in seconds
retries: number of retries
Returns:
- True if the device is running a user build, False otherwise (i.e. if
- it's running a userdebug build).
+ True (enforcing), False (permissive), or None (disabled).
Raises:
+ CommandFailedError on failure.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
@@ -137,6 +301,9 @@ Checks whether or not the device is running a user build.
Get the device's path to its SD card.
```
+ Note: this path is read-only by apps in R+. Use GetAppWritablePath() to
+ obtain a path writable by apps.
+
Args:
timeout: timeout in seconds
retries: number of retries
@@ -151,6 +318,9 @@ Get the device's path to its SD card.
```
+### DeviceUtils.GetFeatures
+
+Returns the features supported on the device.
### DeviceUtils.GetIMEI
Get the device's IMEI.
@@ -167,93 +337,190 @@ Get the device's IMEI.
```
-### DeviceUtils.GetApplicationPaths
+### DeviceUtils.GetLanguage
-Get the paths of the installed apks on the device for the given package.
+Returns the language setting on the device.
+```
+ DEPRECATED: Prefer GetLocale() instead.
+
+ Args:
+ cache: Whether to use cached properties when available.
+```
+
+
+### DeviceUtils.GetLocale
+
+Returns the locale setting on the device.
+```
+ Args:
+ cache: Whether to use cached properties when available.
+ Returns:
+ A pair (language, country).
+```
+
+
+### DeviceUtils.GetLogcatMonitor
+
+Returns a new LogcatMonitor associated with this device.
+```
+ Parameters passed to this function are passed directly to
+ |logcat_monitor.LogcatMonitor| and are documented there.
+```
+
+
+### DeviceUtils.GetPackageArchitecture
+
+Get the architecture of a package installed on the device.
```
Args:
package: Name of the package.
Returns:
- List of paths to the apks on the device for the given package.
+ A string with the architecture, or None if the package is missing.
```
-### DeviceUtils.TakeBugReport
+### DeviceUtils.GetPids
-Takes a bug report and dumps it to the specified path.
+Returns the PIDs of processes containing the given name as substring.
```
- This doesn't use adb's bugreport option since its behavior is dependent on
- both adb version and device OS version. To make it simpler, this directly
- runs the bugreport command on the device itself and dumps the stdout to a
- file.
+ DEPRECATED
+
+ Note that the |process_name| is often the package name.
Args:
- path: Path on the host to drop the bug report.
- timeout: (optional) Timeout per try in seconds.
- retries: (optional) Number of retries to attempt.
+ process_name: A string containing the process name to get the PIDs for.
+ If missing returns PIDs for all processes.
+ timeout: timeout in seconds
+ retries: number of retries
+
+ Returns:
+ A dict mapping process name to a list of PIDs for each process that
+ contained the provided |process_name|.
+
+ Raises:
+ CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
```
-### DeviceUtils.GetApplicationVersion
+### DeviceUtils.GetProp
-Get the version name of a package installed on the device.
+Gets a property from the device.
```
Args:
- package: Name of the package.
+ property_name: A string containing the name of the property to get from
+ the device.
+ cache: Whether to use cached properties when available.
+ timeout: timeout in seconds
+ retries: number of retries
Returns:
- A string with the version name or None if the package is not found
- on the device.
+ The value of the device's |property_name| property.
+
+ Raises:
+ CommandTimeoutError on timeout.
```
-### DeviceUtils.GetApplicationDataDirectory
+### DeviceUtils.GetSecurityContextForPackage
-Get the data directory on the device for the given package.
+Gets the SELinux security context for the given package.
```
Args:
package: Name of the package.
+ encrypted: Whether to check in the encrypted data directory
+ (/data/user_de/0/) or the unencrypted data directory (/data/data/).
Returns:
- The package's data directory.
+ The package's security context as a string, or None if not found.
+```
+
+
+### DeviceUtils.GetTracingPath
+
+Gets tracing path from the device.
+```
+ Args:
+ timeout: timeout in seconds
+ retries: number of retries
+
+ Returns:
+ /sys/kernel/debug/tracing for device with debugfs mount support;
+ /sys/kernel/tracing for device with tracefs support;
+ /sys/kernel/debug/tracing if support can't be determined.
+
Raises:
- CommandFailedError if the package's data directory can't be found,
- whether because it's not installed or otherwise.
+ CommandTimeoutError on timeout.
```
-### DeviceUtils.WaitUntilFullyBooted
+### DeviceUtils.GetWebViewUpdateServiceDump
-Wait for the device to fully boot.
+Get the WebView update command sysdump on the device.
```
- This means waiting for the device to boot, the package manager to be
- available, and the SD card to be ready. It can optionally mean waiting
- for wifi to come up, too.
+ Returns:
+ A dictionary with these possible entries:
+ FallbackLogicEnabled: True|False
+ CurrentWebViewPackage: "package name" or None
+ MinimumWebViewVersionCode: int
+ WebViewPackages: Dict of installed WebView providers, mapping "package
+ name" to "reason it's valid/invalid."
+
+ It may return an empty dictionary if device does not
+ support the "dumpsys webviewupdate" command.
+
+ Raises:
+ CommandFailedError on failure.
+ CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
+```
+
+
+### DeviceUtils.GoHome
+
+Return to the home screen and obtain launcher focus.
+```
+ This command launches the home screen and attempts to obtain
+ launcher focus until the timeout is reached.
Args:
- wifi: A boolean indicating if we should wait for wifi to come up or not.
timeout: timeout in seconds
retries: number of retries
Raises:
- CommandFailedError on failure.
- CommandTimeoutError if one of the component waits times out.
- DeviceUnreachableError if the device becomes unresponsive.
+ CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
```
-### DeviceUtils.Reboot
+### DeviceUtils.GrantPermissions
-Reboot the device.
+### DeviceUtils.HasRoot
+
+Checks whether or not adbd has root privileges.
```
+ A device is considered to have root if all commands are implicitly run
+ with elevated privileges, i.e. without having to use "su" to run them.
+
+ Note that some devices do not allow this implicit privilige elevation,
+ but _can_ run commands as root just fine when done explicitly with "su".
+ To check if your device can run commands with elevated privileges at all
+ use:
+
+ device.HasRoot() or device.NeedsSU()
+
+ Luckily, for the most part you don't need to worry about this and using
+ RunShellCommand(cmd, as_root=True) will figure out for you the right
+ command incantation to run with elevated privileges.
+
Args:
- block: A boolean indicating if we should wait for the reboot to complete.
- wifi: A boolean indicating if we should wait for wifi to be enabled after
- the reboot. The option has no effect unless |block| is also True.
timeout: timeout in seconds
retries: number of retries
+ Returns:
+ True if adbd has root privileges, False otherwise.
+
Raises:
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
@@ -262,18 +529,30 @@ Reboot the device.
### DeviceUtils.Install
-Install an APK.
+Install an APK or app bundle.
```
- Noop if an identical APK is already installed.
+ Noop if an identical APK is already installed. If installing a bundle, the
+ bundletools helper script (bin/*_bundle) should be used rather than the .aab
+ file.
Args:
- apk: An ApkHelper instance or string containing the path to the APK.
+ apk: An ApkHelper instance or string containing the path to the APK or
+ bundle.
allow_downgrade: A boolean indicating if we should allow downgrades.
reinstall: A boolean indicating if we should keep any existing app data.
+ Ignored if |apk| is a bundle.
permissions: Set of permissions to set. If not set, finds permissions with
apk helper. To set no permissions, pass [].
timeout: timeout in seconds
retries: number of retries
+ modules: An iterable containing specific bundle modules to install.
+ Error if set and |apk| points to an APK instead of a bundle.
+ fake_modules: An iterable containing specific bundle modules that should
+ have their apks copied to |MODULES_SRC_DIRECTORY_PATH| subdirectory
+ rather than installed. Thus the app can emulate SplitCompat while
+ running. This should not have any overlap with |modules|.
+ additional_locales: An iterable with additional locales to install for a
+ bundle.
Raises:
CommandFailedError if the installation fails.
@@ -308,82 +587,69 @@ Install a split APK.
```
-### DeviceUtils.Uninstall
+### DeviceUtils.IsApplicationInstalled
-Remove the app |package\_name| from the device.
+Determines whether a particular package is installed on the device.
```
- This is a no-op if the app is not already installed.
+ Args:
+ package: Name of the package.
+
+ Returns:
+ True if the application is installed, False otherwise.
+```
+
+### DeviceUtils.IsOnline
+
+Checks whether the device is online.
+```
Args:
- package_name: The package to uninstall.
- keep_data: (optional) Whether to keep the data and cache directories.
- timeout: Timeout in seconds.
- retries: Number of retries.
+ timeout: timeout in seconds
+ retries: number of retries
+
+ Returns:
+ True if the device is online, False otherwise.
Raises:
- CommandFailedError if the uninstallation fails.
- CommandTimeoutError if the uninstallation times out.
- DeviceUnreachableError on missing device.
+ CommandTimeoutError on timeout.
```
-### DeviceUtils.RunShellCommand
+### DeviceUtils.IsScreenOn
-Run an ADB shell command.
+Determines if screen is on.
```
- The command to run |cmd| should be a sequence of program arguments
- (preferred) or a single string with a shell script to run.
+ Dumpsys input_method exposes screen on/off state. Below is an explination of
+ the states.
- When |cmd| is a sequence, it is assumed to contain the name of the command
- to run followed by its arguments. In this case, arguments are passed to the
- command exactly as given, preventing any further processing by the shell.
- This allows callers to easily pass arguments with spaces or special
- characters without having to worry about quoting rules. Whenever possible,
- it is recomended to pass |cmd| as a sequence.
+ Pre-L:
+ On: mScreenOn=true
+ Off: mScreenOn=false
+ L+:
+ On: mInteractive=true
+ Off: mInteractive=false
- When |cmd| is passed as a single string, |shell| should be set to True.
- The command will be interpreted and run by the shell on the device,
- allowing the use of shell features such as pipes, wildcards, or variables.
- Failing to set shell=True will issue a warning, but this will be changed
- to a hard failure in the future (see: catapult:#3242).
+ Returns:
+ True if screen is on, false if it is off.
+
+ Raises:
+ device_errors.CommandFailedError: If screen state cannot be found.
+```
- This behaviour is consistent with that of command runners in cmd_helper as
- well as Python's own subprocess.Popen.
- TODO(perezju) Change the default of |check_return| to True when callers
- have switched to the new behaviour.
+### DeviceUtils.IsUserBuild
+Checks whether or not the device is running a user build.
+```
Args:
- cmd: A sequence containing the command to run and its arguments, or a
- string with a shell script to run (should also set shell=True).
- shell: A boolean indicating whether shell features may be used in |cmd|.
- check_return: A boolean indicating whether or not the return code should
- be checked.
- cwd: The device directory in which the command should be run.
- env: The environment variables with which the command should be run.
- run_as: A string containing the package as which the command should be
- run.
- as_root: A boolean indicating whether the shell command should be run
- with root privileges.
- single_line: A boolean indicating if only a single line of output is
- expected.
- large_output: Uses a work-around for large shell command output. Without
- this large output will be truncated.
- raw_output: Whether to only return the raw output
- (no splitting into lines).
timeout: timeout in seconds
retries: number of retries
Returns:
- If single_line is False, the output of the command as a list of lines,
- otherwise, a string with the unique line of output emmited by the command
- (with the optional newline at the end stripped).
+ True if the device is running a user build, False otherwise (i.e. if
+ it's running a userdebug build).
Raises:
- AdbCommandFailedError if check_return is True and the exit code of
- the command run on the device is non-zero.
- CommandFailedError if single_line is True but the output contains two or
- more lines.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
@@ -419,108 +685,127 @@ Kill all processes with the given name on the device.
```
-### DeviceUtils.StartActivity
+### DeviceUtils.ListDirectory
-Start package's activity on the device.
+List all files on a device directory.
```
+ Mirroring os.listdir (and most client expectations) the resulting list
+ does not include the special entries '.' and '..' even if they are present
+ in the directory.
+
Args:
- intent_obj: An Intent object to send.
- blocking: A boolean indicating whether we should wait for the activity to
- finish launching.
- trace_file_name: If present, a string that both indicates that we want to
- profile the activity and contains the path to which the
- trace should be saved.
- force_stop: A boolean indicating whether we should stop the activity
- before starting it.
+ device_path: A string containing the path of the directory on the device
+ to list.
+ as_root: A boolean indicating whether the to use root privileges to list
+ the directory contents.
timeout: timeout in seconds
retries: number of retries
+ Returns:
+ A list of filenames for all entries contained in the directory.
+
Raises:
- CommandFailedError if the activity could not be started.
+ AdbCommandFailedError if |device_path| does not specify a valid and
+ accessible directory in the device.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.StartInstrumentation
-
-### DeviceUtils.BroadcastIntent
+### DeviceUtils.ListProcesses
-Send a broadcast intent.
+Returns a list of tuples with info about processes on the device.
```
+ This essentially parses the output of the |ps| command into convenient
+ ProcessInfo tuples.
+
Args:
- intent: An Intent to broadcast.
+ process_name: A string used to filter the returned processes. If given,
+ only processes whose name have this value as a substring
+ will be returned.
timeout: timeout in seconds
retries: number of retries
- Raises:
- CommandTimeoutError on timeout.
- DeviceUnreachableError on missing device.
+ Returns:
+ A list of ProcessInfo tuples with |name|, |pid|, and |ppid| fields.
```
-### DeviceUtils.GoHome
+### DeviceUtils.LoadCacheData
-Return to the home screen and obtain launcher focus.
+Initializes the cache from data created using DumpCacheData.
```
- This command launches the home screen and attempts to obtain
- launcher focus until the timeout is reached.
+ The cache is used only if its token matches the one found on the device.
+ This prevents a stale cache from being used (which can happen when sharing
+ devices).
Args:
+ data: A previously serialized cache (string).
timeout: timeout in seconds
retries: number of retries
- Raises:
- CommandTimeoutError on timeout.
- DeviceUnreachableError on missing device.
+ Returns:
+ Whether the cache was loaded.
```
-### DeviceUtils.ForceStop
+### DeviceUtils.NeedsSU
-Close the application.
+Checks whether 'su' is needed to access protected resources.
```
Args:
- package: A string containing the name of the package to stop.
timeout: timeout in seconds
retries: number of retries
+ Returns:
+ True if 'su' is available on the device and is needed to to access
+ protected resources; False otherwise if either 'su' is not available
+ (e.g. because the device has a user build), or not needed (because adbd
+ already has root privileges).
+
Raises:
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.ClearApplicationState
+### DeviceUtils.PathExists
-Clear all state for the given package.
+Checks whether the given path(s) exists on the device.
```
Args:
- package: A string containing the name of the package to stop.
- permissions: List of permissions to set after clearing data.
+ device_path: A string containing the absolute path to the file on the
+ device, or an iterable of paths to check.
+ as_root: Whether root permissions should be use to check for the existence
+ of the given path(s).
timeout: timeout in seconds
retries: number of retries
+ Returns:
+ True if the all given paths exist on the device, False otherwise.
+
Raises:
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.SendKeyEvent
+### DeviceUtils.PullFile
-Sends a keycode to the device.
+Pull a file from the device.
```
- See the devil.android.sdk.keyevent module for suitable keycode values.
-
Args:
- keycode: A integer keycode to send to the device.
+ device_path: A string containing the absolute path of the file to pull
+ from the device.
+ host_path: A string containing the absolute path of the destination on
+ the host.
+ as_root: Whether root permissions should be used to pull the file.
timeout: timeout in seconds
retries: number of retries
Raises:
+ CommandFailedError on failure.
CommandTimeoutError on timeout.
- DeviceUnreachableError on missing device.
```
@@ -538,79 +823,14 @@ Push files to the device, skipping files that don't need updating.
|host_path| is an absolute path of a file or directory on the host
that should be minimially pushed to the device, and |device_path| is
an absolute path of the destination on the device.
- timeout: timeout in seconds
- retries: number of retries
delete_device_stale: option to delete stale files on device
-
- Raises:
- CommandFailedError on failure.
- CommandTimeoutError on timeout.
- DeviceUnreachableError on missing device.
-```
-
-
-### DeviceUtils.FileExists
-
-Checks whether the given file exists on the device.
-```
- Arguments are the same as PathExists.
-```
-
-
-### DeviceUtils.PathExists
-
-Checks whether the given path(s) exists on the device.
-```
- Args:
- device_path: A string containing the absolute path to the file on the
- device, or an iterable of paths to check.
- as_root: Whether root permissions should be use to check for the existence
- of the given path(s).
- timeout: timeout in seconds
- retries: number of retries
-
- Returns:
- True if the all given paths exist on the device, False otherwise.
-
- Raises:
- CommandTimeoutError on timeout.
- DeviceUnreachableError on missing device.
-```
-
-
-### DeviceUtils.RemovePath
-
-Removes the given path(s) from the device.
-```
- Args:
- device_path: A string containing the absolute path to the file on the
- device, or an iterable of paths to check.
- force: Whether to remove the path(s) with force (-f).
- recursive: Whether to remove any directories in the path(s) recursively.
- as_root: Whether root permissions should be use to remove the given
- path(s).
- rename: Whether to rename the path(s) before removing to help avoid
- filesystem errors. See https://stackoverflow.com/questions/11539657
- timeout: timeout in seconds
- retries: number of retries
-```
-
-
-### DeviceUtils.PullFile
-
-Pull a file from the device.
-```
- Args:
- device_path: A string containing the absolute path of the file to pull
- from the device.
- host_path: A string containing the absolute path of the destination on
- the host.
timeout: timeout in seconds
retries: number of retries
Raises:
CommandFailedError on failure.
CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
```
@@ -642,156 +862,143 @@ Reads the contents of a file from the device.
```
-### DeviceUtils.WriteFile
+### DeviceUtils.Reboot
-Writes |contents| to a file on the device.
+Reboot the device.
```
Args:
- device_path: A string containing the absolute path to the file to write
- on the device.
- contents: A string containing the data to write to the device.
- as_root: A boolean indicating whether the write should be executed with
- root privileges (if available).
- force_push: A boolean indicating whether to force the operation to be
- performed by pushing a file to the device. The default is, when the
- contents are short, to pass the contents using a shell script instead.
+ block: A boolean indicating if we should wait for the reboot to complete.
+ wifi: A boolean indicating if we should wait for wifi to be enabled after
+ the reboot.
+ The option has no effect unless |block| is also True.
+ decrypt: A boolean indicating if we should wait for full-disk decryption
+ to complete after the reboot.
+ The option has no effect unless |block| is also True.
timeout: timeout in seconds
retries: number of retries
Raises:
- CommandFailedError if the file could not be written on the device.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.ListDirectory
+### DeviceUtils.RemovePath
-List all files on a device directory.
+Removes the given path(s) from the device.
```
- Mirroring os.listdir (and most client expectations) the resulting list
- does not include the special entries '.' and '..' even if they are present
- in the directory.
-
Args:
- device_path: A string containing the path of the directory on the device
- to list.
- as_root: A boolean indicating whether the to use root privileges to list
- the directory contents.
+ device_path: A string containing the absolute path to the file on the
+ device, or an iterable of paths to check.
+ force: Whether to remove the path(s) with force (-f).
+ recursive: Whether to remove any directories in the path(s) recursively.
+ as_root: Whether root permissions should be use to remove the given
+ path(s).
+ rename: Whether to rename the path(s) before removing to help avoid
+ filesystem errors. See https://stackoverflow.com/questions/11539657
timeout: timeout in seconds
retries: number of retries
+```
- Returns:
- A list of filenames for all entries contained in the directory.
- Raises:
- AdbCommandFailedError if |device_path| does not specify a valid and
- accessible directory in the device.
- CommandTimeoutError on timeout.
- DeviceUnreachableError on missing device.
+### DeviceUtils.RestartAdbd
+
+### DeviceUtils.RunShellCommand
+
+Run an ADB shell command.
```
+ The command to run |cmd| should be a sequence of program arguments
+ (preferred) or a single string with a shell script to run.
+ When |cmd| is a sequence, it is assumed to contain the name of the command
+ to run followed by its arguments. In this case, arguments are passed to the
+ command exactly as given, preventing any further processing by the shell.
+ This allows callers to easily pass arguments with spaces or special
+ characters without having to worry about quoting rules. Whenever possible,
+ it is recomended to pass |cmd| as a sequence.
-### DeviceUtils.StatDirectory
+ When |cmd| is passed as a single string, |shell| should be set to True.
+ The command will be interpreted and run by the shell on the device,
+ allowing the use of shell features such as pipes, wildcards, or variables.
+ Failing to set shell=True will issue a warning, but this will be changed
+ to a hard failure in the future (see: catapult:#3242).
-List file and stat info for all entries on a device directory.
-```
- Implementation notes: this is currently implemented by parsing the output
- of 'ls -a -l' on the device. Whether possible and convenient, we attempt to
- make parsing strict and return values mirroring those of the standard |os|
- and |stat| Python modules.
+ This behaviour is consistent with that of command runners in cmd_helper as
+ well as Python's own subprocess.Popen.
- Mirroring os.listdir (and most client expectations) the resulting list
- does not include the special entries '.' and '..' even if they are present
- in the directory.
+ TODO(crbug.com/1029769) Change the default of |check_return| to True when
+ callers have switched to the new behaviour.
Args:
- device_path: A string containing the path of the directory on the device
- to list.
- as_root: A boolean indicating whether the to use root privileges to list
- the directory contents.
+ cmd: A sequence containing the command to run and its arguments, or a
+ string with a shell script to run (should also set shell=True).
+ shell: A boolean indicating whether shell features may be used in |cmd|.
+ check_return: A boolean indicating whether or not the return code should
+ be checked.
+ cwd: The device directory in which the command should be run.
+ env: The environment variables with which the command should be run.
+ run_as: A string containing the package as which the command should be
+ run.
+ as_root: A boolean indicating whether the shell command should be run
+ with root privileges.
+ single_line: A boolean indicating if only a single line of output is
+ expected.
+ large_output: Uses a work-around for large shell command output. Without
+ this large output will be truncated.
+ raw_output: Whether to only return the raw output
+ (no splitting into lines).
timeout: timeout in seconds
retries: number of retries
Returns:
- A list of dictionaries, each containing the following keys:
- filename: A string with the file name.
- st_mode: File permissions, use the stat module to interpret these.
- st_nlink: Number of hard links (may be missing).
- st_owner: A string with the user name of the owner.
- st_group: A string with the group name of the owner.
- st_rdev_pair: Device type as (major, minior) (only if inode device).
- st_size: Size of file, in bytes (may be missing for non-regular files).
- st_mtime: Time of most recent modification, in seconds since epoch
- (although resolution is in minutes).
- symbolic_link_to: If entry is a symbolic link, path where it points to;
- missing otherwise.
+ If single_line is False, the output of the command as a list of lines,
+ otherwise, a string with the unique line of output emmited by the command
+ (with the optional newline at the end stripped).
Raises:
- AdbCommandFailedError if |device_path| does not specify a valid and
- accessible directory in the device.
+ AdbCommandFailedError if check_return is True and the exit code of
+ the command run on the device is non-zero.
+ CommandFailedError if single_line is True but the output contains two or
+ more lines.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.StatPath
+### DeviceUtils.SendKeyEvent
-Get the stat attributes of a file or directory on the device.
+Sends a keycode to the device.
```
+ See the devil.android.sdk.keyevent module for suitable keycode values.
+
Args:
- device_path: A string containing the path of a file or directory from
- which to get attributes.
- as_root: A boolean indicating whether the to use root privileges to
- access the file information.
+ keycode: A integer keycode to send to the device.
timeout: timeout in seconds
retries: number of retries
- Returns:
- A dictionary with the stat info collected; see StatDirectory for details.
-
Raises:
- CommandFailedError if device_path cannot be found on the device.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.FileSize
+### DeviceUtils.SetEnforce
-Get the size of a file on the device.
+Modify the mode SELinux is running in.
```
- Note: This is implemented by parsing the output of the 'ls' command on
- the device. On some Android versions, when passing a directory or special
- file, the size is *not* reported and this function will throw an exception.
-
Args:
- device_path: A string containing the path of a file on the device.
- as_root: A boolean indicating whether the to use root privileges to
- access the file information.
+ enabled: a boolean indicating whether to put SELinux in encorcing mode
+ (if True), or permissive mode (otherwise).
timeout: timeout in seconds
retries: number of retries
- Returns:
- The size of the file in bytes.
-
Raises:
- CommandFailedError if device_path cannot be found on the device, or
- its size cannot be determited for some reason.
+ CommandFailedError on failure.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.GetLanguage
-
-Returns the language setting on the device.
-```
- Args:
- cache: Whether to use cached properties when available.
-```
-
-
### DeviceUtils.SetJavaAsserts
Enables or disables Java asserts.
@@ -811,159 +1018,211 @@ Enables or disables Java asserts.
```
-### DeviceUtils.GetCountry
+### DeviceUtils.SetProp
-Returns the country setting on the device.
+Sets a property on the device.
```
Args:
- cache: Whether to use cached properties when available.
+ property_name: A string containing the name of the property to set on
+ the device.
+ value: A string containing the value to set to the property on the
+ device.
+ check: A boolean indicating whether to check that the property was
+ successfully set on the device.
+ timeout: timeout in seconds
+ retries: number of retries
+
+ Raises:
+ CommandFailedError if check is true and the property was not correctly
+ set on the device (e.g. because it is not rooted).
+ CommandTimeoutError on timeout.
```
-### DeviceUtils.GetApplicationPids
+### DeviceUtils.SetScreen
-Returns the PID or PIDs of a given process name.
+Turns screen on and off.
```
- Note that the |process_name|, often the package name, must match exactly.
+ Args:
+ on: bool to decide state to switch to. True = on False = off.
+```
+
+
+### DeviceUtils.SetWebViewFallbackLogic
+
+Set whether WebViewUpdateService's "fallback logic" should be enabled.
+```
+ WebViewUpdateService has nonintuitive "fallback logic" for devices where
+ Monochrome (Chrome Stable) is preinstalled as the WebView provider, with a
+ "stub" (little-to-no code) implementation of standalone WebView.
+
+ "Fallback logic" (enabled by default) is designed, in the case where the
+ user has disabled Chrome, to fall back to the stub standalone WebView by
+ enabling the package. The implementation plumbs through the Chrome APK until
+ Play Store installs an update with the full implementation.
+
+ A surprising side-effect of "fallback logic" is that, immediately after
+ sideloading WebView, WebViewUpdateService re-disables the package and
+ uninstalls the update. This can prevent successfully using standalone
+ WebView for development, although "fallback logic" can be disabled on
+ userdebug/eng devices.
+
+ Because this is only relevant for devices with the standalone WebView stub,
+ this command is only relevant on N-P (inclusive).
+
+ You can determine if "fallback logic" is currently enabled by checking
+ FallbackLogicEnabled in the dictionary returned by
+ GetWebViewUpdateServiceDump.
Args:
- process_name: A string containing the process name to get the PIDs for.
- at_most_one: A boolean indicating that at most one PID is expected to
- be found.
+ enabled: bool - True for enabled, False for disabled
timeout: timeout in seconds
retries: number of retries
- Returns:
- A list of the PIDs for the named process. If at_most_one=True returns
- the single PID found or None otherwise.
-
Raises:
- CommandFailedError if at_most_one=True and more than one PID is found
- for the named process.
+ CommandFailedError on failure.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.GetProp
+### DeviceUtils.SetWebViewImplementation
-Gets a property from the device.
+Select the WebView implementation to the specified package.
```
Args:
- property_name: A string containing the name of the property to get from
- the device.
- cache: Whether to use cached properties when available.
+ package_name: The package name of a WebView implementation. The package
+ must be already installed on the device.
timeout: timeout in seconds
retries: number of retries
- Returns:
- The value of the device's |property_name| property.
-
Raises:
+ CommandFailedError on failure.
CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
```
-### DeviceUtils.SetProp
+### DeviceUtils.StartActivity
-Sets a property on the device.
+Start package's activity on the device.
```
Args:
- property_name: A string containing the name of the property to set on
- the device.
- value: A string containing the value to set to the property on the
- device.
- check: A boolean indicating whether to check that the property was
- successfully set on the device.
+ intent_obj: An Intent object to send.
+ blocking: A boolean indicating whether we should wait for the activity to
+ finish launching.
+ trace_file_name: If present, a string that both indicates that we want to
+ profile the activity and contains the path to which the
+ trace should be saved.
+ force_stop: A boolean indicating whether we should stop the activity
+ before starting it.
timeout: timeout in seconds
retries: number of retries
Raises:
- CommandFailedError if check is true and the property was not correctly
- set on the device (e.g. because it is not rooted).
+ CommandFailedError if the activity could not be started.
CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
```
-### DeviceUtils.GetABI
+### DeviceUtils.StartInstrumentation
-Gets the device main ABI.
+### DeviceUtils.StartService
+
+Start a service on the device.
```
Args:
- timeout: timeout in seconds
- retries: number of retries
-
- Returns:
- The device's main ABI name.
+ intent_obj: An Intent object to send describing the service to start.
+ user_id: A specific user to start the service as, defaults to current.
+ timeout: Timeout in seconds.
+ retries: Number of retries
Raises:
+ CommandFailedError if the service could not be started.
CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
```
-### DeviceUtils.GetPids
+### DeviceUtils.StatDirectory
-Returns the PIDs of processes containing the given name as substring.
+List file and stat info for all entries on a device directory.
```
- Note that the |process_name| is often the package name.
+ Implementation notes: this is currently implemented by parsing the output
+ of 'ls -a -l' on the device. Whether possible and convenient, we attempt to
+ make parsing strict and return values mirroring those of the standard |os|
+ and |stat| Python modules.
+
+ Mirroring os.listdir (and most client expectations) the resulting list
+ does not include the special entries '.' and '..' even if they are present
+ in the directory.
Args:
- process_name: A string containing the process name to get the PIDs for.
- If missing returns PIDs for all processes.
+ device_path: A string containing the path of the directory on the device
+ to list.
+ as_root: A boolean indicating whether the to use root privileges to list
+ the directory contents.
timeout: timeout in seconds
retries: number of retries
Returns:
- A dict mapping process name to a list of PIDs for each process that
- contained the provided |process_name|.
+ A list of dictionaries, each containing the following keys:
+ filename: A string with the file name.
+ st_mode: File permissions, use the stat module to interpret these.
+ st_nlink: Number of hard links (may be missing).
+ st_owner: A string with the user name of the owner.
+ st_group: A string with the group name of the owner.
+ st_rdev_pair: Device type as (major, minior) (only if inode device).
+ st_size: Size of file, in bytes (may be missing for non-regular files).
+ st_mtime: Time of most recent modification, in seconds since epoch
+ (although resolution is in minutes).
+ symbolic_link_to: If entry is a symbolic link, path where it points to;
+ missing otherwise.
Raises:
+ AdbCommandFailedError if |device_path| does not specify a valid and
+ accessible directory in the device.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.GetLogcatMonitor
-
-Returns a new LogcatMonitor associated with this device.
-```
- Parameters passed to this function are passed directly to
- |logcat_monitor.LogcatMonitor| and are documented there.
-```
-
-
-### DeviceUtils.GetEnforce
+### DeviceUtils.StatPath
-Get the current mode of SELinux.
+Get the stat attributes of a file or directory on the device.
```
Args:
+ device_path: A string containing the path of a file or directory from
+ which to get attributes.
+ as_root: A boolean indicating whether the to use root privileges to
+ access the file information.
timeout: timeout in seconds
retries: number of retries
Returns:
- True (enforcing), False (permissive), or None (disabled).
+ A dictionary with the stat info collected; see StatDirectory for details.
Raises:
- CommandFailedError on failure.
+ CommandFailedError if device_path cannot be found on the device.
CommandTimeoutError on timeout.
DeviceUnreachableError on missing device.
```
-### DeviceUtils.SetEnforce
+### DeviceUtils.TakeBugReport
-Modify the mode SELinux is running in.
+Takes a bug report and dumps it to the specified path.
```
- Args:
- enabled: a boolean indicating whether to put SELinux in encorcing mode
- (if True), or permissive mode (otherwise).
- timeout: timeout in seconds
- retries: number of retries
+ This doesn't use adb's bugreport option since its behavior is dependent on
+ both adb version and device OS version. To make it simpler, this directly
+ runs the bugreport command on the device itself and dumps the stdout to a
+ file.
- Raises:
- CommandFailedError on failure.
- CommandTimeoutError on timeout.
- DeviceUnreachableError on missing device.
+ Args:
+ path: Path on the host to drop the bug report.
+ timeout: (optional) Timeout per try in seconds.
+ retries: (optional) Number of retries to attempt.
```
@@ -988,84 +1247,128 @@ Takes a screenshot of the device.
```
-### DeviceUtils.DismissCrashDialogIfNeeded
+### DeviceUtils.Uninstall
-Dismiss the error/ANR dialog if present.
-```
- Returns: Name of the crashed package if a dialog is focused,
- None otherwise.
+Remove the app |package\_name| from the device.
```
+ This is a no-op if the app is not already installed.
+ Args:
+ package_name: The package to uninstall.
+ keep_data: (optional) Whether to keep the data and cache directories.
+ timeout: Timeout in seconds.
+ retries: Number of retries.
-### DeviceUtils.GetClientCache
+ Raises:
+ CommandFailedError if the uninstallation fails.
+ CommandTimeoutError if the uninstallation times out.
+ DeviceUnreachableError on missing device.
+```
-Returns client cache.
-### DeviceUtils.LoadCacheData
-Initializes the cache from data created using DumpCacheData.
+### DeviceUtils.WaitUntilFullyBooted
+
+Wait for the device to fully boot.
```
- The cache is used only if its token matches the one found on the device.
- This prevents a stale cache from being used (which can happen when sharing
- devices).
+ This means waiting for the device to boot, the package manager to be
+ available, and the SD card to be ready.
+ It can optionally wait the following:
+ - Wait for wifi to come up.
+ - Wait for full-disk decryption to complete.
Args:
- data: A previously serialized cache (string).
+ wifi: A boolean indicating if we should wait for wifi to come up or not.
+ decrypt: A boolean indicating if we should wait for full-disk decryption
+ to complete.
timeout: timeout in seconds
retries: number of retries
- Returns:
- Whether the cache was loaded.
+ Raises:
+ CommandFailedError on failure.
+ CommandTimeoutError if one of the component waits times out.
+ DeviceUnreachableError if the device becomes unresponsive.
```
-### DeviceUtils.DumpCacheData
+### DeviceUtils.WriteFile
-Dumps the current cache state to a string.
+Writes |contents| to a file on the device.
```
Args:
+ device_path: A string containing the absolute path to the file to write
+ on the device.
+ contents: A string containing the data to write to the device.
+ as_root: A boolean indicating whether the write should be executed with
+ root privileges (if available).
+ force_push: A boolean indicating whether to force the operation to be
+ performed by pushing a file to the device. The default is, when the
+ contents are short, to pass the contents using a shell script instead.
timeout: timeout in seconds
retries: number of retries
- Returns:
- A serialized cache as a string.
+ Raises:
+ CommandFailedError if the file could not be written on the device.
+ CommandTimeoutError on timeout.
+ DeviceUnreachableError on missing device.
```
-### DeviceUtils.RestartAdbd
-
-### DeviceUtils.GrantPermissions
-
-### DeviceUtils.IsScreenOn
+### DeviceUtils.\_\_eq\_\_
-Determines if screen is on.
+Checks whether |other| refers to the same device as |self|.
+```
+ Args:
+ other: The object to compare to. This can be a basestring, an instance
+ of adb_wrapper.AdbWrapper, or an instance of DeviceUtils.
+ Returns:
+ Whether |other| refers to the same device as |self|.
```
- Dumpsys input_method exposes screen on/off state. Below is an explination of
- the states.
- Pre-L:
- On: mScreenOn=true
- Off: mScreenOn=false
- L+:
- On: mInteractive=true
- Off: mInteractive=false
- Returns:
- True if screen is on, false if it is off.
+### DeviceUtils.\_\_init\_\_
- Raises:
- device_errors.CommandFailedError: If screen state cannot be found.
+DeviceUtils constructor.
+```
+ Args:
+ device: Either a device serial, an existing AdbWrapper instance, or an
+ an existing AndroidCommands instance.
+ enable_device_files_cache: For PushChangedFiles(), cache checksums of
+ pushed files rather than recomputing them on a subsequent call.
+ default_timeout: An integer containing the default number of seconds to
+ wait for an operation to complete if no explicit value is provided.
+ default_retries: An integer containing the default number or times an
+ operation should be retried on failure if no explicit value is provided.
```
-### DeviceUtils.SetScreen
+### DeviceUtils.\_\_lt\_\_
-Turns screen on and off.
+Compares two instances of DeviceUtils.
```
+ This merely compares their serial numbers.
+
Args:
- on: bool to decide state to switch to. True = on False = off.
+ other: The instance of DeviceUtils to compare to.
+ Returns:
+ Whether |self| is less than |other|.
```
+### DeviceUtils.\_\_str\_\_
+
+Returns the device serial.
+## ProcessInfo
+
+ProcessInfo(name, pid, ppid)
+### ProcessInfo.\_\_getnewargs\_\_
+
+Return self as a plain tuple. Used by copy and pickle.
+### ProcessInfo.\_\_getstate\_\_
+
+Exclude the OrderedDict from pickling
+### ProcessInfo.\_\_repr\_\_
+
+Return a nicely formatted representation string
### GetAVDs
Returns a list of Android Virtual Devices.