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::document::Document;
|
||||||
use crate::dom::element::{reflect_cross_origin_attribute, set_cross_origin_attribute};
|
use crate::dom::element::{reflect_cross_origin_attribute, set_cross_origin_attribute};
|
||||||
use crate::dom::element::{AttributeMutation, Element, RawLayoutElementHelpers};
|
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::eventtarget::EventTarget;
|
||||||
use crate::dom::globalscope::GlobalScope;
|
use crate::dom::globalscope::GlobalScope;
|
||||||
use crate::dom::htmlareaelement::HTMLAreaElement;
|
use crate::dom::htmlareaelement::HTMLAreaElement;
|
||||||
|
@ -37,7 +37,6 @@ use crate::dom::node::{
|
||||||
document_from_node, window_from_node, BindContext, Node, NodeDamage, ShadowIncluding,
|
document_from_node, window_from_node, BindContext, Node, NodeDamage, ShadowIncluding,
|
||||||
};
|
};
|
||||||
use crate::dom::performanceresourcetiming::InitiatorType;
|
use crate::dom::performanceresourcetiming::InitiatorType;
|
||||||
use crate::dom::progressevent::ProgressEvent;
|
|
||||||
use crate::dom::values::UNSIGNED_LONG_MAX;
|
use crate::dom::values::UNSIGNED_LONG_MAX;
|
||||||
use crate::dom::virtualmethods::VirtualMethods;
|
use crate::dom::virtualmethods::VirtualMethods;
|
||||||
use crate::dom::window::Window;
|
use crate::dom::window::Window;
|
||||||
|
@ -809,26 +808,7 @@ impl HTMLImageElement {
|
||||||
return;
|
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
|
// Step 11
|
||||||
let base_url = document.base_url();
|
let base_url = document.base_url();
|
||||||
let parsed_url = base_url.join(&src.0);
|
let parsed_url = base_url.join(&src.0);
|
||||||
|
@ -850,7 +830,6 @@ impl HTMLImageElement {
|
||||||
current_request.source_url = Some(USVString(src))
|
current_request.source_url = Some(USVString(src))
|
||||||
}
|
}
|
||||||
this.upcast::<EventTarget>().fire_event(atom!("error"));
|
this.upcast::<EventTarget>().fire_event(atom!("error"));
|
||||||
this.upcast::<EventTarget>().fire_event(atom!("loadend"));
|
|
||||||
|
|
||||||
// FIXME(nox): According to the spec, setting the current
|
// FIXME(nox): According to the spec, setting the current
|
||||||
// request to the broken state is done prior to queuing a
|
// request to the broken state is done prior to queuing a
|
||||||
|
|
|
@ -640951,7 +640951,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"html/semantics/embedded-content/the-img-element/invalid-src.html": [
|
"html/semantics/embedded-content/the-img-element/invalid-src.html": [
|
||||||
"c3c57ee3c0a05019be4db6650eeefdd53648401e",
|
"37ea8ce754a3feaa3e305f10899632d231c92363",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"html/semantics/embedded-content/the-img-element/ismap/img-ismap-coordinates-iframe-after.html": [
|
"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) {
|
async_test(function(t) {
|
||||||
var img = document.getElementById("brokenurl");
|
var img = document.getElementById("brokenurl");
|
||||||
img.src = "http://[";
|
img.src = "http://[";
|
||||||
var errorevent = false;
|
|
||||||
var loadendevent = false;
|
|
||||||
|
|
||||||
// The errors should be queued in the event loop, so they should only trigger
|
// 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
|
// after this block of code finishes, not during the img.src setter itself
|
||||||
img.addEventListener('error', t.step_func(function() {
|
img.addEventListener('error', t.step_func(function() {
|
||||||
assert_false(loadendevent, "loadend should fire after error");
|
t.step_timeout(t.step_func_done(), 0);
|
||||||
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;
|
|
||||||
}));
|
}));
|
||||||
}, 'src="http://["');
|
}, 'src="http://["');
|
||||||
|
|
||||||
async_test(function(t) {
|
async_test(function(t) {
|
||||||
var img = document.getElementById("emptysrc");
|
var img = document.getElementById("emptysrc");
|
||||||
img.src = "";
|
img.src = "";
|
||||||
var loadendevent = false;
|
|
||||||
|
|
||||||
// Setting src to empty string triggers only error event.
|
// Setting src to empty string triggers only error event.
|
||||||
// The errors should be queued in the event loop, so they should only trigger
|
// 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
|
// after this block of code finishes, not during the img.src setter itself
|
||||||
img.addEventListener('error', t.step_func(function() {
|
img.addEventListener('error', t.step_func(function() {
|
||||||
// Queue this check in the event loop to check there is no loadend event
|
t.step_timeout(t.step_func_done(), 0);
|
||||||
// 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;
|
|
||||||
}));
|
}));
|
||||||
}, 'src=""');
|
}, 'src=""');
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue