use malloc_size_of_derive::MallocSizeOf;
use profile_traits::mem::ReportsChan;
use serde::{Deserialize, Serialize};
use servo_base::generic_channel::GenericSender;
use servo_base::id::WebViewId;
use servo_url::ImmutableOrigin;
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, MallocSizeOf, Serialize)]
pub enum WebStorageType {
Session,
Local,
}
#[derive(Clone, Debug, Deserialize, MallocSizeOf, Serialize)]
pub struct OriginDescriptor {
pub name: String,
}
impl OriginDescriptor {
pub fn new(name: String) -> Self {
OriginDescriptor { name }
}
}
#[derive(Debug, Deserialize, Serialize)]
pub enum WebStorageThreadMsg {
Length(
GenericSender<usize>,
WebStorageType,
WebViewId,
ImmutableOrigin,
),
Key(
GenericSender<Option<String>>,
WebStorageType,
WebViewId,
ImmutableOrigin,
u32,
),
Keys(
GenericSender<Vec<String>>,
WebStorageType,
WebViewId,
ImmutableOrigin,
),
GetItem(
GenericSender<Option<String>>,
WebStorageType,
WebViewId,
ImmutableOrigin,
String,
),
SetItem(
GenericSender<Result<(bool, Option<String>), ()>>,
WebStorageType,
WebViewId,
ImmutableOrigin,
String,
String,
),
RemoveItem(
GenericSender<Option<String>>,
WebStorageType,
WebViewId,
ImmutableOrigin,
String,
),
Clear(
GenericSender<bool>,
WebStorageType,
WebViewId,
ImmutableOrigin,
),
Clone {
sender: GenericSender<()>,
src: WebViewId,
dest: WebViewId,
},
ListOrigins(GenericSender<Vec<OriginDescriptor>>, WebStorageType),
ClearDataForSites(GenericSender<()>, WebStorageType, Vec<String>),
Exit(GenericSender<()>),
CollectMemoryReport(ReportsChan),
}