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

Commit 3548b7d0 authored by Chris Göllner's avatar Chris Göllner Committed by Android (Google) Code Review
Browse files

Merge changes I5a14805e,I819a8b2a into main

* changes:
  [Media Projection] Finish server side logging of REQUEST DISPLAYED
  [Media Projection] Finish server side logging of CAPTURE IN PROGRESS
parents 9ebc63fa fa3d03e5
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -193,4 +193,17 @@ interface IMediaProjectionManager {
    @JavaPassthrough(annotation = "@android.annotation.RequiresPermission(android.Manifest"
            + ".permission.MANAGE_MEDIA_PROJECTION)")
    oneway void notifyPermissionRequestInitiated(int hostUid, int sessionCreationSource);

    /**
     * Notifies system server that the permission request was displayed.
     *
     * <p>Only used for emitting atoms.
     *
     * @param hostUid The uid of the process requesting consent to capture, may be an app or
     *                SystemUI.
     */
    @EnforcePermission("android.Manifest.permission.MANAGE_MEDIA_PROJECTION")
    @JavaPassthrough(annotation = "@android.annotation.RequiresPermission(android.Manifest"
            + ".permission.MANAGE_MEDIA_PROJECTION)")
    oneway void notifyPermissionRequestDisplayed(int hostUid);
}
+11 −3
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import com.android.internal.util.FrameworkStatsLog.MEDIA_PROJECTION_STATE_CHANGE
import com.android.internal.util.FrameworkStatsLog.MEDIA_PROJECTION_STATE_CHANGED__CREATION_SOURCE__CREATION_SOURCE_CAST as METRICS_CREATION_SOURCE_CAST
import com.android.internal.util.FrameworkStatsLog.MEDIA_PROJECTION_STATE_CHANGED__CREATION_SOURCE__CREATION_SOURCE_SYSTEM_UI_SCREEN_RECORDER as METRICS_CREATION_SOURCE_SYSTEM_UI_SCREEN_RECORDER
import com.android.internal.util.FrameworkStatsLog.MEDIA_PROJECTION_STATE_CHANGED__CREATION_SOURCE__CREATION_SOURCE_UNKNOWN as METRICS_CREATION_SOURCE_UNKNOWN
import com.android.internal.util.FrameworkStatsLog.MEDIA_PROJECTION_STATE_CHANGED__STATE__MEDIA_PROJECTION_STATE_PERMISSION_REQUEST_DISPLAYED as METRICS_STATE_PERMISSION_REQUEST_DISPLAYED
import com.android.systemui.dagger.SysUISingleton
import javax.inject.Inject

@@ -53,8 +52,17 @@ constructor(private val service: IMediaProjectionManager) {
        }
    }

    fun notifyPermissionRequestDisplayed() {
        notifyToServer(METRICS_STATE_PERMISSION_REQUEST_DISPLAYED, SessionCreationSource.UNKNOWN)
    /**
     * Request to log that the permission request was displayed.
     *
     * @param hostUid The UID of the package that initiates MediaProjection.
     */
    fun notifyPermissionRequestDisplayed(hostUid: Int) {
        try {
            service.notifyPermissionRequestDisplayed(hostUid)
        } catch (e: RemoteException) {
            Log.e(TAG, "Error notifying server of projection displayed", e)
        }
    }

    /**
+1 −1
Original line number Diff line number Diff line
@@ -252,7 +252,7 @@ public class MediaProjectionPermissionActivity extends Activity
        mDialog.show();

        if (savedInstanceState == null) {
            mMediaProjectionMetricsLogger.notifyPermissionRequestDisplayed();
            mMediaProjectionMetricsLogger.notifyPermissionRequestDisplayed(mUid);
        }
    }

+7 −2
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
import com.android.systemui.screenrecord.RecordingController;
import com.android.systemui.settings.UserContextProvider;
import com.android.systemui.statusbar.phone.KeyguardDismissUtil;
import com.android.systemui.statusbar.policy.KeyguardStateController;

@@ -71,6 +72,7 @@ public class ScreenRecordTile extends QSTileImpl<QSTile.BooleanState>
    private final FeatureFlags mFlags;
    private final PanelInteractor mPanelInteractor;
    private final MediaProjectionMetricsLogger mMediaProjectionMetricsLogger;
    private final UserContextProvider mUserContextProvider;

    private long mMillisUntilFinished = 0;

@@ -91,7 +93,8 @@ public class ScreenRecordTile extends QSTileImpl<QSTile.BooleanState>
            KeyguardStateController keyguardStateController,
            DialogLaunchAnimator dialogLaunchAnimator,
            PanelInteractor panelInteractor,
            MediaProjectionMetricsLogger mediaProjectionMetricsLogger
            MediaProjectionMetricsLogger mediaProjectionMetricsLogger,
            UserContextProvider userContextProvider
    ) {
        super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger,
                statusBarStateController, activityStarter, qsLogger);
@@ -103,6 +106,7 @@ public class ScreenRecordTile extends QSTileImpl<QSTile.BooleanState>
        mDialogLaunchAnimator = dialogLaunchAnimator;
        mPanelInteractor = panelInteractor;
        mMediaProjectionMetricsLogger = mediaProjectionMetricsLogger;
        mUserContextProvider = userContextProvider;
    }

    @Override
@@ -195,7 +199,8 @@ public class ScreenRecordTile extends QSTileImpl<QSTile.BooleanState>
                dialog.show();
            }

            mMediaProjectionMetricsLogger.notifyPermissionRequestDisplayed();
            int uid = mUserContextProvider.getUserContext().getUserId();
            mMediaProjectionMetricsLogger.notifyPermissionRequestDisplayed(uid);

            return false;
        };
+9 −0
Original line number Diff line number Diff line
@@ -63,4 +63,13 @@ class MediaProjectionMetricsLoggerTest : SysuiTestCase() {

        verify(service).notifyPermissionRequestInitiated(hostUid, METRICS_CREATION_SOURCE_UNKNOWN)
    }

    @Test
    fun notifyPermissionRequestDisplayed_forwardsToService() {
        val hostUid = 987

        logger.notifyPermissionRequestDisplayed(hostUid)

        verify(service).notifyPermissionRequestDisplayed(hostUid)
    }
}
Loading