test_tree_16.html (3898B)
1 <!-- This Source Code Form is subject to the terms of the Mozilla Public 2 - License, v. 2.0. If a copy of the MPL was not distributed with this 3 - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> 4 <!DOCTYPE HTML> 5 <html> 6 <!-- 7 Test scroll position when showing items both in traversal and/or rendered. 8 --> 9 <head> 10 <meta charset="utf-8"> 11 <title>Tree component test</title> 12 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 13 <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"> 14 <link rel="stylesheet" href="chrome://devtools/skin/light-theme.css" type="text/css"> 15 <style> 16 .tree { 17 height: 30px; 18 overflow: auto; 19 display: block; 20 } 21 22 .tree-node { 23 font-size: 10px; 24 height: 10px; 25 } 26 </style> 27 </head> 28 <body> 29 <pre id="test"> 30 <script src="head.js" type="application/javascript"></script> 31 <script type="application/javascript"> 32 33 "use strict"; 34 35 window.onload = async function () { 36 try { 37 const ReactDOM = browserRequire("devtools/client/shared/vendor/react-dom"); 38 const { createFactory } = browserRequire("devtools/client/shared/vendor/react"); 39 const Tree = 40 createFactory(browserRequire("devtools/client/shared/components/VirtualizedTree")); 41 42 TEST_TREE.expanded = new Set("ABCDEFGHIJKLMNO".split("")); 43 44 function renderTree(props) { 45 const treeProps = Object.assign({}, 46 TEST_TREE_INTERFACE, 47 { 48 itemHeight: 10, 49 onFocus: item => renderTree({ shown: item }) 50 }, 51 props 52 ); 53 return ReactDOM.render(Tree(treeProps), window.document.body); 54 } 55 56 info("Test first shown."); 57 const tree = renderTree({ shown: "A" }); 58 await forceRender(tree); 59 60 isRenderedTree(document.body.textContent, [ 61 "A:false", 62 "-B:false", 63 "--E:false", 64 "---K:false", 65 ], "Should render initial correctly"); 66 67 info("Test last as shown when it was not yet rendered."); 68 renderTree({ shown: "O" }); 69 await forceRender(tree); 70 71 isRenderedTree(document.body.textContent, [ 72 "--J:false", 73 "M:false", 74 "-N:false", 75 "--O:false", 76 ], "Should render shown item correctly"); 77 78 info("Test first item shown when it's not first rendered."); 79 renderTree({ shown: "A" }); 80 await forceRender(tree); 81 82 isRenderedTree(document.body.textContent, [ 83 "A:false", 84 "-B:false", 85 "--E:false", 86 "---K:false", 87 ], "Should render shown item correctly"); 88 89 info("Test mid item shown when it's not first rendered."); 90 renderTree({ shown: "G" }); 91 await forceRender(tree); 92 93 isRenderedTree(document.body.textContent, [ 94 "--F:false", 95 "--G:false", 96 "-C:false", 97 "--H:false", 98 "--I:false", 99 ], "Should render shown item correctly"); 100 101 info("Test mid item shown when it's already rendered."); 102 renderTree({ shown: "C" }); 103 await forceRender(tree); 104 105 isRenderedTree(document.body.textContent, [ 106 "--F:false", 107 "--G:false", 108 "-C:false", 109 "--H:false", 110 "--I:false", 111 ], "Should render shown item correctly"); 112 113 info("Test item that is not in traversal."); 114 renderTree({ shown: "Z" }); 115 await forceRender(tree); 116 117 isRenderedTree(document.body.textContent, [ 118 "--F:false", 119 "--G:false", 120 "-C:false", 121 "--H:false", 122 "--I:false", 123 ], "Should render without changes"); 124 125 info("Test item that is already shown."); 126 renderTree({ shown: "F" }); 127 await forceRender(tree); 128 129 isRenderedTree(document.body.textContent, [ 130 "---L:false", 131 "--F:false", 132 "--G:false", 133 "-C:false", 134 "--H:false", 135 ], "Should render without changes"); 136 } catch (e) { 137 ok(false, "Got an error: " + DevToolsUtils.safeErrorString(e)); 138 } finally { 139 SimpleTest.finish(); 140 } 141 }; 142 </script> 143 </pre> 144 </body> 145 </html>