diff --git a/src/service/viewer-impl.js b/src/service/viewer-impl.js index 86060b19ae67..5d95786eee91 100644 --- a/src/service/viewer-impl.js +++ b/src/service/viewer-impl.js @@ -259,14 +259,14 @@ export class Viewer { /** @private {string} */ this.unconfirmedReferrerUrl_ = - this.isEmbedded() && this.params_['referrer'] && + this.isEmbedded() && 'referrer' in this.params_ && trustedViewerResolved !== false ? this.params_['referrer'] : this.win.document.referrer; /** @const @private {!Promise} */ this.referrerUrl_ = new Promise(resolve => { - if (this.isEmbedded() && this.params_['referrer']) { + if (this.isEmbedded() && 'referrer' in this.params_) { // Viewer override, but only for whitelisted viewers. Only allowed for // iframed documents. this.isTrustedViewer_.then(isTrusted => { diff --git a/test/functional/test-viewer.js b/test/functional/test-viewer.js index 65d113c69edb..b157c419ec10 100644 --- a/test/functional/test-viewer.js +++ b/test/functional/test-viewer.js @@ -435,5 +435,19 @@ describe('Viewer', () => { expect(timeouts).to.have.length(0); }); }); + + it('should allow override to empty if iframed and trusted', () => { + windowApi.parent = {}; + windowApi.location.hash = '#referrer='; + windowApi.document.referrer = 'https://acme.org/docref'; + windowApi.location.ancestorOrigins = ['https://google.com']; + const viewer = new Viewer(windowApi); + expect(viewer.getUnconfirmedReferrerUrl()) + .to.equal(''); + return viewer.getReferrerUrl().then(referrerUrl => { + expect(referrerUrl).to.equal(''); + expect(timeouts).to.have.length(0); + }); + }); }); });