Commit d9bade00 authored by Trent Apted's avatar Trent Apted Committed by Commit Bot

Add some missing closure annotations for piex_loader.js.

These changes allow the file to be consumed by targets compiled with
null checks and reportUnknownTypes.

Bug: 1030935, 1132695
Change-Id: Ib898151aeecaeb0636e12b7d79ed4a2335ef8278
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2428274
Commit-Queue: Trent Apted <tapted@chromium.org>
Commit-Queue: Noel Gordon <noel@chromium.org>
Reviewed-by: default avatarNoel Gordon <noel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#811991}
parent e4ce6f4e
......@@ -51,12 +51,15 @@ PiexModule.onAbort = (error) => {
* Loading the entire page is the only reliable way to recover from broken
* Module state. Log the error, and return true to tell caller to initiate
* failure recovery steps.
*
* @return {boolean}
*/
function piexModuleFailed() {
if (piexFailed || !PiexModule.calledRun) {
console.error('[PiexLoader] piex wasm module failed');
return true;
}
return false;
}
/**
......@@ -127,6 +130,7 @@ function readSourceData(source) {
return new Promise((resolve, reject) => {
/**
* Reject the Promise on fileEntry URL resolve or file read failures.
* @param {!Error|string|!ProgressEvent<!FileReader>|!FileError} error
*/
function failure(error) {
reject(new Error('Reading file system: ' + (error.message || error)));
......@@ -150,7 +154,9 @@ function readSourceData(source) {
if (valid(file.size)) {
const reader = new FileReader();
reader.onerror = failure;
reader.onload = (_) => resolve(reader.result);
reader.onload = (_) => {
resolve(reader.result);
};
reader.readAsArrayBuffer(file);
} else {
failure('invalid file size: ' + file.size);
......@@ -447,8 +453,11 @@ class ImageBuffer {
return null;
}
/** @type {!Object<string|number, number|string>} */
const format = {};
for (const [key, value] of Object.entries(details)) {
/** @type {!Array<!Array<string|number>>} */
const entries = Object.entries(details);
for (const [key, value] of entries) {
if (typeof value === 'string') {
format[key] = value.replace(/\0+$/, '').trim();
} else if (typeof value === 'number') {
......@@ -462,9 +471,9 @@ class ImageBuffer {
const usesWidthAsHeight = orientation >= 5;
if (usesWidthAsHeight) {
const width = format.width;
format.width = format.height;
format.height = width;
const width = format['width'];
format['width'] = format['height'];
format['height'] = width;
}
return JSON.stringify(format);
......@@ -498,27 +507,29 @@ function PiexLoader() {}
* the caller should initiate failure recovery steps.
*
* @param {!ArrayBuffer|!File|string} source
* @param {!function()} onPiexModuleFailed
* @param {function()} onPiexModuleFailed
* @return {!Promise<!PiexLoaderResponse>}
*/
PiexLoader.prototype.load = function(source, onPiexModuleFailed) {
/** @type {?ImageBuffer} */
let imageBuffer;
return readSourceData(source)
.then((buffer) => {
if (piexModuleFailed() === true) {
if (piexModuleFailed()) {
// Just reject here: handle in the .catch() clause below.
return Promise.reject('piex wasm module failed');
}
imageBuffer = new ImageBuffer(buffer);
return imageBuffer.process();
})
.then((result) => {
imageBuffer.close();
return new PiexLoaderResponse(imageBuffer.preview(result));
.then((/** !PiexWasmImageResult */ result) => {
const buffer = /** @type {!ImageBuffer} */ (imageBuffer);
buffer.close();
return new PiexLoaderResponse(buffer.preview(result));
})
.catch((error) => {
if (piexModuleFailed() === true) {
if (piexModuleFailed()) {
setTimeout(onPiexModuleFailed, 0);
return Promise.reject('piex wasm module failed');
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment