mirror of
https://github.com/servo/servo.git
synced 2025-08-12 08:55:32 +01:00
Auto merge of #15771 - jdm:img-panic, r=nox
Improve behaviour of image elements that perform multiple requests This addresses cases where image elements end up making multiple requests, as well as makes the element respond to additional relevant mutations that trigger updating the image data. --- - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #15709 (github issue number if applicable). - [X] There are tests for these changes <!-- 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/15771) <!-- Reviewable:end -->
This commit is contained in:
commit
f90fc2fa88
10 changed files with 173 additions and 34 deletions
|
@ -8337,6 +8337,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"html/semantics/embedded-content/the-img-element/document-adopt-base-url.html": [
|
||||
[
|
||||
"/html/semantics/embedded-content/the-img-element/document-adopt-base-url.html",
|
||||
[
|
||||
[
|
||||
"/html/semantics/embedded-content/the-img-element/document-base-url-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"html/semantics/embedded-content/the-img-element/document-base-url.html": [
|
||||
[
|
||||
"/html/semantics/embedded-content/the-img-element/document-base-url.html",
|
||||
|
@ -93287,6 +93299,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"html/semantics/embedded-content/the-img-element/delay-load-event.html": [
|
||||
[
|
||||
"/html/semantics/embedded-content/the-img-element/delay-load-event.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html": [
|
||||
[
|
||||
"/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html",
|
||||
|
@ -176314,6 +176332,14 @@
|
|||
"bdbfbe9a5908c6233bd7b9697a0762bd2e0f6ede",
|
||||
"testharness"
|
||||
],
|
||||
"html/semantics/embedded-content/the-img-element/delay-load-event.html": [
|
||||
"e4782535af755b29864fd3de67bbdd0de13f19d7",
|
||||
"testharness"
|
||||
],
|
||||
"html/semantics/embedded-content/the-img-element/document-adopt-base-url.html": [
|
||||
"a4b542eb344cca6bdcceceb3aa7006e900f5400f",
|
||||
"reftest"
|
||||
],
|
||||
"html/semantics/embedded-content/the-img-element/document-base-url-ref.html": [
|
||||
"add78257076d22891334b93c8072d098ace9b6eb",
|
||||
"support"
|
||||
|
|
|
@ -12892,6 +12892,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"mozilla/img_multiple_request.html": [
|
||||
[
|
||||
"/_mozilla/mozilla/img_multiple_request.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"mozilla/img_width_height.html": [
|
||||
[
|
||||
"/_mozilla/mozilla/img_width_height.html",
|
||||
|
@ -25375,6 +25381,10 @@
|
|||
"3c4f36abed83367c851d943b1f25b8394de6fe75",
|
||||
"testharness"
|
||||
],
|
||||
"mozilla/img_multiple_request.html": [
|
||||
"0a6263ad87c9b3307f2dc694747b094a0517b79b",
|
||||
"testharness"
|
||||
],
|
||||
"mozilla/img_width_height.html": [
|
||||
"37a04735261a6d2b36c3d529ce81eda46ed6967e",
|
||||
"testharness"
|
||||
|
|
25
tests/wpt/mozilla/tests/mozilla/img_multiple_request.html
Normal file
25
tests/wpt/mozilla/tests/mozilla/img_multiple_request.html
Normal file
|
@ -0,0 +1,25 @@
|
|||
<html>
|
||||
<head>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
async_test(function(t) {
|
||||
var i = new Image();
|
||||
i.src = "2x2.png";
|
||||
i.src = "2x2.png";
|
||||
i.onload = t.step_func(function() {
|
||||
i.onload = this.unreached_func("Load event for aborted request.");
|
||||
t.step_timeout(t.step_func_done(), 100);
|
||||
});
|
||||
}, "Multiple requests for the same URL do not trigger multiple load events.");
|
||||
|
||||
async_test(function(t) {
|
||||
var i = new Image();
|
||||
i.src = "test.png";
|
||||
i.src = "2x2.png";
|
||||
i.onload = t.step_func(function() {
|
||||
i.onload = this.unreached_func("Load event for aborted request.");
|
||||
t.step_timeout(t.step_func_done(), 100);
|
||||
});
|
||||
}, "Multiple requests for different URL do not trigger multiple load events.");
|
||||
</script>
|
|
@ -0,0 +1,17 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Image element delays window's load event</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<img src="resources/cat.jpg?pipe=trickle(d2)">
|
||||
<script>
|
||||
async_test(function(t) {
|
||||
var saw_img_load = false;
|
||||
document.querySelector('img').onload = t.step_func(function() {
|
||||
saw_img_load = true;
|
||||
});
|
||||
addEventListener('load', t.step_func_done(function() {
|
||||
assert_true(saw_img_load);
|
||||
}));
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset="utf-8">
|
||||
<title>Document base URL adopted img test</title>
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-img-element" />
|
||||
<link rel="match" href="document-base-url-ref.html">
|
||||
<base href="resources/" />
|
||||
<iframe></iframe>
|
||||
<script>
|
||||
var iframe = document.querySelector('iframe');
|
||||
var i = iframe.contentDocument.createElement('img');
|
||||
i.src = "cat.jpg";
|
||||
document.body.appendChild(i);
|
||||
iframe.remove();
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue