mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Auto merge of #24044 - Eijebong:img-element-spec-update, r=jdm
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 -->
This commit is contained in:
commit
4f4e219e54
4 changed files with 4 additions and 47 deletions
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
|
|
@ -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": [
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[historical-progress-event.window.html]
|
||||
[<img> does not support ProgressEvent or loadstart/progress/loadend]
|
||||
expected: FAIL
|
||||
|
|
@ -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=""');
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue