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

Commit 78b00d13 authored by Austin Tankiang's avatar Austin Tankiang
Browse files

Remove prefixes from class property names to align with kotlin style

Bug: 410749534
Test: atest -c 'DocumentsUIGoogleTests:com.android.documentsui.JobPanelUiTest'
Test: atest -c 'DocumentsUIGoogleTests:com.android.documentsui.JobPanelControllerTest'
Flag: com.android.documentsui.flags.visual_signals_ro
Change-Id: I0e7ac0e5dccf4045f60014d2334d9cac3b58b7a6
parent 25370f02
Loading
Loading
Loading
Loading
+42 −41
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ import com.google.android.material.shape.ShapeAppearanceModel
 * Adds a gap between items in a vertical Recycler View.
 */
private class VerticalMarginItemDecoration(
    private val mMarginSize: Int
    private val marginSize: Int
) : RecyclerView.ItemDecoration() {
    override fun getItemOffsets(
        outRect: Rect,
@@ -60,7 +60,7 @@ private class VerticalMarginItemDecoration(
        state: RecyclerView.State
    ) {
        if (parent.getChildAdapterPosition(view) > 0) {
            outRect.top = mMarginSize
            outRect.top = marginSize
        }
    }
}
@@ -69,7 +69,7 @@ private class VerticalMarginItemDecoration(
 * JobPanelController is responsible for receiving broadcast updates from the [FileOperationService]
 * and updating a given menu item to reflect the current progress.
 */
class JobPanelController(private val mContext: Context) : BroadcastReceiver() {
class JobPanelController(private val activityContext: Context) : BroadcastReceiver() {
    companion object {
        private const val TAG = "JobPanelController"
        private const val MAX_PROGRESS = 100
@@ -245,41 +245,41 @@ class JobPanelController(private val mContext: Context) : BroadcastReceiver() {
    }

    /** The current state of the menu progress item. */
    private var mState = State.INVISIBLE
    private var state = State.INVISIBLE

    /** The total progress from 0 to MAX_PROGRESS. */
    private var mTotalProgress = 0
    private var totalProgress = 0

    /** List of jobs currently tracked by this class. */
    private val mCurrentJobs = LinkedHashMap<String, ProgressViewModel>()
    private val currentJobs = LinkedHashMap<String, ProgressViewModel>()

    /** Current menu item being controlled by this class. */
    private var mMenuItem: MenuItem? = null
    private var menuItem: MenuItem? = null

    /** Current panel popup shown if any. */
    private var mPopup: PopupWindow? = null
    private var popup: PopupWindow? = null

    /** Adapter used to display JobProgresses in the recycler list. */
    private var mProgressListAdapter: ProgressListAdapter? = null
    private var progressListAdapter: ProgressListAdapter? = null

    init {
        val filter = IntentFilter(FileOperationService.ACTION_PROGRESS)
        mContext.registerReceiver(this, filter, Context.RECEIVER_NOT_EXPORTED)
        activityContext.registerReceiver(this, filter, Context.RECEIVER_NOT_EXPORTED)
    }

    private fun updateMenuItem(animate: Boolean) {
        if (mState == State.INVISIBLE) {
            mPopup?.dismiss()
        if (state == State.INVISIBLE) {
            popup?.dismiss()
        }

        mMenuItem?.let {
            Menus.setEnabledAndVisible(it, mState != State.INVISIBLE)
        menuItem?.let {
            Menus.setEnabledAndVisible(it, state != State.INVISIBLE)
            val icon = it.actionView as ProgressBar
            when (mState) {
            when (state) {
                State.INDETERMINATE -> icon.isIndeterminate = true
                State.VISIBLE -> icon.apply {
                    isIndeterminate = false
                    setProgress(mTotalProgress, animate)
                    setProgress(totalProgress, animate)
                }
                State.INVISIBLE -> {}
            }
@@ -290,34 +290,35 @@ class JobPanelController(private val mContext: Context) : BroadcastReceiver() {
     * Sets the menu item controlled by this class. The item's actionView must be a [ProgressBar].
     */
    @Suppress("ktlint:standard:comment-wrapping")
    fun setMenuItem(menuItem: MenuItem) {
        val progressIcon = menuItem.actionView as ProgressBar
    fun setMenuItem(newMenuItem: MenuItem) {
        val progressIcon = newMenuItem.actionView as ProgressBar
        progressIcon.max = MAX_PROGRESS
        progressIcon.setOnClickListener { view ->
            val panel = LayoutInflater.from(mContext).inflate(
            val panel = LayoutInflater.from(activityContext).inflate(
                R.layout.job_progress_panel,
                /* root= */ null
            )
            val listAdapter = ProgressListAdapter(this)
            listAdapter.submitList(ArrayList(mCurrentJobs.values))
            listAdapter.submitList(ArrayList(currentJobs.values))
            panel.findViewById<RecyclerView>(R.id.job_progress_list).apply {
                layoutManager = LinearLayoutManager(mContext)
                layoutManager = LinearLayoutManager(context)
                addItemDecoration(VerticalMarginItemDecoration(
                    mContext.resources.getDimensionPixelSize(R.dimen.job_progress_list_gap)
                    context.resources.getDimensionPixelSize(R.dimen.job_progress_list_gap)
                ))
                itemAnimator = null
                adapter = listAdapter
            }
            mProgressListAdapter = listAdapter
            val popupWidth = mContext.resources.getDimension(R.dimen.job_progress_panel_width) +
                    mContext.resources.getDimension(R.dimen.job_progress_panel_margin)
            mPopup = PopupWindow(
            progressListAdapter = listAdapter
            val popupWidth =
                activityContext.resources.getDimension(R.dimen.job_progress_panel_width) +
                        activityContext.resources.getDimension(R.dimen.job_progress_panel_margin)
            popup = PopupWindow(
                /* contentView= */ panel,
                /* width= */ popupWidth.toInt(),
                /* height= */ ViewGroup.LayoutParams.WRAP_CONTENT,
                /* focusable= */ true
            ).apply {
                setOnDismissListener { mProgressListAdapter = null }
                setOnDismissListener { progressListAdapter = null }
                showAsDropDown(
                    /* anchor= */ view,
                    /* xoff= */ view.width - popupWidth.toInt(),
@@ -325,7 +326,7 @@ class JobPanelController(private val mContext: Context) : BroadcastReceiver() {
                )
            }
        }
        mMenuItem = menuItem
        menuItem = newMenuItem
        updateMenuItem(animate = false)
    }

@@ -344,11 +345,11 @@ class JobPanelController(private val mContext: Context) : BroadcastReceiver() {

        for (jobProgress in progresses) {
            Log.d(TAG, "Received $jobProgress")
            mCurrentJobs.merge(jobProgress.id, ProgressViewModel(jobProgress)) {
            currentJobs.merge(jobProgress.id, ProgressViewModel(jobProgress)) {
                old, new -> ProgressViewModel(new.jobProgress, old.expanded)
            }
        }
        for ((jobProgress, _) in mCurrentJobs.values) {
        for ((jobProgress, _) in currentJobs.values) {
            if (jobProgress.state != Job.STATE_COMPLETED) {
                allFinished = false
            }
@@ -358,30 +359,30 @@ class JobPanelController(private val mContext: Context) : BroadcastReceiver() {
            }
        }

        if (mCurrentJobs.isEmpty()) {
            mState = State.INVISIBLE
        if (currentJobs.isEmpty()) {
            state = State.INVISIBLE
        } else if (requiredBytes != 0L) {
            mState = State.VISIBLE
            mTotalProgress = (MAX_PROGRESS * currentBytes / requiredBytes).toInt()
            state = State.VISIBLE
            totalProgress = (MAX_PROGRESS * currentBytes / requiredBytes).toInt()
        } else if (allFinished) {
            mState = State.VISIBLE
            mTotalProgress = MAX_PROGRESS
            state = State.VISIBLE
            totalProgress = MAX_PROGRESS
        } else {
            mState = State.INDETERMINATE
            state = State.INDETERMINATE
        }
        updateMenuItem(animate = true)
        mProgressListAdapter?.submitList(ArrayList(mCurrentJobs.values))
        progressListAdapter?.submitList(ArrayList(currentJobs.values))
    }

    private fun dismissProgress(id: String) {
        mCurrentJobs.remove(id)
        currentJobs.remove(id)
        updateProgress(emptyList())
    }

    private fun toggleExpanded(id: String) {
        mCurrentJobs.computeIfPresent(id) { _, (jobProgress, expanded) ->
        currentJobs.computeIfPresent(id) { _, (jobProgress, expanded) ->
            ProgressViewModel(jobProgress, !expanded)
        }
        mProgressListAdapter?.submitList(ArrayList(mCurrentJobs.values))
        progressListAdapter?.submitList(ArrayList(currentJobs.values))
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -70,11 +70,11 @@ private fun insideItem(progress: MutableJobProgress) = hasSibling(withText(progr
@RunWith(AndroidJUnit4::class)
class JobPanelUiTest : ActivityTestJunit4<FilesActivity>() {
    @get:Rule
    val mCheckFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
    val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()

    private var mLastId = 0L
    private var lastId = 0L

    private fun sendProgress(progresses: ArrayList<JobProgress>, id: Long = mLastId++) {
    private fun sendProgress(progresses: ArrayList<JobProgress>, id: Long = lastId++) {
        val context = InstrumentationRegistry.getInstrumentation().targetContext
        var intent = Intent(ACTION_PROGRESS).apply {
            `package` = context.packageName
+41 −41
Original line number Diff line number Diff line
@@ -45,42 +45,42 @@ import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class JobPanelControllerTest {
    @get:Rule
    val mCheckFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
    val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()

    private val mContext = InstrumentationRegistry.getInstrumentation().targetContext
    private val context = InstrumentationRegistry.getInstrumentation().targetContext

    // The default progress bar only has an indeterminate state, so we need to style it to allow
    // determinate progress.
    private val mProgressBar = ProgressBar(
        mContext,
    private val progressBar = ProgressBar(
        context,
        null,
        android.R.attr.progressBarStyleHorizontal
    )
    private val mMenuItem = ActionMenuView(mContext).menu.add("job_panel").apply {
        actionView = mProgressBar
    private val menuItem = ActionMenuView(context).menu.add("job_panel").apply {
        actionView = progressBar
    }
    private lateinit var mController: JobPanelController
    private var mLastId = 0L
    private lateinit var controller: JobPanelController
    private var lastId = 0L

    private fun sendProgress(progress: ArrayList<JobProgress>, id: Long = mLastId++) {
    private fun sendProgress(progress: ArrayList<JobProgress>, id: Long = lastId++) {
        var intent = Intent(ACTION_PROGRESS).apply {
            `package` = mContext.packageName
            `package` = context.packageName
            putExtra("id", id)
            putParcelableArrayListExtra(EXTRA_PROGRESS, progress)
        }
        mController.onReceive(mContext, intent)
        controller.onReceive(context, intent)
    }

    @Before
    fun setUp() {
        mController = JobPanelController(mContext)
        mController.setMenuItem(mMenuItem)
        controller = JobPanelController(context)
        controller.setMenuItem(menuItem)
    }

    @Test
    fun testSingleJob() {
        assertFalse(mMenuItem.isVisible())
        assertFalse(mMenuItem.isEnabled())
        assertFalse(menuItem.isVisible())
        assertFalse(menuItem.isEnabled())

        val progress = MutableJobProgress(
            id = "jobId1",
@@ -94,9 +94,9 @@ class JobPanelControllerTest {
        )
        sendProgress(arrayListOf(progress.toJobProgress()))

        assertTrue(mMenuItem.isVisible())
        assertTrue(mMenuItem.isEnabled())
        assertEquals(0, mProgressBar.progress)
        assertTrue(menuItem.isVisible())
        assertTrue(menuItem.isEnabled())
        assertEquals(0, progressBar.progress)

        progress.apply {
            state = Job.STATE_SET_UP
@@ -105,9 +105,9 @@ class JobPanelControllerTest {
        }
        sendProgress(arrayListOf(progress.toJobProgress()))

        assertTrue(mMenuItem.isVisible())
        assertTrue(mMenuItem.isEnabled())
        assertEquals(40, mProgressBar.progress)
        assertTrue(menuItem.isVisible())
        assertTrue(menuItem.isEnabled())
        assertEquals(40, progressBar.progress)

        progress.apply {
            state = Job.STATE_COMPLETED
@@ -116,15 +116,15 @@ class JobPanelControllerTest {
        }
        sendProgress(arrayListOf(progress.toJobProgress()))

        assertTrue(mMenuItem.isVisible())
        assertTrue(mMenuItem.isEnabled())
        assertEquals(100, mProgressBar.progress)
        assertTrue(menuItem.isVisible())
        assertTrue(menuItem.isEnabled())
        assertEquals(100, progressBar.progress)
    }

    @Test
    fun testMultipleJobs() {
        assertFalse(mMenuItem.isVisible())
        assertFalse(mMenuItem.isEnabled())
        assertFalse(menuItem.isVisible())
        assertFalse(menuItem.isEnabled())

        val progress1 = MutableJobProgress(
            id = "jobId1",
@@ -148,9 +148,9 @@ class JobPanelControllerTest {
        )
        sendProgress(arrayListOf(progress1.toJobProgress(), progress2.toJobProgress()))

        assertTrue(mMenuItem.isVisible())
        assertTrue(mMenuItem.isEnabled())
        assertEquals(0, mProgressBar.progress)
        assertTrue(menuItem.isVisible())
        assertTrue(menuItem.isEnabled())
        assertEquals(0, progressBar.progress)

        progress1.apply {
            state = Job.STATE_SET_UP
@@ -159,9 +159,9 @@ class JobPanelControllerTest {
        }
        sendProgress(arrayListOf(progress1.toJobProgress(), progress2.toJobProgress()))

        assertTrue(mMenuItem.isVisible())
        assertTrue(mMenuItem.isEnabled())
        assertEquals(8, mProgressBar.progress)
        assertTrue(menuItem.isVisible())
        assertTrue(menuItem.isEnabled())
        assertEquals(8, progressBar.progress)

        progress1.apply {
            state = Job.STATE_COMPLETED
@@ -170,9 +170,9 @@ class JobPanelControllerTest {
        }
        sendProgress(arrayListOf(progress1.toJobProgress(), progress2.toJobProgress()))

        assertTrue(mMenuItem.isVisible())
        assertTrue(mMenuItem.isEnabled())
        assertEquals(20, mProgressBar.progress)
        assertTrue(menuItem.isVisible())
        assertTrue(menuItem.isEnabled())
        assertEquals(20, progressBar.progress)

        progress2.apply {
            state = Job.STATE_SET_UP
@@ -181,9 +181,9 @@ class JobPanelControllerTest {
        }
        sendProgress(arrayListOf(progress1.toJobProgress(), progress2.toJobProgress()))

        assertTrue(mMenuItem.isVisible())
        assertTrue(mMenuItem.isEnabled())
        assertEquals(80, mProgressBar.progress)
        assertTrue(menuItem.isVisible())
        assertTrue(menuItem.isEnabled())
        assertEquals(80, progressBar.progress)

        progress2.apply {
            state = Job.STATE_COMPLETED
@@ -192,8 +192,8 @@ class JobPanelControllerTest {
        }
        sendProgress(arrayListOf(progress1.toJobProgress(), progress2.toJobProgress()))

        assertTrue(mMenuItem.isVisible())
        assertTrue(mMenuItem.isEnabled())
        assertEquals(100, mProgressBar.progress)
        assertTrue(menuItem.isVisible())
        assertTrue(menuItem.isEnabled())
        assertEquals(100, progressBar.progress)
    }
}