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

Commit 9e495f20 authored by Mohammad Samiul Islam's avatar Mohammad Samiul Islam Committed by Android (Google) Code Review
Browse files

Merge "Connect the new API from ApexService to ApexManager"

parents 946e65d7 2bcdaf91
Loading
Loading
Loading
Loading
+26 −0
Original line number Original line Diff line number Diff line
@@ -249,6 +249,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.
@@ -757,6 +765,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 {
@@ -1249,6 +1270,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 -> {