Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae1797d1 authored by Chenjie Yu's avatar Chenjie Yu Committed by Android (Google) Code Review
Browse files

Merge "Avoid double logging for app overlay"

parents cd11321e 08d6d728
Loading
Loading
Loading
Loading
+21 −6
Original line number Diff line number Diff line
@@ -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,
    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,
    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);
            }
        }
    }
}
+4 −12
Original line number Diff line number Diff line
@@ -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) {