(
State(state): State<AppState>,
Path(udid): Path<String>,
headers: HeaderMap,
)
| 1078 | } |
| 1079 | |
| 1080 | async fn chrome_devtools_targets( |
| 1081 | State(state): State<AppState>, |
| 1082 | Path(udid): Path<String>, |
| 1083 | headers: HeaderMap, |
| 1084 | ) -> Result<Json<devtools::ChromeDevToolsTargetDiscovery>, AppError> { |
| 1085 | let origin = request_origin(&headers); |
| 1086 | let mut warnings = Vec::new(); |
| 1087 | let simulator = match list_simulators_cached(state.clone(), false).await { |
| 1088 | Ok(simulators) => simulators |
| 1089 | .into_iter() |
| 1090 | .find(|simulator| simulator.udid == udid), |
| 1091 | Err(error) => { |
| 1092 | warnings.push(format!( |
| 1093 | "Unable to load simulator metadata for DevTools discovery: {error}" |
| 1094 | )); |
| 1095 | None |
| 1096 | } |
| 1097 | }; |
| 1098 | let foreground_app_future = timeout( |
| 1099 | FOREGROUND_APP_ROUTE_TIMEOUT, |
| 1100 | foreground_app_for_simulator_with_cache_ttl( |
| 1101 | &state, |
| 1102 | &udid, |
| 1103 | INSPECTOR_FOREGROUND_APP_CACHE_TTL, |
| 1104 | ), |
| 1105 | ); |
| 1106 | let external_targets_future = timeout( |
| 1107 | CHROME_DEVTOOLS_DISCOVERY_TIMEOUT, |
| 1108 | devtools::discover_external_devtools_targets( |
| 1109 | &udid, |
| 1110 | origin.as_deref(), |
| 1111 | Some(&state.config.access_token), |
| 1112 | simulator.as_ref().map(|simulator| simulator.name.as_str()), |
| 1113 | simulator |
| 1114 | .as_ref() |
| 1115 | .map(|simulator| simulator.device_type_name.as_str()), |
| 1116 | ), |
| 1117 | ); |
| 1118 | let (foreground_app_result, external_targets_result) = |
| 1119 | tokio::join!(foreground_app_future, external_targets_future); |
| 1120 | let foreground_app = match foreground_app_result { |
| 1121 | Ok(Ok(foreground_app)) => foreground_app, |
| 1122 | Ok(Err(error)) => { |
| 1123 | tracing::debug!("Unable to load foreground app for DevTools discovery: {error}"); |
| 1124 | stale_cached_foreground_app(&udid) |
| 1125 | } |
| 1126 | Err(_) => { |
| 1127 | tracing::debug!("Timed out loading foreground app for DevTools discovery."); |
| 1128 | stale_cached_foreground_app(&udid) |
| 1129 | } |
| 1130 | }; |
| 1131 | let (mut external_targets, external_warnings) = match external_targets_result { |
| 1132 | Ok(result) => result, |
| 1133 | Err(_) => { |
| 1134 | warnings.push("Timed out loading Chrome DevTools targets.".to_owned()); |
| 1135 | (Vec::new(), Vec::new()) |
| 1136 | } |
| 1137 | }; |
nothing calls this directly
no test coverage detected