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

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
« no previous file with comments | « sky/sdk/lib/widgets/menu_item.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 '../base/hit_test.dart';
10 import '../rendering/box.dart'; 11 import '../rendering/box.dart';
11 import '../rendering/object.dart'; 12 import '../rendering/object.dart';
12 import '../rendering/sky_binding.dart'; 13 import '../rendering/sky_binding.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
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 // TODO(abarth): We should split RenderObjectWrapper into two pieces so that 499 // TODO(abarth): We should split RenderObjectWrapper into two pieces so that
499 // RenderViewObject doesn't need to inherit all this code it 500 // RenderViewObject doesn't need to inherit all this code it
500 // doesn't need. 501 // doesn't need.
501 assert(parent != null || this is RenderViewWrapper); 502 assert(parent != null || this is RenderViewWrapper);
502 if (old == null) { 503 if (old == null) {
503 _root = createNode(); 504 _root = createNode();
504 _ancestor = findAncestor(RenderObjectWrapper); 505 _ancestor = findAncestor(RenderObjectWrapper);
505 if (_ancestor is RenderObjectWrapper) 506 if (_ancestor is RenderObjectWrapper)
506 _ancestor.insertChildRoot(this, slot); 507 _ancestor.insertChildRoot(this, slot);
507 } else { 508 } else {
509 assert(old is RenderObjectWrapper);
508 _root = old.root; 510 _root = old.root;
509 _ancestor = old._ancestor; 511 _ancestor = old._ancestor;
510 } 512 }
511 assert(_root == root); // in case a subclass reintroduces it 513 assert(_root == root); // in case a subclass reintroduces it
512 assert(root != null); 514 assert(root != null);
513 assert(mounted); 515 assert(mounted);
514 _nodeMap[root] = this; 516 _nodeMap[root] = this;
515 syncRenderObject(old); 517 syncRenderObject(old);
516 } 518 }
517 519
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 } 779 }
778 780
779 assert(root == this.root); // TODO(ianh): Remove this once the analyzer is c leverer 781 assert(root == this.root); // TODO(ianh): Remove this once the analyzer is c leverer
780 } 782 }
781 783
782 } 784 }
783 785
784 class WidgetSkyBinding extends SkyBinding { 786 class WidgetSkyBinding extends SkyBinding {
785 787
786 WidgetSkyBinding({ RenderView renderViewOverride: null }) 788 WidgetSkyBinding({ RenderView renderViewOverride: null })
787 : super(renderViewOverride: renderViewOverride) { 789 : super(renderViewOverride: renderViewOverride);
788 assert(_skyBinding == null);
789 }
790 790
791 static WidgetSkyBinding _skyBinding;
792 static SkyBinding get skyBinding => _skyBinding;
793 static void initWidgetSkyBinding({ RenderView renderViewOverride: null }) { 791 static void initWidgetSkyBinding({ RenderView renderViewOverride: null }) {
794 if (_skyBinding == null) 792 if (SkyBinding.instance == null)
795 _skyBinding = new WidgetSkyBinding(renderViewOverride: renderViewOverride) ; 793 new WidgetSkyBinding(renderViewOverride: renderViewOverride);
794 assert(SkyBinding.instance is WidgetSkyBinding);
796 } 795 }
797 796
798 void dispatchEvent(sky.Event event, HitTestResult result) { 797 void dispatchEvent(sky.Event event, HitTestResult result) {
799 assert(_skyBinding == this); 798 assert(SkyBinding.instance == this);
800 super.dispatchEvent(event, result); 799 super.dispatchEvent(event, result);
801 for (HitTestEntry entry in result.path.reversed) { 800 for (HitTestEntry entry in result.path.reversed) {
802 Widget target = RenderObjectWrapper._getMounted(entry.target); 801 Widget target = RenderObjectWrapper._getMounted(entry.target);
803 if (target == null) 802 if (target == null)
804 continue; 803 continue;
805 RenderObject targetRoot = target.root; 804 RenderObject targetRoot = target.root;
806 while (target != null && target.root == targetRoot) { 805 while (target != null && target.root == targetRoot) {
807 if (target is Listener) 806 if (target is Listener)
808 target._handleEvent(event); 807 target._handleEvent(event);
809 target = target._parent; 808 target = target._parent;
(...skipping 24 matching lines...) Expand all
834 assert(_dirty); 833 assert(_dirty);
835 assert(_mounted); 834 assert(_mounted);
836 assert(parent == null); 835 assert(parent == null);
837 _sync(null, null); 836 _sync(null, null);
838 } 837 }
839 838
840 } 839 }
841 840
842 class RenderViewWrapper extends OneChildRenderObjectWrapper { 841 class RenderViewWrapper extends OneChildRenderObjectWrapper {
843 RenderViewWrapper({ String key, Widget child }) : super(key: key, child: child ); 842 RenderViewWrapper({ String key, Widget child }) : super(key: key, child: child );
844
845 RenderView get root => super.root; 843 RenderView get root => super.root;
846 RenderView createNode() => WidgetSkyBinding._skyBinding.renderView; 844 RenderView createNode() => SkyBinding.instance.renderView;
847 } 845 }
848 846
849 class AppContainer extends AbstractWidgetRoot { 847 class AppContainer extends AbstractWidgetRoot {
850 AppContainer(this.app); 848 AppContainer(this.app) {
851 849 assert(SkyBinding.instance is WidgetSkyBinding);
850 }
852 final App app; 851 final App app;
853
854 Widget build() => new RenderViewWrapper(child: app); 852 Widget build() => new RenderViewWrapper(child: app);
855 } 853 }
856 854
857 void runApp(App app, { RenderView renderViewOverride }) { 855 void runApp(App app, { RenderView renderViewOverride }) {
858 WidgetSkyBinding.initWidgetSkyBinding(renderViewOverride: renderViewOverride); 856 WidgetSkyBinding.initWidgetSkyBinding(renderViewOverride: renderViewOverride);
859 new AppContainer(app); 857 new AppContainer(app);
860 } 858 }
861 859
862 typedef Widget Builder(); 860 typedef Widget Builder();
863 861
(...skipping 30 matching lines...) Expand all
894 if (root.parent == null) { 892 if (root.parent == null) {
895 // we haven't attached it yet 893 // we haven't attached it yet
896 assert(_container.child == null); 894 assert(_container.child == null);
897 _container.child = root; 895 _container.child = root;
898 } 896 }
899 assert(root.parent == _container); 897 assert(root.parent == _container);
900 } 898 }
901 899
902 Widget build() => builder(); 900 Widget build() => builder();
903 } 901 }
OLDNEW
« no previous file with comments | « sky/sdk/lib/widgets/menu_item.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698