Skip to content

Commit e63bd34

Browse files
committed
9092ac7 refactor(core): support non reflective bootstrap.
1 parent 16b7a90 commit e63bd34

177 files changed

Lines changed: 4138 additions & 3957 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

BUILD_INFO

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
Wed Apr 20 04:46:14 UTC 2016
2-
30c43521d316426caad01ce19c7e4fd655493c5e
1+
Wed Apr 20 19:59:12 UTC 2016
2+
9092ac79d49edee5e58cf26d890209766885753f

_analyzer.dart

Lines changed: 524 additions & 518 deletions
Large diffs are not rendered by default.

lib/angular2.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export 'package:angular2/instrumentation.dart';
1111
export 'package:angular2/src/core/angular_entrypoint.dart'
1212
show AngularEntrypoint;
1313
export 'package:angular2/src/core/application_tokens.dart'
14-
hide APP_COMPONENT_REF_PROMISE, APP_ID_RANDOM_PROVIDER;
14+
hide APP_ID_RANDOM_PROVIDER;
1515
export 'package:angular2/src/platform/dom/dom_tokens.dart';
1616
export 'package:angular2/src/platform/dom/dom_adapter.dart';
1717
export 'package:angular2/src/platform/dom/events/event_manager.dart';

lib/core.dart

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@ export 'package:angular2/src/facade/lang.dart' show enableProdMode;
77
export './src/core/di.dart' hide ForwardRefFn, resolveForwardRef, forwardRef;
88
export './src/facade/facade.dart';
99
export './src/core/application_ref.dart'
10-
show platform, createNgZone, PlatformRef, ApplicationRef;
11-
export './src/core/application_tokens.dart'
1210
show
13-
APP_ID,
14-
APP_COMPONENT,
15-
APP_INITIALIZER,
16-
PACKAGE_ROOT_URL,
17-
PLATFORM_INITIALIZER;
11+
createPlatform,
12+
assertPlatform,
13+
disposePlatform,
14+
getPlatform,
15+
coreLoadAndBootstrap,
16+
coreBootstrap,
17+
createNgZone,
18+
PlatformRef,
19+
ApplicationRef;
20+
export './src/core/application_tokens.dart'
21+
show APP_ID, APP_INITIALIZER, PACKAGE_ROOT_URL, PLATFORM_INITIALIZER;
1822
export './src/core/zone.dart';
1923
export './src/core/render.dart';
2024
export './src/core/linker.dart';

lib/platform/browser.dart

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,24 @@ export "package:angular2/src/platform/browser_common.dart"
1616
DOCUMENT,
1717
enableDebugTools,
1818
disableDebugTools;
19-
import "package:angular2/src/facade/lang.dart" show Type, isPresent;
19+
import "package:angular2/src/facade/lang.dart" show Type, isPresent, isBlank;
2020
import "package:angular2/src/platform/browser_common.dart"
21-
show BROWSER_PROVIDERS, BROWSER_APP_COMMON_PROVIDERS;
21+
show
22+
BROWSER_PROVIDERS,
23+
BROWSER_APP_COMMON_PROVIDERS,
24+
BROWSER_PLATFORM_MARKER;
2225
import "package:angular2/compiler.dart" show COMPILER_PROVIDERS;
23-
import "package:angular2/core.dart" show ComponentRef, platform, reflector;
26+
import "package:angular2/core.dart"
27+
show
28+
ComponentRef,
29+
coreLoadAndBootstrap,
30+
reflector,
31+
ReflectiveInjector,
32+
PlatformRef,
33+
OpaqueToken,
34+
getPlatform,
35+
createPlatform,
36+
assertPlatform;
2437
import "package:angular2/src/core/reflection/reflection_capabilities.dart"
2538
show ReflectionCapabilities;
2639
import "package:angular2/src/platform/browser/xhr_impl.dart" show XHRImpl;
@@ -35,6 +48,13 @@ const List<dynamic> BROWSER_APP_PROVIDERS = const [
3548
COMPILER_PROVIDERS,
3649
const Provider(XHR, useClass: XHRImpl)
3750
];
51+
PlatformRef browserPlatform() {
52+
if (isBlank(getPlatform())) {
53+
createPlatform(ReflectiveInjector.resolveAndCreate(BROWSER_PROVIDERS));
54+
}
55+
return assertPlatform(BROWSER_PLATFORM_MARKER);
56+
}
57+
3858
/**
3959
* Bootstrapping for Angular applications.
4060
*
@@ -106,10 +126,9 @@ const List<dynamic> BROWSER_APP_PROVIDERS = const [
106126
Future<ComponentRef> bootstrap(Type appComponentType,
107127
[List<dynamic> customProviders]) {
108128
reflector.reflectionCapabilities = new ReflectionCapabilities();
109-
var appProviders = isPresent(customProviders)
110-
? [BROWSER_APP_PROVIDERS, customProviders]
111-
: BROWSER_APP_PROVIDERS;
112-
return platform(BROWSER_PROVIDERS)
113-
.application(appProviders)
114-
.bootstrap(appComponentType);
129+
var appInjector = ReflectiveInjector.resolveAndCreate([
130+
BROWSER_APP_PROVIDERS,
131+
isPresent(customProviders) ? customProviders : []
132+
], browserPlatform().injector);
133+
return coreLoadAndBootstrap(appInjector, appComponentType);
115134
}

lib/platform/browser_static.dart

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,35 @@ export "package:angular2/src/platform/browser_common.dart"
1414
Title,
1515
enableDebugTools,
1616
disableDebugTools;
17-
import "package:angular2/src/facade/lang.dart" show Type, isPresent;
17+
import "package:angular2/src/facade/lang.dart" show Type, isPresent, isBlank;
1818
import "package:angular2/src/platform/browser_common.dart"
19-
show BROWSER_PROVIDERS, BROWSER_APP_COMMON_PROVIDERS;
20-
import "package:angular2/core.dart" show ComponentRef, platform;
19+
show
20+
BROWSER_PROVIDERS,
21+
BROWSER_APP_COMMON_PROVIDERS,
22+
BROWSER_PLATFORM_MARKER;
23+
import "package:angular2/core.dart"
24+
show
25+
ComponentRef,
26+
coreLoadAndBootstrap,
27+
ReflectiveInjector,
28+
PlatformRef,
29+
getPlatform,
30+
createPlatform,
31+
assertPlatform;
2132

2233
/**
2334
* An array of providers that should be passed into `application()` when bootstrapping a component
2435
* when all templates
2536
* have been precompiled offline.
2637
*/
2738
const List<dynamic> BROWSER_APP_PROVIDERS = BROWSER_APP_COMMON_PROVIDERS;
39+
PlatformRef browserStaticPlatform() {
40+
if (isBlank(getPlatform())) {
41+
createPlatform(ReflectiveInjector.resolveAndCreate(BROWSER_PROVIDERS));
42+
}
43+
return assertPlatform(BROWSER_PLATFORM_MARKER);
44+
}
45+
2846
/**
2947
* See [bootstrap] for more information.
3048
*/
@@ -36,7 +54,7 @@ Future<ComponentRef> bootstrapStatic(Type appComponentType,
3654
var appProviders = isPresent(customProviders)
3755
? [BROWSER_APP_PROVIDERS, customProviders]
3856
: BROWSER_APP_PROVIDERS;
39-
return platform(BROWSER_PROVIDERS)
40-
.application(appProviders)
41-
.bootstrap(appComponentType);
57+
var appInjector = ReflectiveInjector.resolveAndCreate(
58+
appProviders, browserStaticPlatform().injector);
59+
return coreLoadAndBootstrap(appInjector, appComponentType);
4260
}

lib/platform/common.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/**
2+
* Platform agnostic services.
3+
* Can be used both in the browser and on the server.
4+
*/
5+
library angular2.platform.common;
6+
7+
export "package:angular2/src/platform/location.dart";

lib/platform/common_dom.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/**
2-
* This is a set of classes and objects that can be used both in the browser and on the server.
2+
* This is a set of DOM related classes and objects that can be used both in the browser and on the
3+
* server.
34
*/
45
library angular2.platform.common_dom;
56

lib/platform/testing/browser_static.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ import "package:angular2/src/mock/view_resolver_mock.dart"
2222
show MockViewResolver;
2323
import "package:angular2/src/mock/mock_location_strategy.dart"
2424
show MockLocationStrategy;
25-
import "package:angular2/src/router/location/location_strategy.dart"
26-
show LocationStrategy;
25+
import "package:angular2/platform/common.dart" show LocationStrategy;
2726
import "package:angular2/src/mock/ng_zone_mock.dart" show MockNgZone;
2827
import "package:angular2/src/platform/browser/xhr_impl.dart" show XHRImpl;
2928
import "package:angular2/compiler.dart" show XHR;

lib/platform/worker_app.dart

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
library angular2.platform.worker_app;
22

3+
import "package:angular2/src/platform/worker_app_common.dart";
4+
import "package:angular2/src/platform/worker_app.dart";
5+
import 'package:angular2/core.dart';
6+
import 'package:angular2/src/facade/lang.dart';
7+
import 'dart:isolate';
8+
import 'dart:async';
9+
310
export "package:angular2/src/platform/worker_app_common.dart"
411
show WORKER_APP_PLATFORM, WORKER_APP_APPLICATION_COMMON;
512
export "package:angular2/src/core/angular_entrypoint.dart"
@@ -14,3 +21,30 @@ export 'package:angular2/src/web_workers/shared/serializer.dart' show PRIMITIVE;
1421
export 'package:angular2/src/web_workers/shared/message_bus.dart';
1522
export 'package:angular2/src/web_workers/worker/router_providers.dart'
1623
show WORKER_APP_ROUTER;
24+
25+
PlatformRef _platform = null;
26+
SendPort _renderSendPort = null;
27+
28+
PlatformRef workerAppPlatform(SendPort renderSendPort) {
29+
if (isBlank(getPlatform())) {
30+
createPlatform(ReflectiveInjector.resolveAndCreate([
31+
WORKER_APP_PLATFORM,
32+
new Provider(RENDER_SEND_PORT, useValue: renderSendPort)
33+
]));
34+
}
35+
var platform = assertPlatform(WORKER_APP_PLATFORM_MARKER);
36+
if (platform.injector.get(RENDER_SEND_PORT, null) != renderSendPort) {
37+
throw 'Platform has already been created with a different SendPort. Please distroy it first.';
38+
}
39+
return platform;
40+
}
41+
42+
Future<ComponentRef> bootstrapApp(
43+
SendPort renderSendPort, Type appComponentType,
44+
[List<dynamic /*Type | Provider | any[]*/ > customProviders]) {
45+
var appInjector = ReflectiveInjector.resolveAndCreate([
46+
WORKER_APP_APPLICATION,
47+
isPresent(customProviders) ? customProviders : []
48+
], workerAppPlatform(renderSendPort).injector);
49+
return coreLoadAndBootstrap(appInjector, appComponentType);
50+
}

0 commit comments

Comments
 (0)