1description('Tests using null values for some of the event properties.');
2
3var mockEvent;
4function setMockOrientation(alpha, beta, gamma) {
5    mockEvent = {alpha: alpha, beta: beta, gamma: gamma};
6    if (window.layoutTestController)
7        layoutTestController.setMockDeviceOrientation(
8            null != mockEvent.alpha, null == mockEvent.alpha ? 0 : mockEvent.alpha,
9            null != mockEvent.beta, null == mockEvent.beta ? 0 : mockEvent.beta,
10            null != mockEvent.gamma, null == mockEvent.gamma ? 0 : mockEvent.gamma);
11    else
12        debug('This test can not be run without the LayoutTestController');
13}
14
15var deviceOrientationEvent;
16function checkOrientation(event) {
17    deviceOrientationEvent = event;
18    shouldBe('deviceOrientationEvent.alpha', 'mockEvent.alpha');
19    shouldBe('deviceOrientationEvent.beta', 'mockEvent.beta');
20    shouldBe('deviceOrientationEvent.gamma', 'mockEvent.gamma');
21}
22
23function firstListener(event) {
24    checkOrientation(event);
25    window.removeEventListener('deviceorientation', firstListener);
26
27    setMockOrientation(1.1, null, null);
28    window.addEventListener('deviceorientation', secondListener);
29}
30
31function secondListener(event) {
32    checkOrientation(event);
33    window.removeEventListener('deviceorientation', secondListener);
34
35    setMockOrientation(null, 2.2, null);
36    window.addEventListener('deviceorientation', thirdListener);
37}
38
39function thirdListener(event) {
40    checkOrientation(event);
41    window.removeEventListener('deviceorientation', thirdListener);
42
43    setMockOrientation(null, null, 3.3);
44    window.addEventListener('deviceorientation', fourthListener);
45}
46
47function fourthListener(event) {
48    checkOrientation(event);
49    finishJSTest();
50}
51
52setMockOrientation(null, null, null);
53window.addEventListener('deviceorientation', firstListener);
54
55window.jsTestIsAsync = true;
56window.successfullyParsed = true;
57