From afda836f1f56aad6c6e287edccb7295887cb184e Mon Sep 17 00:00:00 2001 From: Tiger Oakes Date: Thu, 7 Nov 2019 11:30:03 -0800 Subject: [PATCH] Use ManifestUpdateFeature --- .../mozilla/fenix/components/Components.kt | 2 +- .../java/org/mozilla/fenix/components/Core.kt | 19 +++++++++++++++++-- .../org/mozilla/fenix/components/UseCases.kt | 7 +++---- .../customtabs/ExternalAppBrowserFragment.kt | 12 +++++++++++- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/Components.kt b/app/src/main/java/org/mozilla/fenix/components/Components.kt index 298181e6d..1764710d3 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Components.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Components.kt @@ -27,7 +27,7 @@ class Components(private val context: Context) { core.store, core.engine.settings, search.searchEngineManager, - core.client + core.webAppShortcutManager ) } val intentProcessors by lazy { 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 020ea6ff9..6f27a9c04 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Core.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Core.kt @@ -30,13 +30,14 @@ import mozilla.components.feature.customtabs.store.CustomTabsServiceStore import mozilla.components.feature.media.MediaFeature import mozilla.components.feature.media.RecordingDevicesNotificationFeature import mozilla.components.feature.media.state.MediaStateMachine +import mozilla.components.feature.pwa.ManifestStorage +import mozilla.components.feature.pwa.WebAppShortcutManager import mozilla.components.feature.session.HistoryDelegate import mozilla.components.feature.webcompat.WebCompatFeature import mozilla.components.service.sync.logins.AsyncLoginsStorageAdapter import mozilla.components.service.sync.logins.SyncableLoginsStore import org.mozilla.fenix.AppRequestInterceptor import org.mozilla.fenix.FeatureFlags -import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.settings import org.mozilla.fenix.test.Mockable import java.io.File @@ -141,7 +142,19 @@ class Core(private val context: Context) { * Icons component for loading, caching and processing website icons. */ val icons by lazy { - BrowserIcons(context, context.components.core.client) + BrowserIcons(context, client) + } + + /** + * Shortcut component for managing shortcuts on the device home screen. + */ + val webAppShortcutManager by lazy { + WebAppShortcutManager( + context, + client, + webAppManifestStorage, + supportWebApps = FeatureFlags.progressiveWebApps + ) } /** @@ -156,6 +169,8 @@ class Core(private val context: Context) { val permissionStorage by lazy { PermissionStorage(context) } + val webAppManifestStorage by lazy { ManifestStorage(context) } + val loginsStorage by lazy { SyncableLoginsStore( AsyncLoginsStorageAdapter.forDatabase( diff --git a/app/src/main/java/org/mozilla/fenix/components/UseCases.kt b/app/src/main/java/org/mozilla/fenix/components/UseCases.kt index fc3de1673..dd64a1a95 100644 --- a/app/src/main/java/org/mozilla/fenix/components/UseCases.kt +++ b/app/src/main/java/org/mozilla/fenix/components/UseCases.kt @@ -9,16 +9,15 @@ import mozilla.components.browser.search.SearchEngineManager import mozilla.components.browser.session.SessionManager import mozilla.components.browser.state.store.BrowserStore import mozilla.components.concept.engine.Settings -import mozilla.components.concept.fetch.Client import mozilla.components.feature.app.links.AppLinksUseCases import mozilla.components.feature.contextmenu.ContextMenuUseCases import mozilla.components.feature.downloads.DownloadsUseCases +import mozilla.components.feature.pwa.WebAppShortcutManager import mozilla.components.feature.pwa.WebAppUseCases import mozilla.components.feature.search.SearchUseCases import mozilla.components.feature.session.SessionUseCases import mozilla.components.feature.session.SettingsUseCases import mozilla.components.feature.tabs.TabsUseCases -import org.mozilla.fenix.FeatureFlags.progressiveWebApps import org.mozilla.fenix.test.Mockable /** @@ -32,7 +31,7 @@ class UseCases( private val store: BrowserStore, private val engineSettings: Settings, private val searchEngineManager: SearchEngineManager, - private val httpClient: Client + private val shortcutManager: WebAppShortcutManager ) { /** * Use cases that provide engine interactions for a given browser session. @@ -57,7 +56,7 @@ class UseCases( val appLinksUseCases by lazy { AppLinksUseCases(context.applicationContext) } val webAppUseCases by lazy { - WebAppUseCases(context, sessionManager, httpClient, supportWebApps = progressiveWebApps) + WebAppUseCases(context, sessionManager, shortcutManager) } val downloadUseCases by lazy { DownloadsUseCases(store) } diff --git a/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt index 96715d638..bf5994ead 100644 --- a/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt @@ -18,6 +18,7 @@ import mozilla.components.concept.engine.manifest.getOrNull import mozilla.components.feature.contextmenu.ContextMenuCandidate import mozilla.components.feature.pwa.ext.getTrustedScope import mozilla.components.feature.pwa.ext.trustedOrigins +import mozilla.components.feature.pwa.feature.ManifestUpdateFeature import mozilla.components.feature.pwa.feature.WebAppActivityFeature import mozilla.components.feature.pwa.feature.WebAppHideToolbarFeature import mozilla.components.feature.pwa.feature.WebAppSiteControlsFeature @@ -26,6 +27,7 @@ import mozilla.components.feature.sitepermissions.SitePermissions import mozilla.components.lib.state.ext.consumeFrom import mozilla.components.support.base.feature.BackHandler import mozilla.components.support.base.feature.ViewBoundFeatureWrapper +import mozilla.components.support.ktx.android.arch.lifecycle.addObservers import org.mozilla.fenix.R import org.mozilla.fenix.browser.BaseBrowserFragment import org.mozilla.fenix.browser.CustomTabContextMenuCandidate @@ -86,11 +88,19 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), BackHandler { ) if (manifest != null) { - activity.lifecycle.addObserver( + activity.lifecycle.addObservers( WebAppActivityFeature( activity, components.core.icons, manifest + ), + ManifestUpdateFeature( + activity.applicationContext, + requireComponents.core.sessionManager, + requireComponents.core.webAppManifestStorage, + requireComponents.core.webAppManifestStorage, + customTabSessionId, + manifest ) ) viewLifecycleOwner.lifecycle.addObserver(