Send legacy default SMS change broadcast in SmsApplication.

We are moving RoleManagerService into mainline, so we can't reference
SmsApplication there without making it an API, and we can't simply
send the broadcast in RoleManagerService because the logic isn't
simple. Instead, we can simply register a role change listener in
SmsApplication for sending the broadcast, similar to how it is already
listening to package changes.

Bug: 158736025
Test: presubmit
Change-Id: I10e440499003f0ec34142a56e715caf452dbfa50
This commit is contained in:
Hai Zhang
2020-12-10 16:04:05 -08:00
parent 8047aec1e4
commit 85b53955ff
4 changed files with 61 additions and 18 deletions

View File

@@ -46,6 +46,7 @@ import android.content.pm.ServiceInfo;
import android.net.Uri;
import android.os.Handler;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Telephony;
import android.telephony.TelephonyManager;
@@ -103,6 +104,7 @@ public class SmsApplicationTest {
@Mock private TelephonyManager mTelephonyManager;
@Mock private RoleManager mRoleManager;
@Mock private PackageManager mPackageManager;
@Mock private UserManager mUserManager;
@Mock private AppOpsManager mAppOpsManager;
@Before
@@ -112,6 +114,7 @@ public class SmsApplicationTest {
when(mContext.getSystemService(Context.ROLE_SERVICE)).thenReturn(mRoleManager);
when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mContext.getSystemService(RoleManager.class)).thenReturn(mRoleManager);
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
when(mContext.getSystemService(AppOpsManager.class)).thenReturn(mAppOpsManager);
when(mContext.createContextAsUser(isNotNull(), anyInt())).thenReturn(mContext);
@@ -132,6 +135,8 @@ public class SmsApplicationTest {
when(mRoleManager.isRoleAvailable(RoleManager.ROLE_SMS)).thenReturn(true);
when(mRoleManager.getSmsRoleHolder(anyInt()))
.thenReturn(TEST_COMPONENT_NAME.getPackageName());
when(mUserManager.getUserHandles(true))
.thenReturn(Collections.singletonList(UserHandle.SYSTEM));
for (String opStr : APP_OPS_TO_CHECK) {
when(mAppOpsManager.unsafeCheckOp(