44
55package org.mozilla.fenix.bookmarks
66
7+ import android.content.Intent
78import android.os.Bundle
89import android.view.LayoutInflater
910import android.view.View
1011import android.view.ViewGroup
12+ import androidx.activity.result.ActivityResultLauncher
13+ import androidx.activity.result.contract.ActivityResultContracts
1114import androidx.compose.ui.platform.ComposeView
1215import androidx.compose.ui.platform.ViewCompositionStrategy
1316import androidx.core.content.getSystemService
@@ -25,17 +28,20 @@ import mozilla.components.compose.browser.toolbar.store.EnvironmentCleared
2528import mozilla.components.compose.browser.toolbar.store.EnvironmentRehydrated
2629import mozilla.components.compose.browser.toolbar.store.Mode
2730import mozilla.components.concept.engine.EngineSession
31+ import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
2832import org.mozilla.fenix.BrowserDirection
2933import org.mozilla.fenix.HomeActivity
3034import org.mozilla.fenix.NavGraphDirections
3135import org.mozilla.fenix.R
3236import org.mozilla.fenix.components.StoreProvider
37+ import org.mozilla.fenix.components.VoiceSearchFeature
3338import org.mozilla.fenix.components.accounts.FenixFxAEntryPoint
3439import org.mozilla.fenix.components.appstate.qrScanner.QrScannerBinding
3540import org.mozilla.fenix.components.metrics.MetricsUtils
3641import org.mozilla.fenix.components.search.BOOKMARKS_SEARCH_ENGINE_ID
3742import org.mozilla.fenix.components.toolbar.BrowserToolbarEnvironment
3843import org.mozilla.fenix.ext.bookmarkStorage
44+ import org.mozilla.fenix.ext.components
3945import org.mozilla.fenix.ext.hideToolbar
4046import org.mozilla.fenix.ext.nav
4147import org.mozilla.fenix.ext.requireComponents
@@ -54,6 +60,7 @@ import org.mozilla.fenix.search.createInitialSearchFragmentState
5460import org.mozilla.fenix.tabstray.Page
5561import org.mozilla.fenix.theme.FirefoxTheme
5662import org.mozilla.fenix.utils.lastSavedFolderCache
63+ import kotlin.getValue
5764
5865/* *
5966 * The screen that displays the user's bookmark list in their Library.
@@ -63,6 +70,14 @@ class BookmarkFragment : Fragment() {
6370
6471 private val verificationResultLauncher = registerForVerification()
6572
73+ private val voiceSearchFeature by lazy(LazyThreadSafetyMode .NONE ) {
74+ ViewBoundFeatureWrapper <VoiceSearchFeature >()
75+ }
76+ private val voiceSearchLauncher: ActivityResultLauncher <Intent > =
77+ registerForActivityResult(ActivityResultContracts .StartActivityForResult ()) { result ->
78+ voiceSearchFeature.get()?.handleVoiceSearchResult(result.resultCode, result.data)
79+ }
80+
6681 @Suppress(" LongMethod" )
6782 override fun onCreateView (
6883 inflater : LayoutInflater ,
@@ -193,6 +208,15 @@ class BookmarkFragment : Fragment() {
193208 super .onViewCreated(view, savedInstanceState)
194209 if (requireContext().settings().shouldUseComposableToolbar) {
195210 QrScannerBinding .register(this )
211+ voiceSearchFeature.set(
212+ feature = VoiceSearchFeature (
213+ context = requireContext(),
214+ appStore = requireContext().components.appStore,
215+ voiceSearchLauncher = voiceSearchLauncher,
216+ ),
217+ owner = viewLifecycleOwner,
218+ view = view,
219+ )
196220 }
197221 }
198222
0 commit comments