diff options
author | Po-Chien Hsueh <pchsueh@google.com> | 2019-04-01 11:26:18 +0800 |
---|---|---|
committer | Po-Chien Hsueh <pchsueh@google.com> | 2019-04-03 10:29:31 +0800 |
commit | 4167b42f891232882637db2f2a606586770bf215 (patch) | |
tree | 3731abc7af76a612ff6bd1d8b2b90c6c27b379c5 | |
parent | c5b6931f27380bd312b74e98fc01288c2239d36f (diff) | |
download | frameworks_base-4167b42f891232882637db2f2a606586770bf215.tar.gz frameworks_base-4167b42f891232882637db2f2a606586770bf215.tar.bz2 frameworks_base-4167b42f891232882637db2f2a606586770bf215.zip |
Use FeatureFlagPersistent to guard DynamicSystem
Check persistent feature flag 'settings_dynamic_system' before
invoking the installation service. User can still use gsi_tool if
the device is unlocked.
Bug: 119647479
Test: Verified with 'adb shell am' and test app.
Change-Id: If2265d877bc7eedf9b7a107bba04d2e95cf1b89a
3 files changed, 41 insertions, 0 deletions
diff --git a/core/java/android/os/image/DynamicSystemClient.java b/core/java/android/os/image/DynamicSystemClient.java index fa2c480aaf4..8f68723e1b7 100644 --- a/core/java/android/os/image/DynamicSystemClient.java +++ b/core/java/android/os/image/DynamicSystemClient.java @@ -35,6 +35,8 @@ import android.os.Message; import android.os.Messenger; import android.os.ParcelableException; import android.os.RemoteException; +import android.os.SystemProperties; +import android.util.FeatureFlagUtils; import android.util.Slog; import java.lang.annotation.Retention; @@ -315,6 +317,11 @@ public class DynamicSystemClient { */ @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void bind() { + if (!featureFlagEnabled()) { + Slog.w(TAG, FeatureFlagUtils.DYNAMIC_SYSTEM + " not enabled; bind() aborted."); + return; + } + Intent intent = new Intent(); intent.setClassName("com.android.dynsystem", "com.android.dynsystem.DynamicSystemInstallationService"); @@ -381,6 +388,11 @@ public class DynamicSystemClient { @RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM) public void start(@NonNull Uri systemUrl, @BytesLong long systemSize, @BytesLong long userdataSize) { + if (!featureFlagEnabled()) { + Slog.w(TAG, FeatureFlagUtils.DYNAMIC_SYSTEM + " not enabled; start() aborted."); + return; + } + Intent intent = new Intent(); intent.setClassName("com.android.dynsystem", @@ -395,6 +407,11 @@ public class DynamicSystemClient { mContext.startActivity(intent); } + private boolean featureFlagEnabled() { + return SystemProperties.getBoolean( + FeatureFlagUtils.PERSIST_PREFIX + FeatureFlagUtils.DYNAMIC_SYSTEM, false); + } + private void handleMessage(Message msg) { switch (msg.what) { case MSG_POST_STATUS: diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java index 38576ee4728..ea7b378eb60 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java @@ -19,8 +19,10 @@ package com.android.dynsystem; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.os.SystemProperties; import android.os.UserHandle; import android.os.image.DynamicSystemClient; +import android.util.FeatureFlagUtils; import android.util.Log; @@ -35,6 +37,10 @@ public class BootCompletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + if (!featureFlagEnabled()) { + return; + } + String action = intent.getAction(); Log.d(TAG, "Broadcast received: " + action); @@ -47,4 +53,9 @@ public class BootCompletedReceiver extends BroadcastReceiver { context.startServiceAsUser(startServiceIntent, UserHandle.SYSTEM); } } + + private boolean featureFlagEnabled() { + return SystemProperties.getBoolean( + FeatureFlagUtils.PERSIST_PREFIX + FeatureFlagUtils.DYNAMIC_SYSTEM, false); + } } diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java index 269645d8016..b1c09381823 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java @@ -25,8 +25,10 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.os.SystemProperties; import android.os.UserHandle; import android.os.image.DynamicSystemClient; +import android.util.FeatureFlagUtils; import android.util.Log; @@ -49,6 +51,12 @@ public class VerificationActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + if (!featureFlagEnabled()) { + Log.w(TAG, FeatureFlagUtils.DYNAMIC_SYSTEM + " not enabled; activity aborted."); + finish(); + return; + } + KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); if (km != null) { @@ -98,6 +106,11 @@ public class VerificationActivity extends Activity { startServiceAsUser(intent, UserHandle.SYSTEM); } + private boolean featureFlagEnabled() { + return SystemProperties.getBoolean( + FeatureFlagUtils.PERSIST_PREFIX + FeatureFlagUtils.DYNAMIC_SYSTEM, false); + } + static boolean isVerified(String url) { return sVerifiedUrl != null && sVerifiedUrl.equals(url); } |