diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs
index a472a7ed03e..9404b20a3c1 100644
--- a/components/script/dom/htmlimageelement.rs
+++ b/components/script/dom/htmlimageelement.rs
@@ -192,14 +192,8 @@ impl HTMLImageElement {
match self.current_request.borrow().state {
// If image's current request's state is broken, then throw an "InvalidStateError" DOMException.
- State::Broken => {
- self.reject_image_decode_promises();
- Err(Error::InvalidState)
- },
- State::CompletelyAvailable => {
- self.resolve_image_decode_promises();
- Ok(true)
- },
+ State::Broken => Err(Error::InvalidState),
+ State::CompletelyAvailable => Ok(true),
// If image is not fully decodable, then return bad.
State::PartiallyAvailable | State::Unavailable => Ok(false),
}
@@ -426,7 +420,6 @@ impl HTMLImageElement {
// Steps common to when an image has been loaded.
fn handle_loaded_image(&self, image: Arc, url: ServoUrl) {
- self.resolve_image_decode_promises();
self.current_request.borrow_mut().metadata = Some(ImageMetadata {
height: image.height,
width: image.width,
@@ -437,6 +430,7 @@ impl HTMLImageElement {
LoadBlocker::terminate(&mut self.current_request.borrow_mut().blocker);
// Mark the node dirty
self.upcast::().dirty(NodeDamage::OtherNodeDamage);
+ self.resolve_image_decode_promises();
}
/// Step 24 of
@@ -530,10 +524,6 @@ impl HTMLImageElement {
///
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 {
ImageRequestPhase::Current => self.current_request.borrow_mut(),
ImageRequestPhase::Pending => self.pending_request.borrow_mut(),
@@ -542,6 +532,10 @@ impl HTMLImageElement {
request.state = state;
request.image = None;
request.metadata = None;
+
+ if matches!(state, State::Broken) {
+ self.reject_image_decode_promises();
+ }
}
///
@@ -849,14 +843,7 @@ impl HTMLImageElement {
self.image_request.set(ImageRequestPhase::Pending);
self.init_image_request(&mut pending_request, url, src);
},
- (_, State::Broken) => {
- 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) => {
+ (_, State::Broken) | (_, State::Unavailable) => {
// Step 17
current_request.current_pixel_density = Some(selected_pixel_density);
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_state = request.state;
match request_state {
- State::CompletelyAvailable => {
- self.resolve_image_decode_promises();
- true
- },
- State::Broken => {
- self.reject_image_decode_promises();
- true
- },
+ State::CompletelyAvailable | State::Broken => true,
State::PartiallyAvailable | State::Unavailable => false,
}
}