diff --git a/src/components/script/dom/range.rs b/src/components/script/dom/range.rs new file mode 100644 index 00000000000..16449cabe1a --- /dev/null +++ b/src/components/script/dom/range.rs @@ -0,0 +1,40 @@ +/* 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::codegen::Bindings::RangeBinding; +use dom::bindings::codegen::Bindings::RangeBinding::RangeMethods; +use dom::bindings::error::Fallible; +use dom::bindings::global::GlobalRef; +use dom::bindings::js::{JSRef, Temporary}; +use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; + +#[deriving(Encodable)] +pub struct Range { + pub reflector_: Reflector +} + +impl Range { + pub fn new_inherited() -> Range { + Range { + reflector_: Reflector::new() + } + } + + pub fn new(global: &GlobalRef) -> Temporary { + reflect_dom_object(box Range::new_inherited(), global, RangeBinding::Wrap) + } + + pub fn Constructor(global: &GlobalRef) -> Fallible> { + Ok(Range::new(global)) + } +} + +impl<'a> RangeMethods for JSRef<'a, Range> { +} + +impl Reflectable for Range { + fn reflector<'a>(&'a self) -> &'a Reflector { + &self.reflector_ + } +} diff --git a/src/components/script/dom/webidls/Range.webidl b/src/components/script/dom/webidls/Range.webidl new file mode 100644 index 00000000000..c0e8f630546 --- /dev/null +++ b/src/components/script/dom/webidls/Range.webidl @@ -0,0 +1,85 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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://dom.spec.whatwg.org/#range + * http://domparsing.spec.whatwg.org/#dom-range-createcontextualfragment + * http://dvcs.w3.org/hg/csswg/raw-file/tip/cssom-view/Overview.html#extensions-to-the-range-interface + */ + +[Constructor] +interface Range { + // [Throws] + // readonly attribute Node startContainer; + // [Throws] + // readonly attribute unsigned long startOffset; + // [Throws] + // readonly attribute Node endContainer; + // [Throws] + // readonly attribute unsigned long endOffset; + // readonly attribute boolean collapsed; + // [Throws] + // readonly attribute Node commonAncestorContainer; + + // [Throws] + // void setStart(Node refNode, unsigned long offset); + // [Throws] + // void setEnd(Node refNode, unsigned long offset); + // [Throws] + // void setStartBefore(Node refNode); + // [Throws] + // void setStartAfter(Node refNode); + // [Throws] + // void setEndBefore(Node refNode); + // [Throws] + // void setEndAfter(Node refNode); + // void collapse(optional boolean toStart = false); + // [Throws] + // void selectNode(Node refNode); + // [Throws] + // void selectNodeContents(Node refNode); + + // const unsigned short START_TO_START = 0; + // const unsigned short START_TO_END = 1; + // const unsigned short END_TO_END = 2; + // const unsigned short END_TO_START = 3; + // [Throws] + // short compareBoundaryPoints(unsigned short how, Range sourceRange); + // [Throws] + // void deleteContents(); + // [Throws] + // DocumentFragment extractContents(); + // [Throws] + // DocumentFragment cloneContents(); + // [Throws] + // void insertNode(Node node); + // [Throws] + // void surroundContents(Node newParent); + + // Range cloneRange(); + // void detach(); + + // [Throws] + // boolean isPointInRange(Node node, unsigned long offset); + // [Throws] + // short comparePoint(Node node, unsigned long offset); + + // [Throws] + // boolean intersectsNode(Node node); + + // stringifier; +}; + +// http://domparsing.spec.whatwg.org/#dom-range-createcontextualfragment +partial interface Range { + // [Throws] + // DocumentFragment createContextualFragment(DOMString fragment); +};// + +//// http://dvcs.w3.org/hg/csswg/raw-file/tip/cssom-view/Overview.html#extensions-to-the-range-interface +partial interface Range { + // DOMRectList? getClientRects(); + // DOMRect getBoundingClientRect(); +}; diff --git a/src/components/script/script.rs b/src/components/script/script.rs index f621b00843c..e390bd0d6df 100644 --- a/src/components/script/script.rs +++ b/src/components/script/script.rs @@ -178,6 +178,7 @@ pub mod dom { pub mod performance; pub mod performancetiming; pub mod progressevent; + pub mod range; pub mod screen; pub mod text; pub mod treewalker; diff --git a/src/test/content/test_interfaces.html b/src/test/content/test_interfaces.html index 50efde4dfb9..3bf7c11d889 100644 --- a/src/test/content/test_interfaces.html +++ b/src/test/content/test_interfaces.html @@ -152,6 +152,7 @@ var interfaceNamesInGlobalScope = [ "PerformanceTiming", "ProcessingInstruction", "ProgressEvent", + "Range", "Screen", "TestBinding", // XXX "Text",