mirror of
https://github.com/servo/servo.git
synced 2025-06-25 01:24:37 +01:00
parent
18b5453e09
commit
28a013cfc5
3 changed files with 34 additions and 16 deletions
|
@ -3,7 +3,7 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
use dom::bindings::codegen::HTMLStyleElementBinding;
|
use dom::bindings::codegen::HTMLStyleElementBinding;
|
||||||
use dom::bindings::codegen::InheritTypes::{HTMLStyleElementDerived, NodeCast};
|
use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLStyleElementDerived, NodeCast};
|
||||||
use dom::bindings::js::JS;
|
use dom::bindings::js::JS;
|
||||||
use dom::bindings::error::ErrorResult;
|
use dom::bindings::error::ErrorResult;
|
||||||
use dom::document::Document;
|
use dom::document::Document;
|
||||||
|
@ -11,6 +11,7 @@ use dom::element::HTMLStyleElementTypeId;
|
||||||
use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::node::{Node, ElementNodeTypeId, window_from_node};
|
use dom::node::{Node, ElementNodeTypeId, window_from_node};
|
||||||
|
use dom::virtualmethods::VirtualMethods;
|
||||||
use html::cssparse::parse_inline_css;
|
use html::cssparse::parse_inline_css;
|
||||||
use layout_interface::{AddStylesheetMsg, LayoutChan};
|
use layout_interface::{AddStylesheetMsg, LayoutChan};
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
@ -91,3 +92,18 @@ impl StyleElementHelpers for JS<HTMLStyleElement> {
|
||||||
layout_chan.send(AddStylesheetMsg(sheet));
|
layout_chan.send(AddStylesheetMsg(sheet));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl VirtualMethods for JS<HTMLStyleElement> {
|
||||||
|
fn super_type(&self) -> Option<~VirtualMethods:> {
|
||||||
|
let htmlelement: JS<HTMLElement> = HTMLElementCast::from(self);
|
||||||
|
Some(~htmlelement as ~VirtualMethods:)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn child_inserted(&mut self, child: &JS<Node>) {
|
||||||
|
match self.super_type() {
|
||||||
|
Some(ref mut s) => s.child_inserted(child),
|
||||||
|
_ => (),
|
||||||
|
}
|
||||||
|
self.parse_own_css();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
use dom::attr::Attr;
|
use dom::attr::Attr;
|
||||||
use dom::bindings::codegen::InheritTypes::{CommentCast, DocumentCast, DocumentTypeCast};
|
use dom::bindings::codegen::InheritTypes::{CommentCast, DocumentCast, DocumentTypeCast};
|
||||||
use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLStyleElementCast, TextCast, NodeCast};
|
use dom::bindings::codegen::InheritTypes::{ElementCast, TextCast, NodeCast};
|
||||||
use dom::bindings::codegen::InheritTypes::{CharacterDataCast, NodeBase, NodeDerived};
|
use dom::bindings::codegen::InheritTypes::{CharacterDataCast, NodeBase, NodeDerived};
|
||||||
use dom::bindings::codegen::InheritTypes::{ProcessingInstructionCast, EventTargetCast};
|
use dom::bindings::codegen::InheritTypes::{ProcessingInstructionCast, EventTargetCast};
|
||||||
use dom::bindings::codegen::NodeBinding::NodeConstants;
|
use dom::bindings::codegen::NodeBinding::NodeConstants;
|
||||||
|
@ -21,7 +21,6 @@ use dom::documentfragment::DocumentFragment;
|
||||||
use dom::documenttype::DocumentType;
|
use dom::documenttype::DocumentType;
|
||||||
use dom::element::{Element, ElementTypeId, HTMLAnchorElementTypeId};
|
use dom::element::{Element, ElementTypeId, HTMLAnchorElementTypeId};
|
||||||
use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlstyleelement::StyleElementHelpers;
|
|
||||||
use dom::nodelist::{NodeList};
|
use dom::nodelist::{NodeList};
|
||||||
use dom::processinginstruction::ProcessingInstruction;
|
use dom::processinginstruction::ProcessingInstruction;
|
||||||
use dom::text::Text;
|
use dom::text::Text;
|
||||||
|
@ -270,8 +269,6 @@ pub trait NodeHelpers {
|
||||||
fn add_child(&mut self, new_child: &mut JS<Node>, before: Option<JS<Node>>);
|
fn add_child(&mut self, new_child: &mut JS<Node>, before: Option<JS<Node>>);
|
||||||
fn remove_child(&mut self, child: &mut JS<Node>);
|
fn remove_child(&mut self, child: &mut JS<Node>);
|
||||||
|
|
||||||
fn child_inserted(&self);
|
|
||||||
|
|
||||||
fn get_hover_state(&self) -> bool;
|
fn get_hover_state(&self) -> bool;
|
||||||
fn set_hover_state(&mut self, state: bool);
|
fn set_hover_state(&mut self, state: bool);
|
||||||
|
|
||||||
|
@ -411,7 +408,7 @@ impl NodeHelpers for JS<Node> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.parent_node().map(|parent| parent.child_inserted());
|
self.parent_node().map(|parent| vtable_for(&parent).child_inserted(self));
|
||||||
document.get().content_changed();
|
document.get().content_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -503,15 +500,6 @@ impl NodeHelpers for JS<Node> {
|
||||||
child_node.set_parent_node(None);
|
child_node.set_parent_node(None);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn child_inserted(&self) {
|
|
||||||
// Parse text content added to an inline stylesheet.
|
|
||||||
match HTMLStyleElementCast::to(self) {
|
|
||||||
Some(elem) => elem.parse_own_css(),
|
|
||||||
None => ()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fn get_hover_state(&self) -> bool {
|
fn get_hover_state(&self) -> bool {
|
||||||
self.get().flags.get_in_hover_state()
|
self.get().flags.get_in_hover_state()
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,14 +7,16 @@ use dom::bindings::codegen::InheritTypes::HTMLElementCast;
|
||||||
use dom::bindings::codegen::InheritTypes::HTMLIFrameElementCast;
|
use dom::bindings::codegen::InheritTypes::HTMLIFrameElementCast;
|
||||||
use dom::bindings::codegen::InheritTypes::HTMLImageElementCast;
|
use dom::bindings::codegen::InheritTypes::HTMLImageElementCast;
|
||||||
use dom::bindings::codegen::InheritTypes::HTMLObjectElementCast;
|
use dom::bindings::codegen::InheritTypes::HTMLObjectElementCast;
|
||||||
|
use dom::bindings::codegen::InheritTypes::HTMLStyleElementCast;
|
||||||
use dom::bindings::js::JS;
|
use dom::bindings::js::JS;
|
||||||
use dom::element::Element;
|
use dom::element::Element;
|
||||||
use dom::element::{ElementTypeId, HTMLImageElementTypeId};
|
use dom::element::{ElementTypeId, HTMLImageElementTypeId};
|
||||||
use dom::element::{HTMLIFrameElementTypeId, HTMLObjectElementTypeId};
|
use dom::element::{HTMLIFrameElementTypeId, HTMLObjectElementTypeId, HTMLStyleElementTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::htmliframeelement::HTMLIFrameElement;
|
use dom::htmliframeelement::HTMLIFrameElement;
|
||||||
use dom::htmlimageelement::HTMLImageElement;
|
use dom::htmlimageelement::HTMLImageElement;
|
||||||
use dom::htmlobjectelement::HTMLObjectElement;
|
use dom::htmlobjectelement::HTMLObjectElement;
|
||||||
|
use dom::htmlstyleelement::HTMLStyleElement;
|
||||||
use dom::node::{Node, ElementNodeTypeId};
|
use dom::node::{Node, ElementNodeTypeId};
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
|
|
||||||
|
@ -58,6 +60,14 @@ pub trait VirtualMethods {
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Called on the parent when a node is added to its child list.
|
||||||
|
fn child_inserted(&mut self, child: &JS<Node>) {
|
||||||
|
match self.super_type() {
|
||||||
|
Some(ref mut s) => s.child_inserted(child),
|
||||||
|
_ => (),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Obtain a VirtualMethods instance for a given Node-derived object. Any
|
/// Obtain a VirtualMethods instance for a given Node-derived object. Any
|
||||||
|
@ -78,6 +88,10 @@ pub fn vtable_for<'a>(node: &JS<Node>) -> ~VirtualMethods: {
|
||||||
let element: JS<HTMLObjectElement> = HTMLObjectElementCast::to(node).unwrap();
|
let element: JS<HTMLObjectElement> = HTMLObjectElementCast::to(node).unwrap();
|
||||||
~element as ~VirtualMethods:
|
~element as ~VirtualMethods:
|
||||||
}
|
}
|
||||||
|
ElementNodeTypeId(HTMLStyleElementTypeId) => {
|
||||||
|
let element: JS<HTMLStyleElement> = HTMLStyleElementCast::to(node).unwrap();
|
||||||
|
~element as ~VirtualMethods:
|
||||||
|
}
|
||||||
ElementNodeTypeId(ElementTypeId) => {
|
ElementNodeTypeId(ElementTypeId) => {
|
||||||
let element: JS<Element> = ElementCast::to(node).unwrap();
|
let element: JS<Element> = ElementCast::to(node).unwrap();
|
||||||
~element as ~VirtualMethods:
|
~element as ~VirtualMethods:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue