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

Commit 649ef74a authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Move the `isRecording` state in Issuerecording service into a global...

Merge "Move the `isRecording` state in Issuerecording service into a global settings rather than a user-specific variable." into main
parents b351e733 dcf0fcc9
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.qs.tiles.impl.irecording

import android.os.Handler
import android.os.UserHandle
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
@@ -28,6 +29,7 @@ import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.android.systemui.recordissue.IssueRecordingState
import com.android.systemui.settings.fakeUserFileManager
import com.android.systemui.settings.userTracker
import com.android.systemui.util.settings.fakeGlobalSettings
import com.google.common.truth.Truth
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
@@ -51,7 +53,14 @@ class IssueRecordingDataInteractorTest : SysuiTestCase() {

    @Before
    fun setup() {
        state = IssueRecordingState(userTracker, userFileManager)
        state =
            IssueRecordingState(
                userTracker,
                userFileManager,
                Handler.getMain(),
                mContext.contentResolver,
                kosmos.fakeGlobalSettings,
            )
        underTest = IssueRecordingDataInteractor(state, kosmos.testScope.testScheduler)
    }

@@ -67,10 +76,12 @@ class IssueRecordingDataInteractorTest : SysuiTestCase() {
            Truth.assertThat(data?.isRecording).isFalse()

            state.isRecording = true
            state.onRecordingChangeListener.onChange(true)
            runCurrent()
            Truth.assertThat(data?.isRecording).isTrue()

            state.isRecording = false
            state.onRecordingChangeListener.onChange(true)
            runCurrent()
            Truth.assertThat(data?.isRecording).isFalse()
        }
+9 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.qs.tiles.impl.irecording

import android.os.Handler
import android.os.UserHandle
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
@@ -38,6 +39,7 @@ import com.android.systemui.settings.userFileManager
import com.android.systemui.settings.userTracker
import com.android.systemui.statusbar.phone.KeyguardDismissUtil
import com.android.systemui.statusbar.policy.keyguardStateController
import com.android.systemui.util.settings.fakeGlobalSettings
import com.google.common.truth.Truth
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -83,7 +85,13 @@ class IssueRecordingUserActionInteractorTest : SysuiTestCase() {
            underTest =
                IssueRecordingUserActionInteractor(
                    testDispatcher,
                    IssueRecordingState(userTracker, userFileManager),
                    IssueRecordingState(
                        userTracker,
                        userFileManager,
                        Handler.getMain(),
                        mContext.contentResolver,
                        kosmos.fakeGlobalSettings,
                    ),
                    KeyguardDismissUtil(
                        keyguardStateController,
                        statusBarStateController,
+9 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.recordissue
import android.app.IActivityManager
import android.app.NotificationManager
import android.net.Uri
import android.os.Handler
import android.os.UserHandle
import android.testing.TestableLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -33,6 +34,7 @@ import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.settings.userFileManager
import com.android.systemui.settings.userTracker
import com.android.systemui.util.settings.fakeGlobalSettings
import com.android.traceur.TraceConfig
import com.google.common.truth.Truth
import org.junit.Before
@@ -55,7 +57,13 @@ class IssueRecordingServiceSessionTest : SysuiTestCase() {
    private val dialogTransitionAnimator: DialogTransitionAnimator = kosmos.dialogTransitionAnimator
    private lateinit var traceurConnection: TraceurConnection
    private val issueRecordingState =
        IssueRecordingState(kosmos.userTracker, kosmos.userFileManager)
        IssueRecordingState(
            kosmos.userTracker,
            kosmos.userFileManager,
            Handler.getMain(),
            mContext.contentResolver,
            kosmos.fakeGlobalSettings,
        )

    private val iActivityManager = mock<IActivityManager>()
    private val notificationManager = mock<NotificationManager>()
+60 −24
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.recordissue

import android.content.ContentResolver
import android.os.Handler
import android.testing.TestableLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
@@ -23,11 +25,15 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.settings.userFileManager
import com.android.systemui.settings.userTracker
import com.android.systemui.util.settings.fakeGlobalSettings
import com.google.common.truth.Truth
import java.util.concurrent.CountDownLatch
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.any
import org.mockito.kotlin.verify

@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -36,10 +42,19 @@ class IssueRecordingStateTest : SysuiTestCase() {

    private val kosmos = Kosmos()
    private lateinit var underTest: IssueRecordingState
    @Mock private lateinit var resolver: ContentResolver

    @Before
    fun setup() {
        underTest = IssueRecordingState(kosmos.userTracker, kosmos.userFileManager)
        MockitoAnnotations.initMocks(this)
        underTest =
            IssueRecordingState(
                kosmos.userTracker,
                kosmos.userFileManager,
                Handler.getMain(),
                resolver,
                kosmos.fakeGlobalSettings,
            )
    }

    @Test
@@ -47,7 +62,14 @@ class IssueRecordingStateTest : SysuiTestCase() {
        val expected = true

        underTest.takeBugreport = expected
        underTest = IssueRecordingState(kosmos.userTracker, kosmos.userFileManager)
        underTest =
            IssueRecordingState(
                kosmos.userTracker,
                kosmos.userFileManager,
                Handler.getMain(),
                resolver,
                kosmos.fakeGlobalSettings,
            )

        Truth.assertThat(underTest.takeBugreport).isEqualTo(expected)
    }
@@ -57,7 +79,14 @@ class IssueRecordingStateTest : SysuiTestCase() {
        val expected = true

        underTest.recordScreen = expected
        underTest = IssueRecordingState(kosmos.userTracker, kosmos.userFileManager)
        underTest =
            IssueRecordingState(
                kosmos.userTracker,
                kosmos.userFileManager,
                Handler.getMain(),
                resolver,
                kosmos.fakeGlobalSettings,
            )

        Truth.assertThat(underTest.recordScreen).isEqualTo(expected)
    }
@@ -65,7 +94,14 @@ class IssueRecordingStateTest : SysuiTestCase() {
    @Test
    fun hasUserApprovedScreenRecording_isTrue_afterBeingMarkedAsCompleted() {
        underTest.markUserApprovalForScreenRecording()
        underTest = IssueRecordingState(kosmos.userTracker, kosmos.userFileManager)
        underTest =
            IssueRecordingState(
                kosmos.userTracker,
                kosmos.userFileManager,
                Handler.getMain(),
                resolver,
                kosmos.fakeGlobalSettings,
            )

        Truth.assertThat(underTest.hasUserApprovedScreenRecording).isEqualTo(true)
    }
@@ -75,35 +111,35 @@ class IssueRecordingStateTest : SysuiTestCase() {
        val expected = setOf("a", "b", "c")

        underTest.tagTitles = expected
        underTest = IssueRecordingState(kosmos.userTracker, kosmos.userFileManager)
        underTest =
            IssueRecordingState(
                kosmos.userTracker,
                kosmos.userFileManager,
                Handler.getMain(),
                resolver,
                kosmos.fakeGlobalSettings,
            )

        Truth.assertThat(underTest.tagTitles).isEqualTo(expected)
    }

    @Test
    fun isRecording_callsListeners_onTheValueChanging() {
        val count = CountDownLatch(1)
        val listener = Runnable { count.countDown() }
    fun addListener_registersContentObserver_ifListOfListenersIsNotEmpty() {
        val listener = Runnable { /* No-op */ }

        underTest.addListener(listener)
        underTest.isRecording = true

        Truth.assertThat(count.count).isEqualTo(0)
        verify(resolver).registerContentObserver(any(), any(), any())
    }

    @Test
    fun isRecording_callsOnlyListeners_whoHaveNotBeenRemoved() {
        val count1 = CountDownLatch(1)
        val count2 = CountDownLatch(1)
        val listener1 = Runnable { count1.countDown() }
        val listener2 = Runnable { count2.countDown() }

        underTest.addListener(listener1)
        underTest.removeListener(listener1)
        underTest.addListener(listener2)
        underTest.isRecording = true

        Truth.assertThat(count1.count).isEqualTo(1)
        Truth.assertThat(count2.count).isEqualTo(0)
    fun removeListener_unRegistersContentObserver_ifListOfListenersIsEmpty() {
        val listener = Runnable { /* No-op */ }

        underTest.addListener(listener)
        underTest.removeListener(listener)

        verify(resolver).registerContentObserver(any(), any(), any())
        verify(resolver).unregisterContentObserver(any())
    }
}
+6 −4
Original line number Diff line number Diff line
@@ -111,12 +111,14 @@ constructor(

    override fun handleSetListening(listening: Boolean) {
        super.handleSetListening(listening)
        bgExecutor.execute {
            if (listening) {
                issueRecordingState.addListener(onRecordingChangeListener)
            } else {
                issueRecordingState.removeListener(onRecordingChangeListener)
            }
        }
    }

    override fun handleDestroy() {
        super.handleDestroy()
Loading