Skip to content

[camera_avfoundation] Implementation swift migration - part 4 #9219

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
4 changes: 4 additions & 0 deletions packages/camera/camera_avfoundation/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.9.19+1

* Migrates the FLTCam class to Swift.

## 0.9.19

* Migrates the CameraPlugin class to Swift.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
E1ABED6F2D943B2500AED9CC /* MockCaptureDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = E15BC7ED2D86D85500F66474 /* MockCaptureDevice.swift */; };
E1ABED722D943DC700AED9CC /* MockCaptureDeviceInputFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1ABED702D943DC700AED9CC /* MockCaptureDeviceInputFactory.swift */; };
E1ABED732D943DC700AED9CC /* MockCaptureInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1ABED712D943DC700AED9CC /* MockCaptureInput.swift */; };
E1FFEAAD2D6C8DD700B14107 /* MockFLTCam.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FFEAAC2D6C8DD700B14107 /* MockFLTCam.swift */; };
E1FFEAAD2D6C8DD700B14107 /* MockCamera.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FFEAAC2D6C8DD700B14107 /* MockCamera.swift */; };
E1FFEAAF2D6CDA8C00B14107 /* CameraPluginCreateCameraTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FFEAAE2D6CDA8C00B14107 /* CameraPluginCreateCameraTests.swift */; };
E1FFEAB12D6CDE5B00B14107 /* CameraPluginInitializeCameraTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FFEAB02D6CDE5B00B14107 /* CameraPluginInitializeCameraTests.swift */; };
/* End PBXBuildFile section */
Expand Down Expand Up @@ -154,7 +154,7 @@
E1A5F4E22D80259C0005BA64 /* FLTCamSetFlashModeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FLTCamSetFlashModeTests.swift; sourceTree = "<group>"; };
E1ABED702D943DC700AED9CC /* MockCaptureDeviceInputFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockCaptureDeviceInputFactory.swift; sourceTree = "<group>"; };
E1ABED712D943DC700AED9CC /* MockCaptureInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockCaptureInput.swift; sourceTree = "<group>"; };
E1FFEAAC2D6C8DD700B14107 /* MockFLTCam.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockFLTCam.swift; sourceTree = "<group>"; };
E1FFEAAC2D6C8DD700B14107 /* MockCamera.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockCamera.swift; sourceTree = "<group>"; };
E1FFEAAE2D6CDA8C00B14107 /* CameraPluginCreateCameraTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraPluginCreateCameraTests.swift; sourceTree = "<group>"; };
E1FFEAB02D6CDE5B00B14107 /* CameraPluginInitializeCameraTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraPluginInitializeCameraTests.swift; sourceTree = "<group>"; };
E67C6DBF6478BE708993169F /* 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>"; };
Expand Down Expand Up @@ -245,7 +245,7 @@
E142F1392D85940600824824 /* MockCapturePhotoOutput.swift */,
E142F1372D85919700824824 /* MockDeviceOrientationProvider.swift */,
E142F1352D8587F900824824 /* MockCameraDeviceDiscoverer.swift */,
E1FFEAAC2D6C8DD700B14107 /* MockFLTCam.swift */,
E1FFEAAC2D6C8DD700B14107 /* MockCamera.swift */,
970ADABF2D6764CC00EFDCD9 /* MockEventChannel.swift */,
E12C4FF72D68E85500515E70 /* MockFLTCameraPermissionManager.swift */,
970ADABD2D6740A900EFDCD9 /* MockWritableData.swift */,
Expand Down Expand Up @@ -572,7 +572,7 @@
E1ABED722D943DC700AED9CC /* MockCaptureDeviceInputFactory.swift in Sources */,
977A25202D5A439300931E34 /* AvailableCamerasTests.swift in Sources */,
E142681F2D8566230046CBBC /* CameraTestUtils.swift in Sources */,
E1FFEAAD2D6C8DD700B14107 /* MockFLTCam.swift in Sources */,
E1FFEAAD2D6C8DD700B14107 /* MockCamera.swift in Sources */,
E16602952D8471C0003CFE12 /* FLTCamZoomTests.swift in Sources */,
97BD4A102D5CE13500F857D5 /* CameraSessionPresetsTests.swift in Sources */,
979B3E022D5BA48F009BDE1A /* CameraOrientationTests.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ private final class MockUIDevice: UIDevice {
final class CameraOrientationTests: XCTestCase {
private func createCameraPlugin() -> (
cameraPlugin: CameraPlugin,
mockCamera: MockFLTCam,
mockCamera: MockCamera,
mockEventAPI: MockGlobalEventApi,
mockDevice: MockCaptureDevice,
mockDeviceDiscoverer: MockCameraDeviceDiscoverer,
captureSessionQueue: DispatchQueue
) {
let mockDevice = MockCaptureDevice()
let mockCamera = MockFLTCam()
let mockCamera = MockCamera()
let mockEventAPI = MockGlobalEventApi()
let mockDeviceDiscoverer = MockCameraDeviceDiscoverer()
let captureSessionQueue = DispatchQueue(label: "io.flutter.camera.captureSessionQueue")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import XCTest

/// Tests of `CameraPlugin` methods delegating to `FLTCam` instance
final class CameraPluginDelegatingMethodTests: XCTestCase {
private func createCameraPlugin() -> (CameraPlugin, MockFLTCam) {
let mockCamera = MockFLTCam()
private func createCameraPlugin() -> (CameraPlugin, MockCamera) {
let mockCamera = MockCamera()

let cameraPlugin = CameraPlugin(
registry: MockFlutterTextureRegistry(),
Expand All @@ -39,7 +39,7 @@ final class CameraPluginDelegatingMethodTests: XCTestCase {
let targetOrientation = FCPPlatformDeviceOrientation.landscapeLeft

var lockCaptureCalled = false
mockCamera.lockCaptureStub = { orientation in
mockCamera.lockCaptureOrientationStub = { orientation in
XCTAssertEqual(orientation, targetOrientation)
lockCaptureCalled = true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ import XCTest

final class CameraPluginInitializeCameraTests: XCTestCase {
private func createCameraPlugin() -> (
CameraPlugin, MockFLTCam, MockGlobalEventApi, DispatchQueue
CameraPlugin, MockCamera, MockGlobalEventApi, DispatchQueue
) {
let mockCamera = MockFLTCam()
let mockCamera = MockCamera()
let mockGlobalEventApi = MockGlobalEventApi()
let captureSessionQueue = DispatchQueue(label: "io.flutter.camera.captureSessionQueue")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

import XCTest

@testable import camera_avfoundation

// Import Objectice-C part of the implementation when SwiftPM is used.
#if canImport(camera_avfoundation_objc)
import camera_avfoundation_objc
#else
import camera_avfoundation
@testable import camera_avfoundation_objc
#endif

/// Utils for creating default class instances used in tests
Expand Down Expand Up @@ -61,6 +61,7 @@ enum CameraTestUtils {
resolutionPreset: FCPPlatformResolutionPreset.medium),
mediaSettingsWrapper: FLTCamMediaSettingsAVWrapper(),
captureDeviceFactory: { _ in captureDeviceMock },
audioCaptureDeviceFactory: { MockCaptureDevice() },
captureSessionFactory: { videoSessionMock },
captureSessionQueue: captureSessionQueue,
captureDeviceInputFactory: MockCaptureDeviceInputFactory(),
Expand All @@ -80,16 +81,18 @@ enum CameraTestUtils {
return configuration
}

static func createTestCamera(_ configuration: FLTCamConfiguration) -> FLTCam {
return FLTCam(configuration: configuration, error: nil)
static func createTestCamera(_ configuration: FLTCamConfiguration) -> DefaultCamera {
let camera = try? DefaultCamera(configuration: configuration)

return camera!
}

static func createTestCamera() -> FLTCam {
static func createTestCamera() -> DefaultCamera {
return createTestCamera(createTestCameraConfiguration())
}

static func createCameraWithCaptureSessionQueue(_ captureSessionQueue: DispatchQueue)
-> FLTCam
-> DefaultCamera
{
let configuration = createTestCameraConfiguration()
configuration.captureSessionQueue = captureSessionQueue
Expand Down Expand Up @@ -173,6 +176,14 @@ enum CameraTestUtils {

return sampleBuffer!
}

static func createTestAudioOutput() -> AVCaptureOutput {
return AVCaptureAudioDataOutput()
}

static func createTestConnection(_ output: AVCaptureOutput) -> AVCaptureConnection {
return AVCaptureConnection(inputPorts: [], output: output)
}
}

extension XCTestCase {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import XCTest
#endif

final class FLTCamExposureTests: XCTestCase {
private func createCamera() -> (FLTCam, MockCaptureDevice, MockDeviceOrientationProvider) {
private func createCamera() -> (Camera, MockCaptureDevice, MockDeviceOrientationProvider) {
let mockDevice = MockCaptureDevice()
let mockDeviceOrientationProvider = MockDeviceOrientationProvider()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import XCTest
#endif

final class FLTCamSetFocusModeTests: XCTestCase {
private func createCamera() -> (FLTCam, MockCaptureDevice, MockDeviceOrientationProvider) {
private func createCamera() -> (Camera, MockCaptureDevice, MockDeviceOrientationProvider) {
let mockDevice = MockCaptureDevice()
let mockDeviceOrientationProvider = MockDeviceOrientationProvider()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import XCTest
#endif

final class FLTCamSetDeviceOrientationTests: XCTestCase {
private func createCamera() -> (FLTCam, MockCaptureConnection, MockCaptureConnection) {
private func createCamera() -> (Camera, MockCaptureConnection, MockCaptureConnection) {
let camera = CameraTestUtils.createTestCamera()

let mockCapturePhotoOutput = MockCapturePhotoOutput()
Expand Down Expand Up @@ -73,7 +73,7 @@ final class FLTCamSetDeviceOrientationTests: XCTestCase {
videoSetVideoOrientationCalled = true
}

camera.lockCapture(FCPPlatformDeviceOrientation.portraitDown)
camera.lockCaptureOrientation(FCPPlatformDeviceOrientation.portraitDown)

camera.setDeviceOrientation(.landscapeLeft)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import XCTest
#endif

final class FLTCamSetFlashModeTests: XCTestCase {
private func createCamera() -> (FLTCam, MockCaptureDevice, MockCapturePhotoOutput) {
private func createCamera() -> (Camera, MockCaptureDevice, MockCapturePhotoOutput) {
let mockDevice = MockCaptureDevice()
let mockCapturePhotoOutput = MockCapturePhotoOutput()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import XCTest
#endif

final class FLTCamZoomTests: XCTestCase {
private func createCamera() -> (FLTCam, MockCaptureDevice) {
private func createCamera() -> (Camera, MockCaptureDevice) {
let mockDevice = MockCaptureDevice()

let configuration = CameraTestUtils.createTestCameraConfiguration()
Expand Down
Loading