add flag for emergency calling notif changes
This CL gates the changes in ag/24212903 with a flag.
Fixes: 310010827
Bug: 290241725 (orignal bug)
Test: updated 2 tests
Change-Id: I1e4d065173f66df8fcba026d99e7217647f49c69
diff --git a/flags/misc.aconfig b/flags/misc.aconfig
index e9e3169..afe6980 100644
--- a/flags/misc.aconfig
+++ b/flags/misc.aconfig
@@ -16,6 +16,13 @@
}
flag {
+ name: "stop_spamming_emergency_notification"
+ namespace: "telephony"
+ description: "When set, the no wifi emergency calling availability notif will have a do not ask again button"
+ bug: "275225402"
+}
+
+flag {
name: "enable_wps_check_api_flag"
namespace: "telephony"
description: "Enable system api isWpsCallNumber. Its an utility api to check if the dialed number is for Wireless Priority Service call."
diff --git a/src/java/com/android/internal/telephony/CarrierServiceStateTracker.java b/src/java/com/android/internal/telephony/CarrierServiceStateTracker.java
index 1fd7485..6b99b56 100644
--- a/src/java/com/android/internal/telephony/CarrierServiceStateTracker.java
+++ b/src/java/com/android/internal/telephony/CarrierServiceStateTracker.java
@@ -16,6 +16,7 @@
package com.android.internal.telephony;
+import android.annotation.NonNull;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
@@ -42,6 +43,7 @@
import android.telephony.TelephonyManager.NetworkTypeBitMask;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.util.ArrayUtils;
import com.android.internal.telephony.util.NotificationChannelController;
import com.android.telephony.Rlog;
@@ -85,6 +87,7 @@
private long mAllowedNetworkType = -1;
private AllowedNetworkTypesListener mAllowedNetworkTypesListener;
private TelephonyManager mTelephonyManager;
+ @NonNull private final FeatureFlags mFeatureFlags;
/**
* The listener for allowed network types changed
@@ -105,7 +108,9 @@
}
}
- public CarrierServiceStateTracker(Phone phone, ServiceStateTracker sst) {
+ public CarrierServiceStateTracker(Phone phone, ServiceStateTracker sst,
+ @NonNull FeatureFlags featureFlags) {
+ mFeatureFlags = featureFlags;
this.mPhone = phone;
this.mSST = sst;
mTelephonyManager = mPhone.getContext().getSystemService(
@@ -165,11 +170,13 @@
mAllowedNetworkTypesListener = new AllowedNetworkTypesListener();
registerAllowedNetworkTypesListener();
- // register a receiver for notification actions
- mPhone.getContext().registerReceiver(
- mActionReceiver,
- new IntentFilter(ACTION_NEVER_ASK_AGAIN),
- Context.RECEIVER_NOT_EXPORTED);
+ if (mFeatureFlags.stopSpammingEmergencyNotification()) {
+ // register a receiver for notification actions
+ mPhone.getContext().registerReceiver(
+ mActionReceiver,
+ new IntentFilter(ACTION_NEVER_ASK_AGAIN),
+ Context.RECEIVER_NOT_EXPORTED);
+ }
}
/**
@@ -402,7 +409,8 @@
return;
}
- if (shouldSilenceEmrgNetNotif(notificationType, context)) {
+ if (mFeatureFlags.stopSpammingEmergencyNotification()
+ && shouldSilenceEmrgNetNotif(notificationType, context)) {
Rlog.i(LOG_TAG, "sendNotification: silencing NOTIFICATION_EMERGENCY_NETWORK");
return;
}
@@ -681,13 +689,22 @@
com.android.internal.R.string.EmergencyCallWarningTitle);
CharSequence details = res.getText(
com.android.internal.R.string.EmergencyCallWarningSummary);
- return new Notification.Builder(context)
- .setContentTitle(title)
- .setStyle(new Notification.BigTextStyle().bigText(details))
- .setContentText(details)
- .setOngoing(true)
- .setActions(createDoNotShowAgainAction(context))
- .setChannelId(NotificationChannelController.CHANNEL_ID_WFC);
+ if (mFeatureFlags.stopSpammingEmergencyNotification()) {
+ return new Notification.Builder(context)
+ .setContentTitle(title)
+ .setStyle(new Notification.BigTextStyle().bigText(details))
+ .setContentText(details)
+ .setOngoing(true)
+ .setActions(createDoNotShowAgainAction(context))
+ .setChannelId(NotificationChannelController.CHANNEL_ID_WFC);
+ } else {
+ return new Notification.Builder(context)
+ .setContentTitle(title)
+ .setStyle(new Notification.BigTextStyle().bigText(details))
+ .setContentText(details)
+ .setOngoing(true)
+ .setChannelId(NotificationChannelController.CHANNEL_ID_WFC);
+ }
}
/**
diff --git a/src/java/com/android/internal/telephony/GsmCdmaPhone.java b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
index b5cc37b..d912187 100644
--- a/src/java/com/android/internal/telephony/GsmCdmaPhone.java
+++ b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
@@ -354,7 +354,7 @@
mSignalStrengthController = mTelephonyComponentFactory.inject(
SignalStrengthController.class.getName()).makeSignalStrengthController(this);
mSST = mTelephonyComponentFactory.inject(ServiceStateTracker.class.getName())
- .makeServiceStateTracker(this, this.mCi);
+ .makeServiceStateTracker(this, this.mCi, featureFlags);
mEmergencyNumberTracker = mTelephonyComponentFactory
.inject(EmergencyNumberTracker.class.getName()).makeEmergencyNumberTracker(
this, this.mCi);
diff --git a/src/java/com/android/internal/telephony/ServiceStateTracker.java b/src/java/com/android/internal/telephony/ServiceStateTracker.java
index a94875d..01d6e4c 100644
--- a/src/java/com/android/internal/telephony/ServiceStateTracker.java
+++ b/src/java/com/android/internal/telephony/ServiceStateTracker.java
@@ -94,6 +94,7 @@
import com.android.internal.telephony.data.AccessNetworksManager.AccessNetworksManagerCallback;
import com.android.internal.telephony.data.DataNetwork;
import com.android.internal.telephony.data.DataNetworkController.DataNetworkControllerCallback;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.metrics.RadioPowerStateStats;
import com.android.internal.telephony.metrics.ServiceStateStats;
@@ -625,7 +626,8 @@
*/
private AccessNetworksManagerCallback mAccessNetworksManagerCallback = null;
- public ServiceStateTracker(GsmCdmaPhone phone, CommandsInterface ci) {
+ public ServiceStateTracker(GsmCdmaPhone phone, CommandsInterface ci,
+ FeatureFlags featureFlags) {
mNitzState = TelephonyComponentFactory.getInstance()
.inject(NitzStateMachine.class.getName())
.makeNitzStateMachine(phone);
@@ -710,7 +712,7 @@
mCi.setOnRestrictedStateChanged(this, EVENT_RESTRICTED_STATE_CHANGED, null);
updatePhoneType();
- mCSST = new CarrierServiceStateTracker(phone, this);
+ mCSST = new CarrierServiceStateTracker(phone, this, featureFlags);
registerForNetworkAttached(mCSST,
CarrierServiceStateTracker.CARRIER_EVENT_VOICE_REGISTRATION, null);
diff --git a/src/java/com/android/internal/telephony/TelephonyComponentFactory.java b/src/java/com/android/internal/telephony/TelephonyComponentFactory.java
index 6e3e911..0f074a9 100644
--- a/src/java/com/android/internal/telephony/TelephonyComponentFactory.java
+++ b/src/java/com/android/internal/telephony/TelephonyComponentFactory.java
@@ -288,8 +288,9 @@
return new SmsUsageMonitor(context);
}
- public ServiceStateTracker makeServiceStateTracker(GsmCdmaPhone phone, CommandsInterface ci) {
- return new ServiceStateTracker(phone, ci);
+ public ServiceStateTracker makeServiceStateTracker(GsmCdmaPhone phone, CommandsInterface ci,
+ @NonNull FeatureFlags featureFlags) {
+ return new ServiceStateTracker(phone, ci, featureFlags);
}
/**
diff --git a/tests/telephonytests/src/com/android/internal/telephony/CarrierServiceStateTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/CarrierServiceStateTrackerTest.java
index 2302128..7345022 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/CarrierServiceStateTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/CarrierServiceStateTrackerTest.java
@@ -88,7 +88,7 @@
// Capture listener to emulate the carrier config change notification used later
ArgumentCaptor<CarrierConfigManager.CarrierConfigChangeListener> listenerArgumentCaptor =
ArgumentCaptor.forClass(CarrierConfigManager.CarrierConfigChangeListener.class);
- mCarrierSST = new CarrierServiceStateTracker(mPhone, mSST);
+ mCarrierSST = new CarrierServiceStateTracker(mPhone, mSST, mFeatureFlags);
verify(mCarrierConfigManager).registerCarrierConfigChangeListener(any(),
listenerArgumentCaptor.capture());
mCarrierConfigChangeListener = listenerArgumentCaptor.getAllValues().get(0);
@@ -285,6 +285,7 @@
@Test
@SmallTest
public void testEmergencyNotificationBehaviorWhenSilenced() {
+ when(mFeatureFlags.stopSpammingEmergencyNotification()).thenReturn(true);
logd(LOG_TAG + ":testEmergencyNotificationBehaviorWhenSilenced()");
sendMessageOnHandler(CarrierServiceStateTracker.NOTIFICATION_EMERGENCY_NETWORK);
@@ -312,7 +313,8 @@
public void testNotificationMapWhenDeviceIsWatch() {
doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_WATCH);
- CarrierServiceStateTracker tracker = new CarrierServiceStateTracker(mPhone, mSST);
+ CarrierServiceStateTracker tracker = new CarrierServiceStateTracker(mPhone, mSST,
+ mFeatureFlags);
assertTrue(tracker.getNotificationTypeMap().isEmpty());
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/DisplayInfoControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/DisplayInfoControllerTest.java
index 8dd350f..8eb2de6 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/DisplayInfoControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/DisplayInfoControllerTest.java
@@ -91,7 +91,7 @@
ArgumentCaptor<CarrierConfigManager.CarrierConfigChangeListener>
listenerArgumentCaptor = ArgumentCaptor.forClass(
CarrierConfigManager.CarrierConfigChangeListener.class);
- mSst = new ServiceStateTracker(mPhone, mSimulatedCommands);
+ mSst = new ServiceStateTracker(mPhone, mSimulatedCommands, mFeatureFlags);
verify(mCarrierConfigManager, atLeast(2)).registerCarrierConfigChangeListener(any(),
listenerArgumentCaptor.capture());
mCarrierConfigChangeListener = listenerArgumentCaptor.getAllValues().get(1);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
index 378907b..9e067a2 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
@@ -201,7 +201,7 @@
listenerArgumentCaptor =
ArgumentCaptor.forClass(
CarrierConfigManager.CarrierConfigChangeListener.class);
- sst = new ServiceStateTracker(mPhone, mSimulatedCommands);
+ sst = new ServiceStateTracker(mPhone, mSimulatedCommands, mFeatureFlags);
verify(mCarrierConfigManager, atLeast(3)).registerCarrierConfigChangeListener(any(),
listenerArgumentCaptor.capture());
mCarrierConfigChangeListener = listenerArgumentCaptor.getAllValues().get(2);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java b/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java
index 1274aa3..23a7ee6 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java
@@ -578,7 +578,7 @@
doReturn(mTelephonyComponentFactory).when(mTelephonyComponentFactory).inject(anyString());
doReturn(mSST).when(mTelephonyComponentFactory)
.makeServiceStateTracker(nullable(GsmCdmaPhone.class),
- nullable(CommandsInterface.class));
+ nullable(CommandsInterface.class), nullable(FeatureFlags.class));
doReturn(mEmergencyNumberTracker).when(mTelephonyComponentFactory)
.makeEmergencyNumberTracker(nullable(Phone.class),
nullable(CommandsInterface.class));