| Index: pkg/polymer/lib/src/loader.dart
|
| diff --git a/pkg/polymer/lib/src/loader.dart b/pkg/polymer/lib/src/loader.dart
|
| index 13e8b1c765fdef0f6e61a17c6aa74487ca9e86ea..fb28836ed798edb1539c88280273cc670e445b3d 100644
|
| --- a/pkg/polymer/lib/src/loader.dart
|
| +++ b/pkg/polymer/lib/src/loader.dart
|
| @@ -20,32 +20,38 @@ class InitMethodAnnotation {
|
| const InitMethodAnnotation();
|
| }
|
|
|
| -/// This method is deprecated. It used to be where polymer initialization
|
| -/// happens, now this is done automatically from bootstrap.dart.
|
| -@deprecated
|
| +/// Initializes a polymer application as follows:
|
| +/// * if running in development mode, set up a dirty-checking zone that polls
|
| +/// for observable changes
|
| +/// * initialize template binding and polymer-element
|
| +/// * for each library included transitively from HTML and HTML imports,
|
| +/// register custom elements declared there (labeled with [CustomTag]) and
|
| +/// invoke the initialization method on it (top-level functions annotated with
|
| +/// [initMethod]).
|
| Zone initPolymer() {
|
| - window.console.error(_ERROR);
|
| - return Zone.current;
|
| + if (loader.deployMode) {
|
| + startPolymer(loader.initializers, loader.deployMode);
|
| + return Zone.current;
|
| + }
|
| + return dirtyCheckZone()..run(
|
| + () => startPolymer(loader.initializers, loader.deployMode));
|
| }
|
|
|
| -const _ERROR = '''
|
| -initPolymer is now deprecated. To initialize a polymer app:
|
| - * add to your page: <link rel="import" href="packages/polymer/polymer.html">
|
| - * replace "application/dart" mime-types with "application/dart;component=1"
|
| - * if you use "init.dart", remove it
|
| - * if you have a main, change it into a method annotated with @initMethod
|
| -''';
|
| -
|
| /// True if we're in deployment mode.
|
| bool _deployMode = false;
|
|
|
| +bool _startPolymerCalled = false;
|
| +
|
| /// Starts polymer by running all [initializers] and hooking the polymer.js
|
| /// code. **Note**: this function is not meant to be invoked directly by
|
| -/// application developers. It is invoked by a bootstrap entry point that is
|
| -/// automatically generated. During development, this entry point is generated
|
| -/// dynamically in `boot.js`. Similarly, pub-build generates this entry point
|
| -/// for deployment.
|
| +/// application developers. It is invoked either by [initPolymer] or, if you are
|
| +/// using the experimental bootstrap API, this would be invoked by an entry
|
| +/// point that is automatically generated somehow. In particular, during
|
| +/// development, the entry point would be generated dynamically in `boot.js`.
|
| +/// Similarly, pub-build would generate the entry point for deployment.
|
| void startPolymer(List<Function> initializers, [bool deployMode = true]) {
|
| + if (_startPolymerCalled) throw 'Initialization was already done.';
|
| + _startPolymerCalled = true;
|
| _hookJsPolymer();
|
| _deployMode = deployMode;
|
|
|
| @@ -54,6 +60,15 @@ void startPolymer(List<Function> initializers, [bool deployMode = true]) {
|
| }
|
| }
|
|
|
| +/// Configures [initPolymer] making it optimized for deployment to the internet.
|
| +/// With this setup the initializer list is supplied instead of searched for
|
| +/// at runtime. Additionally, after this method is called [initPolymer] omits
|
| +/// the [Zone] that automatically invokes [Observable.dirtyCheck].
|
| +void configureForDeployment(List<Function> initializers) {
|
| + loader.initializers = initializers;
|
| + loader.deployMode = true;
|
| +}
|
| +
|
| /// To ensure Dart can interoperate with polymer-element registered by
|
| /// polymer.js, we need to be able to execute Dart code if we are registering
|
| /// a Dart class for that element. We trigger Dart logic by patching
|
|
|