Implement ImageBitmap interface

Implementation of ImageBitmap

ImageBitMap webidl file added

Implementation of ImageBitmap

mentioned the correct origin link

basic new and new_inherited

updated the mod.rs file to include imagebitmap

imagebitmap implemented

changed according to Serialization

implemented serializable

get methods for width and height

basic imagebitmap

added missing crates

added Vec and missing crates

Syntax fixes

Reformatting and minor error fixes

Implementation of  ImageBitmap

tidy-test runs

Took out extra parameters in reflect_dom_object call

added comments with specification links for webidl functions

changing the code based on review comments

adding resolved changes form the pull request

Changes based on pr review

Changes based on pr review

ran test-tidy and fmt

removed the duplicate crate

removed unnecessary crates

Kept only the relevant crate import

Updated test expectations, exposed interface list, and manifest
This commit is contained in:
santoshpavan 2020-03-15 14:54:23 -04:00 committed by Josh Matthews
parent 236762880c
commit 8c405546a2
8 changed files with 99 additions and 30 deletions

View file

@ -0,0 +1,58 @@
/* 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 https://mozilla.org/MPL/2.0/. */
use crate::dom::bindings::cell::DomRefCell;
use crate::dom::bindings::codegen::Bindings::ImageBitmapBinding::ImageBitmapMethods;
use crate::dom::bindings::root::DomRoot;
use crate::dom::globalscope::GlobalScope;
use crate::dom::bindings::error::Fallible;
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
use dom_struct::dom_struct;
use std::vec::Vec;
#[dom_struct]
pub struct ImageBitmap {
reflector_: Reflector,
width: u32,
height: u32,
bitmap_data: DomRefCell<Vec<u8>>,
}
impl ImageBitmap {
fn new_inherited(width_arg: u32, height_arg: u32) -> ImageBitmap {
ImageBitmap {
reflector_: Reflector::new(),
width: width_arg,
height: height_arg,
bitmap_data: DomRefCell::new(vec![]),
}
}
#[allow(dead_code)]
pub fn new(global: &GlobalScope, width: u32, height: u32) -> Fallible<DomRoot<ImageBitmap>> {
//assigning to a variable the return object of new_inherited
let imagebitmap = Box::new(ImageBitmap::new_inherited(width, height));
Ok(reflect_dom_object(imagebitmap, global))
}
}
impl ImageBitmapMethods for ImageBitmap {
// https://html.spec.whatwg.org/multipage/#dom-imagebitmap-height
fn Height(&self) -> u32 {
//to do: add a condition for checking detached internal slot
//and return 0 if set to true
self.height
}
// https://html.spec.whatwg.org/multipage/#dom-imagebitmap-width
fn Width(&self) -> u32 {
//to do: add a condition to check detached internal slot
////and return 0 if set to true
self.width
}
}

View file

@ -408,6 +408,7 @@ pub mod htmlulistelement;
pub mod htmlunknownelement;
pub mod htmlvideoelement;
pub mod identityhub;
pub mod imagebitmap;
pub mod imagedata;
pub mod inputevent;
pub mod keyboardevent;

View file

@ -0,0 +1,36 @@
/* 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 https://mozilla.org/MPL/2.0/. */
/*
* The origin of this IDL file is
* https://html.spec.whatwg.org/multipage/#imagebitmap
*
* © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera Software ASA.
* You are granted a license to use, reproduce and create derivative works of this document.
*/
//[Exposed=(Window,Worker), Serializable, Transferable]
[Exposed=(Window,Worker)]
interface ImageBitmap {
readonly attribute unsigned long width;
readonly attribute unsigned long height;
//void close();
};
typedef (CanvasImageSource or
Blob or
ImageData) ImageBitmapSource;
enum ImageOrientation { "none", "flipY" };
enum PremultiplyAlpha { "none", "premultiply", "default" };
enum ColorSpaceConversion { "none", "default" };
enum ResizeQuality { "pixelated", "low", "medium", "high" };
dictionary ImageBitmapOptions {
ImageOrientation imageOrientation = "none";
PremultiplyAlpha premultiplyAlpha = "default";
ColorSpaceConversion colorSpaceConversion = "default";
[EnforceRange] unsigned long resizeWidth;
[EnforceRange] unsigned long resizeHeight;
ResizeQuality resizeQuality = "low";
};

View file

@ -29,9 +29,6 @@
[SVGElement interface: attribute onmouseout]
expected: FAIL
[ImageBitmap interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getLineDash()" with the proper type]
expected: FAIL
@ -386,9 +383,6 @@
[DataTransferItemList interface object length]
expected: FAIL
[ImageBitmap interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
[DataTransfer interface: attribute items]
expected: FAIL
@ -662,9 +656,6 @@
[SVGAElement interface: attribute hostname]
expected: FAIL
[ImageBitmap interface object name]
expected: FAIL
[SVGElement interface: attribute oncut]
expected: FAIL
@ -824,9 +815,6 @@
[OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long)]
expected: FAIL
[ImageBitmap interface: existence and properties of interface prototype object]
expected: FAIL
[SVGElement interface: attribute onauxclick]
expected: FAIL
@ -974,15 +962,9 @@
[OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString)]
expected: FAIL
[ImageBitmap interface: existence and properties of interface object]
expected: FAIL
[History interface: attribute scrollRestoration]
expected: FAIL
[ImageBitmap interface: attribute height]
expected: FAIL
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "filter" with the proper type]
expected: FAIL
@ -1145,9 +1127,6 @@
[SVGSVGElement interface: attribute ononline]
expected: FAIL
[ImageBitmap interface: attribute width]
expected: FAIL
[DataTransfer interface: attribute types]
expected: FAIL
@ -1262,9 +1241,6 @@
[SVGElement interface: attribute onkeypress]
expected: FAIL
[ImageBitmap interface object length]
expected: FAIL
[OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
expected: FAIL

View file

@ -3,9 +3,6 @@
[The SharedWorker interface object should be exposed.]
expected: FAIL
[The ImageBitmap interface object should be exposed.]
expected: FAIL
[The CanvasPath interface object should be exposed.]
expected: FAIL
@ -56,4 +53,3 @@
[The IDBTransaction interface object should be exposed.]
expected: FAIL

View file

@ -13863,14 +13863,14 @@
]
],
"interfaces.html": [
"12f1d0b7f17be6575d4527423aed0ec845c4c2d5",
"dc9a1f5f378bc50487bfb7dc3db6d121d2f325ca",
[
null,
{}
]
],
"interfaces.worker.js": [
"c1223084790b2980c8184e3cd9ab5ae17bc8b303",
"a74a91489541ab99ae58001e3f63afc9ecc5c553",
[
"mozilla/interfaces.worker.html",
{}

View file

@ -161,6 +161,7 @@ test_interfaces([
"HTMLUnknownElement",
"HTMLVideoElement",
"ImageData",
"ImageBitmap",
"Image",
"InputEvent",
"KeyboardEvent",

View file

@ -35,6 +35,7 @@ test_interfaces([
"Headers",
"History",
"ImageData",
"ImageBitmap",
"MessageChannel",
"MessageEvent",
"MessagePort",