OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 chrome.test.runTests(function() { | 5 chrome.test.runTests(function() { |
6 'use strict'; | 6 'use strict'; |
7 | 7 |
8 class StubElement { | 8 class StubElement { |
9 constructor() { | 9 constructor() { |
10 this.listeners = new Map([ | 10 this.listeners = new Map([ |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 chrome.test.assertEq(null, pinchListener.lastEvent); | 175 chrome.test.assertEq(null, pinchListener.lastEvent); |
176 | 176 |
177 chrome.test.succeed(); | 177 chrome.test.succeed(); |
178 }, | 178 }, |
179 | 179 |
180 function testPreventNativePinchZoom() { | 180 function testPreventNativePinchZoom() { |
181 let stubElement = new StubElement(); | 181 let stubElement = new StubElement(); |
182 let gestureDetector = new GestureDetector(stubElement); | 182 let gestureDetector = new GestureDetector(stubElement); |
183 let pinchListener = new PinchListener(gestureDetector); | 183 let pinchListener = new PinchListener(gestureDetector); |
184 | 184 |
185 // Ensure that the touchstart listener is not passive, otherwise the | 185 // Ensure that the touchmove listener is not passive, otherwise the |
186 // call to preventDefault will be ignored. Since listeners could default | 186 // call to preventDefault will be ignored. Since listeners could default |
187 // to being passive, we must set the value explicitly | 187 // to being passive, we must set the value explicitly |
188 // (see crbug.com/675730). | 188 // (see crbug.com/675730). |
189 for (let l of stubElement.listeners.get('touchstart')) { | 189 for (let l of stubElement.listeners.get('touchmove')) { |
190 let options = stubElement.listenerOptions.get(l); | 190 let options = stubElement.listenerOptions.get(l); |
191 chrome.test.assertTrue(!!options && | 191 chrome.test.assertTrue(!!options && |
192 typeof(options.passive) == 'boolean'); | 192 typeof(options.passive) == 'boolean'); |
193 chrome.test.assertFalse(options.passive); | 193 chrome.test.assertFalse(options.passive); |
194 } | 194 } |
195 | 195 |
| 196 // We should not preventDefault the touchstart for 2 fingers, since this |
| 197 // could just be a 2 finger tap. |
196 let pinchStartEvent = new MockTouchEvent('touchstart', [ | 198 let pinchStartEvent = new MockTouchEvent('touchstart', [ |
197 {clientX: 0, clientY: 0}, | 199 {clientX: 0, clientY: 0}, |
198 {clientX: 0, clientY: 2} | 200 {clientX: 0, clientY: 2} |
199 ]); | 201 ]); |
200 stubElement.sendEvent(pinchStartEvent); | 202 stubElement.sendEvent(pinchStartEvent); |
201 chrome.test.assertEq('pinchstart', pinchListener.lastEvent.type); | 203 chrome.test.assertEq('pinchstart', pinchListener.lastEvent.type); |
202 chrome.test.assertTrue(pinchStartEvent.defaultPrevented); | 204 chrome.test.assertFalse(pinchStartEvent.defaultPrevented); |
| 205 |
| 206 let pinchUpdateEvent = new MockTouchEvent('touchmove', [ |
| 207 {clientX: 0, clientY: 0}, |
| 208 {clientX: 0, clientY: 4} |
| 209 ]); |
| 210 stubElement.sendEvent(pinchUpdateEvent); |
| 211 chrome.test.assertEq('pinchupdate', pinchListener.lastEvent.type); |
| 212 chrome.test.assertTrue(pinchUpdateEvent.defaultPrevented); |
203 | 213 |
204 chrome.test.succeed(); | 214 chrome.test.succeed(); |
205 } | 215 } |
206 ]; | 216 ]; |
207 }()); | 217 }()); |
OLD | NEW |