<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Various touch tests that spawn in new windows</title> <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <script type="application/javascript" src="apz_test_native_event_utils.js"></script> <script type="application/javascript" src="apz_test_utils.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> <script type="application/javascript"> var basic_pan_prefs = [ // Dropping the touch slop to 0 makes the tests easier to write because // we can just do a one-pixel drag to get over the pan threshold rather // than having to hard-code some larger value. ["apz.touch_start_tolerance", "0.0"], // The touchstart from the drag can turn into a long-tap if the touch-move // events get held up. Try to prevent that by making long-taps require // a 10 second hold. Note that we also cannot enable chaos mode on this // test for this reason, since chaos mode can cause the long-press timer // to fire sooner than the pref dictates. ["ui.click_hold_context_menus.delay", 10000], // The subtests in this test do touch-drags to pan the page, but we don't // want those pans to turn into fling animations, so we increase the // fling min velocity requirement absurdly high. ["apz.fling_min_velocity_threshold", "10000"], // The helper_div_pan's div gets a displayport on scroll, but if the // test takes too long the displayport can expire before the new scroll // position is synced back to the main thread. So we disable displayport // expiry for these tests. ["apz.displayport_expiry_ms", 0], ]; var touch_action_prefs = basic_pan_prefs.slice(); // make a copy touch_action_prefs.push(["layout.css.touch_action.enabled", true]); var isWindows = (getPlatform() == "windows"); var subtests = [ // Simple tests to exercise basic panning behaviour {'file': 'helper_basic_pan.html', 'prefs': basic_pan_prefs}, {'file': 'helper_div_pan.html', 'prefs': basic_pan_prefs}, {'file': 'helper_iframe_pan.html', 'prefs': basic_pan_prefs}, // Simple test to exercise touch-tapping behaviour {'file': 'helper_tap.html'}, // Tapping, but with a full-zoom applied {'file': 'helper_tap_fullzoom.html'}, // For the following two tests, disable displayport suppression to make sure it // doesn't interfere with the test by scheduling paints non-deterministically. {'file': 'helper_scrollto_tap.html?true', 'prefs': [["apz.paint_skipping.enabled", true]], 'dp_suppression': false}, {'file': 'helper_scrollto_tap.html?false', 'prefs': [["apz.paint_skipping.enabled", false]], 'dp_suppression': false}, // Taps on media elements to make sure the touchend event is delivered // properly. We increase the long-tap timeout to ensure it doesn't get trip // during the tap. // Also this test (on Windows) cannot satisfy the OS requirement of providing // an injected touch event every 100ms, because it waits for a paint between // the touchstart and the touchend, so we have to use the "fake injection" // code instead. {'file': 'helper_bug1162771.html', 'prefs': [["ui.click_hold_context_menus.delay", 10000], ["apz.test.fails_with_native_injection", isWindows]]}, // As with the previous test, this test cannot inject touch events every 100ms // because it waits for a long-tap, so we have to use the "fake injection" code // instead. {'file': 'helper_long_tap.html', 'prefs': [["apz.test.fails_with_native_injection", isWindows]]}, // For the following test, we want to make sure APZ doesn't wait for a content // response that is never going to arrive. To detect this we set the content response // timeout to a day, so that the entire test times out and fails if APZ does // end up waiting. {'file': 'helper_tap_passive.html', 'prefs': [["apz.content_response_timeout", 24 * 60 * 60 * 1000], ["apz.test.fails_with_native_injection", isWindows]]}, // Simple test to exercise touch-action CSS property {'file': 'helper_touch_action.html', 'prefs': touch_action_prefs}, // More complex touch-action tests, with overlapping regions and such {'file': 'helper_touch_action_complex.html', 'prefs': touch_action_prefs}, // Tests that touch-action CSS properties are handled in APZ without waiting // on the main-thread, when possible {'file': 'helper_touch_action_regions.html', 'prefs': touch_action_prefs}, ]; if (isApzEnabled()) { ok(window.TouchEvent, "Check if TouchEvent is supported (it should be, the test harness forces it on everywhere)"); if (getPlatform() == "android") { // This has a lot of subtests, and Android emulators are slow. SimpleTest.requestLongerTimeout(2); } SimpleTest.waitForExplicitFinish(); window.onload = function() { runSubtestsSeriallyInFreshWindows(subtests) .then(SimpleTest.finish); }; } </script> </head> <body> </body> </html>