diff options
| author | 2020-03-10 11:08:35 -0700 | |
|---|---|---|
| committer | 2020-03-12 17:22:04 +0000 | |
| commit | be00a83ae2fff92adaa368ec29125db0b545f6dc (patch) | |
| tree | 2c527dc356d15e620dd00d11039a6194ebff8eca | |
| parent | 3c706cfcac6b41852aa43885efd43f50c44b344d (diff) | |
Fix NPE when logging already removed pip activity
Bug: 148943800
Test: Manual
6 files changed, 12 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipAppOpsListener.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipAppOpsListener.java index b09d6e163b77..7dfd99c2110d 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipAppOpsListener.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipAppOpsListener.java @@ -44,7 +44,7 @@ public class PipAppOpsListener { try { // Dismiss the PiP once the user disables the app ops setting for that package final Pair<ComponentName, Integer> topPipActivityInfo = - PipUtils.getTopPinnedActivity(mContext, mActivityManager); + PipUtils.getTopPipActivity(mContext, mActivityManager); if (topPipActivityInfo.first != null) { final ApplicationInfo appInfo = mContext.getPackageManager() .getApplicationInfoAsUser(packageName, 0, topPipActivityInfo.second); diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java index 1fdf92ee3832..32e9a03dfac9 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java @@ -115,7 +115,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio @Override public void onActivityUnpinned() { - final Pair<ComponentName, Integer> topPipActivityInfo = PipUtils.getTopPinnedActivity( + final Pair<ComponentName, Integer> topPipActivityInfo = PipUtils.getTopPipActivity( mContext, mActivityManager); final ComponentName topActivity = topPipActivityInfo.first; mMenuController.onActivityUnpinned(); diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMediaController.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMediaController.java index e57b4166937f..849a62add80f 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMediaController.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMediaController.java @@ -231,7 +231,7 @@ public class PipMediaController { */ private void resolveActiveMediaController(List<MediaController> controllers) { if (controllers != null) { - final ComponentName topActivity = PipUtils.getTopPinnedActivity(mContext, + final ComponentName topActivity = PipUtils.getTopPipActivity(mContext, mActivityManager).first; if (topActivity != null) { for (int i = 0; i < controllers.size(); i++) { diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java index fc04f795c056..2b9b1716cb18 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java @@ -569,7 +569,7 @@ public class PipMenuActivity extends Activity { private void showSettings() { final Pair<ComponentName, Integer> topPipActivityInfo = - PipUtils.getTopPinnedActivity(this, ActivityManager.getService()); + PipUtils.getTopPipActivity(this, ActivityManager.getService()); if (topPipActivityInfo.first != null) { final UserHandle user = UserHandle.of(topPipActivityInfo.second); final Intent settingsIntent = new Intent(ACTION_PICTURE_IN_PICTURE_SETTINGS, 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 90db91a7a29e..b5fb1a9dba9a 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java @@ -31,6 +31,7 @@ import android.graphics.Rect; import android.os.Handler; import android.os.RemoteException; import android.util.Log; +import android.util.Pair; import android.util.Size; import android.view.IPinnedStackController; import android.view.InputEvent; @@ -148,8 +149,11 @@ public class PipTouchHandler { @Override public void onPipDismiss() { - MetricsLoggerWrapper.logPictureInPictureDismissByTap(mContext, - PipUtils.getTopPinnedActivity(mContext, mActivityManager)); + Pair<ComponentName, Integer> topPipActivity = PipUtils.getTopPipActivity(mContext, + mActivityManager); + if (topPipActivity.first != null) { + MetricsLoggerWrapper.logPictureInPictureDismissByTap(mContext, topPipActivity); + } mMotionHelper.dismissPip(); } @@ -653,7 +657,7 @@ public class PipTouchHandler { // Check if the user dragged or flung the PiP offscreen to dismiss it if (mMotionHelper.shouldDismissPip() || isFlingToBot) { MetricsLoggerWrapper.logPictureInPictureDismissByDrag(mContext, - PipUtils.getTopPinnedActivity(mContext, mActivityManager)); + PipUtils.getTopPipActivity(mContext, mActivityManager)); mMotionHelper.animateDismiss( vel.x, vel.y, PipTouchHandler.this::updateDismissFraction /* updateAction */); diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipUtils.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipUtils.java index 1ed1904d30fb..4cfec0193b54 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipUtils.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipUtils.java @@ -36,7 +36,7 @@ public class PipUtils { * @return the ComponentName and user id of the top non-SystemUI activity in the pinned stack. * The component name may be null if no such activity exists. */ - public static Pair<ComponentName, Integer> getTopPinnedActivity(Context context, + public static Pair<ComponentName, Integer> getTopPipActivity(Context context, IActivityManager activityManager) { try { final String sysUiPackageName = context.getPackageName(); |