| <!doctype html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <link rel="stylesheet" href="/filez/_main/third_party/js/qunit/qunit.css"> |
| <script src="/filez/_main/third_party/js/qunit/qunit.js"></script> |
| <script src="/filez/_main/third_party/js/qunit/qunit_test_runner.js"></script> |
| <script src="../test_bootstrap.js"></script> |
| <script type="text/javascript"> |
| goog.require('bot.dom'); |
| </script> |
| </head> |
| <body> |
| <div id="qunit"></div> |
| <div id="qunit-fixture"></div> |
| |
| <h1>Page for Shadow DOM tests</h1> |
| |
| <div id="is-shown">Foo</div> |
| <div id="is-shown-in-shadow"></div> |
| <div id="is-shown-directly-in-shadow"></div> |
| <div id="is-shown-in-slot"><div>Foo</div></div> |
| |
| <div id="get-parent"><div></div></div> |
| <div id="get-parent-slot"><div></div></div> |
| |
| <div id="get-text">Foo</div> |
| <div id="get-text-shadow"></div> |
| <div id="get-text-slot">Foo</div> |
| <div id="get-text-slots"> |
| <div slot="a">Foo</div> |
| <div slot="b">Bar</div> |
| <div slot="c">Baz</div> |
| </div> |
| |
| <script> |
| var elementIsShownInShadow; |
| var elementIsShown; |
| var elementIsShownDirectlyInShadow; |
| var elementIsShownInSlot; |
| |
| var elementGetParent; |
| var elementGetParentSlot; |
| |
| var elementGetText; |
| var elementGetTextShadow; |
| var elementGetTextSlot; |
| var elementGetTextSlots; |
| |
| if (bot.dom.IS_SHADOW_DOM_ENABLED) { |
| elementIsShownInShadow = |
| document.querySelector('#is-shown-in-shadow'); |
| elementIsShownInShadow.attachShadow({ mode: 'open' }); |
| elementIsShownInShadow.shadowRoot.innerHTML = |
| '<div><div class="test">Foo</div></div>'; |
| |
| elementIsShownDirectlyInShadow = |
| document.querySelector('#is-shown-directly-in-shadow'); |
| elementIsShownDirectlyInShadow.attachShadow({ mode: 'open' }); |
| elementIsShownDirectlyInShadow.shadowRoot.innerHTML = |
| '<div>Foo</div>'; |
| |
| elementIsShown = document.querySelector('#is-shown'); |
| |
| elementIsShownInSlot = |
| document.querySelector('#is-shown-in-slot'); |
| elementIsShownInSlot.attachShadow({ mode: 'open' }); |
| elementIsShownInSlot.shadowRoot.innerHTML = |
| '<slot></slot>'; |
| |
| elementGetParent = |
| document.querySelector('#get-parent'); |
| |
| elementGetParentSlot = |
| document.querySelector('#get-parent-slot'); |
| elementGetParentSlot.attachShadow({ mode: 'open' }); |
| elementGetParentSlot.shadowRoot.innerHTML = |
| '<div><slot></slot></div>'; |
| |
| elementGetText = |
| document.querySelector('#get-text'); |
| |
| elementGetTextShadow = |
| document.querySelector('#get-text-shadow'); |
| elementGetTextShadow.attachShadow({ mode: 'open' }); |
| elementGetTextShadow.shadowRoot.innerHTML = 'foo'; |
| |
| elementGetTextSlot = |
| document.querySelector('#get-text-slot'); |
| elementGetTextSlot.attachShadow({ mode: 'open' }); |
| elementGetTextSlot.shadowRoot.innerHTML = |
| '<span>a</span><slot></slot><span>b</span>'; |
| |
| elementGetTextSlots = |
| document.querySelector('#get-text-slots'); |
| elementGetTextSlots.attachShadow({ mode: 'open' }); |
| elementGetTextSlots.shadowRoot.innerHTML = |
| '<slot name="a">Default</slot><slot name="b">Default</slot>'; |
| } |
| |
| QUnit.test('isShown', function(assert) { |
| if (!bot.dom.IS_SHADOW_DOM_ENABLED) { |
| assert.ok(true, 'Skipping: shadow DOM not enabled'); |
| return; |
| } |
| |
| assert.ok(bot.dom.isShown(elementIsShown)); |
| |
| elementIsShown.style.display = 'none'; |
| |
| assert.notOk(bot.dom.isShown(elementIsShown)); |
| }); |
| |
| QUnit.test('isShownInShadow', function(assert) { |
| if (!bot.dom.IS_SHADOW_DOM_ENABLED) { |
| assert.ok(true, 'Skipping: shadow DOM not enabled'); |
| return; |
| } |
| |
| var el = elementIsShownInShadow |
| .shadowRoot |
| .querySelector('.test'); |
| |
| assert.ok(bot.dom.isShown(el)); |
| |
| elementIsShownInShadow.style.display = 'none'; |
| |
| assert.notOk(bot.dom.isShown(el)); |
| }); |
| |
| QUnit.test('isShownDirectlyInShadow', function(assert) { |
| if (!bot.dom.IS_SHADOW_DOM_ENABLED) { |
| assert.ok(true, 'Skipping: shadow DOM not enabled'); |
| return; |
| } |
| |
| var el = elementIsShownDirectlyInShadow |
| .shadowRoot |
| .querySelector('div'); |
| |
| assert.ok(bot.dom.isShown(el)); |
| |
| elementIsShownDirectlyInShadow.style.display = 'none'; |
| |
| assert.notOk(bot.dom.isShown(el)); |
| }); |
| |
| QUnit.test('isShownInSlot', function(assert) { |
| if (!bot.dom.IS_SHADOW_DOM_ENABLED) { |
| assert.ok(true, 'Skipping: shadow DOM not enabled'); |
| return; |
| } |
| |
| var el = elementIsShownInSlot.children[0]; |
| |
| assert.ok(bot.dom.isShown(el)); |
| |
| elementIsShownInSlot.style.display = 'none'; |
| |
| assert.notOk(bot.dom.isShown(el)); |
| |
| elementIsShownInSlot.style.display = ''; |
| // Remove the slot, so our child is no longer slotted |
| elementIsShownInSlot.shadowRoot.innerHTML = ''; |
| |
| assert.notOk(bot.dom.isShown(el)); |
| }); |
| |
| QUnit.test('getParentNodeInComposedDom', function(assert) { |
| if (!bot.dom.IS_SHADOW_DOM_ENABLED) { |
| assert.ok(true, 'Skipping: shadow DOM not enabled'); |
| return; |
| } |
| |
| var el = elementGetParent.children[0]; |
| |
| assert.strictEqual(bot.dom.getParentNodeInComposedDom(el), elementGetParent); |
| |
| el = elementGetParentSlot.children[0]; |
| |
| assert.strictEqual( |
| bot.dom.getParentNodeInComposedDom(el), |
| elementGetParentSlot.shadowRoot.querySelector('div') |
| ); |
| |
| elementGetParentSlot.shadowRoot.innerHTML = ''; |
| |
| assert.strictEqual(bot.dom.getParentNodeInComposedDom(el), null); |
| }); |
| |
| QUnit.test('getVisibleText', function(assert) { |
| if (!bot.dom.IS_SHADOW_DOM_ENABLED) { |
| assert.ok(true, 'Skipping: shadow DOM not enabled'); |
| return; |
| } |
| |
| assert.strictEqual(bot.dom.getVisibleText(elementGetText), 'Foo'); |
| }); |
| |
| QUnit.test('getVisibleTextInShadow', function(assert) { |
| if (!bot.dom.IS_SHADOW_DOM_ENABLED) { |
| assert.ok(true, 'Skipping: shadow DOM not enabled'); |
| return; |
| } |
| |
| assert.strictEqual(bot.dom.getVisibleText(elementGetTextShadow), 'foo'); |
| }); |
| |
| QUnit.test('getVisibleTextInSlot', function(assert) { |
| if (!bot.dom.IS_SHADOW_DOM_ENABLED) { |
| assert.ok(true, 'Skipping: shadow DOM not enabled'); |
| return; |
| } |
| |
| assert.strictEqual(bot.dom.getVisibleText(elementGetTextSlot), 'aFoob'); |
| }); |
| |
| QUnit.test('getVisibleTextInSlots', function(assert) { |
| if (!bot.dom.IS_SHADOW_DOM_ENABLED) { |
| assert.ok(true, 'Skipping: shadow DOM not enabled'); |
| return; |
| } |
| |
| assert.strictEqual(bot.dom.getVisibleText(elementGetTextSlots), 'Foo\nBar'); |
| }); |
| </script> |
| </body> |
| </html> |