A collection of Android libraries to build browsers or browser-like applications.
Clone or download
Permalink
Failed to load latest commit information.
automation Update Docker image to version 1.9. Nov 13, 2018
buildSrc Wrap new (low level) synchronous logins API in an async version Nov 13, 2018
components Wrap new (low level) synchronous logins API in an async version Nov 13, 2018
config Add detekt rule for mandatory braces in if-statements Oct 24, 2018
docs Update GeckoView Nightly to 65.0.20181113100051. Nov 13, 2018
gradle/wrapper Update gradle (and wrapper) to 4.10.2. Oct 23, 2018
samples Wrap new (low level) synchronous logins API in an async version Nov 13, 2018
.editorconfig Add an .editorconfig file to fix ktlint Oct 31, 2018
.gitattributes Closes #664: Treat generated API docs as binary files and do not show… Aug 28, 2018
.gitignore Closes #314: Automate Nightly GeckoView dependency update Oct 5, 2018
.taskcluster.yml Update Docker image to version 1.9. Nov 13, 2018
CHANGELOG.md Update CHANGELOG to point to website. Aug 10, 2018
CODEOWNERS Setup CODEOWNERS for glean library. Oct 22, 2018
LICENSE Initial commit Mar 21, 2018
README.md Issue #1303: Move CustomTabService to new feature component: feature-… Nov 13, 2018
build.gradle Gradle: Remove experimental block for Coroutines. Nov 9, 2018
codecov.yml Issue #315: Generate code coverage and upload to codecov from taskclu… Nov 2, 2018
gradle.properties Raise gradle memory limit. Jun 21, 2018
gradlew Update gradle (and wrapper) to 4.10.2. Oct 23, 2018
gradlew.bat Update gradle (and wrapper) to 4.10.2. Oct 23, 2018
l10n.toml Closes #988: Create feature-download (UI) Oct 22, 2018
publish.gradle Stop Bintray. Update {group,artifact}Ids. Remove massage task Oct 22, 2018
settings.gradle Issue #1327: (tooling-fetch-tests): A generic test suite for componen… Nov 13, 2018

README.md

Android components

Task Status codecov

A collection of Android libraries to build browsers or browser-like applications.

ℹ️ For more information see the website.

A full featured reference browser implementation based on the components can be found in the reference-browser repository.

Getting Involved

We encourage you to participate in this open source project. We love pull requests, bug reports, ideas, (security) code reviews or any kind of positive contribution.

Before you attempt to make a contribution please read the Community Participation Guidelines.

Maven repository

All components are getting published on maven.mozilla.org.

repositories {
    maven {
       url "https://maven.mozilla.org/maven2"
    }
}

Components

  • 🔴 In Development - Not ready to be used in shipping products.
  • Preview - This component is almost/partially ready and can be tested in products.
  • 🔵 Production ready - Used by shipping products.

Browser

High-level components for building browser(-like) apps.

Concept

API contracts and abstraction layers for browser components.

  • 🔴 Awesomebar - An abstract definition of an awesome bar component.

  • Engine - Abstraction layer that allows hiding the actual browser engine implementation.

  • Fetch - An abstract definition of an HTTP client for fetching resources.

  • 🔴 Storage - Abstract definition of a browser storage component.

  • 🔴 Tabstray - Abstract definition of a tabs tray component.

  • Toolbar - Abstract definition of a browser toolbar component.

Feature

Combined components to implement feature-specific use cases.

  • Awesomebar - A component that connects a concept-awesomebar implementation to a concept-toolbar implementation and provides implementations of various suggestion providers.

  • 🔴 Custom Tabs - A component for providing Custom Tabs functionality in browsers.

  • Downloads - A component to perform downloads using the Android downloads manager.

  • 🔴 Intent - A component that provides intent processing functionality by combining various other feature modules.

  • 🔴 Search - A component that connects an (concept) engine implementation with the browser search module.

  • Session - A component that connects an (concept) engine implementation with the browser session module.

  • 🔴 Storage -A component that connects a (concept) storage implementation with its various consumers, like a (concept) engine implementation for history tracking.

  • 🔴 Tabs - A component that connects a tabs tray implementation with the session and toolbar modules.

  • 🔴 Toolbar - A component that connects a (concept) toolbar implementation with the browser session module.

UI

Generic low-level UI components for building apps.

  • 🔵 Autocomplete - A set of components to provide autocomplete functionality.

  • 🔵 Colors - The standard set of Photon colors.

  • 🔵 Fonts - The standard set of fonts used by Mozilla Android products.

  • 🔵 Icons - A collection of often used browser icons.

  • 🔵 Progress - An animated progress bar following the Photon Design System.

  • Tabcounter - A button that shows the current tab count and can animate state changes.

Service

Components and libraries to interact with backend services.

  • 🔵 Firefox Accounts (FxA) - A library for integrating with Firefox Accounts.

  • 🔴 Firefox Sync - Logins - A library for integrating with Firefox Sync - Logins.

  • 🔵 Fretboard - An Android framework for segmenting users in order to run A/B tests and roll out features gradually.

  • 🔴 Glean - A client-side telemetry SDK for collecting metrics and sending them to Mozilla's telemetry service (eventually replacing service-telemetry).

  • 🔵 Telemetry - A generic library for sending telemetry pings from Android applications to Mozilla's telemetry service.

Support

Supporting components with generic helper code.

  • 🔵 Base - Base component containing building blocks for components.

  • 🔵 Ktx - A set of Kotlin extensions on top of the Android framework and Kotlin standard library.

  • 🔵 Test - A collection of helpers for testing components.

  • 🔵 Utils - Generic utility classes to be shared between projects.

Standalone libraries

  • Crash - A generic crash reporter component that can report crashes to multiple services.

  • 🔴 Dataprotect - A component using AndroidKeyStore to protect user data.

  • JEXL - Javascript Expression Language: Context-based expression parser and evaluator.

Tooling

  • 🔵 Lint - Custom Lint rules for the components repository.

Sample apps

Sample apps using various components.

  • Browser - A simple browser composed from browser components. This sample application is only a very basic browser. For a full-featured reference browser implementation see the reference-browser repository.

  • Crash - An app showing the integration of the lib-crash component.

  • Firefox Accounts (FxA) - A simple app demoing Firefox Accounts integration.

  • Firefox Sync - Logins - A simple app demoing Firefox Sync (Logins) integration.

  • Toolbar - An app demoing multiple customized toolbars using the browser-toolbar component.

  • DataProtect - An app demoing how to use the Dataprotect component to load and store encrypted data in SharedPreferences.

  • Glean - An app demoing how to use the Glean library to collect and send telemetry data.

License

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/