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

Commit b225b815 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Add SpaEnvironment.isSpaExpressiveEnabled

- Avoid inaccessible code in spa.
- Each client can decide whether to enable this by themselves.

Bug: 386013400
Flag: com.android.settingslib.widget.theme.flags.is_expressive_design_enabled
Test: visual - expressive can enabled for spa in Settings
Change-Id: Ieed10d7bbabb17fcfb977aae9aecd3a33e6ee65d
parent d6876f3c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ val androidTop: String = File(rootDir, "../../../../..").canonicalPath

allprojects {
    extra["androidTop"] = androidTop
    extra["jetpackComposeVersion"] = "1.8.0-alpha08"
    extra["jetpackComposeVersion"] = "1.8.0-beta02"
}

subprojects {
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
#

[versions]
agp = "8.8.0"
agp = "8.8.1"
dexmaker-mockito = "2.28.3"
jvm = "21"
kotlin = "2.0.21"
+2 −3
Original line number Diff line number Diff line
@@ -51,16 +51,15 @@ android {

dependencies {
    api(project(":SettingsLibColor"))
    api(project(":SettingsLib:SettingsTheme"))
    api("androidx.appcompat:appcompat:1.7.0")
    api("androidx.compose.material3:material3:1.4.0-alpha05")
    api("androidx.compose.material3:material3:1.4.0-alpha08")
    api("androidx.compose.material:material-icons-extended")
    api("androidx.compose.runtime:runtime-livedata:$jetpackComposeVersion")
    api("androidx.compose.ui:ui-tooling-preview:$jetpackComposeVersion")
    api("androidx.graphics:graphics-shapes-android:1.0.1")
    api("androidx.lifecycle:lifecycle-livedata-ktx")
    api("androidx.lifecycle:lifecycle-runtime-compose")
    api("androidx.navigation:navigation-compose:2.9.0-alpha04")
    api("androidx.navigation:navigation-compose:2.9.0-alpha06")
    api("com.github.PhilJay:MPAndroidChart:v3.1.0-alpha")
    api("com.google.android.material:material:1.13.0-alpha08")
    debugApi("androidx.compose.ui:ui-tooling:$jetpackComposeVersion")
+15 −3
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.Context
import android.util.Log
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import com.android.settingslib.spa.framework.util.SystemProperties

private const val TAG = "SpaEnvironment"

@@ -50,9 +51,7 @@ object SpaEnvironmentFactory {
        Log.d(TAG, "resetForPreview")
    }

    fun isReady(): Boolean {
        return spaEnvironment != null
    }
    fun isReady(): Boolean = spaEnvironment != null

    val instance: SpaEnvironment
        get() {
@@ -60,6 +59,14 @@ object SpaEnvironmentFactory {
                throw UnsupportedOperationException("Spa environment is not set")
            return spaEnvironment!!
        }

    /**
     * Optional instance of SpaEnvironment.
     *
     * Useful when there is fallback logic.
     */
    val optionalInstance: SpaEnvironment?
        get() = spaEnvironment
}

abstract class SpaEnvironment(context: Context) {
@@ -81,6 +88,11 @@ abstract class SpaEnvironment(context: Context) {
    // Specify provider authorities for debugging purpose.
    open val searchProviderAuthorities: String? = null

    /** Specify whether expressive design is enabled. */
    open val isSpaExpressiveEnabled by lazy {
        SystemProperties.getBoolean("is_expressive_design_enabled", false)
    }

    // TODO: add other environment setup here.
    companion object {
        /**
+2 −4
Original line number Diff line number Diff line
@@ -21,8 +21,7 @@ import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import com.android.settingslib.spa.framework.util.SystemProperties
import com.android.settingslib.widget.theme.flags.Flags
import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory

/**
 * The Material 3 Theme for Settings.
@@ -44,6 +43,5 @@ fun SettingsTheme(content: @Composable () -> Unit) {
}

val isSpaExpressiveEnabled by lazy {
    SystemProperties.getBoolean("is_expressive_design_enabled", false) ||
        Flags.isExpressiveDesignEnabled()
    SpaEnvironmentFactory.optionalInstance?.isSpaExpressiveEnabled ?: false
}
Loading