Skipped http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin...
[WebKit-https.git] / LayoutTests / swipe / pushState-programmatic-back-while-swiping-crash.html
1 <head>
2 <style>
3 html {
4     font-size: 32pt;
5 }
6 </style>
7 <script src="resources/swipe-test.js"></script>
8 <script>
9 function runTest()
10 {
11     playEventStream(`[{
12         "relativeTimeMS" : 0,
13         "kCGEventScrollGestureFlagBits" : 1,
14         "kCGEventGestureHIDType" : 6,
15         "kCGSEventTypeField" : 29,
16         "kCGEventGesturePhase" : 128,
17         "windowLocation" : "{400, 300}"
18       },
19       {
20         "relativeTimeMS" : 8,
21         "kCGEventGestureHIDType" : 61,
22         "kCGSEventTypeField" : 29,
23         "kCGEventGestureStartEndSeriesType" : 6,
24         "windowLocation" : "{0, 0}"
25       },
26       {
27         "kCGEventGestureHIDType" : 6,
28         "relativeTimeMS" : 8,
29         "windowLocation" : "{400, 300}",
30         "kCGEventGesturePhase" : 1,
31         "kCGEventScrollGestureFlagBits" : 1,
32         "kCGSEventTypeField" : 29,
33         "kCGEventGestureScrollX" : 2
34       },
35       {
36         "relativeTimeMS" : 8,
37         "windowLocation" : "{400, 300}",
38         "kCGScrollWheelEventScrollPhase" : 1,
39         "kCGScrollWheelEventIsContinuous" : 1,
40         "kCGScrollWheelEventPointDeltaAxis2" : 1,
41         "kCGSEventTypeField" : 22
42       }]`, goBack);
43 }
44
45 function goBack()
46 {
47     window.history.back();
48
49     setTimeout(continueTest, 0);
50 }
51
52 function continueTest()
53 {
54     playEventStream(`[
55       {
56         "relativeTimeMS" : 0,
57         "windowLocation" : "{400, 300}",
58         "kCGScrollWheelEventScrollPhase" : 1,
59         "kCGScrollWheelEventIsContinuous" : 1,
60         "kCGScrollWheelEventPointDeltaAxis2" : 20,
61         "kCGSEventTypeField" : 22
62       }]`, function () {
63         completeTest();
64       });
65 }
66
67 function completeTest()
68 {
69     completeSwipeGesture(testComplete);
70 }
71
72 function didBeginSwipeCallback()
73 {
74     log("Failed. Should not begin swipe; we've already navigated away from the item where the swipe started, and there is no other back item.");
75 }
76
77 function isFirstPage()
78 {
79     return window.location.href.indexOf("second") == -1;
80 }
81
82 function updateContent()
83 {
84     document.body.innerHTML = isFirstPage() ? "first" : "second";
85 }
86
87 window.onload = function () {
88     if (!window.eventSender || !window.testRunner) {
89         document.body.innerHTML = "This test must be run in WebKitTestRunner.";
90         return;
91     }
92
93     updateContent();
94
95     initializeSwipeTest();
96
97     testRunner.installDidBeginSwipeCallback(didBeginSwipeCallback);
98
99     testRunner.overridePreference("WebKitUsesPageCachePreferenceKey", 1);
100     testRunner.dumpAsText();
101     testRunner.waitUntilDone();
102
103     window.addEventListener("popstate", function(e) {
104         updateContent();
105     });
106
107     setTimeout(function () { 
108         history.pushState(null, null, "/second");
109         updateContent();
110
111         setTimeout(function () {
112             runTest();
113         }, 0);
114     }, 0);
115 };
116 </script>
117 </head>
118 <body>
119 </body>