998 lines
43 KiB
Diff
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}"
|