tor-browser

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

selectors-api-001.html (2571B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <title>Shadow DOM Test: Upper-boundary encapsulation: document's Selector APIs</title>
      5 <link rel="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
      6 <link rel="author" title="Yuta Kitamura" href="mailto:yutak@google.com">
      7 <link rel="help" href="http://www.w3.org/TR/2013/WD-shadow-dom-20130514/#upper-boundary-encapsulation">
      8 <meta name="assert" content="Upper-boundary encapsulation: Nodes in a shadow tree must not be accessible through selector APIs of owner document.">
      9 <script src="/resources/testharness.js"></script>
     10 <script src="/resources/testharnessreport.js"></script>
     11 <script src="../../../../html/resources/common.js"></script>
     12 </head>
     13 <body>
     14 <div id="log"></div>
     15 <script>
     16 // Return a document containing the structure below:
     17 //
     18 // <body> - - - - - {shadow-root}
     19 //   |                    |
     20 //   |                    +-- <p class="test-class" id="test-id">
     21 //   |
     22 //   +-- <p class="test-class" id="test-id">
     23 function createTestDocument() {
     24    var doc = document.implementation.createHTMLDocument('Test');
     25    var pHost = doc.createElement('p');
     26    pHost.className = 'test-class';
     27    pHost.id = 'test-id';
     28    doc.body.appendChild(pHost);
     29    var shadowRoot = doc.body.attachShadow({mode: 'open'});
     30    var pShadow = doc.createElement('p');
     31    pShadow.className = 'test-class';
     32    pShadow.id = 'test-id';
     33    shadowRoot.appendChild(pShadow);
     34    return {
     35        doc: doc,
     36        pHost: pHost,
     37        pShadow: pShadow
     38    };
     39 }
     40 
     41 test(function () {
     42    var documentObject = createTestDocument();
     43    var doc = documentObject.doc;
     44    var pHost = documentObject.pHost;
     45    assert_equals(doc.querySelector('p'), pHost);
     46    assert_equals(doc.querySelector('.test-class'), pHost);
     47    assert_equals(doc.querySelector('#test-id'), pHost);
     48 },
     49    'Elements in a shadow tree should not be accessible from ' +
     50    'owner document\'s querySelector() method.'
     51 );
     52 
     53 function assert_singleton_node_list(nodeList, expectedNode) {
     54    assert_equals(nodeList.length, 1);
     55    assert_equals(nodeList[0], expectedNode);
     56 }
     57 
     58 test(function () {
     59    var documentObject = createTestDocument();
     60    var doc = documentObject.doc;
     61    var pHost = documentObject.pHost;
     62    assert_singleton_node_list(doc.querySelectorAll('p'), pHost);
     63    assert_singleton_node_list(doc.querySelectorAll('.test-class'), pHost);
     64    assert_singleton_node_list(doc.querySelectorAll('#test-id'), pHost);
     65 },
     66    'Elements in a shadow tree should not be accessible from ' +
     67    'owner document\'s querySelectorAll() method.'
     68 );
     69 </script>
     70 </body>
     71 </html>