Merge "Refacotr mobile data observer for repository" into main
diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java
index 7bc61a4..324b4b7 100644
--- a/src/com/android/settings/network/MobileNetworkRepository.java
+++ b/src/com/android/settings/network/MobileNetworkRepository.java
@@ -91,7 +91,6 @@
private AirplaneModeObserver mAirplaneModeObserver;
private DataRoamingObserver mDataRoamingObserver;
private MetricsFeatureProvider mMetricsFeatureProvider;
- private Map<Integer, MobileDataContentObserver> mDataContentObserverMap = new HashMap<>();
private int mPhysicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
private int mLogicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
private int mCardState = UiccSlotInfo.CARD_STATE_INFO_ABSENT;
@@ -209,6 +208,9 @@
*/
public void addRegister(LifecycleOwner lifecycleOwner,
MobileNetworkCallback mobileNetworkCallback, int subId) {
+ if (DEBUG) {
+ Log.d(TAG, "addRegister by SUB ID " + subId);
+ }
if (sCallbacks.isEmpty()) {
mSubscriptionManager.addOnSubscriptionsChangedListener(mContext.getMainExecutor(),
this);
@@ -222,7 +224,6 @@
observeAllUiccInfo(lifecycleOwner);
observeAllMobileNetworkInfo(lifecycleOwner);
if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
- addRegisterBySubId(subId);
createTelephonyManagerBySubId(subId);
mDataRoamingObserver.register(mContext, subId);
}
@@ -231,19 +232,6 @@
sendAvailableSubInfoCache(mobileNetworkCallback);
}
- public void addRegisterBySubId(int subId) {
- MobileDataContentObserver dataContentObserver = new MobileDataContentObserver(
- new Handler(Looper.getMainLooper()));
- dataContentObserver.setOnMobileDataChangedListener(() -> {
- sExecutor.execute(() -> {
- insertMobileNetworkInfo(mContext, subId,
- getTelephonyManagerBySubId(mContext, subId));
- });
- });
- dataContentObserver.register(mContext, subId);
- mDataContentObserverMap.put(subId, dataContentObserver);
- }
-
private void createTelephonyManagerBySubId(int subId) {
if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID
|| mTelephonyCallbackMap.containsKey(subId)) {
@@ -253,7 +241,7 @@
return;
}
PhoneCallStateTelephonyCallback
- telephonyCallback = new PhoneCallStateTelephonyCallback();
+ telephonyCallback = new PhoneCallStateTelephonyCallback(subId);
TelephonyManager telephonyManager = mContext.getSystemService(
TelephonyManager.class).createForSubscriptionId(subId);
telephonyManager.registerTelephonyCallback(mContext.getMainExecutor(),
@@ -292,10 +280,6 @@
}
}
}
- if (mDataContentObserverMap.containsKey(subId)) {
- mDataContentObserverMap.get(subId).unRegister(mContext);
- mDataContentObserverMap.remove(subId);
- }
}
public void removeRegister(MobileNetworkCallback mobileNetworkCallback) {
@@ -304,10 +288,6 @@
mSubscriptionManager.removeOnSubscriptionsChangedListener(this);
mAirplaneModeObserver.unRegister(mContext);
mDataRoamingObserver.unRegister(mContext);
- mDataContentObserverMap.forEach((id, observer) -> {
- observer.unRegister(mContext);
- });
- mDataContentObserverMap.clear();
mTelephonyManagerMap.forEach((id, manager) -> {
TelephonyCallback callback = mTelephonyCallbackMap.get(id);
@@ -768,7 +748,14 @@
}
private class PhoneCallStateTelephonyCallback extends TelephonyCallback implements
- TelephonyCallback.CallStateListener {
+ TelephonyCallback.CallStateListener,
+ TelephonyCallback.UserMobileDataStateListener {
+
+ private int mSubId;
+
+ public PhoneCallStateTelephonyCallback(int subId) {
+ mSubId = subId;
+ }
@Override
public void onCallStateChanged(int state) {
@@ -776,6 +763,15 @@
callback.onCallStateChanged(state);
}
}
+
+ @Override
+ public void onUserMobileDataStateChanged(boolean enabled) {
+ Log.d(TAG, "onUserMobileDataStateChanged enabled " + enabled + " on SUB " + mSubId);
+ sExecutor.execute(() -> {
+ insertMobileNetworkInfo(mContext, mSubId,
+ getTelephonyManagerBySubId(mContext, mSubId));
+ });
+ }
}
/**
diff --git a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java
index 8426382..84cd874 100644
--- a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java
+++ b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java
@@ -96,9 +96,6 @@
mMobileNetworkRepository.addRegister(mLifecycleOwner, this,
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mMobileNetworkRepository.updateEntity();
- // Can not get default subId from database until get the callback, add register by subId
- // later.
- mMobileNetworkRepository.addRegisterBySubId(getDefaultSubscriptionId());
mDataSubscriptionChangedReceiver.registerReceiver();
}