mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Auto merge of #5779 - nox:css-escape, r=Ms2ger
<!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/5779) <!-- Reviewable:end -->
This commit is contained in:
commit
1f9de5ee2c
6 changed files with 53 additions and 8 deletions
|
@ -2616,7 +2616,11 @@ class CGAbstractStaticBindingMethod(CGAbstractMethod):
|
|||
CGAbstractMethod.__init__(self, descriptor, name, "JSBool", args, extern=True)
|
||||
|
||||
def definition_body(self):
|
||||
return self.generate_code()
|
||||
preamble = CGGeneric("""\
|
||||
let global = global_object_for_js_object(JS_CALLEE(cx, vp).to_object());
|
||||
let global = global.root();
|
||||
""")
|
||||
return CGList([preamble, self.generate_code()])
|
||||
|
||||
def generate_code(self):
|
||||
assert False # Override me
|
||||
|
@ -2674,7 +2678,7 @@ class CGStaticMethod(CGAbstractStaticBindingMethod):
|
|||
def generate_code(self):
|
||||
nativeName = CGSpecializedMethod.makeNativeName(self.descriptor,
|
||||
self.method)
|
||||
return CGMethodCall([], nativeName, True, self.descriptor, self.method)
|
||||
return CGMethodCall(["global.r()"], nativeName, True, self.descriptor, self.method)
|
||||
|
||||
|
||||
class CGGenericGetter(CGAbstractBindingMethod):
|
||||
|
@ -2748,7 +2752,7 @@ class CGStaticGetter(CGAbstractStaticBindingMethod):
|
|||
def generate_code(self):
|
||||
nativeName = CGSpecializedGetter.makeNativeName(self.descriptor,
|
||||
self.attr)
|
||||
return CGGetterCall([], self.attr.type, nativeName, self.descriptor,
|
||||
return CGGetterCall(["global.r()"], self.attr.type, nativeName, self.descriptor,
|
||||
self.attr)
|
||||
|
||||
|
||||
|
@ -2827,7 +2831,7 @@ class CGStaticSetter(CGAbstractStaticBindingMethod):
|
|||
" throw_type_error(cx, \"Not enough arguments to %s setter.\");\n"
|
||||
" return 0;\n"
|
||||
"}" % self.attr.identifier.name)
|
||||
call = CGSetterCall([], self.attr.type, nativeName, self.descriptor,
|
||||
call = CGSetterCall(["global.r()"], self.attr.type, nativeName, self.descriptor,
|
||||
self.attr)
|
||||
return CGList([checkForArg, call])
|
||||
|
||||
|
|
27
components/script/dom/css.rs
Normal file
27
components/script/dom/css.rs
Normal file
|
@ -0,0 +1,27 @@
|
|||
/* 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/. */
|
||||
|
||||
use dom::bindings::error::{Error, Fallible};
|
||||
use dom::bindings::global::GlobalRef;
|
||||
use dom::bindings::utils::Reflector;
|
||||
use util::str::DOMString;
|
||||
|
||||
use cssparser::serialize_identifier;
|
||||
|
||||
#[dom_struct]
|
||||
pub struct CSS {
|
||||
reflector_: Reflector,
|
||||
}
|
||||
|
||||
impl CSS {
|
||||
// http://dev.w3.org/csswg/cssom/#serialize-an-identifier
|
||||
pub fn Escape(_: GlobalRef, ident: DOMString) -> Fallible<DOMString> {
|
||||
if ident.bytes().any(|b| b == b'\0') {
|
||||
return Err(Error::InvalidCharacter);
|
||||
}
|
||||
let mut escaped = DOMString::new();
|
||||
serialize_identifier(&ident, &mut escaped).unwrap();
|
||||
Ok(escaped)
|
||||
}
|
||||
}
|
|
@ -201,6 +201,7 @@ pub mod canvasgradient;
|
|||
pub mod canvaspattern;
|
||||
pub mod canvasrenderingcontext2d;
|
||||
pub mod characterdata;
|
||||
pub mod css;
|
||||
pub mod cssstyledeclaration;
|
||||
pub mod domrect;
|
||||
pub mod domrectlist;
|
||||
|
|
|
@ -12,7 +12,7 @@ use dom::bindings::codegen::UnionTypes::EventOrString;
|
|||
use dom::bindings::codegen::UnionTypes::EventOrString::eString;
|
||||
use dom::bindings::codegen::UnionTypes::HTMLElementOrLong;
|
||||
use dom::bindings::codegen::UnionTypes::HTMLElementOrLong::eLong;
|
||||
use dom::bindings::global::GlobalField;
|
||||
use dom::bindings::global::{GlobalField, GlobalRef};
|
||||
use dom::bindings::js::{JSRef, Temporary};
|
||||
use dom::bindings::num::Finite;
|
||||
use dom::bindings::str::{ByteString, USVString};
|
||||
|
@ -361,8 +361,8 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
|
|||
}
|
||||
|
||||
impl TestBinding {
|
||||
pub fn BooleanAttributeStatic() -> bool { false }
|
||||
pub fn SetBooleanAttributeStatic(_: bool) {}
|
||||
pub fn ReceiveVoidStatic() {}
|
||||
pub fn BooleanAttributeStatic(_: GlobalRef) -> bool { false }
|
||||
pub fn SetBooleanAttributeStatic(_: GlobalRef, _: bool) {}
|
||||
pub fn ReceiveVoidStatic(_: GlobalRef) {}
|
||||
}
|
||||
|
||||
|
|
12
components/script/dom/webidls/CSS.webidl
Normal file
12
components/script/dom/webidls/CSS.webidl
Normal file
|
@ -0,0 +1,12 @@
|
|||
/* 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/.
|
||||
*
|
||||
* The origin of this IDL file is
|
||||
* http://dev.w3.org/csswg/cssom/#the-css-interface
|
||||
*/
|
||||
|
||||
interface CSS {
|
||||
[Throws]
|
||||
static DOMString escape(DOMString ident);
|
||||
};
|
|
@ -58,6 +58,7 @@ var interfaceNamesInGlobalScope = [
|
|||
"CanvasRenderingContext2D",
|
||||
"CanvasPattern",
|
||||
"CharacterData",
|
||||
"CSS",
|
||||
"CSSStyleDeclaration",
|
||||
"DOMRect",
|
||||
"Comment",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue