diff options
Diffstat (limited to 'components/script/dom')
23 files changed, 183 insertions, 65 deletions
diff --git a/components/script/dom/cssstylesheet.rs b/components/script/dom/cssstylesheet.rs index 2e2ac45d867..32413ea0298 100644 --- a/components/script/dom/cssstylesheet.rs +++ b/components/script/dom/cssstylesheet.rs @@ -4,11 +4,13 @@ use dom::bindings::codegen::Bindings::CSSStyleSheetBinding; use dom::bindings::codegen::Bindings::CSSStyleSheetBinding::CSSStyleSheetMethods; +use dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods; use dom::bindings::error::{ErrorResult, Fallible}; use dom::bindings::js::{JS, Root, MutNullableHeap}; use dom::bindings::reflector::{reflect_dom_object, Reflectable}; use dom::bindings::str::DOMString; use dom::cssrulelist::{CSSRuleList, RulesSource}; +use dom::element::Element; use dom::stylesheet::StyleSheet; use dom::window::Window; use std::sync::Arc; @@ -17,27 +19,34 @@ use style::stylesheets::Stylesheet as StyleStyleSheet; #[dom_struct] pub struct CSSStyleSheet { stylesheet: StyleSheet, + owner: JS<Element>, rulelist: MutNullableHeap<JS<CSSRuleList>>, #[ignore_heap_size_of = "Arc"] style_stylesheet: Arc<StyleStyleSheet>, } impl CSSStyleSheet { - fn new_inherited(type_: DOMString, href: Option<DOMString>, - title: Option<DOMString>, stylesheet: Arc<StyleStyleSheet>) -> CSSStyleSheet { + fn new_inherited(owner: &Element, + type_: DOMString, + href: Option<DOMString>, + title: Option<DOMString>, + stylesheet: Arc<StyleStyleSheet>) -> CSSStyleSheet { CSSStyleSheet { stylesheet: StyleSheet::new_inherited(type_, href, title), + owner: JS::from_ref(owner), rulelist: MutNullableHeap::new(None), style_stylesheet: stylesheet, } } #[allow(unrooted_must_root)] - pub fn new(window: &Window, type_: DOMString, + pub fn new(window: &Window, + owner: &Element, + type_: DOMString, href: Option<DOMString>, title: Option<DOMString>, stylesheet: Arc<StyleStyleSheet>) -> Root<CSSStyleSheet> { - reflect_dom_object(box CSSStyleSheet::new_inherited(type_, href, title, stylesheet), + reflect_dom_object(box CSSStyleSheet::new_inherited(owner, type_, href, title, stylesheet), window, CSSStyleSheetBinding::Wrap) } @@ -48,6 +57,16 @@ impl CSSStyleSheet { RulesSource::Rules(self.style_stylesheet .rules.clone()))) } + + pub fn disabled(&self) -> bool { + self.style_stylesheet.disabled() + } + + pub fn set_disabled(&self, disabled: bool) { + if self.style_stylesheet.set_disabled(disabled) { + self.global().as_window().Document().invalidate_stylesheets(); + } + } } impl CSSStyleSheetMethods for CSSStyleSheet { diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index b4273233c37..5870e4c1320 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -434,7 +434,6 @@ impl Document { // that workable. match self.GetDocumentElement() { Some(root) => { - root.upcast::<Node>().is_dirty() || root.upcast::<Node>().has_dirty_descendants() || !self.pending_restyles.borrow().is_empty() || self.needs_paint() diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index b309da6466a..f266f0236c5 100644..100755 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -21,7 +21,7 @@ use dom::htmlformelement::HTMLFormElement; use dom::node::{Node, UnbindContext, document_from_node, window_from_node}; use dom::nodelist::NodeList; use dom::validation::Validatable; -use dom::validitystate::ValidityState; +use dom::validitystate::{ValidityState, ValidationFlags}; use dom::virtualmethods::VirtualMethods; use html5ever_atoms::LocalName; use std::cell::Cell; @@ -238,7 +238,16 @@ impl VirtualMethods for HTMLButtonElement { impl FormControl for HTMLButtonElement {} -impl Validatable for HTMLButtonElement {} +impl Validatable for HTMLButtonElement { + fn is_instance_validatable(&self) -> bool { + true + } + fn validate(&self, validate_flags: ValidationFlags) -> bool { + if validate_flags.is_empty() {} + // Need more flag check for different validation types later + true + } +} impl Activatable for HTMLButtonElement { fn as_element(&self) -> &Element { diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 1af3914db2c..f98e44129b1 100644..100755 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -35,6 +35,7 @@ use dom::htmloutputelement::HTMLOutputElement; use dom::htmlselectelement::HTMLSelectElement; use dom::htmltextareaelement::HTMLTextAreaElement; use dom::node::{Node, document_from_node, window_from_node}; +use dom::validitystate::ValidationFlags; use dom::virtualmethods::VirtualMethods; use encoding::EncodingRef; use encoding::all::UTF_8; @@ -470,12 +471,22 @@ impl HTMLFormElement { // form, refactor this when html5ever's form owner PR lands // Step 1-3 let invalid_controls = node.traverse_preorder().filter_map(|field| { - if let Some(_el) = field.downcast::<Element>() { - None // Remove this line if you decide to refactor - - // XXXKiChjang: Form control elements should each have a candidate_for_validation - // and satisfies_constraints methods - + if let Some(el) = field.downcast::<Element>() { + if el.disabled_state() { + None + } else { + let validatable = match el.as_maybe_validatable() { + Some(v) => v, + None => return None + }; + if !validatable.is_instance_validatable() { + None + } else if validatable.validate(ValidationFlags::empty()) { + None + } else { + Some(FormSubmittableElement::from_element(&el)) + } + } } else { None } @@ -697,7 +708,7 @@ pub enum FormSubmittableElement { // KeygenElement(&'a HTMLKeygenElement), ObjectElement(Root<HTMLObjectElement>), SelectElement(Root<HTMLSelectElement>), - TextAreaElement(Root<HTMLTextAreaElement>) + TextAreaElement(Root<HTMLTextAreaElement>), } impl FormSubmittableElement { @@ -710,6 +721,26 @@ impl FormSubmittableElement { FormSubmittableElement::TextAreaElement(ref textarea) => textarea.upcast() } } + + fn from_element(element: &Element) -> FormSubmittableElement { + if let Some(input) = element.downcast::<HTMLInputElement>() { + FormSubmittableElement::InputElement(Root::from_ref(&input)) + } + else if let Some(input) = element.downcast::<HTMLButtonElement>() { + FormSubmittableElement::ButtonElement(Root::from_ref(&input)) + } + else if let Some(input) = element.downcast::<HTMLObjectElement>() { + FormSubmittableElement::ObjectElement(Root::from_ref(&input)) + } + else if let Some(input) = element.downcast::<HTMLSelectElement>() { + FormSubmittableElement::SelectElement(Root::from_ref(&input)) + } + else if let Some(input) = element.downcast::<HTMLTextAreaElement>() { + FormSubmittableElement::TextAreaElement(Root::from_ref(&input)) + } else { + unreachable!() + } + } } #[derive(Copy, Clone, HeapSizeOf)] diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index ddbd57d2438..90cf630e9fe 100644..100755 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -31,6 +31,7 @@ use dom::node::{Node, NodeDamage, UnbindContext}; use dom::node::{document_from_node, window_from_node}; use dom::nodelist::NodeList; use dom::validation::Validatable; +use dom::validitystate::ValidationFlags; use dom::virtualmethods::VirtualMethods; use html5ever_atoms::LocalName; use ipc_channel::ipc::{self, IpcSender}; @@ -1131,7 +1132,16 @@ impl VirtualMethods for HTMLInputElement { impl FormControl for HTMLInputElement {} -impl Validatable for HTMLInputElement {} +impl Validatable for HTMLInputElement { + fn is_instance_validatable(&self) -> bool { + // https://html.spec.whatwg.org/multipage/#candidate-for-constraint-validation + true + } + fn validate(&self, _validate_flags: ValidationFlags) -> bool { + // call stub methods defined in validityState.rs file here according to the flags set in validate_flags + true + } +} impl Activatable for HTMLInputElement { fn as_element(&self) -> &Element { diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index f311d022470..f0518c55f88 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -94,6 +94,7 @@ impl HTMLLinkElement { self.get_stylesheet().map(|sheet| { self.cssom_stylesheet.or_init(|| { CSSStyleSheet::new(&window_from_node(self), + self.upcast::<Element>(), "text/css".into(), None, // todo handle location None, // todo handle title diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs index 2a71965305d..fa2fe7846c1 100644 --- a/components/script/dom/htmlmetaelement.rs +++ b/components/script/dom/htmlmetaelement.rs @@ -63,6 +63,7 @@ impl HTMLMetaElement { self.get_stylesheet().map(|sheet| { self.cssom_stylesheet.or_init(|| { CSSStyleSheet::new(&window_from_node(self), + self.upcast::<Element>(), "text/css".into(), None, // todo handle location None, // todo handle title @@ -103,6 +104,7 @@ impl HTMLMetaElement { // Viewport constraints are always recomputed on resize; they don't need to // force all styles to be recomputed. dirty_on_viewport_size_change: AtomicBool::new(false), + disabled: AtomicBool::new(false), })); let doc = document_from_node(self); doc.invalidate_stylesheets(); diff --git a/components/script/dom/htmlobjectelement.rs b/components/script/dom/htmlobjectelement.rs index 8e934b96808..d04f989ce5e 100644..100755 --- a/components/script/dom/htmlobjectelement.rs +++ b/components/script/dom/htmlobjectelement.rs @@ -15,7 +15,7 @@ use dom::htmlelement::HTMLElement; use dom::htmlformelement::{FormControl, HTMLFormElement}; use dom::node::{Node, window_from_node}; use dom::validation::Validatable; -use dom::validitystate::ValidityState; +use dom::validitystate::{ValidityState, ValidationFlags}; use dom::virtualmethods::VirtualMethods; use html5ever_atoms::LocalName; use net_traits::image::base::Image; @@ -89,7 +89,16 @@ impl HTMLObjectElementMethods for HTMLObjectElement { } } -impl Validatable for HTMLObjectElement {} +impl Validatable for HTMLObjectElement { + fn is_instance_validatable(&self) -> bool { + true + } + fn validate(&self, validate_flags: ValidationFlags) -> bool { + if validate_flags.is_empty() {} + // Need more flag check for different validation types later + true + } +} impl VirtualMethods for HTMLObjectElement { fn super_type(&self) -> Option<&VirtualMethods> { diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index 8a5f2529d6a..ad66f2b05f3 100644..100755 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -28,7 +28,7 @@ use dom::htmloptionscollection::HTMLOptionsCollection; use dom::node::{Node, UnbindContext, window_from_node}; use dom::nodelist::NodeList; use dom::validation::Validatable; -use dom::validitystate::ValidityState; +use dom::validitystate::{ValidityState, ValidationFlags}; use dom::virtualmethods::VirtualMethods; use html5ever_atoms::LocalName; use style::attr::AttrValue; @@ -384,4 +384,13 @@ impl VirtualMethods for HTMLSelectElement { impl FormControl for HTMLSelectElement {} -impl Validatable for HTMLSelectElement {} +impl Validatable for HTMLSelectElement { + fn is_instance_validatable(&self) -> bool { + true + } + fn validate(&self, validate_flags: ValidationFlags) -> bool { + if validate_flags.is_empty() {} + // Need more flag check for different validation types later + true + } +} diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs index 6a20bf06cdd..5a61d6f5b3a 100644 --- a/components/script/dom/htmlstyleelement.rs +++ b/components/script/dom/htmlstyleelement.rs @@ -86,6 +86,7 @@ impl HTMLStyleElement { self.get_stylesheet().map(|sheet| { self.cssom_stylesheet.or_init(|| { CSSStyleSheet::new(&window_from_node(self), + self.upcast::<Element>(), "text/css".into(), None, // todo handle location None, // todo handle title diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index 268998c8e58..47b9bb6ee0b 100644..100755 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -406,4 +406,5 @@ impl VirtualMethods for HTMLTextAreaElement { impl FormControl for HTMLTextAreaElement {} + impl Validatable for HTMLTextAreaElement {} diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 8e8bf6edc9e..983e2e8d403 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -149,9 +149,6 @@ bitflags! { #[doc = "Specifies whether this node is in a document."] const IS_IN_DOC = 0x01, #[doc = "Specifies whether this node needs style recalc on next reflow."] - const IS_DIRTY = 0x04, - #[doc = "Specifies whether this node has descendants (inclusive of itself) which \ - have changed since the last reflow."] const HAS_DIRTY_DESCENDANTS = 0x08, // TODO: find a better place to keep this (#4105) // https://critic.hoppipolla.co.uk/showcomment?chain=8873 @@ -172,7 +169,7 @@ bitflags! { impl NodeFlags { pub fn new() -> NodeFlags { - IS_DIRTY + NodeFlags::empty() } } @@ -428,14 +425,6 @@ impl Node { self.flags.set(flags); } - pub fn is_dirty(&self) -> bool { - self.get_flag(IS_DIRTY) - } - - pub fn set_is_dirty(&self, state: bool) { - self.set_flag(IS_DIRTY, state) - } - pub fn has_dirty_descendants(&self) -> bool { self.get_flag(HAS_DIRTY_DESCENDANTS) } diff --git a/components/script/dom/stylesheet.rs b/components/script/dom/stylesheet.rs index 7def8f1ba6c..91a6b186f27 100644 --- a/components/script/dom/stylesheet.rs +++ b/components/script/dom/stylesheet.rs @@ -4,12 +4,13 @@ use dom::bindings::codegen::Bindings::StyleSheetBinding; use dom::bindings::codegen::Bindings::StyleSheetBinding::StyleSheetMethods; +use dom::bindings::inheritance::Castable; use dom::bindings::js::Root; use dom::bindings::reflector::{Reflector, reflect_dom_object}; use dom::bindings::str::DOMString; +use dom::cssstylesheet::CSSStyleSheet; use dom::window::Window; - #[dom_struct] pub struct StyleSheet { reflector_: Reflector, @@ -20,12 +21,14 @@ pub struct StyleSheet { impl StyleSheet { #[allow(unrooted_must_root)] - pub fn new_inherited(type_: DOMString, href: Option<DOMString>, title: Option<DOMString>) -> StyleSheet { + pub fn new_inherited(type_: DOMString, + href: Option<DOMString>, + title: Option<DOMString>) -> StyleSheet { StyleSheet { reflector_: Reflector::new(), type_: type_, href: href, - title: title + title: title, } } @@ -55,5 +58,14 @@ impl StyleSheetMethods for StyleSheet { fn GetTitle(&self) -> Option<DOMString> { self.title.clone() } -} + // https://drafts.csswg.org/cssom/#dom-stylesheet-disabled + fn Disabled(&self) -> bool { + self.downcast::<CSSStyleSheet>().unwrap().disabled() + } + + // https://drafts.csswg.org/cssom/#dom-stylesheet-disabled + fn SetDisabled(&self, disabled: bool) { + self.downcast::<CSSStyleSheet>().unwrap().set_disabled(disabled) + } +} diff --git a/components/script/dom/validation.rs b/components/script/dom/validation.rs index e9a6a156848..7ba915092a2 100644..100755 --- a/components/script/dom/validation.rs +++ b/components/script/dom/validation.rs @@ -1,5 +1,9 @@ /* 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::validitystate::ValidationFlags; -pub trait Validatable {} +pub trait Validatable { + fn is_instance_validatable(&self) -> bool { true } + fn validate(&self, _validate_flags: ValidationFlags) -> bool { true } +} diff --git a/components/script/dom/validitystate.rs b/components/script/dom/validitystate.rs index c6bb0761f3c..10801120871 100644..100755 --- a/components/script/dom/validitystate.rs +++ b/components/script/dom/validitystate.rs @@ -26,6 +26,21 @@ pub enum ValidityStatus { Valid } +bitflags!{ + pub flags ValidationFlags: u32 { + const VALUE_MISSING = 0b0000000001, + const TYPE_MISMATCH = 0b0000000010, + const PATTERN_MISMATCH = 0b0000000100, + const TOO_LONG = 0b0000001000, + const TOO_SHORT = 0b0000010000, + const RANGE_UNDERFLOW = 0b0000100000, + const RANGE_OVERFLOW = 0b0001000000, + const STEP_MISMATCH = 0b0010000000, + const BAD_INPUT = 0b0100000000, + const CUSTOM_ERROR = 0b1000000000, + } +} + // https://html.spec.whatwg.org/multipage/#validitystate #[dom_struct] pub struct ValidityState { diff --git a/components/script/dom/webglbuffer.rs b/components/script/dom/webglbuffer.rs index af8f83d256d..6e19c00ae9f 100644 --- a/components/script/dom/webglbuffer.rs +++ b/components/script/dom/webglbuffer.rs @@ -9,8 +9,9 @@ use dom::bindings::js::Root; use dom::bindings::reflector::reflect_dom_object; use dom::globalscope::GlobalScope; use dom::webglobject::WebGLObject; -use ipc_channel::ipc::{self, IpcSender}; +use ipc_channel::ipc::IpcSender; use std::cell::Cell; +use webrender_traits; use webrender_traits::{WebGLBufferId, WebGLCommand, WebGLError, WebGLResult}; #[dom_struct] @@ -41,7 +42,7 @@ impl WebGLBuffer { pub fn maybe_new(global: &GlobalScope, renderer: IpcSender<CanvasMsg>) -> Option<Root<WebGLBuffer>> { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateBuffer(sender))).unwrap(); let result = receiver.recv().unwrap(); diff --git a/components/script/dom/webglframebuffer.rs b/components/script/dom/webglframebuffer.rs index 25026dac22d..643661d67d4 100644 --- a/components/script/dom/webglframebuffer.rs +++ b/components/script/dom/webglframebuffer.rs @@ -13,8 +13,9 @@ use dom::globalscope::GlobalScope; use dom::webglobject::WebGLObject; use dom::webglrenderbuffer::WebGLRenderbuffer; use dom::webgltexture::WebGLTexture; -use ipc_channel::ipc::{self, IpcSender}; +use ipc_channel::ipc::IpcSender; use std::cell::Cell; +use webrender_traits; use webrender_traits::{WebGLCommand, WebGLFramebufferBindingRequest, WebGLFramebufferId, WebGLResult, WebGLError}; #[must_root] @@ -67,7 +68,7 @@ impl WebGLFramebuffer { pub fn maybe_new(global: &GlobalScope, renderer: IpcSender<CanvasMsg>) -> Option<Root<WebGLFramebuffer>> { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateFramebuffer(sender))).unwrap(); let result = receiver.recv().unwrap(); diff --git a/components/script/dom/webglprogram.rs b/components/script/dom/webglprogram.rs index 98139081c3b..47807a8086e 100644 --- a/components/script/dom/webglprogram.rs +++ b/components/script/dom/webglprogram.rs @@ -14,8 +14,9 @@ use dom::webglactiveinfo::WebGLActiveInfo; use dom::webglobject::WebGLObject; use dom::webglrenderingcontext::MAX_UNIFORM_AND_ATTRIBUTE_LEN; use dom::webglshader::WebGLShader; -use ipc_channel::ipc::{self, IpcSender}; +use ipc_channel::ipc::IpcSender; use std::cell::Cell; +use webrender_traits; use webrender_traits::{WebGLCommand, WebGLError, WebGLParameter}; use webrender_traits::{WebGLProgramId, WebGLResult}; @@ -50,7 +51,7 @@ impl WebGLProgram { pub fn maybe_new(global: &GlobalScope, renderer: IpcSender<CanvasMsg>) -> Option<Root<WebGLProgram>> { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateProgram(sender))).unwrap(); let result = receiver.recv().unwrap(); @@ -224,7 +225,7 @@ impl WebGLProgram { if self.is_deleted() { return Err(WebGLError::InvalidValue); } - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.renderer .send(CanvasMsg::WebGL(WebGLCommand::GetActiveUniform(self.id, index, sender))) .unwrap(); @@ -238,7 +239,7 @@ impl WebGLProgram { if self.is_deleted() { return Err(WebGLError::InvalidValue); } - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.renderer .send(CanvasMsg::WebGL(WebGLCommand::GetActiveAttrib(self.id, index, sender))) .unwrap(); @@ -265,7 +266,7 @@ impl WebGLProgram { return Ok(None); } - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.renderer .send(CanvasMsg::WebGL(WebGLCommand::GetAttribLocation(self.id, String::from(name), sender))) .unwrap(); @@ -286,7 +287,7 @@ impl WebGLProgram { return Ok(None); } - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.renderer .send(CanvasMsg::WebGL(WebGLCommand::GetUniformLocation(self.id, String::from(name), sender))) .unwrap(); @@ -307,14 +308,14 @@ impl WebGLProgram { return Ok("One or more shaders failed to compile".to_string()); } } - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.renderer.send(CanvasMsg::WebGL(WebGLCommand::GetProgramInfoLog(self.id, sender))).unwrap(); Ok(receiver.recv().unwrap()) } /// glGetProgramParameter pub fn parameter(&self, param_id: u32) -> WebGLResult<WebGLParameter> { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.renderer.send(CanvasMsg::WebGL(WebGLCommand::GetProgramParameter(self.id, param_id, sender))).unwrap(); receiver.recv().unwrap() } diff --git a/components/script/dom/webglrenderbuffer.rs b/components/script/dom/webglrenderbuffer.rs index 186b2aedf5a..d74d045363a 100644 --- a/components/script/dom/webglrenderbuffer.rs +++ b/components/script/dom/webglrenderbuffer.rs @@ -10,8 +10,9 @@ use dom::bindings::js::Root; use dom::bindings::reflector::reflect_dom_object; use dom::globalscope::GlobalScope; use dom::webglobject::WebGLObject; -use ipc_channel::ipc::{self, IpcSender}; +use ipc_channel::ipc::IpcSender; use std::cell::Cell; +use webrender_traits; use webrender_traits::{WebGLCommand, WebGLRenderbufferId, WebGLResult, WebGLError}; #[dom_struct] @@ -43,7 +44,7 @@ impl WebGLRenderbuffer { pub fn maybe_new(global: &GlobalScope, renderer: IpcSender<CanvasMsg>) -> Option<Root<WebGLRenderbuffer>> { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateRenderbuffer(sender))).unwrap(); let result = receiver.recv().unwrap(); diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 5428fc794fa..f43576fba63 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -44,6 +44,7 @@ use net_traits::image_cache_thread::ImageResponse; use offscreen_gl_context::{GLContextAttributes, GLLimits}; use script_traits::ScriptMsg as ConstellationMsg; use std::cell::Cell; +use webrender_traits; use webrender_traits::{WebGLCommand, WebGLError, WebGLFramebufferBindingRequest, WebGLParameter}; use webrender_traits::WebGLError::*; @@ -597,7 +598,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.11 fn Finish(&self) { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.ipc_renderer .send(CanvasMsg::WebGL(WebGLCommand::Finish(sender))) .unwrap(); @@ -606,7 +607,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.1 fn DrawingBufferWidth(&self) -> i32 { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.ipc_renderer .send(CanvasMsg::WebGL(WebGLCommand::DrawingBufferWidth(sender))) .unwrap(); @@ -615,7 +616,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.1 fn DrawingBufferHeight(&self) -> i32 { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.ipc_renderer .send(CanvasMsg::WebGL(WebGLCommand::DrawingBufferHeight(sender))) .unwrap(); @@ -625,7 +626,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { #[allow(unsafe_code)] // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.5 unsafe fn GetBufferParameter(&self, _cx: *mut JSContext, target: u32, parameter: u32) -> JSVal { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.ipc_renderer .send(CanvasMsg::WebGL(WebGLCommand::GetBufferParameter(target, parameter, sender))) .unwrap(); @@ -681,7 +682,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { _ => {} } - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.ipc_renderer .send(CanvasMsg::WebGL(WebGLCommand::GetParameter(parameter, sender))) .unwrap(); @@ -719,7 +720,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.2 fn GetContextAttributes(&self) -> Option<WebGLContextAttributes> { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); // If the send does not succeed, assume context lost if let Err(_) = self.ipc_renderer @@ -1626,7 +1627,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { return result.get() } - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.ipc_renderer.send(CanvasMsg::WebGL(WebGLCommand::GetVertexAttrib(index, pname, sender))).unwrap(); match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) { @@ -1671,7 +1672,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 fn IsEnabled(&self, cap: u32) -> bool { if self.validate_feature_enum(cap) { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.ipc_renderer .send(CanvasMsg::WebGL(WebGLCommand::IsEnabled(cap, sender))) .unwrap(); @@ -1873,7 +1874,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { _ => return Ok(self.webgl_error(InvalidOperation)), }; - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.ipc_renderer .send(CanvasMsg::WebGL(WebGLCommand::ReadPixels(x, y, width, height, format, pixel_type, sender))) .unwrap(); diff --git a/components/script/dom/webglshader.rs b/components/script/dom/webglshader.rs index 82d1b88a7da..93da1ca0bc5 100644 --- a/components/script/dom/webglshader.rs +++ b/components/script/dom/webglshader.rs @@ -12,9 +12,10 @@ use dom::bindings::reflector::reflect_dom_object; use dom::bindings::str::DOMString; use dom::globalscope::GlobalScope; use dom::webglobject::WebGLObject; -use ipc_channel::ipc::{self, IpcSender}; +use ipc_channel::ipc::IpcSender; use std::cell::Cell; use std::sync::{ONCE_INIT, Once}; +use webrender_traits; use webrender_traits::{WebGLCommand, WebGLParameter, WebGLResult, WebGLShaderId}; #[derive(Clone, Copy, PartialEq, Debug, JSTraceable, HeapSizeOf)] @@ -68,7 +69,7 @@ impl WebGLShader { pub fn maybe_new(global: &GlobalScope, renderer: IpcSender<CanvasMsg>, shader_type: u32) -> Option<Root<WebGLShader>> { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateShader(shader_type, sender))).unwrap(); let result = receiver.recv().unwrap(); @@ -165,7 +166,7 @@ impl WebGLShader { /// glGetParameter pub fn parameter(&self, param_id: u32) -> WebGLResult<WebGLParameter> { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); self.renderer.send(CanvasMsg::WebGL(WebGLCommand::GetShaderParameter(self.id, param_id, sender))).unwrap(); receiver.recv().unwrap() } diff --git a/components/script/dom/webgltexture.rs b/components/script/dom/webgltexture.rs index 3ba8eefca85..26cf14f7972 100644 --- a/components/script/dom/webgltexture.rs +++ b/components/script/dom/webgltexture.rs @@ -12,9 +12,10 @@ use dom::bindings::reflector::reflect_dom_object; use dom::globalscope::GlobalScope; use dom::webgl_validations::types::{TexImageTarget, TexFormat, TexDataType}; use dom::webglobject::WebGLObject; -use ipc_channel::ipc::{self, IpcSender}; +use ipc_channel::ipc::IpcSender; use std::cell::Cell; use std::cmp; +use webrender_traits; use webrender_traits::{WebGLCommand, WebGLError, WebGLResult, WebGLTextureId}; pub enum TexParameterValue { @@ -62,7 +63,7 @@ impl WebGLTexture { pub fn maybe_new(global: &GlobalScope, renderer: IpcSender<CanvasMsg>) -> Option<Root<WebGLTexture>> { - let (sender, receiver) = ipc::channel().unwrap(); + let (sender, receiver) = webrender_traits::channel::msg_channel().unwrap(); renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateTexture(sender))).unwrap(); let result = receiver.recv().unwrap(); diff --git a/components/script/dom/webidls/StyleSheet.webidl b/components/script/dom/webidls/StyleSheet.webidl index 336bc6b282c..1ef0533abdc 100644 --- a/components/script/dom/webidls/StyleSheet.webidl +++ b/components/script/dom/webidls/StyleSheet.webidl @@ -13,7 +13,7 @@ interface StyleSheet { readonly attribute DOMString? title; // [SameObject, PutForwards=mediaText] readonly attribute MediaList media; - // attribute boolean disabled; + attribute boolean disabled; }; // https://drafts.csswg.org/cssom/#the-linkstyle-interface |