LeOS-Ice-browser/016-v120.patch

998 lines
43 KiB
Diff

Subject: [PATCH] v120
---
Index: fenix-liberate.patch
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/fenix-liberate.patch b/fenix-liberate.patch
new file mode 100644
--- /dev/null (revision 2d11da25be368a0d5b2a0cf89e09aa073fcb0cd0)
+++ b/fenix-liberate.patch (revision 2d11da25be368a0d5b2a0cf89e09aa073fcb0cd0)
@@ -0,0 +1,985 @@
+diff --git a/fenix/app/build.gradle b/fenix/app/build.gradle
+index 78d698dad9..0fbf4cb1cf 100644
+--- a/fenix/app/build.gradle
++++ b/fenix/app/build.gradle
+@@ -576,7 +576,6 @@ dependencies {
+
+ implementation project(':lib-crash')
+ implementation project(':lib-crash-sentry')
+- implementation project(':lib-push-firebase')
+ implementation project(':lib-state')
+ implementation project(':lib-dataprotect')
+
+@@ -615,15 +614,6 @@ dependencies {
+ implementation FenixDependencies.protobuf_javalite
+ implementation ComponentsDependencies.google_material
+
+- implementation FenixDependencies.adjust
+- implementation FenixDependencies.installreferrer // Required by Adjust
+-
+- implementation FenixDependencies.google_ads_id // Required for the Google Advertising ID
+-
+- // Required for in-app reviews
+- implementation FenixDependencies.google_play_review
+- implementation FenixDependencies.google_play_review_ktx
+-
+ implementation FenixDependencies.androidx_profileinstaller
+
+ androidTestImplementation ComponentsDependencies.androidx_test_uiautomator
+diff --git a/fenix/app/proguard-rules.pro b/fenix/app/proguard-rules.pro
+index e269f65775..e870f06bef 100644
+--- a/fenix/app/proguard-rules.pro
++++ b/fenix/app/proguard-rules.pro
+@@ -1,22 +1,5 @@
+ -dontobfuscate
+
+-####################################################################################################
+-# Sentry
+-####################################################################################################
+-
+-# Recommended config via https://docs.sentry.io/clients/java/modules/android/#manual-integration
+-# Since we don't obfuscate, we don't need to use their Gradle plugin to upload ProGuard mappings.
+--keepattributes LineNumberTable,SourceFile
+--dontwarn org.slf4j.**
+--dontwarn javax.**
+-
+-# Our addition: this class is saved to disk via Serializable, which ProGuard doesn't like.
+-# If we exclude this, upload silently fails (Sentry swallows a NPE so we don't crash).
+-# I filed https://github.com/getsentry/sentry-java/issues/572
+-#
+-# If Sentry ever mysteriously stops working after we upgrade it, this could be why.
+--keep class io.sentry.event.Event { *; }
+-
+ ####################################################################################################
+ # Android and GeckoView built-ins
+ ####################################################################################################
+@@ -69,58 +52,6 @@
+
+ -keep class org.mozilla.fenix.**ViewModel { *; }
+
+-####################################################################################################
+-# Adjust
+-####################################################################################################
+-
+--keep public class com.adjust.sdk.** { *; }
+--keep class com.google.android.gms.common.ConnectionResult {
+- int SUCCESS;
+-}
+--keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
+- com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
+-}
+--keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
+- java.lang.String getId();
+- boolean isLimitAdTrackingEnabled();
+-}
+--keep public class com.android.installreferrer.** { *; }
+--keep class dalvik.system.VMRuntime {
+- java.lang.String getRuntime();
+-}
+--keep class android.os.Build {
+- java.lang.String[] SUPPORTED_ABIS;
+- java.lang.String CPU_ABI;
+-}
+--keep class android.content.res.Configuration {
+- android.os.LocaledList getLocales();
+- java.util.Locale locale;
+-}
+--keep class android.os.LocaleList {
+- java.util.Locale get(int);
+-}
+-
+-# Keep code generated from Glean Metrics
+--keep class org.mozilla.fenix.GleanMetrics.** { *; }
+-
+-# Keep motionlayout internal methods
+-# https://github.com/mozilla-mobile/fenix/issues/2094
+--keep class androidx.constraintlayout.** { *; }
+-
+-# Keep adjust relevant classes
+--keep class com.adjust.sdk.** { *; }
+--keep class com.google.android.gms.common.ConnectionResult {
+- int SUCCESS;
+-}
+--keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
+- com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
+-}
+--keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
+- java.lang.String getId();
+- boolean isLimitAdTrackingEnabled();
+-}
+--keep public class com.android.installreferrer.** { *; }
+-
+ # Keep Android Lifecycle methods
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1596302
+ -keep class androidx.lifecycle.** { *; }
+diff --git a/fenix/app/src/main/java/com/adjust/sdk/Adjust.java b/fenix/app/src/main/java/com/adjust/sdk/Adjust.java
+new file mode 100644
+index 0000000000..7e644e2fa2
+--- /dev/null
++++ b/fenix/app/src/main/java/com/adjust/sdk/Adjust.java
+@@ -0,0 +1,44 @@
++/*
++ * Copyright (c) 2012-2017 adjust GmbH,
++ * http://www.adjust.com
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining
++ * a copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, sublicense, and/or sell copies of the Software, and to
++ * permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
++ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
++ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
++ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++package com.adjust.sdk;
++
++import android.content.Context;
++
++public class Adjust {
++ public static void onCreate(AdjustConfig adjustConfig) {
++ }
++
++ public static void onResume() {
++ }
++
++ public static void onPause() {
++ }
++
++ public static void setEnabled(boolean enabled) {
++ }
++
++ public static void gdprForgetMe(final Context context) {
++ }
++}
+diff --git a/fenix/app/src/main/java/com/adjust/sdk/AdjustAttribution.java b/fenix/app/src/main/java/com/adjust/sdk/AdjustAttribution.java
+new file mode 100644
+index 0000000000..ab6b3badbd
+--- /dev/null
++++ b/fenix/app/src/main/java/com/adjust/sdk/AdjustAttribution.java
+@@ -0,0 +1,49 @@
++/*
++ * Copyright (c) 2012-2017 adjust GmbH,
++ * http://www.adjust.com
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining
++ * a copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, sublicense, and/or sell copies of the Software, and to
++ * permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
++ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
++ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
++ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++package com.adjust.sdk;
++
++import java.io.Serializable;
++
++public class AdjustAttribution implements Serializable {
++ public String network;
++ public String campaign;
++ public String adgroup;
++ public String creative;
++
++ @Override
++ public boolean equals(Object other) {
++ return false;
++ }
++
++ @Override
++ public int hashCode() {
++ return 0;
++ }
++
++ @Override
++ public String toString() {
++ return "";
++ }
++}
+diff --git a/fenix/app/src/main/java/com/adjust/sdk/AdjustConfig.java b/fenix/app/src/main/java/com/adjust/sdk/AdjustConfig.java
+new file mode 100644
+index 0000000000..6753dd7d9f
+--- /dev/null
++++ b/fenix/app/src/main/java/com/adjust/sdk/AdjustConfig.java
+@@ -0,0 +1,46 @@
++/*
++ * Copyright (c) 2012-2017 adjust GmbH,
++ * http://www.adjust.com
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining
++ * a copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, sublicense, and/or sell copies of the Software, and to
++ * permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
++ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
++ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
++ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++package com.adjust.sdk;
++
++import android.content.Context;
++
++import java.util.List;
++
++public class AdjustConfig {
++ public static final String ENVIRONMENT_SANDBOX = "sandbox";
++ public static final String ENVIRONMENT_PRODUCTION = "production";
++
++ public AdjustConfig(Context context, String appToken, String environment) {
++ }
++
++ public AdjustConfig(Context context, String appToken, String environment, boolean allowSuppressLogLevel) {
++ }
++
++ public void setOnAttributionChangedListener(OnAttributionChangedListener onAttributionChangedListener) {
++ }
++
++ public void setLogLevel(LogLevel logLevel) {
++ }
++}
+diff --git a/fenix/app/src/main/java/com/adjust/sdk/LogLevel.java b/fenix/app/src/main/java/com/adjust/sdk/LogLevel.java
+new file mode 100644
+index 0000000000..27ac3de544
+--- /dev/null
++++ b/fenix/app/src/main/java/com/adjust/sdk/LogLevel.java
+@@ -0,0 +1,43 @@
++/*
++ * Copyright (c) 2012-2017 adjust GmbH,
++ * http://www.adjust.com
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining
++ * a copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, sublicense, and/or sell copies of the Software, and to
++ * permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
++ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
++ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
++ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++package com.adjust.sdk;
++
++import android.util.Log;
++
++/**
++ * Created by pfms on 11/03/15.
++ */
++public enum LogLevel {
++ VERBOSE(Log.VERBOSE), DEBUG(Log.DEBUG), INFO(Log.INFO), WARN(Log.WARN), ERROR(Log.ERROR), ASSERT(Log.ASSERT), SUPRESS(8);
++ final int androidLogLevel;
++
++ LogLevel(final int androidLogLevel) {
++ this.androidLogLevel = androidLogLevel;
++ }
++
++ public int getAndroidLogLevel() {
++ return androidLogLevel;
++ }
++}
+diff --git a/fenix/app/src/main/java/com/adjust/sdk/OnAttributionChangedListener.java b/fenix/app/src/main/java/com/adjust/sdk/OnAttributionChangedListener.java
+new file mode 100644
+index 0000000000..7efa1c6804
+--- /dev/null
++++ b/fenix/app/src/main/java/com/adjust/sdk/OnAttributionChangedListener.java
+@@ -0,0 +1,29 @@
++/*
++ * Copyright (c) 2012-2017 adjust GmbH,
++ * http://www.adjust.com
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining
++ * a copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation the rights to use, copy, modify, merge, publish,
++ * distribute, sublicense, and/or sell copies of the Software, and to
++ * permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
++ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
++ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
++ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++package com.adjust.sdk;
++
++public interface OnAttributionChangedListener {
++ void onAttributionChanged(AdjustAttribution attribution);
++}
+diff --git a/fenix/app/src/main/java/com/google/android/gms/ads/identifier/AdvertisingIdClient.java b/fenix/app/src/main/java/com/google/android/gms/ads/identifier/AdvertisingIdClient.java
+new file mode 100644
+index 0000000000..0f2a47b141
+--- /dev/null
++++ b/fenix/app/src/main/java/com/google/android/gms/ads/identifier/AdvertisingIdClient.java
+@@ -0,0 +1,23 @@
++/* This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++package com.google.android.gms.ads.identifier;
++
++import android.content.Context;
++
++public class AdvertisingIdClient {
++
++ public static final class Info {
++
++ public String getId() {
++ return "";
++ }
++
++ }
++
++ public static Info getAdvertisingIdInfo(Context context) {
++ return new Info();
++ }
++
++}
+diff --git a/fenix/app/src/main/java/com/google/android/gms/common/GooglePlayServicesNotAvailableException.java b/fenix/app/src/main/java/com/google/android/gms/common/GooglePlayServicesNotAvailableException.java
+new file mode 100644
+index 0000000000..d3bff12497
+--- /dev/null
++++ b/fenix/app/src/main/java/com/google/android/gms/common/GooglePlayServicesNotAvailableException.java
+@@ -0,0 +1,8 @@
++/* This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++package com.google.android.gms.common;
++
++public class GooglePlayServicesNotAvailableException extends Exception {
++}
+diff --git a/fenix/app/src/main/java/com/google/android/gms/common/GooglePlayServicesRepairableException.java b/fenix/app/src/main/java/com/google/android/gms/common/GooglePlayServicesRepairableException.java
+new file mode 100644
+index 0000000000..b72a7cdb16
+--- /dev/null
++++ b/fenix/app/src/main/java/com/google/android/gms/common/GooglePlayServicesRepairableException.java
+@@ -0,0 +1,8 @@
++/* This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++package com.google.android.gms.common;
++
++public class GooglePlayServicesRepairableException extends Exception {
++}
+diff --git a/fenix/app/src/main/java/com/google/firebase/messaging/FirebaseMessagingService.java b/fenix/app/src/main/java/com/google/firebase/messaging/FirebaseMessagingService.java
+new file mode 100644
+index 0000000000..4d5fd8153d
+--- /dev/null
++++ b/fenix/app/src/main/java/com/google/firebase/messaging/FirebaseMessagingService.java
+@@ -0,0 +1,42 @@
++// Copyright 2020 Google LLC
++//
++// Licensed under the Apache License, Version 2.0 (the "License");
++// you may not use this file except in compliance with the License.
++// You may obtain a copy of the License at
++//
++// http://www.apache.org/licenses/LICENSE-2.0
++//
++// Unless required by applicable law or agreed to in writing, software
++// distributed under the License is distributed on an "AS IS" BASIS,
++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++// See the License for the specific language governing permissions and
++// limitations under the License.
++package com.google.firebase.messaging;
++
++import android.app.Service;
++import android.content.Intent;
++import android.os.Binder;
++import android.os.IBinder;
++
++public class FirebaseMessagingService extends Service {
++
++ private final IBinder mBinder = new Binder();
++
++ public void onMessageReceived(RemoteMessage message) {
++ }
++
++ public void onMessageSent(String msgId) {
++ }
++
++ public void onNewToken(String token) {
++ }
++
++ public void onSendError(String msgId, Exception exception) {
++ }
++
++ @Override
++ public IBinder onBind(Intent intent) {
++ return mBinder;
++ }
++
++}
+diff --git a/fenix/app/src/main/java/com/google/firebase/messaging/RemoteMessage.java b/fenix/app/src/main/java/com/google/firebase/messaging/RemoteMessage.java
+new file mode 100644
+index 0000000000..9ad59a31e4
+--- /dev/null
++++ b/fenix/app/src/main/java/com/google/firebase/messaging/RemoteMessage.java
+@@ -0,0 +1,33 @@
++// Copyright 2020 Google LLC
++//
++// Licensed under the Apache License, Version 2.0 (the "License");
++// you may not use this file except in compliance with the License.
++// You may obtain a copy of the License at
++//
++// http://www.apache.org/licenses/LICENSE-2.0
++//
++// Unless required by applicable law or agreed to in writing, software
++// distributed under the License is distributed on an "AS IS" BASIS,
++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++// See the License for the specific language governing permissions and
++// limitations under the License.
++package com.google.firebase.messaging;
++
++import android.os.Parcel;
++import android.os.Parcelable;
++import java.util.Map;
++
++public class RemoteMessage implements Parcelable {
++
++ public int describeContents() {
++ return 0;
++ }
++
++ public void writeToParcel(Parcel out, int flags) {
++ }
++
++ public Map<String, String> getData() {
++ return null;
++ }
++
++}
+diff --git a/fenix/app/src/main/java/mozilla/components/lib/push/firebase/AbstractFirebasePushService.kt b/fenix/app/src/main/java/mozilla/components/lib/push/firebase/AbstractFirebasePushService.kt
+new file mode 100644
+index 0000000000..b50a6f03a2
+--- /dev/null
++++ b/fenix/app/src/main/java/mozilla/components/lib/push/firebase/AbstractFirebasePushService.kt
+@@ -0,0 +1,32 @@
++/* This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++package mozilla.components.lib.push.firebase
++
++import android.content.Context
++import com.google.firebase.messaging.FirebaseMessagingService
++import com.google.firebase.messaging.RemoteMessage
++import mozilla.components.concept.push.PushService
++
++abstract class AbstractFirebasePushService() : FirebaseMessagingService(), PushService {
++
++ override fun start(context: Context) {
++ }
++
++ override fun onNewToken(newToken: String) {
++ }
++
++ override fun onMessageReceived(remoteMessage: RemoteMessage?) {
++ }
++
++ final override fun stop() {
++ }
++
++ override fun deleteToken() {
++ }
++
++ override fun isServiceAvailable(context: Context): Boolean {
++ return false
++ }
++}
+diff --git a/fenix/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt b/fenix/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt
+index d3d63c17b9..7228e67716 100644
+--- a/fenix/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt
++++ b/fenix/app/src/main/java/org/mozilla/fenix/FeatureFlags.kt
+@@ -18,7 +18,7 @@ object FeatureFlags {
+ * This feature does not only depend on this flag. It requires the AMO collection override to
+ * be enabled which is behind the Secret Settings.
+ * */
+- val customExtensionCollectionFeature = Config.channel.isNightlyOrDebug || Config.channel.isBeta
++ val customExtensionCollectionFeature = true
+
+ /**
+ * Pull-to-refresh allows you to pull the web content down far enough to have the page to
+@@ -37,7 +37,7 @@ object FeatureFlags {
+ fun isPocketRecommendationsFeatureEnabled(context: Context): Boolean {
+ val langTag = LocaleManager.getCurrentLocale(context)
+ ?.toLanguageTag() ?: getSystemDefault().toLanguageTag()
+- return listOf("en-US", "en-CA").contains(langTag)
++ return false && listOf("en-US", "en-CA").contains(langTag)
+ }
+
+ /**
+diff --git a/fenix/app/src/main/java/org/mozilla/fenix/components/Analytics.kt b/fenix/app/src/main/java/org/mozilla/fenix/components/Analytics.kt
+index 3cd954a5bb..31f4e6fe34 100644
+--- a/fenix/app/src/main/java/org/mozilla/fenix/components/Analytics.kt
++++ b/fenix/app/src/main/java/org/mozilla/fenix/components/Analytics.kt
+@@ -137,11 +137,7 @@ class Analytics(
+ MetricController.create(
+ listOf(
+ GleanMetricsService(context),
+- AdjustMetricsService(
+- application = context as Application,
+- storage = metricsStorage,
+- crashReporter = crashReporter,
+- ),
++ AdjustMetricsService(context as Application),
+ InstallReferrerMetricsService(context),
+ ),
+ isDataTelemetryEnabled = { context.settings().isTelemetryEnabled },
+diff --git a/fenix/app/src/main/java/org/mozilla/fenix/components/Components.kt b/fenix/app/src/main/java/org/mozilla/fenix/components/Components.kt
+index d077ca2972..a55a167ad5 100644
+--- a/fenix/app/src/main/java/org/mozilla/fenix/components/Components.kt
++++ b/fenix/app/src/main/java/org/mozilla/fenix/components/Components.kt
+@@ -10,7 +10,6 @@ import android.content.Context
+ import androidx.compose.runtime.Composable
+ import androidx.compose.ui.platform.LocalContext
+ import androidx.core.app.NotificationManagerCompat
+-import com.google.android.play.core.review.ReviewManagerFactory
+ import mozilla.components.feature.addons.AddonManager
+ import mozilla.components.feature.addons.amo.AMOAddonsProvider
+ import mozilla.components.feature.addons.migration.DefaultSupportedAddonsChecker
+@@ -171,7 +170,6 @@ class Components(private val context: Context) {
+
+ val reviewPromptController by lazyMonitored {
+ ReviewPromptController(
+- manager = ReviewManagerFactory.create(context),
+ reviewSettings = FenixReviewSettings(settings),
+ )
+ }
+diff --git a/fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt b/fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt
+index f6d7a2b0df..366c256bdb 100644
+--- a/fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt
++++ b/fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt
+@@ -510,8 +510,14 @@ class Core(
+ } else {
+ defaultTopSites.add(
+ Pair(
+- context.getString(R.string.default_top_site_google),
+- SupportUtils.GOOGLE_URL,
++ context.getString(R.string.default_top_site_fdroid),
++ SupportUtils.FDROID_URL,
++ ),
++ )
++ defaultTopSites.add(
++ Pair(
++ context.getString(R.string.default_top_site_eff),
++ SupportUtils.EFF_URL,
+ ),
+ )
+
+diff --git a/fenix/app/src/main/java/org/mozilla/fenix/components/ReviewPromptController.kt b/fenix/app/src/main/java/org/mozilla/fenix/components/ReviewPromptController.kt
+index 33e8704adc..ffa85e3e46 100644
+--- a/fenix/app/src/main/java/org/mozilla/fenix/components/ReviewPromptController.kt
++++ b/fenix/app/src/main/java/org/mozilla/fenix/components/ReviewPromptController.kt
+@@ -6,8 +6,6 @@ package org.mozilla.fenix.components
+
+ import android.app.Activity
+ import androidx.annotation.VisibleForTesting
+-import com.google.android.play.core.review.ReviewInfo
+-import com.google.android.play.core.review.ReviewManager
+ import kotlinx.coroutines.Dispatchers.Main
+ import kotlinx.coroutines.withContext
+ import org.mozilla.fenix.GleanMetrics.ReviewPrompt
+@@ -45,24 +43,9 @@ class FenixReviewSettings(
+ * Controls the Review Prompt behavior.
+ */
+ class ReviewPromptController(
+- private val manager: ReviewManager,
+ private val reviewSettings: ReviewSettings,
+ private val timeNowInMillis: () -> Long = { System.currentTimeMillis() },
+- private val tryPromptReview: suspend (Activity) -> Unit = { activity ->
+- val flow = manager.requestReviewFlow()
+-
+- withContext(Main) {
+- flow.addOnCompleteListener {
+- if (it.isSuccessful) {
+- manager.launchReviewFlow(activity, it.result)
+- recordReviewPromptEvent(
+- it.result.toString(),
+- reviewSettings.numberOfAppLaunches,
+- Date(),
+- )
+- }
+- }
+- }
++ private val tryPromptReview: suspend (Activity) -> Unit = { _ ->
+ },
+ ) {
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+diff --git a/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/AdjustMetricsService.kt b/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/AdjustMetricsService.kt
+index b979a08026..ae125ebd52 100644
+--- a/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/AdjustMetricsService.kt
++++ b/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/AdjustMetricsService.kt
+@@ -10,25 +10,13 @@ import android.os.Bundle
+ import android.util.Log
+ import com.adjust.sdk.Adjust
+ import com.adjust.sdk.AdjustConfig
+-import com.adjust.sdk.AdjustEvent
+-import com.adjust.sdk.Constants.ADJUST_PREINSTALL_SYSTEM_PROPERTY_PATH
+ import com.adjust.sdk.LogLevel
+-import kotlinx.coroutines.CoroutineDispatcher
+-import kotlinx.coroutines.CoroutineScope
+-import kotlinx.coroutines.Dispatchers
+-import kotlinx.coroutines.launch
+-import mozilla.components.lib.crash.CrashReporter
+ import org.mozilla.fenix.BuildConfig
+ import org.mozilla.fenix.Config
+ import org.mozilla.fenix.GleanMetrics.FirstSession
+ import org.mozilla.fenix.ext.settings
+
+-class AdjustMetricsService(
+- private val application: Application,
+- private val storage: MetricsStorage,
+- private val crashReporter: CrashReporter,
+- private val dispatcher: CoroutineDispatcher = Dispatchers.IO,
+-) : MetricsService {
++class AdjustMetricsService(private val application: Application) : MetricsService {
+ override val type = MetricServiceType.Marketing
+
+ override fun start() {
+@@ -42,15 +30,12 @@ class AdjustMetricsService(
+ return
+ }
+
+- System.setProperty(ADJUST_PREINSTALL_SYSTEM_PROPERTY_PATH, "/preload/etc/adjust.preinstall")
+-
+ val config = AdjustConfig(
+ application,
+ BuildConfig.ADJUST_TOKEN,
+ AdjustConfig.ENVIRONMENT_PRODUCTION,
+ true,
+ )
+- config.setPreinstallTrackingEnabled(true)
+
+ val installationPing = FirstSessionPing(application)
+
+@@ -94,26 +79,8 @@ class AdjustMetricsService(
+ Adjust.gdprForgetMe(application.applicationContext)
+ }
+
+- @Suppress("TooGenericExceptionCaught")
+- override fun track(event: Event) {
+- CoroutineScope(dispatcher).launch {
+- try {
+- if (event is Event.GrowthData) {
+- if (storage.shouldTrack(event)) {
+- Adjust.trackEvent(AdjustEvent(event.tokenName))
+- storage.updateSentState(event)
+- } else {
+- storage.updatePersistentState(event)
+- }
+- }
+- } catch (e: Exception) {
+- crashReporter.submitCaughtException(e)
+- }
+- }
+- }
+-
+- override fun shouldTrack(event: Event): Boolean =
+- event is Event.GrowthData
++ override fun track(event: Event) { /* noop */ }
++ override fun shouldTrack(event: Event): Boolean = false
+
+ companion object {
+ private const val LOGTAG = "AdjustMetricsService"
+diff --git a/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/InstallReferrerMetricsService.kt b/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/InstallReferrerMetricsService.kt
+index a65690bdce..5e88212347 100644
+--- a/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/InstallReferrerMetricsService.kt
++++ b/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/InstallReferrerMetricsService.kt
+@@ -8,8 +8,6 @@ import android.content.Context
+ import android.net.UrlQuerySanitizer
+ import android.os.RemoteException
+ import androidx.annotation.VisibleForTesting
+-import com.android.installreferrer.api.InstallReferrerClient
+-import com.android.installreferrer.api.InstallReferrerStateListener
+ import org.mozilla.fenix.GleanMetrics.PlayStoreAttribution
+ import org.mozilla.fenix.ext.settings
+ import org.mozilla.fenix.utils.Settings
+@@ -23,60 +21,13 @@ import java.net.URLDecoder
+ class InstallReferrerMetricsService(private val context: Context) : MetricsService {
+ override val type = MetricServiceType.Marketing
+
+- private var referrerClient: InstallReferrerClient? = null
+-
+ override fun start() {
+ if (context.settings().utmParamsKnown) {
+ return
+ }
+-
+- val timerId = PlayStoreAttribution.attributionTime.start()
+- val client = InstallReferrerClient.newBuilder(context).build()
+- referrerClient = client
+-
+- client.startConnection(
+- object : InstallReferrerStateListener {
+- override fun onInstallReferrerSetupFinished(responseCode: Int) {
+- PlayStoreAttribution.attributionTime.stopAndAccumulate(timerId)
+- when (responseCode) {
+- InstallReferrerClient.InstallReferrerResponse.OK -> {
+- // Connection established.
+- try {
+- val response = client.installReferrer
+- recordInstallReferrer(context.settings(), response.installReferrer)
+- context.settings().utmParamsKnown = true
+- } catch (e: RemoteException) {
+- // NOOP.
+- // We can't do anything about this.
+- }
+- }
+-
+- InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> {
+- // API not available on the current Play Store app.
+- context.settings().utmParamsKnown = true
+- }
+-
+- InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE -> {
+- // Connection couldn't be established.
+- }
+- }
+- // End the connection, and null out the client.
+- stop()
+- }
+-
+- override fun onInstallReferrerServiceDisconnected() {
+- // Try to restart the connection on the next request to
+- // Google Play by calling the startConnection() method.
+- referrerClient = null
+- }
+- },
+- )
+ }
+
+- override fun stop() {
+- referrerClient?.endConnection()
+- referrerClient = null
+- }
++ override fun stop() { /* noop */ }
+
+ override fun track(event: Event) = Unit
+
+diff --git a/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/TopSiteItemViewHolder.kt b/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/TopSiteItemViewHolder.kt
+index d69f27e570..171f54a6d5 100644
+--- a/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/TopSiteItemViewHolder.kt
++++ b/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/TopSiteItemViewHolder.kt
+@@ -176,6 +176,12 @@ class TopSiteItemViewHolder(
+ SupportUtils.MEITUAN_URL -> {
+ binding.faviconImage.setImageDrawable(getDrawable(itemView.context, R.drawable.ic_meituan))
+ }
++ SupportUtils.FDROID_URL -> {
++ binding.faviconImage.setImageDrawable(getDrawable(itemView.context, R.drawable.ic_fdroid))
++ }
++ SupportUtils.EFF_URL -> {
++ binding.faviconImage.setImageDrawable(getDrawable(itemView.context, R.drawable.ic_eff))
++ }
+ else -> {
+ itemView.context.components.core.icons.loadIntoView(binding.faviconImage, topSite.url)
+ }
+diff --git a/fenix/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt b/fenix/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt
+index e867be39f2..a1667b1c2b 100644
+--- a/fenix/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt
++++ b/fenix/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt
+@@ -38,6 +38,8 @@ object SupportUtils {
+ const val GOOGLE_US_URL = "https://www.google.com/webhp?client=firefox-b-1-m&channel=ts"
+ const val GOOGLE_XX_URL = "https://www.google.com/webhp?client=firefox-b-m&channel=ts"
+ const val WHATS_NEW_URL = "https://www.mozilla.org/firefox/android/notes"
++ const val FDROID_URL = "https://f-droid.org/"
++ const val EFF_URL = "https://www.eff.org/"
+
+ enum class SumoTopic(internal val topicStr: String) {
+ HELP("faq-android"),
+diff --git a/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt b/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
+index 01ed68bbe6..c35ab607f7 100644
+--- a/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
++++ b/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
+@@ -332,17 +332,17 @@ class Settings(private val appContext: Context) : PreferencesHolder {
+
+ var isTelemetryEnabled by booleanPreference(
+ appContext.getPreferenceKey(R.string.pref_key_telemetry),
+- default = true,
++ default = false,
+ )
+
+ var isMarketingTelemetryEnabled by booleanPreference(
+ appContext.getPreferenceKey(R.string.pref_key_marketing_telemetry),
+- default = !Config.channel.isMozillaOnline,
++ default = false,
+ )
+
+ var isExperimentationEnabled by booleanPreference(
+ appContext.getPreferenceKey(R.string.pref_key_experimentation),
+- default = true,
++ default = false,
+ )
+
+ var isOverrideTPPopupsForPerformanceTest = false
+@@ -1553,7 +1553,7 @@ class Settings(private val appContext: Context) : PreferencesHolder {
+ var showPocketRecommendationsFeature by lazyFeatureFlagPreference(
+ appContext.getPreferenceKey(R.string.pref_key_pocket_homescreen_recommendations),
+ featureFlag = FeatureFlags.isPocketRecommendationsFeatureEnabled(appContext),
+- default = { homescreenSections[HomeScreenSection.POCKET] == true },
++ default = { false },
+ )
+
+ /**
+@@ -1611,7 +1611,7 @@ class Settings(private val appContext: Context) : PreferencesHolder {
+ */
+ var showContileFeature by booleanPreference(
+ key = appContext.getPreferenceKey(R.string.pref_key_enable_contile),
+- default = true,
++ default = false,
+ )
+
+ /**
+diff --git a/fenix/app/src/main/res/values/static_strings_extra.xml b/fenix/app/src/main/res/values/static_strings_extra.xml
+new file mode 100644
+index 0000000000..101f4e0d0a
+--- /dev/null
++++ b/fenix/app/src/main/res/values/static_strings_extra.xml
+@@ -0,0 +1,8 @@
++<?xml version="1.0" encoding="utf-8" standalone="yes"?>
++<!-- This Source Code Form is subject to the terms of the Mozilla Public
++ - License, v. 2.0. If a copy of the MPL was not distributed with this
++ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
++<resources>
++ <string name="default_top_site_fdroid" translatable="false">F-Droid</string>
++ <string name="default_top_site_eff" translatable="false">EFF</string>
++</resources>
+diff --git a/fenix/app/src/main/res/xml/preferences.xml b/fenix/app/src/main/res/xml/preferences.xml
+index 2e0366e11b..4a684b7fb6 100644
+--- a/fenix/app/src/main/res/xml/preferences.xml
++++ b/fenix/app/src/main/res/xml/preferences.xml
+@@ -133,11 +133,6 @@
+ app:iconSpaceReserved="false"
+ android:title="@string/preferences_notifications" />
+
+- <androidx.preference.Preference
+- android:key="@string/pref_key_data_choices"
+- app:iconSpaceReserved="false"
+- android:title="@string/preferences_data_collection" />
+-
+ </androidx.preference.PreferenceCategory>
+
+ <PreferenceCategory
+@@ -189,11 +184,6 @@
+ android:title="@string/preferences_category_about"
+ app:iconSpaceReserved="false"
+ android:layout="@layout/preference_category_no_icon_style">
+- <androidx.preference.Preference
+- android:key="@string/pref_key_rate"
+- app:iconSpaceReserved="false"
+- android:title="@string/preferences_rate" />
+-
+ <androidx.preference.Preference
+ android:key="@string/pref_key_about"
+ app:iconSpaceReserved="false"
+diff --git a/fenix/app/src/main/res/xml/site_permissions_details_exceptions_preferences.xml b/fenix/app/src/main/res/xml/site_permissions_details_exceptions_preferences.xml
+index 6bb8cfbbe6..1c15b5897c 100644
+--- a/fenix/app/src/main/res/xml/site_permissions_details_exceptions_preferences.xml
++++ b/fenix/app/src/main/res/xml/site_permissions_details_exceptions_preferences.xml
+@@ -3,7 +3,8 @@
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ <androidx.preference.PreferenceScreen
+- xmlns:android="http://schemas.android.com/apk/res/android">
++ xmlns:android="http://schemas.android.com/apk/res/android"
++ xmlns:app="http://schemas.android.com/apk/res-auto">
+ <androidx.preference.Preference
+ android:icon="@drawable/ic_camera_enabled"
+ android:key="@string/pref_key_phone_feature_camera"
+@@ -44,7 +45,8 @@
+ android:icon="@drawable/ic_link"
+ android:key="@string/pref_key_browser_feature_media_key_system_access"
+ android:title="@string/preference_phone_feature_media_key_system_access"
+- android:summary="@string/preference_option_phone_feature_ask_to_allow"/>
++ android:summary="@string/preference_option_phone_feature_ask_to_allow"
++ app:isPreferenceVisible="false"/>
+
+ <androidx.preference.Preference
+ android:icon="@drawable/ic_autoplay"
+diff --git a/fenix/app/src/main/res/xml/site_permissions_preferences.xml b/fenix/app/src/main/res/xml/site_permissions_preferences.xml
+index 64c90b599b..621f184e68 100644
+--- a/fenix/app/src/main/res/xml/site_permissions_preferences.xml
++++ b/fenix/app/src/main/res/xml/site_permissions_preferences.xml
+@@ -64,6 +64,7 @@
+ android:key="@string/pref_key_browser_feature_media_key_system_access"
+ android:title="@string/preference_phone_feature_media_key_system_access"
+ android:summary="@string/preference_option_phone_feature_ask_to_allow"
++ app:isPreferenceVisible="false"
+ app:allowDividerBelow="true"/>
+
+ <androidx.preference.Preference
+diff --git a/fenix/plugins/fenixdependencies/src/main/java/FenixDependenciesPlugin.kt b/fenix/plugins/fenixdependencies/src/main/java/FenixDependenciesPlugin.kt
+index fff754c099..35599805e6 100644
+--- a/fenix/plugins/fenixdependencies/src/main/java/FenixDependenciesPlugin.kt
++++ b/fenix/plugins/fenixdependencies/src/main/java/FenixDependenciesPlugin.kt
+@@ -70,9 +70,6 @@ object FenixDependencies {
+ const val protobuf_javalite = "com.google.protobuf:protobuf-javalite:${FenixVersions.protobuf}"
+ const val protobuf_compiler = "com.google.protobuf:protoc:${FenixVersions.protobuf}"
+
+- const val adjust = "com.adjust.sdk:adjust-android:${FenixVersions.adjust}"
+- const val installreferrer = "com.android.installreferrer:installreferrer:${FenixVersions.installreferrer}"
+-
+ const val mockk = "io.mockk:mockk:${FenixVersions.mockk}"
+ const val mockk_android = "io.mockk:mockk-android:${FenixVersions.mockk}"
+ const val falcon = "com.jraska:falcon:${FenixVersions.falcon}"
+@@ -97,12 +94,6 @@ object FenixDependencies {
+
+ const val mockwebserver = "com.squareup.okhttp3:mockwebserver:${FenixVersions.mockwebserver}"
+
+- const val google_ads_id = "com.google.android.gms:play-services-ads-identifier:${FenixVersions.google_ads_id_version}"
+-
+- // Required for in-app reviews
+- const val google_play_review = "com.google.android.play:review:${FenixVersions.google_play_review_version}"
+- const val google_play_review_ktx = "com.google.android.play:review-ktx:${FenixVersions.google_play_review_version}"
+-
+ const val junitApi = "org.junit.jupiter:junit-jupiter-api:${FenixVersions.junit}"
+ const val junitParams = "org.junit.jupiter:junit-jupiter-params:${FenixVersions.junit}"
+ const val junitEngine = "org.junit.jupiter:junit-jupiter-engine:${FenixVersions.junit}"