Merge changes I69cdbb16,I6975e0b7

* changes:
  notify netd about uid internet permission changes when package replaced
  Backport PackageListObserver#onPackageChanged.
This commit is contained in:
Lorenzo Colitti
2019-08-27 10:17:42 +00:00
committed by Gerrit Code Review
5 changed files with 38 additions and 0 deletions

View File

@@ -51,6 +51,13 @@ public class PackageList implements PackageListObserver, AutoCloseable {
}
}
@Override
public void onPackageChanged(String packageName, int uid) {
if (mWrappedObserver != null) {
mWrappedObserver.onPackageChanged(packageName, uid);
}
}
@Override
public void onPackageRemoved(String packageName, int uid) {
if (mWrappedObserver != null) {

View File

@@ -63,6 +63,8 @@ public abstract class PackageManagerInternal {
public interface PackageListObserver {
/** A package was added to the system. */
void onPackageAdded(@NonNull String packageName, int uid);
/** A package was changed - either installed for a specific user or updated. */
default void onPackageChanged(@NonNull String packageName, int uid) {}
/** A package was removed from the system. */
void onPackageRemoved(@NonNull String packageName, int uid);
}

View File

@@ -129,6 +129,11 @@ public class PermissionMonitor {
sendPackagePermissionsForUid(uid, getPermissionForUid(uid));
}
@Override
public void onPackageChanged(@NonNull String packageName, int uid) {
sendPackagePermissionsForUid(uid, getPermissionForUid(uid));
}
@Override
public void onPackageRemoved(String packageName, int uid) {
sendPackagePermissionsForUid(uid, getPermissionForUid(uid));

View File

@@ -2155,6 +2155,8 @@ public class PackageManagerService extends IPackageManager.Stub
if (allNewUsers && !update) {
notifyPackageAdded(packageName, res.uid);
} else {
notifyPackageChanged(packageName, res.uid);
}
// Log current value of "unknown sources" setting
@@ -13761,6 +13763,22 @@ public class PackageManagerService extends IPackageManager.Stub
}
}
@Override
public void notifyPackageChanged(String packageName, int uid) {
final PackageListObserver[] observers;
synchronized (mPackages) {
if (mPackageListObservers.size() == 0) {
return;
}
final PackageListObserver[] observerArray =
new PackageListObserver[mPackageListObservers.size()];
observers = mPackageListObservers.toArray(observerArray);
}
for (int i = observers.length - 1; i >= 0; --i) {
observers[i].onPackageChanged(packageName, uid);
}
}
@Override
public void notifyPackageRemoved(String packageName, int uid) {
final PackageListObserver[] observers;
@@ -24987,5 +25005,6 @@ interface PackageSender {
void sendPackageAddedForNewUsers(String packageName, boolean sendBootCompleted,
boolean includeStopped, int appId, int[] userIds, int[] instantUserIds);
void notifyPackageAdded(String packageName, int uid);
void notifyPackageChanged(String packageName, int uid);
void notifyPackageRemoved(String packageName, int uid);
}

View File

@@ -59,6 +59,11 @@ public class PackageManagerServiceTest {
public void notifyPackageAdded(String packageName, int uid) {
}
@Override
public void notifyPackageChanged(String packageName, int uid) {
}
@Override
public void notifyPackageRemoved(String packageName, int uid) {
}