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::ServoUrl;
#[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, ServoUrl),
Key(
GenericSender<Option<String>>,
WebStorageType,
WebViewId,
ServoUrl,
u32,
),
Keys(
GenericSender<Vec<String>>,
WebStorageType,
WebViewId,
ServoUrl,
),
GetItem(
GenericSender<Option<String>>,
WebStorageType,
WebViewId,
ServoUrl,
String,
),
SetItem(
GenericSender<Result<(bool, Option<String>), ()>>,
WebStorageType,
WebViewId,
ServoUrl,
String,
String,
),
RemoveItem(
GenericSender<Option<String>>,
WebStorageType,
WebViewId,
ServoUrl,
String,
),
Clear(GenericSender<bool>, WebStorageType, WebViewId, ServoUrl),
Clone {
sender: GenericSender<()>,
src: WebViewId,
dest: WebViewId,
},
ListOrigins(GenericSender<Vec<OriginDescriptor>>, WebStorageType),
ClearDataForSites(GenericSender<()>, WebStorageType, Vec<String>),
Exit(GenericSender<()>),
CollectMemoryReport(ReportsChan),
}