Implement the Image NamedConstructor for HTMLImageElement

This commit is contained in:
Joel Teichroeb 2015-05-17 23:47:35 +00:00
parent 012be81eab
commit d33579183a
6 changed files with 53 additions and 53 deletions

View file

@ -7,8 +7,10 @@ use dom::attr::{AttrHelpers, AttrValue};
use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::HTMLImageElementBinding;
use dom::bindings::codegen::Bindings::HTMLImageElementBinding::HTMLImageElementMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::InheritTypes::{NodeCast, ElementCast, EventTargetCast, HTMLElementCast,
HTMLImageElementDerived};
use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{LayoutJS, Root};
use dom::bindings::refcounted::Trusted;
@ -151,6 +153,21 @@ impl HTMLImageElement {
let element = HTMLImageElement::new_inherited(localName, prefix, document);
Node::reflect_node(box element, document, HTMLImageElementBinding::Wrap)
}
pub fn Image(global: GlobalRef,
width: Option<u32>,
height: Option<u32>) -> Fallible<Root<HTMLImageElement>> {
let document = global.as_window().Document();
let image = HTMLImageElement::new("img".to_owned(), None, document.r());
if let Some(w) = width {
image.SetWidth(w);
}
if let Some(h) = height {
image.SetHeight(h);
}
Ok(image)
}
}
pub trait LayoutHTMLImageElementHelpers {

View file

@ -4,7 +4,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// https://www.whatwg.org/html/#htmlimageelement
//[NamedConstructor=Image(optional unsigned long width, optional unsigned long height)]
[NamedConstructor=Image(optional unsigned long width, optional unsigned long height)]
interface HTMLImageElement : HTMLElement {
attribute DOMString alt;
attribute DOMString src;

View file

@ -14117,6 +14117,10 @@
"path": "html/semantics/embedded-content/the-img-element/img.complete.html",
"url": "/html/semantics/embedded-content/the-img-element/img.complete.html"
},
{
"path": "html/semantics/embedded-content/the-img-element/Image-constructor.html",
"url": "/html/semantics/embedded-content/the-img-element/Image-constructor.html"
},
{
"path": "html/semantics/embedded-content/the-img-element/relevant-mutations.html",
"url": "/html/semantics/embedded-content/the-img-element/relevant-mutations.html"

View file

@ -2745,18 +2745,6 @@
[HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type (14)]
expected: FAIL
[HTMLImageElement must be primary interface of new Image()]
expected: FAIL
[Stringification of new Image()]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "alt" with the proper type (0)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "src" with the proper type (1)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "srcset" with the proper type (2)]
expected: FAIL
@ -2766,51 +2754,12 @@
[HTMLImageElement interface: new Image() must inherit property "crossOrigin" with the proper type (4)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "useMap" with the proper type (5)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "isMap" with the proper type (6)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "width" with the proper type (7)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "height" with the proper type (8)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "naturalWidth" with the proper type (9)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "naturalHeight" with the proper type (10)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "complete" with the proper type (11)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "currentSrc" with the proper type (12)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "name" with the proper type (13)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type (14)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "align" with the proper type (15)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "hspace" with the proper type (16)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "vspace" with the proper type (17)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "longDesc" with the proper type (18)]
expected: FAIL
[HTMLImageElement interface: new Image() must inherit property "border" with the proper type (19)]
expected: FAIL
[HTMLIFrameElement interface: existence and properties of interface object]
expected: FAIL

View file

@ -168,6 +168,7 @@ var interfaceNamesInGlobalScope = [
"HTMLUnknownElement",
"HTMLVideoElement",
"ImageData",
"Image",
"KeyboardEvent",
"Location",
"MessageEvent",

View file

@ -0,0 +1,29 @@
<!DOCTYPE HTML>
<title>DOM Image constructor Test</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<link rel="help" href="https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element" />
<meta name="assert" content="Tests the Image constructor for the img-element">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var img = new Image();
assert_true(img != undefined);
}, "Image constructor works");
test(function() {
assert_true(Image.prototype === HTMLImageElement.prototype);
}, "Image and HTMLImageElement share a prototype");
test(function() {
assert_true((new Image()).localName === "img");
}, "Image localName is img");
test(function() {
assert_true((new Image()).namespaceURI === "http://www.w3.org/1999/xhtml");
}, "Image namespace URI is correct");
</script>