From c59aad8f1023e318687e70fb33a790486e6aafd4 Mon Sep 17 00:00:00 2001 From: Mairramer Date: Sat, 15 Apr 2023 21:10:59 -0300 Subject: [PATCH 1/7] [camera] Provides a default exposure point if null --- .../exposurepoint/ExposurePointFeature.java | 18 ++++++++++--- .../ExposurePointFeatureTest.java | 27 ++++++++++++++++--- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java index 336e756e9ed..85d0ee703b6 100644 --- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java +++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java @@ -14,12 +14,14 @@ import io.flutter.plugins.camera.features.CameraFeature; import io.flutter.plugins.camera.features.Point; import io.flutter.plugins.camera.features.sensororientation.SensorOrientationFeature; +import java.util.Arrays; /** Exposure point controls where in the frame exposure metering will come from. */ public class ExposurePointFeature extends CameraFeature { private Size cameraBoundaries; private Point exposurePoint; + private MeteringRectangle[] defaultExposureRectangle; private MeteringRectangle exposureRectangle; private final SensorOrientationFeature sensorOrientationFeature; @@ -72,9 +74,14 @@ public void updateBuilder(CaptureRequest.Builder requestBuilder) { if (!checkIsSupported()) { return; } - requestBuilder.set( - CaptureRequest.CONTROL_AE_REGIONS, - exposureRectangle == null ? null : new MeteringRectangle[] {exposureRectangle}); + if (defaultExposureRectangle == null) { + defaultExposureRectangle = requestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS); + } + if (exposureRectangle != null) { + requestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS, new MeteringRectangle[] {exposureRectangle}); + } else if (shouldReset(requestBuilder)) { + requestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS, defaultExposureRectangle); + } } private void buildExposureRectangle() { @@ -96,4 +103,9 @@ private void buildExposureRectangle() { this.cameraBoundaries, this.exposurePoint.x, this.exposurePoint.y, orientation); } } + + public boolean shouldReset(CaptureRequest.Builder requestBuilder) { + MeteringRectangle[] currentRectangles = requestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS); + return currentRectangles == null || currentRectangles.length == 0; + } } diff --git a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java index 800c3f74d1d..0eafd4d9ef6 100644 --- a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java +++ b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java @@ -10,6 +10,7 @@ import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.isNull; +import static org.mockito.ArgumentMatchers.same; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; @@ -29,12 +30,15 @@ import org.junit.Test; import org.mockito.MockedStatic; import org.mockito.Mockito; +import java.util.Arrays; public class ExposurePointFeatureTest { Size mockCameraBoundaries; SensorOrientationFeature mockSensorOrientationFeature; DeviceOrientationManager mockDeviceOrientationManager; + MeteringRectangle[] mockDefaultExposureRectangle; + MeteringRectangle mockExposureRectangle; @Before public void setUp() { @@ -290,7 +294,7 @@ public void updateBuilder_shouldNotSetMeteringRectangleWhenNoValidBoundariesAreS exposurePointFeature.updateBuilder(mockCaptureRequestBuilder); - verify(mockCaptureRequestBuilder, times(1)).set(any(), isNull()); + verify(mockCaptureRequestBuilder, never()).set(any(), any()); } @Test @@ -308,6 +312,23 @@ public void updateBuilder_shouldNotSetMeteringRectangleWhenNoValidCoordsAreSuppl exposurePointFeature.updateBuilder(mockCaptureRequestBuilder); exposurePointFeature.setValue(new Point(null, 0d)); exposurePointFeature.updateBuilder(mockCaptureRequestBuilder); - verify(mockCaptureRequestBuilder, times(3)).set(any(), isNull()); + + verify(mockCaptureRequestBuilder, never()).set(any(), any()); + } + + @Test + public void testShouldResetReturnsFalse() { + CaptureRequest.Builder mockCaptureRequestBuilder = mock(CaptureRequest.Builder.class); + MeteringRectangle[] defaultRectangles = new MeteringRectangle[1]; + defaultRectangles[0] = mock(MeteringRectangle.class); + when(mockCaptureRequestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS)).thenReturn(defaultRectangles); + mockCaptureRequestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS, defaultRectangles); + + ExposurePointFeature exposurePointFeature = mock(ExposurePointFeature.class); + exposurePointFeature.setCameraBoundaries(this.mockCameraBoundaries); + exposurePointFeature.setValue(new Point(0.5, 0.5)); + exposurePointFeature.updateBuilder(mockCaptureRequestBuilder); + + assertFalse(exposurePointFeature.shouldReset(mockCaptureRequestBuilder)); } -} +} \ No newline at end of file From 71044377c261fa26647418a376838156ad882a53 Mon Sep 17 00:00:00 2001 From: Mairramer Date: Sat, 15 Apr 2023 21:35:42 -0300 Subject: [PATCH 2/7] [camera] fix format --- .../features/exposurepoint/ExposurePointFeature.java | 6 +++--- .../features/exposurepoint/ExposurePointFeatureTest.java | 8 +++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java index 85d0ee703b6..2597eec071c 100644 --- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java +++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java @@ -14,7 +14,6 @@ import io.flutter.plugins.camera.features.CameraFeature; import io.flutter.plugins.camera.features.Point; import io.flutter.plugins.camera.features.sensororientation.SensorOrientationFeature; -import java.util.Arrays; /** Exposure point controls where in the frame exposure metering will come from. */ public class ExposurePointFeature extends CameraFeature { @@ -78,7 +77,8 @@ public void updateBuilder(CaptureRequest.Builder requestBuilder) { defaultExposureRectangle = requestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS); } if (exposureRectangle != null) { - requestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS, new MeteringRectangle[] {exposureRectangle}); + requestBuilder.set( + CaptureRequest.CONTROL_AE_REGIONS, new MeteringRectangle[] {exposureRectangle}); } else if (shouldReset(requestBuilder)) { requestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS, defaultExposureRectangle); } @@ -104,7 +104,7 @@ private void buildExposureRectangle() { } } - public boolean shouldReset(CaptureRequest.Builder requestBuilder) { + public boolean shouldReset(CaptureRequest.Builder requestBuilder) { MeteringRectangle[] currentRectangles = requestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS); return currentRectangles == null || currentRectangles.length == 0; } diff --git a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java index 0eafd4d9ef6..49e83ef7ec2 100644 --- a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java +++ b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java @@ -9,8 +9,6 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.isNull; -import static org.mockito.ArgumentMatchers.same; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; @@ -30,7 +28,6 @@ import org.junit.Test; import org.mockito.MockedStatic; import org.mockito.Mockito; -import java.util.Arrays; public class ExposurePointFeatureTest { @@ -321,7 +318,8 @@ public void testShouldResetReturnsFalse() { CaptureRequest.Builder mockCaptureRequestBuilder = mock(CaptureRequest.Builder.class); MeteringRectangle[] defaultRectangles = new MeteringRectangle[1]; defaultRectangles[0] = mock(MeteringRectangle.class); - when(mockCaptureRequestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS)).thenReturn(defaultRectangles); + when(mockCaptureRequestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS)) + .thenReturn(defaultRectangles); mockCaptureRequestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS, defaultRectangles); ExposurePointFeature exposurePointFeature = mock(ExposurePointFeature.class); @@ -331,4 +329,4 @@ public void testShouldResetReturnsFalse() { assertFalse(exposurePointFeature.shouldReset(mockCaptureRequestBuilder)); } -} \ No newline at end of file +} From 199c6f55f87056bf8448f23450493ce4d2227623 Mon Sep 17 00:00:00 2001 From: Mairramer Date: Sat, 15 Apr 2023 21:57:32 -0300 Subject: [PATCH 3/7] [camera] bump version --- packages/camera/camera_android/CHANGELOG.md | 4 ++++ packages/camera/camera_android/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/camera/camera_android/CHANGELOG.md b/packages/camera/camera_android/CHANGELOG.md index c4c772bfd60..8d7b8d6a20c 100644 --- a/packages/camera/camera_android/CHANGELOG.md +++ b/packages/camera/camera_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.10.6 + +* Provides a default exposure point if null + ## 0.10.5 * Allows camera to be switched while video recording. diff --git a/packages/camera/camera_android/pubspec.yaml b/packages/camera/camera_android/pubspec.yaml index aff401efcde..4e05a55f4d2 100644 --- a/packages/camera/camera_android/pubspec.yaml +++ b/packages/camera/camera_android/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_android description: Android implementation of the camera plugin. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.10.5 +version: 0.10.6 environment: sdk: ">=2.17.0 <4.0.0" From 64809d4065443d279b95c24d2bf728d500312034 Mon Sep 17 00:00:00 2001 From: Mairramer Date: Sat, 15 Apr 2023 22:04:57 -0300 Subject: [PATCH 4/7] [camera] rollback tests --- .../features/exposurepoint/ExposurePointFeatureTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java index 49e83ef7ec2..3fd7748182d 100644 --- a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java +++ b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java @@ -9,6 +9,7 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; @@ -291,7 +292,7 @@ public void updateBuilder_shouldNotSetMeteringRectangleWhenNoValidBoundariesAreS exposurePointFeature.updateBuilder(mockCaptureRequestBuilder); - verify(mockCaptureRequestBuilder, never()).set(any(), any()); + verify(mockCaptureRequestBuilder, times(1)).set(any(), isNull()); } @Test @@ -310,7 +311,7 @@ public void updateBuilder_shouldNotSetMeteringRectangleWhenNoValidCoordsAreSuppl exposurePointFeature.setValue(new Point(null, 0d)); exposurePointFeature.updateBuilder(mockCaptureRequestBuilder); - verify(mockCaptureRequestBuilder, never()).set(any(), any()); + verify(mockCaptureRequestBuilder, times(3)).set(any(), isNull()); } @Test From 941e11556383063345e57937d321962e8dde2620 Mon Sep 17 00:00:00 2001 From: Mairramer Date: Sat, 15 Apr 2023 21:10:59 -0300 Subject: [PATCH 5/7] [camera] Provides a default exposure point if null MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [camera] fix format Bump actions/checkout from 3.5.0 to 3.5.2 (#3710) Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.0 to 3.5.2.
Release notes

