Overview of breach-alerts
mainbreach-alerts component is responsible for storing and retrieving breach alert dismissals. It uses the Have I Been Pwned (HIBP) breach name as a unique, stable identifier for each breach, rather than a numeric ID.repository·main·Indexed 20 days ago
https://github.com/mozilla/application-servicesA collection of Rust components that enable Firefox applications on Android, iOS, and Desktop to integrate with services such as Firefox Accounts (fxa-client), Sync, and experimentation. It includes specialized libraries like the Mozilla Ads Client (MAC) for ad placement and reporting, breach-alerts for managing HIBP breach dismissals, a context_id mechanism to mitigate click fraud, and Crash Testing Helper APIs for debugging crash reporting systems.
breach-alerts component is responsible for storing and retrieving breach alert dismissals. It uses the Have I Been Pwned (HIBP) breach name as a unique, stable identifier for each breach, rather than a numeric ID.nss_sys crate provides low-level FFI (Foreign Function Interface) bindings for NSS (Network Security Services) in Rust. These bindings are maintained manually and are designed to mirror the structure of the NSS library itself. Each NSS header file has a corresponding .rs file within the nss_sys::bindings module that declares the relevant functions and data types.Mozilla Ads Client (MAC) is a library designed to integrate with the Mozilla Ads Routing Service (MARS). It is primarily intended for mobile surfaces like Firefox for iOS and Android, though it can be used by any surface capable of ingesting Application Services components.
Key Capabilities:
Privacy Model: MAC is privacy-first. It does not track user information or send sensitive identifiable information to Mozilla. Data shared with advertisers is aggregated or de-identified to preserve privacy.
The Synced Tabs Component provides a storage and syncing engine for remote tabs. It enables cross-platform synchronization of tab data (including URLs, titles, and window/group associations) and supports "tab commands" (e.g., requesting to close a remote tab).
Key characteristics:
The rc_crypto crate provides a centralized cryptographic interface for Application Services components. It is designed to be idiomatic to the ring crate API while being backed by Mozilla's NSS (Network Security Services) library via the nss crate. This approach ensures the use of Mozilla-audited primitives and provides stability by decoupling from ring's versioning policies.
Key capabilities include:
The Search Rust component provides search service functions for Firefox Desktop, Android, and iOS.
The component follows the standard Application Services architecture: a cross-platform Rust core with platform-specific bindings for Desktop, Android, and iOS. These bindings are automatically generated using UniFFI.
Currently, the module provides the filter_engine_configuration function. This function takes configurations from remote settings and details of the user's environment as input and returns a list of search engines to be presented to the user.
nimbus-cli is a command-line tool for Mozilla Nimbus designed for mobile app testing. It provides a unified interface for QA and developers to enroll and unenroll from experiments (including first-run experiments) on Android (device or emulator) and iOS (simulator only).
fenix)firefox_ios)focus_android)focus_ios)Application Services is a collection of Rust components designed to enable Firefox and related applications to integrate with Firefox accounts, sync data, and enable experimentation.
Each component is constructed using a core of shared Rust code, which is then wrapped with native language bindings to support various platforms.
The fxa-client component allows applications to integrate with the Firefox Accounts (FxA) identity service. It supports user sign-in via email-and-password OAuth flows or QR-code-based pairing, accessing user profile information, obtaining OAuth access tokens and client-side encryption keys (e.g., for Firefox Sync), managing connected applications, sending tabs to other apps, and managing device records for the signed-in application.
Note: This component does not provide cloud data storage for user accounts.
CuratedRecommendationsClient which interacts with the Merino backend REST API at the /api/v1/curated-recommendations endpoint to fetch curated information. The library uses UniFFI to provide cross-platform bindings for consumption by other platforms.taskcluster/kinds/toolchain/ directory are used to build foundational components that other tasks depend on. These components typically include Android and Desktop libraries.