From 896a2de2acce3e62ce824292099516547e31a303 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Fri, 30 Nov 2018 14:49:19 -0500 Subject: [PATCH] Ensure that any image tasks queued before a cached image is available are ignored. --- components/script/dom/htmlimageelement.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index b07166fde81..9abb640f105 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -964,6 +964,9 @@ impl HTMLImageElement { CanRequestImages::No, ); if let Ok(ImageOrMetadataAvailable::ImageAvailable(image, url)) = response { + // Cancel any outstanding tasks that were queued before the src was + // set on this element. + self.generation.set(self.generation.get() + 1); // Step 6.3 let metadata = ImageMetadata { height: image.height, @@ -971,7 +974,7 @@ impl HTMLImageElement { }; // Step 6.3.2 abort requests self.abort_request(State::CompletelyAvailable, ImageRequestPhase::Current); - self.abort_request(State::CompletelyAvailable, ImageRequestPhase::Pending); + self.abort_request(State::Unavailable, ImageRequestPhase::Pending); let mut current_request = self.current_request.borrow_mut(); current_request.final_url = Some(url); current_request.image = Some(image.clone());