Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit 6f1150e

Browse files
committed
Merge remote-tracking branch 'upstream/master' into local_auth/federation_ios
2 parents 94c4904 + c27b257 commit 6f1150e

File tree

116 files changed

+2415
-1091
lines changed

Some content is hidden

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

116 files changed

+2415
-1091
lines changed

.ci.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ targets:
4141
properties:
4242
add_recipes_cq: "true"
4343
target_file: windows_build_and_platform_tests.yaml
44+
channel: master
45+
version_file: flutter_master.version
4446
dependencies: >
4547
[
4648
{"dependency": "vs_build"}
@@ -66,6 +68,8 @@ targets:
6668
properties:
6769
add_recipes_cq: "true"
6870
target_file: build_all_plugins.yaml
71+
channel: master
72+
version_file: flutter_master.version
6973
dependencies: >
7074
[
7175
{"dependency": "vs_build"}
@@ -91,6 +95,8 @@ targets:
9195
properties:
9296
add_recipes_cq: "true"
9397
target_file: uwp_build_and_platform_tests.yaml
98+
channel: master
99+
version_file: flutter_master.version
94100
dependencies: >
95101
[
96102
{"dependency": "vs_build"}
@@ -103,6 +109,8 @@ targets:
103109
properties:
104110
add_recipes_cq: "true"
105111
target_file: plugin_tools_tests.yaml
112+
channel: master
113+
version_file: flutter_master.version
106114
scheduler: luci
107115

108116
- name: Linux ci_yaml plugins roller

.clang-format

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,9 @@
11
BasedOnStyle: Google
2+
---
3+
Language: Cpp
4+
DerivePointerAlignment: false
5+
PointerAlignment: Left
6+
---
7+
Language: ObjC
8+
DerivePointerAlignment: false
9+
PointerAlignment: Right

packages/camera/camera/CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
1+
## NEXT
2+
3+
* Minor iOS internal code cleanup related to flash mode.
4+
5+
## 0.9.4+8
6+
7+
* Fixes a bug where ImageFormatGroup was ignored in `startImageStream` on iOS.
8+
19
## 0.9.4+7
210

311
* Fixes a crash in iOS when passing null queue pointer into AVFoundation API due to race condition.
4-
* Minor iOS internal code cleanup.
12+
* Minor iOS internal code cleanup related to dispatch queue.
513

614
## 0.9.4+6
715

packages/camera/camera/example/integration_test/camera_test.dart

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,4 +240,56 @@ void main() {
240240
},
241241
skip: !Platform.isAndroid,
242242
);
243+
244+
/// Start streaming with specifying the ImageFormatGroup.
245+
Future<CameraImage> startStreaming(List<CameraDescription> cameras,
246+
ImageFormatGroup? imageFormatGroup) async {
247+
final CameraController controller = CameraController(
248+
cameras.first,
249+
ResolutionPreset.low,
250+
enableAudio: false,
251+
imageFormatGroup: imageFormatGroup,
252+
);
253+
254+
await controller.initialize();
255+
final _completer = Completer<CameraImage>();
256+
257+
await controller.startImageStream((CameraImage image) {
258+
if (!_completer.isCompleted) {
259+
Future(() async {
260+
await controller.stopImageStream();
261+
await controller.dispose();
262+
}).then((value) {
263+
_completer.complete(image);
264+
});
265+
}
266+
});
267+
return _completer.future;
268+
}
269+
270+
testWidgets(
271+
'iOS image streaming with imageFormatGroup',
272+
(WidgetTester tester) async {
273+
final List<CameraDescription> cameras = await availableCameras();
274+
if (cameras.isEmpty) {
275+
return;
276+
}
277+
278+
var _image = await startStreaming(cameras, null);
279+
expect(_image, isNotNull);
280+
expect(_image.format.group, ImageFormatGroup.bgra8888);
281+
expect(_image.planes.length, 1);
282+
283+
_image = await startStreaming(cameras, ImageFormatGroup.yuv420);
284+
expect(_image, isNotNull);
285+
expect(_image.format.group, ImageFormatGroup.yuv420);
286+
expect(_image.planes.length, 2);
287+
288+
_image = await startStreaming(cameras, ImageFormatGroup.bgra8888);
289+
expect(_image, isNotNull);
290+
expect(_image.format.group, ImageFormatGroup.bgra8888);
291+
expect(_image.planes.length, 1);
292+
},
293+
skip: !Platform.isIOS,
294+
);
243295
}

packages/camera/camera/example/ios/Runner.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
2323
E01EE4A82799F3A5008C1950 /* QueueHelperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E01EE4A72799F3A5008C1950 /* QueueHelperTests.m */; };
2424
E032F250279F5E94009E9028 /* CameraCaptureSessionQueueRaceConditionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E032F24F279F5E94009E9028 /* CameraCaptureSessionQueueRaceConditionTests.m */; };
25+
E032F2A727A0BF2D009E9028 /* FLTFlashModeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E032F2A627A0BF2D009E9028 /* FLTFlashModeTests.m */; };
2526
E0C6E2002770F01A00EA6AA3 /* ThreadSafeMethodChannelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C6E1FD2770F01A00EA6AA3 /* ThreadSafeMethodChannelTests.m */; };
2627
E0C6E2012770F01A00EA6AA3 /* ThreadSafeTextureRegistryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C6E1FE2770F01A00EA6AA3 /* ThreadSafeTextureRegistryTests.m */; };
2728
E0C6E2022770F01A00EA6AA3 /* ThreadSafeEventChannelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E0C6E1FF2770F01A00EA6AA3 /* ThreadSafeEventChannelTests.m */; };
@@ -81,6 +82,7 @@
8182
A24F9E418BA48BCC7409B117 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
8283
E01EE4A72799F3A5008C1950 /* QueueHelperTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QueueHelperTests.m; sourceTree = "<group>"; };
8384
E032F24F279F5E94009E9028 /* CameraCaptureSessionQueueRaceConditionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CameraCaptureSessionQueueRaceConditionTests.m; sourceTree = "<group>"; };
85+
E032F2A627A0BF2D009E9028 /* FLTFlashModeTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FLTFlashModeTests.m; sourceTree = "<group>"; };
8486
E0C6E1FD2770F01A00EA6AA3 /* ThreadSafeMethodChannelTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThreadSafeMethodChannelTests.m; sourceTree = "<group>"; };
8587
E0C6E1FE2770F01A00EA6AA3 /* ThreadSafeTextureRegistryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThreadSafeTextureRegistryTests.m; sourceTree = "<group>"; };
8688
E0C6E1FF2770F01A00EA6AA3 /* ThreadSafeEventChannelTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThreadSafeEventChannelTests.m; sourceTree = "<group>"; };
@@ -125,6 +127,7 @@
125127
F6EE622E2710A6FC00905E4A /* MockFLTThreadSafeFlutterResult.m */,
126128
F63F9EED27143B19002479BF /* MockFLTThreadSafeFlutterResult.h */,
127129
E032F24F279F5E94009E9028 /* CameraCaptureSessionQueueRaceConditionTests.m */,
130+
E032F2A627A0BF2D009E9028 /* FLTFlashModeTests.m */,
128131
);
129132
path = RunnerTests;
130133
sourceTree = "<group>";
@@ -388,6 +391,7 @@
388391
buildActionMask = 2147483647;
389392
files = (
390393
03F6F8B226CBB4670024B8D3 /* ThreadSafeFlutterResultTests.m in Sources */,
394+
E032F2A727A0BF2D009E9028 /* FLTFlashModeTests.m in Sources */,
391395
033B94BE269C40A200B4DF97 /* CameraMethodChannelTests.m in Sources */,
392396
03BB766B2665316900CE5A93 /* CameraFocusTests.m in Sources */,
393397
E487C86026D686A10034AC92 /* CameraPreviewPauseTests.m in Sources */,

packages/camera/camera/example/ios/Runner/main.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#import <UIKit/UIKit.h>
77
#import "AppDelegate.h"
88

9-
int main(int argc, char* argv[]) {
9+
int main(int argc, char *argv[]) {
1010
@autoreleasepool {
1111
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
1212
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
@import camera.Test;
6+
@import AVFoundation;
7+
#import <XCTest/XCTest.h>
8+
9+
@interface FLTFlashModeTests : XCTestCase
10+
11+
@end
12+
13+
@implementation FLTFlashModeTests
14+
15+
- (void)testFLTGetFLTFlashModeForString {
16+
XCTAssertEqual(FLTFlashModeOff, FLTGetFLTFlashModeForString(@"off"));
17+
XCTAssertEqual(FLTFlashModeAuto, FLTGetFLTFlashModeForString(@"auto"));
18+
XCTAssertEqual(FLTFlashModeAlways, FLTGetFLTFlashModeForString(@"always"));
19+
XCTAssertEqual(FLTFlashModeTorch, FLTGetFLTFlashModeForString(@"torch"));
20+
XCTAssertThrows(FLTGetFLTFlashModeForString(@"unkwown"));
21+
}
22+
23+
- (void)testFLTGetAVCaptureFlashModeForFLTFlashMode {
24+
XCTAssertEqual(AVCaptureFlashModeOff, FLTGetAVCaptureFlashModeForFLTFlashMode(FLTFlashModeOff));
25+
XCTAssertEqual(AVCaptureFlashModeAuto, FLTGetAVCaptureFlashModeForFLTFlashMode(FLTFlashModeAuto));
26+
XCTAssertEqual(AVCaptureFlashModeOn, FLTGetAVCaptureFlashModeForFLTFlashMode(FLTFlashModeAlways));
27+
XCTAssertEqual(-1, FLTGetAVCaptureFlashModeForFLTFlashMode(FLTFlashModeTorch));
28+
}
29+
30+
@end

packages/camera/camera/example/ios/RunnerTests/ThreadSafeFlutterResultTests.m

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ @interface ThreadSafeFlutterResultTests : XCTestCase
1010

1111
@implementation ThreadSafeFlutterResultTests
1212
- (void)testAsyncSendSuccess_ShouldCallResultOnMainThread {
13-
XCTestExpectation* expectation = [self expectationWithDescription:@"Result finished"];
13+
XCTestExpectation *expectation = [self expectationWithDescription:@"Result finished"];
1414

15-
FLTThreadSafeFlutterResult* threadSafeFlutterResult =
15+
FLTThreadSafeFlutterResult *threadSafeFlutterResult =
1616
[[FLTThreadSafeFlutterResult alloc] initWithResult:^(id _Nullable result) {
1717
XCTAssert(NSThread.isMainThread);
1818
[expectation fulfill];
@@ -26,9 +26,9 @@ - (void)testAsyncSendSuccess_ShouldCallResultOnMainThread {
2626
}
2727

2828
- (void)testSyncSendSuccess_ShouldCallResultOnMainThread {
29-
XCTestExpectation* expectation = [self expectationWithDescription:@"Result finished"];
29+
XCTestExpectation *expectation = [self expectationWithDescription:@"Result finished"];
3030

31-
FLTThreadSafeFlutterResult* threadSafeFlutterResult =
31+
FLTThreadSafeFlutterResult *threadSafeFlutterResult =
3232
[[FLTThreadSafeFlutterResult alloc] initWithResult:^(id _Nullable result) {
3333
XCTAssert(NSThread.isMainThread);
3434
[expectation fulfill];
@@ -38,9 +38,9 @@ - (void)testSyncSendSuccess_ShouldCallResultOnMainThread {
3838
}
3939

4040
- (void)testSendNotImplemented_ShouldSendNotImplementedToFlutterResult {
41-
XCTestExpectation* expectation = [self expectationWithDescription:@"Result finished"];
41+
XCTestExpectation *expectation = [self expectationWithDescription:@"Result finished"];
4242

43-
FLTThreadSafeFlutterResult* threadSafeFlutterResult =
43+
FLTThreadSafeFlutterResult *threadSafeFlutterResult =
4444
[[FLTThreadSafeFlutterResult alloc] initWithResult:^(id _Nullable result) {
4545
XCTAssert([result isKindOfClass:FlutterMethodNotImplemented.class]);
4646
[expectation fulfill];
@@ -54,15 +54,15 @@ - (void)testSendNotImplemented_ShouldSendNotImplementedToFlutterResult {
5454
}
5555

5656
- (void)testSendErrorDetails_ShouldSendErrorToFlutterResult {
57-
NSString* errorCode = @"errorCode";
58-
NSString* errorMessage = @"message";
59-
NSString* errorDetails = @"error details";
60-
XCTestExpectation* expectation = [self expectationWithDescription:@"Result finished"];
57+
NSString *errorCode = @"errorCode";
58+
NSString *errorMessage = @"message";
59+
NSString *errorDetails = @"error details";
60+
XCTestExpectation *expectation = [self expectationWithDescription:@"Result finished"];
6161

62-
FLTThreadSafeFlutterResult* threadSafeFlutterResult =
62+
FLTThreadSafeFlutterResult *threadSafeFlutterResult =
6363
[[FLTThreadSafeFlutterResult alloc] initWithResult:^(id _Nullable result) {
6464
XCTAssert([result isKindOfClass:FlutterError.class]);
65-
FlutterError* error = (FlutterError*)result;
65+
FlutterError *error = (FlutterError *)result;
6666
XCTAssertEqualObjects(error.code, errorCode);
6767
XCTAssertEqualObjects(error.message, errorMessage);
6868
XCTAssertEqualObjects(error.details, errorDetails);
@@ -77,14 +77,14 @@ - (void)testSendErrorDetails_ShouldSendErrorToFlutterResult {
7777
}
7878

7979
- (void)testSendNSError_ShouldSendErrorToFlutterResult {
80-
NSError* originalError = [[NSError alloc] initWithDomain:NSURLErrorDomain code:404 userInfo:nil];
81-
XCTestExpectation* expectation = [self expectationWithDescription:@"Result finished"];
80+
NSError *originalError = [[NSError alloc] initWithDomain:NSURLErrorDomain code:404 userInfo:nil];
81+
XCTestExpectation *expectation = [self expectationWithDescription:@"Result finished"];
8282

83-
FLTThreadSafeFlutterResult* threadSafeFlutterResult =
83+
FLTThreadSafeFlutterResult *threadSafeFlutterResult =
8484
[[FLTThreadSafeFlutterResult alloc] initWithResult:^(id _Nullable result) {
8585
XCTAssert([result isKindOfClass:FlutterError.class]);
86-
FlutterError* error = (FlutterError*)result;
87-
NSString* constructedErrorCode =
86+
FlutterError *error = (FlutterError *)result;
87+
NSString *constructedErrorCode =
8888
[NSString stringWithFormat:@"Error %d", (int)originalError.code];
8989
XCTAssertEqualObjects(error.code, constructedErrorCode);
9090
[expectation fulfill];
@@ -98,10 +98,10 @@ - (void)testSendNSError_ShouldSendErrorToFlutterResult {
9898
}
9999

100100
- (void)testSendResult_ShouldSendResultToFlutterResult {
101-
NSString* resultData = @"resultData";
102-
XCTestExpectation* expectation = [self expectationWithDescription:@"Result finished"];
101+
NSString *resultData = @"resultData";
102+
XCTestExpectation *expectation = [self expectationWithDescription:@"Result finished"];
103103

104-
FLTThreadSafeFlutterResult* threadSafeFlutterResult =
104+
FLTThreadSafeFlutterResult *threadSafeFlutterResult =
105105
[[FLTThreadSafeFlutterResult alloc] initWithResult:^(id _Nullable result) {
106106
XCTAssertEqualObjects(result, resultData);
107107
[expectation fulfill];

0 commit comments

Comments
 (0)