Connect the new API from ApexService to ApexManager
Bug: 187444679
Test: atest ApexManagerTest
Change-Id: I60482a180d873a5f65887d0a5bb4230f75cb55df
Merged-In: I60482a180d873a5f65887d0a5bb4230f75cb55df
(cherry picked from commit 2bcdaf91d5)
This commit is contained in:
@@ -237,6 +237,14 @@ public abstract class ApexManager {
|
||||
abstract ApexInfoList submitStagedSession(ApexSessionParams params)
|
||||
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
|
||||
* applied at next reboot.
|
||||
@@ -706,6 +714,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
|
||||
void markStagedSessionReady(int sessionId) throws PackageManagerException {
|
||||
try {
|
||||
@@ -1099,6 +1120,11 @@ public abstract class ApexManager {
|
||||
"Device doesn't support updating APEX");
|
||||
}
|
||||
|
||||
@Override
|
||||
ApexInfo[] getStagedApexInfos(ApexSessionParams params) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
void markStagedSessionReady(int sessionId) {
|
||||
throw new UnsupportedOperationException();
|
||||
|
||||
@@ -37,6 +37,7 @@ import android.apex.IApexService;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceSpecificException;
|
||||
import android.platform.test.annotations.Presubmit;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
@@ -227,6 +228,21 @@ public class ApexManagerTest {
|
||||
() -> 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
|
||||
public void testMarkStagedSessionReady_throwPackageManagerException() throws RemoteException {
|
||||
doAnswer(invocation -> {
|
||||
|
||||
Reference in New Issue
Block a user