Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit 0b5df6b

Browse files
Ted Sanderrkirov
authored andcommitted
<fix>(resource_url_resolver): Makes resolved URLs absolute
Makes resolved type URLs absolute instead of relative. When they are relative it is difficult to reuse components. Using pub serve relative URLs are resolved because pub does some magic to allow add symlinks to the packages directory where needed. In production relative URLs make it difficult to add file handlers to the locations that are needed, as the location will be determined based on the current browser path or route. It also makes the template cache harder to populate because the same resource may need to be served from two separate URLs. Closes #1599
1 parent 0961b6e commit 0b5df6b

File tree

3 files changed

+14
-16
lines changed

3 files changed

+14
-16
lines changed

lib/core_dom/resource_url_resolver.dart

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,11 @@ class ResourceUrlResolver {
160160
// If it's not absolute, then resolve it first
161161
Uri resolved = baseUri.resolve(uri);
162162

163-
// If it's package-relative, tack on 'packages/' - Note that eventually
164-
// we may want to change this to be '/packages/' to make it truly absolute
163+
// If it's package-relative, tack on '/packages/'
165164
if (resolved.scheme == 'package') {
166-
return 'packages/${resolved.path}';
165+
return '/packages/${resolved.path}';
167166
} else if (resolved.isAbsolute && resolved.toString().startsWith(_baseUri)) {
168-
var path = resolved.path;
169-
return path.startsWith("/") ? path.substring(1) : path;
167+
return resolved.path;
170168
} else {
171169
return resolved.toString();
172170
}

test/_specs.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ e(String html) => es(html).first;
4848
// this file, _specs.dart, is at path /base/test/_specs.dart. However, if
4949
// you're using a different test server or reconfigured the base prefix, then
5050
// you can set this to something different.
51-
String TEST_SERVER_BASE_PREFIX = "base/";
51+
String TEST_SERVER_BASE_PREFIX = "/base/";
5252

5353
Expect expect(actual, [matcher]) {
5454
final expect = new Expect(actual);

test/core_dom/resource_url_resolver_spec.dart

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -195,18 +195,18 @@ _run_resolver({useRelativeUrls}) {
195195

196196
testBothSchemes(
197197
urlToResolve: 'package:a.b/c/d/foo2.html',
198-
expectedForPackageScheme: 'packages/a.b/c/d/foo2.html',
199-
expectedForHttpScheme: 'packages/a.b/c/d/foo2.html');
198+
expectedForPackageScheme: '/packages/a.b/c/d/foo2.html',
199+
expectedForHttpScheme: '/packages/a.b/c/d/foo2.html');
200200

201201
testBothSchemes(
202202
urlToResolve: 'image.png',
203-
expectedForPackageScheme: 'packages/angular/test/core_dom/image.png',
204-
expectedForHttpScheme: 'a/b/image.png');
203+
expectedForPackageScheme: '/packages/angular/test/core_dom/image.png',
204+
expectedForHttpScheme: '/a/b/image.png');
205205

206206
testBothSchemes(
207207
urlToResolve: './image2.png',
208-
expectedForPackageScheme: 'packages/angular/test/core_dom/image2.png',
209-
expectedForHttpScheme: 'a/b/image2.png');
208+
expectedForPackageScheme: '/packages/angular/test/core_dom/image2.png',
209+
expectedForHttpScheme: '/a/b/image2.png');
210210

211211
testBothSchemes(
212212
urlToResolve: '/image3.png',
@@ -225,13 +225,13 @@ _run_resolver({useRelativeUrls}) {
225225

226226
testBothSchemes(
227227
urlToResolve: 'HTTP://LOCALHOST/a/b/image4.png',
228-
expectedForPackageScheme: 'a/b/image4.png',
229-
expectedForHttpScheme: 'a/b/image4.png');
228+
expectedForPackageScheme: '/a/b/image4.png',
229+
expectedForHttpScheme: '/a/b/image4.png');
230230

231231
testBothSchemes(
232232
urlToResolve: 'HTTP://LOCALHOST/packages/angular/test/core_dom/foo3.html',
233-
expectedForPackageScheme: 'packages/angular/test/core_dom/foo3.html',
234-
expectedForHttpScheme: 'packages/angular/test/core_dom/foo3.html');
233+
expectedForPackageScheme: '/packages/angular/test/core_dom/foo3.html',
234+
expectedForHttpScheme: '/packages/angular/test/core_dom/foo3.html');
235235

236236
});
237237
}

0 commit comments

Comments
 (0)