Skip to content

Commit

Permalink
chore: Update AbortSignal polyfill for new compiler
Browse files Browse the repository at this point in the history
This upgrades the compiler and reworks the AbortSignal polyfill to
match the new compiler externs for that class.  This is important to
make Shaka Player compatible with the latest compilers in use inside
Google.

Note that the Closure compiler is deprecated, so this should be our
final upgrade.  We will some day move to TypeScript.
  • Loading branch information
joeyparrish committed Aug 20, 2024
1 parent 01545f4 commit 079194b
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 40 deletions.
40 changes: 24 additions & 16 deletions lib/polyfill/abort_controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,11 @@ shaka.polyfill.AbortController = class {

/**
* @summary A polyfill for AbortSignal, part of the AbortController API.
* @implements {AbortSignal}
* @extends AbortSignal
*/
shaka.polyfill.AbortController.AbortSignal =
class extends shaka.util.FakeEventTarget {
shaka.polyfill.AbortController.AbortSignal = class {
/** */
constructor() {
super();

/** @private {boolean} */
this.aborted_ = false;

Expand All @@ -74,19 +71,37 @@ class extends shaka.util.FakeEventTarget {

/** @type {?function(!Event)} */
this.onabort = null;

/** @private {!shaka.util.FakeEventTarget} */
this.eventTarget_ = new shaka.util.FakeEventTarget();
}

/** @override */
addEventListener(type, listener, options) {
return this.eventTarget_.addEventListener(type, listener, options);
}

/** @override */
removeEventListener(type, listener, options) {
return this.eventTarget_.removeEventListener(type, listener, options);
}

/** @override */
dispatchEvent(event) {
return this.eventTarget_.dispatchEvent(event);
}

/** @override */
get aborted() {
return this.aborted_;
}

/** @return {*} */
/** @override */
get reason() {
return this.reason_;
}

/** @return {void} */
/** @override */
throwIfAborted() {
if (this.aborted_) {
throw this.reason_;
Expand Down Expand Up @@ -119,21 +134,14 @@ class extends shaka.util.FakeEventTarget {
this.dispatchEvent(event);
}


/**
* @param {*=} reason
* @return {!AbortSignal}
*/
/** @override */
static abort(reason) {
const signal = new shaka.polyfill.AbortController.AbortSignal();
signal.doAbort_(reason);
return signal;
}

/**
* @param {number} timeMs
* @return {!AbortSignal}
*/
/** @override */
static timeout(timeMs) {
const signal = new shaka.polyfill.AbortController.AbortSignal();

Expand Down
42 changes: 21 additions & 21 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@
"eslint-plugin-shaka-rules": "file:./build/eslint-plugin-shaka-rules",
"esprima": "^4.0.1",
"fontfaceonload": "^1.0.2",
"google-closure-compiler-java": "^20221102.0.0",
"google-closure-deps": "^20221102.0.0",
"google-closure-library": "^20221102.0.0",
"google-closure-compiler-java": "^20240317.0.0",
"google-closure-deps": "^20230802.0.0",
"google-closure-library": "^20230802.0.0",
"htmlhint": "^1.1.3",
"jasmine-ajax": "^4.0.0",
"jimp": "^0.22.12",
Expand Down

0 comments on commit 079194b

Please sign in to comment.