Sourced from actions/checkout's releases.

v3.5.2

What's Changed

Full Changelog: https://github.com/actions/checkout/compare/v3.5.1...v3.5.2

v3.5.1

What's Changed

New Contributors

Full Changelog: https://github.com/actions/checkout/compare/v3.5.0...v3.5.1

Changelog

Sourced from actions/checkout's changelog.

Changelog

v3.5.2

v3.5.1

v3.5.0

v3.4.0

v3.3.0

v3.2.0

v3.1.0

v3.0.2

v3.0.1

v3.0.0

v2.3.1

v2.3.0

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=3.5.0&new-version=3.5.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`. ---
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 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)
Bump github/codeql-action from 2.2.9 to 2.2.12 (#3711) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.2.9 to 2.2.12.
Changelog

Sourced from github/codeql-action's changelog.

CodeQL Action Changelog

[UNRELEASED]

No user facing changes.

2.2.12 - 13 Apr 2023

  • Include the value of the GITHUB_RUN_ATTEMPT environment variable in the telemetry sent to GitHub. #1640
  • Improve the ease of debugging failed runs configured using default setup. The CodeQL Action will now upload diagnostic information to Code Scanning from failed runs configured using default setup. You can view this diagnostic information on the tool status page. #1619

2.2.11 - 06 Apr 2023

No user facing changes.

2.2.10 - 05 Apr 2023

  • Update default CodeQL bundle version to 2.12.6. #1629

2.2.9 - 27 Mar 2023

  • Customers post-processing the SARIF output of the analyze Action before uploading it to Code Scanning will benefit from an improved debugging experience. #1598
    • The CodeQL Action will now upload a SARIF file with debugging information to Code Scanning on failed runs for customers using upload: false. Previously, this was only available for customers using the default value of the upload input.
    • The upload input to the analyze Action now accepts the following values:
      • always is the default value, which uploads the SARIF file to Code Scanning for successful and failed runs.
      • failure-only is recommended for customers post-processing the SARIF file before uploading it to Code Scanning. This option uploads debugging information to Code Scanning for failed runs to improve the debugging experience.
      • never avoids uploading the SARIF file to Code Scanning even if the code scanning run fails. This is not recommended for external users since it complicates debugging.
      • The legacy true and false options will be interpreted as always and failure-only respectively.

2.2.8 - 22 Mar 2023

  • Update default CodeQL bundle version to 2.12.5. #1585

2.2.7 - 15 Mar 2023

No user facing changes.

2.2.6 - 10 Mar 2023

  • Update default CodeQL bundle version to 2.12.4. #1561

2.2.5 - 24 Feb 2023

  • Update default CodeQL bundle version to 2.12.3. #1543

2.2.4 - 10 Feb 2023

No user facing changes.

2.2.3 - 08 Feb 2023

... (truncated)

Commits
  • 7df0ce3 Merge pull request #1646 from github/update-v2.2.12-d944b3423
  • fbedeca Update changelog for v2.2.12
  • d944b34 Merge pull request #1619 from github/henrymercer/default-setup-workflow
  • e3210d8 Add changelog note
  • 599f492 Allow passing the workflow via an environment variable
  • ed6c499 Merge pull request #1645 from github/henrymercer/remove-dependencies
  • c2b5d64 Require xml2js >=0.5.0 to address CVE-2023-0842
  • 9c13316 Remove unused dependencies
  • 98f7bbd Add workflow_run_attempt data to status report (#1640)
  • d7b9dcd Bump peter-evans/create-pull-request from 4.2.4 to 5.0.0 (#1643)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=2.2.9&new-version=2.2.12)](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 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)
Roll Flutter from f74054467bed to 00171b07130e (17 revisions) (#3717) https://github.com/flutter/flutter/compare/f74054467bed...00171b07130e 2023-04-15 engine-flutter-autoroll@skia.org Roll Flutter Engine from f24e37bb4d9e to 41c1ea9a8283 (1 revision) (flutter/flutter#124916) 2023-04-15 engine-flutter-autoroll@skia.org Roll Flutter Engine from f6e64a87407f to f24e37bb4d9e (2 revisions) (flutter/flutter#124914) 2023-04-15 engine-flutter-autoroll@skia.org Roll Flutter Engine from c8d84cf3b761 to f6e64a87407f (2 revisions) (flutter/flutter#124913) 2023-04-15 engine-flutter-autoroll@skia.org Roll Flutter Engine from 4552a6e105f1 to c8d84cf3b761 (1 revision) (flutter/flutter#124907) 2023-04-15 engine-flutter-autoroll@skia.org Roll Flutter Engine from 0a5ed019cea5 to 4552a6e105f1 (1 revision) (flutter/flutter#124904) 2023-04-15 engine-flutter-autoroll@skia.org Roll Flutter Engine from f7945293aced to 0a5ed019cea5 (2 revisions) (flutter/flutter#124901) 2023-04-15 engine-flutter-autoroll@skia.org Roll Flutter Engine from e9739bca5c66 to f7945293aced (5 revisions) (flutter/flutter#124900) 2023-04-14 engine-flutter-autoroll@skia.org Roll Flutter Engine from 413e95d1e22d to e9739bca5c66 (7 revisions) (flutter/flutter#124896) 2023-04-14 jhy03261997@gmail.com Add optional labelText and semanticLabel to Checkbox (flutter/flutter#124555) 2023-04-14 engine-flutter-autoroll@skia.org Roll Flutter Engine from 9c314065c852 to 413e95d1e22d (1 revision) (flutter/flutter#124892) 2023-04-14 engine-flutter-autoroll@skia.org Roll Flutter Engine from 87fc46430e1d to 9c314065c852 (5 revisions) (flutter/flutter#124886) 2023-04-14 engine-flutter-autoroll@skia.org Roll Flutter Engine from ea0e1b17006c to 87fc46430e1d (1 revision) (flutter/flutter#124878) 2023-04-14 jmccandless@google.com iOS context menu shadow (flutter/flutter#122429) 2023-04-14 engine-flutter-autoroll@skia.org Roll Flutter Engine from 4b96e38c9275 to ea0e1b17006c (1 revision) (flutter/flutter#124867) 2023-04-14 jacksongardner@google.com Add option to run wasm-opt on module output. (flutter/flutter#124831) 2023-04-14 pateltirth454@gmail.com [CupertinoListSection] adds new property separatorColor (flutter/flutter#124803) 2023-04-14 engine-flutter-autoroll@skia.org Roll Packages from d01f4eaabb54 to e4ec15590935 (5 revisions) (flutter/flutter#124863) 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 bmparr@google.com,rmistry@google.com,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://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md [camera] bump version [camera] rollback tests --- .ci/flutter_master.version | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/scorecards-analysis.yml | 4 ++-- packages/camera/camera_android/CHANGELOG.md | 4 ++++ .../exposurepoint/ExposurePointFeature.java | 18 ++++++++++++++--- .../ExposurePointFeatureTest.java | 20 +++++++++++++++++++ packages/camera/camera_android/pubspec.yaml | 2 +- 7 files changed, 44 insertions(+), 8 deletions(-) diff --git a/.ci/flutter_master.version b/.ci/flutter_master.version index dd926b8256f..e7530238af3 100644 --- a/.ci/flutter_master.version +++ b/.ci/flutter_master.version @@ -1 +1 @@ -f74054467bed40529b42ace97a5dd6a7b5039c49 +00171b07130ee3b177af0d1da56c8545da07e489 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e99af2ba0e6..8ac6d0e71b3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,7 +27,7 @@ jobs: cd $GITHUB_WORKSPACE # Checks out a copy of the repo. - name: Check out code - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 + uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab with: fetch-depth: 0 # Fetch all history so the tool can get all the tags to determine version. - name: Set up tools diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index f132380e62f..d00625bed0b 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -21,7 +21,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v2.4.0 + uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v2.4.0 with: persist-credentials: false @@ -49,6 +49,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@04df1262e6247151b5ac09cd2c303ac36ad3f62b # v1.0.26 + uses: github/codeql-action/upload-sarif@7df0ce34898d659f95c0c4a09eaa8d4e32ee64db # v1.0.26 with: sarif_file: results.sarif diff --git a/packages/camera/camera_android/CHANGELOG.md b/packages/camera/camera_android/CHANGELOG.md index c4c772bfd60..8d7b8d6a20c 100644 --- a/packages/camera/camera_android/CHANGELOG.md +++ b/packages/camera/camera_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.10.6 + +* Provides a default exposure point if null + ## 0.10.5 * Allows camera to be switched while video recording. diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java index 336e756e9ed..2597eec071c 100644 --- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java +++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java @@ -20,6 +20,7 @@ public class ExposurePointFeature extends CameraFeature { private Size cameraBoundaries; private Point exposurePoint; + private MeteringRectangle[] defaultExposureRectangle; private MeteringRectangle exposureRectangle; private final SensorOrientationFeature sensorOrientationFeature; @@ -72,9 +73,15 @@ public void updateBuilder(CaptureRequest.Builder requestBuilder) { if (!checkIsSupported()) { return; } - requestBuilder.set( - CaptureRequest.CONTROL_AE_REGIONS, - exposureRectangle == null ? null : new MeteringRectangle[] {exposureRectangle}); + if (defaultExposureRectangle == null) { + defaultExposureRectangle = requestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS); + } + if (exposureRectangle != null) { + requestBuilder.set( + CaptureRequest.CONTROL_AE_REGIONS, new MeteringRectangle[] {exposureRectangle}); + } else if (shouldReset(requestBuilder)) { + requestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS, defaultExposureRectangle); + } } private void buildExposureRectangle() { @@ -96,4 +103,9 @@ private void buildExposureRectangle() { this.cameraBoundaries, this.exposurePoint.x, this.exposurePoint.y, orientation); } } + + public boolean shouldReset(CaptureRequest.Builder requestBuilder) { + MeteringRectangle[] currentRectangles = requestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS); + return currentRectangles == null || currentRectangles.length == 0; + } } diff --git a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java index 800c3f74d1d..3fd7748182d 100644 --- a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java +++ b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java @@ -35,6 +35,8 @@ public class ExposurePointFeatureTest { Size mockCameraBoundaries; SensorOrientationFeature mockSensorOrientationFeature; DeviceOrientationManager mockDeviceOrientationManager; + MeteringRectangle[] mockDefaultExposureRectangle; + MeteringRectangle mockExposureRectangle; @Before public void setUp() { @@ -308,6 +310,24 @@ public void updateBuilder_shouldNotSetMeteringRectangleWhenNoValidCoordsAreSuppl exposurePointFeature.updateBuilder(mockCaptureRequestBuilder); exposurePointFeature.setValue(new Point(null, 0d)); exposurePointFeature.updateBuilder(mockCaptureRequestBuilder); + verify(mockCaptureRequestBuilder, times(3)).set(any(), isNull()); } + + @Test + public void testShouldResetReturnsFalse() { + CaptureRequest.Builder mockCaptureRequestBuilder = mock(CaptureRequest.Builder.class); + MeteringRectangle[] defaultRectangles = new MeteringRectangle[1]; + defaultRectangles[0] = mock(MeteringRectangle.class); + when(mockCaptureRequestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS)) + .thenReturn(defaultRectangles); + mockCaptureRequestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS, defaultRectangles); + + ExposurePointFeature exposurePointFeature = mock(ExposurePointFeature.class); + exposurePointFeature.setCameraBoundaries(this.mockCameraBoundaries); + exposurePointFeature.setValue(new Point(0.5, 0.5)); + exposurePointFeature.updateBuilder(mockCaptureRequestBuilder); + + assertFalse(exposurePointFeature.shouldReset(mockCaptureRequestBuilder)); + } } diff --git a/packages/camera/camera_android/pubspec.yaml b/packages/camera/camera_android/pubspec.yaml index aff401efcde..4e05a55f4d2 100644 --- a/packages/camera/camera_android/pubspec.yaml +++ b/packages/camera/camera_android/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_android description: Android implementation of the camera plugin. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.10.5 +version: 0.10.6 environment: sdk: ">=2.17.0 <4.0.0" From d0ec237ff2f6dcb5adec17c4fefbd712f7863f2d Mon Sep 17 00:00:00 2001 From: Mairramer <50643541+Mairramer@users.noreply.github.com> Date: Mon, 17 Apr 2023 22:12:04 -0300 Subject: [PATCH 6/7] Update packages/camera/camera_android/CHANGELOG.md Co-authored-by: Camille Simon <43054281+camsim99@users.noreply.github.com> --- packages/camera/camera_android/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_android/CHANGELOG.md b/packages/camera/camera_android/CHANGELOG.md index 8d7b8d6a20c..7f145fdc0ea 100644 --- a/packages/camera/camera_android/CHANGELOG.md +++ b/packages/camera/camera_android/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.10.6 -* Provides a default exposure point if null +* Provides a default exposure point if null. ## 0.10.5 From 76f5c64758c3fff1184da160305f3f9ca47ba9fe Mon Sep 17 00:00:00 2001 From: Mairramer Date: Tue, 18 Apr 2023 11:04:52 -0300 Subject: [PATCH 7/7] [camera] create a default imageStreamReader --- .../main/java/io/flutter/plugins/camera/Camera.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java index 500407009c5..a101732abb2 100644 --- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java +++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java @@ -1195,6 +1195,17 @@ public void onCancel(Object o) { } private void setImageStreamImageAvailableListener(final EventChannel.EventSink imageStreamSink) { + // If the imageStreamReader is not initialized yet, initialize it. + if (imageStreamReader == null) { + Integer imageFormat = supportedImageFormats.get(imageFormatGroup); + imageFormat = (imageFormat == null) ? ImageFormat.YUV_420_888 : imageFormat; + + ResolutionFeature resolutionFeature = cameraFeatures.getResolution(); + int width = resolutionFeature.getPreviewSize().getWidth(); + int height = resolutionFeature.getPreviewSize().getHeight(); + + imageStreamReader = ImageReader.newInstance(width, height, imageFormat, 1); + } imageStreamReader.setOnImageAvailableListener( reader -> { Image img = reader.acquireNextImage();