Skip to content

Commit 7660274

Browse files
Merge branch 'main' into dependabot/github_actions/github/codeql-action-2.21.1
2 parents f176366 + c9bbe50 commit 7660274

File tree

78 files changed

+2459
-636
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+2459
-636
lines changed

.ci.yaml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,65 @@ targets:
464464
{"dependency": "android_virtual_device", "version": "33"}
465465
]
466466
467+
# Device versions of Android integration tests, run via FTL.
468+
# TODO(stuartmorgan): Revisit whether physical device tests are redundant once
469+
# we have more data about emulator tests; see
470+
# https://github.com/flutter/flutter/issues/131429.
471+
472+
- name: Linux_android android_device_tests_shard_1 master
473+
recipe: packages/packages
474+
timeout: 60
475+
properties:
476+
target_file: android_device_tests.yaml
477+
channel: master
478+
version_file: flutter_master.version
479+
package_sharding: "--shardIndex 0 --shardCount 6"
480+
481+
- name: Linux_android android_device_tests_shard_2 master
482+
recipe: packages/packages
483+
timeout: 60
484+
properties:
485+
target_file: android_device_tests.yaml
486+
channel: master
487+
version_file: flutter_master.version
488+
package_sharding: "--shardIndex 1 --shardCount 6"
489+
490+
- name: Linux_android android_device_tests_shard_3 master
491+
recipe: packages/packages
492+
timeout: 60
493+
properties:
494+
target_file: android_device_tests.yaml
495+
channel: master
496+
version_file: flutter_master.version
497+
package_sharding: "--shardIndex 2 --shardCount 6"
498+
499+
- name: Linux_android android_device_tests_shard_4 master
500+
recipe: packages/packages
501+
timeout: 60
502+
properties:
503+
target_file: android_device_tests.yaml
504+
channel: master
505+
version_file: flutter_master.version
506+
package_sharding: "--shardIndex 3 --shardCount 6"
507+
508+
- name: Linux_android android_device_tests_shard_5 master
509+
recipe: packages/packages
510+
timeout: 60
511+
properties:
512+
target_file: android_device_tests.yaml
513+
channel: master
514+
version_file: flutter_master.version
515+
package_sharding: "--shardIndex 4 --shardCount 6"
516+
517+
- name: Linux_android android_device_tests_shard_6 master
518+
recipe: packages/packages
519+
timeout: 60
520+
properties:
521+
target_file: android_device_tests.yaml
522+
channel: master
523+
version_file: flutter_master.version
524+
package_sharding: "--shardIndex 5 --shardCount 6"
525+
467526
### Web tasks ###
468527
- name: Linux_web web_build_all_packages master
469528
recipe: packages/packages

.ci/flutter_master.version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
61fd11db2b7aeb429995278803473ae0f7da061b
1+
e81907e07a385e79e67734162d435b11f5339000
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
tasks:
2+
- name: prepare tool
3+
script: .ci/scripts/prepare_tool.sh
4+
infra_step: true # Note infra steps failing prevents "always" from running.
5+
- name: download Dart and Android deps
6+
script: script/tool_runner.sh
7+
infra_step: true
8+
args: ["fetch-deps", "--android", "--supporting-target-platforms-only"]
9+
- name: Firebase Test Lab
10+
script: script/tool_runner.sh
11+
args:
12+
- "firebase-test-lab"
13+
- "--device"
14+
- "model=redfin,version=30"
15+
- "--exclude=script/configs/exclude_integration_android.yaml"
16+
- "--project=flutter-infra-staging"
17+
- "--results-bucket=flutter_firebase_testlab_staging"

.cirrus.yml

