Loading services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +31 −3 Original line number Diff line number Diff line Loading @@ -492,7 +492,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final UsageStatsManagerInternal mUsageStatsManagerInternal; final TelephonyManager mTelephonyManager; private final LockPatternUtils mLockPatternUtils; private final DevicePolicyConstants mConstants; private final DeviceAdminServiceController mDeviceAdminServiceController; private final OverlayPackagesProvider mOverlayPackagesProvider; Loading Loading @@ -539,6 +538,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { private final AtomicBoolean mRemoteBugreportSharingAccepted = new AtomicBoolean(); private final SetupContentObserver mSetupContentObserver; private final DevicePolicyConstantsObserver mConstantsObserver; private DevicePolicyConstants mConstants; private static boolean ENABLE_LOCK_GUARD = Build.IS_ENG || true // STOPSHIP Remove it. Loading Loading @@ -2169,8 +2171,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { mInjector = injector; mContext = Preconditions.checkNotNull(injector.mContext); mHandler = new Handler(Preconditions.checkNotNull(injector.getMyLooper())); mConstants = DevicePolicyConstants.loadFromString( mInjector.settingsGlobalGetString(Global.DEVICE_POLICY_CONSTANTS)); mConstantsObserver = new DevicePolicyConstantsObserver(mHandler); mConstantsObserver.register(); mConstants = loadConstants(); mOwners = Preconditions.checkNotNull(injector.newOwners()); Loading Loading @@ -10954,6 +10958,25 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } private class DevicePolicyConstantsObserver extends ContentObserver { final Uri mConstantsUri = Settings.Global.getUriFor(Settings.Global.DEVICE_POLICY_CONSTANTS); DevicePolicyConstantsObserver(Handler handler) { super(handler); } void register() { mInjector.registerContentObserver( mConstantsUri, /* notifyForDescendents= */ false, this, UserHandle.USER_ALL); } @Override public void onChange(boolean selfChange, Uri uri, int userId) { mConstants = loadConstants(); } } @VisibleForTesting final class LocalService extends DevicePolicyManagerInternal { private List<OnCrossProfileWidgetProvidersChangeListener> mWidgetProviderListeners; Loading Loading @@ -14167,4 +14190,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return false; } } private DevicePolicyConstants loadConstants() { return DevicePolicyConstants.loadFromString( mInjector.settingsGlobalGetString(Global.DEVICE_POLICY_CONSTANTS)); } } services/devicepolicy/java/com/android/server/devicepolicy/UpdateInstaller.java +23 −14 Original line number Diff line number Diff line Loading @@ -16,10 +16,13 @@ package com.android.server.devicepolicy; import android.annotation.Nullable; import android.app.admin.DevicePolicyEventLogger; import android.app.admin.DevicePolicyManager; import android.app.admin.StartInstallingUpdateCallback; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import android.os.Environment; import android.os.FileUtils; Loading @@ -41,7 +44,8 @@ abstract class UpdateInstaller { private ParcelFileDescriptor mUpdateFileDescriptor; private DevicePolicyConstants mConstants; protected Context mContext; protected File mCopiedUpdateFile; @Nullable protected File mCopiedUpdateFile; static final String TAG = "UpdateInstaller"; private DevicePolicyManagerService.Injector mInjector; Loading @@ -59,7 +63,8 @@ abstract class UpdateInstaller { public abstract void installUpdateInThread(); public void startInstallUpdate() { if (!checkIfBatteryIsSufficient()) { mCopiedUpdateFile = null; if (!isBatteryLevelSufficient()) { notifyCallbackOnError( DevicePolicyManager.InstallUpdateCallback.UPDATE_ERROR_BATTERY_LOW, "The battery level must be above " Loading @@ -81,17 +86,21 @@ abstract class UpdateInstaller { thread.start(); } private boolean checkIfBatteryIsSufficient() { BatteryManager batteryManager = (BatteryManager) mContext.getSystemService(Context.BATTERY_SERVICE); if (batteryManager != null) { int chargePercentage = batteryManager .getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); return batteryManager.isCharging() ? chargePercentage >= mConstants.BATTERY_THRESHOLD_CHARGING : chargePercentage >= mConstants.BATTERY_THRESHOLD_NOT_CHARGING; private boolean isBatteryLevelSufficient() { Intent batteryStatus = mContext.registerReceiver( /* receiver= */ null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); float batteryPercentage = calculateBatteryPercentage(batteryStatus); boolean isBatteryPluggedIn = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, /* defaultValue= */ -1) > 0; return isBatteryPluggedIn ? batteryPercentage >= mConstants.BATTERY_THRESHOLD_CHARGING : batteryPercentage >= mConstants.BATTERY_THRESHOLD_NOT_CHARGING; } return false; private float calculateBatteryPercentage(Intent batteryStatus) { int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, /* defaultValue= */ -1); int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, /* defaultValue= */ -1); return 100 * level / (float) scale; } private File copyUpdateFileToDataOtaPackageDir() { Loading Loading @@ -127,7 +136,7 @@ abstract class UpdateInstaller { } void cleanupUpdateFile() { if (mCopiedUpdateFile.exists()) { if (mCopiedUpdateFile != null && mCopiedUpdateFile.exists()) { mCopiedUpdateFile.delete(); } } Loading Loading
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +31 −3 Original line number Diff line number Diff line Loading @@ -492,7 +492,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final UsageStatsManagerInternal mUsageStatsManagerInternal; final TelephonyManager mTelephonyManager; private final LockPatternUtils mLockPatternUtils; private final DevicePolicyConstants mConstants; private final DeviceAdminServiceController mDeviceAdminServiceController; private final OverlayPackagesProvider mOverlayPackagesProvider; Loading Loading @@ -539,6 +538,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { private final AtomicBoolean mRemoteBugreportSharingAccepted = new AtomicBoolean(); private final SetupContentObserver mSetupContentObserver; private final DevicePolicyConstantsObserver mConstantsObserver; private DevicePolicyConstants mConstants; private static boolean ENABLE_LOCK_GUARD = Build.IS_ENG || true // STOPSHIP Remove it. Loading Loading @@ -2169,8 +2171,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { mInjector = injector; mContext = Preconditions.checkNotNull(injector.mContext); mHandler = new Handler(Preconditions.checkNotNull(injector.getMyLooper())); mConstants = DevicePolicyConstants.loadFromString( mInjector.settingsGlobalGetString(Global.DEVICE_POLICY_CONSTANTS)); mConstantsObserver = new DevicePolicyConstantsObserver(mHandler); mConstantsObserver.register(); mConstants = loadConstants(); mOwners = Preconditions.checkNotNull(injector.newOwners()); Loading Loading @@ -10954,6 +10958,25 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } private class DevicePolicyConstantsObserver extends ContentObserver { final Uri mConstantsUri = Settings.Global.getUriFor(Settings.Global.DEVICE_POLICY_CONSTANTS); DevicePolicyConstantsObserver(Handler handler) { super(handler); } void register() { mInjector.registerContentObserver( mConstantsUri, /* notifyForDescendents= */ false, this, UserHandle.USER_ALL); } @Override public void onChange(boolean selfChange, Uri uri, int userId) { mConstants = loadConstants(); } } @VisibleForTesting final class LocalService extends DevicePolicyManagerInternal { private List<OnCrossProfileWidgetProvidersChangeListener> mWidgetProviderListeners; Loading Loading @@ -14167,4 +14190,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return false; } } private DevicePolicyConstants loadConstants() { return DevicePolicyConstants.loadFromString( mInjector.settingsGlobalGetString(Global.DEVICE_POLICY_CONSTANTS)); } }
services/devicepolicy/java/com/android/server/devicepolicy/UpdateInstaller.java +23 −14 Original line number Diff line number Diff line Loading @@ -16,10 +16,13 @@ package com.android.server.devicepolicy; import android.annotation.Nullable; import android.app.admin.DevicePolicyEventLogger; import android.app.admin.DevicePolicyManager; import android.app.admin.StartInstallingUpdateCallback; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import android.os.Environment; import android.os.FileUtils; Loading @@ -41,7 +44,8 @@ abstract class UpdateInstaller { private ParcelFileDescriptor mUpdateFileDescriptor; private DevicePolicyConstants mConstants; protected Context mContext; protected File mCopiedUpdateFile; @Nullable protected File mCopiedUpdateFile; static final String TAG = "UpdateInstaller"; private DevicePolicyManagerService.Injector mInjector; Loading @@ -59,7 +63,8 @@ abstract class UpdateInstaller { public abstract void installUpdateInThread(); public void startInstallUpdate() { if (!checkIfBatteryIsSufficient()) { mCopiedUpdateFile = null; if (!isBatteryLevelSufficient()) { notifyCallbackOnError( DevicePolicyManager.InstallUpdateCallback.UPDATE_ERROR_BATTERY_LOW, "The battery level must be above " Loading @@ -81,17 +86,21 @@ abstract class UpdateInstaller { thread.start(); } private boolean checkIfBatteryIsSufficient() { BatteryManager batteryManager = (BatteryManager) mContext.getSystemService(Context.BATTERY_SERVICE); if (batteryManager != null) { int chargePercentage = batteryManager .getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); return batteryManager.isCharging() ? chargePercentage >= mConstants.BATTERY_THRESHOLD_CHARGING : chargePercentage >= mConstants.BATTERY_THRESHOLD_NOT_CHARGING; private boolean isBatteryLevelSufficient() { Intent batteryStatus = mContext.registerReceiver( /* receiver= */ null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); float batteryPercentage = calculateBatteryPercentage(batteryStatus); boolean isBatteryPluggedIn = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, /* defaultValue= */ -1) > 0; return isBatteryPluggedIn ? batteryPercentage >= mConstants.BATTERY_THRESHOLD_CHARGING : batteryPercentage >= mConstants.BATTERY_THRESHOLD_NOT_CHARGING; } return false; private float calculateBatteryPercentage(Intent batteryStatus) { int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, /* defaultValue= */ -1); int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, /* defaultValue= */ -1); return 100 * level / (float) scale; } private File copyUpdateFileToDataOtaPackageDir() { Loading Loading @@ -127,7 +136,7 @@ abstract class UpdateInstaller { } void cleanupUpdateFile() { if (mCopiedUpdateFile.exists()) { if (mCopiedUpdateFile != null && mCopiedUpdateFile.exists()) { mCopiedUpdateFile.delete(); } } Loading