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

Commit a2a902f5 authored by Samiul Islam's avatar Samiul Islam Committed by Automerger Merge Worker
Browse files

Connect the new API from ApexService to ApexManager am: 3d8b82ca

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15624279

Change-Id: Ic1cd1f0991c656fcf574f6ef94627adfbf73e2ff
parents b0aa3ec6 3d8b82ca
Loading
Loading
Loading
Loading
+26 −0
Original line number Original line Diff line number Diff line
@@ -248,6 +248,14 @@ public abstract class ApexManager {
    abstract ApexInfoList submitStagedSession(ApexSessionParams params)
    abstract ApexInfoList submitStagedSession(ApexSessionParams params)
            throws PackageManagerException;
            throws PackageManagerException;


    /**
     * Returns {@code ApeInfo} about apex sessions that have been marked ready via
     * {@link #markStagedSessionReady(int)}
     *
     * Returns empty array if there is no staged apex session or if there is any error.
     */
    abstract ApexInfo[] getStagedApexInfos(ApexSessionParams params);

    /**
    /**
     * Mark a staged session previously submitted using {@code submitStagedSession} as ready to be
     * Mark a staged session previously submitted using {@code submitStagedSession} as ready to be
     * applied at next reboot.
     * applied at next reboot.
@@ -756,6 +764,19 @@ public abstract class ApexManager {
            }
            }
        }
        }


        @Override
        ApexInfo[] getStagedApexInfos(ApexSessionParams params) {
            try {
                return waitForApexService().getStagedApexInfos(params);
            } catch (RemoteException re) {
                Slog.w(TAG, "Unable to contact apexservice" + re.getMessage());
                throw new RuntimeException(re);
            } catch (Exception e) {
                Slog.w(TAG, "Failed to collect staged apex infos" + e.getMessage());
                return new ApexInfo[0];
            }
        }

        @Override
        @Override
        void markStagedSessionReady(int sessionId) throws PackageManagerException {
        void markStagedSessionReady(int sessionId) throws PackageManagerException {
            try {
            try {
@@ -1246,6 +1267,11 @@ public abstract class ApexManager {
                    "Device doesn't support updating APEX");
                    "Device doesn't support updating APEX");
        }
        }


        @Override
        ApexInfo[] getStagedApexInfos(ApexSessionParams params) {
            throw new UnsupportedOperationException();
        }

        @Override
        @Override
        void markStagedSessionReady(int sessionId) {
        void markStagedSessionReady(int sessionId) {
            throw new UnsupportedOperationException();
            throw new UnsupportedOperationException();
+16 −0
Original line number Original line Diff line number Diff line
@@ -40,6 +40,7 @@ import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageInfo;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.ServiceSpecificException;
import android.platform.test.annotations.Presubmit;
import android.platform.test.annotations.Presubmit;


import androidx.test.filters.SmallTest;
import androidx.test.filters.SmallTest;
@@ -231,6 +232,21 @@ public class ApexManagerTest {
                () -> mApexManager.submitStagedSession(testParamsWithChildren()));
                () -> mApexManager.submitStagedSession(testParamsWithChildren()));
    }
    }


    @Test
    public void testGetStagedApexInfos_throwRunTimeException() throws RemoteException {
        doThrow(RemoteException.class).when(mApexService).getStagedApexInfos(any());

        assertThrows(RuntimeException.class,
                () -> mApexManager.getStagedApexInfos(testParamsWithChildren()));
    }

    @Test
    public void testGetStagedApexInfos_returnsEmptyArrayOnError() throws RemoteException {
        doThrow(ServiceSpecificException.class).when(mApexService).getStagedApexInfos(any());

        assertThat(mApexManager.getStagedApexInfos(testParamsWithChildren())).hasLength(0);
    }

    @Test
    @Test
    public void testMarkStagedSessionReady_throwPackageManagerException() throws RemoteException {
    public void testMarkStagedSessionReady_throwPackageManagerException() throws RemoteException {
        doAnswer(invocation -> {
        doAnswer(invocation -> {