Add history metadata feature to the settings menu

upstream-sync
Gabriel Luong 3 years ago committed by mergify[bot]
parent 1de7e22080
commit 0f861236c1

@ -21,10 +21,10 @@ import mozilla.components.browser.state.state.SessionState
import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.thumbnails.BrowserThumbnails
import mozilla.components.browser.toolbar.BrowserToolbar
import mozilla.components.concept.engine.permission.SitePermissions
import mozilla.components.feature.app.links.AppLinksUseCases
import mozilla.components.feature.contextmenu.ContextMenuCandidate
import mozilla.components.feature.readerview.ReaderViewFeature
import mozilla.components.concept.engine.permission.SitePermissions
import mozilla.components.feature.tab.collections.TabCollection
import mozilla.components.feature.tabs.WindowFeature
import mozilla.components.support.base.feature.UserInteractionHandler
@ -207,7 +207,7 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
override fun onStop() {
super.onStop()
updateLastBrowseActivity()
if (FeatureFlags.historyMetadataFeature) {
if (requireContext().settings().historyMetadataFeature) {
updateHistoryMetadata()
}
pwaOnboardingObserver?.stop()

@ -4,7 +4,6 @@
package org.mozilla.fenix.components
import org.mozilla.fenix.gecko.GeckoProvider
import android.content.Context
import android.content.res.Configuration
import android.os.Build
@ -14,8 +13,8 @@ import mozilla.components.browser.engine.gecko.GeckoEngine
import mozilla.components.browser.engine.gecko.fetch.GeckoViewFetchClient
import mozilla.components.browser.engine.gecko.permission.GeckoSitePermissionsStorage
import mozilla.components.browser.icons.BrowserIcons
import mozilla.components.browser.state.engine.EngineMiddleware
import mozilla.components.browser.session.storage.SessionStorage
import mozilla.components.browser.state.engine.EngineMiddleware
import mozilla.components.browser.state.state.BrowserState
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.browser.storage.sync.PlacesBookmarksStorage
@ -66,13 +65,13 @@ import mozilla.components.support.locale.LocaleManager
import org.mozilla.fenix.AppRequestInterceptor
import org.mozilla.fenix.BuildConfig
import org.mozilla.fenix.Config
import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.components.search.SearchMigration
import org.mozilla.fenix.downloads.DownloadService
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.gecko.GeckoProvider
import org.mozilla.fenix.historymetadata.DefaultHistoryMetadataService
import org.mozilla.fenix.historymetadata.HistoryMetadataMiddleware
import org.mozilla.fenix.historymetadata.HistoryMetadataService
@ -85,7 +84,6 @@ import org.mozilla.fenix.telemetry.TelemetryMiddleware
import org.mozilla.fenix.utils.Mockable
import org.mozilla.fenix.utils.getUndoDelay
import org.mozilla.geckoview.GeckoRuntime
import java.lang.IllegalStateException
/**
* Component group for all core browser functionality.
@ -213,7 +211,7 @@ class Core(
LastMediaAccessMiddleware()
)
if (FeatureFlags.historyMetadataFeature) {
if (context.settings().historyMetadataFeature) {
middlewareList += HistoryMetadataMiddleware(historyMetadataService)
}

@ -45,16 +45,8 @@ import androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.fragment_home.*
import kotlinx.android.synthetic.main.fragment_home.view.bottomBarShadow
import kotlinx.android.synthetic.main.fragment_home.view.bottom_bar
import kotlinx.android.synthetic.main.fragment_home.view.homeAppBar
import kotlinx.android.synthetic.main.fragment_home.view.menuButton
import kotlinx.android.synthetic.main.fragment_home.view.sessionControlRecyclerView
import kotlinx.android.synthetic.main.fragment_home.view.tab_button
import kotlinx.android.synthetic.main.fragment_home.view.toolbar
import kotlinx.android.synthetic.main.fragment_home.view.toolbarLayout
import kotlinx.android.synthetic.main.fragment_home.view.toolbar_wrapper
import kotlinx.android.synthetic.main.no_collections_message.view.add_tabs_to_collections_button
import kotlinx.android.synthetic.main.fragment_home.view.*
import kotlinx.android.synthetic.main.no_collections_message.view.*
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.ExperimentalCoroutinesApi
@ -117,9 +109,9 @@ import org.mozilla.fenix.historymetadata.controller.DefaultHistoryMetadataContro
import org.mozilla.fenix.home.mozonline.showPrivacyPopWindow
import org.mozilla.fenix.home.recentbookmarks.RecentBookmarksFeature
import org.mozilla.fenix.home.recentbookmarks.controller.DefaultRecentBookmarksController
import org.mozilla.fenix.home.recenttabs.RecentTabsListFeature
import org.mozilla.fenix.home.recenttabs.controller.DefaultRecentTabsController
import org.mozilla.fenix.home.sessioncontrol.DefaultSessionControlController
import org.mozilla.fenix.home.recenttabs.RecentTabsListFeature
import org.mozilla.fenix.home.sessioncontrol.SessionControlInteractor
import org.mozilla.fenix.home.sessioncontrol.SessionControlView
import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionViewHolder
@ -283,7 +275,7 @@ class HomeFragment : Fragment() {
)
}
if (FeatureFlags.historyMetadataFeature) {
if (requireContext().settings().historyMetadataFeature) {
historyMetadataFeature.set(
feature = HistoryMetadataFeature(
homeStore = homeFragmentStore,

@ -26,11 +26,11 @@ import mozilla.components.feature.syncedtabs.DeviceIndicators
import mozilla.components.feature.syncedtabs.SyncedTabsStorageSuggestionProvider
import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.support.ktx.android.content.getColorFromAttr
import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.search.SearchEngineSource
import org.mozilla.fenix.search.SearchFragmentState
@ -250,7 +250,7 @@ class AwesomeBarView(
val providersToAdd = mutableSetOf<AwesomeBar.SuggestionProvider>()
if (state.showHistorySuggestions) {
if (FeatureFlags.historyMetadataFeature) {
if (activity.settings().historyMetadataFeature) {
providersToAdd.add(historyMetadataProvider)
} else {
providersToAdd.add(historyStorageProvider)
@ -284,7 +284,7 @@ class AwesomeBarView(
providersToRemove.add(shortcutsEnginePickerProvider)
if (!state.showHistorySuggestions) {
if (FeatureFlags.historyMetadataFeature) {
if (activity.settings().historyMetadataFeature) {
providersToRemove.add(historyMetadataProvider)
} else {
providersToRemove.add(historyStorageProvider)

@ -5,6 +5,9 @@
package org.mozilla.fenix.settings
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.widget.Toast
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference
@ -13,6 +16,7 @@ import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar
import kotlin.system.exitProcess
class SecretSettingsFragment : PreferenceFragmentCompat() {
@ -30,6 +34,31 @@ class SecretSettingsFragment : PreferenceFragmentCompat() {
onPreferenceChangeListener = SharedPreferenceUpdater()
}
requirePreference<SwitchPreference>(R.string.pref_key_history_metadata_feature).apply {
isVisible = true
isChecked = context.settings().historyMetadataFeature
onPreferenceChangeListener = object : SharedPreferenceUpdater() {
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
val result = super.onPreferenceChange(preference, newValue)
Toast.makeText(
context,
getString(R.string.toast_history_metadata_feature_done),
Toast.LENGTH_LONG
).show()
Handler(Looper.getMainLooper()).postDelayed(
{
exitProcess(0)
},
EXIT_DELAY
)
return result
}
}
}
requirePreference<SwitchPreference>(R.string.pref_key_allow_third_party_root_certs).apply {
isVisible = true
isChecked = context.settings().allowThirdPartyRootCerts
@ -48,4 +77,8 @@ class SecretSettingsFragment : PreferenceFragmentCompat() {
onPreferenceChangeListener = SharedPreferenceUpdater()
}
}
companion object {
private const val EXIT_DELAY = 3000L
}
}

@ -1139,6 +1139,17 @@ class Settings(private val appContext: Context) : PreferencesHolder {
featureFlag = FeatureFlags.addressesFeature
)
var isHistoryMetadataEnabled by booleanPreference(
appContext.getPreferenceKey(R.string.pref_key_history_metadata_feature),
default = false
)
var historyMetadataFeature by featureFlagPreference(
appContext.getPreferenceKey(R.string.pref_key_history_metadata_feature),
default = FeatureFlags.historyMetadataFeature,
featureFlag = FeatureFlags.historyMetadataFeature || isHistoryMetadataEnabled
)
/**
* Storing desktop item checkbox value in the home screen menu.
* If set to true, next opened tab from home screen will be opened in desktop mode.

@ -285,4 +285,5 @@
<string name="pref_key_show_address_feature" translatable="false">pref_key_show_address_feature</string>
<string name="pref_key_nimbus_experiments" translatable="false">pref_key_nimbus_experiments</string>
<string name="pref_key_nimbus_use_preview" translatable="false">pref_key_nimbus_use_preview</string>
<string name="pref_key_history_metadata_feature" translatable="false">pref_key_history_metadata_feature</string>
</resources>

@ -37,6 +37,10 @@
<string name="preferences_debug_info" translatable="false">Secret Debug Info</string>
<!-- Label for enabling Address Autofill -->
<string name="preferences_debug_settings_enable_address_feature" translatable="false">Enable Address Autofill</string>
<!-- Label for enabling History Metadata feature -->
<string name="preferences_debug_settings_history_metadata_feature" translatable="false">Enable History Metadata</string>
<!-- Toast shown after confirming the History Metadata feature configuration -->
<string name="toast_history_metadata_feature_done">History Metadata feature modified. Quitting the application to apply changes…</string>
<!-- Label for allowing third party root certificates from the Android OS CA store preference -->
<string name="preferences_debug_settings_allow_third_party_root_certs">Use third party CA certificates</string>
<!-- Label for a longer description of allowing third party root certificates from the Android OS CA store preference -->

@ -9,6 +9,11 @@
android:key="@string/pref_key_show_address_feature"
android:title="@string/preferences_debug_settings_enable_address_feature"
app:iconSpaceReserved="false" />
<SwitchPreference
android:defaultValue="false"
android:key="@string/pref_key_history_metadata_feature"
android:title="@string/preferences_debug_settings_history_metadata_feature"
app:iconSpaceReserved="false" />
<SwitchPreference
android:defaultValue="false"
android:key="@string/pref_key_allow_third_party_root_certs"

Loading…
Cancel
Save