Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions Yosemite/Yosemite/Tools/Media/MediaAssetExporter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ final class MediaAssetExporter: MediaExporter {
if let resource = resources.first {
resourceAvailableLocally = true
filename = resource.originalFilename
if UTTypeEqual(resource.uniformTypeIdentifier as CFString, kUTTypeGIF) {
let gifTypeIdentifier = UTType.gif.identifier as CFString
if UTTypeEqual(resource.uniformTypeIdentifier as CFString, gifTypeIdentifier) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I think comparing the identifier strings directly should be fine?

Suggested change
let gifTypeIdentifier = UTType.gif.identifier as CFString
if UTTypeEqual(resource.uniformTypeIdentifier as CFString, gifTypeIdentifier) {
if resource.uniformTypeIdentifier == UTType.gif.identifier {

// Handles GIF export differently from images.
exportGIF(forAsset: asset, resource: resource, onCompletion: onCompletion)
return
Expand Down Expand Up @@ -112,7 +113,7 @@ private extension MediaAssetExporter {
return nil
}
guard allowableFileExtensions.contains(fileExtensionForType) else {
return kUTTypeJPEG as String
return UTType.jpeg.identifier as String
}
return uti
}
Expand All @@ -123,7 +124,8 @@ private extension MediaAssetExporter {
/// - parameter onError: Called if an error was encountered during export.
///
private func exportGIF(forAsset asset: PHAsset, resource: PHAssetResource, onCompletion: @escaping MediaExportCompletion) {
guard UTTypeEqual(resource.uniformTypeIdentifier as CFString, kUTTypeGIF) else {
let gifTypeIdentifier = UTType.gif.identifier as CFString
guard UTTypeEqual(resource.uniformTypeIdentifier as CFString, gifTypeIdentifier) else {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: similar to above, I think direct string comparison is fine?

Suggested change
let gifTypeIdentifier = UTType.gif.identifier as CFString
guard UTTypeEqual(resource.uniformTypeIdentifier as CFString, gifTypeIdentifier) else {
guard resource.uniformTypeIdentifier == UTType.gif.identifier else {

onCompletion(nil, AssetExportError.expectedPHAssetGIFType)
return
}
Expand Down
3 changes: 2 additions & 1 deletion Yosemite/Yosemite/Tools/Media/MediaImageExporter.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Foundation
import UniformTypeIdentifiers
import MobileCoreServices

/// Available options for an image export.
Expand Down Expand Up @@ -75,7 +76,7 @@ final class MediaImageExporter: MediaExporter {
typeHint: String?,
onCompletion: @escaping MediaExportCompletion) {
do {
let hint = typeHint ?? kUTTypeJPEG as String
let hint = typeHint ?? UTType.jpeg.identifier as String
let sourceOptions: [String: Any] = [kCGImageSourceTypeIdentifierHint as String: hint as CFString]
guard let source = CGImageSourceCreateWithData(data as CFData, sourceOptions as CFDictionary) else {
throw ImageExportError.imageSourceCreationWithDataFailed
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import MobileCoreServices
import XCTest
import UniformTypeIdentifiers
@testable import Yosemite

final class MediaImageExporterTests: XCTestCase {
func testExportingAnImageWithTypeHint() {
// Loads the test image into png data.
let mockData = UIImage(named: "image", in: Bundle(for: type(of: self)), compatibleWith: nil)!.pngData()
let filename = "test"
let typeHint = kUTTypeJPEG as String
let typeHint = UTType.jpeg.identifier as String
let mockImageSourceWriter = MockImageSourceWriter()
let exporter = MediaImageExporter(data: mockData!,
filename: filename,
Expand Down Expand Up @@ -65,7 +66,7 @@ final class MediaImageExporterTests: XCTestCase {
func testExportingNonImageData() {
let mockData = Data()
let filename = "test"
let typeHint = kUTTypeJPEG as String
let typeHint = UTType.jpeg.identifier as String
let mockImageSourceWriter = MockImageSourceWriter()
let exporter = MediaImageExporter(data: mockData,
filename: filename,
Expand Down
7 changes: 4 additions & 3 deletions Yosemite/YosemiteTests/Tools/Media/URL+MediaTests.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import MobileCoreServices
import XCTest
import UniformTypeIdentifiers
@testable import Yosemite

final class URL_MediaTests: XCTestCase {
Expand Down Expand Up @@ -38,16 +39,16 @@ final class URL_MediaTests: XCTestCase {

func testFileExtensionForJPEGType() {
let expectedFileExtension = "jpeg"
XCTAssertEqual(URL.fileExtensionForUTType(kUTTypeJPEG as String), expectedFileExtension)
XCTAssertEqual(URL.fileExtensionForUTType(UTType.jpeg.identifier as String), expectedFileExtension)
}

func testFileExtensionForGIFType() {
let expectedFileExtension = "gif"
XCTAssertEqual(URL.fileExtensionForUTType(kUTTypeGIF as String), expectedFileExtension)
XCTAssertEqual(URL.fileExtensionForUTType(UTType.gif.identifier as String), expectedFileExtension)
}

func testFileExtensionForPNGType() {
let expectedFileExtension = "png"
XCTAssertEqual(URL.fileExtensionForUTType(kUTTypePNG as String), expectedFileExtension)
XCTAssertEqual(URL.fileExtensionForUTType(UTType.png.identifier as String), expectedFileExtension)
}
}