diff --git a/.experimenter.yaml b/.experimenter.yaml index 0873bd28a..ad838f347 100644 --- a/.experimenter.yaml +++ b/.experimenter.yaml @@ -7,6 +7,14 @@ default-browser-message: message-location: type: string description: Where is the message to be put. +engine-settings: + description: Contains a set of settings for controlling the web engine configurations. + hasExposure: true + exposureDescription: "" + variables: + tabs-prioritization-enabled: + type: boolean + description: "If true, enables tabs prioritization feature." homescreen: description: The homescreen that the user goes to when they press home or new tab. hasExposure: true 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 cc21ee48a..c71eebb78 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Core.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Core.kt @@ -88,6 +88,7 @@ import org.mozilla.fenix.historymetadata.DefaultHistoryMetadataService import org.mozilla.fenix.historymetadata.HistoryMetadataMiddleware import org.mozilla.fenix.historymetadata.HistoryMetadataService import org.mozilla.fenix.media.MediaSessionService +import org.mozilla.fenix.nimbus.FxNimbus import org.mozilla.fenix.perf.StrictModeManager import org.mozilla.fenix.perf.lazyMonitored import org.mozilla.fenix.settings.SupportUtils @@ -224,6 +225,8 @@ class Core( * The [BrowserStore] holds the global [BrowserState]. */ val store by lazyMonitored { + val tabsPrioritizationEnable = + FxNimbus.features.engineSettings.value().tabsPrioritizationEnabled val middlewareList = mutableListOf( LastAccessMiddleware(), @@ -244,9 +247,12 @@ class Core( AdsTelemetryMiddleware(adsTelemetry), LastMediaAccessMiddleware(), HistoryMetadataMiddleware(historyMetadataService), - SearchTermTabGroupMiddleware(), - SessionPrioritizationMiddleware() - ) + SearchTermTabGroupMiddleware() + ) + if (tabsPrioritizationEnable) { + listOf(SessionPrioritizationMiddleware()) + } else { + emptyList() + } BrowserStore( initialState = BrowserState( diff --git a/nimbus.fml.yaml b/nimbus.fml.yaml index a6c0aece5..c77994e21 100644 --- a/nimbus.fml.yaml +++ b/nimbus.fml.yaml @@ -203,6 +203,14 @@ features: value: enabled: true + engine-settings: + description: Contains a set of settings for controlling the web engine configurations. + variables: + tabs-prioritization-enabled: + description: If true, enables tabs prioritization feature. + type: Boolean + default: true + types: objects: MessageData: