Commit Graph
22 Commits
Author SHA1 Message Date
Paul Beusterien bcccff79e8 [ml-model-downloader] Update unit test deprecated API (#13283) 2024-07-15 15:42:11 -04:00
Nick Cooke 5fd1eb26d2 [MLModelDownloader] Migrate to GoogleUtilities's storage container (#12762) 2024-04-12 12:46:06 -04:00
Paul Beusterien 4d2b60dc75 Updated to SwiftFormat 0.52.10 (#12125) 2023-11-21 12:12:05 -08:00
Nick Cooke f8ee68bfc7 [MLModelDownloader] Disable keychain-dependent tests on macCatalyst and macOS (#10148) 2022-08-28 01:21:50 -04:00
Paul Beusterien 5e8790d78a Update to SwiftFormat 0.49.2 (#9239) 2022-01-21 13:03:15 -08:00
manjanac 3cbe00c1b7 Fixes and corrections in telemetry logging (#7525)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Add model name to all log events + minor logging fixes.

* Disable logging in tests

* Disable logging in unit test.
2021-02-16 13:23:38 -08:00
Maksym Malyhin 0341e9ccfd ML model downloader fixes (#7515)
* listDownloadedModels: don't cross-check URLs

* Store models in a subfolder.

* Test completion and progress handlers being called on the main thread.

* More tests for callbacks on the main queue.

* Fix public API handlers to be called on the main queue.

* .gitignore ML GoogleService-Info.plist files

* style

* getModel: fail fast when modelName is empty string
2021-02-11 19:42:11 -05:00
manjanac 9597ffe51b Removes saved path on device (#7439)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Add tests for list models.

* Failable emptying of model directory in tests.

* Remove path from local model info and user defaults.

* Clean up user defaults on delete + add interpreter to test app.

* Replace .absoluteString with .path. This makes model.path work directly with TFLite interpreter.

* Fix paths in tests.

* Unit test for successful get model.

* Rename modelPath to modelURL.

* Use defaults.integer instead of casting to Int.

* Remove force casting.

* Mostly minor fixes that came out of the bugbash (#7462)

* Use appropriate errors for network offline and api disabled.

* Error + test for resourceExhausted.

* Surface backend error message in logs whenever available.

* Add disclaimer to empty directories for testing only.

* Add Firelog events for model info retrieval.

* Add documentation + other minor fixes. (#7465)

* Add docs + clean up ModelDownloader.swift.

* Add docs + clean up ModelDownloadTask.swift.

* Add docs + clean up FileDownloader.swift.

* Add docs + clean up LocalModelInfo.swift. Handle TODO for userdefaults init failure.

* Add docs + clean up RemoteModelInfo.swift, DownloaderUserDefaults.swift.

* Add docs + clean up ModelInfoRetriever.swift.

* Add docs + clean up ModelDownloadConditions.swift.

* Add docs + clean up DeviceLogger.swift.

* Add docs + clean up TelemetryLogger.swift.

* Add docs + clean up ModelFileManager.swift.

* Remove resolved TODOs + other minor fixes.

* Update model download conditions init.

* Fix comment formatting.

* Minor newline formatting.

* Minor comment formatting.

* Add docs for ModelDownloadConditions.

* Basic fix for user defaults race condition.

* Minor updates to tests.

* Minor updates to tests.

* Final fixes (#7471)

* Refactor error parsing in model info response.

* Add Firelog for delete event + minor fixes.

* Temporary - test to check telemetry for delete event.

* Disable backup of model files; handle inability to locate model storage dir.

* Minor fixes.

* Add tflite path extension to model file.
2021-02-10 09:47:07 -08:00
manjanac ef3b4d9c19 Merge duplicate requests (#7422)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Merge duplicate model download requests.

* Remove print statement.

* WORK IN PROGRESS - Test for merging requests

* Unit tests for merging requests.

* Fix unit test description.

* Uncomment debug logging
2021-02-03 15:44:40 -08:00
manjanac 11826f1c4d Firelog events (#7404)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Firelog 1/2

* More Firelog + fix sdk version.

* Fix whitespace in proto.
2021-01-29 12:57:38 -08:00
manjanac 2c4c19be42 Logging on-device + Firelog (#7386)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Add new error type for expired url + fix tests.

* On-device logging + updates to tests.

* Add new error type for expired url + fix tests.

* On-device logging + updates to tests.

* Revert to enum for ModelFileManager.swift

* Remove GoogleService-Info.plist

* Remove GoogleService-Info.plist
2021-01-27 13:22:05 -08:00
manjanac 3ac79da402 Move retryDownload to ModelDownloader (#7374)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Refactor WIP - TODO: Refactor retryDownload handlers.

* Refactor WIP - TODO: Fix unit test.

* Refactor WIP - TODO: Refactor retryDownload handlers.

* Refactor retryDownload() + unit tests.

* Minor fixes.

* Resolve merge conflicts with master.
2021-01-25 17:38:12 -08:00
manjanac e6fa9d42c1 Downloader protocol + tests (#7352)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Add mocks for better unit tests - WIP.

* Remove duplicate proto files.

* Download task protocol + tests.

* Rename protocol file.

* Import foundation.

* Rename to authTokenProvider.

* Rename to authTokenProvider.

* Consolidate handlers for download task.

* Merge #7355.

* Clean up unit tests + add test for successful download retry.

* Add TODO to refactor retry download + add test.

* TODO to handle failed precondition.
2021-01-22 18:28:17 -08:00
manjanac bbd9495b56 Implement model download conditions. (#7307)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Implement model downloading conditions. Error handling WIP

* Remove background downloading + add waitsForConnectivity where available.

* Resolve merge conflicts with master.

* Resolve merge conflicts with master.
2021-01-21 16:22:57 -08:00
manjanac a8ce5b0308 Handle expired download URL with support for retries (#7329)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Update error handling.

* Add logging for background download failure.

* Handle expired download URL.

* Remove empty file.

* Fix integration test.

* Minor refactor.
2021-01-20 11:09:39 -08:00
manjanac d7950ddbe4 Separate error messages into extensions (#7322)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Update error handling.

* Add logging for background download failure.

* Remove empty file.

* Slight refactor of error descriptions + using ISO8601DateFormatter where available.

* Slight refactor error descriptions + adding availability for ISO8601DateFormatter.
2021-01-19 14:28:20 -08:00
manjanac ac4d70ed41 Logging on device and to Firelog (#7281)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Logging on-device and to Firelog - WIP.

* Logging on-device and to Firelog - WIP.

* Rename AnalyticsLogger to TelemetryLogger + minor fixes.

* Add SwiftProtobuf dependency.

* On-device and Firelog logging - WIP

* Proto files.

* Rename loggers.

* Move protos to Sources.

* Log model download event on device and to Firelog.

* Add TODO to revisit SwiftProtobuf dependency + minor fixes.

* Add SwiftProtobuf dependency to Package.swift.

* TODO to revisit system info + TODO in podspec for SwiftProtobuf dependency.

* Pass app to TelemetryLogger to check for stats enabled flag.

* TODO to replace on device logEvent with GULLogBasic (future PR).
2021-01-14 15:29:04 -08:00
manjanac f6e61e36c1 Logical checkpoint of ModelDownloader implementation (#7259)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Includes the implementation of: 1) download types, 2) list models, 3) delete model.

* Add protocol to handle writing to user defaults.

* Add protocol to handle writing to user defaults.

* Add empty init to ModelDownloadConditions.

* Copyright year + other minor fixes.

* TODO to use FirebaseApp internal init for test app.

* Test if download progress is in range.

* Remove not nil test for progress.

* Remove not nil test for progress.
2021-01-07 14:54:12 -08:00
manjanac 1a1a91a225 Refactor modelInfo into localModelInfo and remoteModelInfo (#7163)
* Restores ML Pods after M77.

* Fix Package.swift

* Refactor model info to be in-memory.

* Add improved model download functionality w/ single set of download handlers per task.

* Rename model download to better match URLSessionTask.

* Rename model download to better match URLSessionTask.

* Update unit test to read/write to user defaults.

* Configure downloader with Firebase app.

* Minor updates to model downloader and tests.

* Singleton for model downloader instance, for default and custom app.

* Download types WIP - local model.

* Download types WIP.

* Manually add app lifecycle handling + TODOs for Firebase Components.

* Replace options with app name as a property in ModelDownloader.

* Download types WIP.

* Refactor model info.

* Add convenience inits + other minor fixes.

* Explicit enum for model info result.
2021-01-06 12:04:47 -08:00
manjanac e6b60202d4 Add singleton-ish instance methods for model downloader (public API). (#7124)
* Restores ML Pods after M77.

* Fix Package.swift

* Refactor model info to be in-memory.

* Add improved model download functionality w/ single set of download handlers per task.

* Rename model download to better match URLSessionTask.

* Rename model download to better match URLSessionTask.

* Update unit test to read/write to user defaults.

* Configure downloader with Firebase app.

* Minor updates to model downloader and tests.

* Singleton for model downloader instance, for default and custom app.

* Manually add app lifecycle handling + TODOs for Firebase Components.

* Replace options with app name as a property in ModelDownloader.

* Update unit test to check model downloader instance creation + minor rename.
2020-12-14 10:59:42 -08:00
manjanac dbdefc5163 Refactoring model download functionality. (#7068)
* Restores ML Pods after M77.

* Fix Package.swift

* Refactor model info to be in-memory.

* Add improved model download functionality w/ single set of download handlers per task.

* Rename model download to better match URLSessionTask.

* Rename model download to better match URLSessionTask.

* Update unit test to read/write to user defaults.

* Minor updates to model downloader and tests.

* Use caches directory for model storage on tvOS.

* Change modelInfo to be privately settable.
2020-12-04 15:57:16 -08:00
manjanac e15bb36a2f Add GoogleService-Info.plist for integration testing. (#7037)
* Restores ML Pods after M77.

* Fix Package.swift

* Add GoogleService-Info.plist to secrets for integration tests.

* Configure FirebaseApp in tests to read from GoogleService-Info.plist.

* Lint fix.

* Plist WIP

* Plist WIP

* Add GoogleService-Info.plist to secrets for (future) integration tests.

* Add GoogleService-Info.plist to secrets for (future) integration tests.

* Add GoogleService-Info.plist to secrets for (future) integration tests.

* Split tests into unit and integration, configure FirebaseApp.

* Move GoogleService-Info.plist to Integration/

* Split tests into unit and integration.

* Fix workflow step to copy plist over to project.
2020-11-30 17:55:22 -08:00