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