| Index: samples-dev/swarm/swarm_ui_lib/layout/GridLayout.dart
 | 
| diff --git a/samples-dev/swarm/swarm_ui_lib/layout/GridLayout.dart b/samples-dev/swarm/swarm_ui_lib/layout/GridLayout.dart
 | 
| index ac3ba5b429ef476cd808cc71f118a8f7fa9dfd8f..6b8638d449761ae10d3fb45450e2defadae6d371 100644
 | 
| --- a/samples-dev/swarm/swarm_ui_lib/layout/GridLayout.dart
 | 
| +++ b/samples-dev/swarm/swarm_ui_lib/layout/GridLayout.dart
 | 
| @@ -43,7 +43,6 @@ part of layout;
 | 
|  //  - Optimize for the case of no content sized tracks
 | 
|  //  - Optimize for the "incremental update" cases
 | 
|  class GridLayout extends ViewLayout {
 | 
| -
 | 
|    /** Configuration parameters defined in CSS. */
 | 
|    final GridTrackList rows;
 | 
|    final GridTrackList columns;
 | 
| @@ -72,22 +71,18 @@ class GridLayout extends ViewLayout {
 | 
|    Dimension _dimension;
 | 
|  
 | 
|    GridLayout(Positionable view)
 | 
| -    : super(view),
 | 
| -      rows = _GridTrackParser.parse(view.customStyle['grid-rows']),
 | 
| -      columns = _GridTrackParser.parse(view.customStyle['grid-columns']),
 | 
| -      template = _GridTemplateParser.parse(view.customStyle['grid-template']),
 | 
| -
 | 
| -      rowSizing = _GridTrackParser.parseTrackSizing(
 | 
| -          view.customStyle['grid-row-sizing']),
 | 
| -
 | 
| -      columnSizing = _GridTrackParser.parseTrackSizing(
 | 
| -          view.customStyle['grid-column-sizing']) {
 | 
| -
 | 
| +      : super(view),
 | 
| +        rows = _GridTrackParser.parse(view.customStyle['grid-rows']),
 | 
| +        columns = _GridTrackParser.parse(view.customStyle['grid-columns']),
 | 
| +        template = _GridTemplateParser.parse(view.customStyle['grid-template']),
 | 
| +        rowSizing = _GridTrackParser
 | 
| +            .parseTrackSizing(view.customStyle['grid-row-sizing']),
 | 
| +        columnSizing = _GridTrackParser
 | 
| +            .parseTrackSizing(view.customStyle['grid-column-sizing']) {
 | 
|      _rowTracks = rows != null ? rows.tracks : new List<GridTrack>();
 | 
|      _columnTracks = columns != null ? columns.tracks : new List<GridTrack>();
 | 
|    }
 | 
|  
 | 
| -
 | 
|    int get currentWidth => _gridWidth;
 | 
|    int get currentHeight => _gridHeight;
 | 
|  
 | 
| @@ -152,11 +147,8 @@ class GridLayout extends ViewLayout {
 | 
|     */
 | 
|    // Note: spec does not correctly doc all the parameters to this function.
 | 
|    void _computeUsedBreadthOfTracks(List<GridTrack> tracks) {
 | 
| -
 | 
|      // TODO(jmesserly): as a performance optimization we could cache this
 | 
| -    final items = view.childViews
 | 
| -        .map((view_) => view_.layout)
 | 
| -        .toList();
 | 
| +    final items = view.childViews.map((view_) => view_.layout).toList();
 | 
|      CollectionUtils.sortBy(items, (item) => _getSpanCount(item));
 | 
|  
 | 
|      // 1. Initialize per Grid Track variables
 | 
| @@ -192,8 +184,8 @@ class GridLayout extends ViewLayout {
 | 
|      //    maxBreadth value until RemainingSpace is exhausted.
 | 
|      // Note: it's not spec'd what to pass as the accumulator, but usedBreadth
 | 
|      // seems right.
 | 
| -    _distributeSpaceToTracks(tracks, _getRemainingSpace(tracks),
 | 
| -        USED_BREADTH, false);
 | 
| +    _distributeSpaceToTracks(
 | 
| +        tracks, _getRemainingSpace(tracks), USED_BREADTH, false);
 | 
|  
 | 
|      // Spec wording is confusing about which direction this assignment happens,
 | 
|      // but this is the way that makes sense.
 | 
| @@ -204,8 +196,8 @@ class GridLayout extends ViewLayout {
 | 
|      // 6. Grow all Grid Tracks having a fraction as their maxSizing
 | 
|      final tempBreadth = _calcNormalizedFractionBreadth(tracks);
 | 
|      for (final t in tracks) {
 | 
| -      t.usedBreadth = Math.max(t.usedBreadth,
 | 
| -          tempBreadth * t.maxSizing.fractionValue);
 | 
| +      t.usedBreadth =
 | 
| +          Math.max(t.usedBreadth, tempBreadth * t.maxSizing.fractionValue);
 | 
|      }
 | 
|  
 | 
|      _computeTrackPositions(tracks);
 | 
| @@ -255,7 +247,6 @@ class GridLayout extends ViewLayout {
 | 
|     * freeSpace less the sum of the current UsedBreadths.
 | 
|     */
 | 
|    num _calcNormalizedFractionBreadth(List<GridTrack> tracks) {
 | 
| -
 | 
|      final fractionTracks = tracks.where((t) => t.maxSizing.isFraction).toList();
 | 
|  
 | 
|      // Note: the spec has various bugs in this function, such as mismatched
 | 
| @@ -295,11 +286,10 @@ class GridLayout extends ViewLayout {
 | 
|     */
 | 
|    void _distributeSpaceToTracks(List<GridTrack> tracks, num freeSpace,
 | 
|        _BreadthAccumulator breadth, bool ignoreMaxBreadth) {
 | 
| -
 | 
|      // TODO(jmesserly): in some cases it would be safe to sort the passed in
 | 
|      // list in place. Not always though.
 | 
| -    tracks = CollectionUtils.orderBy(tracks,
 | 
| -        (t) => t.maxBreadth - breadth.getSize(t));
 | 
| +    tracks = CollectionUtils.orderBy(
 | 
| +        tracks, (t) => t.maxBreadth - breadth.getSize(t));
 | 
|  
 | 
|      // Give each Grid Track an equal share of the space, but without exceeding
 | 
|      // their maxBreadth values. Because there are different MaxBreadths
 | 
| @@ -341,9 +331,10 @@ class GridLayout extends ViewLayout {
 | 
|     */
 | 
|    void _distributeSpaceBySpanCount(List<ViewLayout> items,
 | 
|        ContentSizeMode sizeMode, _BreadthAccumulator breadth) {
 | 
| -
 | 
| -    items = items.where((item) =>
 | 
| -        _hasContentSizedTracks(_getTracks(item), sizeMode, breadth)).toList();
 | 
| +    items = items
 | 
| +        .where((item) =>
 | 
| +            _hasContentSizedTracks(_getTracks(item), sizeMode, breadth))
 | 
| +        .toList();
 | 
|  
 | 
|      var tracks = [];
 | 
|  
 | 
| @@ -368,8 +359,7 @@ class GridLayout extends ViewLayout {
 | 
|  
 | 
|        if (spanCountFinished) {
 | 
|          for (final t in tracks) {
 | 
| -          breadth.setSize(t,
 | 
| -            Math.max(breadth.getSize(t), t.updatedBreadth));
 | 
| +          breadth.setSize(t, Math.max(breadth.getSize(t), t.updatedBreadth));
 | 
|          }
 | 
|          tracks = [];
 | 
|        }
 | 
| @@ -382,12 +372,10 @@ class GridLayout extends ViewLayout {
 | 
|     */
 | 
|    static bool _hasContentSizedTracks(Iterable<GridTrack> tracks,
 | 
|        ContentSizeMode sizeMode, _BreadthAccumulator breadth) {
 | 
| -
 | 
|      for (final t in tracks) {
 | 
|        final fn = breadth.getSizingFunction(t);
 | 
|        if (sizeMode == ContentSizeMode.MAX && fn.isMaxContentSized ||
 | 
|            sizeMode == ContentSizeMode.MIN && fn.isContentSized) {
 | 
| -
 | 
|          // Make sure we don't cross a fractional track
 | 
|          return tracks.length == 1 || !tracks.any((t_) => t_.isFractional);
 | 
|        }
 | 
| @@ -396,8 +384,8 @@ class GridLayout extends ViewLayout {
 | 
|    }
 | 
|  
 | 
|    /** Ensures that the numbered track exists. */
 | 
| -  void _ensureTrack(List<GridTrack> tracks, TrackSizing sizing,
 | 
| -      int start, int span) {
 | 
| +  void _ensureTrack(
 | 
| +      List<GridTrack> tracks, TrackSizing sizing, int start, int span) {
 | 
|      // Start is 1-based. Make it 0-based.
 | 
|      start -= 1;
 | 
|  
 | 
| @@ -515,7 +503,8 @@ class GridLayout extends ViewLayout {
 | 
|  
 | 
|    int _getSpanCount(ViewLayout item) {
 | 
|      GridLayoutParams childLayout = item.layoutParams;
 | 
| -    return (_dimension == Dimension.WIDTH ?
 | 
| -        childLayout.columnSpan : childLayout.rowSpan);
 | 
| +    return (_dimension == Dimension.WIDTH
 | 
| +        ? childLayout.columnSpan
 | 
| +        : childLayout.rowSpan);
 | 
|    }
 | 
|  }
 | 
| 
 |