Loading services/core/java/com/android/server/timezone/RulesManagerService.java +13 −9 Original line number Diff line number Diff line Loading @@ -343,16 +343,20 @@ public final class RulesManagerService extends IRulesManager.Stub { @Override public void run() { EventLogTags.writeTimezoneUninstallStarted(toStringOrNull(mCheckToken)); boolean success = false; boolean packageTrackerStatus = false; try { success = mInstaller.stageUninstall(); // Right now we just have success (0) / failure (1). All clients should be checking // against SUCCESS. More granular failures may be added in future. int resultCode = success ? Callback.SUCCESS : Callback.ERROR_UNKNOWN_FAILURE; int uninstallResult = mInstaller.stageUninstall(); packageTrackerStatus = (uninstallResult == TimeZoneDistroInstaller.UNINSTALL_SUCCESS || uninstallResult == TimeZoneDistroInstaller.UNINSTALL_NOTHING_INSTALLED); // Right now we just have Callback.SUCCESS / Callback.ERROR_UNKNOWN_FAILURE for // uninstall. All clients should be checking against SUCCESS. More granular failures // may be added in future. int callbackResultCode = packageTrackerStatus ? Callback.SUCCESS : Callback.ERROR_UNKNOWN_FAILURE; EventLogTags.writeTimezoneUninstallComplete( toStringOrNull(mCheckToken), resultCode); sendFinishedStatus(mCallback, resultCode); toStringOrNull(mCheckToken), callbackResultCode); sendFinishedStatus(mCallback, callbackResultCode); } catch (Exception e) { EventLogTags.writeTimezoneUninstallComplete( toStringOrNull(mCheckToken), Callback.ERROR_UNKNOWN_FAILURE); Loading @@ -360,7 +364,7 @@ public final class RulesManagerService extends IRulesManager.Stub { sendFinishedStatus(mCallback, Callback.ERROR_UNKNOWN_FAILURE); } finally { // Notify the package tracker that the operation is now complete. mPackageTracker.recordCheckResult(mCheckToken, success); mPackageTracker.recordCheckResult(mCheckToken, packageTrackerStatus); mOperationInProgress.set(false); } Loading services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java +37 −5 Original line number Diff line number Diff line Loading @@ -585,7 +585,39 @@ public class RulesManagerServiceTest { verifyNoPackageTrackerCallsMade(); // Set up the installer. configureStageUninstallExpectation(true /* success */); configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_SUCCESS); // Simulate the async execution. mFakeExecutor.simulateAsyncExecutionOfLastCommand(); // Verify the expected calls were made to other components. verifyStageUninstallCalled(); verifyPackageTrackerCalled(token, true /* success */); // Check the callback was called. callback.assertResultReceived(Callback.SUCCESS); } @Test public void requestUninstall_asyncNothingInstalled() throws Exception { configureCallerHasPermission(); CheckToken token = createArbitraryToken(); byte[] tokenBytes = token.toByteArray(); TestCallback callback = new TestCallback(); // Request the uninstall. assertEquals(RulesManager.SUCCESS, mRulesManagerService.requestUninstall(tokenBytes, callback)); // Assert nothing has happened yet. callback.assertNoResultReceived(); verifyNoInstallerCallsMade(); verifyNoPackageTrackerCallsMade(); // Set up the installer. configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_NOTHING_INSTALLED); // Simulate the async execution. mFakeExecutor.simulateAsyncExecutionOfLastCommand(); Loading Loading @@ -613,7 +645,7 @@ public class RulesManagerServiceTest { callback.assertNoResultReceived(); // Set up the installer. configureStageUninstallExpectation(true /* success */); configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_SUCCESS); // Simulate the async execution. mFakeExecutor.simulateAsyncExecutionOfLastCommand(); Loading Loading @@ -644,7 +676,7 @@ public class RulesManagerServiceTest { callback.assertNoResultReceived(); // Set up the installer. configureStageUninstallExpectation(false /* success */); configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_FAIL); // Simulate the async execution. mFakeExecutor.simulateAsyncExecutionOfLastCommand(); Loading Loading @@ -849,8 +881,8 @@ public class RulesManagerServiceTest { .thenReturn(resultCode); } private void configureStageUninstallExpectation(boolean success) throws Exception { doReturn(success).when(mMockTimeZoneDistroInstaller).stageUninstall(); private void configureStageUninstallExpectation(int resultCode) throws Exception { doReturn(resultCode).when(mMockTimeZoneDistroInstaller).stageUninstall(); } private void verifyStageInstallCalled() throws Exception { Loading Loading
services/core/java/com/android/server/timezone/RulesManagerService.java +13 −9 Original line number Diff line number Diff line Loading @@ -343,16 +343,20 @@ public final class RulesManagerService extends IRulesManager.Stub { @Override public void run() { EventLogTags.writeTimezoneUninstallStarted(toStringOrNull(mCheckToken)); boolean success = false; boolean packageTrackerStatus = false; try { success = mInstaller.stageUninstall(); // Right now we just have success (0) / failure (1). All clients should be checking // against SUCCESS. More granular failures may be added in future. int resultCode = success ? Callback.SUCCESS : Callback.ERROR_UNKNOWN_FAILURE; int uninstallResult = mInstaller.stageUninstall(); packageTrackerStatus = (uninstallResult == TimeZoneDistroInstaller.UNINSTALL_SUCCESS || uninstallResult == TimeZoneDistroInstaller.UNINSTALL_NOTHING_INSTALLED); // Right now we just have Callback.SUCCESS / Callback.ERROR_UNKNOWN_FAILURE for // uninstall. All clients should be checking against SUCCESS. More granular failures // may be added in future. int callbackResultCode = packageTrackerStatus ? Callback.SUCCESS : Callback.ERROR_UNKNOWN_FAILURE; EventLogTags.writeTimezoneUninstallComplete( toStringOrNull(mCheckToken), resultCode); sendFinishedStatus(mCallback, resultCode); toStringOrNull(mCheckToken), callbackResultCode); sendFinishedStatus(mCallback, callbackResultCode); } catch (Exception e) { EventLogTags.writeTimezoneUninstallComplete( toStringOrNull(mCheckToken), Callback.ERROR_UNKNOWN_FAILURE); Loading @@ -360,7 +364,7 @@ public final class RulesManagerService extends IRulesManager.Stub { sendFinishedStatus(mCallback, Callback.ERROR_UNKNOWN_FAILURE); } finally { // Notify the package tracker that the operation is now complete. mPackageTracker.recordCheckResult(mCheckToken, success); mPackageTracker.recordCheckResult(mCheckToken, packageTrackerStatus); mOperationInProgress.set(false); } Loading
services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java +37 −5 Original line number Diff line number Diff line Loading @@ -585,7 +585,39 @@ public class RulesManagerServiceTest { verifyNoPackageTrackerCallsMade(); // Set up the installer. configureStageUninstallExpectation(true /* success */); configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_SUCCESS); // Simulate the async execution. mFakeExecutor.simulateAsyncExecutionOfLastCommand(); // Verify the expected calls were made to other components. verifyStageUninstallCalled(); verifyPackageTrackerCalled(token, true /* success */); // Check the callback was called. callback.assertResultReceived(Callback.SUCCESS); } @Test public void requestUninstall_asyncNothingInstalled() throws Exception { configureCallerHasPermission(); CheckToken token = createArbitraryToken(); byte[] tokenBytes = token.toByteArray(); TestCallback callback = new TestCallback(); // Request the uninstall. assertEquals(RulesManager.SUCCESS, mRulesManagerService.requestUninstall(tokenBytes, callback)); // Assert nothing has happened yet. callback.assertNoResultReceived(); verifyNoInstallerCallsMade(); verifyNoPackageTrackerCallsMade(); // Set up the installer. configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_NOTHING_INSTALLED); // Simulate the async execution. mFakeExecutor.simulateAsyncExecutionOfLastCommand(); Loading Loading @@ -613,7 +645,7 @@ public class RulesManagerServiceTest { callback.assertNoResultReceived(); // Set up the installer. configureStageUninstallExpectation(true /* success */); configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_SUCCESS); // Simulate the async execution. mFakeExecutor.simulateAsyncExecutionOfLastCommand(); Loading Loading @@ -644,7 +676,7 @@ public class RulesManagerServiceTest { callback.assertNoResultReceived(); // Set up the installer. configureStageUninstallExpectation(false /* success */); configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_FAIL); // Simulate the async execution. mFakeExecutor.simulateAsyncExecutionOfLastCommand(); Loading Loading @@ -849,8 +881,8 @@ public class RulesManagerServiceTest { .thenReturn(resultCode); } private void configureStageUninstallExpectation(boolean success) throws Exception { doReturn(success).when(mMockTimeZoneDistroInstaller).stageUninstall(); private void configureStageUninstallExpectation(int resultCode) throws Exception { doReturn(resultCode).when(mMockTimeZoneDistroInstaller).stageUninstall(); } private void verifyStageInstallCalled() throws Exception { Loading