summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chenjie Yu <cjyu@google.com> 2018-02-15 10:19:32 -0800
committer Chenjie Yu <cjyu@google.com> 2018-02-18 00:08:01 -0800
commitae9fdf0403fdb24acc2c1d7e33ec96834d154dcf (patch)
treee490d99fc25a8a56e16bbde359d2caa362ed7312
parent2094d9d306e6f7a7855cd2eb548548cece851cf6 (diff)
fix picture-in-picture logging
+ log uid and activity name Test: manual test. Will add cts test Change-Id: I3d3e77b24779e439eacc06007fae62c037a19fd6
-rw-r--r--cmds/statsd/src/atoms.proto9
-rw-r--r--core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java70
-rw-r--r--packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java13
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java4
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java5
5 files changed, 53 insertions, 48 deletions
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index 85e209be6413..d9094dd1d86d 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -993,21 +993,18 @@ message AppStartFullyDrawnChanged {
* frameworks/base/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
*/
message PictureInPictureStateChanged {
+ // -1 if it is not available
optional int32 uid = 1;
- optional string package_name = 2;
-
- optional string class_name = 3;
+ optional string short_name = 2;
- // Picture-in-Picture action occurred, similar to
- // frameworks/base/proto/src/metrics_constants.proto
enum State {
ENTERED = 1;
EXPANDED_TO_FULL_SCREEN = 2;
MINIMIZED = 3;
DISMISSED = 4;
}
- optional State state = 4;
+ optional State state = 3;
}
/**
diff --git a/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java b/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java
index 1376687be019..adad0362eca9 100644
--- a/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java
+++ b/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java
@@ -16,7 +16,10 @@
package com.android.internal.os.logging;
+import android.content.ComponentName;
import android.content.Context;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.util.Pair;
import android.util.StatsLog;
import com.android.internal.logging.MetricsLogger;
@@ -31,43 +34,49 @@ public class MetricsLoggerWrapper {
private static final int METRIC_VALUE_DISMISSED_BY_TAP = 0;
private static final int METRIC_VALUE_DISMISSED_BY_DRAG = 1;
- public static void logPictureInPictureDismissByTap(Context context) {
+ public static void logPictureInPictureDismissByTap(Context context,
+ Pair<ComponentName, Integer> topActivityInfo) {
MetricsLogger.action(context, MetricsEvent.ACTION_PICTURE_IN_PICTURE_DISMISSED,
METRIC_VALUE_DISMISSED_BY_TAP);
StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
- context.getUserId(),
- context.getApplicationInfo().packageName,
- context.getApplicationInfo().className,
+ getUid(context, topActivityInfo.first, topActivityInfo.second),
+ topActivityInfo.first.flattenToString(),
StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__DISMISSED);
}
- public static void logPictureInPictureDismissByDrag(Context context) {
+ public static void logPictureInPictureDismissByDrag(Context context,
+ Pair<ComponentName, Integer> topActivityInfo) {
MetricsLogger.action(context,
MetricsEvent.ACTION_PICTURE_IN_PICTURE_DISMISSED,
METRIC_VALUE_DISMISSED_BY_DRAG);
StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
- context.getUserId(),
- context.getApplicationInfo().packageName,
- context.getApplicationInfo().className,
+ getUid(context, topActivityInfo.first, topActivityInfo.second),
+ topActivityInfo.first.flattenToString(),
StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__DISMISSED);
}
- public static void logPictureInPictureMinimize(Context context, boolean isMinimized) {
+ public static void logPictureInPictureMinimize(Context context, boolean isMinimized,
+ Pair<ComponentName, Integer> topActivityInfo) {
MetricsLogger.action(context, MetricsEvent.ACTION_PICTURE_IN_PICTURE_MINIMIZED,
isMinimized);
- if (isMinimized) {
- StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
- context.getUserId(),
- context.getApplicationInfo().packageName,
- context.getApplicationInfo().className,
- StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__MINIMIZED);
- } else {
- StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
- context.getUserId(),
- context.getApplicationInfo().packageName,
- context.getApplicationInfo().className,
- StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__EXPANDED_TO_FULL_SCREEN);
+ StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
+ getUid(context, topActivityInfo.first, topActivityInfo.second),
+ topActivityInfo.first.flattenToString(),
+ StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__MINIMIZED);
+ }
+
+ /**
+ * Get uid from component name and user Id
+ * @return uid. -1 if not found.
+ */
+ private static int getUid(Context context, ComponentName componentName, int userId) {
+ int uid = -1;
+ try {
+ uid = context.getPackageManager().getApplicationInfoAsUser(
+ componentName.getPackageName(), 0, userId).uid;
+ } catch (NameNotFoundException e) {
}
+ return uid;
}
public static void logPictureInPictureMenuVisible(Context context, boolean menuStateFull) {
@@ -76,24 +85,21 @@ public class MetricsLoggerWrapper {
}
public static void logPictureInPictureEnter(Context context,
- boolean supportsEnterPipOnTaskSwitch) {
+ int uid, String shortComponentName, boolean supportsEnterPipOnTaskSwitch) {
MetricsLogger.action(context, MetricsEvent.ACTION_PICTURE_IN_PICTURE_ENTERED,
supportsEnterPipOnTaskSwitch);
- if (supportsEnterPipOnTaskSwitch) {
- StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED, context.getUserId(),
- context.getApplicationInfo().packageName,
- context.getApplicationInfo().className,
- StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__ENTERED);
- }
+ StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED, uid,
+ shortComponentName,
+ StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__ENTERED);
}
- public static void logPictureInPictureFullScreen(Context context) {
+ public static void logPictureInPictureFullScreen(Context context, int uid,
+ String shortComponentName) {
MetricsLogger.action(context,
MetricsEvent.ACTION_PICTURE_IN_PICTURE_EXPANDED_TO_FULLSCREEN);
StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
- context.getUserId(),
- context.getApplicationInfo().packageName,
- context.getApplicationInfo().className,
+ uid,
+ shortComponentName,
StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__EXPANDED_TO_FULL_SCREEN);
}
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
index b25351731a35..77931e447e1d 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
@@ -16,9 +16,9 @@
package com.android.systemui.pip.phone;
-import static com.android.systemui.pip.phone.PipMenuActivityController.MENU_STATE_NONE;
import static com.android.systemui.pip.phone.PipMenuActivityController.MENU_STATE_CLOSE;
import static com.android.systemui.pip.phone.PipMenuActivityController.MENU_STATE_FULL;
+import static com.android.systemui.pip.phone.PipMenuActivityController.MENU_STATE_NONE;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -42,7 +42,7 @@ import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityWindowInfo;
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+
import com.android.internal.os.logging.MetricsLoggerWrapper;
import com.android.internal.policy.PipSnapAlgorithm;
import com.android.systemui.R;
@@ -158,8 +158,9 @@ public class PipTouchHandler {
@Override
public void onPipDismiss() {
+ MetricsLoggerWrapper.logPictureInPictureDismissByTap(mContext,
+ PipUtils.getTopPinnedActivity(mContext, mActivityManager));
mMotionHelper.dismissPip();
- MetricsLoggerWrapper.logPictureInPictureDismissByTap(mContext);
}
@Override
@@ -458,7 +459,8 @@ public class PipTouchHandler {
return;
}
if (mIsMinimized != isMinimized) {
- MetricsLoggerWrapper.logPictureInPictureMinimize(mContext, isMinimized);
+ MetricsLoggerWrapper.logPictureInPictureMinimize(mContext,
+ isMinimized, PipUtils.getTopPinnedActivity(mContext, mActivityManager));
}
mIsMinimized = isMinimized;
mSnapAlgorithm.setMinimized(isMinimized);
@@ -661,9 +663,10 @@ public class PipTouchHandler {
if (ENABLE_DISMISS_DRAG_TO_EDGE) {
// Check if the user dragged or flung the PiP offscreen to dismiss it
if (mMotionHelper.shouldDismissPip() || isFlingToBot) {
+ MetricsLoggerWrapper.logPictureInPictureDismissByDrag(mContext,
+ PipUtils.getTopPinnedActivity(mContext, mActivityManager));
mMotionHelper.animateDismiss(mMotionHelper.getBounds(), vel.x,
vel.y, mUpdateScrimListener);
- MetricsLoggerWrapper.logPictureInPictureDismissByDrag(mContext);
return true;
}
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 2af284c12288..59c894be95f0 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -8655,8 +8655,8 @@ public class ActivityManagerService extends IActivityManager.Stub
final PinnedActivityStack stack = r.getStack();
stack.setPictureInPictureAspectRatio(aspectRatio);
stack.setPictureInPictureActions(actions);
-
- MetricsLoggerWrapper.logPictureInPictureEnter(mContext, r.supportsEnterPipOnTaskSwitch);
+ MetricsLoggerWrapper.logPictureInPictureEnter(mContext, r.appInfo.uid,
+ r.shortComponentName, r.supportsEnterPipOnTaskSwitch);
logPictureInPictureArgs(params);
};
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index f4f60c2c43a9..a82facd174a3 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -2599,9 +2599,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// resize when we remove task from it below and it is detached from the
// display because it no longer contains any tasks.
mAllowDockedStackResize = false;
- } else if (inPinnedWindowingMode && onTop) {
- // Log if we are expanding the PiP to fullscreen
- MetricsLoggerWrapper.logPictureInPictureFullScreen(mService.mContext);
}
// If we are moving from the pinned stack, then the animation takes care of updating
@@ -2624,6 +2621,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
isTopTask /* animate */, DEFER_RESUME,
schedulePictureInPictureModeChange,
"moveTasksToFullscreenStack - onTop");
+ MetricsLoggerWrapper.logPictureInPictureFullScreen(mService.mContext,
+ task.effectiveUid, task.realActivity.flattenToString());
} else {
// Position the tasks in the fullscreen stack in order at the bottom of the
// stack. Also defer resume until all the tasks have been moved to the