Roll engine to 33b88173f3820690169348859bbdc29133179e0b (#14832)

libtxt is now the default text renderer
diff --git a/bin/internal/engine.version b/bin/internal/engine.version
index 2023874..680c519 100644
--- a/bin/internal/engine.version
+++ b/bin/internal/engine.version
@@ -1 +1 @@
-ead227f118077d1f2b57842a32abaf105b573b8a
+33b88173f3820690169348859bbdc29133179e0b
diff --git a/packages/flutter/test/material/text_field_test.dart b/packages/flutter/test/material/text_field_test.dart
index f4cb1bb..8a2fb5b 100644
--- a/packages/flutter/test/material/text_field_test.dart
+++ b/packages/flutter/test/material/text_field_test.dart
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:io' show Platform;
 import 'dart:ui' show SemanticsFlag;
 
 import 'package:flutter/material.dart';
@@ -735,7 +736,9 @@
     expect(newFirstPos.dy, firstPos.dy);
     expect(inputBox.hitTest(new HitTestResult(), position: inputBox.globalToLocal(newFirstPos)), isTrue);
     expect(inputBox.hitTest(new HitTestResult(), position: inputBox.globalToLocal(newFourthPos)), isFalse);
-  });
+  },
+  // This test does not run as expected in the MacOS environment on Travis
+  skip: runningOnTravis && Platform.isMacOS);
 
   testWidgets('TextField smoke test', (WidgetTester tester) async {
     String textFieldValue;
@@ -1746,8 +1749,8 @@
     //  ---------   rowBottomY
 
     final double rowBottomY = tester.getBottomLeft(find.byType(Row)).dy;
-    expect(tester.getBottomLeft(find.byKey(keyA)).dy, rowBottomY - 4.0);
-    expect(tester.getBottomLeft(find.text('abc')).dy, rowBottomY - 2.0);
+    expect(tester.getBottomLeft(find.byKey(keyA)).dy, closeTo(rowBottomY - 4.0, 0.001));
+    expect(tester.getBottomLeft(find.text('abc')).dy, closeTo(rowBottomY - 2.0, 0.001));
     expect(tester.getBottomLeft(find.byKey(keyB)).dy, rowBottomY);
   });
 
diff --git a/packages/flutter/test/painting/text_painter_rtl_test.dart b/packages/flutter/test/painting/text_painter_rtl_test.dart
index 09ed756..666a6bc 100644
--- a/packages/flutter/test/painting/text_painter_rtl_test.dart
+++ b/packages/flutter/test/painting/text_painter_rtl_test.dart
@@ -319,7 +319,9 @@
         const TextBox.fromLTRBD(0.0, 10.0, 10.0, 20.0, TextDirection.rtl), // Alef
       ],
     );
-  }, skip: Platform.isWindows); // Ahem-based tests don't yet quite work on Windows
+  },
+  // Ahem-based tests don't yet quite work on Windows or the MacOS environment in Travis
+  skip: Platform.isWindows || (runningOnTravis && Platform.isMacOS));
 
   test('TextPainter - line wrap mid-word', () {
     final TextPainter painter = new TextPainter()
diff --git a/packages/flutter/test/rendering/paragraph_test.dart b/packages/flutter/test/rendering/paragraph_test.dart
index 46a9863..c542c21 100644
--- a/packages/flutter/test/rendering/paragraph_test.dart
+++ b/packages/flutter/test/rendering/paragraph_test.dart
@@ -69,7 +69,9 @@
 
     expect(boxes.any((ui.TextBox box) => box.left == 250 && box.top == 0), isTrue);
     expect(boxes.any((ui.TextBox box) => box.right == 100 && box.top == 10), isTrue);
-  }, skip: Platform.isWindows); // Ahem-based tests don't yet quite work on Windows
+  },
+  // Ahem-based tests don't yet quite work on Windows or the MacOS environment in Travis
+  skip: Platform.isWindows || (runningOnTravis && Platform.isMacOS));
 
   test('getWordBoundary control test', () {
     final RenderParagraph paragraph = new RenderParagraph(
diff --git a/packages/flutter/test/widgets/baseline_test.dart b/packages/flutter/test/widgets/baseline_test.dart
index 3dfdbb3..681600a 100644
--- a/packages/flutter/test/widgets/baseline_test.dart
+++ b/packages/flutter/test/widgets/baseline_test.dart
@@ -38,6 +38,7 @@
       ),
     );
     expect(tester.renderObject<RenderBox>(find.text('X')).size, const Size(100.0, 100.0));
-    expect(tester.renderObject<RenderBox>(find.byType(Baseline)).size, const Size(100.0, 200.0));
+    expect(tester.renderObject<RenderBox>(find.byType(Baseline)).size,
+           within<Size>(from: const Size(100.0, 200.0), distance: 0.001));
   });
 }
diff --git a/packages/flutter/test/widgets/wrap_test.dart b/packages/flutter/test/widgets/wrap_test.dart
index 21445c0..d157c32 100644
--- a/packages/flutter/test/widgets/wrap_test.dart
+++ b/packages/flutter/test/widgets/wrap_test.dart
@@ -825,6 +825,7 @@
       ),
     );
     expect(tester.renderObject<RenderBox>(find.text('X')).size, const Size(100.0, 100.0));
-    expect(tester.renderObject<RenderBox>(find.byType(Baseline)).size, const Size(100.0, 200.0));
+    expect(tester.renderObject<RenderBox>(find.byType(Baseline)).size,
+           within<Size>(from: const Size(100.0, 200.0), distance: 0.001));
   });
 }
diff --git a/packages/flutter_test/lib/flutter_test.dart b/packages/flutter_test/lib/flutter_test.dart
index e94f911..02f5370 100644
--- a/packages/flutter_test/lib/flutter_test.dart
+++ b/packages/flutter_test/lib/flutter_test.dart
@@ -13,6 +13,7 @@
 export 'src/finders.dart';
 export 'src/matchers.dart';
 export 'src/nonconst.dart';
+export 'src/platform.dart';
 export 'src/stack_manipulation.dart';
 export 'src/test_async_utils.dart';
 export 'src/test_pointer.dart';
diff --git a/packages/flutter_test/lib/src/matchers.dart b/packages/flutter_test/lib/src/matchers.dart
index df411d0..b824ca3 100644
--- a/packages/flutter_test/lib/src/matchers.dart
+++ b/packages/flutter_test/lib/src/matchers.dart
@@ -622,6 +622,7 @@
   int: _intDistance,
   double: _doubleDistance,
   Rect: _rectDistance,
+  Size: _sizeDistance,
 };
 
 int _intDistance(int a, int b) => (b - a).abs();
@@ -642,6 +643,11 @@
   return delta;
 }
 
+double _sizeDistance(Size a, Size b) {
+  final Offset delta = b - a;
+  return math.sqrt(delta.dx * delta.dx + delta.dy * delta.dy);
+}
+
 /// Asserts that two values are within a certain distance from each other.
 ///
 /// The distance is computed by a [DistanceFunction].
diff --git a/packages/flutter_test/lib/src/platform.dart b/packages/flutter_test/lib/src/platform.dart
new file mode 100644
index 0000000..e6b52ec
--- /dev/null
+++ b/packages/flutter_test/lib/src/platform.dart
@@ -0,0 +1,8 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'dart:io';
+
+/// Whether the test is running in a Travis CI environment.
+bool get runningOnTravis => Platform.environment['TRAVIS'] == 'true';