Skip to content

Commit fd9b675

Browse files
committed
fix(url_resolver): always replace package: in Dart, even if it came from baseUrl.
Closes #4775
1 parent 5256457 commit fd9b675

3 files changed

Lines changed: 20 additions & 8 deletions

File tree

modules/angular2/src/core/compiler/url_resolver.dart

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
library angular2.src.services.url_resolver;
22

3-
import 'package:angular2/src/core/di.dart' show Injectable;
3+
import 'package:angular2/src/core/di.dart' show Injectable, Provider;
4+
5+
UrlResolver createWithoutPackagePrefix() {
6+
return new UrlResolver.withUrlPrefix(null);
7+
}
48

59
@Injectable()
610
class UrlResolver {
@@ -28,14 +32,15 @@ class UrlResolver {
2832
*/
2933
String resolve(String baseUrl, String url) {
3034
Uri uri = Uri.parse(url);
35+
if (!uri.isAbsolute) {
36+
Uri baseUri = Uri.parse(baseUrl);
37+
uri = baseUri.resolveUri(uri);
38+
}
3139

32-
if (uri.scheme == 'package') {
40+
if (_packagePrefix != null && uri.scheme == 'package') {
3341
return '$_packagePrefix/${uri.path}';
42+
} else {
43+
return uri.toString();
3444
}
35-
36-
if (uri.isAbsolute) return uri.toString();
37-
38-
Uri baseUri = Uri.parse(baseUrl);
39-
return baseUri.resolveUri(uri).toString();
4045
}
4146
}

modules/angular2/src/core/compiler/url_resolver.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ import {isPresent, isBlank, RegExpWrapper, normalizeBlank} from 'angular2/src/co
33
import {BaseException, WrappedException} from 'angular2/src/core/facade/exceptions';
44
import {ListWrapper} from 'angular2/src/core/facade/collection';
55

6+
export function createWithoutPackagePrefix(): UrlResolver {
7+
return new UrlResolver();
8+
}
9+
10+
611
/**
712
* Used by the {@link Compiler} when resolving HTML and CSS template URLs.
813
*

modules/angular2/test/core/compiler/test_bindings.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ import {MockSchemaRegistry} from './schema_registry_mock';
33
import {ElementSchemaRegistry} from 'angular2/src/core/compiler/schema/element_schema_registry';
44
import {MockXHR} from 'angular2/src/core/compiler/xhr_mock';
55
import {XHR} from 'angular2/src/core/compiler/xhr';
6+
import {UrlResolver, createWithoutPackagePrefix} from 'angular2/src/core/compiler/url_resolver';
67

78
export var TEST_PROVIDERS = [
89
provide(ElementSchemaRegistry, {useValue: new MockSchemaRegistry({}, {})}),
9-
provide(XHR, {useClass: MockXHR})
10+
provide(XHR, {useClass: MockXHR}),
11+
provide(UrlResolver, {useFactory: createWithoutPackagePrefix})
1012
];

0 commit comments

Comments
 (0)