aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/cssstylesheet.rs27
-rw-r--r--components/script/dom/document.rs1
-rwxr-xr-x[-rw-r--r--]components/script/dom/htmlbuttonelement.rs13
-rwxr-xr-x[-rw-r--r--]components/script/dom/htmlformelement.rs45
-rwxr-xr-x[-rw-r--r--]components/script/dom/htmlinputelement.rs12
-rw-r--r--components/script/dom/htmllinkelement.rs1
-rw-r--r--components/script/dom/htmlmetaelement.rs2
-rwxr-xr-x[-rw-r--r--]components/script/dom/htmlobjectelement.rs13
-rwxr-xr-x[-rw-r--r--]components/script/dom/htmlselectelement.rs13
-rw-r--r--components/script/dom/htmlstyleelement.rs1
-rwxr-xr-x[-rw-r--r--]components/script/dom/htmltextareaelement.rs1
-rw-r--r--components/script/dom/node.rs13
-rw-r--r--components/script/dom/stylesheet.rs20
-rwxr-xr-x[-rw-r--r--]components/script/dom/validation.rs6
-rwxr-xr-x[-rw-r--r--]components/script/dom/validitystate.rs15
-rw-r--r--components/script/dom/webglbuffer.rs5
-rw-r--r--components/script/dom/webglframebuffer.rs5
-rw-r--r--components/script/dom/webglprogram.rs17
-rw-r--r--components/script/dom/webglrenderbuffer.rs5
-rw-r--r--components/script/dom/webglrenderingcontext.rs19
-rw-r--r--components/script/dom/webglshader.rs7
-rw-r--r--components/script/dom/webgltexture.rs5
-rw-r--r--components/script/dom/webidls/StyleSheet.webidl2
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