diff --git a/src/observable.js b/src/observable.js index afd36e3ef91f7..e95f97847b94a 100644 --- a/src/observable.js +++ b/src/observable.js @@ -60,13 +60,13 @@ export class Observable { /** * Fires an event. All observers are called. - * @param {TYPE} event + * @param {TYPE=} opt_event */ - fire(event) { + fire(opt_event) { const handlers = this.handlers_; for (let i = 0; i < handlers.length; i++) { const handler = handlers[i]; - handler(event); + handler(opt_event); } } diff --git a/src/service/viewer-impl.js b/src/service/viewer-impl.js index 6af394a33c26b..3fb64475e145d 100644 --- a/src/service/viewer-impl.js +++ b/src/service/viewer-impl.js @@ -125,7 +125,7 @@ export class Viewer { /** @private {number} */ this.prerenderSize_ = 1; - /** @private {string} */ + /** @private {!ViewportType} */ this.viewportType_ = ViewportType.NATURAL; /** @private {number} */ @@ -188,7 +188,7 @@ export class Viewer { this.isRuntimeOn_ = !parseInt(this.params_['off'], 10); dev().fine(TAG_, '- runtimeOn:', this.isRuntimeOn_); - this.overtakeHistory_ = parseInt(this.params_['history'], 10) || + this.overtakeHistory_ = !!(parseInt(this.params_['history'], 10)) || this.overtakeHistory_; dev().fine(TAG_, '- history:', this.overtakeHistory_); @@ -237,6 +237,9 @@ export class Viewer { // Wait for document to become visible. this.docState_.onVisibilityChanged(this.recheckVisibilityState_.bind(this)); + /** @private {function()|undefined} */ + this.messagingReadyResolver_ = undefined; + /** * This promise will resolve when communications channel has been * established or timeout in 20 seconds. The timeout is needed to avoid @@ -248,10 +251,10 @@ export class Viewer { timerFor(this.win).timeoutPromise( 20000, new Promise(resolve => { - /** @private @const {function()|undefined} */ this.messagingReadyResolver_ = resolve; })).catch(reason => { - throw getChannelError(reason); + throw getChannelError(/** @type {!Error|string|undefined} */ ( + reason)); }) : null; /** @@ -265,7 +268,8 @@ export class Viewer { this.messagingReadyPromise_ .catch(reason => { // Don't fail promise, but still report. - reportError(getChannelError(reason)); + reportError(getChannelError( + /** @type {!Error|string|undefined} */ (reason))); }) : null; // Trusted viewer and referrer. @@ -283,10 +287,12 @@ export class Viewer { this.isTrustedViewerOrigin_(this.win.location.ancestorOrigins[0])); trustedViewerPromise = Promise.resolve(trustedViewerResolved); } else { + + /** @private {!function(boolean)|undefined} */ + this.trustedViewerResolver_ = undefined; // Wait for comms channel to confirm the origin. trustedViewerResolved = undefined; trustedViewerPromise = new Promise(resolve => { - /** @const @private {!function(boolean)|undefined} */ this.trustedViewerResolver_ = resolve; }); } @@ -294,6 +300,9 @@ export class Viewer { /** @const @private {!Promise} */ this.isTrustedViewer_ = trustedViewerPromise; + /** @private {!function(string)|undefined} */ + this.viewerOriginResolver_ = undefined; + /** @const @private {!Promise} */ this.viewerOrigin_ = new Promise(resolve => { if (!this.isEmbedded()) { @@ -884,7 +893,7 @@ export class Viewer { /** * Requests AMP document to receive a message from Viewer. * @param {string} eventType - * @param {*} data + * @param {!JSONType} data * @param {boolean} unusedAwaitResponse * @return {(!Promise<*>|undefined)} * @export @@ -1081,7 +1090,7 @@ function parseParams_(str, allParams) { /** * Creates an error for the case where a channel cannot be established. - * @param {!Error=} opt_reason + * @param {!Error|string=} opt_reason * @return {!Error} */ function getChannelError(opt_reason) { diff --git a/src/service/viewport-impl.js b/src/service/viewport-impl.js index 8a2c163bbb751..2954f7b11354a 100644 --- a/src/service/viewport-impl.js +++ b/src/service/viewport-impl.js @@ -500,8 +500,8 @@ export class Viewport { return null; } if (this.viewportMeta_ === undefined) { - this.viewportMeta_ = this.win_.document.querySelector( - 'meta[name=viewport]'); + this.viewportMeta_ = /** @type {?HTMLMetaElement} */ ( + this.win_.document.querySelector('meta[name=viewport]')); if (this.viewportMeta_) { this.originalViewportMetaString_ = this.viewportMeta_.content; } @@ -1253,7 +1253,7 @@ export function updateViewportMetaString(currentValue, updateParams) { if (params[k] !== updateParams[k]) { changed = true; if (updateParams[k] !== undefined) { - params[k] = updateParams[k]; + params[k] = /** @type {string} */ (updateParams[k]); } else { delete params[k]; } diff --git a/src/service/vsync-impl.js b/src/service/vsync-impl.js index 140698b03b75d..3fef0c7a8be8f 100644 --- a/src/service/vsync-impl.js +++ b/src/service/vsync-impl.js @@ -125,7 +125,7 @@ export class Vsync { * will be undefined. * * @param {!VsyncTaskSpecDef} task - * @param {VsyncStateDef=} opt_state + * @param {!VsyncStateDef=} opt_state */ run(task, opt_state) { this.tasks_.push(task);