Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/dom/DeviceMotion/multiple-event-listeners.html

Issue 2677603003: Move DeviceMotion and DeviceOrientation out from fast/dom/. (Closed)
Patch Set: device_orientation Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <body>
4 <script src="../../../resources/js-test.js"></script>
5 <script>
6
7 description('Tests using multiple event handlers for the Device Motion API.');
8
9 var mockEvent;
10 var expectedEvent;
11 function setMockMotion(accelerationX, accelerationY, accelerationZ,
12 accelerationIncludingGravityX, accelerationIncludingGravi tyY, accelerationIncludingGravityZ,
13 rotationRateAlpha, rotationRateBeta, rotationRateGamma,
14 interval) {
15
16 mockEvent = {accelerationX: accelerationX, accelerationY: accelerationY, acc elerationZ: accelerationZ,
17 accelerationIncludingGravityX: accelerationIncludingGravityX, a ccelerationIncludingGravityY: accelerationIncludingGravityY, accelerationIncludi ngGravityZ: accelerationIncludingGravityZ,
18 rotationRateAlpha: rotationRateAlpha, rotationRateBeta: rotatio nRateBeta, rotationRateGamma: rotationRateGamma,
19 interval: interval};
20
21 if (window.testRunner)
22 testRunner.setMockDeviceMotion(true, mockEvent.accelerationX, true, mock Event.accelerationY, true, mockEvent.accelerationZ,
23 true, mockEvent.accelerationIncludingGrav ityX, true, mockEvent.accelerationIncludingGravityY, true, mockEvent.acceleratio nIncludingGravityZ,
24 true, mockEvent.rotationRateAlpha, true, mockEvent.rotationRateBeta, true, mockEvent.rotationRateGamma,
25 interval);
26 else
27 debug('This test can not be run without the TestRunner');
28 }
29
30 var deviceMotionEvent;
31 function checkMotion(event) {
32 deviceMotionEvent = event;
33 shouldBe('deviceMotionEvent.acceleration.x', 'expectedEvent.accelerationX');
34 shouldBe('deviceMotionEvent.acceleration.y', 'expectedEvent.accelerationY');
35 shouldBe('deviceMotionEvent.acceleration.z', 'expectedEvent.accelerationZ');
36
37 shouldBe('deviceMotionEvent.accelerationIncludingGravity.x', 'expectedEvent. accelerationIncludingGravityX');
38 shouldBe('deviceMotionEvent.accelerationIncludingGravity.y', 'expectedEvent. accelerationIncludingGravityY');
39 shouldBe('deviceMotionEvent.accelerationIncludingGravity.z', 'expectedEvent. accelerationIncludingGravityZ');
40
41 shouldBe('deviceMotionEvent.rotationRate.alpha', 'expectedEvent.rotationRate Alpha');
42 shouldBe('deviceMotionEvent.rotationRate.beta', 'expectedEvent.rotationRateB eta');
43 shouldBe('deviceMotionEvent.rotationRate.gamma', 'expectedEvent.rotationRate Gamma');
44
45 shouldBe('deviceMotionEvent.interval', 'expectedEvent.interval');
46 }
47
48 var counter = 0;
49 function firstListener(event) {
50 checkMotion(event);
51 counter++;
52 proceedIfNecessary();
53 }
54
55 function secondListener(event) {
56 checkMotion(event);
57 counter++;
58 proceedIfNecessary();
59 }
60
61 function proceedIfNecessary() {
62 if (counter == 2) {
63 setMockMotion(11, 12, 13,
64 14, 15, 16,
65 17, 18, 19,
66 0);
67 // Note: this should not stop Device Motion updates,
68 // because there is still one listener active.
69 window.removeEventListener('devicemotion', secondListener);
70 setTimeout(function(){initThirdListener();}, 0);
71 }
72 }
73
74 var childFrame;
75 function initThirdListener() {
76 childFrame = document.createElement('iframe');
77 document.body.appendChild(childFrame);
78 childFrame.contentWindow.addEventListener('devicemotion', thirdListener);
79 }
80
81 function thirdListener(event) {
82 // Expect the cached event because Device Motion was already active
83 // when third listener was added.
84 checkMotion(event);
85 window.removeEventListener('devicemotion', firstListener);
86 childFrame.contentWindow.removeEventListener('devicemotion', thirdListener);
87 setTimeout(function(){initFourthListener();}, 0);
88 }
89
90 function initFourthListener() {
91 expectedEvent = mockEvent;
92 window.addEventListener('devicemotion', fourthListener);
93 }
94
95 function fourthListener(event) {
96 checkMotion(event);
97 finishJSTest();
98 }
99
100 setMockMotion(1, 2, 3,
101 4, 5, 6,
102 7, 8, 9,
103 0);
104 expectedEvent = mockEvent;
105 window.addEventListener('devicemotion', firstListener);
106 window.addEventListener('devicemotion', secondListener);
107
108 window.jsTestIsAsync = true;
109
110 </script>
111 </body>
112 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698