Lines changed: 3 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,21 @@ gcp_credentials: ENCRYPTED[!9c8e92e8da192ce2a51b7d4ed9948c4250d0bae3660193d9b901
22

33
# Run on PRs and main branch post submit only. Don't run tests when tagging.
44
only_if: $CIRRUS_TAG == '' && ($CIRRUS_PR != '' || $CIRRUS_BRANCH == 'main')
5-
env:
6-
CHANNEL: "master" # Default to master when not explicitly set by a task.
7-
PLUGIN_TOOL_COMMAND: "dart ./script/tool/bin/flutter_plugin_tools.dart"
85

96
setup_template: &SETUP_TEMPLATE
107
upgrade_flutter_script:
11-
# Channels that are part of our normal test matrix use a pinned,
12-
# auto-rolled version to prevent out-of-band CI failures due to changes in
13-
# Flutter.
14-
- TARGET_TREEISH=$CHANNEL
15-
- if [[ "$CHANNEL" == "master" || "$CHANNEL" == "stable" ]]; then
16-
- TARGET_TREEISH=$(< .ci/flutter_$CHANNEL.version)
17-
- fi
18-
# Ensure that the repository has all the branches.
8+
- PINNED_VERSION=$(< .ci/flutter_master.version)
9+
# Ensure that the repository has everything.
1910
- cd $FLUTTER_HOME
2011
- git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
2112
- git fetch origin
22-
# Switch to the requested channel.
13+
# Switch to the pinned master version.
2314
- git checkout $TARGET_TREEISH
24-
# When using a branch rather than a hash or version tag, reset to the
25-
# upstream branch rather than using pull, since the base image can sometimes
26-
# be in a state where it has diverged from upstream (!).
27-
- if [[ "$TARGET_TREEISH" == "$CHANNEL" ]] && [[ "$CHANNEL" != *"."* ]]; then
28-
- git reset --hard @{u}
29-
- fi
3015
# Run doctor to allow auditing of what version of Flutter the run is using.
3116
- flutter doctor -v
3217
tool_setup_script:
3318
- .ci/scripts/prepare_tool.sh
3419

35-
# Light-workload Linux tasks.
36-
# These use default machines, with fewer CPUs, to reduce pressure on the
37-
# concurrency limits.
3820
task:
3921
<< : *SETUP_TEMPLATE
4022
gke_container:
@@ -50,43 +32,3 @@ task:
5032
only_if: $CIRRUS_PR != ''
5133
version_script:
5234
- ./script/tool_runner.sh version-check --check-for-missing-changes --pr-labels="$CIRRUS_PR_LABELS"
53-
54-
# Heavy-workload Linux tasks.
55-
# These use machines with more CPUs and memory, so will reduce parallelization
56-
# for non-credit runs.
57-
task:
58-
<< : *SETUP_TEMPLATE
59-
gke_container:
60-
dockerfile: .ci/Dockerfile
61-
builder_image_name: docker-builder-linux # gce vm image
62-
builder_image_project: flutter-cirrus
63-
cluster_name: test-cluster
64-
zone: us-central1-a
65-
namespace: default
66-
cpu: 4
67-
memory: 16G
68-
matrix:
69-
### Android tasks ###
70-
- name: android-platform_tests
71-
# Don't run full platform tests on both channels in pre-submit.
72-
skip: $CIRRUS_PR != '' && $CHANNEL == 'stable'
73-
env:
74-
matrix:
75-
PACKAGE_SHARDING: "--shardIndex 0 --shardCount 6"
76-
PACKAGE_SHARDING: "--shardIndex 1 --shardCount 6"
77-
PACKAGE_SHARDING: "--shardIndex 2 --shardCount 6"
78-
PACKAGE_SHARDING: "--shardIndex 3 --shardCount 6"
79-
PACKAGE_SHARDING: "--shardIndex 4 --shardCount 6"
80-
PACKAGE_SHARDING: "--shardIndex 5 --shardCount 6"
81-
matrix:
82-
CHANNEL: "master"
83-
CHANNEL: "stable"
84-
MAPS_API_KEY: ENCRYPTED[d6583b08f79f91ea4844c77460f04539965e46ad2fd97fb7c062b4dfe88016228b86ebe8c220ab4187e0c4bd773dc1e7]
85-
GCLOUD_FIREBASE_TESTLAB_KEY: ENCRYPTED[1a2eebf9367197bbe812d9a0ea83a53a05aeba4bb5e4964fe6a69727883cd87e51238d39237b1f80b0894c48419ac268]
86-
firebase_test_lab_script:
87-
- if [[ -n "$GCLOUD_FIREBASE_TESTLAB_KEY" ]]; then
88-
- echo $GCLOUD_FIREBASE_TESTLAB_KEY > ${HOME}/gcloud-service-key.json
89-
- ./script/tool_runner.sh firebase-test-lab --device model=redfin,version=30 --exclude=script/configs/exclude_integration_android.yaml
90-
- else
91-
- echo "This user does not have permission to run Firebase Test Lab tests."
92-
- fi

packages/camera/camera/test/camera_value_test.dart

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,7 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
// TODO(a14n): remove this import once Flutter 3.1 or later reaches stable (including flutter/flutter#106316)
6-
// ignore: unnecessary_import
7-
import 'dart:ui';
8-
95
import 'package:camera/camera.dart';
10-
// TODO(a14n): remove this import once Flutter 3.1 or later reaches stable (including flutter/flutter#106316)
11-
// ignore: unnecessary_import
12-
import 'package:flutter/cupertino.dart';
136
import 'package:flutter/services.dart';
147
import 'package:flutter_test/flutter_test.dart';
158

packages/camera/camera_android/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.10.8+5
2+
3+
* Provides a default exposure point if null.
4+
15
## 0.10.8+4
26

37
* Adjusts SDK checks for better testability.

packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import android.util.Size;
1111
import androidx.annotation.NonNull;
1212
import androidx.annotation.Nullable;
13+
import androidx.annotation.VisibleForTesting;
1314
import io.flutter.embedding.engine.systemchannels.PlatformChannel;
1415
import io.flutter.plugins.camera.CameraProperties;
1516
import io.flutter.plugins.camera.CameraRegionUtils;
@@ -24,6 +25,8 @@ public class ExposurePointFeature extends CameraFeature<Point> {
2425
@Nullable private Point exposurePoint;
2526
private MeteringRectangle exposureRectangle;
2627
@NonNull private final SensorOrientationFeature sensorOrientationFeature;
28+
private boolean defaultRegionsHasBeenSet = false;
29+
@VisibleForTesting @Nullable public MeteringRectangle[] defaultRegions;
2730

2831
/**
2932
* Creates a new instance of the {@link ExposurePointFeature}.
@@ -78,9 +81,18 @@ public void updateBuilder(@NonNull CaptureRequest.Builder requestBuilder) {
7881
if (!checkIsSupported()) {
7982
return;
8083
}
81-
requestBuilder.set(
82-
CaptureRequest.CONTROL_AE_REGIONS,
83-
exposureRectangle == null ? null : new MeteringRectangle[] {exposureRectangle});
84+
85+
if (!defaultRegionsHasBeenSet) {
86+
defaultRegions = requestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS);
87+
defaultRegionsHasBeenSet = true;
88+
}
89+
90+
if (exposureRectangle != null) {
91+
requestBuilder.set(
92+
CaptureRequest.CONTROL_AE_REGIONS, new MeteringRectangle[] {exposureRectangle});
93+
} else {
94+
requestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS, defaultRegions);
95+
}
8496
}
8597

8698
private void buildExposureRectangle() {

packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import static org.junit.Assert.assertNull;
1010
import static org.junit.Assert.assertTrue;
1111
import static org.mockito.ArgumentMatchers.any;
12-
import static org.mockito.ArgumentMatchers.isNull;
12+
import static org.mockito.ArgumentMatchers.eq;
1313
import static org.mockito.Mockito.mock;
1414
import static org.mockito.Mockito.never;
1515
import static org.mockito.Mockito.times;
@@ -281,7 +281,7 @@ public void updateBuilder_shouldSetMeteringRectangleWhenValidBoundariesAndCoords
281281
}
282282

283283
@Test
284-
public void updateBuilder_shouldNotSetMeteringRectangleWhenNoValidBoundariesAreSupplied() {
284+
public void updateBuilder_shoulSetDefaultMeteringRectangleWhenNoValidBoundariesAreSupplied() {
285285
CameraProperties mockCameraProperties = mock(CameraProperties.class);
286286
when(mockCameraProperties.getControlMaxRegionsAutoExposure()).thenReturn(1);
287287
CaptureRequest.Builder mockCaptureRequestBuilder = mock(CaptureRequest.Builder.class);
@@ -290,24 +290,52 @@ public void updateBuilder_shouldNotSetMeteringRectangleWhenNoValidBoundariesAreS
290290

291291
exposurePointFeature.updateBuilder(mockCaptureRequestBuilder);
292292

293-
verify(mockCaptureRequestBuilder, times(1)).set(any(), isNull());
293+
verify(mockCaptureRequestBuilder, times(1)).set(any(), any());
294294
}
295295

296296
@Test
297-
public void updateBuilder_shouldNotSetMeteringRectangleWhenNoValidCoordsAreSupplied() {
297+
public void updateBuilder_shouldSetDefaultMeteringRectangleWhenNoValidCoordsAreSupplied() {
298298
CameraProperties mockCameraProperties = mock(CameraProperties.class);
299299
when(mockCameraProperties.getControlMaxRegionsAutoExposure()).thenReturn(1);
300300
CaptureRequest.Builder mockCaptureRequestBuilder = mock(CaptureRequest.Builder.class);
301301
ExposurePointFeature exposurePointFeature =
302302
new ExposurePointFeature(mockCameraProperties, mockSensorOrientationFeature);
303303
exposurePointFeature.setCameraBoundaries(this.mockCameraBoundaries);
304304

305+
MeteringRectangle[] defaultRegions =
306+
new MeteringRectangle[] {new MeteringRectangle(0, 0, 100, 100, 0)};
307+
when(mockCaptureRequestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS))
308+
.thenReturn(defaultRegions);
309+
305310
exposurePointFeature.setValue(null);
306311
exposurePointFeature.updateBuilder(mockCaptureRequestBuilder);
307312
exposurePointFeature.setValue(new Point(0d, null));
308313
exposurePointFeature.updateBuilder(mockCaptureRequestBuilder);
309314
exposurePointFeature.setValue(new Point(null, 0d));
310315
exposurePointFeature.updateBuilder(mockCaptureRequestBuilder);
311-
verify(mockCaptureRequestBuilder, times(3)).set(any(), isNull());
316+
317+
verify(mockCaptureRequestBuilder, times(3)).set(any(), eq(defaultRegions));
318+
}
319+
320+
@Test
321+
public void updateBuilder_shouldSetNonNullMeteringRectangleWhenNullValueIsSupplied() {
322+
CameraProperties mockCameraProperties = mock(CameraProperties.class);
323+
when(mockCameraProperties.getControlMaxRegionsAutoExposure()).thenReturn(1);
324+
CaptureRequest.Builder mockCaptureRequestBuilder = mock(CaptureRequest.Builder.class);
325+
ExposurePointFeature exposurePointFeature =
326+
new ExposurePointFeature(mockCameraProperties, mockSensorOrientationFeature);
327+
328+
MeteringRectangle[] defaultRegions =
329+
new MeteringRectangle[] {new MeteringRectangle(0, 0, 100, 100, 0)};
330+
when(mockCaptureRequestBuilder.get(CaptureRequest.CONTROL_AE_REGIONS))
331+
.thenReturn(defaultRegions);
332+
333+
exposurePointFeature.setCameraBoundaries(this.mockCameraBoundaries);
334+
335+
exposurePointFeature.setValue(null);
336+
337+
exposurePointFeature.updateBuilder(mockCaptureRequestBuilder);
338+
339+
verify(mockCaptureRequestBuilder, times(1)).set(any(), eq(exposurePointFeature.defaultRegions));
312340
}
313341
}

packages/camera/camera_android/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ description: Android implementation of the camera plugin.
33
repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
55

6-
version: 0.10.8+4
6+
version: 0.10.8+5
77

88
environment:
99
sdk: ">=2.18.0 <4.0.0"

packages/camera/camera_android_camerax/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 0.5.0+12
2+
3+
* Wraps classes needed to implement resolution configuration for image capture, image analysis, and preview.
4+
* Removes usages of deprecated APIs for resolution configuration.
5+
* Bumps CameraX version to 1.3.0-beta01.
6+
17
## 0.5.0+11
28

39
* Fixes issue with image data not being emitted after relistening to stream returned by `onStreamedFrameAvailable`.

0 commit comments

Comments
 (0)