[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.json:json&package-manager=gradle&previous-version=20240303&new-version=20241224)](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`.
---
Dependabot commands and options
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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@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)
---
.../in_app_purchase_android/example/android/app/build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/in_app_purchase/in_app_purchase_android/example/android/app/build.gradle b/packages/in_app_purchase/in_app_purchase_android/example/android/app/build.gradle
index 2d17cfc8b7f2..3a17faebb508 100644
--- a/packages/in_app_purchase/in_app_purchase_android/example/android/app/build.gradle
+++ b/packages/in_app_purchase/in_app_purchase_android/example/android/app/build.gradle
@@ -108,7 +108,7 @@ dependencies {
implementation 'com.android.billingclient:billing:6.1.0'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-core:5.1.1'
- testImplementation 'org.json:json:20240303'
+ testImplementation 'org.json:json:20241224'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
From db008e0c93299392c0d06e9ec944a305f857be7a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 10 Jan 2025 04:48:52 +0000
Subject: [PATCH 04/26] [dependabot]: Bump the androidx group across 3
directories with 1 update (#8329)
Bumps the androidx group with 1 update in the /packages/google_maps_flutter/google_maps_flutter_android/android directory: androidx.annotation:annotation.
Bumps the androidx group with 1 update in the /packages/image_picker/image_picker_android/android directory: androidx.annotation:annotation.
Bumps the androidx group with 1 update in the /packages/in_app_purchase/in_app_purchase_android/android directory: androidx.annotation:annotation.
Updates `androidx.annotation:annotation` from 1.7.0 to 1.9.1
Updates `androidx.annotation:annotation` from 1.9.0 to 1.9.1
Updates `androidx.annotation:annotation` from 1.9.0 to 1.9.1
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`.
---
Dependabot commands and options
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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
---
.../google_maps_flutter_android/CHANGELOG.md | 4 ++++
.../google_maps_flutter_android/android/build.gradle | 2 +-
.../google_maps_flutter_android/pubspec.yaml | 2 +-
packages/image_picker/image_picker_android/CHANGELOG.md | 4 ++++
.../image_picker/image_picker_android/android/build.gradle | 2 +-
packages/image_picker/image_picker_android/pubspec.yaml | 2 +-
packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md | 4 ++++
.../in_app_purchase_android/android/build.gradle | 2 +-
packages/in_app_purchase/in_app_purchase_android/pubspec.yaml | 2 +-
9 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md
index 88b105370005..e18bd40228cf 100644
--- a/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.14.12
+
+* Updates androidx.annotation:annotation to 1.9.1.
+
## 2.14.11
* Updates internal Pigeon API to use newer features.
diff --git a/packages/google_maps_flutter/google_maps_flutter_android/android/build.gradle b/packages/google_maps_flutter/google_maps_flutter_android/android/build.gradle
index 4a1dc709b445..a0fed3d94588 100644
--- a/packages/google_maps_flutter/google_maps_flutter_android/android/build.gradle
+++ b/packages/google_maps_flutter/google_maps_flutter_android/android/build.gradle
@@ -36,7 +36,7 @@ android {
}
dependencies {
- implementation "androidx.annotation:annotation:1.7.0"
+ implementation "androidx.annotation:annotation:1.9.1"
implementation 'com.google.android.gms:play-services-maps:18.2.0'
implementation 'com.google.maps.android:android-maps-utils:3.6.0'
androidTestImplementation 'androidx.test:runner:1.2.0'
diff --git a/packages/google_maps_flutter/google_maps_flutter_android/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_android/pubspec.yaml
index 19c0751c5db5..19db56e19133 100644
--- a/packages/google_maps_flutter/google_maps_flutter_android/pubspec.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter_android/pubspec.yaml
@@ -2,7 +2,7 @@ name: google_maps_flutter_android
description: Android implementation of the google_maps_flutter plugin.
repository: https://github.com/flutter/packages/tree/main/packages/google_maps_flutter/google_maps_flutter_android
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22
-version: 2.14.11
+version: 2.14.12
environment:
sdk: ^3.5.0
diff --git a/packages/image_picker/image_picker_android/CHANGELOG.md b/packages/image_picker/image_picker_android/CHANGELOG.md
index c1f1a6549d80..a7050dde8ef8 100644
--- a/packages/image_picker/image_picker_android/CHANGELOG.md
+++ b/packages/image_picker/image_picker_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.8.12+20
+
+* Updates androidx.annotation:annotation to 1.9.1.
+
## 0.8.12+19
* Updates androidx.activity:activity to 1.9.3.
diff --git a/packages/image_picker/image_picker_android/android/build.gradle b/packages/image_picker/image_picker_android/android/build.gradle
index be599aac336a..7f4fd20bb475 100644
--- a/packages/image_picker/image_picker_android/android/build.gradle
+++ b/packages/image_picker/image_picker_android/android/build.gradle
@@ -36,7 +36,7 @@ android {
}
dependencies {
implementation 'androidx.core:core:1.13.1'
- implementation 'androidx.annotation:annotation:1.9.0'
+ implementation 'androidx.annotation:annotation:1.9.1'
implementation 'androidx.exifinterface:exifinterface:1.3.7'
implementation 'androidx.activity:activity:1.9.3'
diff --git a/packages/image_picker/image_picker_android/pubspec.yaml b/packages/image_picker/image_picker_android/pubspec.yaml
index e2c9d232e01d..14735e3b7df5 100755
--- a/packages/image_picker/image_picker_android/pubspec.yaml
+++ b/packages/image_picker/image_picker_android/pubspec.yaml
@@ -2,7 +2,7 @@ name: image_picker_android
description: Android implementation of the image_picker plugin.
repository: https://github.com/flutter/packages/tree/main/packages/image_picker/image_picker_android
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22
-version: 0.8.12+19
+version: 0.8.12+20
environment:
sdk: ^3.5.0
diff --git a/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
index bfa7d76bca0d..36b7371e7b2b 100644
--- a/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
+++ b/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.6+13
+
+* Updates androidx.annotation:annotation to 1.9.1.
+
## 0.3.6+12
* Updates README to remove contributor-focused documentation.
diff --git a/packages/in_app_purchase/in_app_purchase_android/android/build.gradle b/packages/in_app_purchase/in_app_purchase_android/android/build.gradle
index 7a790d8d8406..5a803f676002 100644
--- a/packages/in_app_purchase/in_app_purchase_android/android/build.gradle
+++ b/packages/in_app_purchase/in_app_purchase_android/android/build.gradle
@@ -59,7 +59,7 @@ android {
}
dependencies {
- implementation 'androidx.annotation:annotation:1.9.0'
+ implementation 'androidx.annotation:annotation:1.9.1'
implementation 'com.android.billingclient:billing:6.2.0'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.json:json:20240303'
diff --git a/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml b/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml
index 7e18fa0722a6..0932606e7ae8 100644
--- a/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml
+++ b/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml
@@ -2,7 +2,7 @@ name: in_app_purchase_android
description: An implementation for the Android platform of the Flutter `in_app_purchase` plugin. This uses the Android BillingClient APIs.
repository: https://github.com/flutter/packages/tree/main/packages/in_app_purchase/in_app_purchase_android
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22
-version: 0.3.6+12
+version: 0.3.6+13
environment:
sdk: ^3.5.0
From 0c6bb1712a238c4e783ddf37cac48d73b240d636 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 10 Jan 2025 05:12:12 +0000
Subject: [PATCH 05/26] [dependabot]: Bump io.mockk:mockk from 1.13.13 to
1.13.14 in /packages/shared_preferences/shared_preferences_android/android
(#8358)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [io.mockk:mockk](https://github.com/mockk/mockk) from 1.13.13 to 1.13.14.
Release notes
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=io.mockk:mockk&package-manager=gradle&previous-version=1.13.13&new-version=1.13.14)](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`.
---
Dependabot commands and options
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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@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)
---
.../shared_preferences_android/android/build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/shared_preferences/shared_preferences_android/android/build.gradle b/packages/shared_preferences/shared_preferences_android/android/build.gradle
index 9d165eaf3e43..dbef92ea6d81 100644
--- a/packages/shared_preferences/shared_preferences_android/android/build.gradle
+++ b/packages/shared_preferences/shared_preferences_android/android/build.gradle
@@ -67,7 +67,7 @@ android {
testImplementation 'androidx.test.ext:junit-ktx:1.2.1'
testImplementation 'org.robolectric:robolectric:4.12.1'
testImplementation 'org.mockito:mockito-inline:5.2.0'
- testImplementation 'io.mockk:mockk:1.13.13'
+ testImplementation 'io.mockk:mockk:1.13.14'
}
From bc4b44d8c530e636502e47d149721a36f1dc0155 Mon Sep 17 00:00:00 2001
From: Anay Wadhera
Date: Fri, 10 Jan 2025 08:20:24 -0500
Subject: [PATCH 06/26] [url_launcher_windows] Correct logging url (#8107)
This CL fixes the URL being logged to be unescaped one if applicable instead of the original input URL.
Fixes [#159009](https://github.com/flutter/flutter/issues/159009)
---
.../url_launcher_windows/CHANGELOG.md | 3 ++-
.../url_launcher_windows/pubspec.yaml | 2 +-
.../test/url_launcher_windows_test.cpp | 24 +++++++++++++++++++
.../windows/url_launcher_plugin.cpp | 17 ++++++-------
4 files changed, 36 insertions(+), 10 deletions(-)
diff --git a/packages/url_launcher/url_launcher_windows/CHANGELOG.md b/packages/url_launcher/url_launcher_windows/CHANGELOG.md
index 05a2acbd6b16..c5fafdf4b435 100644
--- a/packages/url_launcher/url_launcher_windows/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_windows/CHANGELOG.md
@@ -1,6 +1,7 @@
-## NEXT
+## 3.1.4
* Updates minimum supported SDK version to Flutter 3.22/Dart 3.4.
+* Fixes an issue where the URL logged would not be unescaped on failure.
## 3.1.3
diff --git a/packages/url_launcher/url_launcher_windows/pubspec.yaml b/packages/url_launcher/url_launcher_windows/pubspec.yaml
index 5c81c7786754..51e3e46a28b0 100644
--- a/packages/url_launcher/url_launcher_windows/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_windows/pubspec.yaml
@@ -2,7 +2,7 @@ name: url_launcher_windows
description: Windows implementation of the url_launcher plugin.
repository: https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher_windows
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22
-version: 3.1.3
+version: 3.1.4
environment:
sdk: ^3.4.0
diff --git a/packages/url_launcher/url_launcher_windows/windows/test/url_launcher_windows_test.cpp b/packages/url_launcher/url_launcher_windows/windows/test/url_launcher_windows_test.cpp
index db46e1a4a983..ac933e2269e2 100644
--- a/packages/url_launcher/url_launcher_windows/windows/test/url_launcher_windows_test.cpp
+++ b/packages/url_launcher/url_launcher_windows/windows/test/url_launcher_windows_test.cpp
@@ -24,6 +24,7 @@ using flutter::EncodableMap;
using flutter::EncodableValue;
using ::testing::_;
using ::testing::DoAll;
+using ::testing::HasSubstr;
using ::testing::Pointee;
using ::testing::Return;
using ::testing::SetArgPointee;
@@ -160,5 +161,28 @@ TEST(UrlLauncherPlugin, LaunchUTF8EncodedFileURLSuccess) {
EXPECT_TRUE(result.value());
}
+TEST(UrlLauncherPlugin, LaunchUTF8LogsUnescapedOnFail) {
+ std::unique_ptr system = std::make_unique();
+
+ // Return a failure value (<32) from launching.
+ EXPECT_CALL(
+ *system,
+ ShellExecuteW(
+ _, StrEq(L"open"),
+ // 家の管理/スキャナ"),
+ StrEq(
+ L"file:///G:/\x5bb6\x306e\x7ba1\x7406/\x30b9\x30ad\x30e3\x30ca"),
+ _, _, _))
+ .WillOnce(Return(reinterpret_cast(0)));
+
+ UrlLauncherPlugin plugin(std::move(system));
+ ErrorOr result = plugin.LaunchUrl(
+ "file:///G:/%E5%AE%B6%E3%81%AE%E7%AE%A1%E7%90%86/"
+ "%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%8A");
+
+ ASSERT_TRUE(result.has_error());
+ EXPECT_THAT(result.error().message(), HasSubstr("家の管理/スキャナ"));
+}
+
} // namespace test
} // namespace url_launcher_windows
diff --git a/packages/url_launcher/url_launcher_windows/windows/url_launcher_plugin.cpp b/packages/url_launcher/url_launcher_windows/windows/url_launcher_plugin.cpp
index b737b4579b8b..373e1f361d6a 100644
--- a/packages/url_launcher/url_launcher_windows/windows/url_launcher_plugin.cpp
+++ b/packages/url_launcher/url_launcher_windows/windows/url_launcher_plugin.cpp
@@ -99,7 +99,7 @@ ErrorOr UrlLauncherPlugin::CanLaunchUrl(const std::string& url) {
}
ErrorOr UrlLauncherPlugin::LaunchUrl(const std::string& url) {
- std::wstring url_wide;
+ std::string url_to_open;
if (url.find("file:") == 0) {
// ShellExecuteW does not process %-encoded UTF8 strings in file URLs.
DWORD unescaped_len = 0;
@@ -108,14 +108,15 @@ ErrorOr UrlLauncherPlugin::LaunchUrl(const std::string& url) {
&unescaped_len, URL_UNESCAPE_INPLACE))) {
return FlutterError("open_error", "Failed to unescape file URL");
}
- url_wide = Utf16FromUtf8(unescaped_url);
+ url_to_open = unescaped_url;
} else {
- url_wide = Utf16FromUtf8(url);
+ url_to_open = url;
}
- int status = static_cast(reinterpret_cast(
- system_apis_->ShellExecuteW(nullptr, TEXT("open"), url_wide.c_str(),
- nullptr, nullptr, SW_SHOWNORMAL)));
+ int status =
+ static_cast(reinterpret_cast(system_apis_->ShellExecuteW(
+ nullptr, TEXT("open"), Utf16FromUtf8(url_to_open).c_str(), nullptr,
+ nullptr, SW_SHOWNORMAL)));
// Per ::ShellExecuteW documentation, anything >32 indicates success.
if (status <= 32) {
@@ -126,8 +127,8 @@ ErrorOr UrlLauncherPlugin::LaunchUrl(const std::string& url) {
return false;
}
std::ostringstream error_message;
- error_message << "Failed to open " << url << ": ShellExecute error code "
- << status;
+ error_message << "Failed to open " << url_to_open
+ << ": ShellExecute error code " << status;
return FlutterError("open_error", error_message.str());
}
return true;
From 66a4d857af0511e5fb8fa9ff1126985474154427 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 10 Jan 2025 17:46:01 +0000
Subject: [PATCH 07/26] [shared_pref]: Bump androidx.datastore:datastore from
1.0.0 to 1.1.1 in
/packages/shared_preferences/shared_preferences_android/android (#7306)
Bumps androidx.datastore:datastore from 1.0.0 to 1.1.1.
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=androidx.datastore:datastore&package-manager=gradle&previous-version=1.0.0&new-version=1.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
---
Dependabot commands and options
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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@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)
> **Note**
> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.
---
.../shared_preferences_android/CHANGELOG.md | 4 ++++
.../shared_preferences_android/android/build.gradle | 6 +++---
.../shared_preferences_android/pubspec.yaml | 2 +-
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/packages/shared_preferences/shared_preferences_android/CHANGELOG.md b/packages/shared_preferences/shared_preferences_android/CHANGELOG.md
index e8abda3d2628..b47688db6035 100644
--- a/packages/shared_preferences/shared_preferences_android/CHANGELOG.md
+++ b/packages/shared_preferences/shared_preferences_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.4.1
+
+* Bumps kotlin version to 1.9.10 androidx.datastore:datastore from 1.0.0 to 1.1.1.
+
## 2.4.0
* Adds `SharedPreferences` support within `SharedPreferencesAsyncAndroid` API.
diff --git a/packages/shared_preferences/shared_preferences_android/android/build.gradle b/packages/shared_preferences/shared_preferences_android/android/build.gradle
index dbef92ea6d81..8a0b88a8c0ff 100644
--- a/packages/shared_preferences/shared_preferences_android/android/build.gradle
+++ b/packages/shared_preferences/shared_preferences_android/android/build.gradle
@@ -2,7 +2,7 @@ group 'io.flutter.plugins.sharedpreferences'
version '1.0-SNAPSHOT'
buildscript {
- ext.kotlin_version = '1.7.10'
+ ext.kotlin_version = '1.9.10'
repositories {
google()
mavenCentral()
@@ -59,8 +59,8 @@ android {
disable 'AndroidGradlePluginVersion', 'InvalidPackage', 'GradleDependency', 'NewerVersionAvailable'
}
dependencies {
- implementation 'androidx.datastore:datastore:1.0.0'
- implementation 'androidx.datastore:datastore-preferences:1.0.0'
+ implementation 'androidx.datastore:datastore:1.1.1'
+ implementation 'androidx.datastore:datastore-preferences:1.1.1'
implementation 'androidx.preference:preference:1.2.1'
testImplementation 'junit:junit:4.13.2'
testImplementation 'androidx.test:core-ktx:1.5.0'
diff --git a/packages/shared_preferences/shared_preferences_android/pubspec.yaml b/packages/shared_preferences/shared_preferences_android/pubspec.yaml
index 594d763c6f8a..f0156474ca21 100644
--- a/packages/shared_preferences/shared_preferences_android/pubspec.yaml
+++ b/packages/shared_preferences/shared_preferences_android/pubspec.yaml
@@ -2,7 +2,7 @@ name: shared_preferences_android
description: Android implementation of the shared_preferences plugin
repository: https://github.com/flutter/packages/tree/main/packages/shared_preferences/shared_preferences_android
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+shared_preferences%22
-version: 2.4.0
+version: 2.4.1
environment:
sdk: ^3.5.0
From 9e092d579429e3a674138ec5b6f2afcbd0cf79a8 Mon Sep 17 00:00:00 2001
From: Jenn Magder
Date: Fri, 10 Jan 2025 15:36:08 -0800
Subject: [PATCH 08/26] Fix dependabot test-dependencies group io.mockk regex
(#8406)
After #8100, https://github.com/flutter/packages/pull/8358 and https://github.com/flutter/packages/pull/8357 should have been grouped into one dependabot PR to bump io.mockk:mockk to 1.13.14 across all packages. Fix the regex to match `io.mockk:mockk`.
---
.github/dependabot.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 5ce98de58117..f66a07d3a06c 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -109,7 +109,7 @@ updates:
test-dependencies:
patterns:
- "androidx.test:*"
- - "io.mockk:mockk:*"
+ - "io.mockk:*"
- "junit:junit"
- "org.mockito:*"
- "org.robolectric:*"
From d58b6ed426f5efdad9a3d5a73d144f173ce54d1c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 10 Jan 2025 23:39:04 +0000
Subject: [PATCH 09/26] [dependabot]: Bump io.mockk:mockk from 1.13.13 to
1.13.14 in /packages/pigeon/platform_tests/test_plugin/android (#8357)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [io.mockk:mockk](https://github.com/mockk/mockk) from 1.13.13 to 1.13.14.
Release notes
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=io.mockk:mockk&package-manager=gradle&previous-version=1.13.13&new-version=1.13.14)](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`.
---
Dependabot commands and options
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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@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)
---
packages/pigeon/platform_tests/test_plugin/android/build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/pigeon/platform_tests/test_plugin/android/build.gradle b/packages/pigeon/platform_tests/test_plugin/android/build.gradle
index 348ded6b8f8c..cae127bd86e2 100644
--- a/packages/pigeon/platform_tests/test_plugin/android/build.gradle
+++ b/packages/pigeon/platform_tests/test_plugin/android/build.gradle
@@ -66,7 +66,7 @@ android {
dependencies {
testImplementation 'junit:junit:4.+'
- testImplementation "io.mockk:mockk:1.13.13"
+ testImplementation "io.mockk:mockk:1.13.14"
// org.jetbrains.kotlin:kotlin-bom artifact purpose is to align kotlin stdlib and related code versions.
// See: https://youtrack.jetbrains.com/issue/KT-55297/kotlin-stdlib-should-declare-constraints-on-kotlin-stdlib-jdk8-and-kotlin-stdlib-jdk7
implementation(platform("org.jetbrains.kotlin:kotlin-bom:2.0.21"))
From edcb1eba42027f3a9265b246452724d577abd578 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 10 Jan 2025 23:52:37 +0000
Subject: [PATCH 10/26] [dependabot]: Bump org.json:json from 20241224 to
20250107 in /packages/in_app_purchase/in_app_purchase/example/android/app
(#8410)
Bumps [org.json:json](https://github.com/douglascrockford/JSON-java) from 20241224 to 20250107.
Release notes
20241224....Strict mode opt-in feature, and recent commits. This release does not contain module-info.class.
It is not recommended if you need this feature.
20240303 Revert optLong/getLong changes, and recent commits.
20240205 Recent commits.
20231013 First release with minimum Java version 1.8. Recent commits, including fixes for CVE-2023-5072.
20230618 Final release with Java 1.6 compatibility. Future releases will require Java 1.8 or greater.
20230227 Fix for CVE-2022-45688 and recent commits
20220924 New License - public domain, and some minor updates
20220320 Wrap StackOverflow with JSONException
20211205 Recent commits and some bug fixes for similar()
20210307 Recent commits and potentially breaking fix to JSONPointer
20201115 Recent commits and first release after project structure change
20200518 Recent commits and snapshot before project structure change
20190722 Recent commits
20180813 POM change to include Automatic-Module-Name (#431)
JSONObject(Map) now throws an exception if any of a map keys are null (#405)
20180130 Recent commits
20171018 Checkpoint for recent commits.
20170516 Roll up recent commits.
20160810 Revert code that was breaking opt*() methods.
20160807 This release contains a bug in the JSONObject.opt*() and JSONArray.opt*() methods,
it is not recommended for use.
Java 1.6 compatability fixed, JSONArray.toList() and JSONObject.toMap(),
</tr></table>
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.json:json&package-manager=gradle&previous-version=20241224&new-version=20250107)](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`.
---
Dependabot commands and options
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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@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)
---
.../in_app_purchase/example/android/app/build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/in_app_purchase/in_app_purchase/example/android/app/build.gradle b/packages/in_app_purchase/in_app_purchase/example/android/app/build.gradle
index 520bfb96c61e..3bb79c4d934c 100644
--- a/packages/in_app_purchase/in_app_purchase/example/android/app/build.gradle
+++ b/packages/in_app_purchase/in_app_purchase/example/android/app/build.gradle
@@ -108,7 +108,7 @@ dependencies {
implementation 'com.android.billingclient:billing:3.0.2'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-core:5.0.0'
- testImplementation 'org.json:json:20241224'
+ testImplementation 'org.json:json:20250107'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
From ce3dfa51e327d6399dd65a9b1a0497f835e0b06e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 10 Jan 2025 23:58:22 +0000
Subject: [PATCH 11/26] [dependabot]: Bump org.json:json from 20240303 to
20250107 in /packages/in_app_purchase/in_app_purchase_android/android (#8413)
Bumps [org.json:json](https://github.com/douglascrockford/JSON-java) from 20240303 to 20250107.
Release notes
20241224....Strict mode opt-in feature, and recent commits. This release does not contain module-info.class.
It is not recommended if you need this feature.
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.json:json&package-manager=gradle&previous-version=20240303&new-version=20250107)](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`.
---
Dependabot commands and options
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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@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)
---
.../in_app_purchase_android/android/build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/in_app_purchase/in_app_purchase_android/android/build.gradle b/packages/in_app_purchase/in_app_purchase_android/android/build.gradle
index 5a803f676002..29e12ba9d8ad 100644
--- a/packages/in_app_purchase/in_app_purchase_android/android/build.gradle
+++ b/packages/in_app_purchase/in_app_purchase_android/android/build.gradle
@@ -62,7 +62,7 @@ dependencies {
implementation 'androidx.annotation:annotation:1.9.1'
implementation 'com.android.billingclient:billing:6.2.0'
testImplementation 'junit:junit:4.13.2'
- testImplementation 'org.json:json:20240303'
+ testImplementation 'org.json:json:20250107'
testImplementation 'org.mockito:mockito-core:5.4.0'
testImplementation 'androidx.test:core:1.5.0'
testImplementation 'org.robolectric:robolectric:4.10.3'
From f174de605e878c430d586812beb09a1da89353a1 Mon Sep 17 00:00:00 2001
From: engine-flutter-autoroll
Date: Fri, 10 Jan 2025 19:02:01 -0500
Subject: [PATCH 12/26] Roll Flutter from 4b23b8182888 to 864d4f59dde0 (50
revisions) (#8408)
Roll Flutter from 4b23b8182888 to 864d4f59dde0 (50 revisions)
https://github.com/flutter/flutter/compare/4b23b8182888...864d4f59dde0
2025-01-10 magder@google.com Mark complex_layout_scroll_perf_macos__timeline_summary unflaky (flutter/flutter#160997)
2025-01-10 magder@google.com Mark hello_world_macos__compile unflaky (flutter/flutter#160998)
2025-01-10 magder@google.com Mark animated_complex_opacity_perf_macos__e2e_summary unflaky (flutter/flutter#160996)
2025-01-10 magder@google.com Mark integration_ui_test_test_macos unflaky (flutter/flutter#160999)
2025-01-10 magder@google.com Mark hot_mode_dev_cycle_macos_target__benchmark unflaky (flutter/flutter#161000)
2025-01-10 matanlurey@users.noreply.github.com Add a virtual-display (VD) platform view test, and refactor tests a bit. (flutter/flutter#161349)
2025-01-10 matanlurey@users.noreply.github.com Remove `CIRRUS_TASK_NAME` from what I can tell, is always omitted on `LUCI` (flutter/flutter#161391)
2025-01-10 matanlurey@users.noreply.github.com Replace the always omitted `CPU` environment variable with `numberOfProcessors`. (flutter/flutter#161392)
2025-01-10 matanlurey@users.noreply.github.com We no longer have a separate engine repo. (flutter/flutter#161400)
2025-01-10 goderbauer@google.com Update Style-guide-for-Flutter-repo.md (flutter/flutter#161344)
2025-01-09 chris@bracken.jp integration_test: Add gitignore of golden image (flutter/flutter#161404)
2025-01-09 goderbauer@google.com Fix link to engine docs in CONTRIBUTING.md (flutter/flutter#161401)
2025-01-09 engine-flutter-autoroll@skia.org Roll Packages from 3fc6b7ace3ff to 65547511c004 (11 revisions) (flutter/flutter#161379)
2025-01-09 32538273+ValentinVignal@users.noreply.github.com Add `mouseCursor` parameter to `ReorderableListView` (flutter/flutter#160246)
2025-01-09 matanlurey@users.noreply.github.com Remove Cirrus CI from Flutter goldens. (flutter/flutter#161396)
2025-01-09 lsaudon@gmail.com remove`useMaterial3: true,` in from the template (flutter/flutter#160525)
2025-01-09 matanlurey@users.noreply.github.com Remove `accept_android_sdk_licenses.sh`, which appears unused. (flutter/flutter#161388)
2025-01-09 a-siva@users.noreply.github.com Roll Dart to Version 3.7.0-312.0.dev (flutter/flutter#161394)
2025-01-09 fluttergithubbot@gmail.com Marks Linux analyzer_benchmark to be flaky (flutter/flutter#161307)
2025-01-09 jonahwilliams@google.com [Impeller] fix scaling of trampoline import of GLES textures into Vulkan. (flutter/flutter#161331)
2025-01-09 58529443+srujzs@users.noreply.github.com Support DDC library bundle format and remove support for DDC module format (flutter/flutter#161276)
2025-01-09 matanlurey@users.noreply.github.com Remove seemingly stale web Cirrus and "Web Installer" instructions (flutter/flutter#161389)
2025-01-09 matanlurey@users.noreply.github.com Proposal to deprecate `webGoldenComparator`. (flutter/flutter#161196)
2025-01-09 nate.w5687@gmail.com `ImplicitlyAnimatedWidgetState` code cleanup (flutter/flutter#160567)
2025-01-09 matanlurey@users.noreply.github.com Exclude `*texture*` as matching for `a: text input` (flutter/flutter#161354)
2025-01-09 jonahwilliams@google.com [Impeller] add opt in flag for SurfaceControl testing. (flutter/flutter#161353)
2025-01-09 a-siva@users.noreply.github.com Roll Dart to Version 3.7.0-307.0.dev (flutter/flutter#161278)
2025-01-09 goderbauer@google.com remove formatter from snippet tool (flutter/flutter#161347)
2025-01-09 robert.ancell@canonical.com Refactor keyboard manager tests (flutter/flutter#160637)
2025-01-09 jonahwilliams@google.com [flutter_tools] ignore viewpost ime and samsung spam messages. (flutter/flutter#161199)
2025-01-09 737941+loic-sharma@users.noreply.github.com Revert "[SwiftPM] Add separate feature flag for the app migration (#158897)" (flutter/flutter#161342)
2025-01-09 flar@google.com git ignore .ccls-cache (flutter/flutter#161340)
2025-01-08 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[SwiftPM] Turn on by default (#161275)" (flutter/flutter#161339)
2025-01-08 jmccandless@google.com Update engine instructions for monorepo (flutter/flutter#161184)
2025-01-08 jonahwilliams@google.com [Impeller] re-enable Adreno 630 (flutter/flutter#161287)
2025-01-08 737941+loic-sharma@users.noreply.github.com [SwiftPM] Turn on by default (flutter/flutter#161275)
2025-01-08 matanlurey@users.noreply.github.com Make the encoding of a `YamlNode` to a `String` more explicit. (flutter/flutter#161270)
2025-01-08 jacksongardner@google.com Normalize the translation column of the color matrix. (flutter/flutter#161109)
2025-01-08 matanlurey@users.noreply.github.com Rename `native_driver` to `android_{driver_extensions|engine_test}` (flutter/flutter#161263)
2025-01-08 jonahwilliams@google.com [Impeller] reland: fix porterduff shader and handle optimized out texture binding in GLES backend. (flutter/flutter#161326)
2025-01-08 jessiewong401@gmail.com Updating AVD Dependency for Android 28 Emulator (flutter/flutter#160978)
2025-01-08 69054810+M97Chahboun@users.noreply.github.com Adds onHover and onLongPress to IconButton widget (flutter/flutter#160032)
2025-01-08 fluttergithubbot@gmail.com Marks Linux linux_desktop_impeller to be unflaky (flutter/flutter#161302)
2025-01-08 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[Impeller] porter duff workarounds for Adreno GPU. (#161273)" (flutter/flutter#161318)
2025-01-08 victorsanniay@gmail.com Revert "fixed keyboardDismissBehavior on scroll without a drag" (flutter/flutter#161277)
2025-01-08 jiahaog@users.noreply.github.com Revert "use uuid from package:uuid instead of from package:usage" (flutter/flutter#161292)
...
---
.ci/flutter_master.version | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.ci/flutter_master.version b/.ci/flutter_master.version
index 126bb7a8a02f..85c1173b0833 100644
--- a/.ci/flutter_master.version
+++ b/.ci/flutter_master.version
@@ -1 +1 @@
-4b23b8182888d5d94645d8f97cdcc79800e44a9a
+864d4f59dde0afab749d5530cf9902e59ccbaacf
From 07e0f4ba74220de74a631b87b9d1f8bda2d87899 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 11 Jan 2025 00:12:04 +0000
Subject: [PATCH 13/26] [dependabot]: Bump org.json:json from 20241224 to
20250107 in
/packages/in_app_purchase/in_app_purchase_android/example/android/app (#8411)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
â ï¸ **Dependabot is rebasing this PR** â ï¸
Rebasing might not happen immediately, so don't worry if this takes some time.
Note: if you make any changes to this PR yourself, they will take precedence over the rebase.
---
Bumps [org.json:json](https://github.com/douglascrockford/JSON-java) from 20241224 to 20250107.
Release notes
20241224....Strict mode opt-in feature, and recent commits. This release does not contain module-info.class.
It is not recommended if you need this feature.
20240303 Revert optLong/getLong changes, and recent commits.
20240205 Recent commits.
20231013 First release with minimum Java version 1.8. Recent commits, including fixes for CVE-2023-5072.
20230618 Final release with Java 1.6 compatibility. Future releases will require Java 1.8 or greater.
20230227 Fix for CVE-2022-45688 and recent commits
20220924 New License - public domain, and some minor updates
20220320 Wrap StackOverflow with JSONException
20211205 Recent commits and some bug fixes for similar()
20210307 Recent commits and potentially breaking fix to JSONPointer
20201115 Recent commits and first release after project structure change
20200518 Recent commits and snapshot before project structure change
20190722 Recent commits
20180813 POM change to include Automatic-Module-Name (#431)
JSONObject(Map) now throws an exception if any of a map keys are null (#405)
20180130 Recent commits
20171018 Checkpoint for recent commits.
20170516 Roll up recent commits.
20160810 Revert code that was breaking opt*() methods.
20160807 This release contains a bug in the JSONObject.opt*() and JSONArray.opt*() methods,
it is not recommended for use.
Java 1.6 compatability fixed, JSONArray.toList() and JSONObject.toMap(),
</tr></table>
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.json:json&package-manager=gradle&previous-version=20241224&new-version=20250107)](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`.
---
Dependabot commands and options
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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@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)
---
.../in_app_purchase_android/example/android/app/build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/in_app_purchase/in_app_purchase_android/example/android/app/build.gradle b/packages/in_app_purchase/in_app_purchase_android/example/android/app/build.gradle
index 3a17faebb508..99e889208977 100644
--- a/packages/in_app_purchase/in_app_purchase_android/example/android/app/build.gradle
+++ b/packages/in_app_purchase/in_app_purchase_android/example/android/app/build.gradle
@@ -108,7 +108,7 @@ dependencies {
implementation 'com.android.billingclient:billing:6.1.0'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-core:5.1.1'
- testImplementation 'org.json:json:20241224'
+ testImplementation 'org.json:json:20250107'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
From 3c3bc6832b398cd3b512eb5db001fb4b9ab0367f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 11 Jan 2025 00:47:06 +0000
Subject: [PATCH 14/26] [dependabot]: Bump the test-dependencies group across 2
directories with 1 update (#8412)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps the test-dependencies group with 1 update in the /packages/pigeon/platform_tests/test_plugin/android directory: [io.mockk:mockk](https://github.com/mockk/mockk).
Bumps the test-dependencies group with 1 update in the /packages/shared_preferences/shared_preferences_android/android directory: [io.mockk:mockk](https://github.com/mockk/mockk).
Updates `io.mockk:mockk` from 1.13.13 to 1.13.16
Release notes
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`.
---
Dependabot commands and options
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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
---
packages/pigeon/platform_tests/test_plugin/android/build.gradle | 2 +-
.../shared_preferences_android/android/build.gradle | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/pigeon/platform_tests/test_plugin/android/build.gradle b/packages/pigeon/platform_tests/test_plugin/android/build.gradle
index cae127bd86e2..bee0d0741c73 100644
--- a/packages/pigeon/platform_tests/test_plugin/android/build.gradle
+++ b/packages/pigeon/platform_tests/test_plugin/android/build.gradle
@@ -66,7 +66,7 @@ android {
dependencies {
testImplementation 'junit:junit:4.+'
- testImplementation "io.mockk:mockk:1.13.14"
+ testImplementation "io.mockk:mockk:1.13.16"
// org.jetbrains.kotlin:kotlin-bom artifact purpose is to align kotlin stdlib and related code versions.
// See: https://youtrack.jetbrains.com/issue/KT-55297/kotlin-stdlib-should-declare-constraints-on-kotlin-stdlib-jdk8-and-kotlin-stdlib-jdk7
implementation(platform("org.jetbrains.kotlin:kotlin-bom:2.0.21"))
diff --git a/packages/shared_preferences/shared_preferences_android/android/build.gradle b/packages/shared_preferences/shared_preferences_android/android/build.gradle
index 8a0b88a8c0ff..b25d8d6934e9 100644
--- a/packages/shared_preferences/shared_preferences_android/android/build.gradle
+++ b/packages/shared_preferences/shared_preferences_android/android/build.gradle
@@ -67,7 +67,7 @@ android {
testImplementation 'androidx.test.ext:junit-ktx:1.2.1'
testImplementation 'org.robolectric:robolectric:4.12.1'
testImplementation 'org.mockito:mockito-inline:5.2.0'
- testImplementation 'io.mockk:mockk:1.13.14'
+ testImplementation 'io.mockk:mockk:1.13.16'
}
From 5bb6a8ce7f0aae670a3789f974cd92958fcfbf67 Mon Sep 17 00:00:00 2001
From: misos1 <30872003+misos1@users.noreply.github.com>
Date: Mon, 13 Jan 2025 19:09:31 +0100
Subject: [PATCH 15/26] [video_player_avfoundation, camera_avfoundation] never
overwrite but only upgrade audio session category (#7143)
Setting category of `AVAudioSession` was moved into a wrapper which ensures that only changes which do not disable the ability to play in silent mode (`play`) and ability to record (`record`) are considered. If either the new category or old category is `play`/`record` then also the set category will be `play`/`record`. This currently means that the video player will not overwrite `PlayAndRecord` with `Playback` which causes inability to record audio by camera. Options are treated selectively so the video player will no longer overwrite flags set by camera like `DefaultToSpeaker` and camera will not overwrite `MixWithOthers` set by video player `setMixWithOthers`. It will also only change category or options if there is change to prevent lags every time is constructed `VideoPlayerController` with non-null `videoPlayerOptions` which always causes call to `setMixWithOthers`.
Test `testSeekToWhilePausedStartsDisplayLinkTemporarily` is failing on the main branch on the tested device:
``` objc
XCTAssertEqual([player position], 1234); // (([player position]) equal to (1234)) failed: ("0") is not equal to ("1234")
```
Fixes https://github.com/flutter/flutter/issues/131553
---
.../camera/camera_avfoundation/CHANGELOG.md | 4 ++
.../ios/RunnerTests/FLTCamSampleBufferTests.m | 23 +++++++
.../camera_avfoundation/CameraPlugin.m | 2 +-
.../Sources/camera_avfoundation/FLTCam.m | 60 +++++++++++++++++--
.../include/camera_avfoundation/FLTCam.h | 2 +-
.../camera/camera_avfoundation/pubspec.yaml | 2 +-
.../video_player_avfoundation/CHANGELOG.md | 3 +-
.../darwin/RunnerTests/VideoPlayerTests.m | 34 +++++++++++
.../FVPVideoPlayerPlugin.m | 46 ++++++++++++--
.../video_player_avfoundation/pubspec.yaml | 2 +-
10 files changed, 162 insertions(+), 16 deletions(-)
diff --git a/packages/camera/camera_avfoundation/CHANGELOG.md b/packages/camera/camera_avfoundation/CHANGELOG.md
index f0f4a302ae5a..eba91f29efee 100644
--- a/packages/camera/camera_avfoundation/CHANGELOG.md
+++ b/packages/camera/camera_avfoundation/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.9.17+7
+
+* Fixes changing global audio session category to be collision free across plugins.
+
## 0.9.17+6
* Updates minimum supported SDK version to Flutter 3.22/Dart 3.4.
diff --git a/packages/camera/camera_avfoundation/example/ios/RunnerTests/FLTCamSampleBufferTests.m b/packages/camera/camera_avfoundation/example/ios/RunnerTests/FLTCamSampleBufferTests.m
index b6b78f2dab28..e92d1d21da5c 100644
--- a/packages/camera/camera_avfoundation/example/ios/RunnerTests/FLTCamSampleBufferTests.m
+++ b/packages/camera/camera_avfoundation/example/ios/RunnerTests/FLTCamSampleBufferTests.m
@@ -338,4 +338,27 @@ - (void)testStartWritingShouldNotBeCalledBetweenSampleCreationAndAppending {
CFRelease(videoSample);
}
+- (void)testStartVideoRecordingWithCompletionShouldNotDisableMixWithOthers {
+ FLTCam *cam = FLTCreateCamWithCaptureSessionQueue(dispatch_queue_create("testing", NULL));
+
+ id writerMock = OCMClassMock([AVAssetWriter class]);
+ OCMStub([writerMock alloc]).andReturn(writerMock);
+ OCMStub([writerMock initWithURL:OCMOCK_ANY fileType:OCMOCK_ANY error:[OCMArg setTo:nil]])
+ .andReturn(writerMock);
+
+ [AVAudioSession.sharedInstance setCategory:AVAudioSessionCategoryPlayback
+ withOptions:AVAudioSessionCategoryOptionMixWithOthers
+ error:nil];
+
+ [cam
+ startVideoRecordingWithCompletion:^(FlutterError *_Nullable error) {
+ }
+ messengerForStreaming:nil];
+ XCTAssert(
+ AVAudioSession.sharedInstance.categoryOptions & AVAudioSessionCategoryOptionMixWithOthers,
+ @"Flag MixWithOthers was removed.");
+ XCTAssert(AVAudioSession.sharedInstance.category == AVAudioSessionCategoryPlayAndRecord,
+ @"Category should be PlayAndRecord.");
+}
+
@end
diff --git a/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/CameraPlugin.m b/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/CameraPlugin.m
index 63a49025231a..1bd44969c4cd 100644
--- a/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/CameraPlugin.m
+++ b/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/CameraPlugin.m
@@ -234,7 +234,7 @@ - (void)prepareForVideoRecordingWithCompletion:
(nonnull void (^)(FlutterError *_Nullable))completion {
__weak typeof(self) weakSelf = self;
dispatch_async(self.captureSessionQueue, ^{
- [weakSelf.camera setUpCaptureSessionForAudio];
+ [weakSelf.camera setUpCaptureSessionForAudioIfNeeded];
completion(nil);
});
}
diff --git a/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/FLTCam.m b/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/FLTCam.m
index 0b065026f10e..699dbf3a806e 100644
--- a/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/FLTCam.m
+++ b/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/FLTCam.m
@@ -237,6 +237,8 @@ - (instancetype)initWithMediaSettings:(FCPPlatformMediaSettings *)mediaSettings
_videoFormat = kCVPixelFormatType_32BGRA;
_inProgressSavePhotoDelegates = [NSMutableDictionary dictionary];
_fileFormat = FCPPlatformImageFileFormatJpeg;
+ _videoCaptureSession.automaticallyConfiguresApplicationAudioSession = NO;
+ _audioCaptureSession.automaticallyConfiguresApplicationAudioSession = NO;
// To limit memory consumption, limit the number of frames pending processing.
// After some testing, 4 was determined to be the best maximum value.
@@ -725,7 +727,8 @@ - (void)captureOutput:(AVCaptureOutput *)output
if (_isFirstVideoSample) {
[_videoWriter startSessionAtSourceTime:currentSampleTime];
// fix sample times not being numeric when pause/resume happens before first sample buffer
- // arrives https://github.com/flutter/flutter/issues/132014
+ // arrives
+ // https://github.com/flutter/flutter/issues/132014
_lastVideoSampleTime = currentSampleTime;
_lastAudioSampleTime = currentSampleTime;
_isFirstVideoSample = NO;
@@ -1283,9 +1286,7 @@ - (BOOL)setupWriterForPath:(NSString *)path {
return NO;
}
- if (_mediaSettings.enableAudio && !_isAudioSetup) {
- [self setUpCaptureSessionForAudio];
- }
+ [self setUpCaptureSessionForAudioIfNeeded];
_videoWriter = [[AVAssetWriter alloc] initWithURL:outputURL
fileType:AVFileTypeMPEG4
@@ -1365,9 +1366,42 @@ - (BOOL)setupWriterForPath:(NSString *)path {
return YES;
}
-- (void)setUpCaptureSessionForAudio {
+// This function, although slightly modified, is also in video_player_avfoundation.
+// Both need to do the same thing and run on the same thread (for example main thread).
+// Configure application wide audio session manually to prevent overwriting flag
+// MixWithOthers by capture session.
+// Only change category if it is considered an upgrade which means it can only enable
+// ability to play in silent mode or ability to record audio but never disables it,
+// that could affect other plugins which depend on this global state. Only change
+// category or options if there is change to prevent unnecessary lags and silence.
+static void upgradeAudioSessionCategory(AVAudioSessionCategory requestedCategory,
+ AVAudioSessionCategoryOptions options) {
+ NSSet *playCategories = [NSSet
+ setWithObjects:AVAudioSessionCategoryPlayback, AVAudioSessionCategoryPlayAndRecord, nil];
+ NSSet *recordCategories =
+ [NSSet setWithObjects:AVAudioSessionCategoryRecord, AVAudioSessionCategoryPlayAndRecord, nil];
+ NSSet *requiredCategories =
+ [NSSet setWithObjects:requestedCategory, AVAudioSession.sharedInstance.category, nil];
+ BOOL requiresPlay = [requiredCategories intersectsSet:playCategories];
+ BOOL requiresRecord = [requiredCategories intersectsSet:recordCategories];
+ if (requiresPlay && requiresRecord) {
+ requestedCategory = AVAudioSessionCategoryPlayAndRecord;
+ } else if (requiresPlay) {
+ requestedCategory = AVAudioSessionCategoryPlayback;
+ } else if (requiresRecord) {
+ requestedCategory = AVAudioSessionCategoryRecord;
+ }
+ options = AVAudioSession.sharedInstance.categoryOptions | options;
+ if ([requestedCategory isEqualToString:AVAudioSession.sharedInstance.category] &&
+ options == AVAudioSession.sharedInstance.categoryOptions) {
+ return;
+ }
+ [AVAudioSession.sharedInstance setCategory:requestedCategory withOptions:options error:nil];
+}
+
+- (void)setUpCaptureSessionForAudioIfNeeded {
// Don't setup audio twice or we will lose the audio.
- if (_isAudioSetup) {
+ if (!_mediaSettings.enableAudio || _isAudioSetup) {
return;
}
@@ -1383,6 +1417,20 @@ - (void)setUpCaptureSessionForAudio {
// Setup the audio output.
_audioOutput = [[AVCaptureAudioDataOutput alloc] init];
+ dispatch_block_t block = ^{
+ // Set up options implicit to AVAudioSessionCategoryPlayback to avoid conflicts with other
+ // plugins like video_player.
+ upgradeAudioSessionCategory(AVAudioSessionCategoryPlayAndRecord,
+ AVAudioSessionCategoryOptionDefaultToSpeaker |
+ AVAudioSessionCategoryOptionAllowBluetoothA2DP |
+ AVAudioSessionCategoryOptionAllowAirPlay);
+ };
+ if (!NSThread.isMainThread) {
+ dispatch_sync(dispatch_get_main_queue(), block);
+ } else {
+ block();
+ }
+
if ([_audioCaptureSession canAddInput:audioInput]) {
[_audioCaptureSession addInput:audioInput];
diff --git a/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/include/camera_avfoundation/FLTCam.h b/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/include/camera_avfoundation/FLTCam.h
index d8f97926b770..c89ee9f98e5c 100644
--- a/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/include/camera_avfoundation/FLTCam.h
+++ b/packages/camera/camera_avfoundation/ios/camera_avfoundation/Sources/camera_avfoundation/include/camera_avfoundation/FLTCam.h
@@ -113,7 +113,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)startImageStreamWithMessenger:(NSObject *)messenger;
- (void)stopImageStream;
- (void)setZoomLevel:(CGFloat)zoom withCompletion:(void (^)(FlutterError *_Nullable))completion;
-- (void)setUpCaptureSessionForAudio;
+- (void)setUpCaptureSessionForAudioIfNeeded;
@end
diff --git a/packages/camera/camera_avfoundation/pubspec.yaml b/packages/camera/camera_avfoundation/pubspec.yaml
index 70c6dccfbd09..804a8cba7b38 100644
--- a/packages/camera/camera_avfoundation/pubspec.yaml
+++ b/packages/camera/camera_avfoundation/pubspec.yaml
@@ -2,7 +2,7 @@ name: camera_avfoundation
description: iOS implementation of the camera plugin.
repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_avfoundation
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
-version: 0.9.17+6
+version: 0.9.17+7
environment:
sdk: ^3.4.0
diff --git a/packages/video_player/video_player_avfoundation/CHANGELOG.md b/packages/video_player/video_player_avfoundation/CHANGELOG.md
index 0f0b4dabac26..76b14ba3f961 100644
--- a/packages/video_player/video_player_avfoundation/CHANGELOG.md
+++ b/packages/video_player/video_player_avfoundation/CHANGELOG.md
@@ -1,5 +1,6 @@
-## NEXT
+## 2.6.6
+* Fixes changing global audio session category to be collision free across plugins.
* Updates minimum supported SDK version to Flutter 3.22/Dart 3.4.
## 2.6.5
diff --git a/packages/video_player/video_player_avfoundation/darwin/RunnerTests/VideoPlayerTests.m b/packages/video_player/video_player_avfoundation/darwin/RunnerTests/VideoPlayerTests.m
index f35d38bd9895..559c9f089d6d 100644
--- a/packages/video_player/video_player_avfoundation/darwin/RunnerTests/VideoPlayerTests.m
+++ b/packages/video_player/video_player_avfoundation/darwin/RunnerTests/VideoPlayerTests.m
@@ -840,6 +840,40 @@ - (void)testFailedToLoadVideoEventShouldBeAlwaysSent {
}
#if TARGET_OS_IOS
+- (void)testVideoPlayerShouldNotOverwritePlayAndRecordNorDefaultToSpeaker {
+ NSObject *registrar = [GetPluginRegistry()
+ registrarForPlugin:@"testVideoPlayerShouldNotOverwritePlayAndRecordNorDefaultToSpeaker"];
+ FVPVideoPlayerPlugin *videoPlayerPlugin =
+ [[FVPVideoPlayerPlugin alloc] initWithRegistrar:registrar];
+ FlutterError *error;
+
+ [AVAudioSession.sharedInstance setCategory:AVAudioSessionCategoryPlayAndRecord
+ withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker
+ error:nil];
+
+ [videoPlayerPlugin initialize:&error];
+ [videoPlayerPlugin setMixWithOthers:true error:&error];
+ XCTAssert(AVAudioSession.sharedInstance.category == AVAudioSessionCategoryPlayAndRecord,
+ @"Category should be PlayAndRecord.");
+ XCTAssert(
+ AVAudioSession.sharedInstance.categoryOptions & AVAudioSessionCategoryOptionDefaultToSpeaker,
+ @"Flag DefaultToSpeaker was removed.");
+ XCTAssert(
+ AVAudioSession.sharedInstance.categoryOptions & AVAudioSessionCategoryOptionMixWithOthers,
+ @"Flag MixWithOthers should be set.");
+
+ id sessionMock = OCMClassMock([AVAudioSession class]);
+ OCMStub([sessionMock sharedInstance]).andReturn(sessionMock);
+ OCMStub([sessionMock category]).andReturn(AVAudioSessionCategoryPlayAndRecord);
+ OCMStub([sessionMock categoryOptions])
+ .andReturn(AVAudioSessionCategoryOptionMixWithOthers |
+ AVAudioSessionCategoryOptionDefaultToSpeaker);
+ OCMReject([sessionMock setCategory:OCMOCK_ANY withOptions:0 error:[OCMArg setTo:nil]])
+ .ignoringNonObjectArgs();
+
+ [videoPlayerPlugin setMixWithOthers:true error:&error];
+}
+
- (void)validateTransformFixForOrientation:(UIImageOrientation)orientation {
AVAssetTrack *track = [[FakeAVAssetTrack alloc] initWithOrientation:orientation];
CGAffineTransform t = FVPGetStandardizedTransformForTrack(track);
diff --git a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayerPlugin.m b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayerPlugin.m
index 7c70da03d664..0834b10d1ae6 100644
--- a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayerPlugin.m
+++ b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayerPlugin.m
@@ -90,10 +90,46 @@ - (int64_t)onPlayerSetup:(FVPVideoPlayer *)player frameUpdater:(FVPFrameUpdater
return textureId;
}
+// This function, although slightly modified, is also in camera_avfoundation.
+// Both need to do the same thing and run on the same thread (for example main thread).
+// Do not overwrite PlayAndRecord with Playback which causes inability to record
+// audio, do not overwrite all options.
+// Only change category if it is considered an upgrade which means it can only enable
+// ability to play in silent mode or ability to record audio but never disables it,
+// that could affect other plugins which depend on this global state. Only change
+// category or options if there is change to prevent unnecessary lags and silence.
+#if TARGET_OS_IOS
+static void upgradeAudioSessionCategory(AVAudioSessionCategory requestedCategory,
+ AVAudioSessionCategoryOptions options,
+ AVAudioSessionCategoryOptions clearOptions) {
+ NSSet *playCategories = [NSSet
+ setWithObjects:AVAudioSessionCategoryPlayback, AVAudioSessionCategoryPlayAndRecord, nil];
+ NSSet *recordCategories =
+ [NSSet setWithObjects:AVAudioSessionCategoryRecord, AVAudioSessionCategoryPlayAndRecord, nil];
+ NSSet *requiredCategories =
+ [NSSet setWithObjects:requestedCategory, AVAudioSession.sharedInstance.category, nil];
+ BOOL requiresPlay = [requiredCategories intersectsSet:playCategories];
+ BOOL requiresRecord = [requiredCategories intersectsSet:recordCategories];
+ if (requiresPlay && requiresRecord) {
+ requestedCategory = AVAudioSessionCategoryPlayAndRecord;
+ } else if (requiresPlay) {
+ requestedCategory = AVAudioSessionCategoryPlayback;
+ } else if (requiresRecord) {
+ requestedCategory = AVAudioSessionCategoryRecord;
+ }
+ options = (AVAudioSession.sharedInstance.categoryOptions & ~clearOptions) | options;
+ if ([requestedCategory isEqualToString:AVAudioSession.sharedInstance.category] &&
+ options == AVAudioSession.sharedInstance.categoryOptions) {
+ return;
+ }
+ [AVAudioSession.sharedInstance setCategory:requestedCategory withOptions:options error:nil];
+}
+#endif
+
- (void)initialize:(FlutterError *__autoreleasing *)error {
#if TARGET_OS_IOS
// Allow audio playback when the Ring/Silent switch is set to silent
- [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
+ upgradeAudioSessionCategory(AVAudioSessionCategoryPlayback, 0, 0);
#endif
[self.playersByTextureId
@@ -204,11 +240,11 @@ - (void)setMixWithOthers:(BOOL)mixWithOthers
// AVAudioSession doesn't exist on macOS, and audio always mixes, so just no-op.
#else
if (mixWithOthers) {
- [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
- withOptions:AVAudioSessionCategoryOptionMixWithOthers
- error:nil];
+ upgradeAudioSessionCategory(AVAudioSession.sharedInstance.category,
+ AVAudioSessionCategoryOptionMixWithOthers, 0);
} else {
- [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
+ upgradeAudioSessionCategory(AVAudioSession.sharedInstance.category, 0,
+ AVAudioSessionCategoryOptionMixWithOthers);
}
#endif
}
diff --git a/packages/video_player/video_player_avfoundation/pubspec.yaml b/packages/video_player/video_player_avfoundation/pubspec.yaml
index e6e72fefab27..c20357d78044 100644
--- a/packages/video_player/video_player_avfoundation/pubspec.yaml
+++ b/packages/video_player/video_player_avfoundation/pubspec.yaml
@@ -2,7 +2,7 @@ name: video_player_avfoundation
description: iOS and macOS implementation of the video_player plugin.
repository: https://github.com/flutter/packages/tree/main/packages/video_player/video_player_avfoundation
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22
-version: 2.6.5
+version: 2.6.6
environment:
sdk: ^3.4.0
From d682dcf71e49a1472194f91a61678b304dfbf2a2 Mon Sep 17 00:00:00 2001
From: engine-flutter-autoroll
Date: Mon, 13 Jan 2025 14:06:03 -0500
Subject: [PATCH 16/26] Roll Flutter from 864d4f59dde0 to 72db8f69e339 (11
revisions) (#8421)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
https://github.com/flutter/flutter/compare/864d4f59dde0...72db8f69e339
2025-01-13 engine-flutter-autoroll@skia.org Roll Packages from 65547511c004 to 3c3bc6832b39 (16 revisions) (flutter/flutter#161515)
2025-01-13 tessertaha@gmail.com Update error message for when leading/trailing width exceeds `ListTile` width and add missing test (flutter/flutter#161091)
2025-01-13 tessertaha@gmail.com Deprecate unused `ButtonStyleButton.iconAlignment` property (flutter/flutter#160023)
2025-01-12 robert.ancell@canonical.com Provide monitor information. (flutter/flutter#161359)
2025-01-11 jonahwilliams@google.com [android_engine_test] Remove background/foreground from surface texture trampoline test. (flutter/flutter#161441)
2025-01-11 matanlurey@users.noreply.github.com Remove some miscellaneous references to Cirrus. (flutter/flutter#161390)
2025-01-11 47866232+chunhtai@users.noreply.github.com add semantics role and tab (flutter/flutter#161260)
2025-01-10 58190796+MitchellGoodwin@users.noreply.github.com CupertinoSheetRoute (flutter/flutter#157568)
2025-01-10 31859944+LongCatIsLooong@users.noreply.github.com Update `TextEditingController.text` documentation to recommend against using it in production code (flutter/flutter#157769)
2025-01-10 github@alexv525.com ð [tool] Add a wirelessly connected device name as `displayName` (flutter/flutter#160497)
2025-01-10 codefu@google.com FixForward: method was renamed (flutter/flutter#161431)
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
Please CC stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.
To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
---
.ci/flutter_master.version | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.ci/flutter_master.version b/.ci/flutter_master.version
index 85c1173b0833..6b965fe696d7 100644
--- a/.ci/flutter_master.version
+++ b/.ci/flutter_master.version
@@ -1 +1 @@
-864d4f59dde0afab749d5530cf9902e59ccbaacf
+72db8f69e33917cd6e7bd16bb04fc6cee42676d0
From 1182ca9870f3543dc625c8197aa5a6a5793554a5 Mon Sep 17 00:00:00 2001
From: Igor Kharakhordin
Date: Mon, 13 Jan 2025 20:06:06 +0100
Subject: [PATCH 17/26] [webview_flutter_android] Add additional WebSettings
methods (#8270)
Exposes native WebSettings such as setAllowContentAccess and setGeolocationEnabled in order to give developers more options to configure the native webview and restrict these features that are enabled by default.
Fixes [160070](https://github.com/flutter/flutter/issues/160070)
---
.../webview_flutter_android/CHANGELOG.md | 6 ++
.../webviewflutter/AndroidWebkitLibrary.g.kt | 54 ++++++++++++++++++
.../webviewflutter/WebSettingsProxyApi.java | 10 ++++
.../lib/src/android_webkit.g.dart | 56 +++++++++++++++++++
.../lib/src/android_webview_controller.dart | 12 ++++
.../pigeons/android_webkit.dart | 6 ++
.../webview_flutter_android/pubspec.yaml | 2 +-
.../test/android_webview_controller_test.dart | 32 +++++++++++
...android_webview_controller_test.mocks.dart | 50 +++++++++++++++++
...oid_webview_cookie_manager_test.mocks.dart | 30 ++++++++++
.../webview_android_widget_test.mocks.dart | 20 +++++++
11 files changed, 277 insertions(+), 1 deletion(-)
diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
index 24633e85bd86..539c54c8a9fe 100644
--- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 4.3.0
+
+* Adds support for disabling content URL access within WebView and disabling the Geolocation API.
+ See `AndroidWebViewController.setAllowContentAccess` and
+ `AndroidWebViewController.setGeolocationEnabled`.
+
## 4.2.0
* Adds support for configuring file access permissions. See `AndroidWebViewController.setAllowFileAccess`.
diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt
index f28082725487..92cbf74aaa17 100644
--- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt
+++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt
@@ -2104,6 +2104,12 @@ abstract class PigeonApiWebSettings(
/** Enables or disables file access within WebView. */
abstract fun setAllowFileAccess(pigeon_instance: android.webkit.WebSettings, enabled: Boolean)
+ /** Enables or disables content URL access within WebView. */
+ abstract fun setAllowContentAccess(pigeon_instance: android.webkit.WebSettings, enabled: Boolean)
+
+ /** Sets whether Geolocation is enabled within WebView. */
+ abstract fun setGeolocationEnabled(pigeon_instance: android.webkit.WebSettings, enabled: Boolean)
+
/** Sets the text zoom of the page in percent. */
abstract fun setTextZoom(pigeon_instance: android.webkit.WebSettings, textZoom: Long)
@@ -2402,6 +2408,54 @@ abstract class PigeonApiWebSettings(
channel.setMessageHandler(null)
}
}
+ run {
+ val channel =
+ BasicMessageChannel(
+ binaryMessenger,
+ "dev.flutter.pigeon.webview_flutter_android.WebSettings.setAllowContentAccess",
+ codec)
+ if (api != null) {
+ channel.setMessageHandler { message, reply ->
+ val args = message as List
+ val pigeon_instanceArg = args[0] as android.webkit.WebSettings
+ val enabledArg = args[1] as Boolean
+ val wrapped: List =
+ try {
+ api.setAllowContentAccess(pigeon_instanceArg, enabledArg)
+ listOf(null)
+ } catch (exception: Throwable) {
+ wrapError(exception)
+ }
+ reply.reply(wrapped)
+ }
+ } else {
+ channel.setMessageHandler(null)
+ }
+ }
+ run {
+ val channel =
+ BasicMessageChannel(
+ binaryMessenger,
+ "dev.flutter.pigeon.webview_flutter_android.WebSettings.setGeolocationEnabled",
+ codec)
+ if (api != null) {
+ channel.setMessageHandler { message, reply ->
+ val args = message as List
+ val pigeon_instanceArg = args[0] as android.webkit.WebSettings
+ val enabledArg = args[1] as Boolean
+ val wrapped: List =
+ try {
+ api.setGeolocationEnabled(pigeon_instanceArg, enabledArg)
+ listOf(null)
+ } catch (exception: Throwable) {
+ wrapError(exception)
+ }
+ reply.reply(wrapped)
+ }
+ } else {
+ channel.setMessageHandler(null)
+ }
+ }
run {
val channel =
BasicMessageChannel(
diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsProxyApi.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsProxyApi.java
index 82fa32b8150e..43966249703a 100644
--- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsProxyApi.java
+++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsProxyApi.java
@@ -81,6 +81,16 @@ public void setAllowFileAccess(@NonNull WebSettings pigeon_instance, boolean ena
pigeon_instance.setAllowFileAccess(enabled);
}
+ @Override
+ public void setAllowContentAccess(@NonNull WebSettings pigeon_instance, boolean enabled) {
+ pigeon_instance.setAllowContentAccess(enabled);
+ }
+
+ @Override
+ public void setGeolocationEnabled(@NonNull WebSettings pigeon_instance, boolean enabled) {
+ pigeon_instance.setGeolocationEnabled(enabled);
+ }
+
@Override
public void setTextZoom(@NonNull WebSettings pigeon_instance, long textZoom) {
pigeon_instance.setTextZoom((int) textZoom);
diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart
index fc7174a27d08..3ae3a187867c 100644
--- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart
+++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart
@@ -2615,6 +2615,62 @@ class WebSettings extends PigeonInternalProxyApiBaseClass {
}
}
+ /// Enables or disables content URL access within WebView.
+ Future setAllowContentAccess(bool enabled) async {
+ final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec =
+ _pigeonVar_codecWebSettings;
+ final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger;
+ const String pigeonVar_channelName =
+ 'dev.flutter.pigeon.webview_flutter_android.WebSettings.setAllowContentAccess';
+ final BasicMessageChannel