| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 library fn; | 5 library fn; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:collection'; | 8 import 'dart:collection'; |
| 9 import 'dart:sky' as sky; | 9 import 'dart:sky' as sky; |
| 10 import 'reflect.dart' as reflect; | 10 import 'reflect.dart' as reflect; |
| (...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 543 final int _order; | 543 final int _order; |
| 544 static int _currentOrder = 0; | 544 static int _currentOrder = 0; |
| 545 bool _stateful; | 545 bool _stateful; |
| 546 static Component _currentlyRendering; | 546 static Component _currentlyRendering; |
| 547 | 547 |
| 548 Component({ Object key, bool stateful }) | 548 Component({ Object key, bool stateful }) |
| 549 : _stateful = stateful != null ? stateful : false, | 549 : _stateful = stateful != null ? stateful : false, |
| 550 _order = _currentOrder + 1, | 550 _order = _currentOrder + 1, |
| 551 super(key:key); | 551 super(key:key); |
| 552 | 552 |
| 553 void didMount() {} |
| 553 void didUnmount() {} | 554 void didUnmount() {} |
| 554 | 555 |
| 555 void _remove() { | 556 void _remove() { |
| 556 assert(_rendered != null); | 557 assert(_rendered != null); |
| 557 assert(_root != null); | 558 assert(_root != null); |
| 558 _rendered._remove(); | 559 _rendered._remove(); |
| 559 _rendered = null; | 560 _rendered = null; |
| 560 _root = null; | 561 _root = null; |
| 561 _removed = true; | 562 _removed = true; |
| 562 didUnmount(); | 563 didUnmount(); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 595 return false; | 596 return false; |
| 596 } | 597 } |
| 597 | 598 |
| 598 void _renderInternal(sky.Node host, sky.Node insertBefore) { | 599 void _renderInternal(sky.Node host, sky.Node insertBefore) { |
| 599 if (!_dirty) { | 600 if (!_dirty) { |
| 600 assert(_rendered != null); | 601 assert(_rendered != null); |
| 601 return; | 602 return; |
| 602 } | 603 } |
| 603 | 604 |
| 604 var oldRendered = _rendered; | 605 var oldRendered = _rendered; |
| 606 bool mounting = oldRendered == null; |
| 605 int lastOrder = _currentOrder; | 607 int lastOrder = _currentOrder; |
| 606 _currentOrder = _order; | 608 _currentOrder = _order; |
| 607 _currentlyRendering = this; | 609 _currentlyRendering = this; |
| 608 _rendered = render(); | 610 _rendered = render(); |
| 609 _currentlyRendering = null; | 611 _currentlyRendering = null; |
| 610 _currentOrder = lastOrder; | 612 _currentOrder = lastOrder; |
| 611 | 613 |
| 612 _rendered.events.addAll(events); | 614 _rendered.events.addAll(events); |
| 613 | 615 |
| 614 _dirty = false; | 616 _dirty = false; |
| 615 | 617 |
| 616 if (oldRendered != null && _rendered.runtimeType != oldRendered.runtimeType) | 618 if (oldRendered != null && _rendered.runtimeType != oldRendered.runtimeType) |
| 617 oldRendered = null; | 619 oldRendered = null; |
| 618 | 620 |
| 619 if (_rendered._sync(oldRendered, host, insertBefore)) { | 621 if (_rendered._sync(oldRendered, host, insertBefore)) { |
| 620 _rendered = oldRendered; // retain stateful component | 622 _rendered = oldRendered; // retain stateful component |
| 621 } | 623 } |
| 622 _root = _rendered._root; | 624 _root = _rendered._root; |
| 623 assert(_rendered._root is sky.Node); | 625 assert(_rendered._root is sky.Node); |
| 626 |
| 627 if (mounting) { |
| 628 didMount(); |
| 629 } |
| 624 } | 630 } |
| 625 | 631 |
| 626 void _renderIfDirty() { | 632 void _renderIfDirty() { |
| 627 assert(_rendered != null); | 633 assert(_rendered != null); |
| 628 assert(!_removed); | 634 assert(!_removed); |
| 629 | 635 |
| 630 var rendered = _rendered; | 636 var rendered = _rendered; |
| 631 while (rendered is Component) { | 637 while (rendered is Component) { |
| 632 rendered = rendered._rendered; | 638 rendered = rendered._rendered; |
| 633 } | 639 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 660 | 666 |
| 661 _sync(null, _host, null); | 667 _sync(null, _host, null); |
| 662 assert(_root is sky.Node); | 668 assert(_root is sky.Node); |
| 663 | 669 |
| 664 sw.stop(); | 670 sw.stop(); |
| 665 if (_shouldLogRenderDuration) | 671 if (_shouldLogRenderDuration) |
| 666 print("Initial render: ${sw.elapsedMicroseconds} microseconds"); | 672 print("Initial render: ${sw.elapsedMicroseconds} microseconds"); |
| 667 }); | 673 }); |
| 668 } | 674 } |
| 669 } | 675 } |
| OLD | NEW |