Write system property persist.sys.provisioned
When the device is provisioned, write a system property
to indicate device provisioned.
Test: manual
Bug: 131702833
Change-Id: I7ade97770658b3aa67d642446dd66c410ec4c5a3
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index 8e7277c..16af071 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -66,6 +66,7 @@
namespace android {
static const char OEM_BOOTANIMATION_FILE[] = "/oem/media/bootanimation.zip";
+static const char PRODUCT_BOOTANIMATION_DARK_FILE[] = "/product/media/bootanimation-dark.zip";
static const char PRODUCT_BOOTANIMATION_FILE[] = "/product/media/bootanimation.zip";
static const char SYSTEM_BOOTANIMATION_FILE[] = "/system/media/bootanimation.zip";
static const char PRODUCT_ENCRYPTED_BOOTANIMATION_FILE[] = "/product/media/bootanimation-encrypted.zip";
@@ -141,7 +142,6 @@
return mSession;
}
-
void BootAnimation::binderDied(const wp<IBinder>&)
{
// woah, surfaceflinger died!
@@ -355,8 +355,11 @@
}
}
}
+
+ const bool playDarkAnim = android::base::GetIntProperty("ro.boot.theme", 0) == 1;
static const char* bootFiles[] =
- {PRODUCT_BOOTANIMATION_FILE, OEM_BOOTANIMATION_FILE, SYSTEM_BOOTANIMATION_FILE};
+ {playDarkAnim ? PRODUCT_BOOTANIMATION_DARK_FILE : PRODUCT_BOOTANIMATION_FILE,
+ OEM_BOOTANIMATION_FILE, SYSTEM_BOOTANIMATION_FILE};
static const char* shutdownFiles[] =
{PRODUCT_SHUTDOWNANIMATION_FILE, OEM_SHUTDOWNANIMATION_FILE, SYSTEM_SHUTDOWNANIMATION_FILE};
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index ea71a3b..2d38bcf 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -406,6 +406,9 @@
*/
public static final int TOP_APP_PRIORITY_BOOST = -10;
+ private static final String SYSTEM_PROPERTY_DEVICE_PROVISIONED =
+ "persist.sys.device_provisioned";
+
static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityManagerService" : TAG_AM;
static final String TAG_BACKUP = TAG + POSTFIX_BACKUP;
private static final String TAG_BROADCAST = TAG + POSTFIX_BROADCAST;
@@ -8893,6 +8896,8 @@
mAtmInternal.updateTopComponentForFactoryTest();
+ watchDeviceProvisioning(mContext);
+
retrieveSettings();
mUgmInternal.onSystemReady();
@@ -9008,6 +9013,32 @@
}
}
+ private void watchDeviceProvisioning(Context context) {
+ // setting system property based on whether device is provisioned
+
+ if (isDeviceProvisioned(context)) {
+ SystemProperties.set(SYSTEM_PROPERTY_DEVICE_PROVISIONED, "1");
+ } else {
+ // watch for device provisioning change
+ context.getContentResolver().registerContentObserver(
+ Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), false,
+ new ContentObserver(new Handler(Looper.getMainLooper())) {
+ @Override
+ public void onChange(boolean selfChange) {
+ if (isDeviceProvisioned(context)) {
+ SystemProperties.set(SYSTEM_PROPERTY_DEVICE_PROVISIONED, "1");
+ context.getContentResolver().unregisterContentObserver(this);
+ }
+ }
+ });
+ }
+ }
+
+ private boolean isDeviceProvisioned(Context context) {
+ return Settings.Global.getInt(context.getContentResolver(),
+ Settings.Global.DEVICE_PROVISIONED, 0) != 0;
+ }
+
private void startBroadcastObservers() {
for (BroadcastQueue queue : mBroadcastQueues) {
queue.start(mContext.getContentResolver());