Pop-up dictionary browser extension for language learning. Successor to Yomichan. (PERSONAL FORK)
at lambda-fork/main 183 lines 11 kB view raw
1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width,initial-scale=1"> 6 <title>Popup Tests</title> 7 <link rel="icon" type="image/gif" href="data:image/gif;base64,R0lGODdhAQABAIABAAAAAP///ywAAAAAAQABAAACAkQBADs="> 8 <link rel="stylesheet" href="test-stylesheet.css"> 9 <script src="js/html-test-utilities.js"></script> 10 <script src="js/popup-tests.js"></script> 11 <style id="container-styles"> 12.container { 13 width: 100%; 14 height: 200px; 15 border: 1px solid #d8d8d8; 16 position: relative; 17 box-sizing: border-box; 18} 19 20.container-inner { 21 background-color: #f8f8f8; 22 padding: 0.5em; 23 position: absolute; 24 left: 0; 25 top: 0; 26 bottom: 0; 27 right: 0; 28} 29 30.danger { 31 color: #c83c28; 32} 33 34 35 </style> 36</head> 37<body> 38 <h1>Popup Tests</h1> 39 40 <test-description> 41 Tests involving popup functionality in different contextsts, such as fullscreen elements, &lt;iframe&gt; elements, and shadow DOMs. 42 </test-description> 43 44 <test-case> 45 <test-description>Standard content.</test-description> 46 <div class="fullscreen-element container hovertarget"> 47 <div class="container-inner"> 48 <div> 49 ありがとう 50 </div> 51 <div> 52 <a href="#" class="fullscreen-link">Toggle fullscreen</a> 53 </div> 54 </div> 55 </div> 56 </test-case> 57 58 <test-case data-shadow-mode="open"> 59 <test-description>Content inside of an open shadow DOM.</test-description> 60 <div class="template-content-container hovertarget"></div> 61 <template> 62 <link rel="stylesheet" href="test-stylesheet.css"> 63 <div class="fullscreen-element container"> 64 <div class="container-inner"> 65 <div> 66 ありがとう 67 </div> 68 <div> 69 <a href="#" class="fullscreen-link">Toggle fullscreen</a> 70 </div> 71 </div> 72 </div> 73 </template> 74 </test-case> 75 76 <test-case data-shadow-mode="closed" data-expected-result="failure"> 77 <test-description>Content inside of a closed shadow DOM.</test-description> 78 <div class="template-content-container hovertarget"></div> 79 <template> 80 <link rel="stylesheet" href="test-stylesheet.css"> 81 <div class="fullscreen-element container"> 82 <div class="container-inner"> 83 <div> 84 ありがとう 85 </div> 86 <div> 87 <a href="#" class="fullscreen-link">Toggle fullscreen</a> 88 </div> 89 </div> 90 </div> 91 </template> 92 </test-case> 93 94 <test-case> 95 <test-description>&lt;iframe&gt; element.</test-description> 96 <iframe src="popup-tests-frame1.html" allowfullscreen="true" class="container hovertarget"></iframe> 97 </test-case> 98 99 <test-case data-shadow-mode="open"> 100 <test-description>&lt;iframe&gt; element inside of an open shadow DOM.</test-description> 101 <div class="template-content-container hovertarget"></div> 102 <template> 103 <iframe src="popup-tests-frame1.html" allowfullscreen="true" class="container"></iframe> 104 </template> 105 </test-case> 106 107 <test-case data-shadow-mode="closed"> 108 <test-description>&lt;iframe&gt; element inside of a closed shadow DOM.</test-description> 109 <div class="template-content-container hovertarget"></div> 110 <template> 111 <iframe src="popup-tests-frame1.html" allowfullscreen="true" class="container"></iframe> 112 </template> 113 </test-case> 114 115 <test-case data-expected-result="failure"> 116 <test-description>&lt;iframe&gt; element with data URL.</test-description> 117 <iframe id="iframe-with-data-url" 118 src="data:text/html;base64,PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCiAgICA8aGVhZD4NCiAgICAgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPg0KICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSI+DQogICAgICAgIDx0aXRsZT5Zb21pY2hhbiBUZXN0czwvdGl0bGU+DQogICAgICAgIDxzY3JpcHQ+DQogZnVuY3Rpb24gcmVxdWVzdEZ1bGxzY3JlZW4oZWxlbWVudCkgew0KICAgIGlmIChlbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKSB7DQogICAgICAgIGVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKTsNCiAgICB9IGVsc2UgaWYgKGVsZW1lbnQubW96UmVxdWVzdEZ1bGxTY3JlZW4pIHsNCiAgICAgICAgZWxlbWVudC5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpOw0KICAgIH0gZWxzZSBpZiAoZWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikgew0KICAgICAgICBlbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7DQogICAgfSBlbHNlIGlmIChlbGVtZW50Lm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHsNCiAgICAgICAgZWxlbWVudC5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBleGl0RnVsbHNjcmVlbigpIHsNCiAgICBpZiAoZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4pIHsNCiAgICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTsNCiAgICB9IGVsc2UgaWYgKGRvY3VtZW50Lm1vekNhbmNlbEZ1bGxTY3JlZW4pIHsNCiAgICAgICAgZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbigpOw0KICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4pIHsNCiAgICAgICAgZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsNCiAgICB9IGVsc2UgaWYgKGRvY3VtZW50Lm1zRXhpdEZ1bGxzY3JlZW4pIHsNCiAgICAgICAgZG9jdW1lbnQubXNFeGl0RnVsbHNjcmVlbigpOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gZ2V0RnVsbHNjcmVlbkVsZW1lbnQoKSB7DQogICAgcmV0dXJuICgNCiAgICAgICAgZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQgfHwNCiAgICAgICAgZG9jdW1lbnQubXNGdWxsc2NyZWVuRWxlbWVudCB8fA0KICAgICAgICBkb2N1bWVudC5tb3pGdWxsU2NyZWVuRWxlbWVudCB8fA0KICAgICAgICBkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCB8fA0KICAgICAgICBudWxsDQogICAgKTsNCn0NCg0KZnVuY3Rpb24gdG9nZ2xlRnVsbHNjcmVlbihlbGVtZW50KSB7DQogICAgaWYgKGdldEZ1bGxzY3JlZW5FbGVtZW50KCkpIHsNCiAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICByZXF1ZXN0RnVsbHNjcmVlbihlbGVtZW50KTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIHNldHVwKGNvbnRhaW5lciwgZnVsbHNjcmVlbkVsZW1lbnQ9bnVsbCkgew0KICAgIGNvbnN0IGZ1bGxzY3JlZW5MaW5rID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5mdWxsc2NyZWVuLWxpbmsnKTsNCiAgICBpZiAoZnVsbHNjcmVlbkxpbmsgIT09IG51bGwpIHsNCiAgICAgICAgaWYgKGZ1bGxzY3JlZW5FbGVtZW50ID09PSBudWxsKSB7DQogICAgICAgICAgICBmdWxsc2NyZWVuRWxlbWVudCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuZnVsbHNjcmVlbi1lbGVtZW50Jyk7DQogICAgICAgIH0NCiAgICAgICAgZnVsbHNjcmVlbkxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gew0KICAgICAgICAgICAgdG9nZ2xlRnVsbHNjcmVlbihmdWxsc2NyZWVuRWxlbWVudCk7DQogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0sIGZhbHNlKTsNCiAgICB9DQoNCiAgICBjb25zdCB0ZW1wbGF0ZSA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCd0ZW1wbGF0ZScpOw0KICAgIGNvbnN0IHRlbXBsYXRlQ29udGVudENvbnRhaW5lciA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcudGVtcGxhdGUtY29udGVudC1jb250YWluZXInKTsNCiAgICBpZiAodGVtcGxhdGUgIT09IG51bGwgJiYgdGVtcGxhdGVDb250ZW50Q29udGFpbmVyICE9PSBudWxsKSB7DQogICAgICAgIGNvbnN0IG1vZGUgPSBjb250YWluZXIuZGF0YXNldC5zaGFkb3dNb2RlOw0KICAgICAgICBjb25zdCBzaGFkb3cgPSB0ZW1wbGF0ZUNvbnRlbnRDb250YWluZXIuYXR0YWNoU2hhZG93KHttb2RlfSk7DQoNCiAgICAgICAgY29uc3QgY29udGFpbmVyU3R5bGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NvbnRhaW5lci1zdHlsZXMnKTsNCiAgICAgICAgc2hhZG93LmFwcGVuZENoaWxkKGNvbnRhaW5lclN0eWxlcy5jbG9uZU5vZGUodHJ1ZSkpOw0KDQogICAgICAgIGNvbnN0IGNvbnRlbnQgPSBkb2N1bWVudC5pbXBvcnROb2RlKHRlbXBsYXRlLmNvbnRlbnQsIHRydWUpOw0KICAgICAgICBzZXR1cChjb250ZW50KTsNCiAgICAgICAgc2hhZG93LmFwcGVuZENoaWxkKGNvbnRlbnQpOw0KICAgIH0NCn0NCiAgICAgICAgPC9zY3JpcHQ+DQogICAgICAgIDxzdHlsZT4NCmJvZHkgew0KICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOw0KICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgICBwYWRkaW5nOiAwOw0KICAgIG1hcmdpbjogMDsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4Ow0KfQ0KYSwgYTp2aXNpdGVkIHsNCiAgICBjb2xvcjogIzEwODBjMDsNCiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsNCn0NCi5jb250ZW50IHsNCiAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgbGVmdDogMDsNCiAgICB0b3A6IDA7DQogICAgcmlnaHQ6IDA7DQogICAgYm90dG9tOiAwOw0KICAgIHBhZGRpbmc6IDAuNWVtOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7DQp9DQogICAgICAgIDwvc3R5bGU+DQogICAgPC9oZWFkPg0KPGJvZHk+PGRpdiBjbGFzcz0iY29udGVudCI+DQo8ZGl2Pg0KICAgIOOBguOCiuOBjOOBqOOBhg0KPC9kaXY+DQo8ZGl2Pg0KICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJmdWxsc2NyZWVuLWxpbmsiPlRvZ2dsZSBmdWxsc2NyZWVuPC9hPg0KICAgIDxzY3JpcHQ+c2V0dXAoZG9jdW1lbnQuYm9keSwgZG9jdW1lbnQuYm9keSk7PC9zY3JpcHQ+DQo8L2Rpdj4NCjwvZGl2PjwvYm9keT4NCjwvaHRtbD4=" 119 allowfullscreen="true" class="container hovertarget"></iframe> 120 </test-case> 121 122 <test-case data-expected-result="failure"> 123 <test-description>&lt;iframe&gt; element with blob URL.</test-description> 124 <iframe id="iframe-with-blob-url" allowfullscreen="true" class="container hovertarget"></iframe> 125 </test-case> 126 127 <test-case> 128 <test-description>&lt;iframe&gt; element with srcdoc.</test-description> 129 <iframe allowfullscreen="true" class="iframe-with-srcdoc container hovertarget"></iframe> 130 </test-case> 131 132 <test-case> 133 <test-description>&lt;iframe&gt; element with srcdoc and 134 <code>sandbox="allow-same-origin allow-scripts"</code>.</test-description> 135 <iframe allowfullscreen="true" class="iframe-with-srcdoc container hovertarget" 136 sandbox="allow-same-origin allow-scripts"></iframe> 137 </test-case> 138 139 <test-case data-expected-result="failure"> 140 <test-description> 141 &lt;iframe&gt; element with srcdoc and <code>sandbox="allow-scripts"</code>. 142 </test-description> 143 <iframe allowfullscreen="true" class="iframe-with-srcdoc container hovertarget" 144 sandbox="allow-scripts"></iframe> 145 </test-case> 146 147 <test-case data-expected-result="failure"> 148 <test-description>SVG &lt;img&gt;.</test-description> 149 <img src="popup-tests-frame2.svg" class="container hovertarget" alt=""> 150 </test-case> 151 152 <test-case> 153 <test-description>SVG &lt;object&gt;.</test-description> 154 <object data="popup-tests-frame2.svg" type="image/svg+xml" class="container hovertarget"></object> 155 </test-case> 156 157 <test-case data-expected-result="failure"> 158 <test-description>SVG &lt;embed&gt;.</test-description> 159 <embed type="image/svg+xml" src="popup-tests-frame2.svg" class="container hovertarget"> 160 </test-case> 161 162 <test-case> 163 <test-description>SVG &lt;iframe&gt;.</test-description> 164 <iframe src="popup-tests-frame2.svg" allowfullscreen="true" class="container hovertarget"></iframe> 165 </test-case> 166 167 <test-case> 168 <test-description>SVG &lt;svg&gt;.</test-description> 169 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="container hovertarget" 170 style="background-color: #f8f8f8;" focusable="false"> 171 <text x="7" y="12" style=" 172 font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 173 font-size: 14px; 174 fill: #000000; 175 dominant-baseline: hanging;"> 176 ありがとう 177 </text> 178 </svg> 179 </test-case> 180 181 <div id="footer">Tests Complete</div> 182</body> 183</html>