| OLD | NEW | 
| (Empty) |  | 
 |    1 <!DOCTYPE html> | 
 |    2 <html> | 
 |    3 <head> | 
 |    4 <meta charset="utf-8"> | 
 |    5 <script src="../../js/resources/js-test-pre.js"></script> | 
 |    6 </head> | 
 |    7 <body> | 
 |    8 <style> | 
 |    9  | 
 |   10 .relative200x400 { | 
 |   11     position: relative; | 
 |   12     width: 200px; | 
 |   13     height: 400px; | 
 |   14     font-size: 10px; | 
 |   15 } | 
 |   16  | 
 |   17 #test { | 
 |   18     position: absolute; | 
 |   19 } | 
 |   20  | 
 |   21 </style> | 
 |   22 <div id="tests"> | 
 |   23 <div class="relative200x400"><div id="test"></div></div> | 
 |   24 </div> | 
 |   25 <script> | 
 |   26  | 
 |   27 description("Test to make sure top/bottom/left/right properly returns pixel valu
     es for any input.") | 
 |   28  | 
 |   29 var test = document.getElementById('test'); | 
 |   30  | 
 |   31  | 
 |   32 //----------------------------------------------------------------------------- | 
 |   33 debug(''); | 
 |   34 debug('No offsets (zero width/height)'); | 
 |   35 debug(''); | 
 |   36 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |   37 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |   38 shouldBe("getComputedStyle(test).right", "'200px'"); | 
 |   39 shouldBe("getComputedStyle(test).bottom", "'400px'"); | 
 |   40 shouldBe("getComputedStyle(test).width", "'0px'"); | 
 |   41 shouldBe("getComputedStyle(test).height", "'0px'"); | 
 |   42  | 
 |   43 // On padding/border/margin on actual node | 
 |   44 debug(''); | 
 |   45 evalAndLog("test.setAttribute('style', 'padding: 5px;')"); | 
 |   46 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |   47 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |   48 shouldBe("getComputedStyle(test).right", "'190px'"); | 
 |   49 shouldBe("getComputedStyle(test).bottom", "'390px'"); | 
 |   50 shouldBe("getComputedStyle(test).width", "'0px'"); | 
 |   51 shouldBe("getComputedStyle(test).height", "'0px'"); | 
 |   52  | 
 |   53 debug(''); | 
 |   54 evalAndLog("test.setAttribute('style', 'border: solid 5px;')"); | 
 |   55 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |   56 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |   57 shouldBe("getComputedStyle(test).right", "'190px'"); | 
 |   58 shouldBe("getComputedStyle(test).bottom", "'390px'"); | 
 |   59 shouldBe("getComputedStyle(test).width", "'0px'"); | 
 |   60 shouldBe("getComputedStyle(test).height", "'0px'"); | 
 |   61  | 
 |   62 debug(''); | 
 |   63 evalAndLog("test.setAttribute('style', 'margin: 5px;')"); | 
 |   64 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |   65 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |   66 shouldBe("getComputedStyle(test).right", "'190px'"); | 
 |   67 shouldBe("getComputedStyle(test).bottom", "'390px'"); | 
 |   68 shouldBe("getComputedStyle(test).width", "'0px'"); | 
 |   69 shouldBe("getComputedStyle(test).height", "'0px'"); | 
 |   70  | 
 |   71 evalAndLog("test.setAttribute('style', '')"); | 
 |   72  | 
 |   73 // On padding/border/margin on parent node | 
 |   74 debug(''); | 
 |   75 evalAndLog("test.parentNode.setAttribute('style', 'padding: 5px;')"); | 
 |   76 shouldBe("getComputedStyle(test).top", "'5px'"); | 
 |   77 shouldBe("getComputedStyle(test).left", "'5px'"); | 
 |   78 shouldBe("getComputedStyle(test).right", "'205px'"); | 
 |   79 shouldBe("getComputedStyle(test).bottom", "'405px'"); | 
 |   80 shouldBe("getComputedStyle(test).width", "'0px'"); | 
 |   81 shouldBe("getComputedStyle(test).height", "'0px'"); | 
 |   82  | 
 |   83 debug(''); | 
 |   84 evalAndLog("test.parentNode.setAttribute('style', 'border: solid 5px;')"); | 
 |   85 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |   86 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |   87 shouldBe("getComputedStyle(test).right", "'200px'"); | 
 |   88 shouldBe("getComputedStyle(test).bottom", "'400px'"); | 
 |   89 shouldBe("getComputedStyle(test).width", "'0px'"); | 
 |   90 shouldBe("getComputedStyle(test).height", "'0px'"); | 
 |   91  | 
 |   92 debug(''); | 
 |   93 evalAndLog("test.parentNode.setAttribute('style', 'margin: 5px;')"); | 
 |   94 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |   95 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |   96 shouldBe("getComputedStyle(test).right", "'200px'"); | 
 |   97 shouldBe("getComputedStyle(test).bottom", "'400px'"); | 
 |   98 shouldBe("getComputedStyle(test).width", "'0px'"); | 
 |   99 shouldBe("getComputedStyle(test).height", "'0px'"); | 
 |  100  | 
 |  101 //----------------------------------------------------------------------------- | 
 |  102 debug(''); | 
 |  103 debug('No offsets (50px width/height)'); | 
 |  104 debug(''); | 
 |  105 var commonStyle = "width: 50px; height: 50px;"; | 
 |  106 evalAndLog("test.setAttribute('style', '"+commonStyle+"')"); | 
 |  107 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  108 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  109 shouldBe("getComputedStyle(test).right", "'150px'"); | 
 |  110 shouldBe("getComputedStyle(test).bottom", "'350px'"); | 
 |  111 shouldBe("getComputedStyle(test).width", "'50px'"); | 
 |  112 shouldBe("getComputedStyle(test).height", "'50px'"); | 
 |  113  | 
 |  114 // On padding/border/margin on actual node | 
 |  115 debug(''); | 
 |  116 evalAndLog("test.setAttribute('style', '"+commonStyle+" padding: 5px;')"); | 
 |  117 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  118 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  119 shouldBe("getComputedStyle(test).right", "'140px'"); | 
 |  120 shouldBe("getComputedStyle(test).bottom", "'340px'"); | 
 |  121 shouldBe("getComputedStyle(test).width", "'50px'"); | 
 |  122 shouldBe("getComputedStyle(test).height", "'50px'"); | 
 |  123  | 
 |  124 debug(''); | 
 |  125 evalAndLog("test.setAttribute('style', '"+commonStyle+" border: solid 5px;')"); | 
 |  126 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  127 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  128 shouldBe("getComputedStyle(test).right", "'140px'"); | 
 |  129 shouldBe("getComputedStyle(test).bottom", "'340px'"); | 
 |  130 shouldBe("getComputedStyle(test).width", "'50px'"); | 
 |  131 shouldBe("getComputedStyle(test).height", "'50px'"); | 
 |  132  | 
 |  133 debug(''); | 
 |  134 evalAndLog("test.setAttribute('style', '"+commonStyle+" margin: 5px;')"); | 
 |  135 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  136 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  137 shouldBe("getComputedStyle(test).right", "'140px'"); | 
 |  138 shouldBe("getComputedStyle(test).bottom", "'340px'"); | 
 |  139 shouldBe("getComputedStyle(test).width", "'50px'"); | 
 |  140 shouldBe("getComputedStyle(test).height", "'50px'"); | 
 |  141 evalAndLog("test.removeAttribute('style', 'margin')"); | 
 |  142  | 
 |  143 // On padding/border/margin on parent node | 
 |  144 debug(''); | 
 |  145 evalAndLog("test.setAttribute('style', '"+commonStyle+"')"); | 
 |  146 debug(''); | 
 |  147 evalAndLog("test.parentNode.setAttribute('style', 'padding: 5px;')"); | 
 |  148 shouldBe("getComputedStyle(test).top", "'5px'"); | 
 |  149 shouldBe("getComputedStyle(test).left", "'5px'"); | 
 |  150 shouldBe("getComputedStyle(test).right", "'155px'"); | 
 |  151 shouldBe("getComputedStyle(test).bottom", "'355px'"); | 
 |  152 shouldBe("getComputedStyle(test).width", "'50px'"); | 
 |  153 shouldBe("getComputedStyle(test).height", "'50px'"); | 
 |  154  | 
 |  155 debug(''); | 
 |  156 evalAndLog("test.parentNode.setAttribute('style', 'border: solid 5px;')"); | 
 |  157 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  158 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  159 shouldBe("getComputedStyle(test).right", "'150px'"); | 
 |  160 shouldBe("getComputedStyle(test).bottom", "'350px'"); | 
 |  161 shouldBe("getComputedStyle(test).width", "'50px'"); | 
 |  162 shouldBe("getComputedStyle(test).height", "'50px'"); | 
 |  163  | 
 |  164 debug(''); | 
 |  165 evalAndLog("test.parentNode.setAttribute('style', 'margin: 5px;')"); | 
 |  166 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  167 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  168 shouldBe("getComputedStyle(test).right", "'150px'"); | 
 |  169 shouldBe("getComputedStyle(test).bottom", "'350px'"); | 
 |  170 shouldBe("getComputedStyle(test).width", "'50px'"); | 
 |  171 shouldBe("getComputedStyle(test).height", "'50px'"); | 
 |  172  | 
 |  173  | 
 |  174 //----------------------------------------------------------------------------- | 
 |  175 debug(''); | 
 |  176 debug('No offsets (100% width/height)'); | 
 |  177 debug(''); | 
 |  178 var commonStyle = "width: 100%; height: 100%;"; | 
 |  179 evalAndLog("test.setAttribute('style', '"+commonStyle+"')"); | 
 |  180 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  181 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  182 shouldBe("getComputedStyle(test).right", "'0px'"); | 
 |  183 shouldBe("getComputedStyle(test).bottom", "'0px'"); | 
 |  184 shouldBe("getComputedStyle(test).width", "'200px'"); | 
 |  185 shouldBe("getComputedStyle(test).height", "'400px'"); | 
 |  186  | 
 |  187 // On padding/border/margin on actual node | 
 |  188 debug(''); | 
 |  189 evalAndLog("test.setAttribute('style', '"+commonStyle+" padding: 5px;')"); | 
 |  190 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  191 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  192 shouldBe("getComputedStyle(test).right", "'-10px'"); | 
 |  193 shouldBe("getComputedStyle(test).bottom", "'-10px'"); | 
 |  194 shouldBe("getComputedStyle(test).width", "'200px'"); | 
 |  195 shouldBe("getComputedStyle(test).height", "'400px'"); | 
 |  196 evalAndLog("test.removeAttribute('style', 'padding')"); | 
 |  197  | 
 |  198 debug(''); | 
 |  199 evalAndLog("test.setAttribute('style', '"+commonStyle+" border: solid 5px;')"); | 
 |  200 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  201 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  202 shouldBe("getComputedStyle(test).right", "'-10px'"); | 
 |  203 shouldBe("getComputedStyle(test).bottom", "'-10px'"); | 
 |  204 shouldBe("getComputedStyle(test).width", "'200px'"); | 
 |  205 shouldBe("getComputedStyle(test).height", "'400px'"); | 
 |  206 evalAndLog("test.removeAttribute('style', 'border')"); | 
 |  207  | 
 |  208 debug(''); | 
 |  209 evalAndLog("test.setAttribute('style', '"+commonStyle+" margin: 5px;')"); | 
 |  210 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  211 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  212 shouldBe("getComputedStyle(test).right", "'-10px'"); | 
 |  213 shouldBe("getComputedStyle(test).bottom", "'-10px'"); | 
 |  214 shouldBe("getComputedStyle(test).width", "'200px'"); | 
 |  215 shouldBe("getComputedStyle(test).height", "'400px'"); | 
 |  216 evalAndLog("test.removeAttribute('style', 'margin')"); | 
 |  217  | 
 |  218 // On padding/border/margin on parent node | 
 |  219 debug(''); | 
 |  220 evalAndLog("test.setAttribute('style', '"+commonStyle+"')"); | 
 |  221 debug(''); | 
 |  222 evalAndLog("test.parentNode.setAttribute('style', 'padding: 5px;')"); | 
 |  223 shouldBe("getComputedStyle(test).top", "'5px'"); | 
 |  224 shouldBe("getComputedStyle(test).left", "'5px'"); | 
 |  225 shouldBe("getComputedStyle(test).right", "'-5px'"); | 
 |  226 shouldBe("getComputedStyle(test).bottom", "'-5px'"); | 
 |  227 shouldBe("getComputedStyle(test).width", "'210px'"); | 
 |  228 shouldBe("getComputedStyle(test).height", "'410px'"); | 
 |  229  | 
 |  230 debug(''); | 
 |  231 evalAndLog("test.parentNode.setAttribute('style', 'border: solid 5px;')"); | 
 |  232 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  233 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  234 shouldBe("getComputedStyle(test).right", "'0px'"); | 
 |  235 shouldBe("getComputedStyle(test).bottom", "'0px'"); | 
 |  236 shouldBe("getComputedStyle(test).width", "'200px'"); | 
 |  237 shouldBe("getComputedStyle(test).height", "'400px'"); | 
 |  238  | 
 |  239 debug(''); | 
 |  240 evalAndLog("test.parentNode.setAttribute('style', 'margin: 5px;')"); | 
 |  241 shouldBe("getComputedStyle(test).top", "'0px'"); | 
 |  242 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  243 shouldBe("getComputedStyle(test).right", "'0px'"); | 
 |  244 shouldBe("getComputedStyle(test).bottom", "'0px'"); | 
 |  245 shouldBe("getComputedStyle(test).width", "'200px'"); | 
 |  246 shouldBe("getComputedStyle(test).height", "'400px'"); | 
 |  247  | 
 |  248 //----------------------------------------------------------------------------- | 
 |  249 debug(''); | 
 |  250 debug('% offsets (top/left)'); | 
 |  251 debug(''); | 
 |  252 evalAndLog("test.setAttribute('style', 'top: 10%; left: 10%; width: 50%; height:
      60%;')"); | 
 |  253 shouldBe("getComputedStyle(test).top", "'40px'"); | 
 |  254 shouldBe("getComputedStyle(test).left", "'20px'"); | 
 |  255 shouldBe("getComputedStyle(test).right", "'80px'"); | 
 |  256 shouldBe("getComputedStyle(test).bottom", "'120px'"); | 
 |  257 shouldBe("getComputedStyle(test).width", "'100px'"); | 
 |  258 shouldBe("getComputedStyle(test).height", "'240px'"); | 
 |  259  | 
 |  260 debug(''); | 
 |  261 evalAndLog("test.parentNode.setAttribute('style', 'padding: 25px;')"); | 
 |  262 shouldBe("getComputedStyle(test).top", "'45px'"); | 
 |  263 shouldBe("getComputedStyle(test).left", "'25px'"); | 
 |  264 shouldBe("getComputedStyle(test).right", "'100px'"); | 
 |  265 shouldBe("getComputedStyle(test).bottom", "'135px'"); | 
 |  266 shouldBe("getComputedStyle(test).width", "'125px'"); | 
 |  267 shouldBe("getComputedStyle(test).height", "'270px'"); | 
 |  268 evalAndLog("test.parentNode.removeAttribute('style', 'padding')"); | 
 |  269  | 
 |  270 debug(''); | 
 |  271 evalAndLog("test.parentNode.setAttribute('style', 'border: solid 25px;')"); | 
 |  272 shouldBe("getComputedStyle(test).top", "'40px'"); | 
 |  273 shouldBe("getComputedStyle(test).left", "'20px'"); | 
 |  274 shouldBe("getComputedStyle(test).right", "'80px'"); | 
 |  275 shouldBe("getComputedStyle(test).bottom", "'120px'"); | 
 |  276 shouldBe("getComputedStyle(test).width", "'100px'"); | 
 |  277 shouldBe("getComputedStyle(test).height", "'240px'"); | 
 |  278 evalAndLog("test.parentNode.removeAttribute('style', 'border')"); | 
 |  279  | 
 |  280 debug(''); | 
 |  281 evalAndLog("test.parentNode.setAttribute('style', 'margin: 25px;')"); | 
 |  282 shouldBe("getComputedStyle(test).top", "'40px'"); | 
 |  283 shouldBe("getComputedStyle(test).left", "'20px'"); | 
 |  284 shouldBe("getComputedStyle(test).right", "'80px'"); | 
 |  285 shouldBe("getComputedStyle(test).bottom", "'120px'"); | 
 |  286 shouldBe("getComputedStyle(test).width", "'100px'"); | 
 |  287 shouldBe("getComputedStyle(test).height", "'240px'"); | 
 |  288 evalAndLog("test.parentNode.removeAttribute('style', 'margin')"); | 
 |  289  | 
 |  290  | 
 |  291 //----------------------------------------------------------------------------- | 
 |  292 debug(''); | 
 |  293 debug('% offsets (right/bottom)'); | 
 |  294 debug(''); | 
 |  295 evalAndLog("test.setAttribute('style', 'right: 10%; bottom: 10%; width: 90%; hei
     ght: 80%;')"); | 
 |  296 shouldBe("getComputedStyle(test).top", "'40px'"); | 
 |  297 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  298 shouldBe("getComputedStyle(test).right", "'20px'"); | 
 |  299 shouldBe("getComputedStyle(test).bottom", "'40px'"); | 
 |  300 shouldBe("getComputedStyle(test).width", "'180px'"); | 
 |  301 shouldBe("getComputedStyle(test).height", "'320px'"); | 
 |  302  | 
 |  303  | 
 |  304 // On padding/border/margin on parent node | 
 |  305 debug(''); | 
 |  306 evalAndLog("test.parentNode.setAttribute('style', 'padding: 25px;')"); | 
 |  307 shouldBe("getComputedStyle(test).top", "'45px'"); | 
 |  308 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  309 shouldBe("getComputedStyle(test).right", "'25px'"); | 
 |  310 shouldBe("getComputedStyle(test).bottom", "'45px'"); | 
 |  311 shouldBe("getComputedStyle(test).width", "'225px'"); | 
 |  312 shouldBe("getComputedStyle(test).height", "'360px'"); | 
 |  313 evalAndLog("test.parentNode.removeAttribute('style', 'padding')"); | 
 |  314  | 
 |  315 debug(''); | 
 |  316 evalAndLog("test.parentNode.setAttribute('style', 'border: solid 25px;')"); | 
 |  317 shouldBe("getComputedStyle(test).top", "'40px'"); | 
 |  318 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  319 shouldBe("getComputedStyle(test).right", "'20px'"); | 
 |  320 shouldBe("getComputedStyle(test).bottom", "'40px'"); | 
 |  321 shouldBe("getComputedStyle(test).width", "'180px'"); | 
 |  322 shouldBe("getComputedStyle(test).height", "'320px'"); | 
 |  323 evalAndLog("test.parentNode.removeAttribute('style', 'border')"); | 
 |  324  | 
 |  325 debug(''); | 
 |  326 evalAndLog("test.parentNode.setAttribute('style', 'margin: 25px;')"); | 
 |  327 shouldBe("getComputedStyle(test).top", "'40px'"); | 
 |  328 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  329 shouldBe("getComputedStyle(test).right", "'20px'"); | 
 |  330 shouldBe("getComputedStyle(test).bottom", "'40px'"); | 
 |  331 shouldBe("getComputedStyle(test).width", "'180px'"); | 
 |  332 shouldBe("getComputedStyle(test).height", "'320px'"); | 
 |  333 evalAndLog("test.parentNode.removeAttribute('style', 'margin')"); | 
 |  334  | 
 |  335  | 
 |  336  | 
 |  337 //----------------------------------------------------------------------------- | 
 |  338 debug(''); | 
 |  339 debug('em offsets'); | 
 |  340 debug(''); | 
 |  341 evalAndLog("test.setAttribute('style', 'top: 1em; left: 2em; width: 3em; height:
      4em;')"); | 
 |  342 shouldBe("getComputedStyle(test).top", "'10px'"); | 
 |  343 shouldBe("getComputedStyle(test).left", "'20px'"); | 
 |  344 shouldBe("getComputedStyle(test).right", "'150px'"); | 
 |  345 shouldBe("getComputedStyle(test).bottom", "'350px'"); | 
 |  346 shouldBe("getComputedStyle(test).width", "'30px'"); | 
 |  347 shouldBe("getComputedStyle(test).height", "'40px'"); | 
 |  348  | 
 |  349 // On padding/border/margin on parent node | 
 |  350 debug(''); | 
 |  351 evalAndLog("test.parentNode.setAttribute('style', 'padding: 25px;')"); | 
 |  352 shouldBe("getComputedStyle(test).top", "'10px'"); | 
 |  353 shouldBe("getComputedStyle(test).left", "'20px'"); | 
 |  354 shouldBe("getComputedStyle(test).right", "'200px'"); | 
 |  355 shouldBe("getComputedStyle(test).bottom", "'400px'"); | 
 |  356 shouldBe("getComputedStyle(test).width", "'30px'"); | 
 |  357 shouldBe("getComputedStyle(test).height", "'40px'"); | 
 |  358  | 
 |  359 debug(''); | 
 |  360 evalAndLog("test.parentNode.setAttribute('style', 'border: solid 25px;')"); | 
 |  361 shouldBe("getComputedStyle(test).top", "'10px'"); | 
 |  362 shouldBe("getComputedStyle(test).left", "'20px'"); | 
 |  363 shouldBe("getComputedStyle(test).right", "'150px'"); | 
 |  364 shouldBe("getComputedStyle(test).bottom", "'350px'"); | 
 |  365 shouldBe("getComputedStyle(test).width", "'30px'"); | 
 |  366 shouldBe("getComputedStyle(test).height", "'40px'"); | 
 |  367  | 
 |  368 debug(''); | 
 |  369 evalAndLog("test.parentNode.setAttribute('style', 'margin: 25px;')"); | 
 |  370 shouldBe("getComputedStyle(test).top", "'10px'"); | 
 |  371 shouldBe("getComputedStyle(test).left", "'20px'"); | 
 |  372 shouldBe("getComputedStyle(test).right", "'150px'"); | 
 |  373 shouldBe("getComputedStyle(test).bottom", "'350px'"); | 
 |  374 shouldBe("getComputedStyle(test).width", "'30px'"); | 
 |  375 shouldBe("getComputedStyle(test).height", "'40px'"); | 
 |  376  | 
 |  377 //----------------------------------------------------------------------------- | 
 |  378 debug(''); | 
 |  379 debug('Absolute Offsets'); | 
 |  380 debug(''); | 
 |  381 evalAndLog("test.setAttribute('style', 'position: absolute; top: 30px; height: 3
     00px;')"); | 
 |  382 shouldBe("getComputedStyle(test).top", "'30px'"); | 
 |  383 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  384 shouldBe("getComputedStyle(test).right", "'200px'"); | 
 |  385 shouldBe("getComputedStyle(test).bottom", "'70px'"); | 
 |  386 shouldBe("getComputedStyle(test).width", "'0px'"); | 
 |  387 shouldBe("getComputedStyle(test).height", "'300px'"); | 
 |  388  | 
 |  389 debug(''); | 
 |  390 evalAndLog("test.parentNode.setAttribute('style', 'padding: 25px;')"); | 
 |  391 shouldBe("getComputedStyle(test).top", "'30px'"); | 
 |  392 shouldBe("getComputedStyle(test).left", "'25px'"); | 
 |  393 shouldBe("getComputedStyle(test).right", "'225px'"); | 
 |  394 shouldBe("getComputedStyle(test).bottom", "'120px'"); | 
 |  395 shouldBe("getComputedStyle(test).width", "'0px'"); | 
 |  396 shouldBe("getComputedStyle(test).height", "'300px'"); | 
 |  397  | 
 |  398 debug(''); | 
 |  399 evalAndLog("test.parentNode.setAttribute('style', 'border: solid 25px;')"); | 
 |  400 shouldBe("getComputedStyle(test).top", "'30px'"); | 
 |  401 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  402 shouldBe("getComputedStyle(test).right", "'200px'"); | 
 |  403 shouldBe("getComputedStyle(test).bottom", "'70px'"); | 
 |  404 shouldBe("getComputedStyle(test).width", "'0px'"); | 
 |  405 shouldBe("getComputedStyle(test).height", "'300px'"); | 
 |  406  | 
 |  407 debug(''); | 
 |  408 evalAndLog("test.parentNode.setAttribute('style', 'margin: 25px;')"); | 
 |  409 shouldBe("getComputedStyle(test).top", "'30px'"); | 
 |  410 shouldBe("getComputedStyle(test).left", "'0px'"); | 
 |  411 shouldBe("getComputedStyle(test).right", "'200px'"); | 
 |  412 shouldBe("getComputedStyle(test).bottom", "'70px'"); | 
 |  413 shouldBe("getComputedStyle(test).width", "'0px'"); | 
 |  414 shouldBe("getComputedStyle(test).height", "'300px'"); | 
 |  415  | 
 |  416 </script> | 
 |  417 <script src="../../js/resources/js-test-post.js"></script> | 
 |  418 </body> | 
 |  419 </html> | 
| OLD | NEW |