Skip to main content

AndroidDeviceControl

Struct AndroidDeviceControl 

Source
pub struct AndroidDeviceControl { /* private fields */ }
Expand description

Android DeviceControl impl. Wraps smix_adb::AdbClient + holds an active recording handle internally.

Some methods for operations not yet fully implemented surface SimctlError::NonZeroExit with a clear message; smix-adb translation lives in adb_to_simctl_err.

Implementations§

Source§

impl AndroidDeviceControl

Source

pub fn new() -> Self

Source

pub fn with_client(client: AdbClient) -> Self

Construct with an existing AdbClient (tests / non-PATH adb).

Trait Implementations§

Source§

impl Default for AndroidDeviceControl

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl DeviceControl for AndroidDeviceControl

Source§

fn platform(&self) -> Platform

Platform identifier. Returns smix_driver::Platform.
Source§

fn launch<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, serial: &'life1 str, bundle_id: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<u32, SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn launch_with_args<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, serial: &'life1 str, bundle_id: &'life2 str, args: &'life3 [String], ) -> Pin<Box<dyn Future<Output = Result<u32, SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Source§

fn terminate<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, serial: &'life1 str, bundle_id: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn install<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, serial: &'life1 str, app_path: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn uninstall<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, serial: &'life1 str, bundle_id: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn keychain_reset<'life0, 'life1, 'async_trait>( &'life0 self, _udid: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn open_url<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, serial: &'life1 str, url: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn send_push<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, _serial: &'life1 str, _bundle_id: &'life2 str, _apns_json_path: &'life3 str, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Source§

fn screenshot<'life0, 'life1, 'async_trait>( &'life0 self, serial: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn pasteboard_set<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _serial: &'life1 str, _text: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn pasteboard_get<'life0, 'life1, 'async_trait>( &'life0 self, _serial: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<String, SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn add_media<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _serial: &'life1 str, _paths: &'life2 [String], ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn location_set<'life0, 'life1, 'async_trait>( &'life0 self, serial: &'life1 str, lat: f64, lon: f64, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn location_start<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _serial: &'life1 str, _points: &'life2 [(f64, f64)], _speed_mps: Option<f64>, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn set_permission<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, serial: &'life1 str, bundle_id: &'life2 str, permission: Permission, action: PermissionAction, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn start_recording<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _serial: &'life1 str, _output_path: &'life2 Path, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn stop_recording<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn as_ios_simctl(&self) -> Option<&SimctlClient>

iOS-only escape hatch: downcast to &SimctlClient for legacy App::simctl() API surface. Android impl returns None.
Source§

fn privacy_reset_all<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _udid: &'life1 str, _bundle_id: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

v1.0.4 §D12 — reset all granted privacy permissions for a bundle. Companion to clear_app_sandbox; together they form the in-place launchApp: clearState: true replacement that avoids simctl uninstall + install and its downstream XCUITest binding loss (feedback §F) + ReportCrash dialog (feedback §H). Default impl no-ops so non-iOS device controls (Android) keep compiling; iOS override supplies real behavior.
Source§

fn clear_app_sandbox<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _udid: &'life1 str, _bundle_id: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<(), SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

v1.0.4 §D12 — wipe an app’s Documents/, Library/, tmp/ directories in the sim’s Containers/Data root, without uninstalling the app. Preserves the XCUITest binding. Default impl no-ops; iOS override does the real wipe.
Source§

fn user_defaults_delete<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, _udid: &'life1 str, _bundle_id: &'life2 str, _key: &'life3 str, ) -> Pin<Box<dyn Future<Output = Result<bool, SimctlError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

v1.0.27 — delete a single key from the target app’s persisted user-defaults / preferences store. iOS: simctl spawn defaults delete <bundle> <key> (NSUserDefaults via the sim’s cfprefsd). Returns Ok(true) when the key existed, Ok(false) when already absent (both are the “ensure absent” target state). Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more