From 20387401b18581add1772f8872be52eb74d15007 Mon Sep 17 00:00:00 2001 From: Christian Sadilek Date: Mon, 2 Mar 2020 16:21:56 -0500 Subject: [PATCH] Issue #7863: Ensure parent process triggers speculative connect --- .../components/toolbar/BrowserToolbarView.kt | 3 ++- .../components/toolbar/ToolbarIntegration.kt | 10 ++++++++-- .../org/mozilla/fenix/search/SearchFragment.kt | 7 ++++++- .../fenix/search/awesomebar/AwesomeBarView.kt | 15 +++++++++++---- .../mozilla/fenix/search/toolbar/ToolbarView.kt | 10 ++++++++-- 5 files changed, 35 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt index df4ad2177..fd2007285 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt @@ -213,7 +213,8 @@ class BrowserToolbarView( components.core.sessionManager, sessionId = null, isPrivate = sessionManager.selectedSession?.private ?: false, - interactor = interactor + interactor = interactor, + engine = components.core.engine ) } } diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt index de90e5b78..84a70d061 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt @@ -12,6 +12,7 @@ import mozilla.components.browser.domains.autocomplete.DomainAutocompleteProvide import mozilla.components.browser.session.SessionManager import mozilla.components.browser.toolbar.BrowserToolbar import mozilla.components.browser.toolbar.display.DisplayToolbar +import mozilla.components.concept.engine.Engine import mozilla.components.concept.storage.HistoryStorage import mozilla.components.feature.toolbar.ToolbarAutocompleteFeature import mozilla.components.feature.toolbar.ToolbarFeature @@ -72,7 +73,8 @@ class DefaultToolbarIntegration( sessionManager: SessionManager, sessionId: String? = null, isPrivate: Boolean, - interactor: BrowserToolbarViewInteractor + interactor: BrowserToolbarViewInteractor, + engine: Engine ) : ToolbarIntegration( context = context, toolbar = toolbar, @@ -135,7 +137,11 @@ class DefaultToolbarIntegration( } toolbar.addBrowserAction(tabsAction) - ToolbarAutocompleteFeature(toolbar).apply { + val engineForSpeculativeConnects = if (!isPrivate) engine else null + ToolbarAutocompleteFeature( + toolbar, + engineForSpeculativeConnects + ).apply { addDomainProvider(domainAutocompleteProvider) if (context.settings().shouldShowHistorySuggestions) { addHistoryStorageProvider(historyStorage) diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt index 6ef4f97fe..b4e0087f5 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt @@ -127,7 +127,8 @@ class SearchFragment : Fragment(), UserInteractionHandler { view.toolbar_component_wrapper, searchInteractor, historyStorageProvider(), - (activity as HomeActivity).browsingModeManager.mode.isPrivate + (activity as HomeActivity).browsingModeManager.mode.isPrivate, + requireComponents.core.engine ) val urlView = toolbarView.view @@ -307,6 +308,10 @@ class SearchFragment : Fragment(), UserInteractionHandler { fill_link_from_clipboard.visibility = visibility divider_line.visibility = visibility clipboard_url.text = clipboardUrl + + if (clipboardUrl != null && !((activity as HomeActivity).browsingModeManager.mode.isPrivate)) { + requireComponents.core.engine.speculativeConnect(clipboardUrl) + } } override fun onRequestPermissionsResult( diff --git a/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt b/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt index fad871517..f654f715a 100644 --- a/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt +++ b/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt @@ -141,6 +141,7 @@ class AwesomeBarView( val draw = getDrawable(context, R.drawable.ic_link)!! draw.colorFilter = createBlendModeColorFilterCompat(primaryTextColor, SRC_IN) + val engineForSpeculativeConnects = if (!isBrowsingModePrivate()) components.core.engine else null sessionProvider = SessionSuggestionProvider( context.resources, @@ -154,14 +155,16 @@ class AwesomeBarView( HistoryStorageSuggestionProvider( components.core.historyStorage, loadUrlUseCase, - components.core.icons + components.core.icons, + engineForSpeculativeConnects ) bookmarksStorageSuggestionProvider = BookmarksStorageSuggestionProvider( components.core.bookmarksStorage, loadUrlUseCase, - components.core.icons + components.core.icons, + engineForSpeculativeConnects ) val searchDrawable = getDrawable(context, R.drawable.ic_search)!! @@ -176,7 +179,8 @@ class AwesomeBarView( mode = SearchSuggestionProvider.Mode.MULTIPLE_SUGGESTIONS, limit = 3, icon = searchDrawable.toBitmap(), - showDescription = false + showDescription = false, + engine = engineForSpeculativeConnects ) shortcutsEnginePickerProvider = @@ -344,6 +348,8 @@ class AwesomeBarView( val draw = getDrawable(context, R.drawable.ic_search) draw?.colorFilter = createBlendModeColorFilterCompat(primaryTextColor, SRC_IN) + val engineForSpeculativeConnects = if (!isBrowsingModePrivate()) components.core.engine else null + SearchSuggestionProvider( components.search.provider.installedSearchEngines(context).list.find { it.name == engine.name } ?: components.search.provider.getDefaultEngine(context), @@ -351,7 +357,8 @@ class AwesomeBarView( components.core.client, limit = 3, mode = SearchSuggestionProvider.Mode.MULTIPLE_SUGGESTIONS, - icon = draw?.toBitmap() + icon = draw?.toBitmap(), + engine = engineForSpeculativeConnects ) } } diff --git a/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarView.kt b/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarView.kt index 0d1504a6a..a73ee1f4d 100644 --- a/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarView.kt +++ b/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarView.kt @@ -22,6 +22,7 @@ import kotlinx.android.extensions.LayoutContainer import mozilla.components.browser.domains.autocomplete.ShippedDomainsProvider import mozilla.components.browser.toolbar.BrowserToolbar import mozilla.components.browser.toolbar.behavior.BrowserToolbarBottomBehavior +import mozilla.components.concept.engine.Engine import mozilla.components.concept.storage.HistoryStorage import mozilla.components.feature.toolbar.ToolbarAutocompleteFeature import mozilla.components.support.ktx.android.content.getColorFromAttr @@ -63,7 +64,8 @@ class ToolbarView( private val container: ViewGroup, private val interactor: ToolbarInteractor, private val historyStorage: HistoryStorage?, - private val isPrivate: Boolean + private val isPrivate: Boolean, + engine: Engine ) : LayoutContainer { override val containerView: View? @@ -137,7 +139,11 @@ class ToolbarView( }) } - ToolbarAutocompleteFeature(view).apply { + val engineForSpeculativeConnects = if (!isPrivate) engine else null + ToolbarAutocompleteFeature( + view, + engineForSpeculativeConnects + ).apply { addDomainProvider(ShippedDomainsProvider().also { it.initialize(view.context) }) historyStorage?.also(::addHistoryStorageProvider) }