Merge "Merge "Defer broadcasting ACTION_DEFERRED_ACTIVITY_CHANGED until actual change" into qt-dev am: f883ea697e" into qt-dev-plus-aosp
This commit is contained in:
committed by
Android (Google) Code Review
commit
310c197142
@@ -193,8 +193,10 @@ public abstract class PackageManagerInternal {
|
|||||||
*
|
*
|
||||||
* @param packageName package name of the default home, or {@code null} to remove
|
* @param packageName package name of the default home, or {@code null} to remove
|
||||||
* @param userId the user id
|
* @param userId the user id
|
||||||
|
* @param callback the callback made after the default home as been updated
|
||||||
*/
|
*/
|
||||||
void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId);
|
void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId,
|
||||||
|
@NonNull Consumer<Boolean> callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -19710,8 +19710,9 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
filter.dump(new LogPrinter(Log.INFO, TAG), " ");
|
filter.dump(new LogPrinter(Log.INFO, TAG), " ");
|
||||||
pir.addFilter(new PreferredActivity(filter, match, set, activity, always));
|
pir.addFilter(new PreferredActivity(filter, match, set, activity, always));
|
||||||
scheduleWritePackageRestrictionsLocked(userId);
|
scheduleWritePackageRestrictionsLocked(userId);
|
||||||
postPreferredActivityChangedBroadcast(userId);
|
if (!updateDefaultHomeLPw(userId)) {
|
||||||
updateDefaultHomeLPw(userId);
|
postPreferredActivityChangedBroadcast(userId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -20490,7 +20491,10 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateDefaultHomeLPw(int userId) {
|
/**
|
||||||
|
* @return Whether the ACTION_PREFERRED_ACTIVITY_CHANGED broadcast has been scheduled.
|
||||||
|
*/
|
||||||
|
private boolean updateDefaultHomeLPw(int userId) {
|
||||||
Intent intent = getHomeIntent();
|
Intent intent = getHomeIntent();
|
||||||
List<ResolveInfo> resolveInfos = queryIntentActivitiesInternal(intent, null,
|
List<ResolveInfo> resolveInfos = queryIntentActivitiesInternal(intent, null,
|
||||||
PackageManager.GET_META_DATA, userId);
|
PackageManager.GET_META_DATA, userId);
|
||||||
@@ -20501,15 +20505,20 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
? preferredResolveInfo.activityInfo.packageName : null;
|
? preferredResolveInfo.activityInfo.packageName : null;
|
||||||
String currentPackageName = mDefaultHomeProvider.getDefaultHome(userId);
|
String currentPackageName = mDefaultHomeProvider.getDefaultHome(userId);
|
||||||
if (TextUtils.equals(currentPackageName, packageName)) {
|
if (TextUtils.equals(currentPackageName, packageName)) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
String[] callingPackages = getPackagesForUid(Binder.getCallingUid());
|
String[] callingPackages = getPackagesForUid(Binder.getCallingUid());
|
||||||
if (callingPackages != null && ArrayUtils.contains(callingPackages,
|
if (callingPackages != null && ArrayUtils.contains(callingPackages,
|
||||||
mRequiredPermissionControllerPackage)) {
|
mRequiredPermissionControllerPackage)) {
|
||||||
// PermissionController manages default home directly.
|
// PermissionController manages default home directly.
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId);
|
mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId, (successful) -> {
|
||||||
|
if (successful) {
|
||||||
|
postPreferredActivityChangedBroadcast(userId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ import java.util.concurrent.CompletableFuture;
|
|||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service for role management.
|
* Service for role management.
|
||||||
@@ -780,19 +781,21 @@ public class RoleManagerService extends SystemService implements RoleUserState.C
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId) {
|
public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId,
|
||||||
RemoteCallback callback = new RemoteCallback(result -> {
|
@NonNull Consumer<Boolean> callback) {
|
||||||
|
RemoteCallback remoteCallback = new RemoteCallback(result -> {
|
||||||
boolean successful = result != null;
|
boolean successful = result != null;
|
||||||
if (!successful) {
|
if (!successful) {
|
||||||
Slog.e(LOG_TAG, "Failed to set default home: " + packageName);
|
Slog.e(LOG_TAG, "Failed to set default home: " + packageName);
|
||||||
}
|
}
|
||||||
|
callback.accept(successful);
|
||||||
});
|
});
|
||||||
if (packageName != null) {
|
if (packageName != null) {
|
||||||
getOrCreateControllerService(userId).onAddRoleHolder(RoleManager.ROLE_HOME,
|
getOrCreateControllerService(userId).onAddRoleHolder(RoleManager.ROLE_HOME,
|
||||||
packageName, 0, callback);
|
packageName, 0, remoteCallback);
|
||||||
} else {
|
} else {
|
||||||
getOrCreateControllerService(userId).onClearRoleHolders(RoleManager.ROLE_HOME, 0,
|
getOrCreateControllerService(userId).onClearRoleHolders(RoleManager.ROLE_HOME, 0,
|
||||||
callback);
|
remoteCallback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user