summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-ruby/support/ruby-dynamic-insertion.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/css/css-ruby/support/ruby-dynamic-insertion.js')
-rw-r--r--testing/web-platform/tests/css/css-ruby/support/ruby-dynamic-insertion.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-ruby/support/ruby-dynamic-insertion.js b/testing/web-platform/tests/css/css-ruby/support/ruby-dynamic-insertion.js
new file mode 100644
index 0000000000..0bf6cd9697
--- /dev/null
+++ b/testing/web-platform/tests/css/css-ruby/support/ruby-dynamic-insertion.js
@@ -0,0 +1,42 @@
+window.onload = function() {
+ // Force a reflow before any changes.
+ document.body.clientWidth;
+
+ var elems = document.querySelectorAll('[data-insert]');
+ Array.from(elems).forEach(function(e) {
+ var parent, ref;
+ switch (e.dataset.insert) {
+ case 'start':
+ parent = e;
+ ref = e.firstChild;
+ break;
+
+ case 'end':
+ parent = e;
+ ref = null;
+ break;
+
+ case 'before':
+ parent = e.parentNode;
+ ref = e;
+ break;
+
+ case 'after':
+ parent = e.parentNode;
+ ref = e.nextSibling;
+ break;
+ }
+
+ var elem, textnode;
+ if ('text' in e.dataset) {
+ textnode = document.createTextNode(e.dataset.text);
+ }
+ if ('tag' in e.dataset) {
+ elem = document.createElement(e.dataset.tag);
+ if (textnode) {
+ elem.appendChild(textnode);
+ }
+ }
+ parent.insertBefore(elem ? elem : textnode, ref);
+ });
+};