Avoid double logging for app overlay
Right now if an app is TYPE_APPLICATION_OVERLAY, it gets logged twice Fix: 73952594 Test: manual test and cts test Change-Id: Ieca79545c76f0773cb939efd236705a067bb1e6d
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user