Test media element fullscreen API when an element is not in the DOM.




*** Creating <video> element with "content/counting.mp4" not in the document, should support fullscreen because it has video
EVENT(loadstart)
EVENT(durationchange)
EVENT(canplaythrough)
* event handler NOT triggered by a user gesture
EXPECTED (mediaElement.webkitSupportsFullscreen == 'true') OK
EXPECTED (mediaElement.webkitSupportsPresentationMode('fullscreen') == 'true') OK
EXPECTED (mediaElement.webkitDisplayingFullscreen == 'false') OK
TEST(mediaElement.webkitEnterFullScreen()) THROWS(DOMException.INVALID_STATE_ERR) OK
* clicking on button
EVENT(mouseup)
* event handler triggered by user gesture
RUN(mediaElement.webkitEnterFullScreen())
EVENT(webkitfullscreenerror)
EXPECTED (mediaElement.webkitDisplayingFullscreen == 'false') OK

*** Creating <audio> element with "content/silence.mpg" not in the document, should NOT support fullscreen 
EVENT(loadstart)
EVENT(durationchange)
EVENT(canplaythrough)
* event handler NOT triggered by a user gesture
EXPECTED (mediaElement.webkitSupportsFullscreen == 'undefined') OK
EXPECTED (mediaElement.webkitSupportsPresentationMode == 'undefined') OK
EXPECTED (mediaElement.webkitDisplayingFullscreen == 'undefined') OK
* clicking on button
EVENT(mouseup)
* event handler triggered by user gesture

END OF TEST

