diff --git a/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java b/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java index adad0362eca9c..bfe3780b64483 100644 --- a/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java +++ b/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java @@ -21,6 +21,7 @@ import android.content.Context; import android.content.pm.PackageManager.NameNotFoundException; import android.util.Pair; import android.util.StatsLog; +import android.view.WindowManager.LayoutParams; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -103,13 +104,27 @@ public class MetricsLoggerWrapper { StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__EXPANDED_TO_FULL_SCREEN); } - public static void logAppOverlayEnter(int uid, String packageName, boolean usingAlertWindow) { - StatsLog.write(StatsLog.OVERLAY_STATE_CHANGED, uid, packageName, usingAlertWindow, - StatsLog.OVERLAY_STATE_CHANGED__STATE__ENTERED); + public static void logAppOverlayEnter(int uid, String packageName, boolean changed, int type, boolean usingAlertWindow) { + if (changed) { + if (type != LayoutParams.TYPE_APPLICATION_OVERLAY) { + StatsLog.write(StatsLog.OVERLAY_STATE_CHANGED, uid, packageName, true, + StatsLog.OVERLAY_STATE_CHANGED__STATE__ENTERED); + } else if (!usingAlertWindow){ + StatsLog.write(StatsLog.OVERLAY_STATE_CHANGED, uid, packageName, false, + StatsLog.OVERLAY_STATE_CHANGED__STATE__ENTERED); + } + } } - public static void logAppOverlayExit(int uid, String packageName, boolean usingAlertWindow) { - StatsLog.write(StatsLog.OVERLAY_STATE_CHANGED, uid, packageName, usingAlertWindow, - StatsLog.OVERLAY_STATE_CHANGED__STATE__EXITED); + public static void logAppOverlayExit(int uid, String packageName, boolean changed, int type, boolean usingAlertWindow) { + if (changed) { + if (type != LayoutParams.TYPE_APPLICATION_OVERLAY) { + StatsLog.write(StatsLog.OVERLAY_STATE_CHANGED, uid, packageName, true, + StatsLog.OVERLAY_STATE_CHANGED__STATE__EXITED); + } else if (!usingAlertWindow){ + StatsLog.write(StatsLog.OVERLAY_STATE_CHANGED, uid, packageName, false, + StatsLog.OVERLAY_STATE_CHANGED__STATE__EXITED); + } + } } } diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java index 2c3c5d281fc63..94b851863323e 100644 --- a/services/core/java/com/android/server/wm/Session.java +++ b/services/core/java/com/android/server/wm/Session.java @@ -509,14 +509,10 @@ class Session extends IWindowSession.Stub implements IBinder.DeathRecipient { // on-going notification for the user to control their visibility. if (visible) { changed = mAlertWindowSurfaces.add(surfaceController); - if (changed) { - MetricsLoggerWrapper.logAppOverlayEnter(mUid, mPackageName, true); - } + MetricsLoggerWrapper.logAppOverlayEnter(mUid, mPackageName, changed, type, true); } else { changed = mAlertWindowSurfaces.remove(surfaceController); - if (changed) { - MetricsLoggerWrapper.logAppOverlayExit(mUid, mPackageName, true); - } + MetricsLoggerWrapper.logAppOverlayExit(mUid, mPackageName, changed, type, true); } if (changed) { @@ -537,14 +533,10 @@ class Session extends IWindowSession.Stub implements IBinder.DeathRecipient { if (visible) { changed = mAppOverlaySurfaces.add(surfaceController); - if (changed) { - MetricsLoggerWrapper.logAppOverlayEnter(mUid, mPackageName, false); - } + MetricsLoggerWrapper.logAppOverlayEnter(mUid, mPackageName, changed, type, false); } else { changed = mAppOverlaySurfaces.remove(surfaceController); - if (changed) { - MetricsLoggerWrapper.logAppOverlayExit(mUid, mPackageName, false); - } + MetricsLoggerWrapper.logAppOverlayExit(mUid, mPackageName, changed, type, false); } if (changed) {