| /* exported bootstrapFrom */ | |
| // `mode` may be "iframe" or not specified. | |
| function bootstrapFrom( mainSelector, mode ) { | |
| if ( mode === "iframe" && window.parent === window ) { | |
| jQuery( mainSelector + " .result" ) | |
| .attr( "class", "result warn" ) | |
| .text( "This test should be run in an iframe. Open ../gh-1764-fullscreen.html." ); | |
| jQuery( mainSelector + " .toggle-fullscreen" ).remove(); | |
| return; | |
| } | |
| var fullscreenSupported = document.exitFullscreen || | |
| document.exitFullscreen || | |
| document.msExitFullscreen || | |
| document.mozCancelFullScreen || | |
| document.webkitExitFullscreen; | |
| function isFullscreen() { | |
| return !!( document.fullscreenElement || | |
| document.mozFullScreenElement || | |
| document.webkitFullscreenElement || | |
| document.msFullscreenElement ); | |
| } | |
| function requestFullscreen( element ) { | |
| if ( !isFullscreen() ) { | |
| if ( element.requestFullscreen ) { | |
| element.requestFullscreen(); | |
| } else if ( element.msRequestFullscreen ) { | |
| element.msRequestFullscreen(); | |
| } else if ( element.mozRequestFullScreen ) { | |
| element.mozRequestFullScreen(); | |
| } else if ( element.webkitRequestFullscreen ) { | |
| element.webkitRequestFullscreen(); | |
| } | |
| } | |
| } | |
| function exitFullscreen() { | |
| if ( document.exitFullscreen ) { | |
| document.exitFullscreen(); | |
| } else if ( document.msExitFullscreen ) { | |
| document.msExitFullscreen(); | |
| } else if ( document.mozCancelFullScreen ) { | |
| document.mozCancelFullScreen(); | |
| } else if ( document.webkitExitFullscreen ) { | |
| document.webkitExitFullscreen(); | |
| } | |
| } | |
| function runTest() { | |
| var dimensions; | |
| if ( !fullscreenSupported ) { | |
| jQuery( mainSelector + " .result" ) | |
| .attr( "class", "result success" ) | |
| .text( "Fullscreen mode is not supported in this browser. Test not run." ); | |
| } else if ( !isFullscreen() ) { | |
| jQuery( mainSelector + " .result" ) | |
| .attr( "class", "result warn" ) | |
| .text( "Enable fullscreen mode to fire the test." ); | |
| } else { | |
| dimensions = jQuery( mainSelector + " .result" ).css( [ "width", "height" ] ); | |
| dimensions.width = parseFloat( dimensions.width ).toFixed( 3 ); | |
| dimensions.height = parseFloat( dimensions.height ).toFixed( 3 ); | |
| if ( dimensions.width === "700.000" && dimensions.height === "56.000" ) { | |
| jQuery( mainSelector + " .result" ) | |
| .attr( "class", "result success" ) | |
| .text( "Dimensions in fullscreen mode are computed correctly." ); | |
| } else { | |
| jQuery( mainSelector + " .result" ) | |
| .attr( "class", "result error" ) | |
| .html( "Incorrect dimensions; " + | |
| "expected: { width: '700.000', height: '56.000' };<br>" + | |
| "got: { width: '" + dimensions.width + "', height: '" + | |
| dimensions.height + "' }." ); | |
| } | |
| } | |
| } | |
| function toggleFullscreen() { | |
| if ( isFullscreen() ) { | |
| exitFullscreen(); | |
| } else { | |
| requestFullscreen( jQuery( mainSelector + " .container" )[ 0 ] ); | |
| } | |
| } | |
| $( mainSelector + " .toggle-fullscreen" ).on( "click", toggleFullscreen ); | |
| $( document ).on( [ | |
| "webkitfullscreenchange", | |
| "mozfullscreenchange", | |
| "fullscreenchange", | |
| "MSFullscreenChange" | |
| ].join( " " ), runTest ); | |
| runTest(); | |
| } |