thirtyfour/common/capabilities/
ie.rs

1use serde::Serialize;
2use serde_json::{json, Value};
3
4use crate::{BrowserCapabilitiesHelper, Capabilities, CapabilitiesHelper};
5
6/// Capabilities for Internet Explorer.
7#[derive(Debug, Clone, Serialize)]
8#[serde(transparent)]
9pub struct InternetExplorerCapabilities {
10    capabilities: Capabilities,
11}
12
13impl Default for InternetExplorerCapabilities {
14    fn default() -> Self {
15        Self::new()
16    }
17}
18
19impl InternetExplorerCapabilities {
20    /// Create a new `InternetExplorerCapabilities`.
21    pub fn new() -> Self {
22        let mut capabilities = Capabilities::new();
23        capabilities.insert("browserName".to_string(), json!("internet explorer"));
24        InternetExplorerCapabilities {
25            capabilities,
26        }
27    }
28}
29
30impl From<InternetExplorerCapabilities> for Capabilities {
31    fn from(caps: InternetExplorerCapabilities) -> Capabilities {
32        caps.capabilities
33    }
34}
35
36impl CapabilitiesHelper for InternetExplorerCapabilities {
37    fn _get(&self, key: &str) -> Option<&Value> {
38        self.capabilities._get(key)
39    }
40
41    fn _get_mut(&mut self, key: &str) -> Option<&mut Value> {
42        self.capabilities._get_mut(key)
43    }
44
45    fn insert_base_capability(&mut self, key: String, value: Value) {
46        self.capabilities.insert_base_capability(key, value);
47    }
48}
49
50impl BrowserCapabilitiesHelper for InternetExplorerCapabilities {
51    const KEY: &'static str = "se:ieOptions";
52}