Merge "Remove default app permission granting from DefaultPermissionGrantPolicy." into qt-dev

am: 8e1c4a0916

Change-Id: Ic7b066451cd77f4196309709980dec9de06896ad
This commit is contained in:
Hai Zhang
2019-05-09 10:56:30 -07:00
committed by android-build-merger
6 changed files with 56 additions and 121 deletions

View File

@@ -173,6 +173,22 @@ public abstract class PackageManagerInternal {
void setDefaultBrowserAsync(@Nullable String packageName, @UserIdInt int userId);
}
/**
* Provider for default dialer
*/
public interface DefaultDialerProvider {
/**
* Get the package name of the default dialer.
*
* @param userId the user id
*
* @return the package name of the default dialer, or {@code null} if none
*/
@Nullable
String getDefaultDialer(@UserIdInt int userId);
}
/**
* Provider for default home
*/
@@ -229,14 +245,6 @@ public abstract class PackageManagerInternal {
*/
public abstract void setSyncAdapterPackagesprovider(SyncAdapterPackagesProvider provider);
/**
* Called when the package for the default dialer changed
*
* @param packageName the new dialer package
* @param userId user for which the change was made
*/
public void onDefaultDialerAppChanged(String packageName, int userId) {}
/**
* Called when the package for the default SMS handler changed
*
@@ -931,6 +939,13 @@ public abstract class PackageManagerInternal {
*/
public abstract void setDefaultBrowserProvider(@NonNull DefaultBrowserProvider provider);
/**
* Sets the default dialer provider.
*
* @param provider the provider
*/
public abstract void setDefaultDialerProvider(@NonNull DefaultDialerProvider provider);
/**
* Sets the default home provider.
*

View File

@@ -1008,6 +1008,9 @@ public class PackageManagerService extends IPackageManager.Stub
@GuardedBy("mPackages")
private PackageManagerInternal.DefaultBrowserProvider mDefaultBrowserProvider;
@GuardedBy("mPackages")
private PackageManagerInternal.DefaultDialerProvider mDefaultDialerProvider;
@GuardedBy("mPackages")
private PackageManagerInternal.DefaultHomeProvider mDefaultHomeProvider;
@@ -14002,10 +14005,17 @@ public class PackageManagerService extends IPackageManager.Stub
return resolveInfo == null ? null : resolveInfo.activityInfo.packageName;
}
private String getDefaultDialerPackageName(int userId) {
@Nullable
private String getDefaultDialerPackageName(@UserIdInt int userId) {
PackageManagerInternal.DefaultDialerProvider provider;
synchronized (mPackages) {
return mSettings.getDefaultDialerPackageNameLPw(userId);
provider = mDefaultDialerProvider;
}
if (provider == null) {
Slog.e(TAG, "mDefaultDialerProvider is null");
return null;
}
return provider.getDefaultDialer(userId);
}
@Override
@@ -24239,13 +24249,6 @@ public class PackageManagerService extends IPackageManager.Stub
mDefaultPermissionPolicy.setSyncAdapterPackagesProvider(provider);
}
@Override
public void onDefaultDialerAppChanged(String packageName, int userId) {
synchronized (mPackages) {
mSettings.setDefaultDialerPackageNameLPw(packageName, userId);
}
}
@Override
public void grantDefaultPermissionsToDefaultUseOpenWifiApp(String packageName, int userId) {
mDefaultPermissionPolicy.grantDefaultPermissionsToDefaultUseOpenWifiApp(
@@ -24791,6 +24794,13 @@ public class PackageManagerService extends IPackageManager.Stub
}
}
@Override
public void setDefaultDialerProvider(@NonNull DefaultDialerProvider provider) {
synchronized (mPackages) {
mDefaultDialerProvider = provider;
}
}
@Override
public void setDefaultHomeProvider(@NonNull DefaultHomeProvider provider) {
synchronized (mPackages) {

View File

@@ -362,9 +362,6 @@ public final class Settings {
// For every user, it is used to find the package name of the default Browser App.
final SparseArray<String> mDefaultBrowserApp = new SparseArray<String>();
// For every user, a record of the package name of the default Dialer App.
final SparseArray<String> mDefaultDialerApp = new SparseArray<String>();
// App-link priority tracking, per-user
final SparseIntArray mNextAppLinkGeneration = new SparseIntArray();
@@ -1270,19 +1267,6 @@ public final class Settings {
return (userId == UserHandle.USER_ALL) ? null : mDefaultBrowserApp.removeReturnOld(userId);
}
boolean setDefaultDialerPackageNameLPw(String packageName, int userId) {
if (userId == UserHandle.USER_ALL) {
return false;
}
mDefaultDialerApp.put(userId, packageName);
writePackageRestrictionsLPr(userId);
return true;
}
String getDefaultDialerPackageNameLPw(int userId) {
return (userId == UserHandle.USER_ALL) ? null : mDefaultDialerApp.get(userId);
}
private File getUserPackagesStateFile(int userId) {
// TODO: Implement a cleaner solution when adding tests.
// This instead of Environment.getUserSystemDirectory(userId) to support testing.
@@ -1482,8 +1466,7 @@ public final class Settings {
String packageName = parser.getAttributeValue(null, ATTR_PACKAGE_NAME);
mDefaultBrowserApp.put(userId, packageName);
} else if (tagName.equals(TAG_DEFAULT_DIALER)) {
String packageName = parser.getAttributeValue(null, ATTR_PACKAGE_NAME);
mDefaultDialerApp.put(userId, packageName);
// Ignored.
} else {
String msg = "Unknown element under " + TAG_DEFAULT_APPS + ": " +
parser.getName();
@@ -1938,12 +1921,6 @@ public final class Settings {
serializer.attribute(null, ATTR_PACKAGE_NAME, defaultBrowser);
serializer.endTag(null, TAG_DEFAULT_BROWSER);
}
String defaultDialer = mDefaultDialerApp.get(userId);
if (!TextUtils.isEmpty(defaultDialer)) {
serializer.startTag(null, TAG_DEFAULT_DIALER);
serializer.attribute(null, ATTR_PACKAGE_NAME, defaultDialer);
serializer.endTag(null, TAG_DEFAULT_DIALER);
}
serializer.endTag(null, TAG_DEFAULT_APPS);
}

View File

@@ -849,21 +849,6 @@ public final class DefaultPermissionGrantPolicy {
grantPermissionsToSystemPackage(useOpenWifiPackage, userId, ALWAYS_LOCATION_PERMISSIONS);
}
public void grantDefaultPermissionsToDefaultSmsApp(String packageName, int userId) {
Log.i(TAG, "Granting permissions to default sms app for user:" + userId);
grantIgnoringSystemPackage(packageName, userId,
PHONE_PERMISSIONS, CONTACTS_PERMISSIONS, SMS_PERMISSIONS, STORAGE_PERMISSIONS,
MICROPHONE_PERMISSIONS, CAMERA_PERMISSIONS);
}
public void grantDefaultPermissionsToDefaultDialerApp(String packageName, int userId) {
mServiceInternal.onDefaultDialerAppChanged(packageName, userId);
Log.i(TAG, "Granting permissions to default dialer app for user:" + userId);
grantIgnoringSystemPackage(packageName, userId,
PHONE_PERMISSIONS, CONTACTS_PERMISSIONS, SMS_PERMISSIONS,
MICROPHONE_PERMISSIONS, CAMERA_PERMISSIONS);
}
public void grantDefaultPermissionsToDefaultUseOpenWifiApp(String packageName, int userId) {
Log.i(TAG, "Granting permissions to default Use Open WiFi app for user:" + userId);
grantIgnoringSystemPackage(packageName, userId, ALWAYS_LOCATION_PERMISSIONS);

View File

@@ -156,6 +156,7 @@ public class RoleManagerService extends SystemService implements RoleUserState.C
PackageManagerInternal packageManagerInternal = LocalServices.getService(
PackageManagerInternal.class);
packageManagerInternal.setDefaultBrowserProvider(new DefaultBrowserProvider());
packageManagerInternal.setDefaultDialerProvider(new DefaultDialerProvider());
packageManagerInternal.setDefaultHomeProvider(new DefaultHomeProvider());
registerUserRemovedReceiver();
@@ -772,6 +773,16 @@ public class RoleManagerService extends SystemService implements RoleUserState.C
}
}
private class DefaultDialerProvider implements PackageManagerInternal.DefaultDialerProvider {
@Nullable
@Override
public String getDefaultDialer(@UserIdInt int userId) {
return CollectionUtils.firstOrNull(getOrCreateUserState(userId).getRoleHolders(
RoleManager.ROLE_DIALER));
}
}
private class DefaultHomeProvider implements PackageManagerInternal.DefaultHomeProvider {
@Nullable

View File

@@ -70,38 +70,9 @@ public class TelecomLoaderService extends SystemService {
ServiceManager.addService(Context.TELECOM_SERVICE, service);
synchronized (mLock) {
if (mDefaultSmsAppRequests != null || mDefaultDialerAppRequests != null
|| mDefaultSimCallManagerRequests != null) {
if (mDefaultSimCallManagerRequests != null) {
final DefaultPermissionGrantPolicy permissionPolicy =
getDefaultPermissionGrantPolicy();
if (mDefaultSmsAppRequests != null) {
ComponentName smsComponent = SmsApplication.getDefaultSmsApplication(
mContext, true);
if (smsComponent != null) {
final int requestCount = mDefaultSmsAppRequests.size();
for (int i = requestCount - 1; i >= 0; i--) {
final int userid = mDefaultSmsAppRequests.get(i);
mDefaultSmsAppRequests.remove(i);
permissionPolicy.grantDefaultPermissionsToDefaultSmsApp(
smsComponent.getPackageName(), userid);
}
}
}
if (mDefaultDialerAppRequests != null) {
String packageName = DefaultDialerManager.getDefaultDialerApplication(
mContext);
if (packageName != null) {
final int requestCount = mDefaultDialerAppRequests.size();
for (int i = requestCount - 1; i >= 0; i--) {
final int userId = mDefaultDialerAppRequests.get(i);
mDefaultDialerAppRequests.remove(i);
permissionPolicy.grantDefaultPermissionsToDefaultDialerApp(
packageName, userId);
}
}
}
if (mDefaultSimCallManagerRequests != null) {
TelecomManager telecomManager =
(TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
@@ -145,12 +116,6 @@ public class TelecomLoaderService extends SystemService {
private final Object mLock = new Object();
@GuardedBy("mLock")
private IntArray mDefaultSmsAppRequests;
@GuardedBy("mLock")
private IntArray mDefaultDialerAppRequests;
@GuardedBy("mLock")
private IntArray mDefaultSimCallManagerRequests;
@@ -207,10 +172,6 @@ public class TelecomLoaderService extends SystemService {
permissionPolicy.setSmsAppPackagesProvider(userId -> {
synchronized (mLock) {
if (mServiceConnection == null) {
if (mDefaultSmsAppRequests == null) {
mDefaultSmsAppRequests = new IntArray();
}
mDefaultSmsAppRequests.add(userId);
return null;
}
}
@@ -226,10 +187,6 @@ public class TelecomLoaderService extends SystemService {
permissionPolicy.setDialerAppPackagesProvider(userId -> {
synchronized (mLock) {
if (mServiceConnection == null) {
if (mDefaultDialerAppRequests == null) {
mDefaultDialerAppRequests = new IntArray();
}
mDefaultDialerAppRequests.add(userId);
return null;
}
}
@@ -263,38 +220,18 @@ public class TelecomLoaderService extends SystemService {
private void registerDefaultAppNotifier() {
final DefaultPermissionGrantPolicy permissionPolicy = getDefaultPermissionGrantPolicy();
// Notify the package manager on default app changes
final Uri defaultSmsAppUri = Settings.Secure.getUriFor(
Settings.Secure.SMS_DEFAULT_APPLICATION);
final Uri defaultDialerAppUri = Settings.Secure.getUriFor(
Settings.Secure.DIALER_DEFAULT_APPLICATION);
ContentObserver contentObserver = new ContentObserver(
new Handler(Looper.getMainLooper())) {
@Override
public void onChange(boolean selfChange, Uri uri, int userId) {
if (defaultSmsAppUri.equals(uri)) {
ComponentName smsComponent = SmsApplication.getDefaultSmsApplication(
mContext, true);
if (smsComponent != null) {
permissionPolicy.grantDefaultPermissionsToDefaultSmsApp(
smsComponent.getPackageName(), userId);
}
} else if (defaultDialerAppUri.equals(uri)) {
String packageName = DefaultDialerManager.getDefaultDialerApplication(
mContext);
if (packageName != null) {
permissionPolicy.grantDefaultPermissionsToDefaultDialerApp(
packageName, userId);
}
if (defaultDialerAppUri.equals(uri)) {
updateSimCallManagerPermissions(permissionPolicy, userId);
}
}
};
mContext.getContentResolver().registerContentObserver(defaultSmsAppUri,
false, contentObserver, UserHandle.USER_ALL);
mContext.getContentResolver().registerContentObserver(defaultDialerAppUri,
false, contentObserver, UserHandle.USER_ALL);
}