add various engine settings
This commit is contained in:
+14
-1
@@ -77,12 +77,25 @@ object EngineProvider {
|
||||
// About config it's no longer enabled by default
|
||||
builder.aboutConfigEnabled(true)
|
||||
builder.extensionsProcessEnabled(true)
|
||||
builder.extensionsWebAPIEnabled(true)
|
||||
builder.extensionsWebAPIEnabled(false)
|
||||
//builder.debugLogging(components.logLevel == Log.Priority.DEBUG)
|
||||
builder.consoleOutput(components.logLevel == Log.Priority.DEBUG)
|
||||
builder.contentBlocking(contentBlocking.build())
|
||||
builder.locales(arrayOf("en-US", "en")) // Will be overridden later
|
||||
|
||||
// Apply builder-only settings from startup config
|
||||
GlobalComponents.startupSettings?.let { settings ->
|
||||
settings.fissionEnabled?.let { builder.fissionEnabled(it) }
|
||||
settings.isolatedProcessEnabled?.let { builder.isolatedProcessEnabled(it) }
|
||||
settings.appZygoteProcessEnabled?.let { builder.appZygoteProcessEnabled(it) }
|
||||
settings.displayDensityOverride?.let { builder.displayDensityOverride(it.toFloat()) }
|
||||
val screenWidth = settings.screenWidthOverride
|
||||
val screenHeight = settings.screenHeightOverride
|
||||
if (screenWidth != null && screenHeight != null && screenWidth > 0 && screenHeight > 0) {
|
||||
builder.screenSizeOverride(screenWidth.toInt(), screenHeight.toInt())
|
||||
}
|
||||
}
|
||||
|
||||
runtime = GeckoRuntime.create(context, builder.build())
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -12,6 +12,7 @@ import eu.weblibre.flutter_mozilla_components.pigeons.BrowserExtensionEvents
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.BounceTrackingProtectionMode
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.ContentBlocking
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoAddonEvents
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoEngineSettings
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoSelectionActionEvents
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoStateEvents
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoSuggestionEvents
|
||||
@@ -77,6 +78,9 @@ object GlobalComponents {
|
||||
// External download manager setting
|
||||
var useExternalDownloadManager: Boolean = false
|
||||
|
||||
// Startup settings for builder-only GeckoRuntimeSettings (fission, process isolation, etc.)
|
||||
var startupSettings: GeckoEngineSettings? = null
|
||||
|
||||
fun shouldOpenLinksInApp(isExternalSession: Boolean = false): Boolean {
|
||||
return when (engineSettingsApi!!.getAppLinksMode()) {
|
||||
eu.weblibre.flutter_mozilla_components.pigeons.AppLinksMode.ALWAYS -> true
|
||||
|
||||
+5
@@ -21,6 +21,7 @@ import eu.weblibre.flutter_mozilla_components.pigeons.AddonCollection
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.BrowserExtensionEvents
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.ContentBlocking
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoAddonEvents
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoEngineSettings
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoAddonsApi
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoAppLinksApi
|
||||
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoBookmarksApi
|
||||
@@ -165,6 +166,7 @@ class GeckoBrowserApiImpl : GeckoBrowserApi {
|
||||
addonCollection: AddonCollection?,
|
||||
fxaServerOverride: String?,
|
||||
syncTokenServerOverride: String?,
|
||||
startupSettings: GeckoEngineSettings?,
|
||||
) {
|
||||
synchronized(this) {
|
||||
if (!isGeckoInitialized) {
|
||||
@@ -179,6 +181,9 @@ class GeckoBrowserApiImpl : GeckoBrowserApi {
|
||||
|
||||
Log.addSink(PriorityAwareLogSink(level, geckoLogging))
|
||||
|
||||
// Store startup settings before runtime creation
|
||||
GlobalComponents.startupSettings = startupSettings
|
||||
|
||||
setupGeckoEngine(
|
||||
profileFolder,
|
||||
level,
|
||||
|
||||
+58
@@ -242,6 +242,34 @@ class GeckoEngineSettingsApiImpl : GeckoEngineSettingsApi {
|
||||
// components.core.engineSettings.automaticLanguageAdjustment = false
|
||||
components.core.runtime.settings.locales = settings.locales.toTypedArray()
|
||||
}
|
||||
|
||||
// Web Content Settings
|
||||
if(settings.webFontsEnabled != null) {
|
||||
components.core.engineSettings.webFontsEnabled = settings.webFontsEnabled
|
||||
}
|
||||
if(settings.automaticFontSizeAdjustment != null) {
|
||||
components.core.engineSettings.automaticFontSizeAdjustment = settings.automaticFontSizeAdjustment
|
||||
}
|
||||
if(settings.fontSizeFactor != null && settings.automaticFontSizeAdjustment != true) {
|
||||
components.core.engineSettings.fontSizeFactor = settings.fontSizeFactor.toFloat()
|
||||
}
|
||||
if(settings.fontInflationEnabled != null && settings.automaticFontSizeAdjustment != true) {
|
||||
components.core.engineSettings.fontInflationEnabled = settings.fontInflationEnabled
|
||||
}
|
||||
if(settings.inputAutoZoomEnabled != null) {
|
||||
components.core.runtime.settings.inputAutoZoomEnabled = settings.inputAutoZoomEnabled
|
||||
}
|
||||
|
||||
// LNA Settings
|
||||
if(settings.lnaBlocking != null) {
|
||||
components.core.engineSettings.lnaBlockingEnabled = settings.lnaBlocking
|
||||
}
|
||||
if(settings.lnaBlockTrackers != null) {
|
||||
components.core.engineSettings.lnaTrackerBlockingEnabled = settings.lnaBlockTrackers
|
||||
}
|
||||
if(settings.lnaEnabled != null) {
|
||||
components.core.engineSettings.lnaFeatureEnabled = settings.lnaEnabled
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateRuntimeSettings(settings: GeckoEngineSettings) {
|
||||
@@ -313,6 +341,36 @@ class GeckoEngineSettingsApiImpl : GeckoEngineSettingsApi {
|
||||
components.core.engine.settings.fingerprintingProtectionOverrides = components.core.engineSettings.fingerprintingProtectionOverrides
|
||||
}
|
||||
|
||||
// Web Content runtime settings
|
||||
if(settings.webFontsEnabled != null) {
|
||||
components.core.engine.settings.webFontsEnabled = components.core.engineSettings.webFontsEnabled
|
||||
reloadSession = true
|
||||
}
|
||||
if(settings.automaticFontSizeAdjustment != null) {
|
||||
components.core.engine.settings.automaticFontSizeAdjustment = components.core.engineSettings.automaticFontSizeAdjustment
|
||||
}
|
||||
if(settings.fontSizeFactor != null) {
|
||||
components.core.engine.settings.fontSizeFactor = components.core.engineSettings.fontSizeFactor
|
||||
reloadSession = true
|
||||
}
|
||||
if(settings.fontInflationEnabled != null) {
|
||||
components.core.engine.settings.fontInflationEnabled = components.core.engineSettings.fontInflationEnabled
|
||||
reloadSession = true
|
||||
}
|
||||
// LNA settings
|
||||
if(settings.lnaEnabled != null) {
|
||||
components.core.engine.settings.lnaFeatureEnabled = components.core.engineSettings.lnaFeatureEnabled
|
||||
reloadSession = true
|
||||
}
|
||||
if(settings.lnaBlocking != null) {
|
||||
components.core.engine.settings.lnaBlockingEnabled = components.core.engineSettings.lnaBlockingEnabled
|
||||
reloadSession = true
|
||||
}
|
||||
if(settings.lnaBlockTrackers != null) {
|
||||
components.core.engine.settings.lnaTrackerBlockingEnabled = components.core.engineSettings.lnaTrackerBlockingEnabled
|
||||
reloadSession = true
|
||||
}
|
||||
|
||||
if(reloadSession) {
|
||||
components.useCases.sessionUseCases.reload()
|
||||
}
|
||||
|
||||
+47
-4
@@ -2291,7 +2291,21 @@ data class GeckoEngineSettings (
|
||||
/** Allow baseline tracking protection exceptions (prevents major site breakage) */
|
||||
val allowListBaseline: Boolean? = null,
|
||||
/** Allow convenience tracking protection exceptions (fixes minor issues) */
|
||||
val allowListConvenience: Boolean? = null
|
||||
val allowListConvenience: Boolean? = null,
|
||||
val webFontsEnabled: Boolean? = null,
|
||||
val automaticFontSizeAdjustment: Boolean? = null,
|
||||
val fontSizeFactor: Double? = null,
|
||||
val fontInflationEnabled: Boolean? = null,
|
||||
val displayDensityOverride: Double? = null,
|
||||
val screenWidthOverride: Long? = null,
|
||||
val screenHeightOverride: Long? = null,
|
||||
val inputAutoZoomEnabled: Boolean? = null,
|
||||
val fissionEnabled: Boolean? = null,
|
||||
val isolatedProcessEnabled: Boolean? = null,
|
||||
val appZygoteProcessEnabled: Boolean? = null,
|
||||
val lnaBlocking: Boolean? = null,
|
||||
val lnaBlockTrackers: Boolean? = null,
|
||||
val lnaEnabled: Boolean? = null
|
||||
)
|
||||
{
|
||||
companion object {
|
||||
@@ -2323,7 +2337,21 @@ data class GeckoEngineSettings (
|
||||
val suspectedFingerprintersScope = pigeonVar_list[24] as TrackingScope?
|
||||
val allowListBaseline = pigeonVar_list[25] as Boolean?
|
||||
val allowListConvenience = pigeonVar_list[26] as Boolean?
|
||||
return GeckoEngineSettings(javascriptEnabled, trackingProtectionPolicy, httpsOnlyMode, globalPrivacyControlEnabled, preferredColorScheme, cookieBannerHandlingMode, cookieBannerHandlingModePrivateBrowsing, cookieBannerHandlingGlobalRules, cookieBannerHandlingGlobalRulesSubFrames, webContentIsolationStrategy, userAgent, contentBlocking, enterpriseRootsEnabled, dohSettings, fingerprintingProtectionOverrides, locales, blockCookies, customCookiePolicy, blockTrackingContent, trackingContentScope, blockCryptominers, blockFingerprinters, blockRedirectTrackers, blockSuspectedFingerprinters, suspectedFingerprintersScope, allowListBaseline, allowListConvenience)
|
||||
val webFontsEnabled = pigeonVar_list[27] as Boolean?
|
||||
val automaticFontSizeAdjustment = pigeonVar_list[28] as Boolean?
|
||||
val fontSizeFactor = pigeonVar_list[29] as Double?
|
||||
val fontInflationEnabled = pigeonVar_list[30] as Boolean?
|
||||
val displayDensityOverride = pigeonVar_list[31] as Double?
|
||||
val screenWidthOverride = pigeonVar_list[32] as Long?
|
||||
val screenHeightOverride = pigeonVar_list[33] as Long?
|
||||
val inputAutoZoomEnabled = pigeonVar_list[34] as Boolean?
|
||||
val fissionEnabled = pigeonVar_list[35] as Boolean?
|
||||
val isolatedProcessEnabled = pigeonVar_list[36] as Boolean?
|
||||
val appZygoteProcessEnabled = pigeonVar_list[37] as Boolean?
|
||||
val lnaBlocking = pigeonVar_list[38] as Boolean?
|
||||
val lnaBlockTrackers = pigeonVar_list[39] as Boolean?
|
||||
val lnaEnabled = pigeonVar_list[40] as Boolean?
|
||||
return GeckoEngineSettings(javascriptEnabled, trackingProtectionPolicy, httpsOnlyMode, globalPrivacyControlEnabled, preferredColorScheme, cookieBannerHandlingMode, cookieBannerHandlingModePrivateBrowsing, cookieBannerHandlingGlobalRules, cookieBannerHandlingGlobalRulesSubFrames, webContentIsolationStrategy, userAgent, contentBlocking, enterpriseRootsEnabled, dohSettings, fingerprintingProtectionOverrides, locales, blockCookies, customCookiePolicy, blockTrackingContent, trackingContentScope, blockCryptominers, blockFingerprinters, blockRedirectTrackers, blockSuspectedFingerprinters, suspectedFingerprintersScope, allowListBaseline, allowListConvenience, webFontsEnabled, automaticFontSizeAdjustment, fontSizeFactor, fontInflationEnabled, displayDensityOverride, screenWidthOverride, screenHeightOverride, inputAutoZoomEnabled, fissionEnabled, isolatedProcessEnabled, appZygoteProcessEnabled, lnaBlocking, lnaBlockTrackers, lnaEnabled)
|
||||
}
|
||||
}
|
||||
fun toList(): List<Any?> {
|
||||
@@ -2355,6 +2383,20 @@ data class GeckoEngineSettings (
|
||||
suspectedFingerprintersScope,
|
||||
allowListBaseline,
|
||||
allowListConvenience,
|
||||
webFontsEnabled,
|
||||
automaticFontSizeAdjustment,
|
||||
fontSizeFactor,
|
||||
fontInflationEnabled,
|
||||
displayDensityOverride,
|
||||
screenWidthOverride,
|
||||
screenHeightOverride,
|
||||
inputAutoZoomEnabled,
|
||||
fissionEnabled,
|
||||
isolatedProcessEnabled,
|
||||
appZygoteProcessEnabled,
|
||||
lnaBlocking,
|
||||
lnaBlockTrackers,
|
||||
lnaEnabled,
|
||||
)
|
||||
}
|
||||
override fun equals(other: Any?): Boolean {
|
||||
@@ -4793,7 +4835,7 @@ private open class GeckoPigeonCodec : StandardMessageCodec() {
|
||||
/** Generated interface from Pigeon that represents a handler of messages from Flutter. */
|
||||
interface GeckoBrowserApi {
|
||||
fun getGeckoVersion(): String
|
||||
fun initialize(profileFolder: String, logLevel: LogLevel, contentBlocking: ContentBlocking, addonCollection: AddonCollection?, fxaServerOverride: String?, syncTokenServerOverride: String?)
|
||||
fun initialize(profileFolder: String, logLevel: LogLevel, contentBlocking: ContentBlocking, addonCollection: AddonCollection?, fxaServerOverride: String?, syncTokenServerOverride: String?, startupSettings: GeckoEngineSettings?)
|
||||
fun showNativeFragment(): Boolean
|
||||
fun onTrimMemory(level: Long)
|
||||
fun openInCustomTab(url: String, private: Boolean, contextId: String?)
|
||||
@@ -4833,8 +4875,9 @@ interface GeckoBrowserApi {
|
||||
val addonCollectionArg = args[3] as AddonCollection?
|
||||
val fxaServerOverrideArg = args[4] as String?
|
||||
val syncTokenServerOverrideArg = args[5] as String?
|
||||
val startupSettingsArg = args[6] as GeckoEngineSettings?
|
||||
val wrapped: List<Any?> = try {
|
||||
api.initialize(profileFolderArg, logLevelArg, contentBlockingArg, addonCollectionArg, fxaServerOverrideArg, syncTokenServerOverrideArg)
|
||||
api.initialize(profileFolderArg, logLevelArg, contentBlockingArg, addonCollectionArg, fxaServerOverrideArg, syncTokenServerOverrideArg, startupSettingsArg)
|
||||
listOf(null)
|
||||
} catch (exception: Throwable) {
|
||||
GeckoPigeonUtils.wrapError(exception)
|
||||
|
||||
Reference in New Issue
Block a user