1. 17 Jul, 2023 12 commits
    • Jason Simmons's avatar
      Skip the iteration in Layer._fireCompositionCallbacks if the callbacks map is empty (#130438) · 7937b1d5
      Jason Simmons authored
      This was showing up as a hot spot in some benchmarks and profiles. This
      function is called frequently during frame builds and often has an empty
      map. There may be significant overhead from obtaining the values
      iterator and cloning it into a list.
      
      See https://github.com/flutter/flutter/issues/130339
      7937b1d5
    • engine-flutter-autoroll's avatar
      Roll Flutter Engine from b5282b089513 to 09fe990ebfcf (1 revision) (#130729) · 1bfe2289
      engine-flutter-autoroll authored
      https://github.com/flutter/engine/compare/b5282b089513...09fe990ebfcf
      
      2023-07-17 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from Buo0mx6dVLK5kvgQ3... to WZt3P7Fm3_GUvAaDv... (flutter/engine#43734)
      
      Also rolling transitive DEPS:
        fuchsia/sdk/core/linux-amd64 from Buo0mx6dVLK5 to WZt3P7Fm3_GU
      
      If this roll has caused a breakage, revert this CL and stop the roller
      using the controls here:
      https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
      Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human
      is aware of the problem.
      
      To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
      
      To report a problem with the AutoRoller itself, please file a bug:
      https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
      
      Documentation for the AutoRoller is here:
      https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
      1bfe2289
    • engine-flutter-autoroll's avatar
      Roll Flutter Engine from e4cae43c9c7a to b5282b089513 (1 revision) (#130723) · 083d18e8
      engine-flutter-autoroll authored
      https://github.com/flutter/engine/compare/e4cae43c9c7a...b5282b089513
      
      2023-07-16 skia-flutter-autoroll@skia.org Roll Skia from ee4369879cc0 to 288c98d7ef0b (1 revision) (flutter/engine#43733)
      
      If this roll has caused a breakage, revert this CL and stop the roller
      using the controls here:
      https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
      Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human
      is aware of the problem.
      
      To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
      
      To report a problem with the AutoRoller itself, please file a bug:
      https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
      
      Documentation for the AutoRoller is here:
      https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
      083d18e8
    • Michael Goderbauer's avatar
      Stand-alone widget tree with multiple render trees to enable multi-view rendering (#125003) · 6f09064e
      Michael Goderbauer authored
      This change enables Flutter to generate multiple Scenes to be rendered into separate FlutterViews from a single widget tree. Each Scene is described by a separate render tree, which are all associated with the single widget tree.
      
      This PR implements the framework-side mechanisms to describe the content to be rendered into multiple views. Separate engine-side changes are necessary to provide these views to the framework and to draw the framework-generated Scene into them.
      
      ## Summary of changes
      
      The details of this change are described in [flutter.dev/go/multiple-views](https://flutter.dev/go/multiple-views). Below is a high-level summary organized by layers.
      
      ### Rendering layer changes
      
      * The `RendererBinding` no longer owns a single `renderView`. In fact, it doesn't OWN any `RenderView`s at all anymore. Instead, it offers an API (`addRenderView`/`removeRenderView`) to add and remove `RenderView`s that then will be MANAGED by the binding. The `RenderView` itself is now owned by a higher-level abstraction (e.g. the `RawView` Element of the widgets layer, see below), who is also in charge of adding it to the binding. When added, the binding will interact with the `RenderView` to produce a frame (e.g. by calling `compositeFrame` on it) and to perform hit tests for incoming pointer events. Multiple `RenderView`s can be added to the binding (typically one per `FlutterView`) to produce multiple Scenes.
      * Instead of owning a single `pipelineOwner`, the `RendererBinding` now owns the root of the `PipelineOwner` tree (exposed as `rootPipelineOwner` on the binding). Each `PipelineOwner` in that tree (except for the root) typically manages its own render tree typically rooted in one of the `RenderView`s mentioned in the previous bullet. During frame production, the binding will instruct each `PipelineOwner` of that tree to flush layout, paint, semantics etc. A higher-level abstraction (e.g. the widgets layer, see below) is in charge of adding `PipelineOwner`s to this tree.
      * Backwards compatibility: The old `renderView` and `pipelineOwner` properties of the `RendererBinding` are retained, but marked as deprecated. Care has been taken to keep their original behavior for the deprecation period, i.e. if you just call `runApp`, the render tree bootstrapped by this call is rooted in the deprecated `RendererBinding.renderView` and managed by the deprecated `RendererBinding.pipelineOwner`.
      
      ### Widgets layer changes
      
      * The `WidgetsBinding` no longer attaches the widget tree to an existing render tree. Instead, it bootstraps a stand-alone widget tree that is not backed by a render tree. For this, `RenderObjectToWidgetAdapter` has been replaced by `RootWidget`.
      * Multiple render trees can be bootstrapped and attached to the widget tree with the help of the `View` widget, which internally is backed by a `RawView` widget. Configured with a `FlutterView` to render into, the `RawView` creates a new `PipelineOwner` and a new `RenderView` for the new render tree. It adds the new `RenderView` to the `RendererBinding` and its `PipelineOwner` to the pipeline owner tree.
      * The `View` widget can only appear in certain well-defined locations in the widget tree since it bootstraps a new render tree and does not insert a `RenderObject` into an ancestor. However, almost all Elements expect that their children insert `RenderObject`s, otherwise they will not function properly. To produce a good error message when the `View` widget is used in an illegal location, the `debugMustInsertRenderObjectIntoSlot` method has been added to Element, where a child can ask whether a given slot must insert a RenderObject into its ancestor or not. In practice, the `View` widget can be used as a child of the `RootWidget`, inside the `view` slot of the `ViewAnchor` (see below) and inside a `ViewCollection` (see below). In those locations, the `View` widget may be wrapped in other non-RenderObjectWidgets (e.g. InheritedWidgets).
      * The new `ViewAnchor` can be used to create a side-view inside a parent `View`. The `child` of the `ViewAnchor` widget renders into the parent `View` as usual, but the `view` slot can take on another `View` widget, which has access to all inherited widgets above the `ViewAnchor`. Metaphorically speaking, the view is anchored to the location of the `ViewAnchor` in the widget tree.
      * The new `ViewCollection` widget allows for multiple sibling views as it takes a list of `View`s as children. It can be used in all the places that accept a `View` widget.
      
      ## Google3
      
      As of July 5, 2023 this change passed a TAP global presubmit (TGP) in google3: tap/OCL:544707016:BASE:545809771:1688597935864:e43dd651
      
      ## Note to reviewers
      
      This change is big (sorry). I suggest focusing the initial review on the changes inside of `packages/flutter` first. The majority of the changes describe above are implemented in (listed in suggested review order):
      
      * `rendering/binding.dart`
      * `widgets/binding.dart`
      * `widgets/view.dart`
      * `widgets/framework.dart`
      
      All other changes included in the PR are basically the fallout of what's implemented in those files. Also note that a lot of the lines added in this PR are documentation and tests.
      
      I am also very happy to walk reviewers through the code in person or via video call, if that is helpful.
      
      I appreciate any feedback.
      
      ## Feedback to address before submitting ("TODO")
      6f09064e
    • Reid Baker's avatar
    • engine-flutter-autoroll's avatar
      Roll Packages from 369ee7e1a1cb to 6889cca8ba78 (5 revisions) (#130721) · 6cbc11d6
      engine-flutter-autoroll authored
      https://github.com/flutter/packages/compare/369ee7e1a1cb...6889cca8ba78
      
      2023-07-17 49699333+dependabot[bot]@users.noreply.github.com Bump github/codeql-action from 2.20.3 to 2.20.4 (flutter/packages#4490)
      2023-07-15 stuartmorgan@google.com [ci] Switch Android unit tests to LUCI (flutter/packages#4406)
      2023-07-15 stuartmorgan@google.com [ci] Introduce LUCI versions of Linux desktop platform tests (flutter/packages#4223)
      2023-07-14 43054281+camsim99@users.noreply.github.com [camerax] Marks all wrapped classes as immutable (flutter/packages#4451)
      2023-07-14 47866232+chunhtai@users.noreply.github.com [go_router] Bumps example go_router version and migrate example code (flutter/packages#4469)
      
      If this roll has caused a breakage, revert this CL and stop the roller
      using the controls here:
      https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
      Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human
      is aware of the problem.
      
      To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
      
      To report a problem with the AutoRoller itself, please file a bug:
      https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
      
      Documentation for the AutoRoller is here:
      https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
      6cbc11d6
    • Taha Tesser's avatar
    • engine-flutter-autoroll's avatar
      Roll Flutter Engine from 683087731feb to e4cae43c9c7a (9 revisions) (#130716) · 8b2d4e70
      engine-flutter-autoroll authored
      https://github.com/flutter/engine/compare/683087731feb...e4cae43c9c7a
      
      2023-07-16 skia-flutter-autoroll@skia.org Roll Fuchsia Mac SDK from 4pmlR2uz3SrLRNNSG... to VYjne_BEm9inQ5fnq... (flutter/engine#43732)
      2023-07-16 skia-flutter-autoroll@skia.org Roll Dart SDK from d34f04f4a152 to 827259dfffb9 (1 revision) (flutter/engine#43731)
      2023-07-16 skia-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from rmzZN2ZAgpbjAFi5_... to Buo0mx6dVLK5kvgQ3... (flutter/engine#43730)
      2023-07-16 chinmaygarde@google.com [Impeller] Fix pipeline stats traced to the timeline. (flutter/engine#43729)
      2023-07-15 jonahwilliams@google.com [Impeller] fix some OpenGL Linux desktop issues. (flutter/engine#43727)
      2023-07-15 skia-flutter-autoroll@skia.org Roll Skia from 0768501cd267 to ee4369879cc0 (1 revision) (flutter/engine#43728)
      2023-07-15 skia-flutter-autoroll@skia.org Roll Skia from 6fb535aede4e to 0768501cd267 (3 revisions) (flutter/engine#43726)
      2023-07-15 skia-flutter-autoroll@skia.org Roll Dart SDK from 0bd185c282d2 to d34f04f4a152 (1 revision) (flutter/engine#43724)
      2023-07-15 skia-flutter-autoroll@skia.org Roll Fuchsia Mac SDK from oeYLDNShuD-FTgGwU... to 4pmlR2uz3SrLRNNSG... (flutter/engine#43723)
      
      Also rolling transitive DEPS:
        fuchsia/sdk/core/linux-amd64 from rmzZN2ZAgpbj to Buo0mx6dVLK5
        fuchsia/sdk/core/mac-amd64 from oeYLDNShuD-F to VYjne_BEm9in
      
      If this roll has caused a breakage, revert this CL and stop the roller
      using the controls here:
      https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
      Please CC rmistry@google.com,zra@google.com on the revert to ensure that a human
      is aware of the problem.
      
      To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
      
      To report a problem with the AutoRoller itself, please file a bug:
      https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
      
      Documentation for the AutoRoller is here:
      https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
      8b2d4e70
    • Pavel Mazhnik's avatar
      [flutter_tools] Support coverage collection for dependencies (#129513) · 3a1190a5
      Pavel Mazhnik authored
      PR provides a new option to the `test` command to include coverage info of specified packages.  
      It helps collecting coverage info in test setups where test code lives in separate packages or for multi-package projects.
      At present, only current package is included to the final report.
      
      Usage:
      
      Consider an app with two packages: `app`, `common`.
      Some of the tests in `app` use (indirectly) code that is located in `common`. When running with `--coverage` flag, that code is not included in the coverage report by default. To include `common` package in report, we can run:
      
      ```sh
      flutter test --coverage --coverage-package app --coverage-package common
      ```
      
      Note that `--coverage-package` accepts regular expression. 
      
      Fixes https://github.com/flutter/flutter/issues/79661
      Fixes https://github.com/flutter/flutter/issues/101486
      Fixes https://github.com/flutter/flutter/issues/93619
      3a1190a5
    • Taha Tesser's avatar
      Fix `DatePicker` uses incorrect overlay color from `DatePickerTheme` and add... · a6187d9a
      Taha Tesser authored
      Fix `DatePicker` uses incorrect overlay color from `DatePickerTheme` and add missing tests (#130584)
      
      fixes [YearPickerState in calendar_date_picker is using dayOverlayColor instead of yearOverlayColor](https://github.com/flutter/flutter/issues/130051)
      
      ### Description
      
      - Fix year selection uses incorrect overlay color from `DatePickerTheme`
      - Update defaults tests to check for overlay color for different modes
      - Add tests to check overlay color is resolved.
      
      ### Code sample
      
      <details> 
      <summary>expand to view the code sample</summary> 
      
      ```dart
      import 'package:flutter/material.dart';
      
      void main() => runApp(const MyApp());
      
      class MyApp extends StatelessWidget {
        const MyApp({super.key});
      
        @override
        Widget build(BuildContext context) {
          return MaterialApp(
            theme: ThemeData(
              datePickerTheme: const DatePickerThemeData(
                yearOverlayColor: MaterialStatePropertyAll<Color>(Colors.green),
                dayOverlayColor: MaterialStatePropertyAll<Color>(Colors.amber),
              ),
              useMaterial3: true,
            ),
            home: Directionality(
              textDirection: TextDirection.ltr,
              child: Material(
                child: Center(
                  child: DatePickerDialog(
                    initialDate: DateTime(2023, DateTime.january, 25),
                    firstDate: DateTime(2022),
                    lastDate: DateTime(2024, DateTime.december, 31),
                    currentDate: DateTime(2023, DateTime.january, 24),
                  ),
                ),
              ),
            ),
          );
        }
      }
      
      ``` 
      	
      </details>
      
      ```dart
                yearOverlayColor: MaterialStatePropertyAll<Color>(Colors.green),
                dayOverlayColor: MaterialStatePropertyAll<Color>(Colors.red),
      ```
      
      ### Before
      ![Screenshot 2023-07-14 at 18 39 51](https://github.com/flutter/flutter/assets/48603081/52ec5096-bad6-4753-9e9a-15b6d5ce767e)
      
      ### After
      ![Screenshot 2023-07-14 at 18 38 32](https://github.com/flutter/flutter/assets/48603081/a51aeca8-a5c2-42b4-8c05-b55f9955e860)
      a6187d9a
    • Qun Cheng's avatar
      Update `DropdownMenu`, `SnackBarTheme` and `Stepper` tests for M2/M3 (#130464) · f4da0962
      Qun Cheng authored
      Updated unit tests for `DropdownMenu`, `SnackBarTheme` and `Stepper` to have M2 and M3 versions.
      
      More info in #127064
      f4da0962
    • Ian Hickson's avatar
  2. 16 Jul, 2023 1 commit
  3. 15 Jul, 2023 5 commits
  4. 14 Jul, 2023 22 commits