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

Commit 8f07c2af authored by dakinola's avatar dakinola Committed by Daniel Akinola
Browse files

Update ScreenRecorder to handle StopReason

Ensuring that the screen recorder and other dependent components (privacy chip, qs tile, etc.) all pass the correct stop reason through the logic

Bug: 341319250
Flag: EXEMPT bugfix
Test: atest CastTileTest
Test: atest MediaRouterRepositoryTest
Test: atest RecordingServiceTest
Test: atest ScreenRecordRepositoryTest
Test: atest ScreenRecordTileTest
Test: atest ScreenRecordTileUserActionInteractorTest
Change-Id: I2735a19b8d9240114edd3efa28b3688f8ecf603d
parent 02d89d42
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -323,6 +323,19 @@ public final class MediaProjection {
        }
    }

    /**
     * Stops projection.
     * @hide
     */
    public void stop(@StopReason int stopReason) {
        try {
            Log.d(TAG, "Content Recording: stopping projection");
            mImpl.stop(stopReason);
        } catch (RemoteException e) {
            Log.e(TAG, "Unable to stop projection", e);
        }
    }

    /**
     * Get the underlying IMediaProjection.
     * @hide
+3 −2
Original line number Diff line number Diff line
@@ -16,8 +16,9 @@

package com.android.systemui.mediarouter.data.repository

import androidx.test.filters.SmallTest
import android.media.projection.StopReason
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.Kosmos
@@ -101,7 +102,7 @@ class MediaRouterRepositoryTest : SysuiTestCase() {
                origin = CastDevice.CastOrigin.MediaRouter,
            )

        underTest.stopCasting(device)
        underTest.stopCasting(device, StopReason.STOP_UNKNOWN)

        assertThat(castController.lastStoppedDevice).isEqualTo(device)
    }
+4 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static junit.framework.Assert.assertTrue;
import static junit.framework.TestCase.assertEquals;

import static org.junit.Assert.assertFalse;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.mock;
@@ -30,6 +31,7 @@ import static org.mockito.Mockito.when;
import android.media.MediaRouter;
import android.media.MediaRouter.RouteInfo;
import android.media.projection.MediaProjectionInfo;
import android.media.projection.StopReason;
import android.os.Handler;
import android.service.quicksettings.Tile;
import android.testing.TestableLooper;
@@ -336,7 +338,8 @@ public class CastTileTest extends SysuiTestCase {
        mCastTile.handleClick(null /* view */);
        mTestableLooper.processAllMessages();

        verify(mController, times(1)).stopCasting(same(device));
        verify(mController, times(1))
                .stopCasting(same(device), eq(StopReason.STOP_QS_TILE));
    }

    @Test
+3 −1
Original line number Diff line number Diff line
@@ -23,11 +23,13 @@ import static junit.framework.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.Dialog;
import android.media.projection.StopReason;
import android.os.Handler;
import android.service.quicksettings.Tile;
import android.testing.TestableLooper;
@@ -214,7 +216,7 @@ public class ScreenRecordTileTest extends SysuiTestCase {

        mTile.handleClick(null /* view */);

        verify(mController, times(1)).stopRecording();
        verify(mController, times(1)).stopRecording(eq(StopReason.STOP_QS_TILE));
    }

    @Test
+2 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.qs.tiles.impl.screenrecord.domain.interactor

import android.app.Dialog
import android.media.projection.StopReason
import android.os.UserHandle
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
@@ -92,7 +93,7 @@ class ScreenRecordTileUserActionInteractorTest : SysuiTestCase() {

        underTest.handleInput(QSTileInputTestKtx.click(recordingModel))

        verify(recordingController).stopRecording()
        verify(recordingController).stopRecording(eq(StopReason.STOP_QS_TILE))
    }

    @Test
Loading