mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
5ce533edb5
Differential Revision: https://phabricator.services.mozilla.com/D53047 --HG-- rename : widget/cocoa/crashtests/444260-1.xul => widget/cocoa/crashtests/444260-1.xhtml rename : widget/tests/bug586713_window.xul => widget/tests/bug586713_window.xhtml rename : widget/tests/chrome_context_menus_win.xul => widget/tests/chrome_context_menus_win.xhtml rename : widget/tests/empty_window.xul => widget/tests/empty_window.xhtml rename : widget/tests/native_menus_window.xul => widget/tests/native_menus_window.xhtml rename : widget/tests/native_mouse_mac_window.xul => widget/tests/native_mouse_mac_window.xhtml rename : widget/tests/standalone_native_menu_window.xul => widget/tests/standalone_native_menu_window.xhtml rename : widget/tests/system_font_changes.xul => widget/tests/system_font_changes.xhtml rename : widget/tests/taskbar_previews.xul => widget/tests/taskbar_previews.xhtml rename : widget/tests/test_bug1123480.xul => widget/tests/test_bug1123480.xhtml rename : widget/tests/test_bug343416.xul => widget/tests/test_bug343416.xhtml rename : widget/tests/test_bug428405.xul => widget/tests/test_bug428405.xhtml rename : widget/tests/test_bug429954.xul => widget/tests/test_bug429954.xhtml rename : widget/tests/test_bug444800.xul => widget/tests/test_bug444800.xhtml rename : widget/tests/test_bug466599.xul => widget/tests/test_bug466599.xhtml rename : widget/tests/test_bug478536.xul => widget/tests/test_bug478536.xhtml rename : widget/tests/test_bug485118.xul => widget/tests/test_bug485118.xhtml rename : widget/tests/test_bug517396.xul => widget/tests/test_bug517396.xhtml rename : widget/tests/test_bug522217.xul => widget/tests/test_bug522217.xhtml rename : widget/tests/test_bug538242.xul => widget/tests/test_bug538242.xhtml rename : widget/tests/test_bug586713.xul => widget/tests/test_bug586713.xhtml rename : widget/tests/test_bug593307.xul => widget/tests/test_bug593307.xhtml rename : widget/tests/test_bug596600.xul => widget/tests/test_bug596600.xhtml rename : widget/tests/test_bug673301.xul => widget/tests/test_bug673301.xhtml rename : widget/tests/test_bug760802.xul => widget/tests/test_bug760802.xhtml rename : widget/tests/test_chrome_context_menus_win.xul => widget/tests/test_chrome_context_menus_win.xhtml rename : widget/tests/test_clipboard.xul => widget/tests/test_clipboard.xhtml rename : widget/tests/test_composition_text_querycontent.xul => widget/tests/test_composition_text_querycontent.xhtml rename : widget/tests/test_input_events_on_deactive_window.xul => widget/tests/test_input_events_on_deactive_window.xhtml rename : widget/tests/test_key_event_counts.xul => widget/tests/test_key_event_counts.xhtml rename : widget/tests/test_keycodes.xul => widget/tests/test_keycodes.xhtml rename : widget/tests/test_mouse_scroll.xul => widget/tests/test_mouse_scroll.xhtml rename : widget/tests/test_native_menus.xul => widget/tests/test_native_menus.xhtml rename : widget/tests/test_native_mouse_mac.xul => widget/tests/test_native_mouse_mac.xhtml rename : widget/tests/test_panel_mouse_coords.xul => widget/tests/test_panel_mouse_coords.xhtml rename : widget/tests/test_platform_colors.xul => widget/tests/test_platform_colors.xhtml rename : widget/tests/test_position_on_resize.xul => widget/tests/test_position_on_resize.xhtml rename : widget/tests/test_sizemode_events.xul => widget/tests/test_sizemode_events.xhtml rename : widget/tests/test_standalone_native_menu.xul => widget/tests/test_standalone_native_menu.xhtml rename : widget/tests/test_system_font_changes.xul => widget/tests/test_system_font_changes.xhtml rename : widget/tests/test_system_status_bar.xul => widget/tests/test_system_status_bar.xhtml rename : widget/tests/test_taskbar_progress.xul => widget/tests/test_taskbar_progress.xhtml rename : widget/tests/test_transferable_overflow.xul => widget/tests/test_transferable_overflow.xhtml rename : widget/tests/test_wheeltransaction.xul => widget/tests/test_wheeltransaction.xhtml rename : widget/tests/window_bug429954.xul => widget/tests/window_bug429954.xhtml rename : widget/tests/window_bug478536.xul => widget/tests/window_bug478536.xhtml rename : widget/tests/window_bug522217.xul => widget/tests/window_bug522217.xhtml rename : widget/tests/window_bug538242.xul => widget/tests/window_bug538242.xhtml rename : widget/tests/window_bug593307_centerscreen.xul => widget/tests/window_bug593307_centerscreen.xhtml rename : widget/tests/window_bug593307_offscreen.xul => widget/tests/window_bug593307_offscreen.xhtml rename : widget/tests/window_composition_text_querycontent.xul => widget/tests/window_composition_text_querycontent.xhtml rename : widget/tests/window_state_windows.xul => widget/tests/window_state_windows.xhtml rename : widget/tests/window_wheeltransaction.xul => widget/tests/window_wheeltransaction.xhtml extra : moz-landing-system : lando
213 lines
5.4 KiB
HTML
213 lines
5.4 KiB
HTML
<?xml version="1.0"?>
|
|
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
|
|
<window title="Mozilla Bug 478536"
|
|
width="600" height="600"
|
|
onload="onload();"
|
|
onunload="onunload();"
|
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
|
|
|
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
|
|
<script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js" />
|
|
<script src="chrome://mochikit/content/tests/SimpleTest/paint_listener.js" />
|
|
|
|
<body xmlns="http://www.w3.org/1999/xhtml" id="body">
|
|
<style type="text/css">
|
|
#view {
|
|
overflow: auto;
|
|
width: 100px;
|
|
height: 100px;
|
|
border: 1px solid;
|
|
margin: 0;
|
|
}
|
|
</style>
|
|
<pre id="view" onscroll="onScrollView(event);">
|
|
Text. Text. Text. Text. Text. Text. Text. Text. Text. Text. Text.
|
|
Text. Text. Text. Text. Text. Text. Text. Text. Text. Text. Text.
|
|
Text. Text. Text. Text. Text. Text. Text. Text. Text. Text. Text.
|
|
Text. Text. Text. Text. Text. Text. Text. Text. Text. Text. Text.
|
|
Text. Text. Text. Text. Text. Text. Text. Text. Text. Text. Text.
|
|
Text. Text. Text. Text. Text. Text. Text. Text. Text. Text. Text.
|
|
Text. Text. Text. Text. Text. Text. Text. Text. Text. Text. Text.
|
|
Text. Text. Text. Text. Text. Text. Text. Text. Text. Text. Text.
|
|
Text. Text. Text. Text. Text. Text. Text. Text. Text. Text. Text.
|
|
Text. Text. Text. Text. Text. Text. Text. Text. Text. Text. Text.
|
|
</pre>
|
|
</body>
|
|
|
|
<script class="testbody" type="application/javascript">
|
|
<![CDATA[
|
|
|
|
function ok(aCondition, aMessage)
|
|
{
|
|
window.arguments[0].SimpleTest.ok(aCondition, aMessage);
|
|
}
|
|
|
|
function is(aLeft, aRight, aMessage)
|
|
{
|
|
window.arguments[0].SimpleTest.is(aLeft, aRight, aMessage);
|
|
}
|
|
|
|
function isnot(aLeft, aRight, aMessage)
|
|
{
|
|
window.arguments[0].SimpleTest.isnot(aLeft, aRight, aMessage);
|
|
}
|
|
|
|
var gBody = document.getElementById("body");
|
|
var gView = document.getElementById("view");
|
|
|
|
/**
|
|
* Description:
|
|
*
|
|
* First, lock the wheel scrolling target to "view" at first step.
|
|
* Next, scroll back to top most of the "view" at second step.
|
|
* Finally, scroll back again at third step. This fails to scroll the "view",
|
|
* then, |onMouseScrollFailed| event should be fired. And at that time, we
|
|
* can remove the "view". So, in post processing of the event firere, the
|
|
* "view" should not be referred.
|
|
*
|
|
* For suppressing random test failure, all tests will be retried if we handle
|
|
* unexpected timeout event.
|
|
*/
|
|
|
|
var gTests = [
|
|
{ scrollToForward: true, shouldScroll: true },
|
|
{ scrollToForward: false, shouldScroll: true },
|
|
{ scrollToForward: false, shouldScroll: false }
|
|
];
|
|
var gCurrentTestIndex = -1;
|
|
var gIgnoreScrollEvent = true;
|
|
|
|
var gPrefSvc = Cc["@mozilla.org/preferences-service;1"].
|
|
getService(Ci.nsIPrefBranch);
|
|
const kPrefSmoothScroll = "general.smoothScroll";
|
|
const kPrefNameTimeout = "mousewheel.transaction.timeout";
|
|
const kDefaultTimeout = gPrefSvc.getIntPref(kPrefNameTimeout);
|
|
|
|
gPrefSvc.setBoolPref(kPrefSmoothScroll, false);
|
|
|
|
var gTimeout = kDefaultTimeout;
|
|
|
|
gBody.addEventListener("MozMouseScrollFailed", onMouseScrollFailed, false);
|
|
gBody.addEventListener("MozMouseScrollTransactionTimeout",
|
|
onTransactionTimeout, false);
|
|
|
|
function setTimeoutPrefs(aTimeout)
|
|
{
|
|
gPrefSvc.setIntPref(kPrefNameTimeout, aTimeout);
|
|
gTimeout = aTimeout;
|
|
}
|
|
|
|
function resetTimeoutPrefs()
|
|
{
|
|
if (gTimeout == kDefaultTimeout)
|
|
return;
|
|
setTimeoutPrefs(kDefaultTimeout);
|
|
}
|
|
|
|
function growUpTimeoutPrefs()
|
|
{
|
|
if (gTimeout != kDefaultTimeout)
|
|
return;
|
|
setTimeoutPrefs(5000);
|
|
}
|
|
|
|
function onload()
|
|
{
|
|
disableNonTestMouseEvents(true);
|
|
setTimeout(runNextTest, 0);
|
|
}
|
|
|
|
function onunload()
|
|
{
|
|
resetTimeoutPrefs();
|
|
disableNonTestMouseEvents(false);
|
|
gPrefSvc.clearUserPref(kPrefSmoothScroll);
|
|
SpecialPowers.DOMWindowUtils.restoreNormalRefresh();
|
|
window.arguments[0].SimpleTest.finish();
|
|
}
|
|
|
|
function finish()
|
|
{
|
|
window.close();
|
|
}
|
|
|
|
// testing code
|
|
|
|
var gTimer;
|
|
function clearTimer()
|
|
{
|
|
clearTimeout(gTimer);
|
|
gTimer = 0;
|
|
}
|
|
|
|
function runNextTest()
|
|
{
|
|
clearTimer();
|
|
if (++gCurrentTestIndex >= gTests.length) {
|
|
ok(true, "didn't crash, succeeded");
|
|
finish();
|
|
return;
|
|
}
|
|
fireWheelScrollEvent(gTests[gCurrentTestIndex].scrollToForward);
|
|
}
|
|
|
|
var gRetryCount = 5;
|
|
function retryAllTests()
|
|
{
|
|
clearTimer();
|
|
if (--gRetryCount >= 0) {
|
|
gView.scrollTop = 0;
|
|
gView.scrollLeft = 0;
|
|
gCurrentTestIndex = -1;
|
|
growUpTimeoutPrefs();
|
|
ok(true, "WARNING: retry current test-list...");
|
|
gTimer = setTimeout(runNextTest, 0);
|
|
} else {
|
|
ok(false, "Failed by unexpected timeout");
|
|
finish();
|
|
}
|
|
}
|
|
|
|
function fireWheelScrollEvent(aForward)
|
|
{
|
|
gIgnoreScrollEvent = false;
|
|
var event = { deltaY: aForward ? 4.0 : -4.0,
|
|
deltaMode: WheelEvent.DOM_DELTA_LINE };
|
|
sendWheelAndPaint(gView, 5, 5, event, function() {
|
|
// No callback - we're just forcing the refresh driver to tick.
|
|
}, window);
|
|
}
|
|
|
|
function onScrollView(aEvent)
|
|
{
|
|
if (gIgnoreScrollEvent)
|
|
return;
|
|
gIgnoreScrollEvent = true;
|
|
clearTimer();
|
|
ok(gTests[gCurrentTestIndex].shouldScroll, "The view is scrolled");
|
|
gTimer = setTimeout(runNextTest, 0);
|
|
}
|
|
|
|
function onMouseScrollFailed(aEvent)
|
|
{
|
|
clearTimer();
|
|
gIgnoreScrollEvent = true;
|
|
ok(!gTests[gCurrentTestIndex].shouldScroll, "The view is not scrolled");
|
|
if (!gTests[gCurrentTestIndex].shouldScroll)
|
|
gBody.removeChild(gView);
|
|
runNextTest();
|
|
}
|
|
|
|
function onTransactionTimeout(aEvent)
|
|
{
|
|
if (!gTimer)
|
|
return;
|
|
gIgnoreScrollEvent = true;
|
|
retryAllTests();
|
|
}
|
|
|
|
]]>
|
|
</script>
|
|
|
|
</window>
|