(options: CameraStartOptions)
| 83 | } |
| 84 | |
| 85 | pub fn start_camera(options: CameraStartOptions) -> Result<Value, AppError> { |
| 86 | validate_udid(&options.udid)?; |
| 87 | let source = normalize_source(options.source)?; |
| 88 | let mirror = normalize_mirror(options.mirror.as_deref())?; |
| 89 | let bundle_id = options |
| 90 | .bundle_id |
| 91 | .as_deref() |
| 92 | .map(str::trim) |
| 93 | .filter(|value| !value.is_empty()); |
| 94 | if let Some(bundle_id) = bundle_id { |
| 95 | validate_bundle_id(bundle_id)?; |
| 96 | } |
| 97 | fs::create_dir_all(camera_state_dir()).map_err(app_internal)?; |
| 98 | |
| 99 | let shm_name = shm_name_for_udid(&options.udid); |
| 100 | native_start_camera(&options.udid, &shm_name, &source, &mirror)?; |
| 101 | |
| 102 | if let Some(bundle_id) = bundle_id { |
| 103 | if let Err(error) = launch_with_injector(&options.udid, bundle_id, &shm_name, &mirror) { |
| 104 | let _ = native_stop_camera(&options.udid); |
| 105 | return Err(error); |
| 106 | } |
| 107 | record_injected_bundle(&options.udid, bundle_id)?; |
| 108 | } |
| 109 | |
| 110 | let mut status = native_status(&options.udid)?; |
| 111 | enrich_status(&options.udid, &mut status); |
| 112 | Ok(status) |
| 113 | } |
| 114 | |
| 115 | pub fn switch_camera( |
| 116 | udid: &str, |
nothing calls this directly
no test coverage detected