Loading core/java/android/app/ActivityManager.java +5 −0 Original line number Diff line number Diff line Loading @@ -543,6 +543,11 @@ public class ActivityManager { return stackId == FREEFORM_WORKSPACE_STACK_ID || stackId == FULLSCREEN_WORKSPACE_STACK_ID || stackId == DOCKED_STACK_ID; } /** Returns true if the windows in the stack can receive input keys. */ public static boolean canReceiveKeys(int stackId) { return stackId != PINNED_STACK_ID; } } /** Loading services/core/java/com/android/server/am/ActivityManagerService.java +48 −45 Original line number Diff line number Diff line Loading @@ -2771,18 +2771,20 @@ public final class ActivityManagerService extends ActivityManagerNative } final void setFocusedActivityLocked(ActivityRecord r, String reason) { if (r != null && mFocusedActivity != r) { if (r == null || mFocusedActivity == r) { return; } if (DEBUG_FOCUS) Slog.d(TAG_FOCUS, "setFocusedActivityLocked: r=" + r); ActivityRecord last = mFocusedActivity; final ActivityRecord last = mFocusedActivity; mFocusedActivity = r; if (r.task.taskType != ActivityRecord.HOME_ACTIVITY_TYPE && r.task.taskType != ActivityRecord.RECENTS_ACTIVITY_TYPE) { if (r.task.isApplicationTask()) { if (mCurAppTimeTracker != r.appTimeTracker) { // We are switching app tracking. Complete the current one. if (mCurAppTimeTracker != null) { mCurAppTimeTracker.stop(); mHandler.obtainMessage(REPORT_TIME_TRACKER_MSG, mCurAppTimeTracker).sendToTarget(); mHandler.obtainMessage( REPORT_TIME_TRACKER_MSG, mCurAppTimeTracker).sendToTarget(); mStackSupervisor.clearOtherAppTimeTrackers(r.appTimeTracker); mCurAppTimeTracker = null; } Loading @@ -2796,7 +2798,7 @@ public final class ActivityManagerService extends ActivityManagerNative } else { r.appTimeTracker = null; } if (r.task != null && r.task.voiceInteractor != null) { if (r.task.voiceInteractor != null) { startRunningVoiceLocked(r.task.voiceSession, r.info.applicationInfo.uid); } else { finishRunningVoiceLocked(); Loading @@ -2814,14 +2816,15 @@ public final class ActivityManagerService extends ActivityManagerNative applyUpdateLockStateLocked(r); if (mFocusedActivity.userId != mLastFocusedUserId) { mHandler.removeMessages(FOREGROUND_PROFILE_CHANGED_MSG); mHandler.sendMessage(mHandler.obtainMessage(FOREGROUND_PROFILE_CHANGED_MSG, mFocusedActivity.userId, 0)); mHandler.obtainMessage( FOREGROUND_PROFILE_CHANGED_MSG, mFocusedActivity.userId, 0).sendToTarget(); mLastFocusedUserId = mFocusedActivity.userId; } } EventLog.writeEvent(EventLogTags.AM_FOCUSED_ACTIVITY, EventLogTags.writeAmFocusedActivity( mFocusedActivity == null ? -1 : mFocusedActivity.userId, mFocusedActivity == null ? "NULL" : mFocusedActivity.shortComponentName); mFocusedActivity == null ? "NULL" : mFocusedActivity.shortComponentName, reason); } final void clearFocusedActivity(ActivityRecord r) { Loading @@ -2837,7 +2840,7 @@ public final class ActivityManagerService extends ActivityManagerNative } } mFocusedActivity = null; EventLog.writeEvent(EventLogTags.AM_FOCUSED_ACTIVITY, -1, "NULL"); EventLogTags.writeAmFocusedActivity(-1, "NULL", "clearFocusedActivity"); } } Loading services/core/java/com/android/server/am/ActivityStack.java +33 −33 Original line number Diff line number Diff line Loading @@ -54,7 +54,6 @@ import android.app.IActivityController; import android.app.ResultInfo; import android.app.ActivityManager.RunningTaskInfo; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; Loading @@ -73,7 +72,6 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; import android.provider.Settings; import android.service.voice.IVoiceInteractionSession; import android.util.EventLog; import android.util.Slog; Loading Loading @@ -2827,8 +2825,11 @@ final class ActivityStack { } private void adjustFocusedActivityLocked(ActivityRecord r, String reason) { if (mStackSupervisor.isFocusedStack(this) && mService.mFocusedActivity == r) { ActivityRecord next = topRunningActivityLocked(); if (!mStackSupervisor.isFocusedStack(this) || mService.mFocusedActivity != r) { return; } final ActivityRecord next = topRunningActivityLocked(); final String myReason = reason + " adjustFocus"; if (next != r) { if (next != null && StackId.keepFocusInStackIfPossible(mStackId)) { Loading Loading @@ -2863,7 +2864,6 @@ final class ActivityStack { mService.setFocusedActivityLocked(top, myReason); } } } private boolean adjustFocusToNextVisibleStackLocked(ActivityStack inStack, String reason) { final ActivityStack stack = (inStack != null) ? inStack : getNextVisibleStackLocked(); Loading services/core/java/com/android/server/am/EventLogTags.logtags +1 −1 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ option java_package com.android.server.am 30042 am_activity_fully_drawn_time (User|1|5),(Token|1|5),(Component Name|3),(time|2|3) # Activity focused 30043 am_focused_activity (User|1|5),(Component Name|3) 30043 am_focused_activity (User|1|5),(Component Name|3),(Reason|3) # Stack focus 30044 am_focused_stack (User|1|5),(Focused Stack Id|1|5),(Last Focused Stack Id|1|5),(Reason|3) Loading services/core/java/com/android/server/wm/AppWindowToken.java +4 −0 Original line number Diff line number Diff line Loading @@ -269,6 +269,10 @@ class AppWindowToken extends WindowToken { return candidate; } boolean stackCanReceiveKeys() { return (windows.size() > 0) ? windows.get(windows.size() - 1).stackCanReceiveKeys() : false; } boolean isVisible() { final int N = allAppWindows.size(); for (int i=0; i<N; i++) { Loading Loading
core/java/android/app/ActivityManager.java +5 −0 Original line number Diff line number Diff line Loading @@ -543,6 +543,11 @@ public class ActivityManager { return stackId == FREEFORM_WORKSPACE_STACK_ID || stackId == FULLSCREEN_WORKSPACE_STACK_ID || stackId == DOCKED_STACK_ID; } /** Returns true if the windows in the stack can receive input keys. */ public static boolean canReceiveKeys(int stackId) { return stackId != PINNED_STACK_ID; } } /** Loading
services/core/java/com/android/server/am/ActivityManagerService.java +48 −45 Original line number Diff line number Diff line Loading @@ -2771,18 +2771,20 @@ public final class ActivityManagerService extends ActivityManagerNative } final void setFocusedActivityLocked(ActivityRecord r, String reason) { if (r != null && mFocusedActivity != r) { if (r == null || mFocusedActivity == r) { return; } if (DEBUG_FOCUS) Slog.d(TAG_FOCUS, "setFocusedActivityLocked: r=" + r); ActivityRecord last = mFocusedActivity; final ActivityRecord last = mFocusedActivity; mFocusedActivity = r; if (r.task.taskType != ActivityRecord.HOME_ACTIVITY_TYPE && r.task.taskType != ActivityRecord.RECENTS_ACTIVITY_TYPE) { if (r.task.isApplicationTask()) { if (mCurAppTimeTracker != r.appTimeTracker) { // We are switching app tracking. Complete the current one. if (mCurAppTimeTracker != null) { mCurAppTimeTracker.stop(); mHandler.obtainMessage(REPORT_TIME_TRACKER_MSG, mCurAppTimeTracker).sendToTarget(); mHandler.obtainMessage( REPORT_TIME_TRACKER_MSG, mCurAppTimeTracker).sendToTarget(); mStackSupervisor.clearOtherAppTimeTrackers(r.appTimeTracker); mCurAppTimeTracker = null; } Loading @@ -2796,7 +2798,7 @@ public final class ActivityManagerService extends ActivityManagerNative } else { r.appTimeTracker = null; } if (r.task != null && r.task.voiceInteractor != null) { if (r.task.voiceInteractor != null) { startRunningVoiceLocked(r.task.voiceSession, r.info.applicationInfo.uid); } else { finishRunningVoiceLocked(); Loading @@ -2814,14 +2816,15 @@ public final class ActivityManagerService extends ActivityManagerNative applyUpdateLockStateLocked(r); if (mFocusedActivity.userId != mLastFocusedUserId) { mHandler.removeMessages(FOREGROUND_PROFILE_CHANGED_MSG); mHandler.sendMessage(mHandler.obtainMessage(FOREGROUND_PROFILE_CHANGED_MSG, mFocusedActivity.userId, 0)); mHandler.obtainMessage( FOREGROUND_PROFILE_CHANGED_MSG, mFocusedActivity.userId, 0).sendToTarget(); mLastFocusedUserId = mFocusedActivity.userId; } } EventLog.writeEvent(EventLogTags.AM_FOCUSED_ACTIVITY, EventLogTags.writeAmFocusedActivity( mFocusedActivity == null ? -1 : mFocusedActivity.userId, mFocusedActivity == null ? "NULL" : mFocusedActivity.shortComponentName); mFocusedActivity == null ? "NULL" : mFocusedActivity.shortComponentName, reason); } final void clearFocusedActivity(ActivityRecord r) { Loading @@ -2837,7 +2840,7 @@ public final class ActivityManagerService extends ActivityManagerNative } } mFocusedActivity = null; EventLog.writeEvent(EventLogTags.AM_FOCUSED_ACTIVITY, -1, "NULL"); EventLogTags.writeAmFocusedActivity(-1, "NULL", "clearFocusedActivity"); } } Loading
services/core/java/com/android/server/am/ActivityStack.java +33 −33 Original line number Diff line number Diff line Loading @@ -54,7 +54,6 @@ import android.app.IActivityController; import android.app.ResultInfo; import android.app.ActivityManager.RunningTaskInfo; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; Loading @@ -73,7 +72,6 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; import android.provider.Settings; import android.service.voice.IVoiceInteractionSession; import android.util.EventLog; import android.util.Slog; Loading Loading @@ -2827,8 +2825,11 @@ final class ActivityStack { } private void adjustFocusedActivityLocked(ActivityRecord r, String reason) { if (mStackSupervisor.isFocusedStack(this) && mService.mFocusedActivity == r) { ActivityRecord next = topRunningActivityLocked(); if (!mStackSupervisor.isFocusedStack(this) || mService.mFocusedActivity != r) { return; } final ActivityRecord next = topRunningActivityLocked(); final String myReason = reason + " adjustFocus"; if (next != r) { if (next != null && StackId.keepFocusInStackIfPossible(mStackId)) { Loading Loading @@ -2863,7 +2864,6 @@ final class ActivityStack { mService.setFocusedActivityLocked(top, myReason); } } } private boolean adjustFocusToNextVisibleStackLocked(ActivityStack inStack, String reason) { final ActivityStack stack = (inStack != null) ? inStack : getNextVisibleStackLocked(); Loading
services/core/java/com/android/server/am/EventLogTags.logtags +1 −1 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ option java_package com.android.server.am 30042 am_activity_fully_drawn_time (User|1|5),(Token|1|5),(Component Name|3),(time|2|3) # Activity focused 30043 am_focused_activity (User|1|5),(Component Name|3) 30043 am_focused_activity (User|1|5),(Component Name|3),(Reason|3) # Stack focus 30044 am_focused_stack (User|1|5),(Focused Stack Id|1|5),(Last Focused Stack Id|1|5),(Reason|3) Loading
services/core/java/com/android/server/wm/AppWindowToken.java +4 −0 Original line number Diff line number Diff line Loading @@ -269,6 +269,10 @@ class AppWindowToken extends WindowToken { return candidate; } boolean stackCanReceiveKeys() { return (windows.size() > 0) ? windows.get(windows.size() - 1).stackCanReceiveKeys() : false; } boolean isVisible() { final int N = allAppWindows.size(); for (int i=0; i<N; i++) { Loading