it('should support absolute urls', () => { expect(resolver.resolve('http://www.foo.com', '/bar')).toEqual('http://www.foo.com/bar'); expect(resolver.resolve('http://www.foo.com/', '/bar')).toEqual('http://www.foo.com/bar'); expect(resolver.resolve('http://www.foo.com/baz', '/bar')) .toEqual('http://www.foo.com/bar'); expect(resolver.resolve('http://www.foo.com/baz/', '/bar')) .toEqual('http://www.foo.com/bar'); });
it('should support ".." in the path', () => { expect(resolver.resolve('http://www.foo.com/baz/', '../bar')) .toEqual('http://www.foo.com/bar'); expect(resolver.resolve('http://www.foo.com/1/2/3/', '../../bar')) .toEqual('http://www.foo.com/1/bar'); expect(resolver.resolve('http://www.foo.com/1/2/3/', '../biz/bar')) .toEqual('http://www.foo.com/1/2/biz/bar'); expect(resolver.resolve('http://www.foo.com/1/2/baz', '../../bar')) .toEqual('http://www.foo.com/bar'); });
var modifiedCssText = StringWrapper.replaceAllMapped(cssText, _cssImportRe, (m) => { var url = isPresent(m[1]) ? m[1] : m[2]; if (!isStyleUrlResolvable(url)) { // Do not attempt to resolve non-package absolute URLs with URI scheme return m[0]; } foundUrls.push(resolver.resolve(baseUrl, url)); return ''; });
return StringWrapper.replaceAllMapped(cssText, _cssImportRe, (m) => { var url = isPresent(m[1]) ? m[1] : m[2]; var schemeMatch = RegExpWrapper.firstMatch(_urlWithSchemaRe, url); if (isPresent(schemeMatch) && schemeMatch[1] != 'package') { // Do not attempt to resolve non-package absolute URLs with URI scheme return m[0]; } foundUrls.push(resolver.resolve(baseUrl, url)); return ''; });
return StringWrapper.replaceAllMapped(cssText, _cssUrlRe, (m) => { var pre = m[1]; var originalUrl = m[2]; if (RegExpWrapper.test(_dataUrlRe, originalUrl)) { // Do not attempt to resolve data: URLs return m[0]; } var url = StringWrapper.replaceAll(originalUrl, _quoteRe, ''); var post = m[3]; var resolvedUrl = resolver.resolve(baseUrl, url); return pre + "'" + resolvedUrl + "'" + post; });
return StringWrapper.replaceAllMapped(cssText, _cssImportRe, (m) => { var url = isPresent(m[1]) ? m[1] : m[2]; foundUrls.push(resolver.resolve(baseUrl, url)); return ''; });
it('should add a relative path to the base url', () => { expect(resolver.resolve('http://www.foo.com', 'bar')).toEqual('http://www.foo.com/bar'); expect(resolver.resolve('http://www.foo.com/', 'bar')).toEqual('http://www.foo.com/bar'); expect(resolver.resolve('http://www.foo.com', './bar')).toEqual('http://www.foo.com/bar'); expect(resolver.resolve('http://www.foo.com/', './bar')).toEqual('http://www.foo.com/bar'); });
it('should encode URLs before resolving', () => { expect(resolver.resolve('foo/baz', `<p #p>Hello </p>`)) .toEqual('foo/%3Cp%20#p%3EHello%0A%20%20%20%20%20%20%20%20%3C/p%3E'); });
it('should support absolute urls', () => { expect(resolver.resolve('foo/baz', '/bar')).toEqual('/bar'); expect(resolver.resolve('foo/baz/', '/bar')).toEqual('/bar'); });
it('should support ".." in the path', () => { expect(resolver.resolve('foo/baz', '../bar')).toEqual('bar'); expect(resolver.resolve('foo/baz', '../biz/bar')).toEqual('biz/bar'); });