Skip to content

Commit 5408abc

Browse files
committed
refactor(change_detection): removed global change detection objects so it is possible to override pipe registry
1 parent 233cb0f commit 5408abc

File tree

9 files changed

+35
-29
lines changed

9 files changed

+35
-29
lines changed

modules/angular2/change_detection.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ export {PipeRegistry} from './src/change_detection/pipes/pipe_registry';
2525
export {uninitialized} from './src/change_detection/change_detection_util';
2626
export {NO_CHANGE, Pipe} from './src/change_detection/pipes/pipe';
2727
export {
28-
defaultPipes, DynamicChangeDetection, JitChangeDetection, dynamicChangeDetection, jitChangeDetection
28+
defaultPipes, DynamicChangeDetection, JitChangeDetection, defaultPipeRegistry
2929
} from './src/change_detection/change_detection';

modules/angular2/src/change_detection/change_detection.js

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {KeyValueChangesFactory} from './pipes/keyvalue_changes';
55
import {NullPipeFactory} from './pipes/null_pipe';
66
import {DEFAULT} from './constants';
77
import {ChangeDetection, ProtoChangeDetector} from './interfaces';
8+
import {Injectable} from 'angular2/di';
89

910
export var defaultPipes = {
1011
"iterableDiff" : [
@@ -17,6 +18,10 @@ export var defaultPipes = {
1718
]
1819
};
1920

21+
/**
22+
* @exportedAs angular2/change_detection
23+
*/
24+
@Injectable()
2025
export class DynamicChangeDetection extends ChangeDetection {
2126
registry:PipeRegistry;
2227

@@ -30,6 +35,10 @@ export class DynamicChangeDetection extends ChangeDetection {
3035
}
3136
}
3237

38+
/**
39+
* @exportedAs angular2/change_detection
40+
*/
41+
@Injectable()
3342
export class JitChangeDetection extends ChangeDetection {
3443
registry:PipeRegistry;
3544

@@ -43,18 +52,4 @@ export class JitChangeDetection extends ChangeDetection {
4352
}
4453
}
4554

46-
var _registry = new PipeRegistry(defaultPipes);
47-
48-
/**
49-
* Implements dynamic change detection. See: [ChangeDetection] for more details.
50-
*
51-
* @exportedAs angular2/change_detection
52-
*/
53-
export var dynamicChangeDetection = new DynamicChangeDetection(_registry);
54-
55-
/**
56-
* Implements just-in-time change detection. See: [ChangeDetection] for more details.
57-
*
58-
* @exportedAs angular2/change_detection
59-
*/
60-
export var jitChangeDetection = new JitChangeDetection(_registry);
55+
export var defaultPipeRegistry = new PipeRegistry(defaultPipes);

modules/angular2/src/change_detection/pipes/pipe_registry.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import {List, ListWrapper} from 'angular2/src/facade/collection';
22
import {isBlank, isPresent, BaseException, CONST} from 'angular2/src/facade/lang';
33
import {Pipe} from './pipe';
4+
import {Injectable} from 'angular2/di';
45
import {ChangeDetectorRef} from '../change_detector_ref';
56

7+
@Injectable()
68
export class PipeRegistry {
79
config;
810

modules/angular2/src/core/application.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {BrowserDomAdapter} from 'angular2/src/dom/browser_adapter';
55
import {DOM} from 'angular2/src/dom/dom_adapter';
66
import {Compiler, CompilerCache} from './compiler/compiler';
77
import {Reflector, reflector} from 'angular2/src/reflection/reflection';
8-
import {Parser, Lexer, ChangeDetection, dynamicChangeDetection, jitChangeDetection} from 'angular2/change_detection';
8+
import {Parser, Lexer, ChangeDetection, DynamicChangeDetection, PipeRegistry, defaultPipeRegistry} from 'angular2/change_detection';
99
import {ExceptionHandler} from './exception_handler';
1010
import {TemplateLoader} from 'angular2/src/render/dom/compiler/template_loader';
1111
import {TemplateResolver} from './compiler/template_resolver';
@@ -113,7 +113,8 @@ function _injectorBindings(appComponentType): List<Binding> {
113113
Compiler,
114114
CompilerCache,
115115
TemplateResolver,
116-
bind(ChangeDetection).toValue(dynamicChangeDetection),
116+
bind(PipeRegistry).toValue(defaultPipeRegistry),
117+
bind(ChangeDetection).toClass(DynamicChangeDetection),
117118
TemplateLoader,
118119
DirectiveMetadataReader,
119120
Parser,

modules/angular2/src/test_lib/test_injector.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import {bind} from 'angular2/di';
22

33
import {Compiler, CompilerCache} from 'angular2/src/core/compiler/compiler';
44
import {Reflector, reflector} from 'angular2/src/reflection/reflection';
5-
import {Parser, Lexer, ChangeDetection, dynamicChangeDetection} from 'angular2/change_detection';
5+
import {Parser, Lexer, ChangeDetection, DynamicChangeDetection,
6+
PipeRegistry, defaultPipeRegistry} from 'angular2/change_detection';
67
import {ExceptionHandler} from 'angular2/src/core/exception_handler';
78
import {TemplateLoader} from 'angular2/src/render/dom/compiler/template_loader';
89
import {TemplateResolver} from 'angular2/src/core/compiler/template_resolver';
@@ -90,7 +91,8 @@ function _getAppBindings() {
9091
Compiler,
9192
CompilerCache,
9293
bind(TemplateResolver).toClass(MockTemplateResolver),
93-
bind(ChangeDetection).toValue(dynamicChangeDetection),
94+
bind(PipeRegistry).toValue(defaultPipeRegistry),
95+
bind(ChangeDetection).toClass(DynamicChangeDetection),
9496
TemplateLoader,
9597
DynamicComponentLoader,
9698
DirectiveMetadataReader,

modules/angular2/test/core/compiler/integration_spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import {Type, isPresent, BaseException, assertionsEnabled, isJsObject, global} f
2121
import {PromiseWrapper, EventEmitter, ObservableWrapper} from 'angular2/src/facade/async';
2222

2323
import {Injector, bind} from 'angular2/di';
24-
import {dynamicChangeDetection,
25-
ChangeDetection, DynamicChangeDetection, Pipe, PipeRegistry, ChangeDetectorRef, ON_PUSH} from 'angular2/change_detection';
24+
import {PipeRegistry, defaultPipeRegistry,
25+
ChangeDetection, DynamicChangeDetection, Pipe, ChangeDetectorRef, ON_PUSH} from 'angular2/change_detection';
2626

2727
import {Decorator, Component, Viewport, DynamicComponent} from 'angular2/src/core/annotations/annotations';
2828
import {View} from 'angular2/src/core/annotations/view';

modules/benchmarks/src/change_detection/change_detection_benchmark.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import {
99
Parser,
1010
ChangeDispatcher,
1111
ChangeDetection,
12-
dynamicChangeDetection,
13-
jitChangeDetection,
12+
DynamicChangeDetection,
13+
JitChangeDetection,
1414
BindingRecord,
1515
DirectiveRecord,
1616
DEFAULT
@@ -261,7 +261,7 @@ export function main () {
261261

262262

263263
// -- DYNAMIC
264-
var ng2DynamicChangeDetector = setUpChangeDetection(dynamicChangeDetection, numberOfDetectors, object);
264+
var ng2DynamicChangeDetector = setUpChangeDetection(new DynamicChangeDetection(null), numberOfDetectors, object);
265265

266266
runChangeDetectionReads(ng2DynamicChangeDetector, 1); //warmup
267267

@@ -281,7 +281,7 @@ export function main () {
281281
// -- JIT
282282
// Reenable when we have transformers for Dart
283283
if (isJsObject({})) {
284-
var ng2JitChangeDetector = setUpChangeDetection(jitChangeDetection, numberOfDetectors, object);
284+
var ng2JitChangeDetector = setUpChangeDetection(new JitChangeDetection(null), numberOfDetectors, object);
285285

286286
runChangeDetectionReads(ng2JitChangeDetector, 1); //warmup
287287

modules/benchmarks/src/compiler/compiler_benchmark.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {MapWrapper} from 'angular2/src/facade/collection';
66
import {DirectiveMetadata} from 'angular2/src/core/compiler/directive_metadata';
77
import {NativeShadowDomStrategy} from 'angular2/src/render/dom/shadow_dom/native_shadow_dom_strategy';
88

9-
import {Parser, Lexer, ProtoRecordRange, dynamicChangeDetection} from 'angular2/change_detection';
9+
import {Parser, Lexer, ProtoRecordRange, DynamicChangeDetection} from 'angular2/change_detection';
1010

1111
import {Compiler, CompilerCache} from 'angular2/src/core/compiler/compiler';
1212
import {DirectiveMetadataReader} from 'angular2/src/core/compiler/directive_metadata_reader';
@@ -82,7 +82,7 @@ export function main() {
8282
new ComponentUrlMapper(),
8383
urlResolver,
8484
renderer,
85-
new ProtoViewFactory(dynamicChangeDetection)
85+
new ProtoViewFactory(new DynamicChangeDetection(null))
8686
);
8787
var templateNoBindings = createTemplateHtml('templateNoBindings', count);
8888
var templateWithBindings = createTemplateHtml('templateWithBindings', count);

modules/examples/src/hello_world/index_static.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as app from './index_common';
22

33
import {Component, Decorator, View, NgElement} from 'angular2/angular2';
4-
import {Lexer, Parser, ChangeDetection, ChangeDetector} from 'angular2/change_detection';
4+
import {Lexer, Parser, ChangeDetection, ChangeDetector, PipeRegistry, DynamicChangeDetection} from 'angular2/change_detection';
55
import {ExceptionHandler} from 'angular2/src/core/exception_handler';
66
import {LifeCycle} from 'angular2/src/core/life_cycle/life_cycle';
77

@@ -248,6 +248,12 @@ function setup() {
248248
"annotations": []
249249
});
250250

251+
reflector.registerType(DynamicChangeDetection, {
252+
"factory": (registry) => new DynamicChangeDetection(registry),
253+
"parameters": [[PipeRegistry]],
254+
"annotations": []
255+
});
256+
251257
reflector.registerType(DirectDomRenderer, {
252258
"factory": (renderCompiler, renderViewFactory, renderViewHydrator, shadowDomStrategy) =>
253259
new DirectDomRenderer(renderCompiler, renderViewFactory, renderViewHydrator, shadowDomStrategy),

0 commit comments

Comments
 (0)