Remove unnecessary promise calls

Signed-off-by: Bentaimia Haddadi <haddadi.taym@gmail.com>
This commit is contained in:
Bentaimia Haddadi 2024-06-07 14:15:06 +02:00
parent 46b054a744
commit d15fbb5898

View file

@ -192,14 +192,8 @@ impl HTMLImageElement {
match self.current_request.borrow().state { match self.current_request.borrow().state {
// If image's current request's state is broken, then throw an "InvalidStateError" DOMException. // If image's current request's state is broken, then throw an "InvalidStateError" DOMException.
State::Broken => { State::Broken => Err(Error::InvalidState),
self.reject_image_decode_promises(); State::CompletelyAvailable => Ok(true),
Err(Error::InvalidState)
},
State::CompletelyAvailable => {
self.resolve_image_decode_promises();
Ok(true)
},
// If image is not fully decodable, then return bad. // If image is not fully decodable, then return bad.
State::PartiallyAvailable | State::Unavailable => Ok(false), State::PartiallyAvailable | State::Unavailable => Ok(false),
} }
@ -426,7 +420,6 @@ impl HTMLImageElement {
// Steps common to when an image has been loaded. // Steps common to when an image has been loaded.
fn handle_loaded_image(&self, image: Arc<Image>, url: ServoUrl) { fn handle_loaded_image(&self, image: Arc<Image>, url: ServoUrl) {
self.resolve_image_decode_promises();
self.current_request.borrow_mut().metadata = Some(ImageMetadata { self.current_request.borrow_mut().metadata = Some(ImageMetadata {
height: image.height, height: image.height,
width: image.width, width: image.width,
@ -437,6 +430,7 @@ impl HTMLImageElement {
LoadBlocker::terminate(&mut self.current_request.borrow_mut().blocker); LoadBlocker::terminate(&mut self.current_request.borrow_mut().blocker);
// Mark the node dirty // Mark the node dirty
self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage); self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage);
self.resolve_image_decode_promises();
} }
/// Step 24 of <https://html.spec.whatwg.org/multipage/#update-the-image-data> /// Step 24 of <https://html.spec.whatwg.org/multipage/#update-the-image-data>
@ -530,10 +524,6 @@ impl HTMLImageElement {
/// <https://html.spec.whatwg.org/multipage/#abort-the-image-request> /// <https://html.spec.whatwg.org/multipage/#abort-the-image-request>
fn abort_request(&self, state: State, request: ImageRequestPhase) { fn abort_request(&self, state: State, request: ImageRequestPhase) {
if matches!(state, State::Broken | State::Unavailable) {
self.reject_image_decode_promises();
}
let mut request = match request { let mut request = match request {
ImageRequestPhase::Current => self.current_request.borrow_mut(), ImageRequestPhase::Current => self.current_request.borrow_mut(),
ImageRequestPhase::Pending => self.pending_request.borrow_mut(), ImageRequestPhase::Pending => self.pending_request.borrow_mut(),
@ -542,6 +532,10 @@ impl HTMLImageElement {
request.state = state; request.state = state;
request.image = None; request.image = None;
request.metadata = None; request.metadata = None;
if matches!(state, State::Broken) {
self.reject_image_decode_promises();
}
} }
/// <https://html.spec.whatwg.org/multipage/#update-the-source-set> /// <https://html.spec.whatwg.org/multipage/#update-the-source-set>
@ -849,14 +843,7 @@ impl HTMLImageElement {
self.image_request.set(ImageRequestPhase::Pending); self.image_request.set(ImageRequestPhase::Pending);
self.init_image_request(&mut pending_request, url, src); self.init_image_request(&mut pending_request, url, src);
}, },
(_, State::Broken) => { (_, State::Broken) | (_, State::Unavailable) => {
self.reject_image_decode_promises();
// Step 17
current_request.current_pixel_density = Some(selected_pixel_density);
self.init_image_request(&mut current_request, url, src);
},
(_, State::Unavailable) => {
// Step 17 // Step 17
current_request.current_pixel_density = Some(selected_pixel_density); current_request.current_pixel_density = Some(selected_pixel_density);
self.init_image_request(&mut current_request, url, src); self.init_image_request(&mut current_request, url, src);
@ -1626,14 +1613,7 @@ impl HTMLImageElementMethods for HTMLImageElement {
let request = self.current_request.borrow(); let request = self.current_request.borrow();
let request_state = request.state; let request_state = request.state;
match request_state { match request_state {
State::CompletelyAvailable => { State::CompletelyAvailable | State::Broken => true,
self.resolve_image_decode_promises();
true
},
State::Broken => {
self.reject_image_decode_promises();
true
},
State::PartiallyAvailable | State::Unavailable => false, State::PartiallyAvailable | State::Unavailable => false,
} }
} }