• This repository has been archived on 01/Nov/2022
  • Stars
    star
    2,019
  • Rank 22,918 (Top 0.5 %)
  • Language
    Kotlin
  • License
    Mozilla Public Li...
  • Created over 6 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

⚠️ This project moved to a new repository. It is now developed and maintained at: https://github.com/mozilla-mobile/firefox-android

Android components

Task Status Mergify Status chat.mozilla.org

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

ℹ️ For more information see the website.

A fully-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. To use them, you need to add the following to your project's top-level build file, in the allprojects block (see e.g. the reference-browser):

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

Each module that uses a component needs to specify it in its build file, in the dependencies block. For example, to use the Base component (in the support) collection, you need:

dependencies {
    implementation 'org.mozilla.components:support-base:+'
}

Nightly builds

Nightly builds are created every day from the main branch and published on nightly.maven.mozilla.org.

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.

  • 🔵 Awesomebar - A customizable Awesome Bar implementation for browsers.

  • 🔵 Domains Localized and customizable domain lists for auto-completion in browsers.

  • 🔵 Engine-Gecko - Engine implementation based on GeckoView.

  • 🔵 Engine-System - Engine implementation based on the system's WebView.

  • 🔵 Errorpages - Responsive browser error pages for Android apps.

  • 🔵 Icons - A component for loading and storing website icons (like Favicons).

  • 🔵 Menu - A generic menu with customizable items primarily for browser toolbars.

  • Menu 2 - A generic menu with customizable items primarily for browser toolbars.

  • 🔵 Session-Storage - Component for saving and restoring the browser state.

  • 🔵 State - Component for maintaining the centralized state of the browser and its components.

  • 🔵 Storage-Sync - A syncable implementation of browser storage backed by application-services' Places lib.

  • 🔵 Tabstray - A customizable tabs tray for browsers.

  • 🔵 Thumbnails - A component for loading and storing website thumbnails (screenshot of the website).

  • 🔵 Toolbar - A customizable toolbar for browsers.

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.

  • 🔵 Push - An abstract definition of a push service component.

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

  • 🔵 Accounts - A component that connects an FxaAccountManager from service-firefox-accounts with feature-tabs in order to facilitate authentication flows.

  • 🔵 Accounts Push - Feature of use cases for FxA Account that work with push support.

  • 🔵 Autofill - A component that provides support for Android's Autofill framework.

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

  • 🔴 Containers - A component for working with contextual identities also known as containers.

  • 🔵 Context Menu - A component for displaying context menus when long-pressing web content.

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

  • Progressive Web Apps (PWA) - A component that provides functionality for supporting Progressive Web Apps (PWA).

  • 🔵 Reader View - A component that provides Reader View functionality.

  • 🔵 QR - A component that provides functionality for scanning QR codes.

  • 🔵 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 and storage modules.

  • 🔵 Share - Feature implementation for saving and sorting recent apps used for sharing.

  • 🔵 Sync -A component that provides synchronization orchestration for groups of (concept) SyncableStore objects.

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

  • 🔵 Tab Collections - Feature implementation for saving, restoring and organizing collections of tabs.

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

  • 🔵 Top Sites - Feature implementation for saving and removing top sites.

  • 🔵 Prompts - A component that will handle all the common prompt dialogs from web content.

  • 🔵 Push - A component that provides Autopush messages with help from a supported push service.

  • 🔵 Find In Page - A component that provides an UI widget for find in page functionality.

  • 🔵 Remote Tabs - Feature that provides access to other device's tabs in the same account.

  • 🔵 Site Permissions - A feature for showing site permission request prompts.

  • 🔵 WebAuthn - A feature that provides WebAuthn functionality for supported engines.

  • 🔵 Web Notifications - A component for displaying web notifications.

  • 🔵 WebCompat - A feature to enable website-hotfixing via the Web Compatibility System-Addon.

  • 🔵 WebCompat Reporter - A feature that enables users to report site issues to Mozilla's Web Compatibility team for further diagnosis.

  • 🔵 Web Add-ons - A feature that provides functionality for managing add-ons.

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.

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

  • 🔵 Firefox Sync - Autofill - A library for integrating with Firefox Sync - Autofill.

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

  • 🔵 Location - A library for accessing Mozilla's and other location services.

  • 🔴 Nimbus - A wrapper for the Nimbus SDK.

  • 🔵 Pocket - A library for communicating with the Pocket API.

  • 🔵 Contile - A library for communicating with the Contile services API.

Support

