Makes Objective-C a supported language for macOS in Pigeon, and adds integration tests for it.
Also adjusts CI to only run the macOS version of the integration tests, as is already the case for Swift, since there's less complexity in running macOS integration tests than Obj-C integration tests, and the tests are identical. (As with Swift, we can easily revisit that if we ever find that we miss a bug due to this.)
Fixes https://github.com/flutter/flutter/issues/124724
The instructions for `format` failures still referred to using `activate`, which is no longer how tools are invoked. Replace the specific instructions with a link to the relevant README section to make them evergreen.
Bumps androidx.activity:activity from 1.7.1 to 1.7.2.
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [org.jetbrains.kotlin:kotlin-bom](https://github.com/JetBrains/kotlin) from 1.8.21 to 1.8.22.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/JetBrains/kotlin/releases">org.jetbrains.kotlin:kotlin-bom's releases</a>.</em></p>
<blockquote>
<h2>Kotlin 1.8.22</h2>
<h2>Changelog</h2>
<h3>Tools. Gradle</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58280"><code>KT-58280</code></a> org.jetbrains.kotlin.jvm Gradle plugin contributes build directories to the test compile classpath</li>
</ul>
<h2>Checksums</h2>
<table>
<thead>
<tr>
<th>File</th>
<th>Sha256</th>
</tr>
</thead>
<tbody>
<tr>
<td>kotlin-compiler-1.8.22.zip</td>
<td>91f50fe25c9edfb1e79ae1fe2ede85fa4728f7f4b0587644a4eee40252cdfaa6</td>
</tr>
<tr>
<td>kotlin-native-linux-x86_64-1.8.22.tar.gz</td>
<td>a1fb41fc010b347d5d9a5449ebb48ad200c59ec2a9121b01db5165db6697e58b</td>
</tr>
<tr>
<td>kotlin-native-macos-x86_64-1.8.22.tar.gz</td>
<td>0d6e6b12569a4b8ff2f301f827192dd715a29962cc01eed05557aa8e6eb7c20d</td>
</tr>
<tr>
<td>kotlin-native-macos-aarch64-1.8.22.tar.gz</td>
<td>29805af3220eab3c163ac54f02a6097436d4ddfa83eca7815eb053517093e417</td>
</tr>
<tr>
<td>kotlin-native-windows-x86_64-1.8.22.zip</td>
<td>91b04aa9f3dc3d5968c75d8e7f163e542458867915777e995162864cc805b2e5</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/JetBrains/kotlin/blob/v1.8.22/ChangeLog.md">org.jetbrains.kotlin:kotlin-bom's changelog</a>.</em></p>
<blockquote>
<h2>1.8.22</h2>
<h3>Tools. Gradle</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58280"><code>KT-58280</code></a> org.jetbrains.kotlin.jvm Gradle plugin contributes build directories to the test compile classpath</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="fe0156151d"><code>fe01561</code></a> Add changelog for 1.8.22</li>
<li><a href="918a74f88a"><code>918a74f</code></a> [Gradle] KotlinCompilationAssociator: Restore 1.8.10 behaviour for KotlinWith...</li>
<li><a href="90a9bf9dbe"><code>90a9bf9</code></a> [Gradle] Implement KT58280JvmWithJavaTestCompileClasspath to cover KT-58280</li>
<li><a href="0043ae4390"><code>0043ae4</code></a> Update Dokka to 1.8.20-dev-213</li>
<li><a href="0389c35262"><code>0389c35</code></a> docs build: allow to specify custom dokka repository</li>
<li><a href="d57f33517b"><code>d57f335</code></a> docs build: move parameter initialization to the parent project</li>
<li><a href="596ff23d43"><code>596ff23</code></a> docs: cleanup remaining previous version specializations</li>
<li><a href="2da94ed855"><code>2da94ed</code></a> Fix missing native-wasm source set in legacy docs build</li>
<li><a href="51d55cdae0"><code>51d55cd</code></a> docs: specialize build for latest version</li>
<li><a href="5e1e4ec8cd"><code>5e1e4ec</code></a> Render kotlin-reflect library documentation in a separate module</li>
<li>Additional commits viewable in <a href="https://github.com/JetBrains/kotlin/compare/v1.8.21...v1.8.22">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Add LUCI versions of the analyze, pathified analyze, and downgraded analayze tasks. Does not include legacy analyze (N-1 and N-2 stable Flutter versions) since there are open questions about how to structure those in LUCI.
Part of https://github.com/flutter/flutter/issues/114373
Bumps [org.jetbrains.kotlin:kotlin-bom](https://github.com/JetBrains/kotlin) from 1.8.21 to 1.8.22.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/JetBrains/kotlin/releases">org.jetbrains.kotlin:kotlin-bom's releases</a>.</em></p>
<blockquote>
<h2>Kotlin 1.8.22</h2>
<h2>Changelog</h2>
<h3>Tools. Gradle</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58280"><code>KT-58280</code></a> org.jetbrains.kotlin.jvm Gradle plugin contributes build directories to the test compile classpath</li>
</ul>
<h2>Checksums</h2>
<table>
<thead>
<tr>
<th>File</th>
<th>Sha256</th>
</tr>
</thead>
<tbody>
<tr>
<td>kotlin-compiler-1.8.22.zip</td>
<td>91f50fe25c9edfb1e79ae1fe2ede85fa4728f7f4b0587644a4eee40252cdfaa6</td>
</tr>
<tr>
<td>kotlin-native-linux-x86_64-1.8.22.tar.gz</td>
<td>a1fb41fc010b347d5d9a5449ebb48ad200c59ec2a9121b01db5165db6697e58b</td>
</tr>
<tr>
<td>kotlin-native-macos-x86_64-1.8.22.tar.gz</td>
<td>0d6e6b12569a4b8ff2f301f827192dd715a29962cc01eed05557aa8e6eb7c20d</td>
</tr>
<tr>
<td>kotlin-native-macos-aarch64-1.8.22.tar.gz</td>
<td>29805af3220eab3c163ac54f02a6097436d4ddfa83eca7815eb053517093e417</td>
</tr>
<tr>
<td>kotlin-native-windows-x86_64-1.8.22.zip</td>
<td>91b04aa9f3dc3d5968c75d8e7f163e542458867915777e995162864cc805b2e5</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/JetBrains/kotlin/blob/v1.8.22/ChangeLog.md">org.jetbrains.kotlin:kotlin-bom's changelog</a>.</em></p>
<blockquote>
<h2>1.8.22</h2>
<h3>Tools. Gradle</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58280"><code>KT-58280</code></a> org.jetbrains.kotlin.jvm Gradle plugin contributes build directories to the test compile classpath</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="fe0156151d"><code>fe01561</code></a> Add changelog for 1.8.22</li>
<li><a href="918a74f88a"><code>918a74f</code></a> [Gradle] KotlinCompilationAssociator: Restore 1.8.10 behaviour for KotlinWith...</li>
<li><a href="90a9bf9dbe"><code>90a9bf9</code></a> [Gradle] Implement KT58280JvmWithJavaTestCompileClasspath to cover KT-58280</li>
<li><a href="0043ae4390"><code>0043ae4</code></a> Update Dokka to 1.8.20-dev-213</li>
<li><a href="0389c35262"><code>0389c35</code></a> docs build: allow to specify custom dokka repository</li>
<li><a href="d57f33517b"><code>d57f335</code></a> docs build: move parameter initialization to the parent project</li>
<li><a href="596ff23d43"><code>596ff23</code></a> docs: cleanup remaining previous version specializations</li>
<li><a href="2da94ed855"><code>2da94ed</code></a> Fix missing native-wasm source set in legacy docs build</li>
<li><a href="51d55cdae0"><code>51d55cd</code></a> docs: specialize build for latest version</li>
<li><a href="5e1e4ec8cd"><code>5e1e4ec</code></a> Render kotlin-reflect library documentation in a separate module</li>
<li>Additional commits viewable in <a href="https://github.com/JetBrains/kotlin/compare/v1.8.21...v1.8.22">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Enables the recently added LUCI build-all for Linux and web, and removes the Cirrus version.
Also enables an iOS build-all that was never enabled.
Part of https://github.com/flutter/flutter/issues/114373
https://github.com/flutter/packages/pull/4209 missed a few deprecations since it was reformatted and the "ignore" was placed on the incorrect lines.
Now `dart analyze --fatal-infos` says no issues found.
The framework has been fully migrated to ChannelBuffers about 2 years ago, meaning all Flutter versions supported by this package (>=3.3.0) only use ChannelBuffers and not the old `onPlatformMessage` call. Therefore, the old calls can now just be removed.
(This surfaced because we only remembered just now to deprecate the old long unused API.)
Adds a new Linux_web configuration, and an initial test (build-all-packages) using it.
This is the simplest web test since it doesn't actually run anything, so starting with this one as a foundation to test future web-based tests.
Part of https://github.com/flutter/flutter/issues/114373
Adds aliases for all commands that put the verb first, since currently they are inconsistent which can make it hard to remember (in particular, I often write `check-foo` instead of `foo-check` when running locally, and it fails).
Also does the long-overdue renaming of `test` to `dart-test`, since we now have `native-test`, `custom-test`, etc. `test` continues to work as an alias for individual muscle memory.
In #4067 I changed several implicitly unawaited futures to `await`, not noticing that doing so would change the timing on updating fields that were used to compute diffs for future updates. Since the update flow is unawaited at higher levels, this meant that multiple calls to update map objects in rapid succession would compute incorrect diffs due to using the wrong base objects. This fixes that by restoring the old flow using `unawaited`.
Adds new tests that introduce synthetic awaits into the fake platform interface object and perform multiple updates in a row that should have different base object sets, which fail without the fix.
In order to simplify adding that behavior to the fake, and to pay down technical debt in the unit tests, I replaced the old test fake that is based on method channel interception (which predates the federation of the plugin and is implicitly relying on the method channel implementation from a different package never changing) with a fake platform interface implementation (substantially simplifying the fake).
Fixes https://github.com/flutter/flutter/issues/128042
We are going to deprecate `RendererBinding.renderView` for multi-view where the binding will manages multiple RenderViews. Change for that is staged in https://github.com/flutter/flutter/pull/125003.
Updates `update-excerpts` to support any top-level .md file (other than CHANGELOG.md), rather than just README.md. This is useful for supplemental content, such as migration guides linked from the main README file.
Also makes some small improvements to the error messaging:
- The list of incorrect files is now relative to, and restricted to, the package. This makes the error message simpler, and ensures that changed files in other packages don't get listed.
- Adds a link to the relevant wiki docs, since this has been a source of confusion for newer contributors.
`WebKitWebViewControllerCreationParams` doesn't allow the configuration of limitsNavigationsToAppBoundDomains
https://webkit.org/blog/10882/app-bound-domains/
It's very useful after ios14 if you want users to be able to call runJavaScript on a non local web-page.
This PR adds support for it
The change to how the repository is located assumed the script was being
run from bin/flutter_plugin_tools.dart, but it can also be run directly
from lib/src/main.dart which was broken. This restores the ability to
run it either way.
Fixes the tree breakage in `release`.
Now that the repo tooling is always run from source, not via `pub global`, we no longer need to infer the repo location from the current directory. Instead, hard-code knowledge of where the repository root is. This makes it much easier to run the tooling, since it's common to be in a package directory rather than the repo root.
To make it even easier to run from within a package, this also adds a `--current-package` as an alternative to `--packages`. This makes it possible to, e.g., write local wrapper scripts that run a specific set of commands on whatever the current package happens to be (such as a generic version of the script discussed in https://github.com/flutter/packages/pull/4129).
As related cleanup, makes the tool non-publishable (we haven't been publishing it since the repo merge, but I never made it unpublishable; this is important now that it would not work if published) and remove the LICENSE and CHANGELOG since it's no longer a stand-alone package.
Fixes https://github.com/flutter/flutter/issues/128231
Fixes https://github.com/flutter/flutter/issues/128232
Completes the migration of macOS CI tests to LUCI, since the Pigeon test issues in CI seems to be resolved now (likely due to the Xcode updates in CI).
Fixes https://github.com/flutter/flutter/issues/120231
Bumps androidx.fragment:fragment from 1.5.7 to 1.6.0.
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
(This is the combination PR for overall review.)
This adds initial desktop support across all three desktop platforms:
- Adds the concept of a camera delegation as discussed in https://github.com/flutter/flutter/issues/102115, and adds a helper base class at the platform interface level for implementations that want to use that approach. (Sharing it simplifies both the platform implementations and the client usage.)
- Adds a new app-facing and platform-interface API to check at runtime for support for a given source, to make writing code using `image_picker` in a world of dynamic camera support viable. (In particular this is critical for published packages that use `image_picker`, as they won't know in advance if a client app will have a delegate set up).
- Updates the Windows implementation to:
- use the new delegation base class
- implement the newer `getImageFromSource` API as an opportunistic fix while changing the code (if not implemented, it would fall back to `getImage`)
- use new APIs in its example.
- Made macOS and Linux implementations that are clones of the Windows approach. They are both slightly simpler however, as MIME type (for Linux) and UTI (for macOS) allow creating generic "image" and "video" filters instead of having to hard-code a file extension list.
Since in my opinion this level of support is sufficient to allow basic real-world use of the desktop implementations, due to having a structure in place for handling camera support, this includes endorsing the desktop implementations. It is still the case that desktop does not support image resizing, which isn't ideal, but I don't think we should block on that. It is clearly documented in the README.
The desktop implementations are separate packages even though they are mostly the same right now because:
- the amount of (non-example) code being duplicated is small, and
- it makes it much easier for us to change platform implementations over time; e.g., recent versions of macOS support `PHPicker`, meaning we can later add native code for that to the macOS implementation, with just a fallback to the current `file_selector` wrapper. It's plausible that better native options for Windows and/or Linux may become available in the future as well.
Fixes https://github.com/flutter/flutter/issues/102115
Fixes https://github.com/flutter/flutter/issues/102320
Fixes https://github.com/flutter/flutter/issues/85100