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 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:collection'; | 6 import 'dart:collection'; |
7 import 'dart:mirrors'; | 7 import 'dart:mirrors'; |
8 import 'dart:sky' as sky; | 8 import 'dart:sky' as sky; |
9 | 9 |
10 import '../app/view.dart'; | |
11 import '../rendering/box.dart'; | 10 import '../rendering/box.dart'; |
12 import '../rendering/object.dart'; | 11 import '../rendering/object.dart'; |
| 12 import '../rendering/sky_binding.dart'; |
13 | 13 |
14 export '../rendering/box.dart' show BoxConstraints, BoxDecoration, Border, Borde
rSide, EdgeDims; | 14 export '../rendering/box.dart' show BoxConstraints, BoxDecoration, Border, Borde
rSide, EdgeDims; |
15 export '../rendering/flex.dart' show FlexDirection; | 15 export '../rendering/flex.dart' show FlexDirection; |
16 export '../rendering/object.dart' show Point, Size, Rect, Color, Paint, Path; | 16 export '../rendering/object.dart' show Point, Size, Rect, Color, Paint, Path; |
17 | 17 |
18 final bool _shouldLogRenderDuration = false; | 18 final bool _shouldLogRenderDuration = false; |
19 | 19 |
20 // All Effen nodes derive from Widget. All nodes have a _parent, a _key and | 20 // All Effen nodes derive from Widget. All nodes have a _parent, a _key and |
21 // can be sync'd. | 21 // can be sync'd. |
22 abstract class Widget { | 22 abstract class Widget { |
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
760 oldNode = oldChildren[oldStartIndex]; | 760 oldNode = oldChildren[oldStartIndex]; |
761 syncChild(null, oldNode, null); | 761 syncChild(null, oldNode, null); |
762 advanceOldStartIndex(); | 762 advanceOldStartIndex(); |
763 } | 763 } |
764 | 764 |
765 assert(root == this.root); // TODO(ianh): Remove this once the analyzer is c
leverer | 765 assert(root == this.root); // TODO(ianh): Remove this once the analyzer is c
leverer |
766 } | 766 } |
767 | 767 |
768 } | 768 } |
769 | 769 |
770 class WidgetAppView extends AppView { | 770 class WidgetSkyBinding extends SkyBinding { |
771 | 771 |
772 WidgetAppView({ RenderView renderViewOverride: null }) | 772 WidgetSkyBinding({ RenderView renderViewOverride: null }) |
773 : super(renderViewOverride: renderViewOverride) { | 773 : super(renderViewOverride: renderViewOverride) { |
774 assert(_appView == null); | 774 assert(_skyBinding == null); |
775 } | 775 } |
776 | 776 |
777 static WidgetAppView _appView; | 777 static WidgetSkyBinding _skyBinding; |
778 static AppView get appView => _appView; | 778 static SkyBinding get skyBinding => _skyBinding; |
779 static void initWidgetAppView({ RenderView renderViewOverride: null }) { | 779 static void initWidgetSkyBinding({ RenderView renderViewOverride: null }) { |
780 if (_appView == null) | 780 if (_skyBinding == null) |
781 _appView = new WidgetAppView(renderViewOverride: renderViewOverride); | 781 _skyBinding = new WidgetSkyBinding(renderViewOverride: renderViewOverride)
; |
782 } | 782 } |
783 | 783 |
784 void dispatchEvent(sky.Event event, HitTestResult result) { | 784 void dispatchEvent(sky.Event event, HitTestResult result) { |
785 assert(_appView == this); | 785 assert(_skyBinding == this); |
786 super.dispatchEvent(event, result); | 786 super.dispatchEvent(event, result); |
787 for (HitTestEntry entry in result.path.reversed) { | 787 for (HitTestEntry entry in result.path.reversed) { |
788 Widget target = RenderObjectWrapper._getMounted(entry.target); | 788 Widget target = RenderObjectWrapper._getMounted(entry.target); |
789 if (target == null) | 789 if (target == null) |
790 continue; | 790 continue; |
791 RenderObject targetRoot = target.root; | 791 RenderObject targetRoot = target.root; |
792 while (target != null && target.root == targetRoot) { | 792 while (target != null && target.root == targetRoot) { |
793 if (target is Listener) | 793 if (target is Listener) |
794 target._handleEvent(event); | 794 target._handleEvent(event); |
795 target = target._parent; | 795 target = target._parent; |
(...skipping 26 matching lines...) Expand all Loading... |
822 assert(parent == null); | 822 assert(parent == null); |
823 _sync(null, null); | 823 _sync(null, null); |
824 } | 824 } |
825 | 825 |
826 } | 826 } |
827 | 827 |
828 class RenderViewWrapper extends OneChildRenderObjectWrapper { | 828 class RenderViewWrapper extends OneChildRenderObjectWrapper { |
829 RenderViewWrapper({ String key, Widget child }) : super(key: key, child: child
); | 829 RenderViewWrapper({ String key, Widget child }) : super(key: key, child: child
); |
830 | 830 |
831 RenderView get root => super.root; | 831 RenderView get root => super.root; |
832 RenderView createNode() => WidgetAppView._appView.renderView; | 832 RenderView createNode() => WidgetSkyBinding._skyBinding.renderView; |
833 } | 833 } |
834 | 834 |
835 class AppContainer extends AbstractWidgetRoot { | 835 class AppContainer extends AbstractWidgetRoot { |
836 AppContainer(this.app); | 836 AppContainer(this.app); |
837 | 837 |
838 final App app; | 838 final App app; |
839 | 839 |
840 Widget build() => new RenderViewWrapper(child: app); | 840 Widget build() => new RenderViewWrapper(child: app); |
841 } | 841 } |
842 | 842 |
843 void runApp(App app, { RenderView renderViewOverride }) { | 843 void runApp(App app, { RenderView renderViewOverride }) { |
844 WidgetAppView.initWidgetAppView(renderViewOverride: renderViewOverride); | 844 WidgetSkyBinding.initWidgetSkyBinding(renderViewOverride: renderViewOverride); |
845 new AppContainer(app); | 845 new AppContainer(app); |
846 } | 846 } |
847 | 847 |
848 typedef Widget Builder(); | 848 typedef Widget Builder(); |
849 | 849 |
850 class RenderBoxToWidgetAdapter extends AbstractWidgetRoot { | 850 class RenderBoxToWidgetAdapter extends AbstractWidgetRoot { |
851 | 851 |
852 RenderBoxToWidgetAdapter( | 852 RenderBoxToWidgetAdapter( |
853 RenderObjectWithChildMixin<RenderBox> container, | 853 RenderObjectWithChildMixin<RenderBox> container, |
854 this.builder | 854 this.builder |
(...skipping 25 matching lines...) Expand all Loading... |
880 if (root.parent == null) { | 880 if (root.parent == null) { |
881 // we haven't attached it yet | 881 // we haven't attached it yet |
882 assert(_container.child == null); | 882 assert(_container.child == null); |
883 _container.child = root; | 883 _container.child = root; |
884 } | 884 } |
885 assert(root.parent == _container); | 885 assert(root.parent == _container); |
886 } | 886 } |
887 | 887 |
888 Widget build() => builder(); | 888 Widget build() => builder(); |
889 } | 889 } |
OLD | NEW |