cbf_chrome/data/
policy.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
5pub enum ChromeCapabilityPolicy {
6 #[default]
7 Allow,
8 Deny,
9}
10
11impl From<cbf::data::policy::CapabilityPolicy> for ChromeCapabilityPolicy {
12 fn from(value: cbf::data::policy::CapabilityPolicy) -> Self {
13 match value {
14 cbf::data::policy::CapabilityPolicy::Allow => Self::Allow,
15 cbf::data::policy::CapabilityPolicy::Deny => Self::Deny,
16 }
17 }
18}
19
20impl From<ChromeCapabilityPolicy> for cbf::data::policy::CapabilityPolicy {
21 fn from(value: ChromeCapabilityPolicy) -> Self {
22 match value {
23 ChromeCapabilityPolicy::Allow => Self::Allow,
24 ChromeCapabilityPolicy::Deny => Self::Deny,
25 }
26 }
27}
28
29#[derive(Debug, Clone, PartialEq, Eq, Default)]
31pub enum ChromeIpcPolicy {
32 #[default]
33 Deny,
34 Allow {
35 allowed_origins: Vec<String>,
36 },
37}
38
39impl From<cbf::data::policy::IpcPolicy> for ChromeIpcPolicy {
40 fn from(value: cbf::data::policy::IpcPolicy) -> Self {
41 match value {
42 cbf::data::policy::IpcPolicy::Deny => Self::Deny,
43 cbf::data::policy::IpcPolicy::Allow { allowed_origins } => {
44 Self::Allow { allowed_origins }
45 }
46 }
47 }
48}
49
50impl From<ChromeIpcPolicy> for cbf::data::policy::IpcPolicy {
51 fn from(value: ChromeIpcPolicy) -> Self {
52 match value {
53 ChromeIpcPolicy::Deny => Self::Deny,
54 ChromeIpcPolicy::Allow { allowed_origins } => Self::Allow { allowed_origins },
55 }
56 }
57}
58
59#[derive(Debug, Clone, PartialEq, Eq, Default)]
60pub struct ChromeBrowsingContextPolicy {
61 pub ipc: ChromeIpcPolicy,
62 pub extensions: ChromeCapabilityPolicy,
63}
64
65impl From<cbf::data::policy::BrowsingContextPolicy> for ChromeBrowsingContextPolicy {
66 fn from(value: cbf::data::policy::BrowsingContextPolicy) -> Self {
67 Self {
68 ipc: value.ipc.into(),
69 extensions: value.extensions.into(),
70 }
71 }
72}
73
74impl From<ChromeBrowsingContextPolicy> for cbf::data::policy::BrowsingContextPolicy {
75 fn from(value: ChromeBrowsingContextPolicy) -> Self {
76 Self {
77 ipc: value.ipc.into(),
78 extensions: value.extensions.into(),
79 }
80 }
81}
82
83#[cfg(test)]
84mod tests {
85 use super::{ChromeBrowsingContextPolicy, ChromeCapabilityPolicy, ChromeIpcPolicy};
86
87 #[test]
88 fn browsing_context_policy_round_trip_with_generic() {
89 let policy = ChromeBrowsingContextPolicy {
90 ipc: ChromeIpcPolicy::Allow {
91 allowed_origins: vec!["app://simpleapp".to_string()],
92 },
93 extensions: ChromeCapabilityPolicy::Deny,
94 };
95
96 let generic: cbf::data::policy::BrowsingContextPolicy = policy.clone().into();
97 let round_trip = ChromeBrowsingContextPolicy::from(generic);
98
99 assert_eq!(round_trip, policy);
100 }
101}