Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a35452bb authored by felkachang's avatar felkachang
Browse files

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
parent 25545ffd
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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();
    }

+3 −3
Original line number Diff line number Diff line
@@ -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(
+4 −1
Original line number Diff line number Diff line
@@ -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));
                }