mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 00:38:39 +09:00
Issue #2135 - Bug 1453789: Remove Element.createShadowRoot
This commit is contained in:
parent
010db07bf3
commit
45c179d01b
19 changed files with 25 additions and 521 deletions
|
|
@ -10,7 +10,7 @@
|
|||
}
|
||||
|
||||
connectedCallback() {
|
||||
let shadow = this.createShadowRoot();
|
||||
let shadow = this.attachShadow({ mode: "open" });
|
||||
if (this.template) {
|
||||
let te = document.createElement('template');
|
||||
te.innerHTML = this.template;
|
||||
|
|
|
|||
|
|
@ -1,16 +0,0 @@
|
|||
<!doctype html>
|
||||
<script>
|
||||
// Test for content redistribution outside of the document.
|
||||
// Passes if it doesn't assert.
|
||||
let host = document.createElement('div');
|
||||
host.innerHTML = "<div id='foo'></div>";
|
||||
|
||||
let shadowRoot = host.createShadowRoot();
|
||||
shadowRoot.innerHTML = "<content select='#foo'></content>";
|
||||
|
||||
host.firstElementChild.removeAttribute('id');
|
||||
|
||||
// Move to the document, do the same.
|
||||
document.documentElement.appendChild(host);
|
||||
host.firstElementChild.setAttribute('id', 'foo');
|
||||
</script>
|
||||
|
|
@ -484,6 +484,5 @@ load 1308793.svg
|
|||
load 1308848-1.html
|
||||
load 1308848-2.html
|
||||
asserts(0-1) load 1343606.html # bug 1343948
|
||||
load 1404789-1.html
|
||||
load 1404789-2.html
|
||||
load 1419762.html
|
||||
|
|
|
|||
|
|
@ -7,17 +7,15 @@
|
|||
<script>
|
||||
function insertShadowSVG() {
|
||||
var x = document.getElementById("x");
|
||||
if (x.createShadowRoot) {
|
||||
x.createShadowRoot();
|
||||
x.shadowRoot.innerHTML =
|
||||
'<svg width="50px" height="10px"> \
|
||||
<switch> \
|
||||
<foreignObject width="50px" height="50px"> \
|
||||
<div style="width: 100px; height: 10px; background: red;"></div> \
|
||||
</foreignObject> \
|
||||
</switch> \
|
||||
</svg>';
|
||||
}
|
||||
x.attachShadow({ mode: "open" });
|
||||
x.shadowRoot.innerHTML =
|
||||
'<svg width="50px" height="10px"> \
|
||||
<switch> \
|
||||
<foreignObject width="50px" height="50px"> \
|
||||
<div style="width: 100px; height: 10px; background: red;"></div> \
|
||||
</foreignObject> \
|
||||
</switch> \
|
||||
</svg>';
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
window.addEventListener("MozReftestInvalidate", insertShadowSVG, false);
|
||||
|
|
|
|||
|
|
@ -1,239 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html class="reftest-wait" lang="en-US">
|
||||
<head>
|
||||
<title>CSS Test: CSS display:contents; in Shadow DOM</title>
|
||||
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=907396">
|
||||
<link rel="help" href="http://dev.w3.org/csswg/css-display">
|
||||
<style>
|
||||
html,body {
|
||||
color:black; background-color:white; font-size:16px; padding:0; margin:0;
|
||||
}
|
||||
.before::before {content: "a ";}
|
||||
.after::after {content: " c";}
|
||||
div.before::before {content: "X ";}
|
||||
div.after::after {content: " Y";}
|
||||
.b,.c { display:contents; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="host1" class="before"></div>
|
||||
<span id="host2"></span>
|
||||
<div id="host3" class="after"></div>
|
||||
<div id="host4" class="before after"></div>
|
||||
<div id="host5" class="after"></div>
|
||||
<div id="host6" class="before"></div>
|
||||
<div id="host7"></div>
|
||||
<div id="host8" class="after"></div>
|
||||
<div id="host9" class="before after"></div>
|
||||
<div id="hostA" class="after"></div>
|
||||
<div id="hostB"></div>
|
||||
<div id="hostC"></div>
|
||||
<div id="hostD"></div>
|
||||
<div id="hostE"></div>
|
||||
<div id="hostF" class="before"></div>
|
||||
<div id="hostG"></div>
|
||||
<span id="hostH"></span>
|
||||
<div id="hostI"></div>
|
||||
<div id="hostJ"></div>
|
||||
<span id="hostK"></span>
|
||||
<div id="hostL"></div>
|
||||
<div id="hostM"><i>Two</i><b>One</b></div>
|
||||
<div id="hostN"><i class="c">Two</i><b>One</b></div>
|
||||
<div id="hostO"><i>Two</i><b class="c">One</b></div>
|
||||
<div id="hostP"><i class="c">Two</i><b class="c">One</b></div>
|
||||
<div id="hostQ" class="c" style="color:blue"><i class="c">Two</i><b class="c">One</b></div>Three
|
||||
<span id="hostR"><style scoped>:scope{color:green}</style></span>
|
||||
<div id="hostS" class="c"><span class="c">S</span></div>
|
||||
<div id="hostT" class="c">T</div>
|
||||
<div id="hostU"><span class="c">U</span></div>
|
||||
<div id="hostV" class="c" style="color:red"><b class="c" style="color:inherit">V</b></div>
|
||||
<!-- TODO(bug 1021572?) <div id="hostY" class="c" style="color:red"><b>Y</b></div> -->
|
||||
|
||||
<script>
|
||||
function shadow(id) {
|
||||
return document.getElementById(id).createShadowRoot();
|
||||
}
|
||||
function span(s) {
|
||||
var e = document.createElement("span");
|
||||
var t = document.createTextNode(s);
|
||||
e.appendChild(t);
|
||||
return e;
|
||||
}
|
||||
function text(s) {
|
||||
return document.createTextNode(s);
|
||||
}
|
||||
function contents(n) {
|
||||
var e = document.createElement("z");
|
||||
e.style.display = "contents";
|
||||
e.style.color = "blue";
|
||||
if (n) e.appendChild(n);
|
||||
return e;
|
||||
}
|
||||
|
||||
function run() {
|
||||
document.body.offsetHeight;
|
||||
|
||||
shadow("host1").innerHTML = '<content></content> c';
|
||||
shadow("host2").innerHTML = 'a <content style="display:contents"></content> c';
|
||||
shadow("host3").innerHTML = 'a <content style="display:contents"></content>';
|
||||
shadow("host4").innerHTML = '<content style="display:contents"></content>';
|
||||
shadow("host5").innerHTML = 'a <content style="display:contents"></content>';
|
||||
shadow("host6").innerHTML = '<z style="color:blue; display:contents"><content></content></z> c';
|
||||
shadow("host7").innerHTML = 'a <content style="display:contents"></content> c';
|
||||
shadow("host8").innerHTML = 'a <z style="color:blue; display:contents"><content style="display:contents"></z></content>';
|
||||
shadow("host9").innerHTML = '<content style="display:contents"></content>';
|
||||
shadow("hostA").innerHTML = 'a <content style="display:contents"></content>';
|
||||
shadow("hostB").innerHTML = 'a <content select=".c"></content> <content select=".b"></content> B';
|
||||
shadow("hostC").innerHTML = 'A <content select=".c"></content> <content select=".b"></content> B';
|
||||
shadow("hostD").innerHTML = 'A <content select=".c"></content> <content select=".b"></content> B <content select=".b"></content>';
|
||||
shadow("hostE").innerHTML = 'A <content select=".c"></content> <content select=".b"></content> B';
|
||||
shadow("hostF").innerHTML = '<content select=".c"></content> <content select=".b"></content> B';
|
||||
shadow("hostG").innerHTML = '<content select=".b"></content>';
|
||||
shadow("hostH").innerHTML = '<content select=".b"></content>';
|
||||
shadow("hostI").innerHTML = 'A<content select=".b"></content>';
|
||||
shadow("hostJ").innerHTML = 'A<content select=".b"></content>';
|
||||
shadow("hostK").innerHTML = '<content select=".b"></content>';
|
||||
shadow("hostL").innerHTML = '<content select=".b"></content>';
|
||||
shadow("hostM").innerHTML = '<content select="b"></content><content select="i"></content>';
|
||||
shadow("hostN").innerHTML = '<content select="b"></content><content select="i"></content>';
|
||||
shadow("hostO").innerHTML = '<content select="b"></content><content select="i"></content>';
|
||||
shadow("hostP").innerHTML = '<content select="b"></content><content select="i"></content>';
|
||||
shadow("hostQ").innerHTML = '<content select="b"></content><content select="i"></content>';
|
||||
shadow("hostR").innerHTML = '<content select="span"></content>';
|
||||
shadow("hostW").innerHTML = '<z style="color:red"><content select="b"></content></z>';
|
||||
shadow("hostX").innerHTML = '<z style="color:red"><content select="b"></content></z>';
|
||||
// TODO(bug 1021572?) shadow("hostY").innerHTML = '<content select="b"><style scoped>:scope{color:green}</style></content>';
|
||||
}
|
||||
|
||||
function tweak() {
|
||||
document.body.offsetHeight;
|
||||
|
||||
host1.appendChild(span("1"));
|
||||
host2.appendChild(text("2"));
|
||||
host3.appendChild(span("3"));
|
||||
host4.appendChild(text("4"));
|
||||
|
||||
var e = span("5");
|
||||
e.style.display = "contents";
|
||||
host5.appendChild(e);
|
||||
|
||||
host6.appendChild(span("6"));
|
||||
host7.appendChild(contents(text("7")));
|
||||
host8.appendChild(contents(span("8")));
|
||||
host9.appendChild(contents(text("9")));
|
||||
|
||||
var e = contents(span("A"));
|
||||
e.style.display = "contents";
|
||||
hostA.appendChild(e);
|
||||
|
||||
var e = contents(text("2"));
|
||||
e.className = "b";
|
||||
hostB.appendChild(e);
|
||||
var e = contents(text("1"));
|
||||
e.className = "c";
|
||||
hostB.appendChild(e);
|
||||
|
||||
var e = contents(text("2"));
|
||||
e.className = "b after";
|
||||
hostC.appendChild(e);
|
||||
var e = contents(text("1"));
|
||||
e.className = "c before";
|
||||
hostC.appendChild(e);
|
||||
|
||||
var e = contents(text("2"));
|
||||
e.className = "b before after";
|
||||
hostD.appendChild(e);
|
||||
var e = contents(text(" 3"));
|
||||
e.className = "b before after";
|
||||
hostD.appendChild(e);
|
||||
var e = contents(text("1"));
|
||||
e.className = "c before";
|
||||
hostD.appendChild(e);
|
||||
|
||||
var e = contents(contents(text("2")));
|
||||
e.className = "before b after";
|
||||
hostE.appendChild(e);
|
||||
var e2 = contents(text("1"));
|
||||
e2.className = "c before after";
|
||||
hostE.insertBefore(e2, e);
|
||||
|
||||
var e = contents(text("2"));
|
||||
e.className = "before b after";
|
||||
hostF.appendChild(e);
|
||||
var e2 = contents(text("1"));
|
||||
e2.className = "c before after";
|
||||
hostF.insertBefore(e2, e);
|
||||
|
||||
var e = contents(contents(text("1")));
|
||||
e.className = "b";
|
||||
hostG.appendChild(e);
|
||||
var e = contents(text("2"));
|
||||
e.className = "b before after";
|
||||
hostG.appendChild(e);
|
||||
|
||||
var e = contents(contents(text("2")));
|
||||
e.className = "b";
|
||||
hostH.appendChild(e);
|
||||
var e2 = contents(text("1"));
|
||||
e2.className = "b before after";
|
||||
hostH.insertBefore(e2, e);
|
||||
|
||||
var e = contents(text("b"));
|
||||
e.className = "b";
|
||||
hostI.appendChild(e);
|
||||
var e = span("c");
|
||||
e.className = "b";
|
||||
hostI.appendChild(e);
|
||||
|
||||
var e = contents(contents(text("b")));
|
||||
e.className = "b";
|
||||
hostJ.appendChild(e);
|
||||
var e = span("c");
|
||||
e.className = "b";
|
||||
hostJ.appendChild(e);
|
||||
|
||||
var inner = span("b");
|
||||
inner.className = "after";
|
||||
var e = contents(contents(inner));
|
||||
e.className = "b";
|
||||
hostK.appendChild(e);
|
||||
var e = span("d");
|
||||
e.className = "b";
|
||||
hostK.appendChild(e);
|
||||
|
||||
var inner = contents(null);
|
||||
inner.className = "before";
|
||||
var e = contents(inner);
|
||||
e.className = "b";
|
||||
hostL.appendChild(e);
|
||||
var e = span("b");
|
||||
e.className = "b";
|
||||
hostL.appendChild(e);
|
||||
|
||||
hostR.appendChild(span("R"));
|
||||
|
||||
document.body.offsetHeight;
|
||||
setTimeout(function() {
|
||||
shadow("hostS");
|
||||
shadow("hostT");
|
||||
shadow("hostU");
|
||||
shadow("hostV").innerHTML = '<z style="color:green"><content select="b"></content></z>';
|
||||
|
||||
document.body.offsetHeight;
|
||||
document.documentElement.removeAttribute("class");
|
||||
},0);
|
||||
}
|
||||
|
||||
if (document.body.createShadowRoot) {
|
||||
run();
|
||||
window.addEventListener("MozReftestInvalidate", tweak, false);
|
||||
} else {
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -17,7 +17,6 @@ pref(layout.css.display-contents.enabled,true) == display-contents-visibility-hi
|
|||
pref(layout.css.display-contents.enabled,true) == display-contents-visibility-hidden-2.html display-contents-visibility-hidden-ref.html
|
||||
pref(layout.css.display-contents.enabled,true) == display-contents-495385-2d.html display-contents-495385-2d-ref.html
|
||||
pref(layout.css.display-contents.enabled,true) == display-contents-xbl.xhtml display-contents-xbl-ref.html
|
||||
pref(layout.css.display-contents.enabled,true) pref(dom.webcomponents.enabled,true) == display-contents-shadow-dom-1.html display-contents-shadow-dom-1-ref.html
|
||||
pref(layout.css.display-contents.enabled,true) == display-contents-xbl-2.xul display-contents-xbl-2-ref.xul
|
||||
asserts(1) pref(layout.css.display-contents.enabled,true) == display-contents-xbl-3.xul display-contents-xbl-3-ref.xul # bug 1089223
|
||||
skip pref(layout.css.display-contents.enabled,true) == display-contents-xbl-4.xul display-contents-xbl-4-ref.xul # fails (not just asserts) due to bug 1089223
|
||||
|
|
|
|||
|
|
@ -7,11 +7,9 @@
|
|||
<script>
|
||||
function insertShadowMathML() {
|
||||
var x = document.getElementById("x");
|
||||
if (x.createShadowRoot) {
|
||||
x.createShadowRoot();
|
||||
x.shadowRoot.innerHTML =
|
||||
'<math><msup><mi>X</mi><mi>X</mi></msup></math>';
|
||||
}
|
||||
x.attachShadow({ mode: "open" });
|
||||
x.shadowRoot.innerHTML =
|
||||
'<math><msup><mi>X</mi><mi>X</mi></msup></math>';
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
window.addEventListener("MozReftestInvalidate", insertShadowMathML, false);
|
||||
|
|
|
|||
|
|
@ -3,13 +3,8 @@
|
|||
<head>
|
||||
<script>
|
||||
function tweak() {
|
||||
if (!document.body.createShadowRoot) {
|
||||
document.documentElement.className = "";
|
||||
return;
|
||||
}
|
||||
|
||||
var host = document.getElementById("host");
|
||||
var shadow = host.createShadowRoot();
|
||||
var shadow = host.attachShadow({ mode: "open" });
|
||||
|
||||
var textNode = document.createTextNode(" World");
|
||||
shadow.appendChild(textNode);
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ window.GaiaSwitch = (function(win) {
|
|||
// Extend from the HTMLElement prototype
|
||||
class GaiaSwitch extends HTMLElement {
|
||||
connectedCallback() {
|
||||
var shadow = this.createShadowRoot();
|
||||
var shadow = this.attachShadow({ mode: "open" });
|
||||
this._template = template.content.cloneNode(true);
|
||||
this._input = this._template.querySelector('input[type="checkbox"]');
|
||||
|
||||
|
|
@ -104,7 +104,7 @@ window.GaiaSwitch = (function(win) {
|
|||
var template = document.createElement('template');
|
||||
template.innerHTML = '<label id="switch-label" class="pack-switch">' +
|
||||
'<input type="checkbox">' +
|
||||
'<span><content select="label"></content></span>' +
|
||||
'<span><slot></slot></span>' +
|
||||
'</label>';
|
||||
|
||||
// Register and return the constructor
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<script>
|
||||
window.onload = function() {
|
||||
var div = document.querySelector("div");
|
||||
var shadow = div.createShadowRoot();
|
||||
var shadow = div.attachShadow({ mode: "open" });
|
||||
shadow.innerHTML = "<p style='display: none'><span><i>x</i></span></p>";
|
||||
var p = shadow.lastChild;
|
||||
var span = p.firstChild;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue