Firefox Application Services
Перейти к файлу
dsmithpadilla b518395771 Update releases.md to include dot release steps 2023-11-29 17:52:50 +00:00
.cargo Refactored fxa-client 2023-06-27 13:17:30 +00:00
.circleci Avoid `brew update-reset` each time we check Swift formatting 2023-09-27 15:47:51 +00:00
.github Remove SQLCipher 2023-09-15 21:25:34 +00:00
.vscode Update vscode recommended extensions 2020-04-20 19:19:23 -04:00
automation [SYNC-3518] Add requirements.txt for automation directory 2023-10-05 15:39:11 +00:00
build-scripts New branch build system. 2023-08-07 14:29:25 +00:00
components Add structure_hash and tests 2023-11-29 17:20:37 +00:00
docs Update releases.md to include dot release steps 2023-11-29 17:52:50 +00:00
examples Removed FxA MetricsParams 2023-11-28 22:22:22 +00:00
gradle/wrapper Update Gradle to version 7.6.3 2023-10-05 00:42:45 +00:00
libs Build NSS for iPhoneSimulator target 2023-09-19 21:46:35 +00:00
megazords Update dependencies 2023-11-29 17:20:37 +00:00
taskcluster Add linux-gnu builds for cirrus 2023-10-11 16:12:26 +00:00
testing Refactor VisitTransition to be VisitType 2023-10-16 21:13:39 +00:00
tools build(deps): bump certifi from 2023.7.22 to 2023.11.17 in /tools 2023-11-20 13:55:07 +00:00
xcconfig Remove all Carthage and switch to xcframeworks (#4619) 2022-02-03 15:05:05 -10:00
.buildconfig-android.yml suggest: Build config changes for Kotlin UniFFI bindings. 2023-07-20 23:56:12 +00:00
.cron.yml Updating our cron file 2022-04-27 10:37:33 -04:00
.detekt.yml Allow nimbus-fml WildcardImports 2023-06-16 15:40:08 +00:00
.gitignore add uniffi bindings for nimbus-fml; add FmlClient object with appropriate methods 2023-05-23 19:21:50 +00:00
.gitmodules Remove submodule from .gitmodules 2021-03-22 18:14:41 -07:00
.mergify.yml Minor mergify modifications (#5527) 2023-05-01 15:31:13 -04:00
.swiftlint.yml Merge ios and ios-rust directories and clean up Xcode project (#4830) 2022-03-03 10:03:32 -10:00
.taskcluster.yml Use the taskgraph `decision` image instead of `decision-mobile` 2023-10-18 02:17:25 +00:00
CHANGELOG.md Removed FxA MetricsParams 2023-11-28 22:22:22 +00:00
CODE_OF_CONDUCT.md Bring CPG in line with CPGBot's demands, fixes #887 2019-03-31 15:38:31 -07:00
COPYRIGHT Remove the `ffi-support` crate sources from this repo. 2021-06-01 15:56:49 +10:00
Cargo.lock Add sha2 hasher for structure-hasher and defaults-hasher 2023-11-29 17:20:37 +00:00
Cargo.toml Switch to using the Cargo Resolver v2 2023-09-27 13:45:23 +00:00
DEPENDENCIES.md Update dependencies 2023-11-29 17:20:37 +00:00
LICENSE rc_crypto initial commit (#1349) 2019-07-09 14:00:48 -04:00
README.md Fixes README typo 2023-05-02 21:55:58 +00:00
build.gradle Update Glean to v55.0.0 2023-11-13 14:24:18 +00:00
clippy.toml Document our use of clippy and add a (empty) clippy.toml 2019-03-20 09:02:54 -07:00
codecov.yml Tell codecov our default branch is `main` 2020-07-24 09:39:45 -07:00
gradle.properties Set Kotlin JVM target mode to error 2023-06-13 01:48:12 +00:00
gradlew Update Gradle to version 7.6.3 2023-10-05 00:42:45 +00:00
gradlew.bat Update Gradle to version 7.6.3 2023-10-05 00:42:45 +00:00
install-nimbus-cli.sh Build linux nimbus binaries with Ubuntu 20.04 2023-09-21 16:01:57 +00:00
proguard-rules-consumer-jna.pro Set consumer Proguard rules. 2018-11-27 20:29:10 -08:00
publish.gradle FML: Generate Kotlin from FML intermediate representation (#4607) r=tarik 2021-11-06 14:27:37 +00:00
rust-toolchain.toml Update the Rust version 2023-09-14 00:07:57 +00:00
settings.gradle New branch build system. 2023-08-07 14:29:25 +00:00
version.txt Start release v122.0 2023-11-20 14:46:34 +00:00

README.md

Firefox Application Services

Application Services (a-s) is a collection of Rust Components that are used to enable Firefox applications to integrate with Firefox accounts, sync, experimentation, etc. Each component is built using a core of shared code written in Rust, wrapped with native language bindings for different platforms.

Contributing

To contribute, please review the Mozilla Community Participation Guidelines and then visit our how to contribute guide.

Contact

Get in touch with other community members on Matrix, or through issues here on GitHub.

Documentation

High-level docs

The Application Services Book contains high-level documentation about the code in this repository. It's built from the ./docs/ directory.

Package docs

We use rustdoc to document both the public API of the components and the various internal implementation details. View them on https://mozilla.github.io/application-services/book/rust-docs/fxa_client/index.html. Once you have completed the build steps, you can view the docs by running:

cargo doc --no-deps --document-private-items --open

Building

Building the Rust Components

  1. Clone or Download the repository:
  $ git clone https://github.com/mozilla/application-services # (or use the ssh link)
  $ cd application-services
  $ git submodule init
  $ git submodule update --recursive
  1. Follow these instructions to install your system-level dependencies
  2. Run the a-s Rust unit tests
cargo test

Consumer build, integration and testing

The application-services library primary consumers are Fenix (Firefox on Android) and Firefox iOS. Assure you are able to run integration tests (for Android and iOS if using MacOS) by following the instructions to build for Android and iOS integrations.

Android integration builds and helpful tools

Firefox for iOS integration

Firefox Desktop

Rust Components

./components/ contains the source for each component, and its FFI bindings.

Please note that we are in the process of moving away from hand-written ffi code and instead favouring the use of the uniffi library.

List of components

  • autofill - for storage and syncing of credit card and address information
  • crashtest - testing-purposes (crashing the Rust code)
  • fxa-client - for applications that need to sign in with FxA, access encryption keys for sync, and more.
  • logins - for storage and syncing of a user's saved login credentials
  • nimbus - for integrating with Mozilla's experimentation platform for Firefox
  • places - for storage and syncing of a user's saved browsing history
  • push - for applications to receive real-time updates via WebPush
  • rc_log - for connecting component log output to the application's log stream
  • support - low-level utility libraries
  • sync15 - shared library for accessing data in Firefox Sync
  • sync_manager - integrates multiple sync engines/ stores into a single framework
  • tabs - an in-memory syncing engine for remote browser tabs
  • viaduct - an HTTP request library
  • webext-storage - powers an implementation of the chrome.storage.sync WebExtension API