github mozilla/application-services v160.0

3 hours ago

⚠️ Breaking Changes ⚠️

Viaduct

  • Moved the Rust-based backend away from hyper back to reqwest.
    The new crate name is viaduct-backend-rust.
    iOS will need to replace viaductInitBackendHyper() with viductInitBackendRust()

Db-Crypto, Logins, Autofill

  • create_static_key_manager() and create_managed_encdec() moved from logins and autofill to db-crypto, since both components defining them caused duplicate definitions in Swift.
    Kotlin consumers need to import them from mozilla.appservices.db_crypto instead of mozilla.appservices.logins / mozilla.appservices.autofill. (bug 2080807)

Autofill

  • BREAKING: The key-based encrypt_string(key, ...) / decrypt_string(key, ...) namespace functions are removed - with transparent card numbers nothing needs them. create_autofill_key() stays; for canaries use db_crypto.create_canary / check_canary (format-compatible).
  • BREAKING: Credit card numbers are transparent in the API: UpdatableCreditCardFields takes cc_number in cleartext (the store encrypts it and derives cc_number_last_4 itself), and CreditCard.cc_number comes back decrypted - empty for a scrubbed card, while a value the key cannot read fails the read. An empty cc_number is stored as an empty cc_number_enc rather than as a ciphertext of "", so a scrubbed card stays recognizable as such. cc_number_enc is gone from both dictionaries; consumers never handle ciphertext. (bug 2075563)

✨ What's New ✨

Error support

  • Wired up the error ping on iOS using glean-sym.

✨ What's Changed ✨

Ads-Client

  • Telemetry is now a process-wide singleton internally; the binding API is unchanged, but the MozAdsTelemetry callback now receives metrics from every client in the process.
  • request_spoc_or_image_ads is added to return ads that may ambiguously be spocs or images.
  • Added support for relevance scores (AC-205) (AC-206) Accepts a HashMap<String, f64>.

Autofill

  • Add Store::credit_cards_bridged_engine(), exposing the existing credit card sync engine as a bridged engine so Firefox Desktop can drive credit card sync. (bug 2074008)
  • Added list_credit_card_candidates(), returning CreditCardCandidate: a card minus its encrypted fields, with cc_number_last_4 and has_cvv in their place. Like list_candidates() in logins it never touches the key, so an application can list cards without a primary password prompt and call get_credit_card() for the single card whose number or CVV it needs. (bug 2080209)
  • Credit cards can store an optional CVV, encrypted like the number and handled transparently: UpdatableCreditCardFields.cc_cvv (cleartext in, defaults to none) and CreditCard.cc_cvv (decrypted out). A v6 schema upgrade adds the column; existing rows simply have no CVV. The CVV syncs as a new optional cc-cvv payload field; records written by older clients round-trip it through the mirror's unknown-fields handling, so their edits do not drop it. (bug 2076154)

Nimbus

  • Disabling experiments or rollouts will submit an event. #7656
  • If requesting experiment or rollout participation on Android throws, the getter will return true instead of throwing. This aligns the Android behaviour with iOS. #7656
  • Enabling experiments or rollouts while they are already enabled no longer performs an update. #7656

Search

  • Added APIs to SearchEngineSelector for a new search-config-v3 collection.

Sync15

  • Better interoperability with clients which choose engines per device: sync IDs are adopted from meta/syncids rather than minted, and our declined engines are kept when meta/global has no engines or declined engines.
  • A fresh meta/global no longer lists declined engines in engines.

Full Changelog

Don't miss a new application-services release

NewReleases is sending notifications on new releases.