From c143f95819aa34e65017ded6bc519d87c2c8a0e0 Mon Sep 17 00:00:00 2001 From: Jonathan Almeida Date: Thu, 9 Jul 2020 15:15:58 -0400 Subject: [PATCH] Issue #11333: Set ContentBlocking settings directly on GeckoRuntime We set the ContentBlockingSettings directly on the GeckoRuntime now to improve the startup of the engine. This change has requirements from Android Components and GeckoView, so we would only see the full perf benefits in Nightly as the changes ride the train, although we might start to see some of them as we're updating the GeckoProvider for the `geckoBeta` variant as well. Co-authored-by: Arturo Mejia --- .../java/org/mozilla/fenix/engine/GeckoProvider.kt | 11 ++++++++--- .../java/org/mozilla/fenix/engine/GeckoProvider.kt | 11 ++++++++--- .../main/java/org/mozilla/fenix/components/Core.kt | 12 ++++++++++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/src/geckoBeta/java/org/mozilla/fenix/engine/GeckoProvider.kt b/app/src/geckoBeta/java/org/mozilla/fenix/engine/GeckoProvider.kt index 96aa0d767a..b5171c98a9 100644 --- a/app/src/geckoBeta/java/org/mozilla/fenix/engine/GeckoProvider.kt +++ b/app/src/geckoBeta/java/org/mozilla/fenix/engine/GeckoProvider.kt @@ -5,7 +5,9 @@ import android.content.Context import android.os.Bundle import mozilla.components.browser.engine.gecko.autofill.GeckoLoginDelegateWrapper +import mozilla.components.browser.engine.gecko.ext.toContentBlockingSetting import mozilla.components.browser.engine.gecko.glean.GeckoAdapter +import mozilla.components.concept.engine.EngineSession.TrackingProtectionPolicy import mozilla.components.concept.storage.LoginsStorage import mozilla.components.lib.crash.handler.CrashHandlerService import mozilla.components.service.sync.logins.GeckoLoginStorageDelegate @@ -21,10 +23,11 @@ object GeckoProvider { @Synchronized fun getOrCreateRuntime( context: Context, - storage: Lazy + storage: Lazy, + trackingProtectionPolicy: TrackingProtectionPolicy ): GeckoRuntime { if (runtime == null) { - runtime = createRuntime(context, storage) + runtime = createRuntime(context, storage, trackingProtectionPolicy) } return runtime!! @@ -32,7 +35,8 @@ object GeckoProvider { private fun createRuntime( context: Context, - storage: Lazy + storage: Lazy, + policy: TrackingProtectionPolicy ): GeckoRuntime { val builder = GeckoRuntimeSettings.Builder() @@ -44,6 +48,7 @@ object GeckoProvider { val runtimeSettings = builder .crashHandler(CrashHandlerService::class.java) .telemetryDelegate(GeckoAdapter()) + .contentBlocking(policy.toContentBlockingSetting()) .aboutConfigEnabled(Config.channel.isBeta) .debugLogging(Config.channel.isDebug) .build() diff --git a/app/src/geckoNightly/java/org/mozilla/fenix/engine/GeckoProvider.kt b/app/src/geckoNightly/java/org/mozilla/fenix/engine/GeckoProvider.kt index 2508f6f573..43a2dd510c 100644 --- a/app/src/geckoNightly/java/org/mozilla/fenix/engine/GeckoProvider.kt +++ b/app/src/geckoNightly/java/org/mozilla/fenix/engine/GeckoProvider.kt @@ -5,7 +5,9 @@ import android.content.Context import android.os.Bundle import mozilla.components.browser.engine.gecko.autofill.GeckoLoginDelegateWrapper +import mozilla.components.browser.engine.gecko.ext.toContentBlockingSetting import mozilla.components.browser.engine.gecko.glean.GeckoAdapter +import mozilla.components.concept.engine.EngineSession.TrackingProtectionPolicy import mozilla.components.concept.storage.LoginsStorage import mozilla.components.lib.crash.handler.CrashHandlerService import mozilla.components.service.sync.logins.GeckoLoginStorageDelegate @@ -21,10 +23,11 @@ object GeckoProvider { @Synchronized fun getOrCreateRuntime( context: Context, - storage: Lazy + storage: Lazy, + trackingProtectionPolicy: TrackingProtectionPolicy ): GeckoRuntime { if (runtime == null) { - runtime = createRuntime(context, storage) + runtime = createRuntime(context, storage, trackingProtectionPolicy) } return runtime!! @@ -32,7 +35,8 @@ object GeckoProvider { private fun createRuntime( context: Context, - storage: Lazy + storage: Lazy, + policy: TrackingProtectionPolicy ): GeckoRuntime { val builder = GeckoRuntimeSettings.Builder() @@ -44,6 +48,7 @@ object GeckoProvider { val runtimeSettings = builder .crashHandler(CrashHandlerService::class.java) .telemetryDelegate(GeckoAdapter()) + .contentBlocking(policy.toContentBlockingSetting()) .debugLogging(Config.channel.isDebug) .aboutConfigEnabled(true) .build() 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 d3ec37d3a0..5574844f19 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Core.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Core.kt @@ -86,7 +86,11 @@ class Core(private val context: Context) { GeckoEngine( context, defaultSettings, - GeckoProvider.getOrCreateRuntime(context, lazyPasswordsStorage) + GeckoProvider.getOrCreateRuntime( + context, + lazyPasswordsStorage, + trackingProtectionPolicyFactory.createTrackingProtectionPolicy() + ) ).also { WebCompatFeature.install(it) @@ -108,7 +112,11 @@ class Core(private val context: Context) { val client: Client by lazy { GeckoViewFetchClient( context, - GeckoProvider.getOrCreateRuntime(context, lazyPasswordsStorage) + GeckoProvider.getOrCreateRuntime( + context, + lazyPasswordsStorage, + trackingProtectionPolicyFactory.createTrackingProtectionPolicy() + ) ) }