new setting: Zoom on All Websites

This commit is contained in:
Fabian Freund
2026-07-30 14:59:14 +02:00
parent da6a4e751e
commit 74c9d9c81b
12 changed files with 120 additions and 21 deletions
@@ -300,6 +300,9 @@ class GeckoEngineSettingsApiImpl(
if(settings.inputAutoZoomEnabled != null) {
components.core.runtime.settings.inputAutoZoomEnabled = settings.inputAutoZoomEnabled
}
if(settings.forceUserScalableContent != null) {
components.core.engineSettings.forceUserScalableContent = settings.forceUserScalableContent
}
// LNA Settings
if(settings.lnaBlocking != null) {
@@ -405,6 +408,9 @@ class GeckoEngineSettingsApiImpl(
components.core.engine.settings.fontInflationEnabled = components.core.engineSettings.fontInflationEnabled
reloadSession = true
}
if(settings.forceUserScalableContent != null) {
components.core.engine.settings.forceUserScalableContent = components.core.engineSettings.forceUserScalableContent
}
// LNA settings
if(settings.lnaEnabled != null) {
components.core.engine.settings.lnaFeatureEnabled = components.core.engineSettings.lnaFeatureEnabled
@@ -3634,6 +3634,11 @@ data class GeckoEngineSettings (
val screenWidthOverride: Long? = null,
val screenHeightOverride: Long? = null,
val inputAutoZoomEnabled: Boolean? = null,
/**
* Forces pinch-to-zoom to work even on websites that set
* `user-scalable=no` (or a restrictive `maximum-scale`) on the viewport.
*/
val forceUserScalableContent: Boolean? = null,
val fissionEnabled: Boolean? = null,
val isolatedProcessEnabled: Boolean? = null,
val appZygoteProcessEnabled: Boolean? = null,
@@ -3682,14 +3687,15 @@ data class GeckoEngineSettings (
val screenWidthOverride = pigeonVar_list[34] as Long?
val screenHeightOverride = pigeonVar_list[35] as Long?
val inputAutoZoomEnabled = pigeonVar_list[36] as Boolean?
val fissionEnabled = pigeonVar_list[37] as Boolean?
val isolatedProcessEnabled = pigeonVar_list[38] as Boolean?
val appZygoteProcessEnabled = pigeonVar_list[39] as Boolean?
val extensionsWebAPIEnabled = pigeonVar_list[40] as Boolean?
val lnaBlocking = pigeonVar_list[41] as Boolean?
val lnaBlockTrackers = pigeonVar_list[42] as Boolean?
val lnaEnabled = pigeonVar_list[43] as Boolean?
return GeckoEngineSettings(javascriptEnabled, trackingProtectionPolicy, httpsOnlyMode, globalPrivacyControlEnabled, preferredColorScheme, cookieBannerHandlingMode, cookieBannerHandlingModePrivateBrowsing, cookieBannerHandlingGlobalRules, cookieBannerHandlingGlobalRulesSubFrames, webContentIsolationStrategy, userAgent, contentBlocking, enterpriseRootsEnabled, dohSettings, fingerprintingProtectionOverrides, locales, useContentBlockingDatabase, blockCookies, customCookiePolicy, blockTrackingContent, trackingContentScope, blockCryptominers, blockFingerprinters, blockRedirectTrackers, blockSuspectedFingerprinters, suspectedFingerprintersScope, allowListBaseline, allowListConvenience, blockAdsAnalyticsSocialTrackers, webFontsEnabled, automaticFontSizeAdjustment, fontSizeFactor, fontInflationEnabled, displayDensityOverride, screenWidthOverride, screenHeightOverride, inputAutoZoomEnabled, fissionEnabled, isolatedProcessEnabled, appZygoteProcessEnabled, extensionsWebAPIEnabled, lnaBlocking, lnaBlockTrackers, lnaEnabled)
val forceUserScalableContent = pigeonVar_list[37] as Boolean?
val fissionEnabled = pigeonVar_list[38] as Boolean?
val isolatedProcessEnabled = pigeonVar_list[39] as Boolean?
val appZygoteProcessEnabled = pigeonVar_list[40] as Boolean?
val extensionsWebAPIEnabled = pigeonVar_list[41] as Boolean?
val lnaBlocking = pigeonVar_list[42] as Boolean?
val lnaBlockTrackers = pigeonVar_list[43] as Boolean?
val lnaEnabled = pigeonVar_list[44] as Boolean?
return GeckoEngineSettings(javascriptEnabled, trackingProtectionPolicy, httpsOnlyMode, globalPrivacyControlEnabled, preferredColorScheme, cookieBannerHandlingMode, cookieBannerHandlingModePrivateBrowsing, cookieBannerHandlingGlobalRules, cookieBannerHandlingGlobalRulesSubFrames, webContentIsolationStrategy, userAgent, contentBlocking, enterpriseRootsEnabled, dohSettings, fingerprintingProtectionOverrides, locales, useContentBlockingDatabase, blockCookies, customCookiePolicy, blockTrackingContent, trackingContentScope, blockCryptominers, blockFingerprinters, blockRedirectTrackers, blockSuspectedFingerprinters, suspectedFingerprintersScope, allowListBaseline, allowListConvenience, blockAdsAnalyticsSocialTrackers, webFontsEnabled, automaticFontSizeAdjustment, fontSizeFactor, fontInflationEnabled, displayDensityOverride, screenWidthOverride, screenHeightOverride, inputAutoZoomEnabled, forceUserScalableContent, fissionEnabled, isolatedProcessEnabled, appZygoteProcessEnabled, extensionsWebAPIEnabled, lnaBlocking, lnaBlockTrackers, lnaEnabled)
}
}
fun toList(): List<Any?> {
@@ -3731,6 +3737,7 @@ data class GeckoEngineSettings (
screenWidthOverride,
screenHeightOverride,
inputAutoZoomEnabled,
forceUserScalableContent,
fissionEnabled,
isolatedProcessEnabled,
appZygoteProcessEnabled,
@@ -3748,7 +3755,7 @@ data class GeckoEngineSettings (
return true
}
val other = other as GeckoEngineSettings
return GeckoPigeonUtils.deepEquals(this.javascriptEnabled, other.javascriptEnabled) && GeckoPigeonUtils.deepEquals(this.trackingProtectionPolicy, other.trackingProtectionPolicy) && GeckoPigeonUtils.deepEquals(this.httpsOnlyMode, other.httpsOnlyMode) && GeckoPigeonUtils.deepEquals(this.globalPrivacyControlEnabled, other.globalPrivacyControlEnabled) && GeckoPigeonUtils.deepEquals(this.preferredColorScheme, other.preferredColorScheme) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingMode, other.cookieBannerHandlingMode) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingModePrivateBrowsing, other.cookieBannerHandlingModePrivateBrowsing) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingGlobalRules, other.cookieBannerHandlingGlobalRules) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingGlobalRulesSubFrames, other.cookieBannerHandlingGlobalRulesSubFrames) && GeckoPigeonUtils.deepEquals(this.webContentIsolationStrategy, other.webContentIsolationStrategy) && GeckoPigeonUtils.deepEquals(this.userAgent, other.userAgent) && GeckoPigeonUtils.deepEquals(this.contentBlocking, other.contentBlocking) && GeckoPigeonUtils.deepEquals(this.enterpriseRootsEnabled, other.enterpriseRootsEnabled) && GeckoPigeonUtils.deepEquals(this.dohSettings, other.dohSettings) && GeckoPigeonUtils.deepEquals(this.fingerprintingProtectionOverrides, other.fingerprintingProtectionOverrides) && GeckoPigeonUtils.deepEquals(this.locales, other.locales) && GeckoPigeonUtils.deepEquals(this.useContentBlockingDatabase, other.useContentBlockingDatabase) && GeckoPigeonUtils.deepEquals(this.blockCookies, other.blockCookies) && GeckoPigeonUtils.deepEquals(this.customCookiePolicy, other.customCookiePolicy) && GeckoPigeonUtils.deepEquals(this.blockTrackingContent, other.blockTrackingContent) && GeckoPigeonUtils.deepEquals(this.trackingContentScope, other.trackingContentScope) && GeckoPigeonUtils.deepEquals(this.blockCryptominers, other.blockCryptominers) && GeckoPigeonUtils.deepEquals(this.blockFingerprinters, other.blockFingerprinters) && GeckoPigeonUtils.deepEquals(this.blockRedirectTrackers, other.blockRedirectTrackers) && GeckoPigeonUtils.deepEquals(this.blockSuspectedFingerprinters, other.blockSuspectedFingerprinters) && GeckoPigeonUtils.deepEquals(this.suspectedFingerprintersScope, other.suspectedFingerprintersScope) && GeckoPigeonUtils.deepEquals(this.allowListBaseline, other.allowListBaseline) && GeckoPigeonUtils.deepEquals(this.allowListConvenience, other.allowListConvenience) && GeckoPigeonUtils.deepEquals(this.blockAdsAnalyticsSocialTrackers, other.blockAdsAnalyticsSocialTrackers) && GeckoPigeonUtils.deepEquals(this.webFontsEnabled, other.webFontsEnabled) && GeckoPigeonUtils.deepEquals(this.automaticFontSizeAdjustment, other.automaticFontSizeAdjustment) && GeckoPigeonUtils.deepEquals(this.fontSizeFactor, other.fontSizeFactor) && GeckoPigeonUtils.deepEquals(this.fontInflationEnabled, other.fontInflationEnabled) && GeckoPigeonUtils.deepEquals(this.displayDensityOverride, other.displayDensityOverride) && GeckoPigeonUtils.deepEquals(this.screenWidthOverride, other.screenWidthOverride) && GeckoPigeonUtils.deepEquals(this.screenHeightOverride, other.screenHeightOverride) && GeckoPigeonUtils.deepEquals(this.inputAutoZoomEnabled, other.inputAutoZoomEnabled) && GeckoPigeonUtils.deepEquals(this.fissionEnabled, other.fissionEnabled) && GeckoPigeonUtils.deepEquals(this.isolatedProcessEnabled, other.isolatedProcessEnabled) && GeckoPigeonUtils.deepEquals(this.appZygoteProcessEnabled, other.appZygoteProcessEnabled) && GeckoPigeonUtils.deepEquals(this.extensionsWebAPIEnabled, other.extensionsWebAPIEnabled) && GeckoPigeonUtils.deepEquals(this.lnaBlocking, other.lnaBlocking) && GeckoPigeonUtils.deepEquals(this.lnaBlockTrackers, other.lnaBlockTrackers) && GeckoPigeonUtils.deepEquals(this.lnaEnabled, other.lnaEnabled)
return GeckoPigeonUtils.deepEquals(this.javascriptEnabled, other.javascriptEnabled) && GeckoPigeonUtils.deepEquals(this.trackingProtectionPolicy, other.trackingProtectionPolicy) && GeckoPigeonUtils.deepEquals(this.httpsOnlyMode, other.httpsOnlyMode) && GeckoPigeonUtils.deepEquals(this.globalPrivacyControlEnabled, other.globalPrivacyControlEnabled) && GeckoPigeonUtils.deepEquals(this.preferredColorScheme, other.preferredColorScheme) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingMode, other.cookieBannerHandlingMode) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingModePrivateBrowsing, other.cookieBannerHandlingModePrivateBrowsing) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingGlobalRules, other.cookieBannerHandlingGlobalRules) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingGlobalRulesSubFrames, other.cookieBannerHandlingGlobalRulesSubFrames) && GeckoPigeonUtils.deepEquals(this.webContentIsolationStrategy, other.webContentIsolationStrategy) && GeckoPigeonUtils.deepEquals(this.userAgent, other.userAgent) && GeckoPigeonUtils.deepEquals(this.contentBlocking, other.contentBlocking) && GeckoPigeonUtils.deepEquals(this.enterpriseRootsEnabled, other.enterpriseRootsEnabled) && GeckoPigeonUtils.deepEquals(this.dohSettings, other.dohSettings) && GeckoPigeonUtils.deepEquals(this.fingerprintingProtectionOverrides, other.fingerprintingProtectionOverrides) && GeckoPigeonUtils.deepEquals(this.locales, other.locales) && GeckoPigeonUtils.deepEquals(this.useContentBlockingDatabase, other.useContentBlockingDatabase) && GeckoPigeonUtils.deepEquals(this.blockCookies, other.blockCookies) && GeckoPigeonUtils.deepEquals(this.customCookiePolicy, other.customCookiePolicy) && GeckoPigeonUtils.deepEquals(this.blockTrackingContent, other.blockTrackingContent) && GeckoPigeonUtils.deepEquals(this.trackingContentScope, other.trackingContentScope) && GeckoPigeonUtils.deepEquals(this.blockCryptominers, other.blockCryptominers) && GeckoPigeonUtils.deepEquals(this.blockFingerprinters, other.blockFingerprinters) && GeckoPigeonUtils.deepEquals(this.blockRedirectTrackers, other.blockRedirectTrackers) && GeckoPigeonUtils.deepEquals(this.blockSuspectedFingerprinters, other.blockSuspectedFingerprinters) && GeckoPigeonUtils.deepEquals(this.suspectedFingerprintersScope, other.suspectedFingerprintersScope) && GeckoPigeonUtils.deepEquals(this.allowListBaseline, other.allowListBaseline) && GeckoPigeonUtils.deepEquals(this.allowListConvenience, other.allowListConvenience) && GeckoPigeonUtils.deepEquals(this.blockAdsAnalyticsSocialTrackers, other.blockAdsAnalyticsSocialTrackers) && GeckoPigeonUtils.deepEquals(this.webFontsEnabled, other.webFontsEnabled) && GeckoPigeonUtils.deepEquals(this.automaticFontSizeAdjustment, other.automaticFontSizeAdjustment) && GeckoPigeonUtils.deepEquals(this.fontSizeFactor, other.fontSizeFactor) && GeckoPigeonUtils.deepEquals(this.fontInflationEnabled, other.fontInflationEnabled) && GeckoPigeonUtils.deepEquals(this.displayDensityOverride, other.displayDensityOverride) && GeckoPigeonUtils.deepEquals(this.screenWidthOverride, other.screenWidthOverride) && GeckoPigeonUtils.deepEquals(this.screenHeightOverride, other.screenHeightOverride) && GeckoPigeonUtils.deepEquals(this.inputAutoZoomEnabled, other.inputAutoZoomEnabled) && GeckoPigeonUtils.deepEquals(this.forceUserScalableContent, other.forceUserScalableContent) && GeckoPigeonUtils.deepEquals(this.fissionEnabled, other.fissionEnabled) && GeckoPigeonUtils.deepEquals(this.isolatedProcessEnabled, other.isolatedProcessEnabled) && GeckoPigeonUtils.deepEquals(this.appZygoteProcessEnabled, other.appZygoteProcessEnabled) && GeckoPigeonUtils.deepEquals(this.extensionsWebAPIEnabled, other.extensionsWebAPIEnabled) && GeckoPigeonUtils.deepEquals(this.lnaBlocking, other.lnaBlocking) && GeckoPigeonUtils.deepEquals(this.lnaBlockTrackers, other.lnaBlockTrackers) && GeckoPigeonUtils.deepEquals(this.lnaEnabled, other.lnaEnabled)
}
override fun hashCode(): Int {
@@ -3790,6 +3797,7 @@ data class GeckoEngineSettings (
result = 31 * result + GeckoPigeonUtils.deepHash(this.screenWidthOverride)
result = 31 * result + GeckoPigeonUtils.deepHash(this.screenHeightOverride)
result = 31 * result + GeckoPigeonUtils.deepHash(this.inputAutoZoomEnabled)
result = 31 * result + GeckoPigeonUtils.deepHash(this.forceUserScalableContent)
result = 31 * result + GeckoPigeonUtils.deepHash(this.fissionEnabled)
result = 31 * result + GeckoPigeonUtils.deepHash(this.isolatedProcessEnabled)
result = 31 * result + GeckoPigeonUtils.deepHash(this.appZygoteProcessEnabled)
@@ -3800,7 +3808,7 @@ data class GeckoEngineSettings (
return result
}
override fun toString(): String {
return "GeckoEngineSettings(javascriptEnabled=$javascriptEnabled, trackingProtectionPolicy=$trackingProtectionPolicy, httpsOnlyMode=$httpsOnlyMode, globalPrivacyControlEnabled=$globalPrivacyControlEnabled, preferredColorScheme=$preferredColorScheme, cookieBannerHandlingMode=$cookieBannerHandlingMode, cookieBannerHandlingModePrivateBrowsing=$cookieBannerHandlingModePrivateBrowsing, cookieBannerHandlingGlobalRules=$cookieBannerHandlingGlobalRules, cookieBannerHandlingGlobalRulesSubFrames=$cookieBannerHandlingGlobalRulesSubFrames, webContentIsolationStrategy=$webContentIsolationStrategy, userAgent=$userAgent, contentBlocking=$contentBlocking, enterpriseRootsEnabled=$enterpriseRootsEnabled, dohSettings=$dohSettings, fingerprintingProtectionOverrides=$fingerprintingProtectionOverrides, locales=$locales, useContentBlockingDatabase=$useContentBlockingDatabase, blockCookies=$blockCookies, customCookiePolicy=$customCookiePolicy, blockTrackingContent=$blockTrackingContent, trackingContentScope=$trackingContentScope, blockCryptominers=$blockCryptominers, blockFingerprinters=$blockFingerprinters, blockRedirectTrackers=$blockRedirectTrackers, blockSuspectedFingerprinters=$blockSuspectedFingerprinters, suspectedFingerprintersScope=$suspectedFingerprintersScope, allowListBaseline=$allowListBaseline, allowListConvenience=$allowListConvenience, blockAdsAnalyticsSocialTrackers=$blockAdsAnalyticsSocialTrackers, webFontsEnabled=$webFontsEnabled, automaticFontSizeAdjustment=$automaticFontSizeAdjustment, fontSizeFactor=$fontSizeFactor, fontInflationEnabled=$fontInflationEnabled, displayDensityOverride=$displayDensityOverride, screenWidthOverride=$screenWidthOverride, screenHeightOverride=$screenHeightOverride, inputAutoZoomEnabled=$inputAutoZoomEnabled, fissionEnabled=$fissionEnabled, isolatedProcessEnabled=$isolatedProcessEnabled, appZygoteProcessEnabled=$appZygoteProcessEnabled, extensionsWebAPIEnabled=$extensionsWebAPIEnabled, lnaBlocking=$lnaBlocking, lnaBlockTrackers=$lnaBlockTrackers, lnaEnabled=$lnaEnabled)"
return "GeckoEngineSettings(javascriptEnabled=$javascriptEnabled, trackingProtectionPolicy=$trackingProtectionPolicy, httpsOnlyMode=$httpsOnlyMode, globalPrivacyControlEnabled=$globalPrivacyControlEnabled, preferredColorScheme=$preferredColorScheme, cookieBannerHandlingMode=$cookieBannerHandlingMode, cookieBannerHandlingModePrivateBrowsing=$cookieBannerHandlingModePrivateBrowsing, cookieBannerHandlingGlobalRules=$cookieBannerHandlingGlobalRules, cookieBannerHandlingGlobalRulesSubFrames=$cookieBannerHandlingGlobalRulesSubFrames, webContentIsolationStrategy=$webContentIsolationStrategy, userAgent=$userAgent, contentBlocking=$contentBlocking, enterpriseRootsEnabled=$enterpriseRootsEnabled, dohSettings=$dohSettings, fingerprintingProtectionOverrides=$fingerprintingProtectionOverrides, locales=$locales, useContentBlockingDatabase=$useContentBlockingDatabase, blockCookies=$blockCookies, customCookiePolicy=$customCookiePolicy, blockTrackingContent=$blockTrackingContent, trackingContentScope=$trackingContentScope, blockCryptominers=$blockCryptominers, blockFingerprinters=$blockFingerprinters, blockRedirectTrackers=$blockRedirectTrackers, blockSuspectedFingerprinters=$blockSuspectedFingerprinters, suspectedFingerprintersScope=$suspectedFingerprintersScope, allowListBaseline=$allowListBaseline, allowListConvenience=$allowListConvenience, blockAdsAnalyticsSocialTrackers=$blockAdsAnalyticsSocialTrackers, webFontsEnabled=$webFontsEnabled, automaticFontSizeAdjustment=$automaticFontSizeAdjustment, fontSizeFactor=$fontSizeFactor, fontInflationEnabled=$fontInflationEnabled, displayDensityOverride=$displayDensityOverride, screenWidthOverride=$screenWidthOverride, screenHeightOverride=$screenHeightOverride, inputAutoZoomEnabled=$inputAutoZoomEnabled, forceUserScalableContent=$forceUserScalableContent, fissionEnabled=$fissionEnabled, isolatedProcessEnabled=$isolatedProcessEnabled, appZygoteProcessEnabled=$appZygoteProcessEnabled, extensionsWebAPIEnabled=$extensionsWebAPIEnabled, lnaBlocking=$lnaBlocking, lnaBlockTrackers=$lnaBlockTrackers, lnaEnabled=$lnaEnabled)"
}
}