Android Components > Libraries > Public Suffix List
A library for reading and using the Public Suffix List.
A "public suffix" is one under which Internet users can (or historically could) directly register names. Some examples of public suffixes are .com, .co.uk and pvt.k12.ma.us. The Public Suffix List is a list of all known public suffixes. https://publicsuffix.org/
Use Gradle to download the library from maven.mozilla.org (Setup repository):
implementation "org.mozilla.components:lib-publicsuffixlist:{latest-version}"
The PublicSuffixList
class offers multiple methods for using the public suffix list data. For every instance the list needs to be read from disk into memory once. Therefore all methods return Deferred types. The list data is cached in the PublicSuffixList
and therefore it is recommended to keep a single instance in memory when frequently accessing the list. The list data can be prefetched to guarantee fast access for subsequent access.
val publicSuffixList = PublicSuffixList(context)
// Not needed, but allows a consumer to decide when the read is happening:
publicSuffixList.prefetch()
// Optionally you can wait for the read to complete:
publicSuffixList.prefetch().await()
// Extracting the effective top-level domain (eTLD)
publicSuffixList.getPublicSuffixPlusOne("www.mozilla.org") // -> mozilla.org
publicSuffixList.getPublicSuffixPlusOne("www.bbc.co.uk") // -> bbc.co.uk
publicSuffixList.getPublicSuffixPlusOne("a.b.ide.kyoto.jp") // -> b.ide.kyoto.jp
// Checking whether a value is a public suffix:
publicSuffixList.isPublicSuffix("org") // -> true
publicSuffixList.isPublicSuffix("co.uk") // -> true
publicSuffixList.isPublicSuffix("org") // -> true
publicSuffixList.isPublicSuffix("ide.kyoto.jp") --> true
// Extracting the public suffix from a domain
publicSuffixList.getPublicSuffix("www.mozilla.org") // -> org
publicSuffixList.getPublicSuffix("www.bbc.co.uk") // -> co.uk
publicSuffixList.getPublicSuffix("a.b.ide.kyoto.jp") // -> ide.kyoto.jp
// Removing the public suffix from a domain
publicSuffixList.stripPublicSuffix("www.mozilla.org") // -> www.mozilla
publicSuffixList.stripPublicSuffix("foobar.blogspot.com") // -> foobar
publicSuffixList.stripPublicSuffix("www.example.pvt.k12.ma.us") // -> www.example
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/