use style::device::Device;
use style::shared_lock::SharedRwLockReadGuard;
use style::stylesheet_set::{AuthorStylesheetSet, DocumentStylesheetSet};
use style::stylesheets::{CustomMediaMap, StylesheetInDocument};
pub(crate) enum StylesheetSetRef<'a, S>
where
S: StylesheetInDocument + PartialEq + 'static,
{
Author(&'a mut AuthorStylesheetSet<S>),
Document(&'a mut DocumentStylesheetSet<S>),
}
impl<S> StylesheetSetRef<'_, S>
where
S: StylesheetInDocument + PartialEq + 'static,
{
pub(crate) fn append_stylesheet(
&mut self,
device: Option<&Device>,
sheet: S,
guard: &SharedRwLockReadGuard,
) {
let custom_media = &CustomMediaMap::default();
match self {
StylesheetSetRef::Author(set) => {
set.append_stylesheet(device, custom_media, sheet, guard)
},
StylesheetSetRef::Document(set) => {
set.append_stylesheet(device, custom_media, sheet, guard)
},
}
}
pub(crate) fn insert_stylesheet_before(
&mut self,
device: Option<&Device>,
sheet: S,
before_sheet: S,
guard: &SharedRwLockReadGuard,
) {
let custom_media = &CustomMediaMap::default();
match self {
StylesheetSetRef::Author(set) => {
set.insert_stylesheet_before(device, custom_media, sheet, before_sheet, guard)
},
StylesheetSetRef::Document(set) => {
set.insert_stylesheet_before(device, custom_media, sheet, before_sheet, guard)
},
}
}
pub(crate) fn remove_stylesheet(
&mut self,
device: Option<&Device>,
sheet: S,
guard: &SharedRwLockReadGuard,
) {
let custom_media = &CustomMediaMap::default();
match self {
StylesheetSetRef::Author(set) => {
set.remove_stylesheet(device, custom_media, sheet, guard)
},
StylesheetSetRef::Document(set) => {
set.remove_stylesheet(device, custom_media, sheet, guard)
},
}
}
}