chrome_types/sys/
storage.rs

1use js_sys::Object;
2use wasm_bindgen::prelude::*;
3
4#[wasm_bindgen]
5extern "C" {
6  /// <https://developer.chrome.com/docs/extensions/reference/api/storage>
7  pub type Storage;
8
9  #[wasm_bindgen(method, getter = "local")]
10  pub fn local(this: &Storage) -> StorageArea;
11
12  #[wasm_bindgen(method, getter = "session")]
13  pub fn session(this: &Storage) -> StorageArea;
14
15  #[wasm_bindgen(method, getter = "sync")]
16  pub fn sync(this: &Storage) -> StorageArea;
17}
18
19#[wasm_bindgen]
20extern "C" {
21  pub type StorageArea;
22
23  #[wasm_bindgen(method, catch, js_name = "clear")]
24  pub async fn clear(this: &StorageArea) -> Result<JsValue, JsValue>;
25
26  #[wasm_bindgen(method, catch, js_name = "get")]
27  pub async fn get(this: &StorageArea, keys: &JsValue) -> Result<JsValue, JsValue>;
28
29  #[wasm_bindgen(method, catch, js_name = "remove")]
30  pub async fn remove(this: &StorageArea, keys: &JsValue) -> Result<JsValue, JsValue>;
31
32  #[wasm_bindgen(method, catch, js_name = "set")]
33  pub async fn set(this: &StorageArea, keys: &Object) -> Result<JsValue, JsValue>;
34
35  #[wasm_bindgen(method, catch, js_name = "setAccessLevel")]
36  pub async fn set_access_level(this: &StorageArea, options: AccessOptions) -> Result<(), JsValue>;
37}
38
39#[wasm_bindgen]
40extern "C" {
41  pub type AccessOptions;
42
43  #[wasm_bindgen(method, getter = "accessLevel")]
44  pub fn access_level(this: &AccessOptions) -> AccessLevel;
45  #[wasm_bindgen(method, setter = "accessLevel")]
46  pub fn set_access_level(this: &AccessOptions, level: AccessLevel);
47}
48
49impl AccessOptions {
50  pub fn new(level: AccessLevel) -> Self {
51    let value: Self = Object::new().unchecked_into();
52    value.set_access_level(level);
53    value
54  }
55
56  pub fn trusted() -> Self {
57    Self::new(AccessLevel::Trusted)
58  }
59
60  pub fn untrusted() -> Self {
61    Self::new(AccessLevel::Untrusted)
62  }
63}
64
65impl Default for AccessOptions {
66  fn default() -> Self {
67    Self::trusted()
68  }
69}
70
71#[wasm_bindgen]
72#[derive(Clone, Copy, Debug, PartialEq, Eq)]
73pub enum AccessLevel {
74  Trusted = "TRUSTED_CONTEXTS",
75  Untrusted = "TRUSTED_AND_UNTRUSTED_CONTEXTS",
76}