Revert "[Settings] Remove dependency of TelephonyIntents"
This reverts commit 6a6b416c3d
.
Reason for revert: b/148838390
Change-Id: I9be2c370c6923e9d7293e4eff5306bc54d49ade2
This commit is contained in:
@@ -17,18 +17,17 @@
|
|||||||
package com.android.settings.homepage.contextualcards.conditional;
|
package com.android.settings.homepage.contextualcards.conditional;
|
||||||
|
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.telephony.PhoneStateListener;
|
|
||||||
import android.telephony.PreciseDataConnectionState;
|
|
||||||
import android.telephony.SubscriptionManager;
|
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
|
import com.android.internal.telephony.TelephonyIntents;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.Settings;
|
import com.android.settings.Settings;
|
||||||
import com.android.settings.homepage.contextualcards.ContextualCard;
|
import com.android.settings.homepage.contextualcards.ContextualCard;
|
||||||
import com.android.settings.network.GlobalSettingsChangeListener;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@@ -36,35 +35,22 @@ public class CellularDataConditionController implements ConditionalCardControlle
|
|||||||
|
|
||||||
static final int ID = Objects.hash("CellularDataConditionController");
|
static final int ID = Objects.hash("CellularDataConditionController");
|
||||||
|
|
||||||
|
private static final IntentFilter DATA_CONNECTION_FILTER =
|
||||||
|
new IntentFilter(TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
|
||||||
|
|
||||||
private final Context mAppContext;
|
private final Context mAppContext;
|
||||||
private final ConditionManager mConditionManager;
|
private final ConditionManager mConditionManager;
|
||||||
private final GlobalSettingsChangeListener mDefaultDataSubscriptionIdListener;
|
private final Receiver mReceiver;
|
||||||
|
private final TelephonyManager mTelephonyManager;
|
||||||
private final ConnectivityManager mConnectivityManager;
|
private final ConnectivityManager mConnectivityManager;
|
||||||
|
|
||||||
private int mSubId;
|
|
||||||
private TelephonyManager mTelephonyManager;
|
|
||||||
private boolean mIsListeningConnectionChange;
|
|
||||||
|
|
||||||
public CellularDataConditionController(Context appContext, ConditionManager conditionManager) {
|
public CellularDataConditionController(Context appContext, ConditionManager conditionManager) {
|
||||||
mAppContext = appContext;
|
mAppContext = appContext;
|
||||||
mConditionManager = conditionManager;
|
mConditionManager = conditionManager;
|
||||||
mSubId = getDefaultDataSubscriptionId(appContext);
|
mReceiver = new Receiver();
|
||||||
mTelephonyManager = getTelephonyManager(appContext, mSubId);
|
|
||||||
mDefaultDataSubscriptionIdListener = new GlobalSettingsChangeListener(appContext,
|
|
||||||
android.provider.Settings.Global.MULTI_SIM_DATA_CALL_SUBSCRIPTION) {
|
|
||||||
public void onChanged(String field) {
|
|
||||||
final int subId = getDefaultDataSubscriptionId(mAppContext);
|
|
||||||
if (subId == mSubId) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mSubId = subId;
|
|
||||||
if (mIsListeningConnectionChange) {
|
|
||||||
restartPhoneStateListener(mAppContext, subId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
mConnectivityManager = appContext.getSystemService(
|
mConnectivityManager = appContext.getSystemService(
|
||||||
ConnectivityManager.class);
|
ConnectivityManager.class);
|
||||||
|
mTelephonyManager = appContext.getSystemService(TelephonyManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -109,50 +95,21 @@ public class CellularDataConditionController implements ConditionalCardControlle
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startMonitoringStateChange() {
|
public void startMonitoringStateChange() {
|
||||||
restartPhoneStateListener(mAppContext, mSubId);
|
mAppContext.registerReceiver(mReceiver, DATA_CONNECTION_FILTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stopMonitoringStateChange() {
|
public void stopMonitoringStateChange() {
|
||||||
stopPhoneStateListener();
|
mAppContext.unregisterReceiver(mReceiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getDefaultDataSubscriptionId(Context context) {
|
public class Receiver extends BroadcastReceiver {
|
||||||
final SubscriptionManager subscriptionManager =
|
|
||||||
context.getSystemService(SubscriptionManager.class);
|
|
||||||
return subscriptionManager.getDefaultDataSubscriptionId();
|
|
||||||
}
|
|
||||||
|
|
||||||
private TelephonyManager getTelephonyManager(Context context, int subId) {
|
|
||||||
final TelephonyManager telephonyManager =
|
|
||||||
context.getSystemService(TelephonyManager.class);
|
|
||||||
return telephonyManager.createForSubscriptionId(subId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onPreciseDataConnectionStateChanged(
|
public void onReceive(Context context, Intent intent) {
|
||||||
PreciseDataConnectionState dataConnectionState) {
|
if (TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED.equals(
|
||||||
|
intent.getAction())) {
|
||||||
mConditionManager.onConditionChanged();
|
mConditionManager.onConditionChanged();
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
private void stopPhoneStateListener() {
|
|
||||||
mIsListeningConnectionChange = false;
|
|
||||||
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// restart monitoring when subscription has been changed
|
|
||||||
private void restartPhoneStateListener(Context context, int subId) {
|
|
||||||
stopPhoneStateListener();
|
|
||||||
mIsListeningConnectionChange = true;
|
|
||||||
|
|
||||||
// switch mTelephonyManager only when subscription been updated to valid ones
|
|
||||||
if (SubscriptionManager.isValidSubscriptionId(subId)) {
|
|
||||||
mTelephonyManager = getTelephonyManager(context, subId);
|
|
||||||
}
|
|
||||||
|
|
||||||
mTelephonyManager.listen(mPhoneStateListener,
|
|
||||||
PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -33,19 +33,14 @@ import static org.mockito.Mockito.never;
|
|||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.robolectric.Shadows.shadowOf;
|
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.telephony.SubscriptionManager;
|
|
||||||
import android.telephony.TelephonyManager;
|
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
import android.util.FeatureFlagUtils;
|
import android.util.FeatureFlagUtils;
|
||||||
|
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
|
||||||
|
|
||||||
import com.android.settings.core.FeatureFlags;
|
import com.android.settings.core.FeatureFlags;
|
||||||
import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardController;
|
import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardController;
|
||||||
import com.android.settings.homepage.contextualcards.conditional.ConditionFooterContextualCard;
|
import com.android.settings.homepage.contextualcards.conditional.ConditionFooterContextualCard;
|
||||||
@@ -63,9 +58,8 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.shadows.ShadowSubscriptionManager;
|
|
||||||
import org.robolectric.shadows.ShadowTelephonyManager;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -73,9 +67,8 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class ContextualCardManagerTest {
|
public class ContextualCardManagerTest {
|
||||||
private static final int SUB_ID = 2;
|
|
||||||
|
|
||||||
private static final String TEST_SLICE_URI = "context://test/test";
|
private static final String TEST_SLICE_URI = "context://test/test";
|
||||||
private static final String TEST_SLICE_NAME = "test_name";
|
private static final String TEST_SLICE_NAME = "test_name";
|
||||||
@@ -86,8 +79,6 @@ public class ContextualCardManagerTest {
|
|||||||
Lifecycle mLifecycle;
|
Lifecycle mLifecycle;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private ShadowSubscriptionManager mShadowSubscriptionManager;
|
|
||||||
private ShadowTelephonyManager mShadowTelephonyManager;
|
|
||||||
private ContextualCardManager mManager;
|
private ContextualCardManager mManager;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -95,16 +86,6 @@ public class ContextualCardManagerTest {
|
|||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONDITIONAL_CARDS, true);
|
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONDITIONAL_CARDS, true);
|
||||||
|
|
||||||
mShadowSubscriptionManager = shadowOf(
|
|
||||||
mContext.getSystemService(SubscriptionManager.class));
|
|
||||||
mShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID);
|
|
||||||
|
|
||||||
final TelephonyManager telephonyManager =
|
|
||||||
mContext.getSystemService(TelephonyManager.class);
|
|
||||||
mShadowTelephonyManager = shadowOf(telephonyManager);
|
|
||||||
mShadowTelephonyManager.setTelephonyManagerForSubscriptionId(SUB_ID, telephonyManager);
|
|
||||||
|
|
||||||
mManager = new ContextualCardManager(mContext, mLifecycle, null /* bundle */);
|
mManager = new ContextualCardManager(mContext, mLifecycle, null /* bundle */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -18,13 +18,7 @@ package com.android.settings.homepage.contextualcards;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
import static org.robolectric.Shadows.shadowOf;
|
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.telephony.SubscriptionManager;
|
|
||||||
import android.telephony.TelephonyManager;
|
|
||||||
|
|
||||||
import androidx.lifecycle.LifecycleOwner;
|
import androidx.lifecycle.LifecycleOwner;
|
||||||
|
|
||||||
@@ -33,17 +27,11 @@ import com.android.settingslib.core.lifecycle.Lifecycle;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.shadow.api.Shadow;
|
|
||||||
import org.robolectric.shadows.ShadowSubscriptionManager;
|
|
||||||
import org.robolectric.shadows.ShadowTelephonyManager;
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class ControllerRendererPoolTest {
|
public class ControllerRendererPoolTest {
|
||||||
private static final int SUB_ID = 1;
|
|
||||||
|
|
||||||
private static final int UNSUPPORTED_CARD_TYPE = -99999;
|
private static final int UNSUPPORTED_CARD_TYPE = -99999;
|
||||||
private static final int UNSUPPORTED_VIEW_TYPE = -99999;
|
private static final int UNSUPPORTED_VIEW_TYPE = -99999;
|
||||||
@@ -53,27 +41,12 @@ public class ControllerRendererPoolTest {
|
|||||||
private Lifecycle mLifecycle;
|
private Lifecycle mLifecycle;
|
||||||
private LifecycleOwner mLifecycleOwner;
|
private LifecycleOwner mLifecycleOwner;
|
||||||
|
|
||||||
@Mock
|
|
||||||
private TelephonyManager mTelephonyMgr;
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
|
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mLifecycleOwner = () -> mLifecycle;
|
mLifecycleOwner = () -> mLifecycle;
|
||||||
mLifecycle = new Lifecycle(mLifecycleOwner);
|
mLifecycle = new Lifecycle(mLifecycleOwner);
|
||||||
|
|
||||||
// SubscriptionManager and TelephonyManager for CellularDataConditionController
|
|
||||||
ShadowSubscriptionManager shadowSubscriptionMgr = shadowOf(
|
|
||||||
mContext.getSystemService(SubscriptionManager.class));
|
|
||||||
shadowSubscriptionMgr.setDefaultDataSubscriptionId(SUB_ID);
|
|
||||||
|
|
||||||
ShadowTelephonyManager shadowTelephonyMgr = Shadow.extract(
|
|
||||||
mContext.getSystemService(TelephonyManager.class));
|
|
||||||
shadowTelephonyMgr.setTelephonyManagerForSubscriptionId(SUB_ID, mTelephonyMgr);
|
|
||||||
when(mTelephonyMgr.createForSubscriptionId(anyInt())).thenReturn(mTelephonyMgr);
|
|
||||||
|
|
||||||
mPool = new ControllerRendererPool();
|
mPool = new ControllerRendererPool();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user