15abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickdescription('Tests using DeviceOrientation from multiple frames.');
25abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
35abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickvar deviceOrientationEvent;
45abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickfunction checkOrientation(event) {
55abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    deviceOrientationEvent = event;
65abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    shouldBe('deviceOrientationEvent.alpha', 'mockEvent.alpha');
75abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    shouldBe('deviceOrientationEvent.beta', 'mockEvent.beta');
85abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    shouldBe('deviceOrientationEvent.gamma', 'mockEvent.gamma');
95abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
105abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
115abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickvar hasMainFrameEventFired = false;
125abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickfunction mainFrameListener(event) {
135abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    checkOrientation(event);
145abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    hasMainFrameEventFired = true;
155abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    maybeFinishTest();
165abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
175abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
185abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickvar hasChildFrameEventFired = false;
195abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickfunction childFrameListener(event) {
205abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    checkOrientation(event);
215abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    hasChildFrameEventFired = true;
225abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    maybeFinishTest();
235abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
245abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
255abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickfunction maybeFinishTest() {
265abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    if (hasMainFrameEventFired && hasChildFrameEventFired)
275abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick        finishJSTest();
285abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
295abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
305abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickvar mockEvent = {alpha: 1.1, beta: 2.2, gamma: 3.3};
315abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickif (window.layoutTestController)
325abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    layoutTestController.setMockDeviceOrientation(true, mockEvent.alpha, true, mockEvent.beta, true, mockEvent.gamma);
335abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickelse
345abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    debug('This test can not be run without the LayoutTestController');
355abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
365abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickvar childFrame = document.createElement('iframe');
375abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickdocument.body.appendChild(childFrame);
385abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerrickchildFrame.contentWindow.addEventListener('deviceorientation', childFrameListener);
395abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
405abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickwindow.addEventListener('deviceorientation', mainFrameListener);
415abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
425abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickwindow.jsTestIsAsync = true;
435abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickwindow.successfullyParsed = true;
44