diff options
| author | android-build-team Robot <android-build-team-robot@google.com> | 2019-07-13 23:16:22 +0000 |
|---|---|---|
| committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-07-13 23:16:22 +0000 |
| commit | 8c919eb1baf01724d5dc127ca0047b301575afac (patch) | |
| tree | b6428167ddc0ab2237f6a1d7884bcc5ab962c183 | |
| parent | e905cc9b010e7bee3c5eb98d5eaf0cd0bc3ad9ea (diff) | |
| parent | 30f0c5d6ce42957fe417b5d737a7f7f1f7d01895 (diff) | |
| download | platform_packages_services_AlternativeNetworkAccess-android10-c2f2-release.tar.gz platform_packages_services_AlternativeNetworkAccess-android10-c2f2-release.tar.bz2 platform_packages_services_AlternativeNetworkAccess-android10-c2f2-release.zip | |
Snap for 5726890 from 30f0c5d6ce42957fe417b5d737a7f7f1f7d01895 to qt-c2f2-releaseandroid-10.0.0_r9android-10.0.0_r8android-10.0.0_r7android-10.0.0_r14android-10.0.0_r13android-10.0.0_r12android10-c2f2-s2-releaseandroid10-c2f2-s1-releaseandroid10-c2f2-release
Change-Id: Id6d2c3bfaa05c6f230258a5827576c4425a1adc8
| -rw-r--r-- | AndroidManifest.xml | 8 | ||||
| -rw-r--r-- | src/com/android/ons/ONSAutoBoot.java | 3 | ||||
| -rw-r--r-- | src/com/android/ons/ONSProfileSelector.java | 68 | ||||
| -rw-r--r-- | src/com/android/ons/OpportunisticNetworkService.java | 3 | ||||
| -rw-r--r-- | tests/src/com/android/ons/ONSProfileSelectorTest.java | 199 | ||||
| -rw-r--r-- | tests/src/com/android/ons/OpportunisticNetworkServiceTest.java | 4 |
6 files changed, 211 insertions, 74 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 35de8c1..92fd67d 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -26,15 +26,17 @@ android:process="com.android.phone" android:persistent="true"> - <receiver android:name="ONSAutoBoot"> + <receiver android:name="ONSAutoBoot" + android:directBootAware="true"> <intent-filter> - <action android:name="android.intent.action.BOOT_COMPLETED" /> + <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /> </intent-filter> </receiver> <service android:name=".OpportunisticNetworkService" android:enabled="true" - android:exported="true"/> + android:exported="true" + android:directBootAware="true"/> </application> </manifest> diff --git a/src/com/android/ons/ONSAutoBoot.java b/src/com/android/ons/ONSAutoBoot.java index 7d8ef75..77c5c8f 100644 --- a/src/com/android/ons/ONSAutoBoot.java +++ b/src/com/android/ons/ONSAutoBoot.java @@ -27,7 +27,8 @@ public class ONSAutoBoot extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { + Log.d(TAG, "Received " + intent.getAction()); + if (Intent.ACTION_LOCKED_BOOT_COMPLETED.equals(intent.getAction())) { ComponentName comp = new ComponentName(context.getPackageName(), OpportunisticNetworkService.class.getName()); ComponentName service = context.startService(new Intent().setComponent(comp)); diff --git a/src/com/android/ons/ONSProfileSelector.java b/src/com/android/ons/ONSProfileSelector.java index 1922514..6a156d8 100644 --- a/src/com/android/ons/ONSProfileSelector.java +++ b/src/com/android/ons/ONSProfileSelector.java @@ -117,7 +117,9 @@ public class ONSProfileSelector { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { sendUpdateNetworksCallbackHelper(mNetworkScanCallback, TelephonyManager.UPDATE_AVAILABLE_NETWORKS_INVALID_ARGUMENTS); - mNetworkScanCallback = null; + synchronized (mLock) { + mNetworkScanCallback = null; + } return; } @@ -129,14 +131,16 @@ public class ONSProfileSelector { @Override public void onError(int error) { log("Network scan failed with error " + error); - if (mIsEnabled && mAvailableNetworkInfos != null + synchronized (mLock) { + if (mIsEnabled && mAvailableNetworkInfos != null && mAvailableNetworkInfos.size() > 0) { - handleNetworkScanResult(mAvailableNetworkInfos.get(0).getSubId()); - } else { - if (mNetworkScanCallback != null) { - sendUpdateNetworksCallbackHelper(mNetworkScanCallback, + handleNetworkScanResult(mAvailableNetworkInfos.get(0).getSubId()); + } else { + if (mNetworkScanCallback != null) { + sendUpdateNetworksCallbackHelper(mNetworkScanCallback, TelephonyManager.UPDATE_AVAILABLE_NETWORKS_INVALID_ARGUMENTS); - mNetworkScanCallback = null; + mNetworkScanCallback = null; + } } } } @@ -152,7 +156,10 @@ public class ONSProfileSelector { TelephonyManager.UPDATE_AVAILABLE_NETWORKS_ABORTED); } mProfileSelectionCallback.onProfileSelectionDone(); - mNetworkScanCallback = null; + synchronized (mLock) { + mNetworkScanCallback = null; + mAvailableNetworkInfos = null; + } } else { logDebug("switch to sub:" + subId); switchToSubscription(subId); @@ -247,13 +254,17 @@ public class ONSProfileSelector { private int getSubIdUsingAvailableNetworks(String mcc, String mnc, int priorityLevel) { String mccMnc = mcc + mnc; - for (AvailableNetworkInfo availableNetworkInfo : mAvailableNetworkInfos) { - if (availableNetworkInfo.getPriority() != priorityLevel) { - continue; - } - for (String availableMccMnc : availableNetworkInfo.getMccMncs()) { - if (TextUtils.equals(availableMccMnc, mccMnc)) { - return availableNetworkInfo.getSubId(); + synchronized (mLock) { + if (mAvailableNetworkInfos != null) { + for (AvailableNetworkInfo availableNetworkInfo : mAvailableNetworkInfos) { + if (availableNetworkInfo.getPriority() != priorityLevel) { + continue; + } + for (String availableMccMnc : availableNetworkInfo.getMccMncs()) { + if (TextUtils.equals(availableMccMnc, mccMnc)) { + return availableNetworkInfo.getSubId(); + } + } } } } @@ -315,8 +326,7 @@ public class ONSProfileSelector { callbackIntent.putExtra("subId", subId); mSubId = subId; PendingIntent replyIntent = PendingIntent.getService(mContext, - 1, callbackIntent, - Intent.FILL_IN_ACTION); + 1, callbackIntent, PendingIntent.FLAG_ONE_SHOT); mSubscriptionManager.switchToSubscription(subId, replyIntent); } @@ -346,6 +356,8 @@ public class ONSProfileSelector { TelephonyManager.UPDATE_AVAILABLE_NETWORKS_ABORTED); } mProfileSelectionCallback.onProfileSelectionDone(); + mNetworkScanCallback = null; + mAvailableNetworkInfos = null; } private void updateToken() { @@ -453,6 +465,13 @@ public class ONSProfileSelector { } if (isSame(availableNetworks, mAvailableNetworkInfos)) { + logDebug("received duplicate requests"); + /* If we receive same request more than once, send abort response for earlier one + and send actual response for the latest callback. + */ + sendUpdateNetworksCallbackHelper(mNetworkScanCallback, + TelephonyManager.UPDATE_AVAILABLE_NETWORKS_ABORTED); + mNetworkScanCallback = callbackStub; return; } @@ -484,6 +503,7 @@ public class ONSProfileSelector { TelephonyManager.UPDATE_AVAILABLE_NETWORKS_ABORTED); } mProfileSelectionCallback.onProfileSelectionDone(); + mAvailableNetworkInfos = null; } } else { mNetworkScanCallback = callbackStub; @@ -604,13 +624,14 @@ public class ONSProfileSelector { } private void stopProfileScanningPrecedure() { - if (mNetworkScanCallback != null) { - sendUpdateNetworksCallbackHelper(mNetworkScanCallback, - TelephonyManager.UPDATE_AVAILABLE_NETWORKS_ABORTED); - mNetworkScanCallback = null; - } - mNetworkScanCtlr.stopNetworkScan(); synchronized (mLock) { + if (mNetworkScanCallback != null) { + sendUpdateNetworksCallbackHelper(mNetworkScanCallback, + TelephonyManager.UPDATE_AVAILABLE_NETWORKS_ABORTED); + mNetworkScanCallback = null; + } + mNetworkScanCtlr.stopNetworkScan(); + mAvailableNetworkInfos = null; mIsEnabled = false; } @@ -697,7 +718,6 @@ public class ONSProfileSelector { return; } mCurrentDataSubId = subId; - sendSetOpptCallbackHelper(callbackStub, TelephonyManager.SET_OPPORTUNISTIC_SUB_SUCCESS); } else { log("Inactive sub passed for preferred data " + subId); sendSetOpptCallbackHelper(callbackStub, diff --git a/src/com/android/ons/OpportunisticNetworkService.java b/src/com/android/ons/OpportunisticNetworkService.java index da35b65..6db5fa8 100644 --- a/src/com/android/ons/OpportunisticNetworkService.java +++ b/src/com/android/ons/OpportunisticNetworkService.java @@ -363,7 +363,8 @@ public class OpportunisticNetworkService extends Service { mContext = context; mTelephonyManager = TelephonyManager.from(mContext); mProfileSelector = new ONSProfileSelector(mContext, mProfileSelectionCallback); - mSharedPref = mContext.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); + mSharedPref = mContext.createDeviceProtectedStorageContext().getSharedPreferences( + PREF_NAME, Context.MODE_PRIVATE); mSubscriptionManager = (SubscriptionManager) mContext.getSystemService( Context.TELEPHONY_SUBSCRIPTION_SERVICE); mONSConfigInputHashMap = new HashMap<String, ONSConfigInput>(); diff --git a/tests/src/com/android/ons/ONSProfileSelectorTest.java b/tests/src/com/android/ons/ONSProfileSelectorTest.java index e43f78d..a3b5a72 100644 --- a/tests/src/com/android/ons/ONSProfileSelectorTest.java +++ b/tests/src/com/android/ons/ONSProfileSelectorTest.java @@ -42,6 +42,7 @@ import java.util.ArrayList; import java.util.List; public class ONSProfileSelectorTest extends ONSBaseTest { + private MyONSProfileSelector mONSProfileSelector; private boolean testFailed; private boolean mCallbackInvoked; @@ -55,20 +56,21 @@ public class ONSProfileSelectorTest extends ONSBaseTest { private static final String TAG = "ONSProfileSelectorTest"; MyONSProfileSelector.ONSProfileSelectionCallback mONSProfileSelectionCallback = - new MyONSProfileSelector.ONSProfileSelectionCallback() { - public void onProfileSelectionDone() { - mCallbackInvoked = true; - setReady(true); - } - }; + new MyONSProfileSelector.ONSProfileSelectionCallback() { + public void onProfileSelectionDone() { + mCallbackInvoked = true; + setReady(true); + } + }; public class MyONSProfileSelector extends ONSProfileSelector { + public SubscriptionManager.OnOpportunisticSubscriptionsChangedListener mProfileChngLstnrCpy; public BroadcastReceiver mProfileSelectorBroadcastReceiverCpy; public ONSNetworkScanCtlr.NetworkAvailableCallBack mNetworkAvailableCallBackCpy; public MyONSProfileSelector(Context c, - MyONSProfileSelector.ONSProfileSelectionCallback aNSProfileSelectionCallback) { + MyONSProfileSelector.ONSProfileSelectionCallback aNSProfileSelectionCallback) { super(c, aNSProfileSelectionCallback); } @@ -81,7 +83,7 @@ public class ONSProfileSelectorTest extends ONSBaseTest { } protected void init(Context c, - MyONSProfileSelector.ONSProfileSelectionCallback aNSProfileSelectionCallback) { + MyONSProfileSelector.ONSProfileSelectionCallback aNSProfileSelectionCallback) { super.init(c, aNSProfileSelectionCallback); this.mSubscriptionManager = ONSProfileSelectorTest.this.mSubscriptionManager; this.mSubscriptionBoundTelephonyManager = @@ -116,11 +118,11 @@ public class ONSProfileSelectorTest extends ONSBaseTest { CellIdentityLte cellIdentityLte = new CellIdentityLte(310, 210, 1, 1, 1); CellInfoLte cellInfoLte = new CellInfoLte(); cellInfoLte.setCellIdentity(cellIdentityLte); - results2.add((CellInfo)cellInfoLte); + results2.add((CellInfo) cellInfoLte); ArrayList<String> mccMncs = new ArrayList<>(); mccMncs.add("310210"); AvailableNetworkInfo availableNetworkInfo = new AvailableNetworkInfo(1, 1, mccMncs, - new ArrayList<Integer>()); + new ArrayList<Integer>()); ArrayList<AvailableNetworkInfo> availableNetworkInfos = new ArrayList<AvailableNetworkInfo>(); availableNetworkInfos.add(availableNetworkInfo); @@ -141,9 +143,9 @@ public class ONSProfileSelectorTest extends ONSBaseTest { Looper.prepare(); doReturn(true).when(mONSNetworkScanCtlr).startFastNetworkScan(anyObject()); doReturn(new ArrayList<>()).when(mSubscriptionManager) - .getOpportunisticSubscriptions(); + .getOpportunisticSubscriptions(); mONSProfileSelector = new MyONSProfileSelector(mContext, - mONSProfileSelectionCallback); + mONSProfileSelectionCallback); mONSProfileSelector.updateOppSubs(); mONSProfileSelector.startProfileSelection(availableNetworkInfos, mCallback); mLooper = Looper.myLooper(); @@ -168,20 +170,20 @@ public class ONSProfileSelectorTest extends ONSBaseTest { public void testStartProfileSelectionSuccess() { List<SubscriptionInfo> subscriptionInfoList = new ArrayList<SubscriptionInfo>(); SubscriptionInfo subscriptionInfo = new SubscriptionInfo(5, "", 1, "TMO", "TMO", 1, 1, - "123", 1, null, "310", "210", "", false, null, "1"); + "123", 1, null, "310", "210", "", false, null, "1"); SubscriptionInfo subscriptionInfo2 = new SubscriptionInfo(5, "", 1, "TMO", "TMO", 1, 1, - "123", 1, null, "310", "211", "", false, null, "1"); + "123", 1, null, "310", "211", "", false, null, "1"); subscriptionInfoList.add(subscriptionInfo); List<CellInfo> results2 = new ArrayList<CellInfo>(); CellIdentityLte cellIdentityLte = new CellIdentityLte(310, 210, 1, 1, 1); CellInfoLte cellInfoLte = new CellInfoLte(); cellInfoLte.setCellIdentity(cellIdentityLte); - results2.add((CellInfo)cellInfoLte); + results2.add((CellInfo) cellInfoLte); ArrayList<String> mccMncs = new ArrayList<>(); mccMncs.add("310210"); AvailableNetworkInfo availableNetworkInfo = new AvailableNetworkInfo(1, 1, mccMncs, - new ArrayList<Integer>()); + new ArrayList<Integer>()); ArrayList<AvailableNetworkInfo> availableNetworkInfos = new ArrayList<AvailableNetworkInfo>(); availableNetworkInfos.add(availableNetworkInfo); @@ -198,16 +200,17 @@ public class ONSProfileSelectorTest extends ONSBaseTest { @Override public void run() { Looper.prepare(); - doReturn(subscriptionInfoList).when(mSubscriptionManager).getOpportunisticSubscriptions(); + doReturn(subscriptionInfoList).when(mSubscriptionManager) + .getOpportunisticSubscriptions(); doReturn(true).when(mSubscriptionManager).isActiveSubId(anyInt()); doReturn(true).when(mSubscriptionBoundTelephonyManager).enableModemForSlot( anyInt(), anyBoolean()); mONSProfileSelector = new MyONSProfileSelector(mContext, - new MyONSProfileSelector.ONSProfileSelectionCallback() { - public void onProfileSelectionDone() { - setReady(true); - } - }); + new MyONSProfileSelector.ONSProfileSelectionCallback() { + public void onProfileSelectionDone() { + setReady(true); + } + }); mONSProfileSelector.updateOppSubs(); mONSProfileSelector.startProfileSelection(availableNetworkInfos, mCallback); mLooper = Looper.myLooper(); @@ -265,7 +268,8 @@ public class ONSProfileSelectorTest extends ONSBaseTest { @Override public void run() { Looper.prepare(); - doReturn(opportunisticSubscriptionInfoList).when(mSubscriptionManager).getOpportunisticSubscriptions(); + doReturn(opportunisticSubscriptionInfoList).when(mSubscriptionManager) + .getOpportunisticSubscriptions(); doReturn(false).when(mSubscriptionManager).isActiveSubId(anyInt()); doReturn(activeSubscriptionInfoList).when(mSubscriptionManager) .getActiveSubscriptionInfoList(anyBoolean()); @@ -316,9 +320,10 @@ public class ONSProfileSelectorTest extends ONSBaseTest { public void run() { Looper.prepare(); mONSProfileSelector = new MyONSProfileSelector(mContext, - new MyONSProfileSelector.ONSProfileSelectionCallback() { - public void onProfileSelectionDone() {} - }); + new MyONSProfileSelector.ONSProfileSelectionCallback() { + public void onProfileSelectionDone() { + } + }); mLooper = Looper.myLooper(); setReady(true); Looper.loop(); @@ -337,7 +342,7 @@ public class ONSProfileSelectorTest extends ONSBaseTest { public void testselectProfileForDataWithInActiveSub() { List<SubscriptionInfo> subscriptionInfoList = new ArrayList<SubscriptionInfo>(); SubscriptionInfo subscriptionInfo = new SubscriptionInfo(5, "", 1, "TMO", "TMO", 1, 1, - "123", 1, null, "310", "210", "", false, null, "1"); + "123", 1, null, "310", "210", "", false, null, "1"); subscriptionInfoList.add(subscriptionInfo); mReady = false; doReturn(new ArrayList<>()).when(mSubscriptionManager).getOpportunisticSubscriptions(); @@ -346,9 +351,10 @@ public class ONSProfileSelectorTest extends ONSBaseTest { public void run() { Looper.prepare(); mONSProfileSelector = new MyONSProfileSelector(mContext, - new MyONSProfileSelector.ONSProfileSelectionCallback() { - public void onProfileSelectionDone() {} - }); + new MyONSProfileSelector.ONSProfileSelectionCallback() { + public void onProfileSelectionDone() { + } + }); mLooper = Looper.myLooper(); setReady(true); Looper.loop(); @@ -366,20 +372,21 @@ public class ONSProfileSelectorTest extends ONSBaseTest { public void testselectProfileForDataWithInvalidSubId() { List<SubscriptionInfo> subscriptionInfoList = new ArrayList<SubscriptionInfo>(); SubscriptionInfo subscriptionInfo = new SubscriptionInfo(5, "", 1, "TMO", "TMO", 1, 1, - "123", 1, null, "310", "210", "", false, null, "1"); + "123", 1, null, "310", "210", "", false, null, "1"); subscriptionInfoList.add(subscriptionInfo); mReady = false; doReturn(subscriptionInfoList).when(mSubscriptionManager).getOpportunisticSubscriptions(); doNothing().when(mSubscriptionManager).setPreferredDataSubscriptionId( - anyInt(), anyBoolean(), any(), any()); + anyInt(), anyBoolean(), any(), any()); new Thread(new Runnable() { @Override public void run() { Looper.prepare(); mONSProfileSelector = new MyONSProfileSelector(mContext, - new MyONSProfileSelector.ONSProfileSelectionCallback() { - public void onProfileSelectionDone() {} - }); + new MyONSProfileSelector.ONSProfileSelectionCallback() { + public void onProfileSelectionDone() { + } + }); mLooper = Looper.myLooper(); setReady(true); Looper.loop(); @@ -392,30 +399,31 @@ public class ONSProfileSelectorTest extends ONSBaseTest { // Testing selectProfileForData with INVALID_SUBSCRIPTION_ID and the function should // return true. mONSProfileSelector.selectProfileForData( - SubscriptionManager.INVALID_SUBSCRIPTION_ID, false, null); + SubscriptionManager.INVALID_SUBSCRIPTION_ID, false, null); } @Test public void testselectProfileForDataWithValidSub() { List<SubscriptionInfo> subscriptionInfoList = new ArrayList<SubscriptionInfo>(); SubscriptionInfo subscriptionInfo = new SubscriptionInfo(5, "", 1, "TMO", "TMO", 1, 1, - "123", 1, null, "310", "210", "", false, null, "1"); + "123", 1, null, "310", "210", "", false, null, "1"); subscriptionInfoList.add(subscriptionInfo); mReady = false; doReturn(subscriptionInfoList).when(mSubscriptionManager) - .getActiveSubscriptionInfoList(); + .getActiveSubscriptionInfoList(); doNothing().when(mSubscriptionManager).setPreferredDataSubscriptionId( - anyInt(), anyBoolean(), any(), any()); + anyInt(), anyBoolean(), any(), any()); new Thread(new Runnable() { @Override public void run() { Looper.prepare(); doReturn(subscriptionInfoList).when(mSubscriptionManager) - .getOpportunisticSubscriptions(); + .getOpportunisticSubscriptions(); mONSProfileSelector = new MyONSProfileSelector(mContext, - new MyONSProfileSelector.ONSProfileSelectionCallback() { - public void onProfileSelectionDone() {} - }); + new MyONSProfileSelector.ONSProfileSelectionCallback() { + public void onProfileSelectionDone() { + } + }); mONSProfileSelector.updateOppSubs(); mLooper = Looper.myLooper(); setReady(true); @@ -430,4 +438,109 @@ public class ONSProfileSelectorTest extends ONSBaseTest { // return true. mONSProfileSelector.selectProfileForData(5, false, null); } + + @Test + public void testStartProfileSelectionSuccessWithSameArgumentsAgain() { + List<SubscriptionInfo> subscriptionInfoList = new ArrayList<SubscriptionInfo>(); + SubscriptionInfo subscriptionInfo = new SubscriptionInfo(5, "", 1, "TMO", "TMO", 1, 1, + "123", 1, null, "310", "210", "", false, null, "1"); + SubscriptionInfo subscriptionInfo2 = new SubscriptionInfo(5, "", 1, "TMO", "TMO", 1, 1, + "123", 1, null, "310", "211", "", false, null, "1"); + subscriptionInfoList.add(subscriptionInfo); + + List<CellInfo> results2 = new ArrayList<CellInfo>(); + CellIdentityLte cellIdentityLte = new CellIdentityLte(310, 210, 1, 1, 1); + CellInfoLte cellInfoLte = new CellInfoLte(); + cellInfoLte.setCellIdentity(cellIdentityLte); + results2.add((CellInfo) cellInfoLte); + ArrayList<String> mccMncs = new ArrayList<>(); + mccMncs.add("310210"); + AvailableNetworkInfo availableNetworkInfo = new AvailableNetworkInfo(1, 1, mccMncs, + new ArrayList<Integer>()); + ArrayList<AvailableNetworkInfo> availableNetworkInfos = new ArrayList<AvailableNetworkInfo>(); + availableNetworkInfos.add(availableNetworkInfo); + + IUpdateAvailableNetworksCallback mCallback = new IUpdateAvailableNetworksCallback.Stub() { + @Override + public void onComplete(int result) { + mResult = result; + } + }; + + mResult = -1; + mReady = false; + mONSProfileSelector = new MyONSProfileSelector(mContext, + new MyONSProfileSelector.ONSProfileSelectionCallback() { + public void onProfileSelectionDone() { + setReady(true); + } + }); + new Thread(new Runnable() { + @Override + public void run() { + Looper.prepare(); + doReturn(subscriptionInfoList).when(mSubscriptionManager) + .getOpportunisticSubscriptions(); + doReturn(true).when(mSubscriptionManager).isActiveSubId(anyInt()); + doReturn(true).when(mSubscriptionBoundTelephonyManager).enableModemForSlot( + anyInt(), anyBoolean()); + + mONSProfileSelector.updateOppSubs(); + mONSProfileSelector.startProfileSelection(availableNetworkInfos, mCallback); + mLooper = Looper.myLooper(); + setReady(true); + Looper.loop(); + } + }).start(); + + // Wait till initialization is complete. + waitUntilReady(); + mReady = false; + mDataSubId = -1; + + // Testing startProfileSelection with oppotunistic sub. + // On success onProfileSelectionDone must get invoked. + assertFalse(mReady); + waitForMs(500); + mONSProfileSelector.mNetworkAvailableCallBackCpy.onNetworkAvailability(results2); + Intent callbackIntent = new Intent(MyONSProfileSelector.ACTION_SUB_SWITCH); + callbackIntent.putExtra("sequenceId", 1); + callbackIntent.putExtra("subId", 5); + waitUntilReady(); + assertEquals(TelephonyManager.UPDATE_AVAILABLE_NETWORKS_SUCCESS, mResult); + assertTrue(mReady); + + mResult = -1; + mReady = false; + new Thread(new Runnable() { + @Override + public void run() { + Looper.prepare(); + doReturn(subscriptionInfoList).when(mSubscriptionManager) + .getOpportunisticSubscriptions(); + doReturn(true).when(mSubscriptionManager).isActiveSubId(anyInt()); + doReturn(true).when(mSubscriptionBoundTelephonyManager).enableModemForSlot( + anyInt(), anyBoolean()); + mONSProfileSelector.updateOppSubs(); + mONSProfileSelector.startProfileSelection(availableNetworkInfos, mCallback); + mLooper = Looper.myLooper(); + setReady(true); + Looper.loop(); + } + }).start(); + + // Wait till initialization is complete. + waitUntilReady(); + mReady = false; + mDataSubId = -1; + + // Testing startProfileSelection with oppotunistic sub. + // On success onProfileSelectionDone must get invoked. + assertFalse(mReady); + waitForMs(500); + mONSProfileSelector.mNetworkAvailableCallBackCpy.onNetworkAvailability(results2); + waitUntilReady(); + assertEquals(TelephonyManager.UPDATE_AVAILABLE_NETWORKS_SUCCESS, mResult); + assertTrue(mReady); + } } diff --git a/tests/src/com/android/ons/OpportunisticNetworkServiceTest.java b/tests/src/com/android/ons/OpportunisticNetworkServiceTest.java index 88fbb7c..ae28862 100644 --- a/tests/src/com/android/ons/OpportunisticNetworkServiceTest.java +++ b/tests/src/com/android/ons/OpportunisticNetworkServiceTest.java @@ -1,4 +1,4 @@ -/* + /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -148,7 +148,7 @@ public class OpportunisticNetworkServiceTest extends ONSBaseTest { mOpportunisticNetworkService.mIsEnabled = true; mOpportunisticNetworkService.mONSConfigInputHashMap = mockONSConfigInputHashMap; mOpportunisticNetworkService.handleSimStateChange(); - waitForMs(500); + waitForMs(50); verify(mockONSConfigInputHashMap,times(1)).get(SYSTEM_APP_CONFIG_NAME); } |
