Add atom and logging for app overlay
Test: will add cts test
Change-Id: I8573abd8ec920467047fd0db9d9ce22173d84960
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index e64b631..ed570e7 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -96,6 +96,7 @@
ShutdownSequenceReported shutdown_sequence_reported = 56;
BootSequenceReported boot_sequence_reported = 57;
DaveyOccurred davey_occurred = 58;
+ OverlayStateChanged overlay_state_changed = 59;
// TODO: Reorder the numbering so that the most frequent occur events occur in the first 15.
}
@@ -979,6 +980,25 @@
}
/**
+ * Logs overlay action
+ * Logged from:
+ * services/core/java/com/android/server/wm/Session.java
+ */
+message OverlayStateChanged {
+ optional int32 uid = 1;
+
+ optional string package_name = 2;
+
+ optional bool using_alert_window = 3;
+
+ enum State {
+ ENTERED = 1;
+ EXITED = 2;
+ }
+ optional State state = 4;
+}
+
+/**
* Pulls bytes transferred via wifi (Sum of foreground and background usage).
*
* Pulled from:
diff --git a/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java b/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java
index 245a66e..1376687 100644
--- a/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java
+++ b/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java
@@ -96,4 +96,14 @@
context.getApplicationInfo().className,
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 logAppOverlayExit(int uid, String packageName, boolean usingAlertWindow) {
+ StatsLog.write(StatsLog.OVERLAY_STATE_CHANGED, uid, packageName, usingAlertWindow,
+ 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 f09a294..2c3c5d2 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -55,6 +55,7 @@
import android.view.SurfaceSession;
import android.view.WindowManager;
+import com.android.internal.os.logging.MetricsLoggerWrapper;
import com.android.internal.view.IInputContext;
import com.android.internal.view.IInputMethodClient;
import com.android.internal.view.IInputMethodManager;
@@ -508,8 +509,14 @@
// on-going notification for the user to control their visibility.
if (visible) {
changed = mAlertWindowSurfaces.add(surfaceController);
+ if (changed) {
+ MetricsLoggerWrapper.logAppOverlayEnter(mUid, mPackageName, true);
+ }
} else {
changed = mAlertWindowSurfaces.remove(surfaceController);
+ if (changed) {
+ MetricsLoggerWrapper.logAppOverlayExit(mUid, mPackageName, true);
+ }
}
if (changed) {
@@ -530,8 +537,14 @@
if (visible) {
changed = mAppOverlaySurfaces.add(surfaceController);
+ if (changed) {
+ MetricsLoggerWrapper.logAppOverlayEnter(mUid, mPackageName, false);
+ }
} else {
changed = mAppOverlaySurfaces.remove(surfaceController);
+ if (changed) {
+ MetricsLoggerWrapper.logAppOverlayExit(mUid, mPackageName, false);
+ }
}
if (changed) {