LeOS-Ice-browser/fenix-liberate.patch

986 lines
42 KiB
Diff

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}"