Skip to content

Commit ac8d2d1

Browse files
authored
Merge pull request #885 from quoid/fix/mitigation-measure
fix(ios): mitigation measure for directory reset issue
2 parents 77d5237 + 57467c9 commit ac8d2d1

File tree

4 files changed

+18
-16
lines changed

4 files changed

+18
-16
lines changed

xcode/App-Mac/ViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class ViewController: NSViewController {
3636
guard let state = state else {
3737
self.enabledText.stringValue = "Safari Extension State Unknown"
3838
if let error = error {
39-
logger?.error("\(#function, privacy: .public) - \(error.localizedDescription, privacy: .public)")
39+
logger?.error("\(#function, privacy: .public) - \(error, privacy: .public)")
4040
} else {
4141
logger?.error("\(#function, privacy: .public) - couldn't get safari extension state in containing app")
4242
}

xcode/App-Shared/ViewController.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ class ViewController: PlatformViewController, WKNavigationDelegate, WKScriptMess
149149
self.extensionState = state.isEnabled ? .on : .off
150150
} catch {
151151
self.extensionState = .error
152-
logger?.error("\(#function, privacy: .public) - \(error.localizedDescription, privacy: .public)")
152+
logger?.error("\(#function, privacy: .public) - \(error, privacy: .public)")
153153
}
154154
if #available(macOS 13, *) {
155155
useSettingsInsteadOfPreferences = true
@@ -193,7 +193,7 @@ class ViewController: PlatformViewController, WKNavigationDelegate, WKScriptMess
193193
do {
194194
try await SFSafariApplication.showPreferencesForExtension(withIdentifier: extIdentifier)
195195
} catch {
196-
logger?.error("\(#function, privacy: .public) - \(error.localizedDescription, privacy: .public)")
196+
logger?.error("\(#function, privacy: .public) - \(error, privacy: .public)")
197197
return (nil, error.localizedDescription)
198198
}
199199
break
@@ -344,7 +344,7 @@ extension ViewController {
344344
} else {
345345
status = .error
346346
if let error = error {
347-
logger?.error("\(#function, privacy: .public) - \(error.localizedDescription, privacy: .public)")
347+
logger?.error("\(#function, privacy: .public) - \(error, privacy: .public)")
348348
} else {
349349
logger?.error("\(#function, privacy: .public) - couldn't get safari extension state in containing app")
350350
}

xcode/Ext-Safari/Functions.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ func updateManifest(with data: Manifest) -> Bool {
220220
try fileContent.write(to: url, atomically: false, encoding: .utf8)
221221
return true
222222
} catch {
223-
logger?.error("\(#function, privacy: .public) - failed to update manifest: \(error.localizedDescription, privacy: .public)")
223+
logger?.error("\(#function, privacy: .public) - failed to update manifest: \(error, privacy: .public)")
224224
return false
225225
}
226226
}
@@ -742,7 +742,7 @@ func getRequiredCode(_ filename: String, _ resources: [String], _ fileType: Stri
742742
do {
743743
try FileManager.default.removeItem(at: directory)
744744
} catch {
745-
logger?.error("\(#function, privacy: .public) - failed to remove directory: \(error.localizedDescription, privacy: .public)")
745+
logger?.error("\(#function, privacy: .public) - failed to remove directory: \(error, privacy: .public)")
746746
}
747747
}
748748
return true
@@ -796,11 +796,11 @@ func getRequiredCode(_ filename: String, _ resources: [String], _ fileType: Stri
796796
try FileManager.default.removeItem(at: abandonFileUrl)
797797
logger?.info("\(#function, privacy: .public) - cleanup abandoned resource: \(unsanitize(abandonFileUrl.lastPathComponent), privacy: .public)")
798798
} catch {
799-
logger?.error("\(#function, privacy: .public) - failed to remove abandoned resource: \(error.localizedDescription, privacy: .public)")
799+
logger?.error("\(#function, privacy: .public) - failed to remove abandoned resource: \(error, privacy: .public)")
800800
}
801801
}
802802
} catch {
803-
logger?.error("\(#function, privacy: .public) - failed to cleanup resources: \(error.localizedDescription, privacy: .public)")
803+
logger?.error("\(#function, privacy: .public) - failed to cleanup resources: \(error, privacy: .public)")
804804
}
805805
return true
806806
}
@@ -877,7 +877,7 @@ func getRemoteFileContents(_ url: String) -> String? {
877877
}
878878
}
879879
if let error = error {
880-
logger?.error("\(#function, privacy: .public) - task error: \(error.localizedDescription, privacy: .public) (\(url, privacy: .public))")
880+
logger?.error("\(#function, privacy: .public) - task error: \(error, privacy: .public) (\(url, privacy: .public))")
881881
}
882882
semaphore.signal()
883883
}
@@ -984,7 +984,7 @@ func checkDefaultDirectories() -> Bool {
984984
try FileManager.default.createDirectory(at: url, withIntermediateDirectories: false)
985985
} catch {
986986
// could not create the save location directory, show error
987-
logger?.error("\(#function, privacy: .public) - failed at (1) - \(url, privacy: .public) - \(error.localizedDescription, privacy: .public)")
987+
logger?.error("\(#function, privacy: .public) - failed at (1) - \(url, privacy: .public) - \(error, privacy: .public)")
988988
return false
989989
}
990990
}
@@ -1763,7 +1763,7 @@ func trashFile(_ item: [String: Any]) -> Bool {
17631763
do {
17641764
try FileManager.default.trashItem(at: url, resultingItemURL: nil)
17651765
} catch {
1766-
logger?.error("\(#function, privacy: .public) - \(error.localizedDescription, privacy: .public)")
1766+
logger?.error("\(#function, privacy: .public) - \(error, privacy: .public)")
17671767
return false
17681768
}
17691769
}

xcode/Shared/Preferences.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ private struct SecurityScopedBookmark {
6060
relativeTo: nil
6161
)
6262
} catch {
63-
logger?.error("\(#function, privacy: .public) - \(error.localizedDescription, privacy: .public)")
63+
logger?.error("\(#function, privacy: .public) - \(error, privacy: .public)")
6464
}
6565
return nil
6666
}
@@ -74,7 +74,7 @@ private struct SecurityScopedBookmark {
7474
bookmarkDataIsStale: &isStale
7575
)
7676
} catch {
77-
logger?.error("\(#function, privacy: .public) - \(error.localizedDescription, privacy: .public)")
77+
logger?.error("\(#function, privacy: .public) - \(error, privacy: .public)")
7878
}
7979
return nil
8080
}
@@ -202,7 +202,7 @@ private struct SecurityScopedBookmark {
202202
do {
203203
return try url.bookmarkData(options: .minimalBookmark, includingResourceValuesForKeys: nil, relativeTo: nil)
204204
} catch {
205-
logger?.error("\(#function, privacy: .public) - \(error.localizedDescription, privacy: .public)")
205+
logger?.error("\(#function, privacy: .public) - \(error, privacy: .public)")
206206
}
207207
return nil
208208
}
@@ -211,7 +211,7 @@ private struct SecurityScopedBookmark {
211211
do {
212212
return try URL(resolvingBookmarkData: data, bookmarkDataIsStale: &isStale)
213213
} catch {
214-
logger?.error("\(#function, privacy: .public) - \(error.localizedDescription, privacy: .public)")
214+
logger?.error("\(#function, privacy: .public) - \(error, privacy: .public)")
215215
}
216216
return nil
217217
}
@@ -237,7 +237,9 @@ private struct SecurityScopedBookmark {
237237
}
238238
var isStale = false
239239
guard let url = resolvBookmark(data, &isStale) else { // get security-scoped URL
240-
SDefaults?.removeObject(forKey: key) // remove data that cannot be resolved
240+
// Note: temporary mitigation measures for occasional failures on some iOS devices
241+
// SDefaults?.removeObject(forKey: key) // remove data that cannot be resolved
242+
logger?.warning("\(#function, privacy: .public) - faild resolv bookmark, return default")
241243
return defaultValue
242244
}
243245
if isStale, url.startAccessingSecurityScopedResource() { // renew URL bookmark

0 commit comments

Comments
 (0)