From 9ddf93eb7d120109323b84a54f19b3270dca5f86 Mon Sep 17 00:00:00 2001 From: Gabriel Luong Date: Mon, 30 Dec 2019 11:17:39 -0500 Subject: [PATCH] For #6758 - Part 3: Add TopSiteStorage wrapper around AC's TopSiteStorage This follows the existing pattern around TabCollectionStorage. --- .../java/org/mozilla/fenix/components/Core.kt | 2 + .../fenix/components/TopSiteStorage.kt | 41 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 app/src/main/java/org/mozilla/fenix/components/TopSiteStorage.kt diff --git a/app/src/main/java/org/mozilla/fenix/components/Core.kt b/app/src/main/java/org/mozilla/fenix/components/Core.kt index 060f56192..da3e5eb1c 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Core.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Core.kt @@ -192,6 +192,8 @@ class Core(private val context: Context) { val tabCollectionStorage by lazy { TabCollectionStorage(context, sessionManager) } + val topSiteStorage by lazy { TopSiteStorage(context) } + val permissionStorage by lazy { PermissionStorage(context) } val webAppManifestStorage by lazy { ManifestStorage(context) } diff --git a/app/src/main/java/org/mozilla/fenix/components/TopSiteStorage.kt b/app/src/main/java/org/mozilla/fenix/components/TopSiteStorage.kt new file mode 100644 index 000000000..0312a5184 --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/components/TopSiteStorage.kt @@ -0,0 +1,41 @@ +/* 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/. */ + +package org.mozilla.fenix.components + +import android.content.Context +import androidx.lifecycle.LiveData +import mozilla.components.feature.top.sites.TopSite +import mozilla.components.feature.top.sites.TopSiteStorage +import org.mozilla.fenix.test.Mockable + +@Mockable +class TopSiteStorage(private val context: Context) { + var cachedTopSites = listOf() + + private val topSiteStorage by lazy { + TopSiteStorage(context) + } + + /** + * Adds a new [TopSite]. + */ + fun addTopSite(title: String, url: String) { + topSiteStorage.addTopSite(title, url) + } + + /** + * Returns a [LiveData] list of all the [TopSite] instances. + */ + fun getTopSites(): LiveData> { + return topSiteStorage.getTopSites() + } + + /** + * Removes the given [TopSite]. + */ + fun removeTopSite(topSite: TopSite) { + topSiteStorage.removeTopSite(topSite) + } +}