1
0
Fork 0

Use ManifestUpdateFeature

master
Tiger Oakes 2019-11-07 11:30:03 -08:00 committed by Grisha Kruglov
parent 4183dea591
commit afda836f1f
4 changed files with 32 additions and 8 deletions

View File

@ -27,7 +27,7 @@ class Components(private val context: Context) {
core.store, core.store,
core.engine.settings, core.engine.settings,
search.searchEngineManager, search.searchEngineManager,
core.client core.webAppShortcutManager
) )
} }
val intentProcessors by lazy { val intentProcessors by lazy {

View File

@ -30,13 +30,14 @@ import mozilla.components.feature.customtabs.store.CustomTabsServiceStore
import mozilla.components.feature.media.MediaFeature import mozilla.components.feature.media.MediaFeature
import mozilla.components.feature.media.RecordingDevicesNotificationFeature import mozilla.components.feature.media.RecordingDevicesNotificationFeature
import mozilla.components.feature.media.state.MediaStateMachine 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.session.HistoryDelegate
import mozilla.components.feature.webcompat.WebCompatFeature import mozilla.components.feature.webcompat.WebCompatFeature
import mozilla.components.service.sync.logins.AsyncLoginsStorageAdapter import mozilla.components.service.sync.logins.AsyncLoginsStorageAdapter
import mozilla.components.service.sync.logins.SyncableLoginsStore import mozilla.components.service.sync.logins.SyncableLoginsStore
import org.mozilla.fenix.AppRequestInterceptor import org.mozilla.fenix.AppRequestInterceptor
import org.mozilla.fenix.FeatureFlags import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.test.Mockable import org.mozilla.fenix.test.Mockable
import java.io.File import java.io.File
@ -141,7 +142,19 @@ class Core(private val context: Context) {
* Icons component for loading, caching and processing website icons. * Icons component for loading, caching and processing website icons.
*/ */
val icons by lazy { 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 permissionStorage by lazy { PermissionStorage(context) }
val webAppManifestStorage by lazy { ManifestStorage(context) }
val loginsStorage by lazy { val loginsStorage by lazy {
SyncableLoginsStore( SyncableLoginsStore(
AsyncLoginsStorageAdapter.forDatabase( AsyncLoginsStorageAdapter.forDatabase(

View File

@ -9,16 +9,15 @@ import mozilla.components.browser.search.SearchEngineManager
import mozilla.components.browser.session.SessionManager import mozilla.components.browser.session.SessionManager
import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.concept.engine.Settings import mozilla.components.concept.engine.Settings
import mozilla.components.concept.fetch.Client
import mozilla.components.feature.app.links.AppLinksUseCases import mozilla.components.feature.app.links.AppLinksUseCases
import mozilla.components.feature.contextmenu.ContextMenuUseCases import mozilla.components.feature.contextmenu.ContextMenuUseCases
import mozilla.components.feature.downloads.DownloadsUseCases import mozilla.components.feature.downloads.DownloadsUseCases
import mozilla.components.feature.pwa.WebAppShortcutManager
import mozilla.components.feature.pwa.WebAppUseCases import mozilla.components.feature.pwa.WebAppUseCases
import mozilla.components.feature.search.SearchUseCases import mozilla.components.feature.search.SearchUseCases
import mozilla.components.feature.session.SessionUseCases import mozilla.components.feature.session.SessionUseCases
import mozilla.components.feature.session.SettingsUseCases import mozilla.components.feature.session.SettingsUseCases
import mozilla.components.feature.tabs.TabsUseCases import mozilla.components.feature.tabs.TabsUseCases
import org.mozilla.fenix.FeatureFlags.progressiveWebApps
import org.mozilla.fenix.test.Mockable import org.mozilla.fenix.test.Mockable
/** /**
@ -32,7 +31,7 @@ class UseCases(
private val store: BrowserStore, private val store: BrowserStore,
private val engineSettings: Settings, private val engineSettings: Settings,
private val searchEngineManager: SearchEngineManager, private val searchEngineManager: SearchEngineManager,
private val httpClient: Client private val shortcutManager: WebAppShortcutManager
) { ) {
/** /**
* Use cases that provide engine interactions for a given browser session. * 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 appLinksUseCases by lazy { AppLinksUseCases(context.applicationContext) }
val webAppUseCases by lazy { val webAppUseCases by lazy {
WebAppUseCases(context, sessionManager, httpClient, supportWebApps = progressiveWebApps) WebAppUseCases(context, sessionManager, shortcutManager)
} }
val downloadUseCases by lazy { DownloadsUseCases(store) } val downloadUseCases by lazy { DownloadsUseCases(store) }

View File

@ -18,6 +18,7 @@ import mozilla.components.concept.engine.manifest.getOrNull
import mozilla.components.feature.contextmenu.ContextMenuCandidate import mozilla.components.feature.contextmenu.ContextMenuCandidate
import mozilla.components.feature.pwa.ext.getTrustedScope import mozilla.components.feature.pwa.ext.getTrustedScope
import mozilla.components.feature.pwa.ext.trustedOrigins 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.WebAppActivityFeature
import mozilla.components.feature.pwa.feature.WebAppHideToolbarFeature import mozilla.components.feature.pwa.feature.WebAppHideToolbarFeature
import mozilla.components.feature.pwa.feature.WebAppSiteControlsFeature 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.lib.state.ext.consumeFrom
import mozilla.components.support.base.feature.BackHandler import mozilla.components.support.base.feature.BackHandler
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper 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.R
import org.mozilla.fenix.browser.BaseBrowserFragment import org.mozilla.fenix.browser.BaseBrowserFragment
import org.mozilla.fenix.browser.CustomTabContextMenuCandidate import org.mozilla.fenix.browser.CustomTabContextMenuCandidate
@ -86,11 +88,19 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), BackHandler {
) )
if (manifest != null) { if (manifest != null) {
activity.lifecycle.addObserver( activity.lifecycle.addObservers(
WebAppActivityFeature( WebAppActivityFeature(
activity, activity,
components.core.icons, components.core.icons,
manifest manifest
),
ManifestUpdateFeature(
activity.applicationContext,
requireComponents.core.sessionManager,
requireComponents.core.webAppManifestStorage,
requireComponents.core.webAppManifestStorage,
customTabSessionId,
manifest
) )
) )
viewLifecycleOwner.lifecycle.addObserver( viewLifecycleOwner.lifecycle.addObserver(