Verified Commit 5bbeac99 authored by Matthew Finkel's avatar Matthew Finkel Committed by Pier Angelo Vendrame
Browse files

[android] Add support for new GeckoView interfaces

Bug 40006: Expose Security Level interface

Bug 40019: Expose spoofEnglish pref

Bug 34439: Isolate Icon loader on Android

Bug 41394: Expose privacy.prioritizeonions.enabled to Android.
parent de354da6
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -1331,6 +1331,29 @@ class GeckoEngine(
        override var globalPrivacyControlEnabled: Boolean
            get() = runtime.settings.globalPrivacyControl
            set(value) { runtime.settings.setGlobalPrivacyControl(value) }

        override var torSecurityLevel: Int
            get() = runtime.settings.torSecurityLevel
            set(value) {
                value.let {
                    runtime.settings.torSecurityLevel = it
                }
            }
        override var spoofEnglish: Boolean
            get() = runtime.settings.spoofEnglish
            set(value) {
                value.let {
                    runtime.settings.spoofEnglish = it
                    localeUpdater.updateValue()
                }
            }
        override var prioritizeOnions: Boolean
            get() = runtime.settings.prioritizeOnions
            set(value) {
                value.let {
                    runtime.settings.prioritizeOnions = it
                }
            }
    }.apply {
        defaultSettings?.let {
            this.javascriptEnabled = it.javascriptEnabled
@@ -1357,6 +1380,9 @@ class GeckoEngine(
            this.cookieBannerHandlingGlobalRulesSubFrames = it.cookieBannerHandlingGlobalRulesSubFrames
            this.globalPrivacyControlEnabled = it.globalPrivacyControlEnabled
            this.emailTrackerBlockingPrivateBrowsing = it.emailTrackerBlockingPrivateBrowsing
            this.torSecurityLevel = it.torSecurityLevel
            this.spoofEnglish = it.spoofEnglish
            this.prioritizeOnions = it.prioritizeOnions
        }
    }

+2 −0
Original line number Diff line number Diff line
@@ -88,7 +88,9 @@ private fun Request.toWebRequest(): WebRequest = WebRequest.Builder(url)
    .addBodyFrom(this)
    .referrer(referrerUrl)
    .cacheMode(if (useCaches) CACHE_MODE_DEFAULT else CACHE_MODE_RELOAD)
    // Turn off bleeding-edge network features to avoid breaking core browser functionality.
    .beConservative(conservative)
    .origin(origin)
    .build()

private fun WebRequest.Builder.addHeadersFrom(request: Request): WebRequest.Builder {
+1 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ open class HttpIconLoader(
            redirect = Request.Redirect.FOLLOW,
            useCaches = true,
            private = request.isPrivate,
            origin = request.url
        )

        return try {
+12 −0
Original line number Diff line number Diff line
@@ -251,6 +251,15 @@ abstract class Settings {
     * Setting to control the email tracker blocking feature in the private browsing mode.
     */
    open var emailTrackerBlockingPrivateBrowsing: Boolean by UnsupportedSetting()

    /**
     * Setting to control the current security level
     */
    open var torSecurityLevel: Int by UnsupportedSetting()

    open var spoofEnglish: Boolean by UnsupportedSetting()

    open var prioritizeOnions: Boolean by UnsupportedSetting()
}

/**
@@ -301,6 +310,9 @@ data class DefaultSettings(
    override var queryParameterStrippingAllowList: String = "",
    override var queryParameterStrippingStripList: String = "",
    override var emailTrackerBlockingPrivateBrowsing: Boolean = false,
    override var torSecurityLevel: Int = 4,
    override var spoofEnglish: Boolean = false,
    override var prioritizeOnions: Boolean = false,
) : Settings()

class UnsupportedSetting<T> {
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ data class Request(
    val cookiePolicy: CookiePolicy = CookiePolicy.INCLUDE,
    val useCaches: Boolean = true,
    val private: Boolean = false,
    val origin: String? = null,
) {
    var referrerUrl: String? = null
    var conservative: Boolean = false