Merge "Allow doze dream package to start a DreamActivity" into rvc-dev am: 45387676fc
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12066923 Change-Id: Ie9b5c194267602752ab29ebacd0104d0afdc8768
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user