mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Implement ImageBitmap.close
(#34124)
* Implement ImageBitmap.close Signed-off-by: Simon Wülker <simon.wuelker@arcor.de> * Update WPT expectations Signed-off-by: Simon Wülker <simon.wuelker@arcor.de> --------- Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This commit is contained in:
parent
e93544c003
commit
e5cc7ad235
4 changed files with 36 additions and 16 deletions
|
@ -19,7 +19,11 @@ pub struct ImageBitmap {
|
|||
reflector_: Reflector,
|
||||
width: u32,
|
||||
height: u32,
|
||||
bitmap_data: DomRefCell<Vec<u8>>,
|
||||
/// The actual pixel data of the bitmap
|
||||
///
|
||||
/// If this is `None`, then the bitmap data has been released by calling
|
||||
/// [`close`](https://html.spec.whatwg.org/multipage/#dom-imagebitmap-close)
|
||||
bitmap_data: DomRefCell<Option<Vec<u8>>>,
|
||||
origin_clean: Cell<bool>,
|
||||
}
|
||||
|
||||
|
@ -29,7 +33,7 @@ impl ImageBitmap {
|
|||
reflector_: Reflector::new(),
|
||||
width: width_arg,
|
||||
height: height_arg,
|
||||
bitmap_data: DomRefCell::new(vec![]),
|
||||
bitmap_data: DomRefCell::new(Some(vec![])),
|
||||
origin_clean: Cell::new(true),
|
||||
}
|
||||
}
|
||||
|
@ -43,26 +47,48 @@ impl ImageBitmap {
|
|||
}
|
||||
|
||||
pub fn set_bitmap_data(&self, data: Vec<u8>) {
|
||||
*self.bitmap_data.borrow_mut() = data;
|
||||
*self.bitmap_data.borrow_mut() = Some(data);
|
||||
}
|
||||
|
||||
pub fn set_origin_clean(&self, origin_is_clean: bool) {
|
||||
self.origin_clean.set(origin_is_clean);
|
||||
}
|
||||
|
||||
/// Return the value of the [`[[Detached]]`](https://html.spec.whatwg.org/multipage/#detached)
|
||||
/// internal slot
|
||||
fn is_detached(&self) -> bool {
|
||||
self.bitmap_data.borrow().is_none()
|
||||
}
|
||||
}
|
||||
|
||||
impl ImageBitmapMethods for ImageBitmap {
|
||||
// https://html.spec.whatwg.org/multipage/#dom-imagebitmap-height
|
||||
/// <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
|
||||
// Step 1. If this's [[Detached]] internal slot's value is true, then return 0.
|
||||
if self.is_detached() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Step 2. Return this's height, in CSS pixels.
|
||||
self.height
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-imagebitmap-width
|
||||
/// <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
|
||||
// Step 1. If this's [[Detached]] internal slot's value is true, then return 0.
|
||||
if self.is_detached() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Step 2. Return this's width, in CSS pixels.
|
||||
self.width
|
||||
}
|
||||
|
||||
/// <https://html.spec.whatwg.org/multipage/#dom-imagebitmap-close>
|
||||
fn Close(&self) {
|
||||
// Step 1. Set this's [[Detached]] internal slot value to true.
|
||||
// Step 2. Unset this's bitmap data.
|
||||
// NOTE: The existence of the bitmap data is the internal slot in our implementation
|
||||
self.bitmap_data.borrow_mut().take();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue