Firefox Application Services
Перейти к файлу
Ryan Kelly 5fc2d7841c
Remove the `ffi-support` crate sources from this repo.
As of https://github.com/mozilla/application-services/issues/3463
the `ffi-support` crate lives in its own repo, and it's confusing
having an old copy of it still hanging around in this one.
2021-06-01 15:56:49 +10:00
.cargo Replacing all_tests.sh 2021-05-04 11:41:06 -04:00
.circleci explicitly rm six.py to work around unexplained iOS build issues (#4164) 2021-06-01 11:28:46 +10:00
.github Updated docs for cutting a new release (#4012) 2021-05-26 11:13:53 -04:00
.vscode Update vscode recommended extensions 2020-04-20 19:19:23 -04:00
automation Use resolved path for executing ./gradlew in tests. 2021-06-01 15:55:10 +10:00
build-scripts Add script for running `cargo` from inside XCode. 2021-06-01 14:55:29 +10:00
components Remove the `ffi-support` crate sources from this repo. 2021-06-01 15:56:49 +10:00
docs Updated docs for cutting a new release (#4012) 2021-05-26 11:13:53 -04:00
examples fix nightly clippy nits (#4161) 2021-06-01 15:43:11 +10:00
gradle/wrapper Import nimbus-sdk as submodule, republish as part of the megazord. 2020-11-09 16:40:21 +11:00
libs Upgrade to NSS 3.65 (#4125) 2021-05-28 07:00:49 +10:00
megazords Remove the `ffi-support` crate sources from this repo. 2021-06-01 15:56:49 +10:00
taskcluster Update rust and rustup config in CircleCI. 2021-05-18 12:26:39 +10:00
testing Remove the `ffi-support` crate sources from this repo. 2021-06-01 15:56:49 +10:00
tools Remove the `ffi-support` crate sources from this repo. 2021-06-01 15:56:49 +10:00
xcconfig Apply fixes for XCode 12 when running a local carthage build. 2020-12-22 16:50:33 +11:00
.buildconfig-android.yml Cut release v77.0.2 2021-05-31 15:46:55 +10:00
.cron.yml Bug 1602861 - Add empty .cron.yml to allow the general cron task to run 2019-12-19 19:10:21 +01:00
.detekt.yml Update Android dependencies 2020-04-08 13:23:31 -04:00
.gitignore Allow our a-s documentation to be published via mdbook 2021-04-02 11:39:42 -04:00
.gitmodules Remove submodule from .gitmodules 2021-03-22 18:14:41 -07:00
.mergify.yml Tell mergify not to dismiss reviews on trusted collaborator PRs. (#3942) 2021-03-19 07:14:25 +11:00
.swiftlint.yml Add Nimbus to swiftlint.yml and fix lints 2021-04-16 07:53:55 -05:00
.taskcluster.yml Bug 1657393 - add resource-monitoring toolchain. (#3309) 2020-08-06 15:36:04 +01:00
CHANGELOG.md Cut release v77.0.2 2021-05-31 15:46:55 +10:00
CHANGES_UNRELEASED.md Merge branch 'release-v77' into merge-v77.0.2-to-main 2021-05-31 15:50:01 +10: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 Remove the `ffi-support` crate sources from this repo. 2021-06-01 15:56:49 +10:00
Cargo.toml Remove the `ffi-support` crate sources from this repo. 2021-06-01 15:56:49 +10:00
Cartfile Update dependencies 2020-10-19 13:36:17 -04:00
Cartfile.resolved Apply fixes for XCode 12 when running a local carthage build. 2020-12-22 16:50:33 +11:00
DEPENDENCIES.md Update uniffi to version 0.10 (#4144) 2021-05-26 18:04:01 +10:00
LICENSE rc_crypto initial commit (#1349) 2019-07-09 14:00:48 -04:00
README.md Remove the `ffi-support` crate sources from this repo. 2021-06-01 15:56:49 +10:00
build-carthage.sh Apply fixes for XCode 12 when running a local carthage build. 2020-12-22 16:50:33 +11:00
build.gradle Move Nimbus.kt from Android Components (#4036) r=travis,christian,sebastien 2021-04-30 15:31:25 +01: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 Update Android dependencies 2020-04-08 13:23:31 -04:00
gradlew Import nimbus-sdk as submodule, republish as part of the megazord. 2020-11-09 16:40:21 +11:00
gradlew.bat Import nimbus-sdk as submodule, republish as part of the megazord. 2020-11-09 16:40:21 +11:00
proguard-rules-consumer-jna.pro Set consumer Proguard rules. 2018-11-27 20:29:10 -08:00
publish.gradle Add some quality-of-life improvements for running android smoketests. 2020-04-02 16:40:47 +11:00
rust-toolchain Automagically manage rust version and targets via toolchain config. 2021-03-19 14:12:11 +11:00
settings.gradle Update Android dependencies 2020-04-08 13:23:31 -04:00

README.md

Firefox Application Services

Application Services (a-s) is 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.

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

Documentation

We use rustdoc to document both the public API of the components and the various internal implementation details. Once you have completed the build steps, you can view the docs by running:

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

The ./docs/ directory holds internal documentation about working with the code in this repository

Rust Components

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

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