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

Side by Side Diff: pkg/polymer/lib/src/declaration.dart

Issue 33903003: Fixing polymer element registration when extending tag extensions (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Sync to ToT Created 7 years, 2 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
« no previous file with comments | « pkg/pkg.status ('k') | pkg/polymer/test/register_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of polymer; 5 part of polymer;
6 6
7 /** 7 /**
8 * **Warning**: this class is experiental and subject to change. 8 * **Warning**: this class is experiental and subject to change.
9 * 9 *
10 * The implementation for the `polymer-element` element. 10 * The implementation for the `polymer-element` element.
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 // setting resource paths. e.g. 165 // setting resource paths. e.g.
166 // this.$.image.src = this.resolvePath('images/foo.png') 166 // this.$.image.src = this.resolvePath('images/foo.png')
167 // Potentially remove when spec bug is addressed. 167 // Potentially remove when spec bug is addressed.
168 // https://www.w3.org/Bugs/Public/show_bug.cgi?id=21407 168 // https://www.w3.org/Bugs/Public/show_bug.cgi?id=21407
169 // TODO(jmesserly): resolvePath not ported, see first comment in this class. 169 // TODO(jmesserly): resolvePath not ported, see first comment in this class.
170 170
171 // under ShadowDOMPolyfill, transforms to approximate missing CSS features 171 // under ShadowDOMPolyfill, transforms to approximate missing CSS features
172 _shimShadowDomStyling(templateContent, name); 172 _shimShadowDomStyling(templateContent, name);
173 173
174 // register our custom element 174 // register our custom element
175 registerType(name, extendsTag: extendee); 175 registerType(name);
176 176
177 // NOTE: skip in Dart because we don't have mutable global scope. 177 // NOTE: skip in Dart because we don't have mutable global scope.
178 // reference constructor in a global named by 'constructor' attribute 178 // reference constructor in a global named by 'constructor' attribute
179 // publishConstructor(); 179 // publishConstructor();
180 } 180 }
181 181
182 /** 182 /**
183 * Gets the Dart type registered for this name, and sets up declarative 183 * Gets the Dart type registered for this name, and sets up declarative
184 * features. Fills in the [type] and [supertype] fields. 184 * features. Fills in the [type] and [supertype] fields.
185 * 185 *
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 // TODO(jmesserly): this feels unnatrual in Dart. Since we have convenient 227 // TODO(jmesserly): this feels unnatrual in Dart. Since we have convenient
228 // lazy static initialization, can we get by without it? 228 // lazy static initialization, can we get by without it?
229 var registered = cls.methods[#registerCallback]; 229 var registered = cls.methods[#registerCallback];
230 if (registered != null && registered.isStatic && 230 if (registered != null && registered.isStatic &&
231 registered.isRegularMethod) { 231 registered.isRegularMethod) {
232 cls.invoke(#registerCallback, [this]); 232 cls.invoke(#registerCallback, [this]);
233 } 233 }
234 234
235 } 235 }
236 236
237 void registerType(String name, {String extendsTag}) { 237 void registerType(String name) {
Jennifer Messerly 2013/10/22 21:41:47 retroactive question: why don't we pass in "extend
238 var baseTag;
239 var decl = this;
240 while (decl != null) {
241 baseTag = decl.attributes['extends'];
242 decl = decl.superDeclaration;
243 }
238 // native element must be specified in extends 244 // native element must be specified in extends
239 var nativeExtends = (extendsTag != null && !extendsTag.contains('-')) ? 245 var nativeExtends = baseTag;
Siggi Cherem (dart-lang) 2013/10/22 16:44:17 nit: merge baseTag or nativeExtends to use a singl
240 extendsTag : null;
241 document.register(name, type, extendsTag: nativeExtends); 246 document.register(name, type, extendsTag: nativeExtends);
242 } 247 }
243 248
244 void publishAttributes(ClassMirror cls, PolymerDeclaration superDecl) { 249 void publishAttributes(ClassMirror cls, PolymerDeclaration superDecl) {
245 // get properties to publish 250 // get properties to publish
246 if (superDecl != null && superDecl._publish != null) { 251 if (superDecl != null && superDecl._publish != null) {
247 _publish = new Map.from(superDecl._publish); 252 _publish = new Map.from(superDecl._publish);
248 } 253 }
249 _publish = _getProperties(cls, _publish, (x) => x is PublishedProperty); 254 _publish = _getProperties(cls, _publish, (x) => x is PublishedProperty);
250 255
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 return map; 682 return map;
678 }(); 683 }();
679 684
680 // Dart note: we need this function because we have additional renames JS does 685 // Dart note: we need this function because we have additional renames JS does
681 // not have. The JS renames are simply case differences, whereas we have ones 686 // not have. The JS renames are simply case differences, whereas we have ones
682 // like doubleclick -> dblclick and stripping the webkit prefix. 687 // like doubleclick -> dblclick and stripping the webkit prefix.
683 String _eventNameFromType(String eventType) { 688 String _eventNameFromType(String eventType) {
684 final result = _reverseEventTranslations[eventType]; 689 final result = _reverseEventTranslations[eventType];
685 return result != null ? result : eventType; 690 return result != null ? result : eventType;
686 } 691 }
OLDNEW
« no previous file with comments | « pkg/pkg.status ('k') | pkg/polymer/test/register_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698