| OLD | NEW | 
|    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 library created_callback_test; |    5 library created_callback_test; | 
|    6 import 'package:unittest/unittest.dart'; |    6 import 'package:unittest/unittest.dart'; | 
|    7 import 'package:unittest/html_config.dart'; |    7 import 'package:unittest/html_config.dart'; | 
|    8 import 'dart:html'; |    8 import 'dart:html'; | 
|    9 import 'dart:js' as js; |    9 import 'dart:js' as js; | 
|   10 import '../utils.dart'; |   10 import '../utils.dart'; | 
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   58   useHtmlConfiguration(); |   58   useHtmlConfiguration(); | 
|   59  |   59  | 
|   60   // Adapted from Blink's |   60   // Adapted from Blink's | 
|   61   // fast/dom/custom/created-callback test. |   61   // fast/dom/custom/created-callback test. | 
|   62  |   62  | 
|   63   var registered = false; |   63   var registered = false; | 
|   64   setUp(() { |   64   setUp(() { | 
|   65     return customElementsReady.then((_) { |   65     return customElementsReady.then((_) { | 
|   66       if (!registered) { |   66       if (!registered) { | 
|   67         registered = true; |   67         registered = true; | 
|   68         document.register(B.tag, B); |   68         document.registerElement(B.tag, B); | 
|   69         document.register(C.tag, C); |   69         document.registerElement(C.tag, C); | 
|   70         ErrorConstructorElement.register(); |   70         ErrorConstructorElement.registerElement(); | 
|   71       } |   71       } | 
|   72     }); |   72     }); | 
|   73   }); |   73   }); | 
|   74  |   74  | 
|   75   test('transfer created callback', () { |   75   test('transfer created callback', () { | 
|   76     document.register(A.tag, A); |   76     document.registerElement(A.tag, A); | 
|   77     var x = new A(); |   77     var x = new A(); | 
|   78     expect(A.createdInvocations, 1); |   78     expect(A.createdInvocations, 1); | 
|   79   }); |   79   }); | 
|   80  |   80  | 
|   81   test('unresolved and created callback timing', () { |   81   test('unresolved and created callback timing', () { | 
|   82     var div = new DivElement(); |   82     var div = new DivElement(); | 
|   83     C.div = div; |   83     C.div = div; | 
|   84     div.setInnerHtml(""" |   84     div.setInnerHtml(""" | 
|   85 <x-c id="t"></x-c> |   85 <x-c id="t"></x-c> | 
|   86 <x-b id="u"></x-b> |   86 <x-b id="u"></x-b> | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|  100       AccessWhileUpgradingElement.test); |  100       AccessWhileUpgradingElement.test); | 
|  101  |  101  | 
|  102   test('cannot call created constructor', () { |  102   test('cannot call created constructor', () { | 
|  103     expect(() { |  103     expect(() { | 
|  104       new B.created(); |  104       new B.created(); | 
|  105     }, throws); |  105     }, throws); | 
|  106   }); |  106   }); | 
|  107  |  107  | 
|  108   test('cannot register without created', () { |  108   test('cannot register without created', () { | 
|  109     expect(() { |  109     expect(() { | 
|  110       document.register(MissingCreatedElement.tag, MissingCreatedElement); |  110       document.registerElement(MissingCreatedElement.tag, | 
 |  111           MissingCreatedElement); | 
|  111     }, throws); |  112     }, throws); | 
|  112   }); |  113   }); | 
|  113  |  114  | 
|  114   test('throw on createElement does not upgrade', () { |  115   test('throw on createElement does not upgrade', () { | 
|  115     ErrorConstructorElement.callCount = 0; |  116     ErrorConstructorElement.callCount = 0; | 
|  116  |  117  | 
|  117     var e; |  118     var e; | 
|  118     expectGlobalError(() { |  119     expectGlobalError(() { | 
|  119       e = new Element.tag(ErrorConstructorElement.tag); |  120       e = new Element.tag(ErrorConstructorElement.tag); | 
|  120     }); |  121     }); | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
|  142  |  143  | 
|  143     var e = dummy.firstChild; |  144     var e = dummy.firstChild; | 
|  144     // Accessing should not re-run the constructor. |  145     // Accessing should not re-run the constructor. | 
|  145     expect(ErrorConstructorElement.callCount, 1); |  146     expect(ErrorConstructorElement.callCount, 1); | 
|  146     expect(e is HtmlElement, isTrue); |  147     expect(e is HtmlElement, isTrue); | 
|  147     expect(e is ErrorConstructorElement, isFalse); |  148     expect(e is ErrorConstructorElement, isFalse); | 
|  148   }); |  149   }); | 
|  149  |  150  | 
|  150   test('cannot register created with params', () { |  151   test('cannot register created with params', () { | 
|  151     expect(() { |  152     expect(() { | 
|  152       document.register('x-created-with-params', CreatedWithParametersElement); |  153       document.registerElement('x-created-with-params', | 
 |  154           CreatedWithParametersElement); | 
|  153     }, throws); |  155     }, throws); | 
|  154   }); |  156   }); | 
|  155  |  157  | 
|  156   test('created cannot be called from nested constructor', |  158   test('created cannot be called from nested constructor', | 
|  157       NestedCreatedConstructorElement.test); |  159       NestedCreatedConstructorElement.test); | 
|  158  |  160  | 
|  159  |  161  | 
|  160   // TODO(vsm): Port additional test from upstream here: |  162   // TODO(vsm): Port additional test from upstream here: | 
|  161   // http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/crea
     ted-callback.html?r1=156141&r2=156185 |  163   // http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/crea
     ted-callback.html?r1=156141&r2=156185 | 
|  162 } |  164 } | 
|  163  |  165  | 
|  164  |  166  | 
|  165 class NestedElement extends HtmlElement { |  167 class NestedElement extends HtmlElement { | 
|  166   static final tag = 'x-nested'; |  168   static final tag = 'x-nested'; | 
|  167  |  169  | 
|  168   final Element b = new B(); |  170   final Element b = new B(); | 
|  169  |  171  | 
|  170   factory NestedElement() => new Element.tag(tag); |  172   factory NestedElement() => new Element.tag(tag); | 
|  171   NestedElement.created() : super.created(); |  173   NestedElement.created() : super.created(); | 
|  172  |  174  | 
|  173   static void register() { |  175   static void register() { | 
|  174     document.register(tag, NestedElement); |  176     document.registerElement(tag, NestedElement); | 
|  175   } |  177   } | 
|  176  |  178  | 
|  177   static void test() { |  179   static void test() { | 
|  178     register(); |  180     register(); | 
|  179  |  181  | 
|  180     var e = new NestedElement(); |  182     var e = new NestedElement(); | 
|  181     expect(e.b, isNotNull); |  183     expect(e.b, isNotNull); | 
|  182     expect(e.b is B, isTrue); |  184     expect(e.b is B, isTrue); | 
|  183     expect(e is NestedElement, isTrue); |  185     expect(e is NestedElement, isTrue); | 
|  184   } |  186   } | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
|  196   factory AccessWhileUpgradingElement() => new Element.tag(tag); |  198   factory AccessWhileUpgradingElement() => new Element.tag(tag); | 
|  197   AccessWhileUpgradingElement.created() : super.created(); |  199   AccessWhileUpgradingElement.created() : super.created(); | 
|  198  |  200  | 
|  199   static runInitializerCode() { |  201   static runInitializerCode() { | 
|  200     upgradingContextChild = upgradingContext.firstChild; |  202     upgradingContextChild = upgradingContext.firstChild; | 
|  201  |  203  | 
|  202     return 666; |  204     return 666; | 
|  203   } |  205   } | 
|  204  |  206  | 
|  205   static void register() { |  207   static void register() { | 
|  206     document.register(tag, AccessWhileUpgradingElement); |  208     document.registerElement(tag, AccessWhileUpgradingElement); | 
|  207   } |  209   } | 
|  208  |  210  | 
|  209   static void test() { |  211   static void test() { | 
|  210     register(); |  212     register(); | 
|  211  |  213  | 
|  212     upgradingContext = new DivElement(); |  214     upgradingContext = new DivElement(); | 
|  213     upgradingContext.setInnerHtml('<$tag></$tag>', |  215     upgradingContext.setInnerHtml('<$tag></$tag>', | 
|  214         treeSanitizer: new NullTreeSanitizer()); |  216         treeSanitizer: new NullTreeSanitizer()); | 
|  215     var child = upgradingContext.firstChild; |  217     var child = upgradingContext.firstChild; | 
|  216  |  218  | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
|  232   static int callCount = 0; |  234   static int callCount = 0; | 
|  233  |  235  | 
|  234   factory ErrorConstructorElement() => new Element.tag(tag); |  236   factory ErrorConstructorElement() => new Element.tag(tag); | 
|  235  |  237  | 
|  236   ErrorConstructorElement.created() : super.created() { |  238   ErrorConstructorElement.created() : super.created() { | 
|  237     ++callCount; |  239     ++callCount; | 
|  238     throw new Exception('Just messin with ya'); |  240     throw new Exception('Just messin with ya'); | 
|  239   } |  241   } | 
|  240  |  242  | 
|  241   static void register() { |  243   static void register() { | 
|  242     document.register(tag, ErrorConstructorElement); |  244     document.registerElement(tag, ErrorConstructorElement); | 
|  243   } |  245   } | 
|  244 } |  246 } | 
|  245  |  247  | 
|  246 class NestedCreatedConstructorElement extends HtmlElement { |  248 class NestedCreatedConstructorElement extends HtmlElement { | 
|  247   static final tag = 'x-nested-created-constructor'; |  249   static final tag = 'x-nested-created-constructor'; | 
|  248  |  250  | 
|  249   // Should not be able to call this here. |  251   // Should not be able to call this here. | 
|  250   final B b = constructB(); |  252   final B b = constructB(); | 
|  251   static B constructedB; |  253   static B constructedB; | 
|  252  |  254  | 
|  253   factory NestedCreatedConstructorElement() => new Element.tag(tag); |  255   factory NestedCreatedConstructorElement() => new Element.tag(tag); | 
|  254   NestedCreatedConstructorElement.created() : super.created(); |  256   NestedCreatedConstructorElement.created() : super.created(); | 
|  255  |  257  | 
|  256   static void register() { |  258   static void register() { | 
|  257     document.register(tag, NestedCreatedConstructorElement); |  259     document.registerElement(tag, NestedCreatedConstructorElement); | 
|  258   } |  260   } | 
|  259  |  261  | 
|  260   // Try to run the created constructor, and record the results. |  262   // Try to run the created constructor, and record the results. | 
|  261   static constructB() { |  263   static constructB() { | 
|  262     // This should throw an exception. |  264     // This should throw an exception. | 
|  263     constructedB = new B.created(); |  265     constructedB = new B.created(); | 
|  264     return constructedB; |  266     return constructedB; | 
|  265   } |  267   } | 
|  266  |  268  | 
|  267   static void test() { |  269   static void test() { | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
|  290   } catch(e) { |  292   } catch(e) { | 
|  291     rethrow; |  293     rethrow; | 
|  292   } finally { |  294   } finally { | 
|  293     js.context['testExpectsGlobalError'] = false; |  295     js.context['testExpectsGlobalError'] = false; | 
|  294   } |  296   } | 
|  295   var errors = js.context['testSuppressedGlobalErrors']; |  297   var errors = js.context['testSuppressedGlobalErrors']; | 
|  296   expect(errors['length'], 1); |  298   expect(errors['length'], 1); | 
|  297   // Clear out the errors; |  299   // Clear out the errors; | 
|  298   js.context['testSuppressedGlobalErrors']['length'] = 0; |  300   js.context['testSuppressedGlobalErrors']['length'] = 0; | 
|  299 } |  301 } | 
| OLD | NEW |