summaryrefslogtreecommitdiff
path: root/systrace/catapult/third_party/polymer/components/shadycss/tests/dynamic-scoping.html
diff options
context:
space:
mode:
Diffstat (limited to 'systrace/catapult/third_party/polymer/components/shadycss/tests/dynamic-scoping.html')
-rw-r--r--systrace/catapult/third_party/polymer/components/shadycss/tests/dynamic-scoping.html296
1 files changed, 0 insertions, 296 deletions
diff --git a/systrace/catapult/third_party/polymer/components/shadycss/tests/dynamic-scoping.html b/systrace/catapult/third_party/polymer/components/shadycss/tests/dynamic-scoping.html
deleted file mode 100644
index e94fc2b..0000000
--- a/systrace/catapult/third_party/polymer/components/shadycss/tests/dynamic-scoping.html
+++ /dev/null
@@ -1,296 +0,0 @@
-<!DOCTYPE html>
-<!--
-@license
-Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
-This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
-The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
-The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
-Code distributed by Google as part of the polymer project is also
-subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
--->
-<html>
-<head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
- <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
- <script>
- WCT = {waitFor: function (cb) {HTMLImports.whenReady(cb)}}
- </script>
- <script src="./test-flags.js"></script>
- <script src="../node_modules/wct-browser-legacy/browser.js"></script>
- <script src="../node_modules/@webcomponents/webcomponents-platform/webcomponents-platform.js"></script>
- <script src="../node_modules/es6-promise/dist/es6-promise.auto.min.js"></script>
- <script src="../node_modules/@webcomponents/template/template.js"></script>
- <script src="../node_modules/@webcomponents/html-imports/html-imports.min.js"></script>
- <script src="../node_modules/@webcomponents/shadydom/shadydom.min.js"></script>
- <script src="../node_modules/@webcomponents/custom-elements/custom-elements.min.js"></script>
- <script src="../scoping-shim.min.js"></script>
- <script src="../apply-shim.min.js"></script>
- <script src="../custom-style-interface.min.js"></script>
- <script src="module/generated/make-element.js"></script>
- <script src="module/generated/custom-style-element.js"></script>
-</head>
-<body>
-
- <custom-style>
- <style>
- x-container, x-sample, x-sample-dynamic, x-container-dynamic {
- display: block;
- padding: 10px;
- margin: 10px;
- border: 1px solid black;
- }
-
- .target {
- background-color: rgb(0, 255, 0);
- }
- </style>
- </custom-style>
-
- <template id="x-sample">
- <style>
- .target {
- background-color: rgb(255, 0, 0);
- }
- </style>
- <h2></h2>
- <p>here .target elements are red</p>
- <div class="target">I'm red</div>
- <template id="renderer">
- <div class="target"></div>
- </template>
- </template>
-
- <template id="x-container">
- <style>
- .target {
- background-color: rgb(123, 123, 123);
- }
- </style>
- <h1>x-container</h1>
- <p>here .target elements are gray</p>
- <div class="target">I'm gray</div>
- <slot></slot>
- </template>
-
- <h2>body</h2>
- <p>here .target elements are green</p>
-
- <div class="target">I'm green</div>
-
- <x-sample id="inBody"></x-sample>
-
- <x-sample id="inContainer"></x-sample>
-
- <x-container></x-container>
-
- <template id="x-dynamic">
- <style>
- span {
- background-color: rgb(123, 123, 123);
- }
- </style>
- <div id="container">
- </div>
- </template>
-
- <x-dynamic></x-dynamic>
-
- <template id="out-of-band">
- <style>
- div {
- color: var(--foo);
- }
- </style>
- <div>oob shadowed</div>
- </template>
-
- <template id="oob-parent">
- <style>
- out-of-band {
- --foo: rgb(0, 0, 255);
- }
- </style>
- <out-of-band></out-of-band>
- </template>
-
- <template id="oob-other-parent">
- <style>
- out-of-band {
- --foo: rgb(255, 0, 0);
- }
- </style>
- </template>
-
- <oob-parent></oob-parent>
- <oob-other-parent></oob-other-parent>
-
- <template id="x-sample-dynamic">
- <style>
- .target {
- background-color: rgb(255, 0, 0);
- }
- </style>
- <h2></h2>
- <p>here .target elements are red</p>
- <div class="target">I'm red</div>
- <template id="renderer">
- <div class="target"></div>
- </template>
- </template>
-
- <template id="x-container-dynamic">
- <style>
- .target {
- background-color: rgb(123, 123, 123);
- }
- </style>
- <h1>x-container</h1>
- <p>here .target elements are gray</p>
- <div class="target">I'm gray</div>
- <slot></slot>
- </template>
-
- <x-container-dynamic></x-container-dynamic>
-
- <template id="css-build" css-build="shady">
- <style>:host{@apply --fake;}</style>
- <div class="style-scope css-build"></div>
- </template>
-
- <template id="css-build-comment"><!--css-build:shady-->
- <style>:host{@apply --fake;}</style>
- <div class="style-scope css-build-comment"></div>
- </template>
-
- <script>
- suite('Dynamic Scoping', () => {
- function stamp(parent, host) {
- let template = host.shadowRoot.querySelector('template#renderer')
- let el = template.content.cloneNode(true).querySelector('div.target');
- el.textContent = `stamped by ${host.id}`;
- parent.appendChild(el);
- return el;
- }
- test('DOM is scoped correctly when stamped from an element into document', (done) => {
- let inBody = document.querySelector('x-sample#inBody');
- let inContainer = document.querySelector('x-sample#inContainer');
- makeElement('x-sample', function() {
- this.shadowRoot.querySelector('h2').textContent = `${this.id}`;
- });
- makeElement('x-container');
- setTimeout(() => {
- let body = stamp(document.body, inBody);
- let container = stamp(document.querySelector('x-container').shadowRoot, inContainer);
- requestAnimationFrame(() => {
- assert.equal(getComputedStyle(body).backgroundColor, 'rgb(0, 255, 0)');
- assert.equal(getComputedStyle(container).backgroundColor, 'rgb(123, 123, 123)')
- done();
- });
- }, 300);
- });
- test('DOM is scoped correctly when created dynamically inside a scoped container', (done) => {
- makeElement('x-dynamic', function() {
- let div = this.shadowRoot.querySelector('#container');
- let newDiv = div.cloneNode(true);
- let span = document.createElement('span');
- span.textContent = 'created dynamically';
- newDiv.appendChild(span);
- this.shadowRoot.appendChild(newDiv);
- requestAnimationFrame(() => {
- assert.equal(getComputedStyle(span).backgroundColor, 'rgb(123, 123, 123)');
- done();
- })
- });
- });
- test('moving a custom element between scopes recalculates correctly', function(done) {
- makeElement('out-of-band');
- makeElement('oob-parent');
- makeElement('oob-other-parent');
- let parent = document.querySelector('oob-parent');
- let newParent = document.querySelector('oob-other-parent');
- let oob = parent.shadowRoot.querySelector('out-of-band');
- let shadowDiv = oob.shadowRoot.querySelector('div');
- newParent.shadowRoot.appendChild(oob);
- requestAnimationFrame(() => {
- assert.equal(getComputedStyle(shadowDiv).getPropertyValue('color').trim(), 'rgb(255, 0, 0)');
- done();
- });
- })
- function makeDynamicElement(name, connectedCallback) {
- let template = document.querySelector(`template#${name}`);
- if (template && window.ShadyCSS) {
- window.ShadyCSS.prepareTemplate(template, name);
- }
- window.customElements.define(name, class extends window.HTMLElement {
- constructor() {
- super();
- if (template && !this.shadowRoot) {
- this.attachShadow({mode: 'open'});
- this.shadowRoot.appendChild(document.importNode(template.content, true));
- }
- }
- connectedCallback() {
- window.ShadyCSS && window.ShadyCSS.styleElement(this);
- if (connectedCallback) {
- connectedCallback.call(this);
- }
- }
- });
- }
- test('Nested DOM is scoped correctly when created dynamically inside a dynamic container', function(done) {
- if (!window.customElements.polyfillWrapFlushCallback && window.ShadyDOM && window.ShadyDOM.inUse) {
- /*
- * This test is flaky if running with native custom elements and polyfill shadowdom,
- * as the shadowdom polyfill may render inside of the constructor and create children,
- * which is not allowed in the CE spec.
- */
- this.skip();
- }
- makeDynamicElement('x-container-dynamic');
- makeDynamicElement('x-sample-dynamic');
- const dynamicDiv = document.createElement('div');
- dynamicDiv.classList.add('target');
- dynamicDiv.innerText = 'I was created dynamically';
- const dynamicSample = document.createElement('x-sample-dynamic');
- const dynamicContainer = document.createElement('x-container-dynamic');
- dynamicSample.shadowRoot.appendChild(dynamicDiv);
- dynamicContainer.shadowRoot.appendChild(dynamicSample);
- document.querySelector('x-container-dynamic').shadowRoot.appendChild(dynamicContainer);
- requestAnimationFrame(() => {
- dynamicSample.shadowRoot.querySelectorAll('div.target').forEach((target) =>
- assert.equal(getComputedStyle(target).backgroundColor,'rgb(255, 0, 0)'));
- done();
- });
- });
-
- test('templates marked with "css-build" will be left alone', function() {
- makeElement('css-build');
- const template = document.querySelector('template#css-build');
- const div = template.content.querySelector('div');
- const divClasses = Array.from(div.classList);
- assert.includeMembers(divClasses, ['style-scope', 'css-build']);
- const style = template.content.querySelector('style');
- if (style) {
- assert.match(style.textContent.trim(), /:host\s*{\s*@apply --fake;\s*}/);
- }
- });
-
- test('templates with css-build comments will be left alone', function() {
- const template = document.querySelector('template#css-build-comment');
- const buildComment = template.content.firstChild;
- assert.instanceOf(buildComment, Comment, 'first child of template content should be a Comment');
- makeElement('css-build-comment');
- const div = template.content.querySelector('div');
- const divClasses = Array.from(div.classList);
- assert.includeMembers(divClasses, ['style-scope', 'css-build-comment']);
- const style = template.content.querySelector('style');
- if (style) {
- assert.match(style.textContent.trim(), /:host\s*{\s*@apply --fake;\s*}/);
- }
- assert.equal(buildComment.parentNode, null, 'build commment should have been removed');
- });
- });
- </script>
-</body>
-</html>