test_scroll_inactive_bug1190112.html (6370B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test scrolling flattened inactive frames</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <script src="/tests/SimpleTest/EventUtils.js"></script> 7 <script src="/tests/SimpleTest/paint_listener.js"></script> 8 <script type="application/javascript" src="apz_test_utils.js"></script> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 10 <style> 11 p { 12 width:200px; 13 height:200px; 14 border:solid 1px black; 15 overflow:auto; 16 } 17 </style> 18 </head> 19 <body> 20 <div id="iframe-body" style="overflow: auto; height: 1000px"> 21 <hr> 22 <hr> 23 <hr> 24 <p> 25 1 <br> 26 2 <br> 27 3 <br> 28 4 <br> 29 5 <br> 30 6 <br> 31 7 <br> 32 8 <br> 33 9 <br> 34 10 <br> 35 11 <br> 36 12 <br> 37 13 <br> 38 14 <br> 39 15 <br> 40 16 <br> 41 17 <br> 42 18 <br> 43 19 <br> 44 20 <br> 45 21 <br> 46 22 <br> 47 23 <br> 48 24 <br> 49 25 <br> 50 26 <br> 51 27 <br> 52 28 <br> 53 29 <br> 54 30 <br> 55 31 <br> 56 32 <br> 57 33 <br> 58 34 <br> 59 35 <br> 60 36 <br> 61 37 <br> 62 38 <br> 63 39 <br> 64 40 <br> 65 66 </p><p id="subframe"> 67 1 <br> 68 2 <br> 69 3 <br> 70 4 <br> 71 5 <br> 72 6 <br> 73 7 <br> 74 8 <br> 75 9 <br> 76 10 <br> 77 11 <br> 78 12 <br> 79 13 <br> 80 14 <br> 81 15 <br> 82 16 <br> 83 17 <br> 84 18 <br> 85 19 <br> 86 20 <br> 87 21 <br> 88 22 <br> 89 23 <br> 90 24 <br> 91 25 <br> 92 26 <br> 93 27 <br> 94 28 <br> 95 29 <br> 96 30 <br> 97 31 <br> 98 32 <br> 99 33 <br> 100 34 <br> 101 35 <br> 102 36 <br> 103 37 <br> 104 38 <br> 105 39 <br> 106 40 <br> 107 108 </p><p> 109 1 <br> 110 2 <br> 111 3 <br> 112 4 <br> 113 5 <br> 114 6 <br> 115 7 <br> 116 8 <br> 117 9 <br> 118 10 <br> 119 11 <br> 120 12 <br> 121 13 <br> 122 14 <br> 123 15 <br> 124 16 <br> 125 17 <br> 126 18 <br> 127 19 <br> 128 20 <br> 129 21 <br> 130 22 <br> 131 23 <br> 132 24 <br> 133 25 <br> 134 26 <br> 135 27 <br> 136 28 <br> 137 29 <br> 138 30 <br> 139 31 <br> 140 32 <br> 141 33 <br> 142 34 <br> 143 35 <br> 144 36 <br> 145 37 <br> 146 38 <br> 147 39 <br> 148 40 <br> 149 150 </p><p> 151 1 <br> 152 2 <br> 153 3 <br> 154 4 <br> 155 5 <br> 156 6 <br> 157 7 <br> 158 8 <br> 159 9 <br> 160 10 <br> 161 11 <br> 162 12 <br> 163 13 <br> 164 14 <br> 165 15 <br> 166 16 <br> 167 17 <br> 168 18 <br> 169 19 <br> 170 20 <br> 171 21 <br> 172 22 <br> 173 23 <br> 174 24 <br> 175 25 <br> 176 26 <br> 177 27 <br> 178 28 <br> 179 29 <br> 180 30 <br> 181 31 <br> 182 32 <br> 183 33 <br> 184 34 <br> 185 35 <br> 186 36 <br> 187 37 <br> 188 38 <br> 189 39 <br> 190 40 <br> 191 192 </p><p> 193 1 <br> 194 2 <br> 195 3 <br> 196 4 <br> 197 5 <br> 198 6 <br> 199 7 <br> 200 8 <br> 201 9 <br> 202 10 <br> 203 11 <br> 204 12 <br> 205 13 <br> 206 14 <br> 207 15 <br> 208 16 <br> 209 17 <br> 210 18 <br> 211 19 <br> 212 20 <br> 213 21 <br> 214 22 <br> 215 23 <br> 216 24 <br> 217 25 <br> 218 26 <br> 219 27 <br> 220 28 <br> 221 29 <br> 222 30 <br> 223 31 <br> 224 32 <br> 225 33 <br> 226 34 <br> 227 35 <br> 228 36 <br> 229 37 <br> 230 38 <br> 231 39 <br> 232 40 <br> 233 234 </p><p> 235 1 <br> 236 2 <br> 237 3 <br> 238 4 <br> 239 5 <br> 240 6 <br> 241 7 <br> 242 8 <br> 243 9 <br> 244 10 <br> 245 11 <br> 246 12 <br> 247 13 <br> 248 14 <br> 249 15 <br> 250 16 <br> 251 17 <br> 252 18 <br> 253 19 <br> 254 20 <br> 255 21 <br> 256 22 <br> 257 23 <br> 258 24 <br> 259 25 <br> 260 26 <br> 261 27 <br> 262 28 <br> 263 29 <br> 264 30 <br> 265 31 <br> 266 32 <br> 267 33 <br> 268 34 <br> 269 35 <br> 270 36 <br> 271 37 <br> 272 38 <br> 273 39 <br> 274 40 <br> 275 276 </p><p> 277 1 <br> 278 2 <br> 279 3 <br> 280 4 <br> 281 5 <br> 282 6 <br> 283 7 <br> 284 8 <br> 285 9 <br> 286 10 <br> 287 11 <br> 288 12 <br> 289 13 <br> 290 14 <br> 291 15 <br> 292 16 <br> 293 17 <br> 294 18 <br> 295 19 <br> 296 20 <br> 297 21 <br> 298 22 <br> 299 23 <br> 300 24 <br> 301 25 <br> 302 26 <br> 303 27 <br> 304 28 <br> 305 29 <br> 306 30 <br> 307 31 <br> 308 32 <br> 309 33 <br> 310 34 <br> 311 35 <br> 312 36 <br> 313 37 <br> 314 38 <br> 315 39 <br> 316 40 <br> 317 318 </p><p> 319 1 <br> 320 2 <br> 321 3 <br> 322 4 <br> 323 5 <br> 324 6 <br> 325 7 <br> 326 8 <br> 327 9 <br> 328 10 <br> 329 11 <br> 330 12 <br> 331 13 <br> 332 14 <br> 333 15 <br> 334 16 <br> 335 17 <br> 336 18 <br> 337 19 <br> 338 20 <br> 339 21 <br> 340 22 <br> 341 23 <br> 342 24 <br> 343 25 <br> 344 26 <br> 345 27 <br> 346 28 <br> 347 29 <br> 348 30 <br> 349 31 <br> 350 32 <br> 351 33 <br> 352 34 <br> 353 35 <br> 354 36 <br> 355 37 <br> 356 38 <br> 357 39 <br> 358 40 <br> 359 360 </p><p> 361 1 <br> 362 2 <br> 363 3 <br> 364 4 <br> 365 5 <br> 366 6 <br> 367 7 <br> 368 8 <br> 369 9 <br> 370 10 <br> 371 11 <br> 372 12 <br> 373 13 <br> 374 14 <br> 375 15 <br> 376 16 <br> 377 17 <br> 378 18 <br> 379 19 <br> 380 20 <br> 381 21 <br> 382 22 <br> 383 23 <br> 384 24 <br> 385 25 <br> 386 26 <br> 387 27 <br> 388 28 <br> 389 29 <br> 390 30 <br> 391 31 <br> 392 32 <br> 393 33 <br> 394 34 <br> 395 35 <br> 396 36 <br> 397 37 <br> 398 38 <br> 399 39 <br> 400 40 <br> 401 402 </p><p> 403 1 <br> 404 2 <br> 405 3 <br> 406 4 <br> 407 5 <br> 408 6 <br> 409 7 <br> 410 8 <br> 411 9 <br> 412 10 <br> 413 11 <br> 414 12 <br> 415 13 <br> 416 14 <br> 417 15 <br> 418 16 <br> 419 17 <br> 420 18 <br> 421 19 <br> 422 20 <br> 423 21 <br> 424 22 <br> 425 23 <br> 426 24 <br> 427 25 <br> 428 26 <br> 429 27 <br> 430 28 <br> 431 29 <br> 432 30 <br> 433 31 <br> 434 32 <br> 435 33 <br> 436 34 <br> 437 35 <br> 438 36 <br> 439 37 <br> 440 38 <br> 441 39 <br> 442 40 <br> 443 444 </p><p> 445 1 <br> 446 2 <br> 447 3 <br> 448 4 <br> 449 5 <br> 450 6 <br> 451 7 <br> 452 8 <br> 453 9 <br> 454 10 <br> 455 11 <br> 456 12 <br> 457 13 <br> 458 14 <br> 459 15 <br> 460 16 <br> 461 17 <br> 462 18 <br> 463 19 <br> 464 20 <br> 465 21 <br> 466 22 <br> 467 23 <br> 468 24 <br> 469 25 <br> 470 26 <br> 471 27 <br> 472 28 <br> 473 29 <br> 474 30 <br> 475 31 <br> 476 32 <br> 477 33 <br> 478 34 <br> 479 35 <br> 480 36 <br> 481 37 <br> 482 38 <br> 483 39 <br> 484 40 <br> 485 486 </p> 487 </div> 488 <script clss="testbody" type="text/javascript"> 489 function ScrollTops() { 490 this.outerScrollTop = document.getElementById("iframe-body").scrollTop; 491 this.innerScrollTop = document.getElementById("subframe").scrollTop; 492 } 493 494 var DefaultEvent = { 495 deltaMode: WheelEvent.DOM_DELTA_LINE, 496 deltaX: 0, deltaY: 1, 497 lineOrPageDeltaX: 0, lineOrPageDeltaY: 1, 498 }; 499 500 async function test() { 501 var subframe = document.getElementById("subframe"); 502 var oldpos = new ScrollTops(); 503 await new Promise(resolve => { 504 sendWheelAndPaint(subframe, 10, 10, DefaultEvent, resolve); 505 }); 506 507 var newpos = new ScrollTops(); 508 ok(oldpos.outerScrollTop == newpos.outerScrollTop, "viewport should not have scrolled"); 509 ok(oldpos.innerScrollTop != newpos.innerScrollTop, "subframe should have scrolled"); 510 oldpos = newpos; 511 512 // Scroll outer 513 var outer = document.getElementById("iframe-body"); 514 await new Promise(resolve => { 515 sendWheelAndPaint(outer, 20, 5, DefaultEvent, resolve); 516 }); 517 518 newpos = new ScrollTops(); 519 ok(oldpos.outerScrollTop != newpos.outerScrollTop, "viewport should have scrolled"); 520 ok(oldpos.innerScrollTop == newpos.innerScrollTop, "subframe should not have scrolled"); 521 oldpos = newpos; 522 523 // Scroll inner again 524 // Tick the refresh driver once to make sure the compositor has sent the 525 // updated scroll offset for the outer scroller to WebRender, so that the 526 // hit-test in sendWheelAndPaint takes it into account. 527 var dwu = SpecialPowers.getDOMWindowUtils(window); 528 dwu.advanceTimeAndRefresh(16); 529 dwu.restoreNormalRefresh(); 530 531 await new Promise(resolve => { 532 sendWheelAndPaint(subframe, 10, 10, DefaultEvent, resolve); 533 }); 534 535 newpos = new ScrollTops(); 536 ok(oldpos.outerScrollTop == newpos.outerScrollTop, "viewport should not have scrolled"); 537 ok(oldpos.innerScrollTop != newpos.innerScrollTop, "subframe should have scrolled"); 538 } 539 540 SimpleTest.waitForExplicitFinish(); 541 542 pushPrefs([["general.smoothScroll", false], 543 ["mousewheel.transaction.timeout", 0], 544 ["mousewheel.transaction.ignoremovedelay", 0], 545 ["test.events.async.enabled", true]]) 546 .then(waitUntilApzStable) 547 .then(test) 548 .then(SimpleTest.finish, SimpleTest.finishWithFailure); 549 550 </script> 551 </body> 552 </html>