/**
* @file 미디어 오류.js
*/
import {assign, isObject} from './utils/obj';
/**
* 표준 HTML5 `MediaError` 클래스를 모방한 사용자 정의 `MediaError` 클래스.
*
* @param {번호|문자열|객체|MediaError} 값
* 이것은 여러 유형일 수 있습니다.
* - 숫자: 표준 오류 코드여야 합니다.
* - 문자열: 오류 메시지(코드는 0임)
* - 개체: 임의 속성
* - `MediaError`(네이티브): video.js `MediaError` 개체를 채우는 데 사용됩니다.
* - `MediaError` (video.js): 이미
* video.js `MediaError` 객체.
*
* @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}
* @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}
*
* @클래스 미디어 오류
*/
함수 MediaError(값) {
// `instanceof`가 발생하지 않도록 이 생성자에 대한 중복 호출을 허용합니다.
// 코드 주변을 확인합니다.
if (MediaError의 값 인스턴스) {
반환 값;
}
if (값 유형 === '숫자') {
this.코드 = 값;
} 그렇지 않으면 (값 유형 === '문자열') {
// 기본 코드는 0이므로 사용자 지정 오류입니다.
this.message = 값;
} 그렇지 않으면 (isObject(값)) {
// 네이티브 `MediaError` 개체 때문에 `code` 속성을 수동으로 할당합니다.
// 개체의 소유/열거 가능한 속성으로 노출하지 마십시오.
if (typeof value.code === '숫자') {
this.code = 값.코드;
}
할당(이것, 값);
}
if (!this.message) {
this.message = MediaError.defaultMessages[this.code] || '';
}
}
/**
* 정의된 `MediaError` 유형 중 두 가지를 나타내는 오류 코드
*
* @type {숫자}
*/
MediaError.prototype.code = 0;
/**
* 오류와 함께 표시할 선택적 메시지입니다. 메시지가 HTML5의 일부가 아닙니다.
* 비디오 사양이지만 보다 유익한 사용자 정의 오류를 허용합니다.
*
* @type {문자열}
*/
MediaError.prototype.message = '';
/**
* 플러그인에 의해 설정될 수 있는 선택적 상태 코드는 더 자세한 정보를 허용합니다.
* 오류. 예를 들어 플러그인은 특정 HTTP 상태 코드와
* 해당 코드에 대한 오류 메시지. 그런 다음 플러그인이 해당 오류를 수신하면 이 클래스는
* 오류 메시지를 표시하는 방법을 알고 있습니다. 이렇게 하면 맞춤 메시지를 표시할 수 있습니다.
* `Player` 오류 오버레이에서 위로.
*
* @type {배열}
*/
MediaError.prototype.status = null;
/**
* W3C 표준에 의해 인덱싱된 오류. 주문 **변경할 수 없습니다**! 참조
* 자세한 내용은 {@link MediaError}에 나열된 사양입니다.
*
* @enum {배열}
* @읽기전용
* @property {string} 0 - MEDIA_ERR_CUSTOM
* @property {string} 1 - MEDIA_ERR_ABORTED
* @property {string} 2 - MEDIA_ERR_NETWORK
* @property {문자열} 3 - MEDIA_ERR_DECODE
* @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED
* @property {string} 5 - MEDIA_ERR_ENCRYPTED
*/
MediaError.errorTypes = [
'MEDIA_ERR_CUSTOM',
'MEDIA_ERR_ABORTED',
'미디어_ERR_네트워크',
'MEDIA_ERR_DECODE',
'MEDIA_ERR_SRC_NOT_SUPPORTED',
'MEDIA_ERR_ENCRYPTED'
];
/**
* {@link MediaError.errorTypes}에 기반한 기본 `MediaError` 메시지.
*
* @type {배열}
* @끊임없는
*/
MediaError.defaultMessages = {
1: '미디어 재생을 중단했습니다',
2: '네트워크 오류로 인해 미디어 다운로드가 도중에 실패했습니다.',
3: '손상 문제로 인해 또는 미디어가 브라우저에서 지원하지 않는 기능을 사용했기 때문에 미디어 재생이 중단되었습니다.',
4: '서버나 네트워크가 실패했거나 형식이 지원되지 않기 때문에 미디어를 로드할 수 없습니다.',
5: '미디어가 암호화되어 있으며 해독할 키가 없습니다.'
};
// MediaError에 유형을 속성으로 추가
// 예를 들어 MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
for (let errNum = 0; errNum < MediaError.errorTypes.length; 오류번호++) {
MediaError[MediaError.errorTypes[errNum]] = errNum;
// 값은 클래스와 인스턴스 모두에서 액세스할 수 있어야 합니다.
MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;
}
// 위에 추가된 인스턴스/정적 멤버에 대한 jsdocs
// 인스턴스 메서드는 `#`을 사용하고 정적 메서드는 `.`를 사용합니다.
/**
* 사용자 정의 오류에 대한 W3C 오류 코드.
*
* @member MediaError#MEDIA_ERR_CUSTOM
* @constant {숫자}
* @디폴트 0
*/
/**
* 사용자 정의 오류에 대한 W3C 오류 코드.
*
* @member MediaError.MEDIA_ERR_CUSTOM
* @constant {숫자}
* @디폴트 0
*/
/**
* 미디어 오류에 대한 W3C 오류 코드가 중단되었습니다.
*
* @member MediaError#MEDIA_ERR_ABORTED
* @constant {숫자}
* @디폴트 1
*/
/**
* 미디어 오류에 대한 W3C 오류 코드가 중단되었습니다.
*
* @member MediaError.MEDIA_ERR_ABORTED
* @constant {숫자}
* @디폴트 1
*/
/**
* 모든 네트워크 오류에 대한 W3C 오류 코드.
*
* @member MediaError#MEDIA_ERR_NETWORK
* @constant {숫자}
* @디폴트 2
*/
/**
* 모든 네트워크 오류에 대한 W3C 오류 코드.
*
* @member MediaError.MEDIA_ERR_NETWORK
* @constant {숫자}
* @디폴트 2
*/
/**
* 모든 디코딩 오류에 대한 W3C 오류 코드.
*
* @member MediaError#MEDIA_ERR_DECODE
* @constant {숫자}
* @디폴트 3
*/
/**
* 모든 디코딩 오류에 대한 W3C 오류 코드.
*
* @member MediaError.MEDIA_ERR_DECODE
* @constant {숫자}
* @디폴트 3
*/
/**
* 소스가 지원되지 않는 시간에 대한 W3C 오류 코드.
*
* @member MediaError#MEDIA_ERR_SRC_NOT_SUPPORTED
* @constant {숫자}
* @디폴트 4
*/
/**
* 소스가 지원되지 않는 시간에 대한 W3C 오류 코드.
*
* @member MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED
* @constant {숫자}
* @디폴트 4
*/
/**
* 소스가 암호화된 시간에 대한 W3C 오류 코드.
*
* @member MediaError#MEDIA_ERR_ENCRYPTED
* @constant {숫자}
* @디폴트 5
*/
/**
* 소스가 암호화된 시간에 대한 W3C 오류 코드.
*
* @member MediaError.MEDIA_ERR_ENCRYPTED
* @constant {숫자}
* @디폴트 5
*/
수출 기본 MediaError;