Name Description Size
auth.rs 8235
close_tabs.rs 3756
commands
config.rs 14326
device.rs 33220
http_client.rs Low-level API for talking to the FxA server. This module is responsible for talking to the FxA server over HTTP, serializing request bodies and deserializing response payloads into live objects that can be inspected by other parts of the code. 40009
mod.rs # Internal implementation details for the fxa_client crate. 22884
oauth
oauth.rs 43577
profile.rs 8346
push.rs 11592
scoped_keys.rs 4509
scopes.rs 315
send_tab.rs 6204
state_manager.rs 11167
state_persistence.rs Serialization of `FirefoxAccount` state to/from a JSON string. This module implements the ability to serialize a `FirefoxAccount` struct to and from a JSON string. The idea is that calling code will use this to persist the account state to storage. Many of the details here are a straightforward use of `serde`, with all persisted data being a field on a `State` struct. This is, however, some additional complexity around handling data migrations - we need to be able to evolve the internal details of the `State` struct while gracefully handing users who are upgrading from an older version of a consuming app, which has stored account state from an older version of this component. Data migration is handled by explicitly naming different versions of the state struct to correspond to different incompatible changes to the data representation, e.g. `StateV1` and `StateV2`. We then wrap this in a `PersistedStateTagged` enum whose serialization gets explicitly tagged with the corresponding state version number. For backwards-compatible changes to the data (such as adding a new field that has a sensible default) we keep the current `State` struct, but modify it in such a way that `serde` knows how to do the right thing. For backwards-incompatible changes to the data (such as removing or significantly refactoring fields) we define a new `StateV{X+1}` struct, and use the `From` trait to define how to update from older struct versions. For an example how the conversion works, [we can look at `StateV1` which was deliberately removed](https://github.com/mozilla/application-services/issues/3912) The code that was deleted demonstrates how we can implement the migration 10195
telemetry.rs 4386
util.rs 1605