1. 10 May, 2016 1 commit
  2. 04 May, 2016 2 commits
    • pq's avatar
      Literals get type annotations. · bcede8df
      pq authored
      As per the recent fix to the `always_specify_types` lint (https://github.com/dart-lang/linter/issues/199), literal maps and lists are now expected to be explicitly typed.
      
      Running that lint on the repo identifies quite a few spots to update.  This focuses on `flutter_driver` and `flutter_sprites` (somewhat arbitrarily) but the changes are fairly representative.
      
      Note there are a number of places where I made a quick judgement on how specific to make the types.  Feedback on those is welcome.  (Especially as we move forward with more.)
      bcede8df
    • Hans Muller's avatar
      Gallery demo start-time performance test (#3655) · a9b965cb
      Hans Muller authored
      *  Gallery demo start-time performance test
      a9b965cb
  3. 03 May, 2016 2 commits
  4. 29 Apr, 2016 1 commit
    • Ian Hickson's avatar
      Refactor the test framework (#3622) · 91dd9699
      Ian Hickson authored
      * Refactor widget test framework
      
      Instead of:
      
      ```dart
        test("Card Collection smoke test", () {
          testWidgets((WidgetTester tester) {
      ```
      
      ...you now say:
      
      ```dart
        testWidgets("Card Collection smoke test", (WidgetTester tester) {
      ```
      
      Instead of:
      
      ```dart
        expect(tester, hasWidget(find.text('hello')));
      ```
      
      ...you now say:
      
      ```dart
        expect(find.text('hello'), findsOneWidget);
      ```
      
      Instead of the previous API (exists, widgets, widget, stateOf,
      elementOf, etc), you now have the following comprehensive API. All these
      are functions that take a Finder, except the all* properties.
      
      * `any()` - true if anything matches, c.f. `Iterable.any`
      * `allWidgets` - all the widgets in the tree
      * `widget()` - the one and only widget that matches the finder
      * `firstWidget()` - the first widget that matches the finder
      * `allElements` - all the elements in the tree
      * `element()` - the one and only element that matches the finder
      * `firstElement()` - the first element that matches the finder
      * `allStates` - all the `State`s in the tree
      * `state()` - the one and only state that matches the finder
      * `firstState()` - the first state that matches the finder
      * `allRenderObjects` - all the render objects in the tree
      * `renderObject()` - the one and only render object that matches the finder
      * `firstRenderObject()` - the first render object that matches the finder
      
      There's also `layers' which returns the list of current layers.
      
      `tap`, `fling`, getCenter, getSize, etc, take Finders, like the APIs
      above, and expect there to only be one matching widget.
      
      The finders are:
      
       * `find.text(String text)`
       * `find.widgetWithText(Type widgetType, String text)`
       * `find.byKey(Key key)`
       * `find.byType(Type type)`
       * `find.byElementType(Type type)`
       * `find.byConfig(Widget config)`
       * `find.byWidgetPredicate(WidgetPredicate predicate)`
       * `find.byElementPredicate(ElementPredicate predicate)`
      
      The matchers (for `expect`) are:
      
       * `findsNothing`
       * `findsWidgets`
       * `findsOneWidget`
       * `findsNWidgets(n)`
       * `isOnStage`
       * `isOffStage`
       * `isInCard`
       * `isNotInCard`
      
      Benchmarks now use benchmarkWidgets instead of testWidgets.
      
      Also, for those of you using mockers, `serviceMocker` now automatically
      handles the binding initialization.
      
      This patch also:
      
      * changes how tests are run so that we can more easily swap the logic
        out for a "real" mode instead of FakeAsync.
      
      * introduces CachingIterable.
      
      * changes how flutter_driver interacts with the widget tree to use the
        aforementioned new API rather than ElementTreeTester, which is gone.
      
      * removes ElementTreeTester.
      
      * changes the semantics of a test for scrollables because we couldn't
        convince ourselves that the old semantics made sense; it only worked
        before because flushing the microtasks after every event was broken.
      
      * fixes the flushing of microtasks after every event.
      
      * Reindent the tests
      
      * Fix review comments
      91dd9699
  5. 28 Apr, 2016 1 commit
  6. 22 Apr, 2016 1 commit
  7. 21 Apr, 2016 2 commits
  8. 20 Apr, 2016 1 commit
  9. 19 Apr, 2016 2 commits
    • Ian Hickson's avatar
      Refactor service extensions (#3397) · 261923e5
      Ian Hickson authored
      Bindings now have a debugRegisterServiceExtensions() method that is
      invoked in debug mode (only). (Once we have a profile mode, there'll be
      a registerProfileServiceExtensions() method that gets called in that
      mode only to register extensions that apply then.)
      
      The BindingBase class provides convenience methods for registering
      service extensions that do the equivalent of:
      
      ```dart
      void extension() { ... }
      bool extension([bool enabled]) { ... }
      double extension([double extension])  { ... }
      Map<String, String> extension([Map<String, String> parameters]) { ... }
      ```
      
      The BindingBase class also itself registers ext.flutter.reassemble,
      which it has call a function on the binding called
      reassembleApplication().
      
      The Scheduler binding now exposes the preexisting
      ext.flutter.timeDilation.
      
      The Renderer binding now exposes the preexisting ext.flutter.debugPaint.
      
      The Renderer binding hooks reassembleApplication to trigger the
      rendering tree to be reprocessed (in particular, to fix up the
      optimisation closures).
      
      All the logic from rendering/debug.dart about service extensions is
      replaced by the above.
      
      I moved basic_types to foundation.
      
      The FlutterWidgets binding hooks reassembleApplication to trigger the
      widget tree to be entirely rebuilt.
      
      Flutter Driver now uses ext.flutter.driver instead of
      ext.flutter_driver, and is hooked using the same binding mechanism.
      Eventually we'll probably move the logic into the Flutter library so
      that you just get it without having to invoke a special method first.
      261923e5
    • Yegor's avatar
      [driver] "waitFor" command in place of broken "exists" (#3373) · e7657b94
      Yegor authored
      * [driver] "waitFor" command in place of broken "exits"
      
      * [driver] wait using frame callback
      e7657b94
  10. 15 Apr, 2016 2 commits
  11. 14 Apr, 2016 2 commits
  12. 13 Apr, 2016 1 commit
  13. 11 Apr, 2016 2 commits
  14. 08 Apr, 2016 1 commit
  15. 07 Apr, 2016 1 commit
  16. 05 Apr, 2016 1 commit
  17. 02 Apr, 2016 1 commit
  18. 01 Apr, 2016 1 commit
  19. 31 Mar, 2016 1 commit
  20. 30 Mar, 2016 2 commits
  21. 29 Mar, 2016 1 commit
    • Yegor Jbanov's avatar
      [driver] fix observatory port # and timeline data extraction · bfa16b2b
      Yegor Jbanov authored
      The way we pick observatory port # has changed and we have broken
      logic that handles port 8181. To fix the buildbot, switch to port
      8182. We can later figure out what we want to do when we clean up
      port handling.
      
      The old VM extention for extracting the timeline data is gone.
      Switch to the new '_getVMTimeline' API.
      bfa16b2b
  22. 18 Mar, 2016 1 commit
  23. 14 Mar, 2016 4 commits
  24. 12 Mar, 2016 3 commits
  25. 11 Mar, 2016 1 commit
    • Ian Hickson's avatar
      Enable ALL THE LINTS · 1b9cd520
      Ian Hickson authored
      Well, all the easy ones, anyway.
      
      For some reason `// ignore:` isn't working for me so I've disabled
      lints that need that. Also disabled those that require a ton of work
      (which I'm doing, but not in this PR, to keep it reviewable).
      
      This adds:
      - avoid_init_to_null
      - library_names
      - package_api_docs
      - package_names
      - package_prefixed_library_names
      - prefer_is_not_empty
      - sort_constructors_first
      - sort_unnamed_constructors_first
      - unnecessary_getters_setters
      1b9cd520
  26. 10 Mar, 2016 1 commit
  27. 03 Mar, 2016 1 commit
    • yjbanov's avatar
      [driver] serialize commands to plain strings · 008785be
      yjbanov authored
      Turns out VM service only accepts flat parameter name/value pairs. It
      only worked this far because vm_service_client (mistakenly) uses JSON
      encoder to encode parameters.
      
      This change separates the Command type hierarchy from that of Result and
      tightens type constraints on Command object parameters.
      008785be