| 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 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 | 313 |
| 314 void _sync(UINode old, RenderCSSContainer host, RenderCSS insertBefore) { | 314 void _sync(UINode old, RenderCSSContainer host, RenderCSS insertBefore) { |
| 315 for (var type in listeners.keys) { | 315 for (var type in listeners.keys) { |
| 316 _ensureDocumentListener(type); | 316 _ensureDocumentListener(type); |
| 317 } | 317 } |
| 318 | 318 |
| 319 super._sync(old, host, insertBefore); | 319 super._sync(old, host, insertBefore); |
| 320 } | 320 } |
| 321 } | 321 } |
| 322 | 322 |
| 323 class Text extends SkyNodeWrapper { | |
| 324 final String data; | |
| 325 | |
| 326 // Text nodes are special cases of having non-unique keys (which don't need | |
| 327 // to be assigned as part of the API). Since they are unique in not having | |
| 328 // children, there's little point to reordering, so we always just re-assign | |
| 329 // the data. | |
| 330 Text(this.data) : super(key:'*text*'); | |
| 331 | |
| 332 static final Text _emptyText = new Text(null); | |
| 333 | |
| 334 SkyNodeWrapper get _emptyNode => _emptyText; | |
| 335 | |
| 336 RenderCSSText _root; | |
| 337 RenderCSS _createNode() { | |
| 338 return new RenderCSSText(this, this.data); | |
| 339 } | |
| 340 | |
| 341 void _syncNode(SkyNodeWrapper old) { | |
| 342 if (old == _emptyText) | |
| 343 return; // we set inside _createNode(); | |
| 344 _root.data = data; | |
| 345 } | |
| 346 } | |
| 347 | |
| 348 final List<UINode> _emptyList = new List<UINode>(); | 323 final List<UINode> _emptyList = new List<UINode>(); |
| 349 | 324 |
| 350 abstract class SkyElementWrapper extends SkyNodeWrapper { | 325 abstract class SkyElementWrapper extends SkyNodeWrapper { |
| 351 | 326 |
| 352 final List<UINode> children; | 327 final List<UINode> children; |
| 353 final Style style; | 328 final Style style; |
| 354 final String inlineStyle; | 329 final String inlineStyle; |
| 355 | 330 |
| 356 SkyElementWrapper({ | 331 SkyElementWrapper({ |
| 357 Object key, | 332 Object key, |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 style: style, | 562 style: style, |
| 588 inlineStyle: inlineStyle | 563 inlineStyle: inlineStyle |
| 589 ); | 564 ); |
| 590 | 565 |
| 591 void _syncNode(UINode old) { | 566 void _syncNode(UINode old) { |
| 592 super._syncNode(old); | 567 super._syncNode(old); |
| 593 _root.direction = direction; | 568 _root.direction = direction; |
| 594 } | 569 } |
| 595 } | 570 } |
| 596 | 571 |
| 572 class Text extends SkyElementWrapper { |
| 573 |
| 574 RenderCSSText _root; |
| 575 RenderCSSText _createNode() => new RenderCSSText(this, this.data); |
| 576 |
| 577 static final Text _emptyText = new Text(''); |
| 578 |
| 579 SkyNodeWrapper get _emptyNode => _emptyText; |
| 580 |
| 581 final String data; |
| 582 |
| 583 // Text nodes are special cases of having non-unique keys (which don't need |
| 584 // to be assigned as part of the API). Since they are unique in not having |
| 585 // children, there's little point to reordering, so we always just re-assign |
| 586 // the data. |
| 587 Text(this.data, { |
| 588 Style style, |
| 589 String inlineStyle |
| 590 }) : super( |
| 591 key: '*text*', |
| 592 style: style, |
| 593 inlineStyle: inlineStyle |
| 594 ); |
| 595 |
| 596 void _syncNode(UINode old) { |
| 597 super._syncNode(old); |
| 598 _root.data = data; |
| 599 } |
| 600 } |
| 601 |
| 597 class Image extends SkyElementWrapper { | 602 class Image extends SkyElementWrapper { |
| 598 | 603 |
| 599 RenderCSSImage _root; | 604 RenderCSSImage _root; |
| 600 RenderCSSImage _createNode() => new RenderCSSImage(this, this.src, this.width,
this.height); | 605 RenderCSSImage _createNode() => new RenderCSSImage(this, this.src, this.width,
this.height); |
| 601 | 606 |
| 602 static final Image _emptyImage = new Image(); | 607 static final Image _emptyImage = new Image(); |
| 603 | 608 |
| 604 SkyNodeWrapper get _emptyNode => _emptyImage; | 609 SkyNodeWrapper get _emptyNode => _emptyImage; |
| 605 | 610 |
| 606 final String src; | 611 final String src; |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 848 } | 853 } |
| 849 | 854 |
| 850 void _buildIfDirty() { | 855 void _buildIfDirty() { |
| 851 if (!_dirty || _defunct) | 856 if (!_dirty || _defunct) |
| 852 return; | 857 return; |
| 853 | 858 |
| 854 _trace('$_key rebuilding...'); | 859 _trace('$_key rebuilding...'); |
| 855 _sync(null, _host, _root); | 860 _sync(null, _host, _root); |
| 856 } | 861 } |
| 857 } | 862 } |
| OLD | NEW |