Auto merge of #22001 - servo-wpt-sync:wpt_update_22-10-2018, r=jdm

Sync WPT with upstream (22-10-2018)

Automated downstream sync of changes from upstream as of 22-10-2018.
[no-wpt-sync]

<!-- 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/22001)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2018-10-23 14:12:36 -04:00 committed by GitHub
commit 17576964d3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
118 changed files with 3269 additions and 703 deletions

View file

@ -0,0 +1,52 @@
n<!DOCTYPE html>
<meta charset=utf-8>
<title>Test that &lt;object&gt; renders its own fallback.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<script>
// The host exists but the resource is unavailable.
const cross_origin_url_a = "http://{{hosts[alt][www]}}:{{ports[http][0]}}/foo.html";
// The destination does not even exist and the navigation fails.
const cross_origin_url_b = "http://{{hosts[alt][nonexistent]}}:{{ports[http][0]}}/foo.html";
// Returns a promise which is resolved when |callback| returns true. The |callback| is invoked at
// every animation frame.
function for_each_animation_frame(callback) {
return new Promise((resolve) => {
function on_raf() {
if (!callback())
resolve();
window.requestAnimationFrame(on_raf);
}
window.requestAnimationFrame(on_raf);
});
}
// Create an <object> with some fallback content.
function create_object_with_fallback(url) {
var object = document.createElement("object");
var fallback = document.createElement("button");
fallback.textContent = "FALLBACK CONTENT";
object.appendChild(fallback);
object.data = url;
object.type = "text/html";
document.body.appendChild(object);
return object;
}
function area(el) {
let bounds = el.getBoundingClientRect();
return el.width * el.height;
}
promise_test(async() => {
var object = create_object_with_fallback(cross_origin_url_a);
await for_each_animation_frame(() => area(object.firstChild) > 0);
object.parentElement.removeChild(object);
object = create_object_with_fallback(cross_origin_url_b);
await for_each_animation_frame(() => area(object.firstChild) > 0);
object.parentElement.removeChild(object);
}, "Verify fallback content for failed cross-origin navigations is shown correctly.");
</script>
</body>