From 9ecb88018653f900b7cb999d21bcb7e6b3871a40 Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Thu, 14 May 2026 15:29:21 -0700 Subject: [PATCH] Bug 2039737 - Adds kotlin bindings for add_many in logins. --- CHANGELOG.md | 1 + .../logins/DatabaseLoginsStorage.kt | 10 +++++ .../logins/DatabaseLoginsStorageTest.kt | 38 +++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d04c042c8..25072512a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### Logins * `run_maintenance()` now optionally deletes undecryptable logins (https://bugzilla.mozilla.org/show_bug.cgi?id=2007416) +* Exposes `add_many()` through kotlin (https://bugzilla.mozilla.org/show_bug.cgi?id=2039737) [Full Changelog](In progress) diff --git a/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt b/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt index c9078a52f2..cfb2412eac 100644 --- a/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt +++ b/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt @@ -95,6 +95,16 @@ class DatabaseLoginsStorage(dbPath: String, keyManager: KeyManager) : AutoClosea return store.add(entry) } + /** + * Adds multiple logins. + * + * @return a list of inserted logins. + */ + @Throws(LoginsApiException::class) + fun addMany(entries: List): List { + return store.addMany(entries) + } + @Throws(LoginsApiException::class) fun update(id: String, entry: LoginEntry): Login { return store.update(id, entry) diff --git a/components/logins/android/src/test/java/mozilla/appservices/logins/DatabaseLoginsStorageTest.kt b/components/logins/android/src/test/java/mozilla/appservices/logins/DatabaseLoginsStorageTest.kt index d7d8f5b771..d00935121c 100644 --- a/components/logins/android/src/test/java/mozilla/appservices/logins/DatabaseLoginsStorageTest.kt +++ b/components/logins/android/src/test/java/mozilla/appservices/logins/DatabaseLoginsStorageTest.kt @@ -95,6 +95,44 @@ class DatabaseLoginsStorageTest { finishAndClose(store) } + @Test + fun testAddMany() { + val store = getTestStore() + val loginsToAdd = listOf( + LoginEntry( + origin = "https://www.example.org", + httpRealm = "", + formActionOrigin = "https://www.example.org/login", + usernameField = "users_name", + passwordField = "users_password", + password = "MyVeryCoolPassword", + username = "Foobar2001", + ), + LoginEntry( + origin = "https://www.example.org", + httpRealm = "", + formActionOrigin = "https://www.example.org/login", + usernameField = "users_name", + passwordField = "users_password", + password = "MyVeryCoolPassword", + username = "Foobar2002", + ), + LoginEntry( + origin = "https://www.example.org", + httpRealm = "", + formActionOrigin = "https://www.example.org/login", + usernameField = "users_name", + passwordField = "users_password", + password = "MyVeryCoolPassword", + username = "Foobar2003", + ), + ) + + assertEquals(store.list().size, 2) + store.addMany(loginsToAdd) + assertEquals(store.list().size, 5) + } + @Test fun testDelete() { val store = getTestStore()