1use std::time::Duration;
2use thiserror::Error;
3
4#[derive(Error, Debug)]
5pub enum CdpError {
6 #[error("Network error: {0}")]
7 Network(#[from] reqwest::Error),
8
9 #[error("WebSocket error: {0}")]
10 Ws(#[from] tokio_tungstenite::tungstenite::Error),
11
12 #[error("Serialization error: {0}")]
13 Json(#[from] serde_json::Error),
14
15 #[error("Chrome target not found")]
16 NotFound,
17
18 #[error("Command {method} timed out after {timeout:?}")]
19 Timeout { method: String, timeout: Duration },
20
21 #[error("No suitable Chrome target found at host: {0}")]
22 NoPageTargetFound(String),
23
24 #[error("Internal communication error: {0}")]
25 InternalError(String),
26
27 #[error("Chrome returned an error (code {code}): {message}")]
28 ProtocolError { code: i64, message: String },
29
30 #[error("Connection lost")]
31 Disconnected,
32}
33
34pub type CdpResult<T> = Result<T, CdpError>;