 Chromium Code Reviews
 Chromium Code Reviews Issue 329723002:
  Identify the name of the prototype extended by out-of-app custom elements  (Closed) 
  Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
    
  
    Issue 329723002:
  Identify the name of the prototype extended by out-of-app custom elements  (Closed) 
  Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart| Index: pkg/web_components/lib/dart_support.js | 
| diff --git a/pkg/web_components/lib/dart_support.js b/pkg/web_components/lib/dart_support.js | 
| index 4e1995a4e2840564771c22dee5d0c37f25019821..77948eb29438f24008c56db0078bc50a54249610 100644 | 
| --- a/pkg/web_components/lib/dart_support.js | 
| +++ b/pkg/web_components/lib/dart_support.js | 
| @@ -116,6 +116,33 @@ | 
| upgraders[name] = upgrader; | 
| } | 
| + | 
| + // Native custom elements outside the app in Chrome have constructor | 
| + // names like "x-tag", which need to be translated to the DOM | 
| + // element they extend. When using the shadow dom polyfill this is | 
| + // take care of above. | 
| 
Siggi Cherem (dart-lang)
2014/06/11 19:56:03
nit: take => taken
 | 
| + var ShadowDOMPolyfill = window.ShadowDOMPolyfill; | 
| + if (!ShadowDOMPolyfill) { | 
| + // dartNativeDispatchHooksTransformer is described on initHooks() in | 
| + // sdk/lib/_internal/lib/native_helper.dart. | 
| + if (typeof window.dartNativeDispatchHooksTransformer == 'undefined') | 
| + window.dartNativeDispatchHooksTransformer = []; | 
| + | 
| + window.dartNativeDispatchHooksTransformer.push(function(hooks) { | 
| + var originalGetUnknownTag = hooks.getUnknownTag; | 
| + hooks.getUnknownTag = function(o, tag) { | 
| + if (/-/.test(tag)) { // "x-tag" | 
| + var s = Object.prototype.toString.call(o); | 
| + var match = s.match(/^\[object ([A-Za-z]*Element)\]$/); | 
| + if (match) { | 
| + return match[1]; | 
| + } | 
| + return originalGetUnknownTag(o, tag); | 
| + } | 
| + }; | 
| + }); | 
| + } | 
| + | 
| doc._registerDartTypeUpgrader = registerDartTypeUpgrader; | 
| doc.registerElement = registerElement; | 
| })(document); |