Firefox Application Services
Перейти к файлу
Ben Dean-Kawamura 7bc69fe08a Update our megazord/UniFFI gradle code
* Moved `dependsOnMegazord` from `publish.gradle` into
  `component-common.gradle`.  I don't think it makes sense to mix this
  with the publishing code.
* Use configurations to handle the native megazord dependency.
* Manually copy the native megazord into the resource dir when running
  unit tests.  The strategy we were using before doesn't work after
  Gradle 8.1.
* dependsOnMegazord no longer adds a native-support dependency.  This is
  only used by viaduct, so I moved the dependency into viaduct's
  build.gradle.
* Removed the jnaForTest code.  We no longer need this hack now that
  `implementation` and `testImplementation` can specify different types.
2024-12-18 19:11:06 +00:00
.cargo
.circleci
.github
.vscode
automation Reformat Python code so it would pass linting checks in moz-central. 2024-12-17 15:25:57 +00:00
build-scripts Update our megazord/UniFFI gradle code 2024-12-18 19:11:06 +00:00
components Update our megazord/UniFFI gradle code 2024-12-18 19:11:06 +00:00
docs
examples Add trailing \n to examples/remote-settings-cli/Cargo.toml 2024-12-17 15:43:57 +00:00
gradle Removing kotlin-dsl plugin 2024-12-18 19:11:06 +00:00
libs
megazords Update our megazord/UniFFI gradle code 2024-12-18 19:11:06 +00:00
taskcluster Reformat Python code so it would pass linting checks in moz-central. 2024-12-17 15:25:57 +00:00
testing
tools Removing kotlin-dsl plugin 2024-12-18 19:11:06 +00:00
xcconfig
.buildconfig-android.yml
.cron.yml
.detekt.yml
.gitignore
.gitmodules
.mailmap
.mergify.yml
.swiftlint.yml
.taskcluster.yml
CHANGELOG.md Bug 1936456 - Don't consider unvisited-but-bookmarked pages to be visited. 2024-12-13 16:16:58 +00:00
CODE_OF_CONDUCT.md
COPYRIGHT
Cargo.lock Use the Default trait and the pretty_assertions in search selector tests. 2024-12-16 15:11:01 +00:00
Cargo.toml
DEPENDENCIES.md
LICENSE
README.md
build.gradle
clippy.toml
gradle.properties
gradlew
gradlew.bat
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
settings.gradle
version.txt

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
  • 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.