1. 17 Jul, 2023 11 commits
    • 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 23 commits