Loading src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java +14 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,8 @@ import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.EventLogTags; import com.android.settings.R; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.overlay.FeatureFactory; import com.android.settings.users.UserDialogs; import com.android.settingslib.RestrictedLockUtils; Loading Loading @@ -427,6 +429,9 @@ public class DeviceAdminAdd extends Activity { mDPM.setActiveAdmin(mDeviceAdmin.getComponent(), mRefreshing); EventLog.writeEvent(EventLogTags.EXP_DET_DEVICE_ADMIN_ACTIVATED_BY_USER, mDeviceAdmin.getActivityInfo().applicationInfo.uid); unrestrictAppIfPossible(BatteryUtils.getInstance(this)); setResult(Activity.RESULT_OK); } catch (RuntimeException e) { // Something bad happened... could be that it was Loading @@ -448,6 +453,15 @@ public class DeviceAdminAdd extends Activity { finish(); } void unrestrictAppIfPossible(BatteryUtils batteryUtils) { // Unrestrict admin app if it is already been restricted final String packageName = mDeviceAdmin.getComponent().getPackageName(); final int uid = batteryUtils.getPackageUid(packageName); if (batteryUtils.isForceAppStandbyEnabled(uid, packageName)) { batteryUtils.setForceAppStandby(uid, packageName, AppOpsManager.MODE_ALLOWED); } } void continueRemoveAction(CharSequence msg) { if (!mWaitingForRemoveMsg) { return; Loading tests/robotests/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAddTest.java +37 −0 Original line number Diff line number Diff line Loading @@ -18,23 +18,37 @@ package com.android.settings.applications.specialaccess.deviceadmin; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.AppOpsManager; import android.app.admin.DeviceAdminInfo; import android.content.Context; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; @RunWith(SettingsRobolectricTestRunner.class) public class DeviceAdminAddTest { private static final int UID = 12345; private static final String PACKAGE_NAME = "com.android.test.device.admin"; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private DeviceAdminInfo mDeviceAdmin; @Mock private BatteryUtils mBatteryUtils; private FakeFeatureFactory mFeatureFactory; private DeviceAdminAdd mDeviceAdminAdd; Loading @@ -44,6 +58,10 @@ public class DeviceAdminAddTest { mFeatureFactory = FakeFeatureFactory.setupForTest(); mDeviceAdminAdd = Robolectric.buildActivity(DeviceAdminAdd.class).get(); doReturn(UID).when(mBatteryUtils).getPackageUid(PACKAGE_NAME); when(mDeviceAdmin.getComponent().getPackageName()).thenReturn(PACKAGE_NAME); mDeviceAdminAdd.mDeviceAdmin = mDeviceAdmin; } @Test Loading @@ -56,4 +74,23 @@ public class DeviceAdminAddTest { verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class), eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_DENY), eq("app")); } @Test public void unrestrictAppIfPossible_appRestricted_unrestrictApp() { doReturn(true).when(mBatteryUtils).isForceAppStandbyEnabled(UID, PACKAGE_NAME); mDeviceAdminAdd.unrestrictAppIfPossible(mBatteryUtils); verify(mBatteryUtils).setForceAppStandby(UID, PACKAGE_NAME, AppOpsManager.MODE_ALLOWED); } @Test public void unrestrictAppIfPossible_appUnrestricted_doNothing() { doReturn(false).when(mBatteryUtils).isForceAppStandbyEnabled(UID, PACKAGE_NAME); mDeviceAdminAdd.unrestrictAppIfPossible(mBatteryUtils); verify(mBatteryUtils, never()).setForceAppStandby(UID, PACKAGE_NAME, AppOpsManager.MODE_ALLOWED); } } Loading
src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java +14 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,8 @@ import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.EventLogTags; import com.android.settings.R; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.overlay.FeatureFactory; import com.android.settings.users.UserDialogs; import com.android.settingslib.RestrictedLockUtils; Loading Loading @@ -427,6 +429,9 @@ public class DeviceAdminAdd extends Activity { mDPM.setActiveAdmin(mDeviceAdmin.getComponent(), mRefreshing); EventLog.writeEvent(EventLogTags.EXP_DET_DEVICE_ADMIN_ACTIVATED_BY_USER, mDeviceAdmin.getActivityInfo().applicationInfo.uid); unrestrictAppIfPossible(BatteryUtils.getInstance(this)); setResult(Activity.RESULT_OK); } catch (RuntimeException e) { // Something bad happened... could be that it was Loading @@ -448,6 +453,15 @@ public class DeviceAdminAdd extends Activity { finish(); } void unrestrictAppIfPossible(BatteryUtils batteryUtils) { // Unrestrict admin app if it is already been restricted final String packageName = mDeviceAdmin.getComponent().getPackageName(); final int uid = batteryUtils.getPackageUid(packageName); if (batteryUtils.isForceAppStandbyEnabled(uid, packageName)) { batteryUtils.setForceAppStandby(uid, packageName, AppOpsManager.MODE_ALLOWED); } } void continueRemoveAction(CharSequence msg) { if (!mWaitingForRemoveMsg) { return; Loading
tests/robotests/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAddTest.java +37 −0 Original line number Diff line number Diff line Loading @@ -18,23 +18,37 @@ package com.android.settings.applications.specialaccess.deviceadmin; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.AppOpsManager; import android.app.admin.DeviceAdminInfo; import android.content.Context; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; @RunWith(SettingsRobolectricTestRunner.class) public class DeviceAdminAddTest { private static final int UID = 12345; private static final String PACKAGE_NAME = "com.android.test.device.admin"; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private DeviceAdminInfo mDeviceAdmin; @Mock private BatteryUtils mBatteryUtils; private FakeFeatureFactory mFeatureFactory; private DeviceAdminAdd mDeviceAdminAdd; Loading @@ -44,6 +58,10 @@ public class DeviceAdminAddTest { mFeatureFactory = FakeFeatureFactory.setupForTest(); mDeviceAdminAdd = Robolectric.buildActivity(DeviceAdminAdd.class).get(); doReturn(UID).when(mBatteryUtils).getPackageUid(PACKAGE_NAME); when(mDeviceAdmin.getComponent().getPackageName()).thenReturn(PACKAGE_NAME); mDeviceAdminAdd.mDeviceAdmin = mDeviceAdmin; } @Test Loading @@ -56,4 +74,23 @@ public class DeviceAdminAddTest { verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class), eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_DENY), eq("app")); } @Test public void unrestrictAppIfPossible_appRestricted_unrestrictApp() { doReturn(true).when(mBatteryUtils).isForceAppStandbyEnabled(UID, PACKAGE_NAME); mDeviceAdminAdd.unrestrictAppIfPossible(mBatteryUtils); verify(mBatteryUtils).setForceAppStandby(UID, PACKAGE_NAME, AppOpsManager.MODE_ALLOWED); } @Test public void unrestrictAppIfPossible_appUnrestricted_doNothing() { doReturn(false).when(mBatteryUtils).isForceAppStandbyEnabled(UID, PACKAGE_NAME); mDeviceAdminAdd.unrestrictAppIfPossible(mBatteryUtils); verify(mBatteryUtils, never()).setForceAppStandby(UID, PACKAGE_NAME, AppOpsManager.MODE_ALLOWED); } }