Supporting components with generic helper code.

  • 🔵 Android Test - A collection of helpers for testing components in instrumented (on device) tests (src/androidTest).

  • 🔵 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 in local unit tests (src/test).

  • 🔵 Test Appservices - A component for synchronizing Application Services' unit testing dependencies used in Android Components.

  • 🔵 Test LibState - A collection of helpers for testing functionality that relies on the lib-state component in local unit tests (src/test).

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

  • 🔵 Webextensions - A component containing building blocks for features implemented as web extensions.

Standalone libraries

Tooling

  • 🔵 Fetch-Tests - A generic test suite for components that implement concept-fetch.

  • 🔵 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 - A simple app demoing general Firefox Sync integration, with bookmarks and history.

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

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

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

Building

Command line

$ git clone https://github.com/mozilla-mobile/android-components.git
$ cd android-components
$ ./gradlew assemble

Android Studio

If the environment variable JAVA_HOME is not defined, you will need to set it. If you would like to use the JDK installed by Android Studio, here's how to find it:

  1. Open Android Studio.
  2. Select "Configure".
  3. Select "Default Project Structure". You should now see the Android JDK location.
  4. Set the environment variable JAVA_HOME to the location. (How you set an environment variable depends on your OS.)
  5. Restart Android Studio.

Once the environment variable is set, you can import the project into Android Studio with the default wizard options.

If your build fails, you may find you get more instructive error messages by attempting the build at the command line.

Coding Standards

Style

We follow the style enforced by ktlint and detekt. See how to configure Android Studio appropriately.

To check your style, run:

./gradlew ktlint
./gradlew detekt

Documentation

We use README.md files for each component.

If you fix a bug or change an API, you should update docs/changelog.md.

Testing

You are expected to both add tests for code that you write and make sure that your changes do not cause existing tests to fail. You may find these command lines helpful:

./gradlew test                             # Run all tests
./gradlew :support-ktx:testdebugunittest   # Run unit tests for a specified module

See also how to measure code coverage.

Accessibility

If your code has user-facing changes, follow Android accessibility best practices.

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/

More Repositories

1

firefox-ios

Firefox for iOS
Swift
12,203
star
2

fenix

⚠️ Fenix (Firefox for Android) moved to a new repository. It is now developed and maintained as part of: https://github.com/mozilla-mobile/firefox-android
Kotlin
6,473
star
3

focus-android

⚠️ Firefox Focus (Android) moved to a new repository. It is now developed and maintained as part of: https://github.com/mozilla-mobile/firefox-android
Kotlin
2,109
star
4

firefox-android

⚠️ This repository hosts the Firefox for Android (Fenix), Focus for Android, and Mozilla Android Components projects. It is now developed and maintained as part of Mozilla Central. See the announcement here: https://github.com/mozilla-mobile/firefox-android/wiki#upcoming-migration-to-mozilla-central. ”
Kotlin
1,718
star
5

focus-ios

⚠️ Firefox Focus (iOS) has moved to a new repository. It is now developed and maintained as part of: https://github.com/mozilla-mobile/firefox-ios
Swift
1,259
star
6

reference-browser

A full-featured browser reference implementation using Mozilla Android Components.
Kotlin
567
star
7

mozilla-vpn-client

A fast, secure and easy to use VPN. Built by the makers of Firefox.
C++
462
star
8

FirefoxLite

Emerging Market Experiment
Java
282
star
9

firefox-tv

Firefox for Amazon's Fire TV
Kotlin
252
star
10

webxr-ios

An iOS app for testing WebXR
Swift
210
star
11

guardian-vpn-android

DEPRECATED - Mozilla VPN for Android
Kotlin
52
star
12

guardian-vpn-ios

Mozilla VPN for iOS
Swift
52
star
13

ios-l10n-scripts

Python
45
star
14

firefox-ios-open-in-client

INACTIVE - http://mzl.la/ghe-archive - Reference client for opening links in Firefox for iOS.
Swift
43
star
15

ScrollingCardView

INACTIVE - http://mzl.la/ghe-archive - A card view widget for iOS that will grow with its content, enabling scrolling when the content is larger than the view.
Swift
43
star
16

FirefoxData-android

DEPRECATED - A library for accessing a user's Firefox data: history, bookmarks, etc.
Java
39
star
17

shared-docs

⚠️ shared-docs moved to a new repository. It is now developed and maintained as part of: https://github.com/mozilla-mobile/firefox-android
34
star
18

telemetry-ios

A generic library for sending telemetry pings from iOS applications to Mozilla's telemetry service.
Swift
28
star
19

firefox-echo-show

Firefox for Amazon's Echo Show
Java
25
star
20

android-automation-tools

