Files
shaka-player/lib/util/fake_event.js
T
Joey Parrish 64896d70b0 Use shorter license header
This reflects changes in Google's policy on JavaScript license
headers, which should be smaller to avoid increasing the size of the
binary unnecessarily.

This also updates the company name from "Google, Inc" to "Google LLC".

Change-Id: I3f8b9ed3700b6351f43173d50c94d35c333e82b4
2019-11-22 18:18:36 +00:00

99 lines
2.3 KiB
JavaScript

/** @license
* Copyright 2016 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
goog.provide('shaka.util.FakeEvent');
/**
* @summary Create an Event work-alike object based on the provided dictionary.
* The event should contain all of the same properties from the dict.
*
* @extends {Event}
*/
shaka.util.FakeEvent = class {
/**
* @param {string} type
* @param {Object=} dict
*/
constructor(type, dict = {}) {
// Take properties from dict if present.
for (const key in dict) {
Object.defineProperty(this, key, {
value: dict[key],
writable: true,
enumerable: true,
});
}
// The properties below cannot be set by the dict. They are all provided
// for compatibility with native events.
/** @const {boolean} */
this.bubbles = false;
/** @type {boolean} */
this.cancelable = false;
/** @type {boolean} */
this.defaultPrevented = false;
/**
* According to MDN, Chrome uses high-res timers instead of epoch time.
* Follow suit so that timeStamps on FakeEvents use the same base as
* on native Events.
* @const {number}
* @see https://developer.mozilla.org/en-US/docs/Web/API/Event/timeStamp
*/
this.timeStamp = window.performance && window.performance.now ?
window.performance.now() : Date.now();
/** @const {string} */
this.type = type;
/** @const {boolean} */
this.isTrusted = false;
/** @type {EventTarget} */
this.currentTarget = null;
/** @type {EventTarget} */
this.target = null;
/**
* Non-standard property read by FakeEventTarget to stop processing
* listeners.
* @type {boolean}
*/
this.stopped = false;
}
/**
* Prevents the default action of the event. Has no effect if the event isn't
* cancellable.
* @override
*/
preventDefault() {
if (this.cancelable) {
this.defaultPrevented = true;
}
}
/**
* Stops processing event listeners for this event. Provided for
* compatibility with native Events.
* @override
*/
stopImmediatePropagation() {
this.stopped = true;
}
/**
* Does nothing, since FakeEvents do not bubble. Provided for compatibility
* with native Events.
* @override
*/
stopPropagation() {}
};