15abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickdescription('Tests that updates to the orientation causes new events to fire.');
25abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
35abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickvar mockEvent;
45abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickfunction setMockOrientation(alpha, beta, gamma) {
55abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    mockEvent = {alpha: alpha, beta: beta, gamma: gamma};
65abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    if (window.layoutTestController)
75abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick        layoutTestController.setMockDeviceOrientation(true, mockEvent.alpha, true, mockEvent.beta, true, mockEvent.gamma);
85abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    else
95abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick        debug('This test can not be run without the LayoutTestController');
105abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
115abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
125abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickvar deviceOrientationEvent;
135abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickfunction checkOrientation(event) {
145abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    deviceOrientationEvent = event;
155abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    shouldBe('deviceOrientationEvent.alpha', 'mockEvent.alpha');
165abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    shouldBe('deviceOrientationEvent.beta', 'mockEvent.beta');
175abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    shouldBe('deviceOrientationEvent.gamma', 'mockEvent.gamma');
185abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
195abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
205abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickfunction firstListener(event) {
215abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    checkOrientation(event);
225abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    window.removeEventListener('deviceorientation', firstListener);
235abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
245abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    setMockOrientation(11.1, 22.2, 33.3);
255abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    window.addEventListener('deviceorientation', updateListener);
265abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
275abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
285abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickfunction updateListener(event) {
295abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    checkOrientation(event);
305abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    finishJSTest();
315abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
325abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
335abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerricksetMockOrientation(1.1, 2.2, 3.3);
345abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickwindow.addEventListener('deviceorientation', firstListener);
355abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
365abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickwindow.jsTestIsAsync = true;
375abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickwindow.successfullyParsed = true;
38