104 lines
3.0 KiB
HTML
104 lines
3.0 KiB
HTML
<!-- webkit-test-runner [ UsesBackForwardCache=true ] -->
|
|
<head>
|
|
<style>
|
|
html {
|
|
font-size: 32pt;
|
|
}
|
|
</style>
|
|
<script src="resources/swipe-test.js"></script>
|
|
<script>
|
|
|
|
function runTest()
|
|
{
|
|
// The first swipe should fail because we're scrolled to the middle of the document
|
|
// and this is all a single gesture. We can only start swipes if we *begin*
|
|
// pinned to the edge.
|
|
startSwipeGesture(function () {
|
|
completeSwipeGesture(function () {
|
|
testRunner.clearTestRunnerCallbacks();
|
|
testRunner.installDidBeginSwipeCallback(didBeginSwipeCallback);
|
|
testRunner.installWillEndSwipeCallback(willEndSwipeCallback);
|
|
testRunner.installDidEndSwipeCallback(didEndSwipeCallback);
|
|
testRunner.installDidRemoveSwipeSnapshotCallback(didRemoveSwipeSnapshotCallback);
|
|
|
|
// The second swipe should succeed because we are now scrolled to the left edge.
|
|
startSwipeGesture(function () { completeSwipeGesture(); });
|
|
});
|
|
});
|
|
}
|
|
|
|
function didBeginSwipeNotReachedCallback()
|
|
{
|
|
log("Failure. Should never begin a swipe, because we were in the middle of a scrolling gesture that started when the main frame was not pinned to the left.");
|
|
}
|
|
|
|
function didBeginSwipeCallback()
|
|
{
|
|
log("didBeginSwipe");
|
|
}
|
|
|
|
function willEndSwipeCallback()
|
|
{
|
|
log("willEndSwipe");
|
|
|
|
shouldBe(false, isFirstPage(), "The swipe should not yet have navigated away from the second page.");
|
|
}
|
|
|
|
function didEndSwipeCallback()
|
|
{
|
|
log("didEndSwipe");
|
|
|
|
startMeasuringDuration("snapshotRemoval");
|
|
}
|
|
|
|
function didRemoveSwipeSnapshotCallback()
|
|
{
|
|
log("didRemoveSwipeSnapshot");
|
|
|
|
shouldBe(true, isFirstPage(), "The swipe should have navigated back to the first page.");
|
|
measuredDurationShouldBeLessThan("snapshotRemoval", 1000, "Because we're using the page cache, it shouldn't be long between the gesture completing and the snapshot being removed.")
|
|
|
|
testComplete();
|
|
}
|
|
|
|
function isFirstPage()
|
|
{
|
|
return window.location.href.indexOf("second") == -1;
|
|
}
|
|
|
|
window.onload = function () {
|
|
if (!window.eventSender || !window.testRunner) {
|
|
document.getElementById("large").innerHTML = "This test must be run in WebKitTestRunner.";
|
|
return;
|
|
}
|
|
|
|
document.getElementById("large").innerHTML = isFirstPage() ? "first" : "second";
|
|
|
|
if (isFirstPage()) {
|
|
initializeSwipeTest();
|
|
|
|
testRunner.installDidBeginSwipeCallback(didBeginSwipeNotReachedCallback);
|
|
testRunner.installWillEndSwipeCallback(willEndSwipeCallback);
|
|
testRunner.installDidEndSwipeCallback(didEndSwipeCallback);
|
|
testRunner.installDidRemoveSwipeSnapshotCallback(didRemoveSwipeSnapshotCallback);
|
|
|
|
testRunner.dumpAsText();
|
|
testRunner.waitUntilDone();
|
|
|
|
setTimeout(function () {
|
|
window.location.href = window.location.href + "?second";
|
|
}, 0);
|
|
return;
|
|
}
|
|
|
|
// Second page loaded.
|
|
window.scrollTo(100, 0);
|
|
|
|
runTest();
|
|
};
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="large" style="width: 2000px; height: 2000px;"></div>
|
|
</body>
|