(
state: AppState,
udid: String,
timeout_ms: Option<u64>,
poll_ms: Option<u64>,
fallback_swipe: Option<bool>,
)
| 100 | } |
| 101 | |
| 102 | async fn perform_back_payload( |
| 103 | state: AppState, |
| 104 | udid: String, |
| 105 | timeout_ms: Option<u64>, |
| 106 | poll_ms: Option<u64>, |
| 107 | fallback_swipe: Option<bool>, |
| 108 | ) -> Result<Value, AppError> { |
| 109 | if android::is_android_id(&udid) { |
| 110 | run_android_action(state, move |android| android.press_button(&udid, "back", 0)).await?; |
| 111 | return Ok(json_value!({ "action": "back", "method": "androidButton" })); |
| 112 | } |
| 113 | |
| 114 | let timeout_ms = timeout_ms.unwrap_or(5_000); |
| 115 | let poll_ms = poll_ms.unwrap_or(100); |
| 116 | let id_timeout_ms = timeout_ms.min(2_000); |
| 117 | let id_result = perform_tap_payload( |
| 118 | state.clone(), |
| 119 | udid.clone(), |
| 120 | TapElementPayload { |
| 121 | selector: ElementSelectorPayload { |
| 122 | id: Some("BackButton".to_owned()), |
| 123 | ..Default::default() |
| 124 | }, |
| 125 | source: Some(SOURCE_NATIVE_AX.to_owned()), |
| 126 | max_depth: Some(8), |
| 127 | include_hidden: Some(false), |
| 128 | wait_timeout_ms: Some(id_timeout_ms), |
| 129 | poll_ms: Some(poll_ms), |
| 130 | duration_ms: Some(20), |
| 131 | ..Default::default() |
| 132 | }, |
| 133 | ) |
| 134 | .await; |
| 135 | if id_result.is_ok() { |
| 136 | return Ok(json_value!({ "action": "back", "method": "backButtonId" })); |
| 137 | } |
| 138 | |
| 139 | let label_result = perform_tap_payload( |
| 140 | state.clone(), |
| 141 | udid.clone(), |
| 142 | TapElementPayload { |
| 143 | selector: ElementSelectorPayload { |
| 144 | label: Some("Back".to_owned()), |
| 145 | ..Default::default() |
| 146 | }, |
| 147 | source: Some(SOURCE_NATIVE_AX.to_owned()), |
| 148 | max_depth: Some(8), |
| 149 | include_hidden: Some(false), |
| 150 | wait_timeout_ms: Some(timeout_ms.saturating_sub(id_timeout_ms)), |
| 151 | poll_ms: Some(poll_ms), |
| 152 | duration_ms: Some(20), |
| 153 | ..Default::default() |
| 154 | }, |
| 155 | ) |
| 156 | .await; |
| 157 | if label_result.is_ok() { |
| 158 | return Ok(json_value!({ "action": "back", "method": "backLabel" })); |
| 159 | } |
no test coverage detected