Auto merge of #26009 - SasiDharKM:master, r=jdm

Implementation for ImageBitmap

<!-- Please describe your changes on the following line: -->
Created the boilerplate code for the image bitmap implementation.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix #20650

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This commit is contained in:
bors-servo 2020-03-30 19:26:39 -04:00 committed by GitHub
commit 77b02393fb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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",