diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js index 7f6f35742b..124d10b27d 100644 --- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js +++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js @@ -1260,7 +1260,8 @@ * @param {string=} opt_section */ _openReplyDialog(opt_section) { - this.$.replyOverlay.open().then(() => { + this.$.replyOverlay.open().finally(() => { + // the following code should be executed no matter open succeed or not this._resetReplyOverlayFocusStops(); this.$.replyDialog.open(opt_section); Polymer.dom.flush(); diff --git a/polygerrit-ui/app/elements/shared/gr-overlay/gr-overlay.js b/polygerrit-ui/app/elements/shared/gr-overlay/gr-overlay.js index 5dee2fe422..3a957ef7a5 100644 --- a/polygerrit-ui/app/elements/shared/gr-overlay/gr-overlay.js +++ b/polygerrit-ui/app/elements/shared/gr-overlay/gr-overlay.js @@ -63,13 +63,13 @@ } open(...args) { - return new Promise(resolve => { + return new Promise((resolve, reject) => { Polymer.IronOverlayBehaviorImpl.open.apply(this, args); if (this._isMobile()) { this.fire('fullscreen-overlay-opened'); this._fullScreenOpen = true; } - this._awaitOpen(resolve); + this._awaitOpen(resolve, reject); }); } @@ -96,7 +96,7 @@ * NOTE: (wyatta) Slightly hacky way to listen to the overlay actually * opening. Eventually replace with a direct way to listen to the overlay. */ - _awaitOpen(fn) { + _awaitOpen(fn, reject) { let iters = 0; const step = () => { this.async(() => { @@ -105,11 +105,7 @@ } else if (iters++ < AWAIT_MAX_ITERS) { step.call(this); } else { - // TODO(crbug.com/gerrit/10774): Once this is confirmed as the root - // cause of the bug, fix it by either making sure to resolve the fn - // function or find a better way to listen on the overlay being - // shown. - console.warn('gr-overlay _awaitOpen failed to resolve'); + reject(new Error('gr-overlay _awaitOpen failed to resolve')); } }, AWAIT_STEP); };