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

Commit 0409f0ee authored by Zekan Qian's avatar Zekan Qian Committed by Android (Google) Code Review
Browse files

Merge "Refactor SliceDataRepository"

parents 8decff09 ea644d1d
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -23,7 +23,7 @@ import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory


class SpaSliceBroadcastReceiver : BroadcastReceiver() {
class SpaSliceBroadcastReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
    override fun onReceive(context: Context?, intent: Intent?) {
        val sliceRepository = SpaEnvironmentFactory.instance.sliceDataRepository
        val sliceRepository by SpaEnvironmentFactory.instance.sliceDataRepository
        val sliceUri = intent?.data ?: return
        val sliceUri = intent?.data ?: return
        val sliceData = sliceRepository.getActiveSliceData(sliceUri) ?: return
        val sliceData = sliceRepository.getActiveSliceData(sliceUri) ?: return
        sliceData.doAction()
        sliceData.doAction()
+2 −1
Original line number Original line Diff line number Diff line
@@ -32,7 +32,8 @@ private const val TAG = "SpaSliceProvider"
class SpaSliceProvider : SliceProvider(), Observer<Slice?> {
class SpaSliceProvider : SliceProvider(), Observer<Slice?> {
    private fun getOrPutSliceData(sliceUri: Uri): EntrySliceData? {
    private fun getOrPutSliceData(sliceUri: Uri): EntrySliceData? {
        if (!SpaEnvironmentFactory.isReady()) return null
        if (!SpaEnvironmentFactory.isReady()) return null
        return SpaEnvironmentFactory.instance.sliceDataRepository.getOrBuildSliceData(sliceUri)
        val sliceRepository by SpaEnvironmentFactory.instance.sliceDataRepository
        return sliceRepository.getOrBuildSliceData(sliceUri)
    }
    }


    override fun onBindSlice(sliceUri: Uri): Slice? {
    override fun onBindSlice(sliceUri: Uri): Slice? {
+1 −1
Original line number Original line Diff line number Diff line
@@ -65,7 +65,7 @@ abstract class SpaEnvironment(context: Context) {


    val entryRepository = lazy { SettingsEntryRepository(pageProviderRepository.value) }
    val entryRepository = lazy { SettingsEntryRepository(pageProviderRepository.value) }


    val sliceDataRepository = SettingsSliceDataRepository()
    val sliceDataRepository = lazy { SettingsSliceDataRepository(entryRepository.value) }


    // In Robolectric test, applicationContext is not available. Use context as fallback.
    // In Robolectric test, applicationContext is not available. Use context as fallback.
    val appContext: Context = context.applicationContext ?: context
    val appContext: Context = context.applicationContext ?: context
+2 −5
Original line number Original line Diff line number Diff line
@@ -19,11 +19,11 @@ package com.android.settingslib.spa.slice
import android.net.Uri
import android.net.Uri
import android.util.Log
import android.util.Log
import com.android.settingslib.spa.framework.common.EntrySliceData
import com.android.settingslib.spa.framework.common.EntrySliceData
import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory
import com.android.settingslib.spa.framework.common.SettingsEntryRepository


private const val TAG = "SliceDataRepository"
private const val TAG = "SliceDataRepository"


class SettingsSliceDataRepository {
class SettingsSliceDataRepository(private val entryRepository: SettingsEntryRepository) {
    // The map of slice uri to its EntrySliceData, a.k.a. LiveData<Slice?>
    // The map of slice uri to its EntrySliceData, a.k.a. LiveData<Slice?>
    private val sliceDataMap: MutableMap<String, EntrySliceData> = mutableMapOf()
    private val sliceDataMap: MutableMap<String, EntrySliceData> = mutableMapOf()


@@ -46,13 +46,10 @@ class SettingsSliceDataRepository {


    private fun buildLiveDataImpl(sliceUri: Uri): EntrySliceData? {
    private fun buildLiveDataImpl(sliceUri: Uri): EntrySliceData? {
        Log.d(TAG, "buildLiveData: $sliceUri")
        Log.d(TAG, "buildLiveData: $sliceUri")
        if (!SpaEnvironmentFactory.isReady()) return null


        val entryRepository by SpaEnvironmentFactory.instance.entryRepository
        val entryId = sliceUri.getEntryId() ?: return null
        val entryId = sliceUri.getEntryId() ?: return null
        val entry = entryRepository.getEntry(entryId) ?: return null
        val entry = entryRepository.getEntry(entryId) ?: return null
        if (!entry.hasSliceSupport) return null
        if (!entry.hasSliceSupport) return null

        val arguments = sliceUri.getRuntimeArguments()
        val arguments = sliceUri.getRuntimeArguments()
        return entry.getSliceData(runtimeArguments = arguments, sliceUri = sliceUri)
        return entry.getSliceData(runtimeArguments = arguments, sliceUri = sliceUri)
    }
    }