1. 16 Aug, 2019 1 commit
    • Yegor's avatar
      Teach render objects to reuse engine layers (#36402) · 34c69265
      Yegor authored
      Teach Layer and its implementations, RenderObject and its implementations, and PaintingContext to reuse engine layers. The idea is that a concrete RenderObject creates a Layer and holds on to it as long as it needs it (i.e. when it is composited, and the layer type does not change). In return, each Layer object holds on to an EngineLayer and reports it to the engine via addRetained and oldLayer. This allows the Web engine to reuse DOM elements across frames. Without it, each frame drops all previously rendered HTML and regenerates it from scratch.
      34c69265
  2. 09 May, 2019 1 commit
    • Greg Spencer's avatar
      Fix nested listeners so that ancestor listeners can also receive enter/exit/move events. (#32350) · aeccd6a8
      Greg Spencer authored
      This changes Listener to trigger enter/move/exit in all Listeners below the pointer, not just the leaf region (the first region hit). This is because we need to allow listeners to be nested so that, say, a widget that handles changing color on hover, but also is wrapped in a Tooltip (that handles hover) can trigger both actions, not just one.
      
      To that end, I added a findAll to Layer, similar to the existing find method that was previously used. It returns an iterator over annotated layers which match the given data type.
      
      Since the findAll is implemented as returning an Iterable (and is sync*), I re-implemented the find routines as just returning the first result from findAll, since that should be just as efficient, and would then prevent duplication in the implementation.
      aeccd6a8
  3. 10 Apr, 2019 1 commit
  4. 15 Feb, 2019 1 commit
    • Greg Spencer's avatar
      Remove remaining "## Sample code" segments, and fix the snippet generator. (#27793) · 262f12b4
      Greg Spencer authored
      This converts all remaining "## Sample code" segments into snippets, and fixes
      the snippet generator to handle multiple snippets in the same dartdoc block
      properly.
      
      I also generated, compiled, and ran each of the existing application samples,
      and fixed them up to be more useful and/or just run without errors.
      
      This PR fixes these problems with examples:
      
      1. Switching tabs in a snippet now works if there is more than one snippet in
         a single dartdoc block.
      2. Generation of snippet code now works if there is more than one snippet.
      3. Contrast of text and links in the code sample block has been improved to
         recommended levels.
      4. Added five new snippet templates, including a "freeform" template to make
         it possible to show examples that need to change the app instantiation.
      5. Fixed several examples to run properly, a couple by adding the "Scaffold"
         widget to the template, a couple by just fixing their code.
      6. Fixed visual look of some of the samples when they run by placing many
         samples inside of a Scaffold.
      7. In order to make it easier to run locally, changed the sample analyzer to
         remove the contents of the supplied temp directory before running, since
         having files that hang around is problematic (only a problem when running
         locally with the `--temp` argument).
      8. Added a `SampleCheckerException` class, and handle sample checking
         exceptions more gracefully.
      9. Deprecated the old "## Sample code" designation, and added enforcement for
         the deprecation.
      10. Removed unnecessary `new` from templates (although they never appeared in
         the samples thanks to dartfmt, but still).
      
      Fixes #26398
      Fixes #27411
      262f12b4
  5. 07 Feb, 2019 1 commit
  6. 06 Feb, 2019 1 commit
    • Greg Spencer's avatar
      Make a kReleaseMode constant that is public. (#27502) · da27f623
      Greg Spencer authored
      Before this, we had several places where an isReleaseMode was defined, all with the same definition. This just makes it more broadly visible to allow our users to use it, as well as creating debug and profile versions, and adding a device lab test for it.
      
      Since this is a const value, this makes it possible for a developer to easily mark blocks that can be removed at AOT compile time.
      da27f623
  7. 05 Feb, 2019 1 commit
  8. 01 Feb, 2019 1 commit
  9. 29 Jan, 2019 2 commits
    • Greg Spencer's avatar
      Implement hover support for mouse pointers. (#24830) · 1811d574
      Greg Spencer authored
      This implements support for hovering mouse pointers, so that mice connected to Android devices, and ChromeOS devices running Android apps will work properly.
      
      It teaches flutter_test about hover events, which required changing how they are created and used.
      
      Also modifies AnnotatedRegion to allow a region that can be located someplace other than just the origin.
      
      Along with tests for all of the above.
      
      Fixes #5504
      1811d574
    • Michael Goderbauer's avatar
      Remove obsolete ignore: (#27199) · c9d5b129
      Michael Goderbauer authored
      c9d5b129
  10. 23 Oct, 2018 1 commit
  11. 19 Oct, 2018 1 commit
  12. 17 Oct, 2018 1 commit
  13. 16 Oct, 2018 1 commit
  14. 13 Oct, 2018 1 commit
    • Michael Goderbauer's avatar
      Remove all service extensions from release mode (#23038) · 8e2ca93f
      Michael Goderbauer authored
      Service extensions can only be activated in debug or profile mode, their code should never be included in release mode. This PR adds guards around all service extension registration calls that enable Dart's tree shaker to remove the extension's code in release mode, which reduces our binary size:
      
      Android Snapshot (uncompressed): minus 127,384 Bytes (-124.40KB)
      APK (compressed): minus 38,136 Bytes (-37.24KB)
      iOS Snapshot (App.framework, uncompressed): 264,304 Bytes(-258.10KB)
      
      For details: https://docs.google.com/document/d/13JlgvliCn5sWwT2K2SfDwD1NhEfxpJH9DCf22gZZru8/edit
      
      **Benchmark Regressions:** This PR may cause benchmarks to regress because it may change the timing of GC. If you notice a benchmark regression **please note down the exact set of benchmarks that regressed on this PR** and then feel free to revert. I will follow-up with a PR that forces a GC before the effected benchmarks run to get a clean baseline before re-applying this PR.
      8e2ca93f
  15. 05 Oct, 2018 2 commits
  16. 12 Sep, 2018 1 commit
  17. 23 Aug, 2018 1 commit
  18. 07 Aug, 2018 1 commit
  19. 23 Apr, 2018 1 commit
    • Yegor's avatar
      a11y traversal: sort locally; use new sorting algorithm (#16253) · d3540962
      Yegor authored
      New a11y traversal:
      
      - sort direct sibling SemanticsNodes only
      - use new sorting algorithm
      - implement RTL
      - test semantics in traversal order by default
      - add AppBar traversal test
      - breaking: remove nextNodeId/previousNodeId from the framework
      - breaking: remove DebugSemanticsDumpOrder.geometricOrder
      d3540962
  20. 06 Feb, 2018 1 commit
    • Greg Spencer's avatar
      Adds the semantic node traversal API. (#14060) · 14309b93
      Greg Spencer authored
      This adds an API for defining the semantic node traversal order.
      
      It adds a sortOrder argument to the Semantics widget, which is a class that can define a list of sort keys to sort on. The keys are sorted globally so that an order that doesn't have to do with the current widget hierarchy may be defined.
      
      It also adds a shortcut sortKey argument to the Semantics widget that simply sets the sortOrder to just contain that key.
      
      The platform side (flutter/engine#4540) gets an additional member in the SemanticsData object that is an integer describing where in the overall order each semantics node belongs. There is an associated engine-side change that takes this integer and uses it to order widgets for the platform's accessibility services.
      14309b93
  21. 13 Dec, 2017 1 commit
  22. 09 Dec, 2017 1 commit
  23. 07 Dec, 2017 1 commit
    • Ian Hickson's avatar
      Move image logic from services/ to painting/. (#13409) · 44e228eb
      Ian Hickson authored
      This allows the scheduler library to depend on the services library
      and the painting library to depend on the scheduler library without
      the services library having to depend on the scheduler library.
      
      While I was at it I also cleaned up some of the binding logic: the
      licenses logic can now be overridden (and the test library does so),
      and the image cache can now be overridden as well.
      44e228eb
  24. 03 Nov, 2017 1 commit
  25. 02 Oct, 2017 1 commit
    • gspencergoog's avatar
      Add framework support for system text scale factor. (#12180) · 18f0d3ae
      gspencergoog authored
      * Add framework-side support for system text scale factor.
      
      * Rolling engine to e3404b81a53ba3180c7623a6f2190ebb28518f30
        Additional changes rolled in with engine change:
          libtxt: implementation of GetRectsForRange that processes a line at a time - e3404b8
          Provide an entropy source to the Dart engine (#4161) - e1aa867
          libtxt: search for fallback fonts that can match emoji and CJK characters - 8061df1
          Roll skia to e4679fa06a. (#4157) - 267e7a8
          Update buildroot to 53fea9aebbcc39c6522731471a1a45960ee0685e (#4160) - 02ea7ae
          Revert engine Dart roll. (#4158) - 14aab33
          Add support for system text scale factor. (#4124) - b2a7f4b
          Include _http into sky_engine libraries for analyzer (#4154) - b930f10
          libtxt: Remove postprocess_line and improve tracking of X offsets - 86f95f0
          libtxt: remove redundant line_widths (#4152) - 14bf515
          Roll dart to ade37f931e90b0fdb8fe16d6bf6f089545da55b6 (#4151) - 6f1264f
      18f0d3ae
  26. 21 Sep, 2017 1 commit
  27. 14 Sep, 2017 1 commit
  28. 11 Sep, 2017 1 commit
  29. 28 Aug, 2017 1 commit
  30. 04 Aug, 2017 1 commit
  31. 19 Jul, 2017 1 commit
  32. 06 Jun, 2017 1 commit
  33. 02 Jun, 2017 1 commit
    • Ian Hickson's avatar
      Sprinkle some mixin magic incantations (#10442) · 9eae8b83
      Ian Hickson authored
      This prevents some of our mixins from being subclassed.
      
      Also, move mixins to using 'extends' instead of 'implements' for
      future compatibility with Dart changes.
      
      Also, rename a class that had Mixin in the name but was not a mixin.
      9eae8b83
  34. 24 May, 2017 1 commit
  35. 16 May, 2017 1 commit
  36. 12 May, 2017 1 commit
  37. 05 May, 2017 1 commit
  38. 02 May, 2017 1 commit
    • Ian Hickson's avatar
      Flush microtasks after transient callbacks are run. (#9702) · e8c46927
      Ian Hickson authored
      This splits the frame pipeline into two, beginFrame and drawFrame.
      
      As part of making this change I added some debugging hooks that helped
      debug the issues that came up:
      
       * I added debugPrintScheduleFrameStacks which prints a stack whenever
         a frame is actually scheduled, so you can see why frames are being
         scheduled.
      
       * I added some toString output to EditableText and RawKeyboardListener.
      
       * I added a scheduler_tester.dart library for scheduler library tests.
      
       * I changed the test framework to flush microtasks before pumping.
      
       * Some asserts that had the old string literal form were replaced by
         asserts with messages.
      
      I also fixed a few subtle bugs that this uncovered:
      
       * setState() now calls `ensureVisualUpdate`, rather than
         `scheduleFrame`. This means that calling it from an
         AnimationController callback does not actually schedule an extra
         redundant frame as it used to.
      
       * I corrected some documentation.
      e8c46927