diff options
| author | 2022-12-06 07:23:08 +0000 | |
|---|---|---|
| committer | 2022-12-15 15:16:32 +0800 | |
| commit | a35452bb32e161c719c823477d96025e69272f07 (patch) | |
| tree | eb0cde874da0c37bcff0c5fee78305f2f849b3ab | |
| parent | 25545ffd8cccc68f5adc9790a6ed99a451eaec0e (diff) | |
Not implement Iterator for OverlayManagerTransaction
OverlayManagerTransaction.Request is set by apps. The apps know the
content of requests. There is no need to public
OverlayManagerTransaction.Request. However, OverlayManagerTransaction
implements Iterator and it makes the public API more complicated.
This patch makes OverlayManagerTransaction not to implement
Iterator and make the class to be final.
Bug: 205919743
Test: atest \
OverlayHostTests \
OverlayDeviceTests \
SelfTargetingOverlayDeviceTests \
OverlayRemountedTest \
FrameworksServicesTests:com.android.server.om \
CtsContentTestCases:android.content.om.cts \
idmap2_tests
Change-Id: I6e0f4a8f28d5ca1ead0de8a9037d0180ab7c5a2d
3 files changed, 17 insertions, 8 deletions
diff --git a/core/java/android/content/om/OverlayManagerTransaction.java b/core/java/android/content/om/OverlayManagerTransaction.java index 1856780e1cae..c7c605dca70c 100644 --- a/core/java/android/content/om/OverlayManagerTransaction.java +++ b/core/java/android/content/om/OverlayManagerTransaction.java @@ -60,8 +60,7 @@ import java.util.Objects; * @see FabricatedOverlay * @hide */ -public final class OverlayManagerTransaction - implements Iterable<OverlayManagerTransaction.Request>, Parcelable { +public final class OverlayManagerTransaction implements Parcelable { // TODO: remove @hide from this class when OverlayManager is added to the // SDK, but keep OverlayManagerTransaction.Request @hidden private final List<Request> mRequests; @@ -113,8 +112,15 @@ public final class OverlayManagerTransaction mOverlayManager = null; } - @Override - public Iterator<Request> iterator() { + /** + * Get the iterator of requests + * + * @return the iterator of request + * @hide + */ + @SuppressLint("ReferencesHidden") + @NonNull + public Iterator<Request> getRequests() { return mRequests.iterator(); } diff --git a/core/java/com/android/internal/content/om/OverlayManagerImpl.java b/core/java/com/android/internal/content/om/OverlayManagerImpl.java index 260d1a2c88e5..c4624498138d 100644 --- a/core/java/com/android/internal/content/om/OverlayManagerImpl.java +++ b/core/java/com/android/internal/content/om/OverlayManagerImpl.java @@ -31,6 +31,7 @@ import android.content.Context; import android.content.om.OverlayIdentifier; import android.content.om.OverlayInfo; import android.content.om.OverlayManagerTransaction; +import android.content.om.OverlayManagerTransaction.Request; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.parsing.FrameworkParsingPackageUtils; @@ -295,9 +296,8 @@ public class OverlayManagerImpl { throws PackageManager.NameNotFoundException, IOException { Objects.requireNonNull(transaction); - for (Iterator<OverlayManagerTransaction.Request> it = transaction.iterator(); - it.hasNext(); ) { - final OverlayManagerTransaction.Request request = it.next(); + for (Iterator<Request> it = transaction.getRequests(); it.hasNext(); ) { + final Request request = it.next(); if (request.type == TYPE_REGISTER_FABRICATED) { final FabricatedOverlayInternal fabricatedOverlayInternal = Objects.requireNonNull( diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java index 79f2b3f42e6f..9022a885b237 100644 --- a/services/core/java/com/android/server/om/OverlayManagerService.java +++ b/services/core/java/com/android/server/om/OverlayManagerService.java @@ -51,6 +51,7 @@ import android.content.om.IOverlayManager; import android.content.om.OverlayIdentifier; import android.content.om.OverlayInfo; import android.content.om.OverlayManagerTransaction; +import android.content.om.OverlayManagerTransaction.Request; import android.content.om.OverlayableInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManagerInternal; @@ -107,6 +108,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Objects; @@ -978,7 +980,8 @@ public final class OverlayManagerService extends SystemService { synchronized (mLock) { // execute the requests (as calling user) Set<UserPackage> affectedPackagesToUpdate = null; - for (final OverlayManagerTransaction.Request request : transaction) { + for (Iterator<Request> it = transaction.getRequests(); it.hasNext(); ) { + Request request = it.next(); affectedPackagesToUpdate = CollectionUtils.addAll(affectedPackagesToUpdate, executeRequest(request)); } |