diff options
| -rw-r--r-- | test/data/html/test-document2-frame1.html | 6 | ||||
| -rw-r--r-- | test/data/html/test-document2-script.js | 24 | ||||
| -rw-r--r-- | test/data/html/test-document2.html | 106 | ||||
| -rw-r--r-- | test/data/html/test-stylesheet.css | 3 | 
4 files changed, 76 insertions, 63 deletions
| diff --git a/test/data/html/test-document2-frame1.html b/test/data/html/test-document2-frame1.html index 3b85cdc5..e572e3c4 100644 --- a/test/data/html/test-document2-frame1.html +++ b/test/data/html/test-document2-frame1.html @@ -33,10 +33,8 @@ a, a:visited {      ありがとう  </div>  <div> -    <a href="#" id="fullscreen-link">Toggle fullscreen</a> -    <script> -document.querySelector('#fullscreen-link').addEventListener('click', () => toggleFullscreen(document.body), false); -    </script> +    <a href="#" class="fullscreen-link">Toggle fullscreen</a> +    <script>setup(document.body, document.body);</script>  </div>  </div></body>  </html>
\ No newline at end of file diff --git a/test/data/html/test-document2-script.js b/test/data/html/test-document2-script.js index bd5a570d..ab516a4e 100644 --- a/test/data/html/test-document2-script.js +++ b/test/data/html/test-document2-script.js @@ -39,3 +39,27 @@ function toggleFullscreen(element) {          requestFullscreen(element);      }  } + +function setup(container, fullscreenElement=null) { +    const fullscreenLink = container.querySelector('.fullscreen-link'); +    if (fullscreenLink !== null) { +        if (fullscreenElement === null) { +            fullscreenElement = container.querySelector('.fullscreen-element'); +        } +        fullscreenLink.addEventListener('click', (e) => { +            toggleFullscreen(fullscreenElement); +            e.preventDefault(); +            return false; +        }, false); +    } + +    const template = container.querySelector('template'); +    const templateContentContainer = container.querySelector('.template-content-container'); +    if (template !== null && templateContentContainer !== null) { +        const mode = container.dataset.shadowMode; +        const shadow = templateContentContainer.attachShadow({mode}); +        const content = document.importNode(template.content, true); +        setup(content); +        shadow.appendChild(content); +    } +} diff --git a/test/data/html/test-document2.html b/test/data/html/test-document2.html index b2046dfd..6d174571 100644 --- a/test/data/html/test-document2.html +++ b/test/data/html/test-document2.html @@ -11,88 +11,78 @@  <body>      <h1>Yomichan Manual Tests</h1> -    <p class="description">Manual tests involving fullscreen elements, <iframe>s, and shadow DOMs.</p> +    <y-description>Manual tests involving fullscreen elements, <iframe>s, and shadow DOMs.</y-description> -    <div class="test"> -        <div class="description">Standard content.</div> -        <div id="fullscreen-element1" style="width: 100%; height: 200px; border: 1px solid #d8d8d8; position: relative;"><div style="background-color: #f8f8f8; padding: 0.5em; position: absolute; left: 0; top: 0; bottom: 0; right: 0;"> +    <y-test> +        <y-description>Standard content.</y-description> +        <div class="fullscreen-element" style="width: 100%; height: 200px; border: 1px solid #d8d8d8; position: relative;"><div style="background-color: #f8f8f8; padding: 0.5em; position: absolute; left: 0; top: 0; bottom: 0; right: 0;">              <div>                  ありがとう              </div>              <div> -                <a href="#" id="fullscreen-link1">Toggle fullscreen</a> +                <a href="#" class="fullscreen-link">Toggle fullscreen</a>              </div>          </div></div> -        <script> -document.querySelector('#fullscreen-link1').addEventListener('click', () => toggleFullscreen(document.querySelector('#fullscreen-element1')), false); -        </script> -    </div> +    </y-test> -    <div class="test"> -        <div class="description">Content inside of a shadow DOM.</div> -        <div id="shadow-content-container"></div> -        <template id="shadow-content-container-content-template"> +    <y-test data-shadow-mode="open"> +        <y-description>Content inside of an open shadow DOM.</y-description> +        <div class="template-content-container"></div> +        <template>              <link rel="stylesheet" href="test-stylesheet.css" /> -            <div id="fullscreen-element2" style="width: 100%; height: 200px; border: 1px solid #d8d8d8; position: relative;"><div style="background-color: #f8f8f8; padding: 0.5em; position: absolute; left: 0; top: 0; bottom: 0; right: 0;"> +            <div class="fullscreen-element" style="width: 100%; height: 200px; border: 1px solid #d8d8d8; position: relative;"><div style="background-color: #f8f8f8; padding: 0.5em; position: absolute; left: 0; top: 0; bottom: 0; right: 0;">                  <div>                      ありがとう                  </div>                  <div> -                    <a href="#" id="fullscreen-link2">Toggle fullscreen</a> +                    <a href="#" class="fullscreen-link">Toggle fullscreen</a>                  </div>              </div></div>          </template> -        <script> -(() => { -    const shadowIframeContainer = document.querySelector('#shadow-content-container'); -    const shadow = shadowIframeContainer.attachShadow({mode: 'closed'}); -    const template = document.querySelector('#shadow-content-container-content-template').content; -    const content = document.importNode(template, true); -    const fullscreenElement = content.querySelector('#fullscreen-element2'); -    content.querySelector('#fullscreen-link2').addEventListener('click', () => toggleFullscreen(fullscreenElement), false); -    shadow.appendChild(content); -})(); -        </script> -    </div> +    </y-test> -    <div class="test"> -        <div class="description"><iframe> element.</div> +    <y-test data-shadow-mode="closed"> +        <y-description>Content inside of a closed shadow DOM.</y-description> +        <div class="template-content-container"></div> +        <template> +            <link rel="stylesheet" href="test-stylesheet.css" /> +            <div class="fullscreen-element" style="width: 100%; height: 200px; border: 1px solid #d8d8d8; position: relative;"><div style="background-color: #f8f8f8; padding: 0.5em; position: absolute; left: 0; top: 0; bottom: 0; right: 0;"> +                <div> +                    ありがとう +                </div> +                <div> +                    <a href="#" class="fullscreen-link">Toggle fullscreen</a> +                </div> +            </div></div> +        </template> +    </y-test> + +    <y-test> +        <y-description><iframe> element.</y-description>          <iframe src="test-document2-frame1.html" allowfullscreen="true" style="width: 100%; height: 200px; border: 1px solid #d8d8d8;"></iframe> -    </div> +    </y-test> -    <div class="test"> -        <div class="description"><iframe> element inside of a shadow DOM.</div> -        <div id="shadow-iframe-container"></div> -        <template id="shadow-iframe-container-content-template"> +    <y-test data-shadow-mode="open"> +        <y-description><iframe> element inside of an open shadow DOM.</y-description> +        <div class="template-content-container"></div> +        <template>              <iframe src="test-document2-frame1.html" allowfullscreen="true" style="width: 100%; height: 200px; border: 1px solid #d8d8d8;"></iframe>          </template> -        <script> -(() => { -    const shadowIframeContainer = document.querySelector('#shadow-iframe-container'); -    const shadow = shadowIframeContainer.attachShadow({mode: 'closed'}); -    const template = document.querySelector('#shadow-iframe-container-content-template').content; -    const content = document.importNode(template, true); -    shadow.appendChild(content); -})(); -        </script> -    </div> +    </y-test> -    <div class="test"> -        <div class="description"><iframe> element inside of an open shadow DOM.</div> -        <div id="shadow-iframe-container-open"></div> -        <template id="shadow-iframe-container-open-content-template"> +    <y-test data-shadow-mode="closed"> +        <y-description><iframe> element inside of a closed shadow DOM.</y-description> +        <div class="template-content-container"></div> +        <template>              <iframe src="test-document2-frame1.html" allowfullscreen="true" style="width: 100%; height: 200px; border: 1px solid #d8d8d8;"></iframe>          </template> -        <script> -(() => { -    const shadowIframeContainer = document.querySelector('#shadow-iframe-container-open'); -    const shadow = shadowIframeContainer.attachShadow({mode: 'open'}); -    const template = document.querySelector('#shadow-iframe-container-open-content-template').content; -    const content = document.importNode(template, true); -    shadow.appendChild(content); -})(); -        </script> -    </div> +    </y-test> + +    <script> +for (const element of document.querySelectorAll('y-test')) { +    setup(element); +} +    </script>  </body>  </html> diff --git a/test/data/html/test-stylesheet.css b/test/data/html/test-stylesheet.css index 2e9a2f52..b4d2e255 100644 --- a/test/data/html/test-stylesheet.css +++ b/test/data/html/test-stylesheet.css @@ -19,7 +19,8 @@ p {      margin: 0.33em 0;  } -h1+p { +h1+p, +h1+y-description {      margin-top: -0.67em;  } |