Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: sky/sdk/lib/widgets/widget.dart

Issue 1187393002: Cleanup of SkyBinding, and resultant yak shaving. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« sky/sdk/lib/types/README.md ('K') | « sky/sdk/lib/types/node.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 '../rendering/box.dart'; 10 import '../rendering/box.dart';
11 import '../rendering/object.dart'; 11 import '../rendering/object.dart';
12 import '../rendering/sky_binding.dart'; 12 import '../rendering/sky_binding.dart';
13 import '../sky/hittest.dart';
13 14
14 export '../rendering/box.dart' show BoxConstraints, BoxDecoration, Border, Borde rSide, EdgeDims; 15 export '../rendering/box.dart' show BoxConstraints, BoxDecoration, Border, Borde rSide, EdgeDims;
15 export '../rendering/flex.dart' show FlexDirection; 16 export '../rendering/flex.dart' show FlexDirection;
16 export '../rendering/object.dart' show Point, Size, Rect, Color, Paint, Path; 17 export '../rendering/object.dart' show Point, Size, Rect, Color, Paint, Path;
17 18
18 final bool _shouldLogRenderDuration = false; 19 final bool _shouldLogRenderDuration = false;
19 20
20 // All Effen nodes derive from Widget. All nodes have a _parent, a _key and 21 // All Effen nodes derive from Widget. All nodes have a _parent, a _key and
21 // can be sync'd. 22 // can be sync'd.
22 abstract class Widget { 23 abstract class Widget {
(...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 } 778 }
778 779
779 assert(root == this.root); // TODO(ianh): Remove this once the analyzer is c leverer 780 assert(root == this.root); // TODO(ianh): Remove this once the analyzer is c leverer
780 } 781 }
781 782
782 } 783 }
783 784
784 class WidgetSkyBinding extends SkyBinding { 785 class WidgetSkyBinding extends SkyBinding {
785 786
786 WidgetSkyBinding({ RenderView renderViewOverride: null }) 787 WidgetSkyBinding({ RenderView renderViewOverride: null })
787 : super(renderViewOverride: renderViewOverride) { 788 : super(renderViewOverride: renderViewOverride);
788 assert(_skyBinding == null);
789 }
790 789
791 static WidgetSkyBinding _skyBinding;
792 static SkyBinding get skyBinding => _skyBinding;
793 static void initWidgetSkyBinding({ RenderView renderViewOverride: null }) { 790 static void initWidgetSkyBinding({ RenderView renderViewOverride: null }) {
794 if (_skyBinding == null) 791 if (SkyBinding.instance == null)
795 _skyBinding = new WidgetSkyBinding(renderViewOverride: renderViewOverride) ; 792 new WidgetSkyBinding(renderViewOverride: renderViewOverride);
793 assert(SkyBinding.instance is WidgetSkyBinding);
796 } 794 }
797 795
798 void dispatchEvent(sky.Event event, HitTestResult result) { 796 void dispatchEvent(sky.Event event, HitTestResult result) {
799 assert(_skyBinding == this); 797 assert(SkyBinding.instance == this);
800 super.dispatchEvent(event, result); 798 super.dispatchEvent(event, result);
801 for (HitTestEntry entry in result.path.reversed) { 799 for (HitTestEntry entry in result.path.reversed) {
802 Widget target = RenderObjectWrapper._getMounted(entry.target); 800 Widget target = RenderObjectWrapper._getMounted(entry.target);
803 if (target == null) 801 if (target == null)
804 continue; 802 continue;
805 RenderObject targetRoot = target.root; 803 RenderObject targetRoot = target.root;
806 while (target != null && target.root == targetRoot) { 804 while (target != null && target.root == targetRoot) {
807 if (target is Listener) 805 if (target is Listener)
808 target._handleEvent(event); 806 target._handleEvent(event);
809 target = target._parent; 807 target = target._parent;
(...skipping 24 matching lines...) Expand all
834 assert(_dirty); 832 assert(_dirty);
835 assert(_mounted); 833 assert(_mounted);
836 assert(parent == null); 834 assert(parent == null);
837 _sync(null, null); 835 _sync(null, null);
838 } 836 }
839 837
840 } 838 }
841 839
842 class RenderViewWrapper extends OneChildRenderObjectWrapper { 840 class RenderViewWrapper extends OneChildRenderObjectWrapper {
843 RenderViewWrapper({ String key, Widget child }) : super(key: key, child: child ); 841 RenderViewWrapper({ String key, Widget child }) : super(key: key, child: child );
844
845 RenderView get root => super.root; 842 RenderView get root => super.root;
846 RenderView createNode() => WidgetSkyBinding._skyBinding.renderView; 843 RenderView createNode() => SkyBinding.instance.renderView;
847 } 844 }
848 845
849 class AppContainer extends AbstractWidgetRoot { 846 class AppContainer extends AbstractWidgetRoot {
850 AppContainer(this.app); 847 AppContainer(this.app) {
851 848 assert(SkyBinding.instance is WidgetSkyBinding);
849 }
852 final App app; 850 final App app;
853
854 Widget build() => new RenderViewWrapper(child: app); 851 Widget build() => new RenderViewWrapper(child: app);
855 } 852 }
856 853
857 void runApp(App app, { RenderView renderViewOverride }) { 854 void runApp(App app, { RenderView renderViewOverride }) {
858 WidgetSkyBinding.initWidgetSkyBinding(renderViewOverride: renderViewOverride); 855 WidgetSkyBinding.initWidgetSkyBinding(renderViewOverride: renderViewOverride);
859 new AppContainer(app); 856 new AppContainer(app);
860 } 857 }
861 858
862 typedef Widget Builder(); 859 typedef Widget Builder();
863 860
(...skipping 30 matching lines...) Expand all
894 if (root.parent == null) { 891 if (root.parent == null) {
895 // we haven't attached it yet 892 // we haven't attached it yet
896 assert(_container.child == null); 893 assert(_container.child == null);
897 _container.child = root; 894 _container.child = root;
898 } 895 }
899 assert(root.parent == _container); 896 assert(root.parent == _container);
900 } 897 }
901 898
902 Widget build() => builder(); 899 Widget build() => builder();
903 } 900 }
OLDNEW
« sky/sdk/lib/types/README.md ('K') | « sky/sdk/lib/types/node.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698