INACTIVE - http://mzl.la/ghe-archive - Tools for automating tasks in Android projects
Kotlin
23
star
21

prox

[INACTIVE] A search and discovery app for the "here & now". We're experimenting with ideas on mobile that can better surface content from the open web.
Swift
22
star
22

android-permission-handler

INACTIVE - http://mzl.la/ghe-archive - A permission helper systemizing runtime permission handling on Android devices
Java
21
star
23

MappaMundi

A declarative Don't Repeat Yourself tool for XCUITesting and screenshots.
Swift
19
star
24

AutocompleteTextField

An iOS text field that autocompletes text with the supplied list of words.
Swift
18
star
25

telemetry-android

A generic library for generating and sending telemetry pings from Android applications to Mozilla's telemetry service.
Java
18
star
26

gradle-apilint

Gradle Plugin that tracks the API of an Android library and helps maintain backward compatibility.
Python
8
star
27

outreachy-UX-2020

INACTIVE - http://mzl.la/ghe-archive - A place to document UX contributions for the summer 2020 Outreachy program.
8
star
28

perf-tools

Tools for the performance team that don't fit into other repositories
Python
7
star
29

fretboard

A simple A/B testing framework for mobile applications
Kotlin
6
star
30

relbot

Python
6
star
31

mozilla-mobile.github.io

INACTIVE - http://mzl.la/ghe-archive - Mozilla Mobile Blog
Ruby
6
star
32

buddybuild

INACTIVE - http://mzl.la/ghe-archive - Instructions on how to install an iOS app via BuddyBuild
5
star
33

testapp

Page for testing web page controls
JavaScript
5
star
34

prox-server

[INACTIVE] Server & data scripts for the Prox client.
Python
5
star
35

fenix-beta-version

GitHub Action that discovers the current Fenix Beta version
Python
5
star
36

web_metadata_ios

INACTIVE - http://mzl.la/ghe-archive - Client side web page metadata extraction
Swift
4
star
37

perf-frontend-issues

A repository to hold issues related to front-end mobile application performance.
4
star
38

fennec-profile-manager

Fennec Profile Manager (Backup / Restore)
Kotlin
4
star
39

test-dashboard

Python
3
star
40

nmx-video-prototypes

INACTIVE - http://mzl.la/ghe-archive - A collection of NMX prototypes for video-related topics
Kotlin
3
star
41

fenix-nightly-perftest-results

INACTIVE - http://mzl.la/ghe-archive - Fenix nightly performance test results
3
star
42

focus_foxfooding_campaign

3
star
43

onyx_ios

iOS Client for the Onyx link server https://github.com/mozilla/onyx
Swift
3
star
44

sync-strings-action

Sync Strings GitHub Action
Python
3
star
45

mobile-test-eng

Task tracking for Mobile Test Engineering Team
2
star
46

focus-ios-open-in-client

INACTIVE - http://mzl.la/ghe-archive - Reference client for opening links in Focus for iOS.
2
star
47

ac-version-for-fenix-beta

⚠️ This GitHub action is now developed and maintained as part of: https://github.com/mozilla-mobile/fenix-beta-version
Python
2
star
48

qt_static_windows

2
star
49

ndhook

INACTIVE - http://mzl.la/ghe-archive - A server that answers webhook calls from Github and instantiates Nimbledroid profiles
Rust
2
star
50

prox-explorer

[INACTIVE] A web-based exploration of event APIs for Project Prox.
JavaScript
2
star
51

FNPRMS

"funperms": Fenix Nightly Performance Regression Measurement System used by the Android FE perf team to measure cold startup. Please file issues in perf-frontend-issues
Python
1
star
52

testops-looker

LookML
1
star
53

qt_static_macos

This repo is needed to compile MozillaVPN on macOS as artifact
1
star
54

testops-tools

Home for Mobile cross-project CI tasks
Python
1
star
55

data-sync-user-testing

test repo for smoketesting the sync bot
1
star
56

strbot

String Bot - To sync strings to release branches (Fenix, A-C)
Python
1
star
57

mobile-test-priority-messaging

A Slack monitoring/message high priority messaging delegation application specific for the needs of the Mobile Test Engineering team
Python
1
star
58

LocalizationTools

Swift
1
star
59

ff-test-buddybuild

INACTIVE - http://mzl.la/ghe-archive - BuddyBuild - Test App
Swift
1
star
60

nimbledroidrs

INACTIVE - http://mzl.la/ghe-archive - A Rust library for interacting with Nimbledroid.
Rust
1
star
61

whatsnew

INACTIVE - http://mzl.la/ghe-archive - Update the Firefox for iOS info on iTunes Connect
Python
1
star