| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 // WARNING: Do not edit - generated code. | 5 // WARNING: Do not edit - generated code. |
| 6 | 6 |
| 7 part of $LIBRARYNAME; | 7 part of $LIBRARYNAME; |
| 8 | 8 |
| 9 $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS
{ | 9 $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS
{ |
| 10 $!MEMBERS | 10 $!MEMBERS |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 throw new DomException.jsInterop("HierarchyRequestError: Only HTML element
s can be customized."); | 363 throw new DomException.jsInterop("HierarchyRequestError: Only HTML element
s can be customized."); |
| 364 } | 364 } |
| 365 | 365 |
| 366 if (_hasCreatedConstructor(classMirror)) { | 366 if (_hasCreatedConstructor(classMirror)) { |
| 367 // Start the hookup the JS way create an <x-foo> element that extends the | 367 // Start the hookup the JS way create an <x-foo> element that extends the |
| 368 // <x-base> custom element. Inherit its prototype and signal what tag is | 368 // <x-base> custom element. Inherit its prototype and signal what tag is |
| 369 // inherited: | 369 // inherited: |
| 370 // | 370 // |
| 371 // var myProto = Object.create(HTMLElement.prototype); | 371 // var myProto = Object.create(HTMLElement.prototype); |
| 372 // var myElement = document.registerElement('x-foo', {prototype: myPro
to}); | 372 // var myElement = document.registerElement('x-foo', {prototype: myPro
to}); |
| 373 var baseElement = js.context[jsClassName]; | 373 var baseElement = js.JsNative.getProperty(js.context, jsClassName); |
| 374 if (baseElement == null) { | 374 if (baseElement == null) { |
| 375 // Couldn't find the HTML element so use a generic one. | 375 // Couldn't find the HTML element so use a generic one. |
| 376 baseElement = js.context['HTMLElement']; | 376 baseElement = js.JsNative.getProperty(js.context, 'HTMLElement'); |
| 377 } | 377 } |
| 378 var elemProto = js.context['Object'].callMethod("create", [baseElement['pr
ototype']]); | 378 var elemProto = js.JsNative.callMethod(js.JsNative.getProperty(js.context,
'Object'), "create", [js.JsNative.getProperty(baseElement, 'prototype')]); |
| 379 | 379 |
| 380 // Remember for any upgrading done in wrap_jso. | 380 // Remember for any upgrading done in wrap_jso. |
| 381 _knownCustomeElements[tag] = customElementClass; | 381 _knownCustomeElements[tag] = customElementClass; |
| 382 | 382 |
| 383 // TODO(terry): Hack to stop recursion re-creating custom element when the | 383 // TODO(terry): Hack to stop recursion re-creating custom element when the |
| 384 // created() constructor of the custom element does e.g., | 384 // created() constructor of the custom element does e.g., |
| 385 // | 385 // |
| 386 // MyElement.created() : super.created() { | 386 // MyElement.created() : super.created() { |
| 387 // this.innerHtml = "<b>I'm an x-foo-with-markup!</b>"; | 387 // this.innerHtml = "<b>I'm an x-foo-with-markup!</b>"; |
| 388 // } | 388 // } |
| 389 // | 389 // |
| 390 // sanitizing causes custom element to created recursively | 390 // sanitizing causes custom element to created recursively |
| 391 // until stack overflow. | 391 // until stack overflow. |
| 392 // | 392 // |
| 393 // See https://github.com/dart-lang/sdk/issues/23666 | 393 // See https://github.com/dart-lang/sdk/issues/23666 |
| 394 int creating = 0; | 394 int creating = 0; |
| 395 elemProto['createdCallback'] = new js.JsFunction.withThis(($this) { | 395 // TODO(jacobr): warning: |
| 396 elemProto['createdCallback'] = js.JsNative.withThis(($this) { |
| 396 if (_getJSClassName(reflectClass(customElementClass).superclass) != null
&& creating < 2) { | 397 if (_getJSClassName(reflectClass(customElementClass).superclass) != null
&& creating < 2) { |
| 397 creating++; | 398 creating++; |
| 398 | 399 |
| 399 var dartClass; | 400 var dartClass; |
| 400 try { | 401 try { |
| 401 dartClass = _blink.Blink_Utils.constructElement(customElementClass,
$this); | 402 dartClass = _blink.Blink_Utils.constructElement(customElementClass,
$this); |
| 402 } catch (e) { | 403 } catch (e) { |
| 403 dartClass = HtmlElement.internalCreateHtmlElement(); | 404 dartClass = HtmlElement.internalCreateHtmlElement(); |
| 404 throw e; | 405 throw e; |
| 405 } finally { | 406 } finally { |
| 406 // Need to remember the Dart class that was created for this custom
so | 407 // Need to remember the Dart class that was created for this custom
so |
| 407 // return it and setup the blink_jsObject to the $this that we'll be
working | 408 // return it and setup the blink_jsObject to the $this that we'll be
working |
| 408 // with as we talk to blink. | 409 // with as we talk to blink. |
| 409 $this['dart_class'] = dartClass; | 410 js.setDartHtmlWrapperFor($this, dartClass); |
| 410 | 411 |
| 411 creating--; | 412 creating--; |
| 412 } | 413 } |
| 413 } | 414 } |
| 414 }); | 415 }); |
| 415 elemProto['attributeChangedCallback'] = new js.JsFunction.withThis(($this,
attrName, oldVal, newVal) { | 416 elemProto['attributeChangedCallback'] = new js.JsFunction.withThis(($this,
attrName, oldVal, newVal) { |
| 416 if ($this["dart_class"] != null && $this['dart_class'].attributeChanged
!= null) { | 417 $this.attributeChanged(attrName, oldVal, newVal); |
| 417 $this['dart_class'].attributeChanged(attrName, oldVal, newVal); | |
| 418 } | |
| 419 }); | 418 }); |
| 420 elemProto['attachedCallback'] = new js.JsFunction.withThis(($this) { | 419 elemProto['attachedCallback'] = new js.JsFunction.withThis(($this) { |
| 421 if ($this["dart_class"] != null && $this['dart_class'].attached != null)
{ | 420 $this.attached(); |
| 422 $this['dart_class'].attached(); | |
| 423 } | |
| 424 }); | 421 }); |
| 425 elemProto['detachedCallback'] = new js.JsFunction.withThis(($this) { | 422 elemProto['detachedCallback'] = new js.JsFunction.withThis(($this) { |
| 426 if ($this["dart_class"] != null && $this['dart_class'].detached != null)
{ | 423 $this.detached(); |
| 427 $this['dart_class'].detached(); | |
| 428 } | |
| 429 }); | 424 }); |
| 430 // document.registerElement('x-foo', {prototype: elemProto, extends: exten
dsTag}); | 425 // document.registerElement('x-foo', {prototype: elemProto, extends: exten
dsTag}); |
| 431 var jsMap = new js.JsObject.jsify({'prototype': elemProto, 'extends': exte
ndsTag}); | 426 var jsMap = new js.JsObject.jsify({'prototype': elemProto, 'extends': exte
ndsTag}); |
| 432 js.context['document'].callMethod('registerElement', [tag, jsMap]); | 427 js.Jsnative.callMethod(js.JsNative.getProperty(js.context, 'document'), 'r
egisterElement', [tag, jsMap]); |
| 433 } | 428 } |
| 434 $endif | 429 $endif |
| 435 } | 430 } |
| 436 | 431 |
| 437 /** *Deprecated*: use [registerElement] instead. */ | 432 /** *Deprecated*: use [registerElement] instead. */ |
| 438 @deprecated | 433 @deprecated |
| 439 @Experimental() | 434 @Experimental() |
| 440 void register(String tag, Type customElementClass, {String extendsTag}) { | 435 void register(String tag, Type customElementClass, {String extendsTag}) { |
| 441 return registerElement(tag, customElementClass, extendsTag: extendsTag); | 436 return registerElement(tag, customElementClass, extendsTag: extendsTag); |
| 442 } | 437 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 491 /// parameter must be provided. | 486 /// parameter must be provided. |
| 492 @Experimental() | 487 @Experimental() |
| 493 ElementUpgrader createElementUpgrader(Type type, {String extendsTag}) { | 488 ElementUpgrader createElementUpgrader(Type type, {String extendsTag}) { |
| 494 $if DART2JS | 489 $if DART2JS |
| 495 return new _JSElementUpgrader(this, type, extendsTag); | 490 return new _JSElementUpgrader(this, type, extendsTag); |
| 496 $else | 491 $else |
| 497 return new _VMElementUpgrader(this, type, extendsTag); | 492 return new _VMElementUpgrader(this, type, extendsTag); |
| 498 $endif | 493 $endif |
| 499 } | 494 } |
| 500 } | 495 } |
| OLD | NEW |