mirror of
https://github.com/jellyfin/jellyfin-web.git
synced 2024-11-19 11:58:20 -07:00
100 lines
3.0 KiB
JavaScript
100 lines
3.0 KiB
JavaScript
|
/* 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();
|
||
|
}
|