refactor(core): move render/dom from core

Currently, core depends on DomRenderer, which depends on the browser.
This means that if you depend on angular2/core, you will always
pull in the browser dom adapter and the browser render, regardless
if you need them or not.

This PR moves the browser dom adapter and the browser renderer out of core.

BREAKING CHANGE

If you import browser adapter or dom renderer directly (not via angular2/core),
you will have to change the import path.
This commit is contained in:
vsavkin
2015-11-17 15:24:36 -08:00
parent 60a2bbb226
commit 2c8fcec432
120 changed files with 1163 additions and 806 deletions
@@ -36,7 +36,7 @@ import {
forwardRef,
Validator
} from 'angular2/core';
import {By} from 'angular2/src/core/debug';
import {By} from 'angular2/platform/browser';
import {ListWrapper} from 'angular2/src/facade/collection';
import {ObservableWrapper} from 'angular2/src/facade/async';
import {CONST_EXPR} from 'angular2/src/facade/lang';
@@ -19,7 +19,8 @@ import {DOM} from 'angular2/src/core/dom/dom_adapter';
import {PromiseWrapper, EventEmitter, ObservableWrapper} from 'angular2/src/facade/async';
import {Injectable, NgFor, NgIf} from 'angular2/core';
import {By, Scope} from 'angular2/src/core/debug';
import {Scope} from 'angular2/core';
import {By} from 'angular2/platform/browser';
import {
Directive,
@@ -2,7 +2,7 @@ library angular2.dom.html5lib_adapter.test;
import 'package:guinness/guinness.dart';
import 'package:unittest/unittest.dart' hide expect;
import 'package:angular2/src/core/dom/html_adapter.dart';
import 'package:angular2/src/platform/server/html_adapter.dart';
// A smoke-test of the adapter. It is primarily tested by the compiler.
main() {
@@ -24,7 +24,7 @@ import {
View
} from 'angular2/core';
import {Type} from 'angular2/src/facade/lang';
import {asNativeElements} from 'angular2/src/core/debug';
import {asNativeElements} from 'angular2/core';
export function main() {
describe("forwardRef integration", function() {
@@ -17,12 +17,12 @@ import {
} from 'angular2/testing_internal';
import {OnDestroy} from 'angular2/lifecycle_hooks';
import {Injector, NgIf} from 'angular2/core';
import {inspectElement, By} from 'angular2/src/core/debug';
import {Injector, NgIf, inspectElement} from 'angular2/core';
import {By} from 'angular2/platform/browser';
import {Component, View, ViewMetadata} from 'angular2/src/core/metadata';
import {DynamicComponentLoader} from 'angular2/src/core/linker/dynamic_component_loader';
import {ElementRef} from 'angular2/src/core/linker/element_ref';
import {DOCUMENT} from 'angular2/src/core/render/render';
import {DOCUMENT} from 'angular2/src/platform/dom/dom_tokens';
import {DOM} from 'angular2/src/core/dom/dom_adapter';
import {ComponentFixture_} from "angular2/src/testing/test_component_builder";
@@ -3,7 +3,7 @@ library angular2.test.di.integration_dart_spec;
import 'package:angular2/angular2.dart';
import 'package:angular2/core.dart';
import 'package:angular2/src/core/debug.dart';
import 'package:angular2/src/core/debug/debug_element.dart';
import 'package:angular2/testing_internal.dart';
import 'package:observe/observe.dart';
import 'package:angular2/src/core/change_detection/differs/default_iterable_differ.dart';
@@ -91,7 +91,7 @@ import {Compiler} from 'angular2/src/core/linker/compiler';
import {ElementRef} from 'angular2/src/core/linker/element_ref';
import {TemplateRef} from 'angular2/src/core/linker/template_ref';
import {DomRenderer} from 'angular2/src/core/render/dom/dom_renderer';
import {DomRenderer} from 'angular2/src/platform/dom/dom_renderer';
import {IS_DART} from 'angular2/src/facade/lang';
const ANCHOR_ELEMENT = CONST_EXPR(new OpaqueToken('AnchorElement'));
@@ -9,7 +9,7 @@ import {
expect,
iit,
inject,
beforeEachBindings,
beforeEachProviders,
it,
xit,
containsRegexp,
@@ -36,11 +36,11 @@ import {
ViewEncapsulation,
ViewMetadata
} from 'angular2/core';
import {By} from 'angular2/src/core/debug';
import {By} from 'angular2/platform/browser';
export function main() {
describe('projection', () => {
beforeEachBindings(() => [provide(AppViewListener, {useClass: AppViewListener})]);
beforeEachProviders(() => [provide(AppViewListener, {useClass: AppViewListener})]);
it('should support simple components',
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
@@ -37,9 +37,8 @@ import {
AfterViewChecked
} from 'angular2/core';
import {asNativeElements} from 'angular2/src/core/debug';
import {BrowserDomAdapter} from 'angular2/src/core/dom/browser_adapter';
import {asNativeElements} from 'angular2/core';
import {BrowserDomAdapter} from 'angular2/src/platform/browser/browser_adapter';
export function main() {
BrowserDomAdapter.makeCurrent();
@@ -42,7 +42,7 @@ import {
import {DirectiveResolver} from 'angular2/src/core/linker/directive_resolver';
import {Component} from 'angular2/src/core/metadata';
import {AppViewManagerUtils} from 'angular2/src/core/linker/view_manager_utils';
import {RenderViewWithFragments} from 'angular2/src/core/render/render';
import {RenderViewWithFragments} from 'angular2/render';
export function main() {
// TODO(tbosch): add more tests here!
@@ -9,11 +9,8 @@ import {
beforeEach,
el
} from 'angular2/testing_internal';
import {
EventManager,
EventManagerPlugin,
DomEventsPlugin
} from 'angular2/src/core/render/dom/events/event_manager';
import {EventManager, EventManagerPlugin} from 'angular2/core';
import {DomEventsPlugin} from 'angular2/src/platform/dom/events/dom_events';
import {NgZone} from 'angular2/src/core/zone/ng_zone';
import {ListWrapper, Map, MapWrapper} from 'angular2/src/facade/collection';
import {DOM} from 'angular2/src/core/dom/dom_adapter';
@@ -9,7 +9,7 @@ import {
beforeEach,
el
} from 'angular2/testing_internal';
import {KeyEventsPlugin} from 'angular2/src/core/render/dom/events/key_events';
import {KeyEventsPlugin} from 'angular2/src/platform/dom/events/key_events';
export function main() {
describe('KeyEvents', () => {
@@ -17,7 +17,7 @@ import {
} from 'angular2/testing_internal';
import {DOM} from 'angular2/src/core/dom/dom_adapter';
import {DomSharedStylesHost} from 'angular2/src/core/render/dom/shared_styles_host';
import {DomSharedStylesHost} from 'angular2/src/platform/dom/shared_styles_host';
export function main() {
describe('DomSharedStylesHost', () => {
@@ -16,7 +16,7 @@ import {ApplicationRef} from 'angular2/src/core/application_ref';
import {Component, Directive, View, OnDestroy, platform} from 'angular2/core';
import {BROWSER_PROVIDERS, BROWSER_APP_PROVIDERS} from 'angular2/platform/browser';
import {DOM} from 'angular2/src/core/dom/dom_adapter';
import {DOCUMENT} from 'angular2/render';
import {DOCUMENT} from 'angular2/src/platform/dom/dom_tokens';
import {PromiseWrapper} from 'angular2/src/facade/async';
import {provide, Inject, Injector} from 'angular2/core';
import {ExceptionHandler} from 'angular2/src/facade/exceptions';
@@ -8,7 +8,7 @@ import {
expect,
iit,
inject,
beforeEachBindings,
beforeEachProviders,
it,
xit,
TestComponentBuilder,
@@ -16,7 +16,7 @@ import {
import {global} from 'angular2/src/facade/lang';
import {APP_VIEW_POOL_CAPACITY} from 'angular2/src/core/linker/view_pool';
import {provide, Component, Directive, Injectable, View} from 'angular2/core';
import {inspectNativeElement} from 'angular2/src/core/debug';
import {inspectNativeElement} from 'angular2/platform/browser';
import {IS_DART} from 'angular2/src/facade/lang';
@Component({selector: 'my-comp'})
@@ -28,7 +28,7 @@ class MyComp {
export function main() {
describe('element probe', function() {
beforeEachBindings(() => [provide(APP_VIEW_POOL_CAPACITY, {useValue: 0})]);
beforeEachProviders(() => [provide(APP_VIEW_POOL_CAPACITY, {useValue: 0})]);
it('should return a TestElement from a dom element',
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
@@ -9,11 +9,11 @@ import {
expect,
SpyObject
} from 'angular2/testing_internal';
import {SpyElementRef, SpyDomAdapter} from '../spies';
import {SpyElementRef, SpyDomAdapter} from '../../core/spies';
import {DOM, DomAdapter} from 'angular2/src/core/dom/dom_adapter';
import {Ruler, Rectangle} from 'angular2/src/core/services/ruler';
import {Ruler, Rectangle} from 'angular2/src/platform/browser/ruler';
import {createRectangle} from './rectangle_mock';
function assertDimensions(rect: Rectangle, left, right, top, bottom, width, height) {
@@ -1,7 +1,6 @@
import {ddescribe, describe, it, iit, xit, expect, afterEach} from 'angular2/testing_internal';
import {DOM} from 'angular2/src/core/dom/dom_adapter';
import {Title} from 'angular2/src/core/services/title';
import {Title} from 'angular2/platform/browser';
export function main() {
describe('title service', () => {
@@ -16,8 +16,8 @@ import {PromiseWrapper} from 'angular2/src/facade/async';
export function main() {
describe('XHRImpl', () => {
var xhr: XHRImpl;
var url200 = '/base/modules/angular2/test/core/services/static_assets/200.html';
var url404 = '/base/modules/angular2/test/core/services/static_assets/404.html';
var url200 = '/base/modules/angular2/test/platform/browser/static_assets/200.html';
var url404 = '/base/modules/angular2/test/platform/browser/static_assets/404.html';
beforeEach(() => { xhr = new XHRImpl(); });
+169 -10
View File
@@ -129,6 +129,121 @@ var NG_ALL = [
'Binding.toValue',
'BROWSER_APP_PROVIDERS:js',
'BROWSER_PROVIDERS:js',
'BrowserDomAdapter:js',
'BrowserDomAdapter#makeCurrent():js',
'BrowserDomAdapter.addClass():js',
'BrowserDomAdapter.adoptNode():js',
'BrowserDomAdapter.appendChild():js',
'BrowserDomAdapter.attrToPropMap:js',
'BrowserDomAdapter.attributeMap():js',
'BrowserDomAdapter.cancelAnimationFrame():js',
'BrowserDomAdapter.childNodes():js',
'BrowserDomAdapter.childNodesAsList():js',
'BrowserDomAdapter.classList():js',
'BrowserDomAdapter.clearNodes():js',
'BrowserDomAdapter.clone():js',
'BrowserDomAdapter.content():js',
'BrowserDomAdapter.createComment():js',
'BrowserDomAdapter.createElement():js',
'BrowserDomAdapter.createElementNS():js',
'BrowserDomAdapter.createEvent():js',
'BrowserDomAdapter.createHtmlDocument():js',
'BrowserDomAdapter.createMouseEvent():js',
'BrowserDomAdapter.createScriptTag():js',
'BrowserDomAdapter.createShadowRoot():js',
'BrowserDomAdapter.createStyleElement():js',
'BrowserDomAdapter.createTemplate():js',
'BrowserDomAdapter.createTextNode():js',
'BrowserDomAdapter.defaultDoc():js',
'BrowserDomAdapter.dispatchEvent():js',
'BrowserDomAdapter.elementMatches():js',
'BrowserDomAdapter.firstChild():js',
'BrowserDomAdapter.getAnimationPrefix():js',
'BrowserDomAdapter.getAttribute():js',
'BrowserDomAdapter.getBaseHref():js',
'BrowserDomAdapter.getBoundingClientRect():js',
'BrowserDomAdapter.getChecked():js',
'BrowserDomAdapter.getComputedStyle():js',
'BrowserDomAdapter.getData():js',
'BrowserDomAdapter.getDistributedNodes():js',
'BrowserDomAdapter.getElementsByClassName():js',
'BrowserDomAdapter.getElementsByTagName():js',
'BrowserDomAdapter.getEventKey():js',
'BrowserDomAdapter.getGlobalEventTarget():js',
'BrowserDomAdapter.getHistory():js',
'BrowserDomAdapter.getHost():js',
'BrowserDomAdapter.getHref():js',
'BrowserDomAdapter.getInnerHTML():js',
'BrowserDomAdapter.getLocation():js',
'BrowserDomAdapter.getOuterHTML():js',
'BrowserDomAdapter.getProperty():js',
'BrowserDomAdapter.getShadowRoot():js',
'BrowserDomAdapter.getStyle():js',
'BrowserDomAdapter.getText():js',
'BrowserDomAdapter.getTitle():js',
'BrowserDomAdapter.getTransitionEnd():js',
'BrowserDomAdapter.getUserAgent():js',
'BrowserDomAdapter.getValue():js',
'BrowserDomAdapter.getXHR():js',
'BrowserDomAdapter.hasAttribute():js',
'BrowserDomAdapter.hasClass():js',
'BrowserDomAdapter.hasProperty():js',
'BrowserDomAdapter.hasShadowRoot():js',
'BrowserDomAdapter.importIntoDoc():js',
'BrowserDomAdapter.insertAfter():js',
'BrowserDomAdapter.insertAllBefore():js',
'BrowserDomAdapter.insertBefore():js',
'BrowserDomAdapter.invoke():js',
'BrowserDomAdapter.isCommentNode():js',
'BrowserDomAdapter.isElementNode():js',
'BrowserDomAdapter.isPrevented():js',
'BrowserDomAdapter.isShadowRoot():js',
'BrowserDomAdapter.isTemplateElement():js',
'BrowserDomAdapter.isTextNode():js',
'BrowserDomAdapter.log():js',
'BrowserDomAdapter.logError():js',
'BrowserDomAdapter.logGroup():js',
'BrowserDomAdapter.logGroupEnd():js',
'BrowserDomAdapter.nextSibling():js',
'BrowserDomAdapter.nodeName():js',
'BrowserDomAdapter.nodeValue():js',
'BrowserDomAdapter.on():js',
'BrowserDomAdapter.onAndCancel():js',
'BrowserDomAdapter.parentElement():js',
'BrowserDomAdapter.parse():js',
'BrowserDomAdapter.performanceNow():js',
'BrowserDomAdapter.preventDefault():js',
'BrowserDomAdapter.query():js',
'BrowserDomAdapter.querySelector():js',
'BrowserDomAdapter.querySelectorAll():js',
'BrowserDomAdapter.remove():js',
'BrowserDomAdapter.removeAttribute():js',
'BrowserDomAdapter.removeChild():js',
'BrowserDomAdapter.removeClass():js',
'BrowserDomAdapter.removeStyle():js',
'BrowserDomAdapter.replaceChild():js',
'BrowserDomAdapter.requestAnimationFrame():js',
'BrowserDomAdapter.resetBaseElement():js',
'BrowserDomAdapter.resolveAndSetHref():js',
'BrowserDomAdapter.setAttribute():js',
'BrowserDomAdapter.setAttributeNS():js',
'BrowserDomAdapter.setChecked():js',
'BrowserDomAdapter.setData():js',
'BrowserDomAdapter.setGlobalVar():js',
'BrowserDomAdapter.setInnerHTML():js',
'BrowserDomAdapter.setProperty():js',
'BrowserDomAdapter.setStyle():js',
'BrowserDomAdapter.setText():js',
'BrowserDomAdapter.setTitle():js',
'BrowserDomAdapter.setValue():js',
'BrowserDomAdapter.supportsAnimation():js',
'BrowserDomAdapter.supportsDOMEvents():js',
'BrowserDomAdapter.supportsNativeShadowDOM():js',
'BrowserDomAdapter.tagName():js',
'BrowserDomAdapter.templateAwareRoot():js',
'BrowserDomAdapter.type():js',
'Provider',
'Provider.dependencies',
'Provider.multi',
@@ -144,10 +259,10 @@ var NG_ALL = [
'ProviderBuilder.toValue()',
'ProviderBuilder.token',
'ProviderBuilder.token=',
'By#all()',
'By#css()',
'By#directive()',
'By',
'By#all():js',
'By#css():js',
'By#directive():js',
'By:js',
'CORE_DIRECTIVES',
'COMMON_DIRECTIVES',
'PLATFORM_DIRECTIVES:js',
@@ -479,14 +594,19 @@ var NG_ALL = [
'DirectiveResolver',
'DirectiveResolver.resolve()',
'DynamicComponentLoader',
'DomAdapter',
'DomAdapter.attrToPropMap:dart',
'DomAdapter.attrToPropMap=:dart',
'setRootDomAdapter()',
'DOM',
/*
Abstract methods
'DynamicComponentLoader.loadAsRoot()',
'DynamicComponentLoader.loadIntoLocation()',
'DynamicComponentLoader.loadNextToLocation()',
*/
'ELEMENT_PROBE_PROVIDERS',
'ELEMENT_PROBE_BINDINGS',
'ELEMENT_PROBE_PROVIDERS:js',
'ELEMENT_PROBE_BINDINGS:js',
'ElementRef',
'ElementRef.boundElementIndex',
'ElementRef.boundElementIndex=',
@@ -494,6 +614,17 @@ var NG_ALL = [
'ElementRef.parentView',
'ElementRef.parentView=',
'ElementRef.renderView',
'EVENT_MANAGER_PLUGINS',
'EventManager',
'EventManager.addEventListener()',
'EventManager.addGlobalEventListener()',
'EventManager.getZone()',
'EventManagerPlugin',
'EventManagerPlugin.addEventListener()',
'EventManagerPlugin.addGlobalEventListener()',
'EventManagerPlugin.supports()',
'EventManagerPlugin.manager:dart',
'EventManagerPlugin.manager=:dart',
'ErrorHandlingFn:dart',
'Output',
'Output.bindingPropertyName',
@@ -1112,10 +1243,27 @@ var NG_ALL = [
Abstract method
'TemplateRef.hasLocal()',
*/
'Testability',
'Testability.decreasePendingRequestCount()',
'Testability.findBindings()',
'Testability.findProviders()',
'Testability.getPendingRequestCount()',
'Testability.increasePendingRequestCount()',
'Testability.isAngularEventPending()',
'Testability.isStable()',
'Testability.whenStable()',
'TestabilityRegistry',
'TestabilityRegistry.findTestabilityInTree()',
'TestabilityRegistry.getAllTestabilities()',
'TestabilityRegistry.getTestability()',
'TestabilityRegistry.registerApplication()',
'GetTestability:dart',
'setTestabilityGetter()',
'Type:js',
'Title',
'Title.getTitle()',
'Title.setTitle()',
'Title:js',
'Title.getTitle():js',
'Title.setTitle():js',
'TypeLiteral',
'TypeLiteral.type',
'UpperCasePipe',
@@ -1242,7 +1390,7 @@ var NG_ALL = [
'createNgZone()',
'forwardRef():js',
'inspectElement()',
'inspectNativeElement()',
'inspectNativeElement():js',
'platform():js',
'resolveForwardRef():js',
'wtfCreateScope():js',
@@ -1313,6 +1461,17 @@ var NG_ALL = [
'RenderElementRef.renderView=',
'RenderEventDispatcher:dart',
'RenderNgContentCmd.index',
'RenderComponentTemplate',
'RenderComponentTemplate.commands',
'RenderComponentTemplate.commands=',
'RenderComponentTemplate.encapsulation',
'RenderComponentTemplate.encapsulation=',
'RenderComponentTemplate.id',
'RenderComponentTemplate.id=',
'RenderComponentTemplate.shortId',
'RenderComponentTemplate.shortId=',
'RenderComponentTemplate.styles',
'RenderComponentTemplate.styles=',
'Stream:dart',
'Stream.any():dart',
'Stream.asBroadcastStream():dart',
@@ -18,7 +18,7 @@ import {bootstrap} from 'angular2/bootstrap';
import {Component, Directive, View} from 'angular2/src/core/metadata';
import {DOM} from 'angular2/src/core/dom/dom_adapter';
import {provide} from 'angular2/core';
import {DOCUMENT} from 'angular2/src/core/render/render';
import {DOCUMENT} from 'angular2/src/platform/dom/dom_tokens';
import {RouteConfig, Route, Redirect} from 'angular2/src/router/route_config_decorator';
import {PromiseWrapper} from 'angular2/src/facade/async';
import {BaseException, WrappedException} from 'angular2/src/facade/exceptions';
@@ -15,7 +15,7 @@ import {bootstrap} from 'angular2/bootstrap';
import {Component, Directive, View} from 'angular2/src/core/metadata';
import {DOM} from 'angular2/src/core/dom/dom_adapter';
import {provide} from 'angular2/core';
import {DOCUMENT} from 'angular2/src/core/render/render';
import {DOCUMENT} from 'angular2/src/platform/dom/dom_tokens';
import {Type} from 'angular2/src/facade/lang';
import {
@@ -17,7 +17,7 @@ import {
import {SpyRouter, SpyLocation} from './spies';
import {provide, Component, View} from 'angular2/core';
import {By} from 'angular2/src/core/debug';
import {By} from 'angular2/platform/browser';
import {
Location,
@@ -1,6 +1,6 @@
library angular2.test.web_workers.debug_tools.bootstrap;
import 'package:angular2/src/core/dom/html_adapter.dart';
import 'package:angular2/src/platform/server/html_adapter.dart';
import "package:angular2/testing_internal.dart";
import "package:angular2/src/core/reflection/reflection_capabilities.dart";
import "package:angular2/src/core/reflection/reflection.dart";
@@ -39,7 +39,7 @@ import {
RenderFragmentRef,
Renderer
} from "angular2/src/core/render/api";
import {DomRenderer, DomRenderer_} from 'angular2/src/core/render/dom/dom_renderer';
import {DomRenderer, DomRenderer_} from 'angular2/src/platform/dom/dom_renderer';
import {DefaultRenderView} from 'angular2/src/core/render/view';
import {
RenderProtoViewRefStore,