Firefox Application Services
Перейти к файлу
Ben Hearsum 39404c8d2a bug 1942364: switch to autograph gcp production for signing
This needs to wait for https://github.com/mozilla-releng/scriptworker-scripts/pull/1123 to be deployed before it can.
2025-01-29 14:05:41 +00:00
.cargo Starting new Remote Settings API 2024-10-24 13:47:32 +00:00
.circleci feat: remove codecov 2024-11-07 01:31:19 +00:00
.github Bug 1932096 - Create a GitHub action cron job to periodiaclly update in-tree data dumps 2024-11-19 18:49:31 +00:00
.vscode
automation Reformat Python code so it would pass linting checks in moz-central. 2024-12-17 15:25:57 +00:00
build-scripts Fix taskcluster breakage from #6524 2024-12-20 18:38:30 +00:00
components Bug 1938922 - Implement sub-variant handling in the search engine selector. 2025-01-28 09:19:22 +00:00
docs [[test]] -> [[bench]] in Cargo.toml 2024-12-23 06:08:33 +00:00
examples flatten Login struct 2025-01-21 09:17:42 +00:00
gradle Update Gradle to version 8.12.1 2025-01-24 15:53:09 +00:00
libs Fix issues with trailing whitespace/windows line endings/empty lines at ends of files 2024-12-04 14:27:23 +00:00
megazords Bug 1937916 - Add build-id to Android builds 2025-01-13 16:42:50 +00:00
taskcluster bug 1942364: switch to autograph gcp production for signing 2025-01-29 14:05:41 +00:00
testing flatten Login struct 2025-01-21 09:17:42 +00:00
tools Update task assembleNimbusTools to be configuration-cache friendly with fenix. 2025-01-15 16:22:02 +00:00
xcconfig
.buildconfig-android.yml Fix taskcluster breakage from #6524 2024-12-20 18:38:30 +00:00
.cron.yml
.detekt.yml
.gitignore introduce EncryptorDecryptorTrait for Logins component 2025-01-21 09:17:42 +00:00
.gitmodules
.mailmap
.mergify.yml ci(mergify): upgrade configuration to current format 2025-01-24 15:34:49 +00:00
.swiftlint.yml
.taskcluster.yml Update the taskcluster commenting logic 2024-11-07 14:04:31 +00:00
CHANGELOG.md new method is_empty for LoginsStore 2025-01-21 09:17:42 +00:00
CODE_OF_CONDUCT.md
COPYRIGHT
Cargo.lock support keydb feature 2025-01-14 13:45:26 +00:00
Cargo.toml Remove cargo workspace dependencies. 2024-12-04 15:31:31 +00:00
DEPENDENCIES.md Updates idna crate requirement to version 1 2024-12-03 15:29:40 +00:00
LICENSE
README.md Remote Settings: list component in README 2025-01-13 11:47:13 +00:00
build.gradle Target Android SDK 35 2024-12-18 20:35:54 +00:00
clippy.toml
gradle.properties Add missing license headers 2024-12-04 03:29:05 +00:00
gradlew Update Gradle to version 8.12 2025-01-06 20:39:36 +00:00
gradlew.bat Update Gradle to version 8.9 2024-07-25 15:06:38 +00:00
install-nimbus-cli.sh
proguard-rules-consumer-jna.pro
publish.gradle Update our megazord/UniFFI gradle code 2024-12-18 19:11:06 +00:00
rust-toolchain.toml Update Rust to 1.83, and fix clippy warnings from that version 2024-12-04 03:38:07 +00:00
settings.gradle Switch from JCenter to MavenCentral 2024-07-30 19:48:45 +00:00
version.txt Start release v136.0 2025-01-06 15:27:52 +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. Note that most components have their FFI generated by 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
  • remote-settings - for integrating with Remote Settings
  • 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

Note the above list is partial; see the actual list under the components directory.