| Index: third_party/WebKit/LayoutTests/imported/wpt/svg/linking/scripted/href-script-element.html
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/svg/linking/scripted/href-script-element.html b/third_party/WebKit/LayoutTests/imported/wpt/svg/linking/scripted/href-script-element.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..48f49085080de3747edbadacae7ee50ffcc65e39
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/svg/linking/scripted/href-script-element.html
|
| @@ -0,0 +1,112 @@
|
| +<!DOCTYPE html>
|
| +<meta charset=utf-8>
|
| +<title>Href - script element tests</title>
|
| +<script src='/resources/testharness.js'></script>
|
| +<script src='/resources/testharnessreport.js'></script>
|
| +<script src='testcommon.js'></script>
|
| +<body>
|
| +<div id='log'></div>
|
| +<svg id='svg' width='100' height='100' viewBox='0 0 100 100'>
|
| +</svg>
|
| +<script>
|
| +'use strict';
|
| +
|
| +// Note:
|
| +// The order of these tests shouldn't be changed because we don't unload
|
| +// the external script file even if we expect the <script> element will be
|
| +// removed by childNode.remove() and Garbage Collection after a test has been
|
| +// finished. Therefore, I intentionally make them load externalScript1 and
|
| +// externalScript2 alternately, and we can check if the results are changed
|
| +// after reloading the other script.
|
| +// Throughout this test, we periodically need to verify that a script
|
| +// *does not load* after we've made a tweak. To do that, we have to
|
| +// wait "long enough for it to have loaded", and then make sure nothing
|
| +// has changed. We estimate "long enough" by adding an extra dummy
|
| +// <script> element and watching for its load event.
|
| +
|
| +promise_test(function(t) {
|
| + var svg = document.getElementById('svg');
|
| + var script = createSVGElement(t, 'script', svg);
|
| +
|
| + script.setAttribute('type', 'text/javascript');
|
| + script.setAttribute('href', 'testScripts/externalScript1.js');
|
| + assert_equals(script.href.baseVal, 'testScripts/externalScript1.js');
|
| +
|
| + return waitEvent(script, 'load').then(function() {
|
| + assert_equals(loadedScript(), 'externalScript1',
|
| + 'Link to correct external script');
|
| +
|
| + script.setAttributeNS(XLINKNS, 'xlink:href',
|
| + 'testScripts/externalScript2.js');
|
| +
|
| + // Load an dummy script to trigger a load event.
|
| + var dummyScript = createSVGElement(t, 'script', svg);
|
| + dummyScript.setAttribute('href', 'testScripts/dummyScript.js');
|
| + return waitEvent(dummyScript, 'load');
|
| + }).then(function() {
|
| + assert_equals(script.href.baseVal, 'testScripts/externalScript1.js');
|
| + assert_equals(loadedScript(), 'externalScript1',
|
| + 'Still link to the external script from href');
|
| + });
|
| +}, 'Test for loading external script from href when setting href and ' +
|
| + 'then xlink:href');
|
| +
|
| +promise_test(function(t) {
|
| + var svg = document.getElementById('svg');
|
| + var script = createSVGElement(t, 'script', svg);
|
| +
|
| + script.setAttribute('type', 'text/javascript');
|
| + script.setAttributeNS(XLINKNS, 'xlink:href',
|
| + 'testScripts/externalScript2.js');
|
| + assert_equals(script.href.baseVal, 'testScripts/externalScript2.js');
|
| +
|
| + return waitEvent(script, 'load').then(function() {
|
| + assert_equals(loadedScript(), 'externalScript2',
|
| + 'Link to the external script from xlink:href');
|
| +
|
| + script.setAttribute('href', 'testScripts/externalScript1.js');
|
| +
|
| + // Load an dummy script to trigger a load event.
|
| + var dummyScript = createSVGElement(t, 'script', svg);
|
| + dummyScript.setAttribute('href', 'testScripts/dummyScript.js');
|
| + return waitEvent(dummyScript, 'load');
|
| + }).then(function() {
|
| + assert_equals(script.href.baseVal, 'testScripts/externalScript1.js',
|
| + 'href() should prefer href attribute over xlink:href');
|
| + assert_equals(loadedScript(), 'externalScript2',
|
| + 'Still link to the external script from xlink:href');
|
| + });
|
| +}, 'Test for loading external script from xlnk:href by adding xlink:href and ' +
|
| + 'then href');
|
| +
|
| +promise_test(function(t) {
|
| + var svg = document.getElementById('svg');
|
| + var script = createSVGElement(t, 'script', svg);
|
| +
|
| + script.setAttribute('type', 'text/javascript');
|
| + script.setAttribute('href', 'testScripts/externalScript1.js');
|
| + script.setAttributeNS(XLINKNS, 'xlink:href',
|
| + 'testScripts/externalScript2.js');
|
| + assert_equals(script.href.baseVal, 'testScripts/externalScript1.js');
|
| +
|
| + return waitEvent(script, 'load').then(function() {
|
| + assert_equals(loadedScript(), 'externalScript1',
|
| + 'Link to the external script by href');
|
| +
|
| + script.removeAttribute('href');
|
| + assert_equals(script.href.baseVal, 'testScripts/externalScript2.js',
|
| + 'href() returns xlink:href attribute because href was unset');
|
| +
|
| + // Load an dummy script to trigger a load event.
|
| + var dummyScript = createSVGElement(t, 'script', svg);
|
| + dummyScript.setAttribute('href', 'testScripts/dummyScript.js');
|
| + return waitEvent(dummyScript, 'load');
|
| + }).then(function() {
|
| + assert_equals(loadedScript(), 'externalScript1',
|
| + 'The external script loaded from href is still loaded');
|
| + });
|
| +}, 'Test for loading external script from href by adding href and ' +
|
| + 'then xlink:href, and then removing href');
|
| +
|
| +</script>
|
| +</body>
|
|
|