summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author felkachang <felkachang@google.com> 2022-12-06 07:23:08 +0000
committer felkachang <felkachang@google.com> 2022-12-15 15:16:32 +0800
commita35452bb32e161c719c823477d96025e69272f07 (patch)
treeeb0cde874da0c37bcff0c5fee78305f2f849b3ab
parent25545ffd8cccc68f5adc9790a6ed99a451eaec0e (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
-rw-r--r--core/java/android/content/om/OverlayManagerTransaction.java14
-rw-r--r--core/java/com/android/internal/content/om/OverlayManagerImpl.java6
-rw-r--r--services/core/java/com/android/server/om/OverlayManagerService.java5
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));
}