| /* 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(); |
| } |