| Index: third_party/WebKit/LayoutTests/http/tests/subresource_filter/picture-disallowed.html
|
| diff --git a/third_party/WebKit/LayoutTests/http/tests/subresource_filter/picture-disallowed.html b/third_party/WebKit/LayoutTests/http/tests/subresource_filter/picture-disallowed.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b7b0346abea958a346324fda7c9f427423fe6de0
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/http/tests/subresource_filter/picture-disallowed.html
|
| @@ -0,0 +1,55 @@
|
| +<!DOCTYPE html>
|
| +<script src="../resources/testharness.js"></script>
|
| +<script src="../resources/testharnessreport.js"></script>
|
| +<body>
|
| +<script type="text/javascript">
|
| +// Verify that the resource selection algorithm for <img> elements nested into
|
| +// <picture> elements runs first, and only then is subresource filtering applied
|
| +// to the selected resource.
|
| +
|
| +if (window.testRunner) {
|
| + // Inject a subresource filter to disallow 'beta.png' (but not 'alpha.png').
|
| + testRunner.setDisallowedSubresourcePathSuffixes(["beta.png"]);
|
| +}
|
| +
|
| +function createPicture(selectedSourceUrl, notSelectedSourceUrl) {
|
| + let p = document.createElement("picture");
|
| + let s1 = document.createElement("source");
|
| + s1.srcset = notSelectedSourceUrl;
|
| + s1.type = "not-supported-type/to-disable-this-source";
|
| + p.append(s1);
|
| + let s2 = document.createElement("source");
|
| + s2.srcset = selectedSourceUrl;
|
| + s2.type = "image/png";
|
| + p.append(s2);
|
| + let i = document.createElement("img");
|
| + i.src = "totally-not-existing-image";
|
| + p.append(i);
|
| + return p;
|
| +}
|
| +
|
| +async_test(t => {
|
| + let p = createPicture("resources/alpha.png", "resources/beta.png");
|
| + let i = p.lastChild;
|
| + i.onerror = t.unreached_func();
|
| + i.onload = t.step_func_done(_ => {
|
| + assert_equals(i.clientWidth, 100, "Images that are not disallowed should be displayed at their natural width.");
|
| + assert_equals(i.clientHeight, 100, "Images that are not disallowed should be displayed at their natural height.");
|
| + });
|
| + document.body.append(p);
|
| +}, "Images whose selected source URL is not disallowed should still be displayed as normal.");
|
| +
|
| +async_test(t => {
|
| + let p = createPicture("resources/beta.png", "resources/alpha.png");
|
| + let i = p.lastChild;
|
| + i.onload = t.unreached_func();
|
| + i.onerror = t.step_func_done(_ => {
|
| + assert_equals(i.clientWidth, 0, "Images that are disallowed should be collapsed.");
|
| + assert_equals(i.clientHeight, 0, "Images that are disallowed should be collapsed.");
|
| + assert_equals(i.naturalWidth, 0, "Images that are disallowed should not be loaded.");
|
| + assert_equals(i.naturalHeight, 0, "Images that are disallowed should not be loaded.");
|
| + });
|
| + document.body.append(p);
|
| +}, "Images whose selected source URL is disallowed should not be loaded and should be collapsed in the layout.");
|
| +
|
| +</script>
|
|
|