Merge "Allow doze dream package to start a DreamActivity" into rvc-dev am: 45387676fc am: 0a357617bb

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12066923

Change-Id: Iec4c8cd33554146bcb99a45c13b4fe49523712b9
This commit is contained in:
TreeHugger Robot
2020-07-05 21:40:31 +00:00
committed by Automerger Merge Worker

View File

@@ -268,6 +268,7 @@ import android.os.storage.StorageManager;
import android.service.dreams.DreamActivity;
import android.service.dreams.DreamManagerInternal;
import android.service.voice.IVoiceInteractionSession;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.EventLog;
import android.util.Log;
@@ -2054,23 +2055,28 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
}
static boolean canLaunchDreamActivity(String packageName) {
final DreamManagerInternal dreamManager =
LocalServices.getService(DreamManagerInternal.class);
// Verify that the package is the current active dream. The getActiveDreamComponent()
// call path does not acquire the DreamManager lock and thus is safe to use.
final ComponentName activeDream = dreamManager.getActiveDreamComponent(false /* doze */);
if (activeDream == null || activeDream.getPackageName() == null
|| !activeDream.getPackageName().equals(packageName)) {
if (packageName == null) {
return false;
}
// Verify that the device is dreaming.
if (!LocalServices.getService(ActivityTaskManagerInternal.class).isDreaming()) {
return false;
}
return true;
final DreamManagerInternal dreamManager =
LocalServices.getService(DreamManagerInternal.class);
// Verify that the package is the current active dream or doze component. The
// getActiveDreamComponent() call path does not acquire the DreamManager lock and thus
// is safe to use.
final ComponentName activeDream = dreamManager.getActiveDreamComponent(false /* doze */);
final ComponentName activeDoze = dreamManager.getActiveDreamComponent(true /* doze */);
return TextUtils.equals(packageName, getPackageName(activeDream))
|| TextUtils.equals(packageName, getPackageName(activeDoze));
}
private static String getPackageName(ComponentName componentName) {
return componentName != null ? componentName.getPackageName() : null;
}
private void setActivityType(boolean componentSpecified, int launchedFromUid, Intent intent,