web_extensions/tabs/
status.rs

1use super::prelude::*;
2use thiserror::Error;
3
4/// <https://developer.chrome.com/docs/extensions/reference/tabs/#type-TabStatus>
5#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
6pub enum Status {
7    #[serde(rename(serialize = "unloaded", deserialize = "unloaded"))]
8    Unloaded,
9    #[serde(rename(serialize = "loading", deserialize = "loading"))]
10    Loading,
11    #[serde(rename(serialize = "complete", deserialize = "complete"))]
12    Complete,
13}
14
15#[derive(Debug, Error)]
16#[error("Invalid status ('{0}'), expected 'unloaded', 'loading' or 'complete'")]
17pub struct InvalidStatusError(String);
18
19impl TryFrom<String> for Status {
20    type Error = InvalidStatusError;
21    fn try_from(s: String) -> Result<Self, Self::Error> {
22        match &*s {
23            "unloaded" => Ok(Status::Unloaded),
24            "loading" => Ok(Status::Loading),
25            "complete" => Ok(Status::Complete),
26            _ => Err(InvalidStatusError(s)),
27        }
28    }
29}