Merge "Improve logging of embed failure" into tm-qpr-dev
This commit is contained in:
@@ -106,6 +106,24 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
|
|||||||
public @interface LaunchMode {
|
public @interface LaunchMode {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @hide */
|
||||||
|
public static String launchModeToString(@LaunchMode int launchMode) {
|
||||||
|
switch(launchMode) {
|
||||||
|
case LAUNCH_MULTIPLE:
|
||||||
|
return "LAUNCH_MULTIPLE";
|
||||||
|
case LAUNCH_SINGLE_TOP:
|
||||||
|
return "LAUNCH_SINGLE_TOP";
|
||||||
|
case LAUNCH_SINGLE_TASK:
|
||||||
|
return "LAUNCH_SINGLE_TASK";
|
||||||
|
case LAUNCH_SINGLE_INSTANCE:
|
||||||
|
return "LAUNCH_SINGLE_INSTANCE";
|
||||||
|
case LAUNCH_SINGLE_INSTANCE_PER_TASK:
|
||||||
|
return "LAUNCH_SINGLE_INSTANCE_PER_TASK";
|
||||||
|
default:
|
||||||
|
return "unknown=" + launchMode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The launch mode style requested by the activity. From the
|
* The launch mode style requested by the activity. From the
|
||||||
* {@link android.R.attr#launchMode} attribute.
|
* {@link android.R.attr#launchMode} attribute.
|
||||||
@@ -1585,7 +1603,7 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
|
|||||||
+ " persistableMode=" + persistableModeToString());
|
+ " persistableMode=" + persistableModeToString());
|
||||||
}
|
}
|
||||||
if (launchMode != 0 || flags != 0 || privateFlags != 0 || theme != 0) {
|
if (launchMode != 0 || flags != 0 || privateFlags != 0 || theme != 0) {
|
||||||
pw.println(prefix + "launchMode=" + launchMode
|
pw.println(prefix + "launchMode=" + launchModeToString(launchMode)
|
||||||
+ " flags=0x" + Integer.toHexString(flags)
|
+ " flags=0x" + Integer.toHexString(flags)
|
||||||
+ " privateFlags=0x" + Integer.toHexString(privateFlags)
|
+ " privateFlags=0x" + Integer.toHexString(privateFlags)
|
||||||
+ " theme=0x" + Integer.toHexString(theme));
|
+ " theme=0x" + Integer.toHexString(theme));
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_INSTANCE;
|
|||||||
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_INSTANCE_PER_TASK;
|
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_INSTANCE_PER_TASK;
|
||||||
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TASK;
|
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TASK;
|
||||||
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TOP;
|
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TOP;
|
||||||
|
import static android.content.pm.ActivityInfo.launchModeToString;
|
||||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||||
import static android.os.Process.INVALID_UID;
|
import static android.os.Process.INVALID_UID;
|
||||||
import static android.view.Display.DEFAULT_DISPLAY;
|
import static android.view.Display.DEFAULT_DISPLAY;
|
||||||
@@ -2071,8 +2072,20 @@ class ActivityStarter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mInTaskFragment != null && !canEmbedActivity(mInTaskFragment, r, newTask, targetTask)) {
|
if (mInTaskFragment != null && !canEmbedActivity(mInTaskFragment, r, newTask, targetTask)) {
|
||||||
Slog.e(TAG, "Permission denied: Cannot embed " + r + " to " + mInTaskFragment.getTask()
|
final StringBuilder errorMsg = new StringBuilder("Permission denied: Cannot embed " + r
|
||||||
+ " targetTask= " + targetTask);
|
+ " to " + mInTaskFragment.getTask() + ". newTask=" + newTask + ", targetTask= "
|
||||||
|
+ targetTask);
|
||||||
|
if (newTask && isLaunchModeOneOf(LAUNCH_SINGLE_INSTANCE,
|
||||||
|
LAUNCH_SINGLE_INSTANCE_PER_TASK, LAUNCH_SINGLE_TASK)) {
|
||||||
|
errorMsg.append("\nActivity tries to launch on a new task because the launch mode"
|
||||||
|
+ " is " + launchModeToString(mLaunchMode));
|
||||||
|
} else if (newTask && (mLaunchFlags & (FLAG_ACTIVITY_NEW_DOCUMENT
|
||||||
|
| FLAG_ACTIVITY_NEW_TASK)) != 0) {
|
||||||
|
errorMsg.append("\nActivity tries to launch on a new task because the launch flags"
|
||||||
|
+ " contains FLAG_ACTIVITY_NEW_DOCUMENT or FLAG_ACTIVITY_NEW_TASK. "
|
||||||
|
+ "mLaunchFlag=" + mLaunchFlags);
|
||||||
|
}
|
||||||
|
Slog.e(TAG, errorMsg.toString());
|
||||||
return START_PERMISSION_DENIED;
|
return START_PERMISSION_DENIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3301,12 +3314,8 @@ class ActivityStarter {
|
|||||||
pw.println(mOptions);
|
pw.println(mOptions);
|
||||||
}
|
}
|
||||||
pw.print(prefix);
|
pw.print(prefix);
|
||||||
pw.print("mLaunchSingleTop=");
|
pw.print("mLaunchMode=");
|
||||||
pw.print(LAUNCH_SINGLE_TOP == mLaunchMode);
|
pw.print(launchModeToString(mLaunchMode));
|
||||||
pw.print(" mLaunchSingleInstance=");
|
|
||||||
pw.print(LAUNCH_SINGLE_INSTANCE == mLaunchMode);
|
|
||||||
pw.print(" mLaunchSingleTask=");
|
|
||||||
pw.println(LAUNCH_SINGLE_TASK == mLaunchMode);
|
|
||||||
pw.print(prefix);
|
pw.print(prefix);
|
||||||
pw.print("mLaunchFlags=0x");
|
pw.print("mLaunchFlags=0x");
|
||||||
pw.print(Integer.toHexString(mLaunchFlags));
|
pw.print(Integer.toHexString(mLaunchFlags));
|
||||||
|
|||||||
Reference in New Issue
Block a user