Skip to content

Commit

Permalink
Auto merge of #24044 - Eijebong:img-element-spec-update, r=jdm
Browse files Browse the repository at this point in the history
Remove <img>'s historical progress events

Fixes #24011

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/24044)
<!-- Reviewable:end -->
  • Loading branch information
bors-servo committed Sep 3, 2019
2 parents dd5dda6 + 84898bc commit 4f4e219
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 48 deletions.
25 changes: 2 additions & 23 deletions components/script/dom/htmlimageelement.rs
Expand Up @@ -22,7 +22,7 @@ use crate::dom::bindings::str::{DOMString, USVString};
use crate::dom::document::Document;
use crate::dom::element::{reflect_cross_origin_attribute, set_cross_origin_attribute};
use crate::dom::element::{AttributeMutation, Element, RawLayoutElementHelpers};
use crate::dom::event::{Event, EventBubbles, EventCancelable};
use crate::dom::event::Event;
use crate::dom::eventtarget::EventTarget;
use crate::dom::globalscope::GlobalScope;
use crate::dom::htmlareaelement::HTMLAreaElement;
Expand All @@ -37,7 +37,6 @@ use crate::dom::node::{
document_from_node, window_from_node, BindContext, Node, NodeDamage, ShadowIncluding,
};
use crate::dom::performanceresourcetiming::InitiatorType;
use crate::dom::progressevent::ProgressEvent;
use crate::dom::values::UNSIGNED_LONG_MAX;
use crate::dom::virtualmethods::VirtualMethods;
use crate::dom::window::Window;
Expand Down Expand Up @@ -809,26 +808,7 @@ impl HTMLImageElement {
return;
},
};
// Step 10.
let target = Trusted::new(self.upcast::<EventTarget>());
// FIXME(nox): Why are errors silenced here?
let _ = task_source.queue(
task!(fire_progress_event: move || {
let target = target.root();

let event = ProgressEvent::new(
&target.global(),
atom!("loadstart"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable,
false,
0,
0,
);
event.upcast::<Event>().fire(&target);
}),
window.upcast(),
);

// Step 11
let base_url = document.base_url();
let parsed_url = base_url.join(&src.0);
Expand All @@ -850,7 +830,6 @@ impl HTMLImageElement {
current_request.source_url = Some(USVString(src))
}
this.upcast::<EventTarget>().fire_event(atom!("error"));
this.upcast::<EventTarget>().fire_event(atom!("loadend"));

// FIXME(nox): According to the spec, setting the current
// request to the broken state is done prior to queuing a
Expand Down
2 changes: 1 addition & 1 deletion tests/wpt/metadata/MANIFEST.json
Expand Up @@ -640951,7 +640951,7 @@
"support"
],
"html/semantics/embedded-content/the-img-element/invalid-src.html": [
"c3c57ee3c0a05019be4db6650eeefdd53648401e",
"37ea8ce754a3feaa3e305f10899632d231c92363",
"testharness"
],
"html/semantics/embedded-content/the-img-element/ismap/img-ismap-coordinates-iframe-after.html": [
Expand Down

This file was deleted.

Expand Up @@ -9,41 +9,23 @@
async_test(function(t) {
var img = document.getElementById("brokenurl");
img.src = "http://[";
var errorevent = false;
var loadendevent = false;

// The errors should be queued in the event loop, so they should only trigger
// after this block of code finishes, not during the img.src setter itself
img.addEventListener('error', t.step_func(function() {
assert_false(loadendevent, "loadend should fire after error");
errorevent = true;
t.step_timeout(t.step_func_done(function() {
assert_true(loadendevent, "loadend event fired");
}), 0);
}));
img.addEventListener('loadend', t.step_func(function() {
assert_true(errorevent, "error event fired");
loadendevent = true;
t.step_timeout(t.step_func_done(), 0);
}));
}, 'src="http://["');

async_test(function(t) {
var img = document.getElementById("emptysrc");
img.src = "";
var loadendevent = false;

// Setting src to empty string triggers only error event.
// The errors should be queued in the event loop, so they should only trigger
// after this block of code finishes, not during the img.src setter itself
img.addEventListener('error', t.step_func(function() {
// Queue this check in the event loop to check there is no loadend event
// fired.
t.step_timeout(t.step_func_done(function() {
assert_false(loadendevent, "loadend event should not be fired");
}), 0);
}));
img.addEventListener('loadend', t.step_func(function() {
loadendevent = true;
t.step_timeout(t.step_func_done(), 0);
}));
}, 'src=""');

Expand Down

0 comments on commit 4f4e219

Please sign in to comment.