Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(527)

Side by Side Diff: sdk/lib/svg/dartium/svg_dartium.dart

Issue 16374007: First rev of Safe DOM (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 library dart.dom.svg; 1 library dart.dom.svg;
2 2
3 import 'dart:async'; 3 import 'dart:async';
4 import 'dart:collection'; 4 import 'dart:collection';
5 import 'dart:_collection-dev'; 5 import 'dart:_collection-dev';
6 import 'dart:html'; 6 import 'dart:html';
7 import 'dart:html_common'; 7 import 'dart:html_common';
8 import 'dart:nativewrappers'; 8 import 'dart:nativewrappers';
9 // DO NOT EDIT 9 // DO NOT EDIT
10 // Auto-generated dart:svg library. 10 // Auto-generated dart:svg library.
11 11
12 12
13 13
14 14
15 15
16 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 16 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
17 // for details. All rights reserved. Use of this source code is governed by a 17 // for details. All rights reserved. Use of this source code is governed by a
18 // BSD-style license that can be found in the LICENSE file. 18 // BSD-style license that can be found in the LICENSE file.
19 19
20 20
21 final _START_TAG_REGEXP = new RegExp('<(\\w+)');
22
23 class _SvgElementFactoryProvider { 21 class _SvgElementFactoryProvider {
24 static SvgElement createSvgElement_tag(String tag) { 22 static SvgElement createSvgElement_tag(String tag) {
25 final Element temp = 23 final Element temp =
26 document.$dom_createElementNS("http://www.w3.org/2000/svg", tag); 24 document.$dom_createElementNS("http://www.w3.org/2000/svg", tag);
27 return temp; 25 return temp;
28 } 26 }
29
30 static SvgElement createSvgElement_svg(String svg) {
31 Element parentTag;
32 final match = _START_TAG_REGEXP.firstMatch(svg);
33 if (match != null && match.group(1).toLowerCase() == 'svg') {
34 parentTag = new Element.tag('div');
35 } else {
36 parentTag = new SvgSvgElement();
37 }
38
39 parentTag.innerHtml = svg;
40 if (parentTag.children.length == 1) return parentTag.children.removeLast();
41
42 throw new ArgumentError(
43 'SVG had ${parentTag.children.length} '
44 'top-level children but 1 expected');
45 }
46 }
47
48 class _SvgSvgElementFactoryProvider {
49 static SvgSvgElement createSvgSvgElement() {
50 final el = new SvgElement.tag("svg");
51 // The SVG spec requires the version attribute to match the spec version
52 el.attributes['version'] = "1.1";
53 return el;
54 }
55 } 27 }
56 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 28 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
57 // for details. All rights reserved. Use of this source code is governed by a 29 // for details. All rights reserved. Use of this source code is governed by a
58 // BSD-style license that can be found in the LICENSE file. 30 // BSD-style license that can be found in the LICENSE file.
59 31
60 // WARNING: Do not edit - generated code. 32 // WARNING: Do not edit - generated code.
61 33
62 34
63 @DocsEditable 35 @DocsEditable
64 @DomName('SVGAElement') 36 @DomName('SVGAElement')
(...skipping 6139 matching lines...) Expand 10 before | Expand all | Expand 10 after
6204 } 6176 }
6205 6177
6206 void writeClasses(Set s) { 6178 void writeClasses(Set s) {
6207 _element.attributes['class'] = s.join(' '); 6179 _element.attributes['class'] = s.join(' ');
6208 } 6180 }
6209 } 6181 }
6210 6182
6211 @DomName('SVGElement') 6183 @DomName('SVGElement')
6212 @Unstable 6184 @Unstable
6213 class SvgElement extends Element { 6185 class SvgElement extends Element {
6186 static final _START_TAG_REGEXP = new RegExp('<(\\w+)');
6187
6214 factory SvgElement.tag(String tag) => 6188 factory SvgElement.tag(String tag) =>
6215 _SvgElementFactoryProvider.createSvgElement_tag(tag); 6189 document.$dom_createElementNS("http://www.w3.org/2000/svg", tag);
6216 factory SvgElement.svg(String svg) => 6190
6217 _SvgElementFactoryProvider.createSvgElement_svg(svg); 6191 factory SvgElement.svg(String svg,
6192 {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) {
6193
6194 if (validator == null && treeSanitizer == null) {
6195 validator = new NodeValidatorBuilder.common()
6196 ..allowSvg();
6197 }
6198
6199 final match = _START_TAG_REGEXP.firstMatch(svg);
6200 var parentElement;
6201 if (match != null && match.group(1).toLowerCase() == 'svg') {
6202 parentElement = document.body;
6203 } else {
6204 parentElement = new SvgSvgElement();
6205 }
6206 var fragment = parentElement.createFragment(svg, validator: validator,
6207 treeSanitizer: treeSanitizer);
6208 return fragment.nodes.where((e) => e is SvgElement).single;
6209 }
6218 6210
6219 _AttributeClassSet _cssClassSet; 6211 _AttributeClassSet _cssClassSet;
6220 CssClassSet get classes { 6212 CssClassSet get classes {
6221 if (_cssClassSet == null) { 6213 if (_cssClassSet == null) {
6222 _cssClassSet = new _AttributeClassSet(this); 6214 _cssClassSet = new _AttributeClassSet(this);
6223 } 6215 }
6224 return _cssClassSet; 6216 return _cssClassSet;
6225 } 6217 }
6226 6218
6227 List<Element> get children => new FilteredElementList<Element>(this); 6219 List<Element> get children => new FilteredElementList<Element>(this);
(...skipping 11 matching lines...) Expand all
6239 return container.innerHtml; 6231 return container.innerHtml;
6240 } 6232 }
6241 6233
6242 String get innerHtml { 6234 String get innerHtml {
6243 final container = new Element.tag("div"); 6235 final container = new Element.tag("div");
6244 final SvgElement cloned = this.clone(true); 6236 final SvgElement cloned = this.clone(true);
6245 container.children.addAll(cloned.children); 6237 container.children.addAll(cloned.children);
6246 return container.innerHtml; 6238 return container.innerHtml;
6247 } 6239 }
6248 6240
6249 void set innerHtml(String svg) { 6241 DocumentFragment createFragment(String svg,
6250 final container = new Element.tag("div"); 6242 {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) {
6251 // Wrap the SVG string in <svg> so that SvgElements are created, rather than 6243
6252 // HTMLElements. 6244 if (treeSanitizer == null) {
6253 container.innerHtml = '<svg version="1.1">$svg</svg>'; 6245 if (validator == null) {
6254 this.children = container.children[0].children; 6246 validator = new NodeValidatorBuilder.common()
6247 ..allowSvg();
6248 }
6249 treeSanitizer = new NodeTreeSanitizer(validator);
6250 }
6251
6252 // We create a fragment which will parse in the HTML parser
6253 var html = '<svg version="1.1">$svg</svg>';
6254 var fragment = document.body.createFragment(html,
6255 treeSanitizer: treeSanitizer);
6256
6257 var svgFragment = new DocumentFragment();
6258 // The root is the <svg/> element, need to pull out the contents.
6259 var root = fragment.nodes.single;
6260 while (root.$dom_firstChild != null) {
6261 svgFragment.append(root.$dom_firstChild);
6262 }
6263 return svgFragment;
6255 } 6264 }
6256 6265
6257 // Unsupported methods inherited from Element. 6266 // Unsupported methods inherited from Element.
6258 6267
6259 @DomName('Element.insertAdjacentText') 6268 @DomName('Element.insertAdjacentText')
6260 void insertAdjacentText(String where, String text) { 6269 void insertAdjacentText(String where, String text) {
6261 throw new UnsupportedError("Cannot invoke insertAdjacentText on SVG."); 6270 throw new UnsupportedError("Cannot invoke insertAdjacentText on SVG.");
6262 } 6271 }
6263 6272
6264 @DomName('Element.insertAdjacentHTML') 6273 @DomName('Element.insertAdjacentHTML')
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
6361 6370
6362 } 6371 }
6363 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 6372 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
6364 // for details. All rights reserved. Use of this source code is governed by a 6373 // for details. All rights reserved. Use of this source code is governed by a
6365 // BSD-style license that can be found in the LICENSE file. 6374 // BSD-style license that can be found in the LICENSE file.
6366 6375
6367 6376
6368 @DomName('SVGSVGElement') 6377 @DomName('SVGSVGElement')
6369 @Unstable 6378 @Unstable
6370 class SvgSvgElement extends StyledElement implements FitToViewBox, Transformable , Tests, ExternalResourcesRequired, ZoomAndPan, LangSpace { 6379 class SvgSvgElement extends StyledElement implements FitToViewBox, Transformable , Tests, ExternalResourcesRequired, ZoomAndPan, LangSpace {
6371 factory SvgSvgElement() => _SvgSvgElementFactoryProvider.createSvgSvgElement() ; 6380 factory SvgSvgElement() {
6372 6381 final el = new SvgElement.tag("svg");
6382 // The SVG spec requires the version attribute to match the spec version
6383 el.attributes['version'] = "1.1";
6384 return el;
6385 }
6373 SvgSvgElement.internal() : super.internal(); 6386 SvgSvgElement.internal() : super.internal();
6374 6387
6375 @DomName('SVGSVGElement.contentScriptType') 6388 @DomName('SVGSVGElement.contentScriptType')
6376 @DocsEditable 6389 @DocsEditable
6377 String get contentScriptType native "SVGSVGElement_contentScriptType_Getter"; 6390 String get contentScriptType native "SVGSVGElement_contentScriptType_Getter";
6378 6391
6379 @DomName('SVGSVGElement.contentScriptType') 6392 @DomName('SVGSVGElement.contentScriptType')
6380 @DocsEditable 6393 @DocsEditable
6381 void set contentScriptType(String value) native "SVGSVGElement_contentScriptTy pe_Setter"; 6394 void set contentScriptType(String value) native "SVGSVGElement_contentScriptTy pe_Setter";
6382 6395
(...skipping 1656 matching lines...) Expand 10 before | Expand all | Expand 10 after
8039 @DomName('SVGVKernElement') 8052 @DomName('SVGVKernElement')
8040 @Unstable 8053 @Unstable
8041 abstract class _SVGVKernElement extends SvgElement { 8054 abstract class _SVGVKernElement extends SvgElement {
8042 _SVGVKernElement.internal() : super.internal(); 8055 _SVGVKernElement.internal() : super.internal();
8043 8056
8044 @DomName('SVGVKernElement.SVGVKernElement') 8057 @DomName('SVGVKernElement.SVGVKernElement')
8045 @DocsEditable 8058 @DocsEditable
8046 factory _SVGVKernElement() => _SvgElementFactoryProvider.createSvgElement_tag( "vkern"); 8059 factory _SVGVKernElement() => _SvgElementFactoryProvider.createSvgElement_tag( "vkern");
8047 8060
8048 } 8061 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698