diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 034857f65..6f960cdac 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -30,6 +30,7 @@ import mozilla.components.browser.session.Session import mozilla.components.browser.session.SessionManager import mozilla.components.browser.state.state.WebExtensionState import mozilla.components.concept.engine.EngineView +import mozilla.components.feature.contextmenu.ext.DefaultSelectionActionDelegate import mozilla.components.service.fxa.sync.SyncReason import mozilla.components.support.base.feature.UserInteractionHandler import mozilla.components.support.ktx.kotlin.isUrl @@ -208,7 +209,13 @@ open class HomeActivity : LocaleAwareAppCompatActivity() { context: Context, attrs: AttributeSet ): View? = when (name) { - EngineView::class.java.name -> components.core.engine.createView(context, attrs).asView() + EngineView::class.java.name -> components.core.engine.createView(context, attrs).apply { + selectionActionDelegate = DefaultSelectionActionDelegate( + store = components.core.store, + context = context, + appName = getString(R.string.app_name) + ) + }.asView() else -> super.onCreateView(parent, name, context, attrs) } diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index 3ff71b5ac..a9050f265 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -18,6 +18,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import mozilla.components.browser.session.Session import mozilla.components.feature.contextmenu.ContextMenuCandidate import mozilla.components.feature.readerview.ReaderViewFeature +import mozilla.components.feature.search.SearchFeature import mozilla.components.feature.session.TrackingProtectionUseCases import mozilla.components.feature.sitepermissions.SitePermissions import mozilla.components.feature.tab.collections.TabCollection @@ -44,6 +45,7 @@ import org.mozilla.fenix.trackingprotection.TrackingProtectionOverlay class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler { private val windowFeature = ViewBoundFeatureWrapper() + private val searchFeature = ViewBoundFeatureWrapper() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -68,17 +70,18 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler { override fun initializeUI(view: View): Session? { val context = requireContext() val sessionManager = context.components.core.sessionManager + val components = context.components return super.initializeUI(view)?.also { readerViewFeature.set( feature = ReaderViewFeature( context, - context.components.core.engine, + components.core.engine, sessionManager, view.readerViewControlsBar ) { available -> if (available) { - context.components.analytics.metrics.track(Event.ReaderModeAvailable) + components.analytics.metrics.track(Event.ReaderModeAvailable) } }, owner = this, @@ -87,12 +90,23 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler { windowFeature.set( feature = WindowFeature( - store = context.components.core.store, - tabsUseCases = context.components.useCases.tabsUseCases + store = components.core.store, + tabsUseCases = components.useCases.tabsUseCases ), owner = this, view = view ) + searchFeature.set( + feature = SearchFeature(components.core.store) { + if (it.isPrivate) { + components.useCases.searchUseCases.newPrivateTabSearch.invoke(it.query) + } else { + components.useCases.searchUseCases.newTabSearch.invoke(it.query) + } + }, + owner = this, + view = view + ) consumeFrom(browserFragmentStore) { browserToolbarView.update(it)