From ff8291ce1cae0710ffc5575512291dfaf5d8dcae Mon Sep 17 00:00:00 2001 From: Gion Kunz Date: Wed, 22 Jun 2016 13:42:34 +0200 Subject: [PATCH] feat(DomRenderer): Adding support for document fragments in SVG foreign objects --- .../core/test/linker/integration_spec.ts | 25 +++++++++++++++++++ .../platform-browser/src/dom/dom_renderer.ts | 3 ++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/modules/@angular/core/test/linker/integration_spec.ts b/modules/@angular/core/test/linker/integration_spec.ts index c2d5bbc352f90..6edb094025f44 100644 --- a/modules/@angular/core/test/linker/integration_spec.ts +++ b/modules/@angular/core/test/linker/integration_spec.ts @@ -1994,6 +1994,31 @@ function declareTests({useJit}: {useJit: boolean}) { }); })); + it('should support foreignObjects with document fragments', + inject( + [TestComponentBuilder, AsyncTestCompleter], + (tcb: TestComponentBuilder, async: AsyncTestCompleter) => { + tcb.overrideView( + MyComp, new ViewMetadata({ + template: + '

Test

' + })) + .createAsync(MyComp) + .then((fixture) => { + var el = fixture.debugElement.nativeElement; + var svg = getDOM().childNodes(el)[0]; + var foreignObject = getDOM().childNodes(svg)[0]; + var p = getDOM().childNodes(foreignObject)[0]; + expect(getDOM().getProperty(svg, 'namespaceURI')) + .toEqual('http://www.w3.org/2000/svg'); + expect(getDOM().getProperty(foreignObject, 'namespaceURI')) + .toEqual('http://www.w3.org/2000/svg'); + expect(getDOM().getProperty(p, 'namespaceURI')) + .toEqual('http://www.w3.org/1999/xhtml'); + + async.done(); + }); + })); }); describe('attributes', () => { diff --git a/modules/@angular/platform-browser/src/dom/dom_renderer.ts b/modules/@angular/platform-browser/src/dom/dom_renderer.ts index 23b56903032ae..03e840bbaa7f4 100644 --- a/modules/@angular/platform-browser/src/dom/dom_renderer.ts +++ b/modules/@angular/platform-browser/src/dom/dom_renderer.ts @@ -15,7 +15,8 @@ import {camelCaseToDashCase} from './util'; const NAMESPACE_URIS = { 'xlink': 'http://www.w3.org/1999/xlink', - 'svg': 'http://www.w3.org/2000/svg' + 'svg': 'http://www.w3.org/2000/svg', + 'xhtml': 'http://www.w3.org/1999/xhtml' }; const TEMPLATE_COMMENT_TEXT = 'template bindings={}'; var TEMPLATE_BINDINGS_EXP = /^template bindings=(.*)$/g;