Loading src/java/com/android/internal/telephony/Phone.java +5 −4 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.os.SystemClock; import android.os.SystemProperties; import android.os.WorkSource; import android.preference.PreferenceManager; import android.provider.DeviceConfig; import android.sysprop.TelephonyProperties; import android.telecom.VideoProfile; import android.telephony.AccessNetworkConstants; Loading Loading @@ -620,8 +621,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { // Initialize SMS stats mSmsStats = new SmsStats(this); mNewDataStackEnabled = false; /*(Boolean.parseBoolean(DeviceConfig.getProperty( DeviceConfig.NAMESPACE_TELEPHONY,"new_telephony_data_enabled"));*/ mNewDataStackEnabled = Boolean.parseBoolean(DeviceConfig.getProperty( DeviceConfig.NAMESPACE_TELEPHONY, "enable_new_data_stack")); if (getPhoneType() == PhoneConstants.PHONE_TYPE_IMS) { return; Loading Loading @@ -5014,8 +5015,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { /** * @return {@code true} if using the new telephony data stack. See go/atdr for the design. */ // TODO: Temp code. Use cl/399526916 for future canary process. After rolling out to 100% // dogfooders, the code below should be completely removed. // TODO: Temp code. Use cl/421423121 for future canary process. After rolling out to 100% // dogfooders, the code below should be completely removed before T AOSP release. public boolean isUsingNewDataStack() { return mNewDataStackEnabled; } Loading tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java +20 −15 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ import android.app.UiModeManager; import android.app.usage.UsageStatsManager; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; Loading Loading @@ -74,7 +73,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.preference.PreferenceManager; import android.provider.Settings; import android.provider.Telephony.ServiceStateTable; import android.telecom.TelecomManager; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; Loading Loading @@ -117,10 +115,11 @@ public class ContextFixture implements TestFixture<Context> { private static final String TAG = "ContextFixture"; public static final String PERMISSION_ENABLE_ALL = "android.permission.STUB_PERMISSION"; public class FakeContentProvider extends MockContentProvider { public static class FakeContentProvider extends MockContentProvider { private String[] mColumns = {"name", "value"}; private HashMap<String, String> mKeyValuePairs = new HashMap<String, String>(); private int mNumKeyValuePairs = 0; private HashMap<String, String> mFlags = new HashMap<>(); @Override public int delete(Uri uri, String selection, String[] selectionArgs) { Loading Loading @@ -156,17 +155,17 @@ public class ContextFixture implements TestFixture<Context> { @Override public Bundle call(String method, String request, Bundle args) { logd("call called, mNumKeyValuePairs: " + mNumKeyValuePairs + " method: " + method + " request: " + request); " request: " + request + ", args=" + args); Bundle bundle = new Bundle(); switch(method) { case Settings.CALL_METHOD_GET_GLOBAL: case Settings.CALL_METHOD_GET_SECURE: case Settings.CALL_METHOD_GET_SYSTEM: if (mKeyValuePairs.containsKey(request)) { Bundle b = new Bundle(1); b.putCharSequence("value", mKeyValuePairs.get(request)); bundle.putCharSequence("value", mKeyValuePairs.get(request)); logd("returning value pair: " + mKeyValuePairs.get(request) + " for " + request); return b; return bundle; } break; case Settings.CALL_METHOD_PUT_GLOBAL: Loading @@ -176,6 +175,20 @@ public class ContextFixture implements TestFixture<Context> { mKeyValuePairs.put(request, (String)args.get("value")); mNumKeyValuePairs++; break; case Settings.CALL_METHOD_LIST_CONFIG: logd("LIST_config: " + mFlags); Bundle result = new Bundle(); result.putSerializable(Settings.NameValueTable.VALUE, mFlags); return result; case Settings.CALL_METHOD_SET_ALL_CONFIG: mFlags = (args != null) ? (HashMap) args.getSerializable(Settings.CALL_METHOD_FLAGS_KEY) : new HashMap<>(); bundle.putInt(Settings.KEY_CONFIG_SET_ALL_RETURN, Settings.SET_ALL_RESULT_SUCCESS); return bundle; default: logd("Unsupported method " + method); } return null; } Loading Loading @@ -704,9 +717,6 @@ public class ContextFixture implements TestFixture<Context> { private final KeyguardManager mKeyguardManager = mock(KeyguardManager.class); private final VcnManager mVcnManager = mock(VcnManager.class); private final NetworkPolicyManager mNetworkPolicyManager = mock(NetworkPolicyManager.class); private final ContentProvider mContentProvider = spy(new FakeContentProvider()); private final Configuration mConfiguration = new Configuration(); private final DisplayMetrics mDisplayMetrics = new DisplayMetrics(); private final SharedPreferences mSharedPreferences = PreferenceManager Loading Loading @@ -765,11 +775,6 @@ public class ContextFixture implements TestFixture<Context> { mDisplayMetrics.density = 2.25f; doReturn(mDisplayMetrics).when(mResources).getDisplayMetrics(); mContentResolver.addProvider(Settings.AUTHORITY, mContentProvider); // Settings caches the provider after first get/set call, this is needed to make sure // Settings is using mContentProvider as the cached provider across all tests. Settings.Global.getInt(mContentResolver, Settings.Global.AIRPLANE_MODE_ON, 0); mContentResolver.addProvider(ServiceStateTable.AUTHORITY, mContentProvider); mPermissionTable.add(PERMISSION_ENABLE_ALL); } Loading tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +17 −2 Original line number Diff line number Diff line Loading @@ -27,12 +27,14 @@ import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.spy; import android.app.ActivityManager; import android.app.AppOpsManager; import android.app.IActivityManager; import android.app.KeyguardManager; import android.app.usage.NetworkStatsManager; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.Context; import android.content.IIntentSender; Loading Loading @@ -63,6 +65,7 @@ import android.permission.LegacyPermissionManager; import android.provider.BlockedNumberContract; import android.provider.DeviceConfig; import android.provider.Settings; import android.provider.Telephony; import android.telephony.AccessNetworkConstants; import android.telephony.CarrierConfigManager; import android.telephony.CellIdentity; Loading Loading @@ -376,6 +379,7 @@ public abstract class TelephonyTest { protected ContextFixture mContextFixture; protected Context mContext; protected FakeBlockedNumberContentProvider mFakeBlockedNumberContentProvider; private final ContentProvider mContentProvider = spy(new ContextFixture.FakeContentProvider()); private Object mLock = new Object(); private boolean mReady; protected HashMap<String, IBinder> mServiceManagerMockedServices = new HashMap<>(); Loading Loading @@ -495,6 +499,14 @@ public abstract class TelephonyTest { mFakeBlockedNumberContentProvider = new FakeBlockedNumberContentProvider(); ((MockContentResolver)mContext.getContentResolver()).addProvider( BlockedNumberContract.AUTHORITY, mFakeBlockedNumberContentProvider); ((MockContentResolver) mContext.getContentResolver()).addProvider( Settings.AUTHORITY, mContentProvider); ((MockContentResolver) mContext.getContentResolver()).addProvider( Telephony.ServiceStateTable.AUTHORITY, mContentProvider); replaceContentProvider(mContentProvider); Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0); mPhone.mCi = mSimulatedCommands; mCT.mCi = mSimulatedCommands; doReturn(mUiccCard).when(mPhone).getUiccCard(); Loading Loading @@ -948,6 +960,10 @@ public abstract class TelephonyTest { // restrictions should be enabled; this results in a NPE when DeviceConfig uses // Activity.currentActivity.getContentResolver as the resolver for Settings.Config.getString // since the IContentProvider in the NameValueCache's provider holder is null. replaceContentProvider(new FakeSettingsConfigProvider()); } private void replaceContentProvider(ContentProvider contentProvider) throws Exception { Class c = Class.forName("android.provider.Settings$Config"); Field field = c.getDeclaredField("sNameValueCache"); field.setAccessible(true); Loading @@ -958,10 +974,9 @@ public abstract class TelephonyTest { field.setAccessible(true); Object providerHolder = field.get(cache); FakeSettingsConfigProvider fakeSettingsProvider = new FakeSettingsConfigProvider(); field = MockContentProvider.class.getDeclaredField("mIContentProvider"); field.setAccessible(true); Object iContentProvider = field.get(fakeSettingsProvider); Object iContentProvider = field.get(contentProvider); replaceInstance(Class.forName("android.provider.Settings$ContentProviderHolder"), "mContentProvider", providerHolder, iContentProvider); Loading Loading
src/java/com/android/internal/telephony/Phone.java +5 −4 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.os.SystemClock; import android.os.SystemProperties; import android.os.WorkSource; import android.preference.PreferenceManager; import android.provider.DeviceConfig; import android.sysprop.TelephonyProperties; import android.telecom.VideoProfile; import android.telephony.AccessNetworkConstants; Loading Loading @@ -620,8 +621,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { // Initialize SMS stats mSmsStats = new SmsStats(this); mNewDataStackEnabled = false; /*(Boolean.parseBoolean(DeviceConfig.getProperty( DeviceConfig.NAMESPACE_TELEPHONY,"new_telephony_data_enabled"));*/ mNewDataStackEnabled = Boolean.parseBoolean(DeviceConfig.getProperty( DeviceConfig.NAMESPACE_TELEPHONY, "enable_new_data_stack")); if (getPhoneType() == PhoneConstants.PHONE_TYPE_IMS) { return; Loading Loading @@ -5014,8 +5015,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { /** * @return {@code true} if using the new telephony data stack. See go/atdr for the design. */ // TODO: Temp code. Use cl/399526916 for future canary process. After rolling out to 100% // dogfooders, the code below should be completely removed. // TODO: Temp code. Use cl/421423121 for future canary process. After rolling out to 100% // dogfooders, the code below should be completely removed before T AOSP release. public boolean isUsingNewDataStack() { return mNewDataStackEnabled; } Loading
tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java +20 −15 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ import android.app.UiModeManager; import android.app.usage.UsageStatsManager; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; Loading Loading @@ -74,7 +73,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.preference.PreferenceManager; import android.provider.Settings; import android.provider.Telephony.ServiceStateTable; import android.telecom.TelecomManager; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; Loading Loading @@ -117,10 +115,11 @@ public class ContextFixture implements TestFixture<Context> { private static final String TAG = "ContextFixture"; public static final String PERMISSION_ENABLE_ALL = "android.permission.STUB_PERMISSION"; public class FakeContentProvider extends MockContentProvider { public static class FakeContentProvider extends MockContentProvider { private String[] mColumns = {"name", "value"}; private HashMap<String, String> mKeyValuePairs = new HashMap<String, String>(); private int mNumKeyValuePairs = 0; private HashMap<String, String> mFlags = new HashMap<>(); @Override public int delete(Uri uri, String selection, String[] selectionArgs) { Loading Loading @@ -156,17 +155,17 @@ public class ContextFixture implements TestFixture<Context> { @Override public Bundle call(String method, String request, Bundle args) { logd("call called, mNumKeyValuePairs: " + mNumKeyValuePairs + " method: " + method + " request: " + request); " request: " + request + ", args=" + args); Bundle bundle = new Bundle(); switch(method) { case Settings.CALL_METHOD_GET_GLOBAL: case Settings.CALL_METHOD_GET_SECURE: case Settings.CALL_METHOD_GET_SYSTEM: if (mKeyValuePairs.containsKey(request)) { Bundle b = new Bundle(1); b.putCharSequence("value", mKeyValuePairs.get(request)); bundle.putCharSequence("value", mKeyValuePairs.get(request)); logd("returning value pair: " + mKeyValuePairs.get(request) + " for " + request); return b; return bundle; } break; case Settings.CALL_METHOD_PUT_GLOBAL: Loading @@ -176,6 +175,20 @@ public class ContextFixture implements TestFixture<Context> { mKeyValuePairs.put(request, (String)args.get("value")); mNumKeyValuePairs++; break; case Settings.CALL_METHOD_LIST_CONFIG: logd("LIST_config: " + mFlags); Bundle result = new Bundle(); result.putSerializable(Settings.NameValueTable.VALUE, mFlags); return result; case Settings.CALL_METHOD_SET_ALL_CONFIG: mFlags = (args != null) ? (HashMap) args.getSerializable(Settings.CALL_METHOD_FLAGS_KEY) : new HashMap<>(); bundle.putInt(Settings.KEY_CONFIG_SET_ALL_RETURN, Settings.SET_ALL_RESULT_SUCCESS); return bundle; default: logd("Unsupported method " + method); } return null; } Loading Loading @@ -704,9 +717,6 @@ public class ContextFixture implements TestFixture<Context> { private final KeyguardManager mKeyguardManager = mock(KeyguardManager.class); private final VcnManager mVcnManager = mock(VcnManager.class); private final NetworkPolicyManager mNetworkPolicyManager = mock(NetworkPolicyManager.class); private final ContentProvider mContentProvider = spy(new FakeContentProvider()); private final Configuration mConfiguration = new Configuration(); private final DisplayMetrics mDisplayMetrics = new DisplayMetrics(); private final SharedPreferences mSharedPreferences = PreferenceManager Loading Loading @@ -765,11 +775,6 @@ public class ContextFixture implements TestFixture<Context> { mDisplayMetrics.density = 2.25f; doReturn(mDisplayMetrics).when(mResources).getDisplayMetrics(); mContentResolver.addProvider(Settings.AUTHORITY, mContentProvider); // Settings caches the provider after first get/set call, this is needed to make sure // Settings is using mContentProvider as the cached provider across all tests. Settings.Global.getInt(mContentResolver, Settings.Global.AIRPLANE_MODE_ON, 0); mContentResolver.addProvider(ServiceStateTable.AUTHORITY, mContentProvider); mPermissionTable.add(PERMISSION_ENABLE_ALL); } Loading
tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +17 −2 Original line number Diff line number Diff line Loading @@ -27,12 +27,14 @@ import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.spy; import android.app.ActivityManager; import android.app.AppOpsManager; import android.app.IActivityManager; import android.app.KeyguardManager; import android.app.usage.NetworkStatsManager; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.Context; import android.content.IIntentSender; Loading Loading @@ -63,6 +65,7 @@ import android.permission.LegacyPermissionManager; import android.provider.BlockedNumberContract; import android.provider.DeviceConfig; import android.provider.Settings; import android.provider.Telephony; import android.telephony.AccessNetworkConstants; import android.telephony.CarrierConfigManager; import android.telephony.CellIdentity; Loading Loading @@ -376,6 +379,7 @@ public abstract class TelephonyTest { protected ContextFixture mContextFixture; protected Context mContext; protected FakeBlockedNumberContentProvider mFakeBlockedNumberContentProvider; private final ContentProvider mContentProvider = spy(new ContextFixture.FakeContentProvider()); private Object mLock = new Object(); private boolean mReady; protected HashMap<String, IBinder> mServiceManagerMockedServices = new HashMap<>(); Loading Loading @@ -495,6 +499,14 @@ public abstract class TelephonyTest { mFakeBlockedNumberContentProvider = new FakeBlockedNumberContentProvider(); ((MockContentResolver)mContext.getContentResolver()).addProvider( BlockedNumberContract.AUTHORITY, mFakeBlockedNumberContentProvider); ((MockContentResolver) mContext.getContentResolver()).addProvider( Settings.AUTHORITY, mContentProvider); ((MockContentResolver) mContext.getContentResolver()).addProvider( Telephony.ServiceStateTable.AUTHORITY, mContentProvider); replaceContentProvider(mContentProvider); Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0); mPhone.mCi = mSimulatedCommands; mCT.mCi = mSimulatedCommands; doReturn(mUiccCard).when(mPhone).getUiccCard(); Loading Loading @@ -948,6 +960,10 @@ public abstract class TelephonyTest { // restrictions should be enabled; this results in a NPE when DeviceConfig uses // Activity.currentActivity.getContentResolver as the resolver for Settings.Config.getString // since the IContentProvider in the NameValueCache's provider holder is null. replaceContentProvider(new FakeSettingsConfigProvider()); } private void replaceContentProvider(ContentProvider contentProvider) throws Exception { Class c = Class.forName("android.provider.Settings$Config"); Field field = c.getDeclaredField("sNameValueCache"); field.setAccessible(true); Loading @@ -958,10 +974,9 @@ public abstract class TelephonyTest { field.setAccessible(true); Object providerHolder = field.get(cache); FakeSettingsConfigProvider fakeSettingsProvider = new FakeSettingsConfigProvider(); field = MockContentProvider.class.getDeclaredField("mIContentProvider"); field.setAccessible(true); Object iContentProvider = field.get(fakeSettingsProvider); Object iContentProvider = field.get(contentProvider); replaceInstance(Class.forName("android.provider.Settings$ContentProviderHolder"), "mContentProvider", providerHolder, iContentProvider); Loading