aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/css.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/css.rs')
-rw-r--r--components/script/dom/css.rs81
1 files changed, 55 insertions, 26 deletions
diff --git a/components/script/dom/css.rs b/components/script/dom/css.rs
index 0e4a7f85065..8c9600549c5 100644
--- a/components/script/dom/css.rs
+++ b/components/script/dom/css.rs
@@ -1,51 +1,80 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-use cssparser::{Parser, serialize_identifier};
-use dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods;
-use dom::bindings::error::Fallible;
-use dom::bindings::reflector::Reflector;
-use dom::bindings::str::DOMString;
-use dom::window::Window;
+use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods;
+use crate::dom::bindings::error::Fallible;
+use crate::dom::bindings::reflector::Reflector;
+use crate::dom::bindings::root::DomRoot;
+use crate::dom::bindings::str::DOMString;
+use crate::dom::window::Window;
+use crate::dom::worklet::Worklet;
+use cssparser::{serialize_identifier, Parser, ParserInput};
use dom_struct::dom_struct;
-use style::parser::{LengthParsingMode, ParserContext};
-use style::stylesheets::CssRuleType;
-use style::supports::{Declaration, parse_condition_or_declaration};
+use style::context::QuirksMode;
+use style::parser::ParserContext;
+use style::stylesheets::supports_rule::{parse_condition_or_declaration, Declaration};
+use style::stylesheets::{CssRuleType, Origin};
+use style_traits::ParsingMode;
#[dom_struct]
pub struct CSS {
reflector_: Reflector,
}
+#[allow(non_snake_case)]
impl CSS {
- /// http://dev.w3.org/csswg/cssom/#serialize-an-identifier
+ /// <http://dev.w3.org/csswg/cssom/#serialize-an-identifier>
pub fn Escape(_: &Window, ident: DOMString) -> Fallible<DOMString> {
let mut escaped = String::new();
serialize_identifier(&ident, &mut escaped).unwrap();
Ok(DOMString::from(escaped))
}
- /// https://drafts.csswg.org/css-conditional/#dom-css-supports
+ /// <https://drafts.csswg.org/css-conditional/#dom-css-supports>
pub fn Supports(win: &Window, property: DOMString, value: DOMString) -> bool {
- let decl = Declaration { prop: property.into(), val: value.into() };
+ let mut decl = String::new();
+ serialize_identifier(&property, &mut decl).unwrap();
+ decl.push_str(": ");
+ decl.push_str(&value);
+ let decl = Declaration(decl);
let url = win.Document().url();
- let context = ParserContext::new_for_cssom(&url, win.css_error_reporter(), Some(CssRuleType::Supports),
- LengthParsingMode::Default);
+ let context = ParserContext::new(
+ Origin::Author,
+ &url,
+ Some(CssRuleType::Style),
+ ParsingMode::DEFAULT,
+ QuirksMode::NoQuirks,
+ None,
+ None,
+ );
decl.eval(&context)
}
- /// https://drafts.csswg.org/css-conditional/#dom-css-supports
+ /// <https://drafts.csswg.org/css-conditional/#dom-css-supports>
pub fn Supports_(win: &Window, condition: DOMString) -> bool {
- let mut input = Parser::new(&condition);
- let cond = parse_condition_or_declaration(&mut input);
- if let Ok(cond) = cond {
- let url = win.Document().url();
- let context = ParserContext::new_for_cssom(&url, win.css_error_reporter(), Some(CssRuleType::Supports),
- LengthParsingMode::Default);
- cond.eval(&context)
- } else {
- false
- }
+ let mut input = ParserInput::new(&condition);
+ let mut input = Parser::new(&mut input);
+ let cond = match parse_condition_or_declaration(&mut input) {
+ Ok(c) => c,
+ Err(..) => return false,
+ };
+
+ let url = win.Document().url();
+ let context = ParserContext::new(
+ Origin::Author,
+ &url,
+ Some(CssRuleType::Style),
+ ParsingMode::DEFAULT,
+ QuirksMode::NoQuirks,
+ None,
+ None,
+ );
+ cond.eval(&context, &Default::default())
+ }
+
+ /// <https://drafts.css-houdini.org/css-paint-api-1/#paint-worklet>
+ pub fn PaintWorklet(win: &Window) -> DomRoot<Worklet> {
+ win.paint_worklet()
}
}