forked from mirrors/gecko-dev
		
	 c7c96baf75
			
		
	
	
		c7c96baf75
		
	
	
	
	
		
			
			Differential Revision: https://phabricator.services.mozilla.com/D4563 --HG-- extra : source : 390737876a61c5da48a1957d284d3c315fbd541a extra : intermediate-source : f0b190c1cfb5d2df482f1051bbc0ff98de71235b
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| add_task(async function() {
 | |
|   const kPrefName_AutoScroll = "general.autoScroll";
 | |
|   Services.prefs.setBoolPref(kPrefName_AutoScroll, false);
 | |
| 
 | |
|   let dataUri = 'data:text/html,<html><body id="i" style="overflow-y: scroll"><div style="height: 2000px"></div>\
 | |
|       <iframe id="iframe" style="display: none;"></iframe>\
 | |
| </body></html>';
 | |
| 
 | |
|   let loadedPromise = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
 | |
|   BrowserTestUtils.loadURI(gBrowser, dataUri);
 | |
|   await loadedPromise;
 | |
| 
 | |
|   await BrowserTestUtils.synthesizeMouse("#i", 50, 50, { button: 1 },
 | |
|                                          gBrowser.selectedBrowser);
 | |
| 
 | |
|   await ContentTask.spawn(gBrowser.selectedBrowser, { }, async function() {
 | |
|     var iframe = content.document.getElementById("iframe");
 | |
| 
 | |
|     if (iframe) {
 | |
|       var e = new iframe.contentWindow.PageTransitionEvent("pagehide",
 | |
|                                                            { bubbles: true,
 | |
|                                                              cancelable: true,
 | |
|                                                              persisted: false });
 | |
|       iframe.contentDocument.dispatchEvent(e);
 | |
|       iframe.contentDocument.documentElement.dispatchEvent(e);
 | |
|     }
 | |
|   });
 | |
| 
 | |
|   await BrowserTestUtils.synthesizeMouse("#i", 100, 100,
 | |
|                                          { type: "mousemove", clickCount: "0" },
 | |
|                                          gBrowser.selectedBrowser);
 | |
| 
 | |
|   // If scrolling didn't work, we wouldn't do any redraws and thus time out, so
 | |
|   // request and force redraws to get the chance to check for scrolling at all.
 | |
|   await new Promise(resolve => window.requestAnimationFrame(resolve));
 | |
| 
 | |
|   let msg = await ContentTask.spawn(gBrowser.selectedBrowser, { }, async function() {
 | |
|     // Skip the first animation frame callback as it's the same callback that
 | |
|     // the browser uses to kick off the scrolling.
 | |
|     return new Promise(resolve => {
 | |
|       function checkScroll() {
 | |
|         let msg = "";
 | |
|         let elem = content.document.getElementById("i");
 | |
|         if (elem.scrollTop != 0) {
 | |
|           msg += "element should not have scrolled vertically";
 | |
|         }
 | |
|         if (elem.scrollLeft != 0) {
 | |
|           msg += "element should not have scrolled horizontally";
 | |
|         }
 | |
| 
 | |
|         resolve(msg);
 | |
|       }
 | |
| 
 | |
|       content.requestAnimationFrame(checkScroll);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   ok(!msg, "element scroll " + msg);
 | |
| 
 | |
|   // restore the changed prefs
 | |
|   if (Services.prefs.prefHasUserValue(kPrefName_AutoScroll))
 | |
|     Services.prefs.clearUserPref(kPrefName_AutoScroll);
 | |
| 
 | |
|   // wait for focus to fix a failure in the next test if the latter runs too soon.
 | |
|   await SimpleTest.promiseFocus();
 | |
| });
 |