src/systems/material.js
function fixVideoAttributes (videoEl) {
  videoEl.autoplay = videoEl.hasAttribute('autoplay') && videoEl.getAttribute('autoplay') !== 'false';
  videoEl.controls = videoEl.hasAttribute('controls') && videoEl.getAttribute('controls') !== 'false';
  if (videoEl.getAttribute('loop') === 'false') {
    videoEl.removeAttribute('loop');
  }
  if (videoEl.getAttribute('preload') === 'false') {
    videoEl.preload = 'none';
  }
  videoEl.crossOrigin = videoEl.crossOrigin || 'anonymous';
  // To support inline videos in iOS webviews.
  videoEl.setAttribute('playsinline', '');
  videoEl.setAttribute('webkit-playsinline', '');
  return videoEl;
}
function fixVideoAttributes (videoEl) {
  videoEl.autoplay = videoEl.hasAttribute('autoplay') && videoEl.getAttribute('autoplay') !== 'false';
  videoEl.controls = videoEl.hasAttribute('controls') && videoEl.getAttribute('controls') !== 'false';
  if (videoEl.getAttribute('loop') === 'false') {
    videoEl.removeAttribute('loop');
  }
  if (videoEl.getAttribute('preload') === 'false') {
    videoEl.preload = 'none';
  }
  videoEl.crossOrigin = videoEl.crossOrigin || 'anonymous';
  // To support inline videos in iOS webviews.
  videoEl.setAttribute('playsinline', '');
  videoEl.setAttribute('webkit-playsinline', '');
  return videoEl;
}
function fixVideoAttributes ( videoEl ) { videoEl . autoplay = videoEl . hasAttribute ( 'autoplay' ) && videoEl . getAttribute ( 'autoplay' ) !== 'false' ; videoEl . controls = videoEl . hasAttribute ( 'controls' ) && videoEl . getAttribute ( 'controls' ) !== 'false' ; if ( videoEl . getAttribute ( 'loop' ) === 'false' ) { videoEl . removeAttribute ( 'loop' ) ; } if ( videoEl . getAttribute ( 'preload' ) === 'false' ) { videoEl . preload = 'none' ; } videoEl . crossOrigin = videoEl . crossOrigin || 'anonymous' ; // To support inline videos in iOS webviews. videoEl . setAttribute ( 'playsinline' , '' ) ; videoEl . setAttribute ( 'webkit-playsinline' , '' ) ; return videoEl ; }
Fixes a video element's attributes to prevent developers from accidentally passing the
wrong attribute values to commonly misused video attributes.

<video> does not treat `autoplay`, `controls`, `crossorigin`, `loop`, and `preload` as
as booleans. Existence of those attributes will mean truthy.

For example, translates <video loop="false"> to <video>.

@see https://developer.mozilla.org/docs/Web/HTML/Element/video#Attributes
@param {Element} videoEl - Video element.
@returns {Element} Video element with the correct properties updated.
Fixes a video element s attributes to prevent developers from accidentally passing the wrong attribute values to commonly misused video attributes .