tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

template-owner-document.html (7722B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <title>HTML Templates: ownerDocument property of the element in template</title>
      5 <meta name="timeout" content="long">
      6 <meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
      7 <meta name="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru">
      8 <meta name="assert" content="ownerDocument property of the element appended to template must be set to the template contents owner of the ownerDocument of the template element">
      9 <link rel="help" href="http://www.w3.org/TR/2013/WD-html-templates-20130214/#creating-an-element-for-a-token">
     10 <script src="/resources/testharness.js"></script>
     11 <script src="/resources/testharnessreport.js"></script>
     12 <script src="/html/resources/common.js"></script>
     13 </head>
     14 <body>
     15 <div id="log"></div>
     16 <script type="text/javascript">
     17 
     18 
     19 test(function () {
     20    var doc = newHTMLDocument();
     21    doc.body.innerHTML = '<div><template id="tmpl1"><div id="div">DIV</div></template></div>';
     22 
     23    var template = doc.querySelector('#tmpl1');
     24 
     25    var div = template.content.querySelector('#div');
     26 
     27    assert_equals(div.ownerDocument, template.content.ownerDocument,
     28            'Wrong ownerDocument of the element in template');
     29 
     30 }, 'Test ownerDocument property of the element in a template. '
     31    + 'Current DOCUMENT has no browsing context. Test template element inside the div');
     32 
     33 
     34 
     35 test(function () {
     36    var doc = newHTMLDocument();
     37    doc.body.innerHTML = '<template id="tmpl1"><div id="div">DIV</div></template>';
     38 
     39    var template = doc.querySelector('#tmpl1');
     40 
     41    var div = template.content.querySelector('#div');
     42 
     43    assert_equals(div.ownerDocument, template.content.ownerDocument,
     44            'Wrong ownerDocument of the element in template');
     45 
     46 }, 'Test ownerDocument property of the element in a template. '
     47    + 'Current DOCUMENT has no browsing context. Test template element '
     48    + 'in the root of the body');
     49 
     50 
     51 
     52 test(function () {
     53    var doc = newHTMLDocument();
     54    doc.head.innerHTML = '<template id="tmpl1"><div id="div">DIV</div></template>';
     55 
     56    var template = doc.querySelector('#tmpl1');
     57 
     58    var div = template.content.querySelector('#div');
     59 
     60    assert_equals(div.ownerDocument, template.content.ownerDocument,
     61            'Wrong ownerDocument of the element in template');
     62 
     63 }, 'Test ownerDocument property of the element in a template. '
     64    + 'Current DOCUMENT has no browsing context. Test template element '
     65    + 'in the root of the head');
     66 
     67 
     68 
     69 test(function () {
     70    var doc = newHTMLDocument();
     71    doc.body.innerHTML = '<template id="tmpl1">'
     72        + '<template id="tmpl2"><div id="div">DIV</div></template></template>';
     73 
     74    var template = doc.querySelector('#tmpl1');
     75 
     76    var nestedTemplate = template.content.querySelector('#tmpl2');
     77 
     78    assert_equals(nestedTemplate.ownerDocument, template.content.ownerDocument,
     79            'Wrong nested template owner document');
     80 
     81    var div = nestedTemplate.content.querySelector('#div');
     82 
     83    assert_equals(div.ownerDocument, nestedTemplate.content.ownerDocument,
     84            'Wrong div ownerDocument');
     85 
     86 }, 'Test ownerDocument property of the element in a nested template');
     87 
     88 
     89 
     90 testInIFrame('/html/semantics/scripting-1/the-template-element/resources/template-contents.html', function(context) {
     91    var doc = context.iframes[0].contentDocument;
     92 
     93    var template = doc.querySelector('template');
     94 
     95    var div = template.content.querySelector('div');
     96 
     97    assert_equals(div.ownerDocument, template.content.ownerDocument,
     98            'Wrong ownerDocument of the element in template');
     99 
    100 }, 'Test ownerDocument property of the element in a template. '
    101   + 'Load HTML document from a file, current DOCUMENT has browsing context');
    102 
    103 
    104 
    105 testInIFrame('/html/semantics/scripting-1/the-template-element/resources/template-contents-nested.html', function(context) {
    106    var doc = context.iframes[0].contentDocument;
    107 
    108    var template = doc.querySelector('template');
    109 
    110    var nestedTemplate = template.content.querySelector('template');
    111 
    112    assert_equals(nestedTemplate.ownerDocument, template.content.ownerDocument,
    113            'Wrong nested template owner document');
    114 
    115    var div = nestedTemplate.content.querySelector('div');
    116 
    117    assert_equals(div.ownerDocument, nestedTemplate.content.ownerDocument,
    118            'Wrong div ownerDocument');
    119 
    120 }, 'Test ownerDocument property of the element in a nested template. '
    121    + 'Load HTML document from a file, current DOCUMENT has browsing context');
    122 
    123 
    124 
    125 testInIFrame('/html/semantics/scripting-1/the-template-element/resources/two-templates.html', function(context) {
    126    var doc = context.iframes[0].contentDocument;
    127 
    128    var template1 = doc.querySelector('#template1');
    129    var div1 = template1.content.querySelector('div');
    130    var template2 = doc.querySelector('#template2');
    131    var div2 = template2.content.querySelector('div');
    132 
    133    assert_equals(div1.ownerDocument, template1.content.ownerDocument,
    134            'Wrong ownerDocument of the element in template');
    135    assert_equals(div2.ownerDocument, template2.content.ownerDocument,
    136            'Wrong ownerDocument of the element in template');
    137    assert_equals(div1.ownerDocument, div2.ownerDocument,
    138            'Different elements in the same document should share the same template contents owner');
    139 
    140 }, 'Test ownerDocument property of two elements in a template. '
    141    + 'Load HTML document from a file, current DOCUMENT has browsing context');
    142 
    143 
    144 var parameters = [];
    145 
    146 HTML5_ELEMENTS.forEach(function(value) {
    147    if (value !== 'body' && value !== 'html' && value !== 'head' && value !== 'frameset') {
    148 
    149        var doc = newHTMLDocument();
    150 
    151        if (isVoidElement(value)) {
    152            doc.body.innerHTML = '<template><' + value + '/></template>';
    153        } else {
    154            doc.body.innerHTML = '<template><' + value + '></' + value + '></template>';
    155        }
    156 
    157        var template = doc.querySelector('template');
    158        var element = template.content.querySelector(value);
    159 
    160        doc.body.appendChild(template);
    161 
    162        parameters.push([
    163                'Test ownerDocument for the element ' + value + ' in the template',
    164                element,
    165                template
    166            ]);
    167    }
    168 });
    169 
    170 function compare_owners(element, template) {
    171    assert_equals(element.ownerDocument, template.content.ownerDocument)
    172 }
    173 
    174 // Test ownerDocument property of all HTML5 elements in a template.
    175 // Current DOCUMENT has no browsing context.
    176 generate_tests(compare_owners, parameters);
    177 
    178 var context = newContext();
    179 parameters = [];
    180 
    181 try {
    182 
    183    HTML5_ELEMENTS.forEach(function(value) {
    184 
    185        if (value !== 'body' && value !== 'html' && value !== 'head' && value !== 'frameset') {
    186 
    187            var doc = newRenderedHTMLDocument(context);
    188 
    189            if (isVoidElement(value)) {
    190                doc.body.innerHTML = '<template><' + value + '/></template>';
    191            } else {
    192                doc.body.innerHTML = '<template><' + value + '></' + value + '></template>';
    193            }
    194 
    195            var template = doc.querySelector('template');
    196            var element = template.content.querySelector(value);
    197 
    198            doc.body.appendChild(template);
    199 
    200            parameters.push([
    201                    'Test ownerDocument for the element ' + value + ' in the template. '
    202                        + 'Document has browsing context',
    203                    element,
    204                    template
    205                ]);
    206        }
    207    });
    208    generate_tests(compare_owners, parameters,
    209            'Test ownerDocument property of all HTML5 elements in a template. '
    210                + 'Current DOCUMENT has browsing context.');
    211 
    212 } finally {
    213    try {
    214        cleanContext(context);
    215    } catch (e) {
    216        //do nothing
    217    }
    218 }
    219 
    220 </script>
    221 </body>
    222 </html>