feat(compiler, ShadowDom): adds TemplateLoader using XHR.
Also adds css shimming for emulated shadow dom and makes the shadowDom strategy global to the application.
This commit is contained in:

committed by
Rado Kirov

parent
fcbdf02767
commit
746f85a621
@ -2,6 +2,7 @@ import {DOM, document} from 'angular2/src/facade/dom';
|
||||
import {isBlank, Type} from 'angular2/src/facade/lang';
|
||||
import {MapWrapper} from 'angular2/src/facade/collection';
|
||||
import {DirectiveMetadata} from 'angular2/src/core/compiler/directive_metadata';
|
||||
import {NativeShadowDomStrategy} from 'angular2/src/core/compiler/shadow_dom_strategy';
|
||||
|
||||
import {Parser, Lexer, ProtoRecordRange, dynamicChangeDetection} from 'angular2/change_detection';
|
||||
|
||||
@ -11,10 +12,13 @@ import {DirectiveMetadataReader} from 'angular2/src/core/compiler/directive_meta
|
||||
import {Component} from 'angular2/src/core/annotations/annotations';
|
||||
import {Decorator} from 'angular2/src/core/annotations/annotations';
|
||||
import {TemplateConfig} from 'angular2/src/core/annotations/template_config';
|
||||
import {TemplateLoader} from 'angular2/src/core/compiler/template_loader';
|
||||
|
||||
import {reflector} from 'angular2/src/reflection/reflection';
|
||||
import {getIntParameter, bindAction} from 'angular2/src/test_lib/benchmark_util';
|
||||
|
||||
import {XHRImpl} from 'angular2/src/core/compiler/xhr/xhr_impl';
|
||||
|
||||
function setupReflector() {
|
||||
reflector.registerType(BenchmarkComponent, {
|
||||
"factory": () => new BenchmarkComponent(),
|
||||
@ -79,9 +83,8 @@ export function main() {
|
||||
setupReflector();
|
||||
var reader = new DirectiveMetadataReader();
|
||||
var cache = new CompilerCache();
|
||||
var compiler = new Compiler(dynamicChangeDetection, null, reader, new Parser(new Lexer()), cache);
|
||||
var annotatedComponent = reader.read(BenchmarkComponent);
|
||||
|
||||
var compiler = new Compiler(dynamicChangeDetection, new TemplateLoader(new XHRImpl()),
|
||||
reader, new Parser(new Lexer()), cache, new NativeShadowDomStrategy());
|
||||
var templateNoBindings = loadTemplate('templateNoBindings', count);
|
||||
var templateWithBindings = loadTemplate('templateWithBindings', count);
|
||||
|
||||
@ -89,14 +92,14 @@ export function main() {
|
||||
// Need to clone every time as the compiler might modify the template!
|
||||
var cloned = DOM.clone(templateNoBindings);
|
||||
cache.clear();
|
||||
compiler.compileAllLoaded(null, annotatedComponent, cloned);
|
||||
compiler.compile(BenchmarkComponent, cloned);
|
||||
}
|
||||
|
||||
function compileWithBindings() {
|
||||
// Need to clone every time as the compiler might modify the template!
|
||||
var cloned = DOM.clone(templateWithBindings);
|
||||
cache.clear();
|
||||
compiler.compileAllLoaded(null, annotatedComponent, cloned);
|
||||
compiler.compile(BenchmarkComponent, cloned);
|
||||
}
|
||||
|
||||
bindAction('#compileNoBindings', compileNoBindings);
|
||||
|
@ -6,6 +6,7 @@ import {bootstrap, Component, Template, TemplateConfig, ViewPort, Compiler} from
|
||||
import {CompilerCache} from 'angular2/src/core/compiler/compiler';
|
||||
import {DirectiveMetadataReader} from 'angular2/src/core/compiler/directive_metadata_reader';
|
||||
import {TemplateLoader} from 'angular2/src/core/compiler/template_loader';
|
||||
import {ShadowDomStrategy, NativeShadowDomStrategy} from 'angular2/src/core/compiler/shadow_dom_strategy';
|
||||
import {LifeCycle} from 'angular2/src/core/life_cycle/life_cycle';
|
||||
|
||||
import {reflector} from 'angular2/src/reflection/reflection';
|
||||
@ -13,6 +14,9 @@ import {DOM, document, window, Element, gc} from 'angular2/src/facade/dom';
|
||||
import {isPresent} from 'angular2/src/facade/lang';
|
||||
import {getIntParameter, bindAction} from 'angular2/src/test_lib/benchmark_util';
|
||||
|
||||
import {XHR} from 'angular2/src/core/compiler/xhr/xhr';
|
||||
import {XHRImpl} from 'angular2/src/core/compiler/xhr/xhr_impl';
|
||||
|
||||
function setupReflector() {
|
||||
// TODO: Put the general calls to reflector.register... in a shared file
|
||||
// as they are needed in all benchmarks...
|
||||
@ -56,8 +60,10 @@ function setupReflector() {
|
||||
});
|
||||
|
||||
reflector.registerType(Compiler, {
|
||||
'factory': (cd, templateLoader, reader, parser, compilerCache) => new Compiler(cd, templateLoader, reader, parser, compilerCache),
|
||||
'parameters': [[ChangeDetection], [TemplateLoader], [DirectiveMetadataReader], [Parser], [CompilerCache]],
|
||||
'factory': (cd, templateLoader, reader, parser, compilerCache, strategy)
|
||||
=> new Compiler(cd, templateLoader, reader, parser, compilerCache, strategy),
|
||||
'parameters': [[ChangeDetection], [TemplateLoader], [DirectiveMetadataReader],
|
||||
[Parser], [CompilerCache], [ShadowDomStrategy]],
|
||||
'annotations': []
|
||||
});
|
||||
|
||||
@ -74,7 +80,13 @@ function setupReflector() {
|
||||
});
|
||||
|
||||
reflector.registerType(TemplateLoader, {
|
||||
'factory': () => new TemplateLoader(),
|
||||
'factory': (xhr) => new TemplateLoader(xhr),
|
||||
'parameters': [[XHR]],
|
||||
'annotations': []
|
||||
});
|
||||
|
||||
reflector.registerType(XHR, {
|
||||
'factory': () => new XHRImpl(),
|
||||
'parameters': [],
|
||||
'annotations': []
|
||||
});
|
||||
@ -85,6 +97,12 @@ function setupReflector() {
|
||||
'annotations': []
|
||||
});
|
||||
|
||||
reflector.registerType(ShadowDomStrategy, {
|
||||
'factory': () => new NativeShadowDomStrategy(),
|
||||
'parameters': [],
|
||||
'annotations': []
|
||||
});
|
||||
|
||||
reflector.registerType(Lexer, {
|
||||
'factory': () => new Lexer(),
|
||||
'parameters': [],
|
||||
|
Reference in New Issue
Block a user