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>