application-services/README.md

96 строки
5.1 KiB
Markdown
Исходник Обычный вид История

<a href="https://codecov.io/gh/mozilla/application-services"> <img src="https://codecov.io/gh/mozilla/application-services/branch/main/graph/badge.svg?token=HxeUysUWqx"/> </a>
2018-04-18 04:48:35 +03:00
## Firefox Application Services
2018-04-17 02:23:08 +03:00
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.
2018-04-17 02:23:08 +03:00
2021-03-16 00:06:39 +03:00
### Contributing
To contribute, please review the Mozilla [Community Participation Guidelines](https://www.mozilla.org/en-US/about/governance/policies/participation/) and then visit our [how to contribute](docs/contributing.md) guide.
2021-03-16 00:06:39 +03:00
### Contact
Get in touch with other community members on Matrix, or through issues here on GitHub.
- Matrix: [#rust-components:mozilla.org](https://chat.mozilla.org/#/room/#rust-components:mozilla.org) ([How to connect](https://wiki.mozilla.org/Matrix#Connect_to_Matrix))
### Building the Rust Components
2021-03-16 00:06:39 +03:00
1. Clone or Download the repository:
```shell
$ git clone https://github.com/mozilla/application-services (or use the ssh link)
$ cd application-services
$ git submodule init
$ git submodule update --recursive
2021-03-16 00:06:39 +03:00
```
2021-03-22 19:50:24 +03:00
2. Follow these instructions to install your [system-level dependencies](docs/building.md#building-application-services)
3. Run the a-s Rust unit tests
2021-03-16 00:06:39 +03:00
```shell
2021-03-16 00:36:29 +03:00
cargo test
2021-03-16 00:06:39 +03:00
```
### 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
* Build instructions to test [Fenix / android-components integration](docs/building.md#building-for-fenix)
* [Fenix Auto-publication workflow for android-components and application-services](https://github.com/mozilla-mobile/fenix/#auto-publication-workflow-for-android-components-and-application-services)
#### Firefox for iOS integration
* Build instructions to test [Firefox iOS integration](docs/building.md#building-for-firefox-ios)
2021-03-22 19:50:24 +03:00
* [Using local components in iOS](docs/howtos/locally-published-components-in-ios.md)
#### Firefox Desktop
* Build instructions to test [Firefox Desktop integration](docs/building.md#building-for-firefox-desktop)
2018-04-18 05:14:59 +03:00
2021-03-16 00:06:39 +03:00
### 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:
2018-04-18 05:14:59 +03:00
2021-03-16 00:06:39 +03:00
```shell
cargo doc --no-deps --document-private-items --open
```
2018-08-09 23:22:25 +03:00
2021-03-16 00:08:11 +03:00
The [./docs/](docs) directory holds internal documentation about working with the
code in this repository
2021-03-16 00:06:39 +03:00
### Rust Components
[./components/](components) contains the source for each component, and its
2021-03-16 00:08:11 +03:00
FFI bindings.
* See [./components/logins/](components/logins) for an example, where you can
2021-03-16 00:08:11 +03:00
find:
* The shared [rust code](components/logins/src).
* The mapping into a [C FFI](components/logins/ffi).
* The [Kotlin bindings](components/logins/android) for use by Android
2021-03-16 00:08:11 +03:00
applications.
* The [Swift bindings](components/logins/ios) for use by iOS applications.
* See [./components/fxa-client](components/fxa-client) for an example that uses
2021-03-16 00:08:11 +03:00
[uniffi](https://github.com/mozilla/uniffi-rs/) to generate API wrappers for
multiple languages, such as Kotlin and Swift.
#### List of components
2021-03-16 00:06:39 +03:00
* [autofill](components/autofill) - for storage and syncing of credit card and
address information
* [crashtest](components/crashtest) - testing-purposes (crashing the Rust code)
* [fxa-client](components/fxa-client) - for applications that need to sign in
with FxA, access encryption keys for sync, and more.
* [logins](components/logins) - for storage and syncing of a user's saved login
credentials
* [nimbus](components/nimbus) - for integrating with Mozilla's [experimentation](https://mozilla.github.io/experimenter-docs/) platform for Firefox
2021-03-16 00:06:39 +03:00
* [places](components/places) - for storage and syncing of a user's saved
browsing history
* [push](components/push) - for applications to receive real-time updates via
WebPush
* [rc_log](components/rc_log) - for connecting component log output to the
application's log stream
* [support](components/support) - low-level utility libraries
* [support/rc_crypto](components/rc_crypto) - handles cryptographic needs backed by Mozilla's
[NSS](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS) library
* [support/sql](components/support/sql) - utilities for storing data locally
with SQL
* [sync15](components/sync15) - shared library for accessing data in Firefox
Sync
* [sync_manager](components/sync_manager) - integrates multiple sync engines/
stores into a single framework
* [tabs](components/tabs) - an in-memory syncing engine for remote browser tabs
* [viaduct](components/viaduct) - an HTTP request library
* [webext-storage](components/webext-storage) - powers an implementation of the
chrome.storage.sync WebExtension API