完善 OTG 相机有线传图:支持 Sony/Canon 自动识别,页面 detach 保持会话以便再次进入复连。

引入进程级 CameraTetheringSession 与共享 USB Browser;离开传图页仅取消 UI 回调,App 终止时再完整 shutdown 释放 PTP 与 Browser 资源。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-01 15:45:35 +08:00
parent 5f7ef24683
commit 90d135b5ac
34 changed files with 2870 additions and 310 deletions

View File

@ -0,0 +1,34 @@
//
// CameraServiceFactoryTests.swift
// suixinkanTests
//
import XCTest
@testable import suixinkan
/// CameraServiceFactory
@MainActor
final class CameraServiceFactoryTests: XCTestCase {
func testMakeSonyReturnsSonyService() {
let service = CameraServiceFactory.make(brand: .sony)
XCTAssertTrue(service is SonyCameraService)
XCTAssertEqual(service.brand, .sony)
}
func testMakeCanonReturnsCanonService() {
let service = CameraServiceFactory.make(brand: .canon)
XCTAssertTrue(service is CanonCameraService)
XCTAssertEqual(service.brand, .canon)
}
func testMakeAutoDetectReturnsAutoDetectService() {
let service = CameraServiceFactory.makeAutoDetect()
XCTAssertTrue(service is AutoDetectCameraService)
}
func testMakeAutoDetectReturnsSharedInstance() {
let first = CameraServiceFactory.makeAutoDetect()
let second = CameraServiceFactory.makeAutoDetect()
XCTAssertTrue(first === second)
}
}