diff --git a/lib/utils/resolve-url.html b/lib/utils/resolve-url.html index 6d061a826e..4892054506 100644 --- a/lib/utils/resolve-url.html +++ b/lib/utils/resolve-url.html @@ -16,6 +16,7 @@ let CSS_URL_RX = /(url\()([^)]*)(\))/g; let ABS_URL = /(^\/)|(^#)|(^[\w-\d]*:)/; + let DATA_URI = /data:/; let workingURL; let resolveDoc; /** @@ -31,6 +32,9 @@ * @return {string} resolved URL */ function resolveUrl(url, baseURI) { + if (baseURI && DATA_URI.test(baseURI)) { + return url; + } if (url && ABS_URL.test(url)) { return url; } diff --git a/test/runner.html b/test/runner.html index 633fed9080..46e5b0de61 100644 --- a/test/runner.html +++ b/test/runner.html @@ -79,7 +79,8 @@ 'unit/dir.html', 'unit/disable-upgrade.html', 'unit/shady-unscoped-style.html', - 'unit/html-tag.html' + 'unit/html-tag.html', + 'unit/data-uri-link.html' // 'unit/multi-style.html' ]; diff --git a/test/unit/data-uri-link.html b/test/unit/data-uri-link.html new file mode 100644 index 0000000000..9ea0f6ba6d --- /dev/null +++ b/test/unit/data-uri-link.html @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + diff --git a/test/unit/resolveurl.html b/test/unit/resolveurl.html index 9da04704ad..b884c252ce 100644 --- a/test/unit/resolveurl.html +++ b/test/unit/resolveurl.html @@ -143,6 +143,13 @@ assert.equal(actual, expected); }); + test('resolveUrl api with data base', function() { + var el = document.createElement('p-r'); + var expected = 'resolveurl.html'; + var actual = el.resolveUrl('resolveurl.html', 'data:text/html,some%20data'); + assert.equal(actual, expected); + }); + test('resolveUrl api, when defined in main doc', function() { var el = document.querySelector('x-resolve'); var expected = document.location.href.replace(/[?#].*$/, '');