Proto commits in mozilla/application-services

These 52 commits are when the Protocol Buffers files have changed:

Commit:73427f7
Author:Sammy Khamis
Committer:GitHub

Places uniffication (#4770) * initial conversion of errors for places uniffication * Converted history metadata functions for places uniffication * Converted kotlin history metadata functions * Converted iOS history metadata functions * [Places uniffication] Fix places error issues (#4687) * remove uniffi-specific wrapper and updated error test * Uniffi VisitObservation and apply_observation (#4689) * uniffied VisitObservation, HistoryVisitInfo and methods using those structs * Uniffi top frecent site info (#4711) * Uniffi top frecent site info * Uniffis FrecencyThresholdOption * Uniffi Places Sync (#4714) * uniffi places sync and sync15 functions * Uniffi Search result and match url (#4720) * Uniffi query autocomplete * uniffi places_accept_result * uniffi places_match_url * cargo fmt * cargo clippy * remove accept_result from ffi crate * Adds comment on the uniffi bug with varaint shadowing type * Uniffi Places Interrupt methods (#4726) * uniffi places interrupt functions * Consolidate types (#4736) * Updates the visit observation to use URL * Uses VisitTransition for HistoryVisitInfo * updates uniffi to 0.16 * Uniffied bookmarks * switch to use uint in the apis for adding bookmarks (#4747) * Remove the manual places FFI entirely. * folders and separators now have non-nullable parents * Always insert via Insertable items, and clarify separation between node types. * Add json_tree module with all json-based types and implementation. * Fix swift warnings re non-null parentGuid * bookmarks: Remove public_node and introduce a fetch module * Update swift code to make breaking changes fixes cleaner (#4766) * rebased and added changelog entry Co-authored-by: lougeniac64 <lougeniaC64@users.noreply.github.com> Co-authored-by: Tarik Eshaq <teshaq@mozilla.com> Co-authored-by: Mark Hammond <mhammond@skippinet.com.au>

The documentation is generated from this commit.

Commit:cb49e3b
Author:Mathieu Leplatre
Committer:GitHub

Add support for PATCH in viaduct (#4751)

Commit:c63dd82
Author:Ben Dean-Kawamura
Committer:Ben Dean-Kawamura

UniFFI SyncManager - Replaced hand-written FFI code with UniFFI code - Updated error handling to just use thiserror. There's no need for error-support anymore. - Added an enum for the SyncParams.engine. This seems cleaner than having None mean sync all engines. - Replaced `SyncResult.results` with `SyncResult.successful` and `SyncSyncResult.failures`. Before this was handled in the Kotlin wrapaper code. - Made the megazord depend on tabs directly. Before it pulled in tabs because of a transitive dependency from sync_manager_ffi.

Commit:7a1533b
Author:Tarik Eshaq
Committer:GitHub

Uniffi push component (#4431) * Adds Push UDL * [push] Rust code compiles with scaffolding * [push] removes FFI crate * [push] removes protocol buffers * [push] cleans up android api after uniffication * Removes push from protobuf_files.toml * Adds changelog

Commit:a447079
Author:Grisha Kruglov
Committer:GitHub

Closes #4433: Allow observing previewImageUrl for visits (#4448) * Closes #4433: Allow observing previewImageUrl for visits We already have this field in moz_places; this PR adds just enough piping to allow observing preview image urls and reading them back via VisitInfo and HistoryMetadata APIs.

Commit:212b6fc
Author:Mark Hammond
Committer:GitHub

Replace places history_metadata's protobuf implementations with uniffi. (#4183) This is intended to be a small but significant step on the road to uniffi-ing places. It takes all the hard stuff from Ryan's #3900, but limits the scope to just the new-ish history_metadata module. Co-authored-by: Ryan Kelly <ryan@rfk.id.au> Co-authored-by: Sammy Khamis <skhamis@mozilla.com>

Commit:d0b7b74
Author:Sammy Khamis
Committer:GitHub

Uniffi-ing the Tabs component (#4192) * uniffi-ed the tabs component Co-authored-by: Grisha Kruglov <gkruglov@mozilla.com>

Commit:b43d904
Author:Sammy Khamis
Committer:GitHub

Uniffi-ing the Logins component (#4068) * converting logins to using uniffi * nits and review changes * update changelog to put breaking changes on top

Commit:0103480
Author:Grisha Kruglov
Committer:Grisha Kruglov

Observation API for History Metadata Storage Switch from a crud-like API to an observation-like API for history metadata, similar to what we have in places. TitleObservation present in iOS bindings is temporary, necessary because Firefox iOS doesn't currently use places history which provides an API for noting page titles.

Commit:02ab3c9
Author:Grisha Kruglov
Committer:GitHub

Introduce History Metadata storage & API for Android (#4048)

Commit:20f940e
Author:Mark Hammond
Committer:GitHub

Allow the sync manager to accept local encryption keys to pass to engines (#3995)

Commit:d77600e
Author:Ryan Kelly
Committer:GitHub

Restructure, UniFFI, and document the fxa-client crate. (#3876) This is a substantial refactor of the fxa-client crate, intended to bring it up to speed with our latest best-practices around developing cross-platform Rust components, in order to ease ongoing maintenance. THe core change here is that I've deleted the hand-written Kotlin and Swift bindings, replacing them with autogenerated bindings thanks to UniFFI. There is still a little bit of hand-written Kotlin, since we have a layer that automatically manages persistence via a callback. There is still a nontrivial amount of hand-written Swift, since we have a higher-level state machine built atop the lower-level fxa-client functionality (such state-machine also exists for Kotlin, but lives in the android-components repo). If UniFFI works out then we should look into moving more of that logic into shared Rust code over time. To support the introduction of UniFFI, I have restructured to Rust crate so that its public interface deliberately parallels the interface offered to Kotlin and Swift, and have moved the implementation details into a submodule named `internal`. It's my opinionated belief that structuring the crate this way will help us focus on producing a nice consumer API, which is not always the same thing as producing a nice Rust crate. On top of that, I've also revamped the documentation in the crate, leaning in to the use of `cargo doc` as the source of truth for both developer- and consumer-facing documentation. Let's consider that an experiment and see how we like it in practice. Unfortunately, this is a big PR, but I don't think I could have made it too much smaller. Hopefully it will be easier to review than its size suggests since it's mostly additions and deletions rather than complex changes.

Commit:d75b2ba
Author:Tarik Eshaq
Committer:Tarik Eshaq

Adds optional metrics params

Commit:707b2c0
Author:Tarik Eshaq
Committer:Tarik Eshaq

Adds using protobufs to pass arguments

Commit:592ca28
Author:Gabriel Luong
Committer:Gabriel Luong

Add an API to get the top frecent sites

Commit:014c491
Author:Edouard Oger
Committer:Edouard Oger

Remove cookies support from Viaduct

Commit:716d134
Author:Edouard Oger
Committer:Edouard Oger

optimize_for LITE_RUNTIME

Commit:9ec08bb
Author:Edouard Oger
Committer:Edouard Oger

Use swift_prefix for Swift

Commit:3407ac1
Author:Edouard Oger
Committer:Edouard Oger

Replace msg_types package names

Commit:beb3f2f
Author:Edouard Oger
Committer:Edouard Oger

Only deserialize the `active` field in oauth/introspect response

Commit:da5adc9
Author:Jonathan Almeida
Committer:Jonathan Almeida

Rename push SubscriptionChange MsgTypes For issue #2049.

Commit:94b2d15
Author:Jonathan Almeida
Committer:Jonathan Almeida

Update verify_connection to return updated subscriptions Closes #2049 Co-authored-by: Edouard Oger <eoger@fastmail.com>

Commit:ca7ec74
Author:YLyu

De-jsonificate logins crate

Commit:f15e676
Author:Edouard Oger

Add deviceId to AccountEvent.deviceDisconnected

Commit:1e9971a
Author:Edouard Oger
Committer:Edouard Oger

Handle all possible FxA push payloads

Commit:bf5797d
Author:YLyu

Expose SearchResult as Protobuf through FFI

Commit:dc09610
Author:Ryan Kelly
Committer:GitHub

Merge pull request #2165 from lyuyuan/issue-1019; r=rfk Faster visit paging with bound and offset

Commit:1a1055a
Author:Christina Cheung
Committer:Edouard Oger

Add FirefoxAccount.checkAuthorizationStatus() Co-authored-by: Edouard Oger <eoger@fastmail.com>

Commit:8dc9605
Author:YLyu
Committer:YLyu

Faster visit paging with bound and offset

Commit:f12f43c
Author:JR Conlin
Committer:GitHub

feat: return endpoint and appServerKey in dispatch_info_for_chid() (#2080) * feat: return endpoint and appServerKey in dispatch_info_for_chid() * move mostly unused appServerKey from PushConfig to an optional string in `subscribe()` (easier for customer to use) * removed unused `regenerate_endpoints()` function. * add hack to drop "empty" application keys Closes #2047

Commit:27643d4
Author:Edouard Oger
Committer:Edouard Oger

Remote Tabs FFI

Commit:ed82a41
Author:Lina Cambridge
Committer:Lina Cambridge

Expand the list of client types.

Commit:4d4f254
Author:Lina Cambridge
Committer:Lina Cambridge

Implement a clients engine in the sync manager. The clients engine handles commands for sync engines, like wiping local data and resetting Sync metadata. These are sent in a client record's `commands` list, and acked by removing the command from the list. Our implementation is based on Desktop's, but works a little differently: * Instead of holding commands in memory, ours pulls outgoing commands directly from logins and Places. This follows the approach of bookmark restore on Desktop, which writes a flag into Places to send a `wipeEngine` command on the next sync. * Our engine relies on the embedding app to supply it with info about the current client. Thanks to these two changes, our engine doesn't need to store any state itself. This means it can be used as a short-lived object that's dropped after it syncs, like our other syncable stores, and not a long-lived singleton as on Desktop.

Commit:9f6fced
Author:Thom Chiovoloni
Committer:Thom Chiovoloni

Initial implementation of the Kotlin Sync Manager API

Commit:f1e74ba
Author:Lina Cambridge
Committer:Lina Cambridge

Exclude hidden URLs from syncing and views. Hidden URLs are useful for storing redirect chains, and may be useful for manual searching or awesomebar matches. However, the history record format doesn't currently include the referrer or hidden state, so we exclude them entirely to match Desktop, and to avoid cluttering other devices with redirect sources. We also filter them out in visit queries, so that Fenix doesn't have to make changes for mozilla-mobile/fenix#3526. In a future release, we can either return them and have Fenix filter them out in some views, or add a flag to include or exclude them. See #1492.

Commit:08217ed
Author:YLyu

Use protobufs instead of JSON in push component

Commit:d5fdafa
Author:Edouard Oger
Committer:Edouard Oger

Add VR and TV device types

Commit:9ca7475
Author:Thom Chiovoloni

Simplify viaduct error reporting, and add logging for error cases

Commit:0ae23eb
Author:Lina Cambridge
Committer:Lina Cambridge

Use JSON, not protobufs for pings. This commit reverts the protobuf schema, in favor of passing the serialized ping directly. On iOS, we can pass this ping directly through to the existing ping sender. On Android, we'll need to unpack the ping into a Kotlin structure, and pass that to Fenix via Android Components. Fenix can then assemble a Glean ping from the Kotlin `SyncTelemetryPing`.

Commit:7eddefe
Author:Lina Cambridge
Committer:Lina Cambridge

Add a protobuf representation for telemetry pings.

Commit:57823e5
Author:Edouard Oger
Committer:Edouard Oger

Send Tab implementation

Commit:935c169
Author:Thom Chiovoloni

Handle illegal header values, use `bytes` for transfer over the FFI to avoid encoding issues and copies

Commit:bd049f4
Author:Thom Chiovoloni
Committer:Thom Chiovoloni

Rename support_fetch to viaduct

Commit:114f709
Author:Thom Chiovoloni
Committer:Thom Chiovoloni

Add protobufs to support_fetch

Commit:03a6cb4
Author:Thom Chiovoloni
Committer:Thom Chiovoloni

Write the rust side of an FFI for support_fetch

Commit:56a6764
Author:Thom Chiovoloni
Committer:GitHub

Bookmark APIs for iOS and Kotlin and implement them using the FFI (#743) * Define conversions to/from protobuf types * Define bookmark message types * Add method of getting 'shallow' tree info * Properly provide parent/position for items * Add the rust side of the Bookmarks FFI * Kotlin bookmarks FFI * Copy xcode project over from logins to start places ios ffi * places ios: C bindings for places * protobuf setup for places ios (and docs) * Fix some things that were annoying me about BookmarkRootGuid, and move it to it's own file * Add a bookmarks FFI function to return all bookmarks with the requested URL * Clean up leftover logins stuff in places ios * Implement swift bookmarks API * Fix bad comment and missing null check in kotlin bookmarks * Try and add places to the iOS megazord (hit issue with msg_types name collision) * Rename msg_types to be unique, finish integration with iOS megazord * Finish documenting how to pass protobuf data back and forth for swift * Comment tweak and change canEdit -> isRoot * Small tweaks to the swift API (some renaming, change class => struct, etc) * Don't require type in update (since it can't be changed), and handle errors better * Undo struct -> class change since it subtly broke things * Respond to feedback from justin * Allow requesting a only the first level of folder children * connUseAfterApiClosed -> connUseAfterAPIClosed * WIP iOS tests * Make iOS tests build * Improve path handling for iOS * Fix megazord test setup and document the weird testing steps that were needed * Fix failing iOS tests * Move protobuf-returning functions into their own file * Add searchBookmarks function * Use a sealed class and data classes in the kotlin API * Require that callers of getBookmarksTree pass in the root and whether or not to fetch recursively, rather than using the most expensive possible default * rename deleteBookmark => deleteBookmarkNode * Use InterruptScope in the reader bookmark methods * Fix rebase issue * Allow interrupt() on iOS * Use changes from #788 to make places xcode project build much faster * Change `extern` to `public`, use fewer protobuf types in the rust because they make testing it painful * More tests of new rust code * Expose relevant errors over the FFI, and document them (also, fix the kotlin doc formatting) * fix 'its' being wrong basically everywhere * Fix many doc typos * Use FfiStr in bookmarks * Fix doc nit * Make missing titles come through as '' for better API consistency * Tests for the rest of the new rust functions * Clarify doc nit * Changelog entry for bookmark ffi * Expose runMaintenance to Swift * Handle NoItem => NoSuchGuid * Rename places::storage::bookmarks::public to places::storage::bookmarks::public_node * Lina's review feedback

Commit:6a82a80
Author:Edouard Oger
Committer:Edouard Oger

Move everything under org.mozilla.appservices

Commit:8993732
Author:Edouard Oger
Committer:Edouard Oger

Return AccessTokenInfo using protobufs

Commit:38c6a1d
Author:Edouard Oger
Committer:Edouard Oger

Move package to mozilla.appservices.fxaclient

Commit:8366b8a
Author:Thom Chiovoloni
Committer:Thom

Pre: rename ffi_types to msg_types

Commit:940a3bb
Author:Thom Chiovoloni
Committer:Thom

Finish up using protobufs in places, and document everything

Commit:365390d
Author:Edouard Oger
Committer:Edouard Oger

Use protobuf for fxa_profile return value