1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.settings.spa 18 19 import android.content.Context 20 import android.util.FeatureFlagUtils 21 import com.android.settings.network.apn.ApnEditPageProvider 22 import com.android.settings.print.PrintSettingsPageProvider 23 import com.android.settings.spa.about.AboutPhonePageProvider 24 import com.android.settings.spa.app.AllAppListPageProvider 25 import com.android.settings.spa.app.AppsMainPageProvider 26 import com.android.settings.spa.app.appcompat.UserAspectRatioAppsPageProvider 27 import com.android.settings.spa.app.appinfo.AppInfoSettingsProvider 28 import com.android.settings.spa.app.appinfo.CloneAppInfoSettingsProvider 29 import com.android.settings.spa.app.backgroundinstall.BackgroundInstalledAppsPageProvider 30 import com.android.settings.spa.app.battery.BatteryOptimizationModeAppListPageProvider 31 import com.android.settings.spa.app.specialaccess.AlarmsAndRemindersAppListProvider 32 import com.android.settings.spa.app.specialaccess.AllFilesAccessAppListProvider 33 import com.android.settings.spa.app.specialaccess.DisplayOverOtherAppsAppListProvider 34 import com.android.settings.spa.app.specialaccess.InstallUnknownAppsListProvider 35 import com.android.settings.spa.app.specialaccess.LongBackgroundTasksAppListProvider 36 import com.android.settings.spa.app.specialaccess.MediaManagementAppsAppListProvider 37 import com.android.settings.spa.app.specialaccess.MediaRoutingControlAppListProvider 38 import com.android.settings.spa.app.specialaccess.ModifySystemSettingsAppListProvider 39 import com.android.settings.spa.app.specialaccess.NfcTagAppsSettingsProvider 40 import com.android.settings.spa.app.specialaccess.PictureInPictureListProvider 41 import com.android.settings.spa.app.specialaccess.SpecialAppAccessPageProvider 42 import com.android.settings.spa.app.specialaccess.TurnScreenOnAppsAppListProvider 43 import com.android.settings.spa.app.specialaccess.UseFullScreenIntentAppListProvider 44 import com.android.settings.spa.app.specialaccess.WifiControlAppListProvider 45 import com.android.settings.spa.app.specialaccess.WriteSystemPreferencesAppListProvider 46 import com.android.settings.spa.app.storage.StorageAppListPageProvider 47 import com.android.settings.spa.core.instrumentation.SpaLogMetricsProvider 48 import com.android.settings.spa.development.UsageStatsPageProvider 49 import com.android.settings.spa.development.compat.PlatformCompatAppListPageProvider 50 import com.android.settings.spa.home.HomePageProvider 51 import com.android.settings.spa.network.NetworkAndInternetPageProvider 52 import com.android.settings.spa.network.NetworkCellularGroupProvider 53 import com.android.settings.spa.network.SimOnboardingPageProvider 54 import com.android.settings.spa.notification.AppListNotificationsPageProvider 55 import com.android.settings.spa.notification.NotificationMainPageProvider 56 import com.android.settings.spa.system.AppLanguagesPageProvider 57 import com.android.settings.spa.system.LanguageAndInputPageProvider 58 import com.android.settings.spa.system.SystemMainPageProvider 59 import com.android.settings.wifi.details2.WifiPrivacyPageProvider 60 import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository 61 import com.android.settingslib.spa.framework.common.SpaEnvironment 62 import com.android.settingslib.spa.framework.common.SpaLogger 63 import com.android.settingslib.spa.framework.common.createSettingsPage 64 import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider 65 import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListTemplate 66 import com.android.settingslib.widget.theme.flags.Flags 67 68 open class SettingsSpaEnvironment(context: Context) : SpaEnvironment(context) { getTogglePermissionAppListProvidersnull69 open fun getTogglePermissionAppListProviders(): List<TogglePermissionAppListProvider> { 70 return listOf( 71 AllFilesAccessAppListProvider, 72 DisplayOverOtherAppsAppListProvider, 73 MediaManagementAppsAppListProvider, 74 MediaRoutingControlAppListProvider, 75 ModifySystemSettingsAppListProvider, 76 UseFullScreenIntentAppListProvider, 77 PictureInPictureListProvider, 78 InstallUnknownAppsListProvider, 79 AlarmsAndRemindersAppListProvider, 80 WifiControlAppListProvider, 81 NfcTagAppsSettingsProvider, 82 LongBackgroundTasksAppListProvider, 83 TurnScreenOnAppsAppListProvider, 84 WriteSystemPreferencesAppListProvider, 85 ) 86 } 87 <lambda>null88 override val pageProviderRepository = lazy { 89 val togglePermissionAppListTemplate = TogglePermissionAppListTemplate( 90 allProviders = getTogglePermissionAppListProviders() 91 ) 92 SettingsPageProviderRepository( 93 allPageProviders = settingsPageProviders() 94 + togglePermissionAppListTemplate.createPageProviders(), 95 rootPages = listOf( 96 HomePageProvider.createSettingsPage() 97 ), 98 ) 99 } 100 101 settingsPageProvidersnull102 open fun settingsPageProviders() = listOf( 103 HomePageProvider, 104 AppsMainPageProvider, 105 AllAppListPageProvider, 106 AppInfoSettingsProvider, 107 SpecialAppAccessPageProvider, 108 NotificationMainPageProvider, 109 AppListNotificationsPageProvider.AllApps, 110 AppListNotificationsPageProvider.ExcludeClassification, 111 AppListNotificationsPageProvider.ExcludeSummarization, 112 SystemMainPageProvider, 113 LanguageAndInputPageProvider, 114 AppLanguagesPageProvider, 115 UsageStatsPageProvider, 116 PlatformCompatAppListPageProvider, 117 BackgroundInstalledAppsPageProvider, 118 UserAspectRatioAppsPageProvider, 119 CloneAppInfoSettingsProvider, 120 NetworkAndInternetPageProvider, 121 AboutPhonePageProvider, 122 StorageAppListPageProvider.Apps, 123 StorageAppListPageProvider.Games, 124 ApnEditPageProvider, 125 SimOnboardingPageProvider, 126 BatteryOptimizationModeAppListPageProvider, 127 NetworkCellularGroupProvider(), 128 WifiPrivacyPageProvider, 129 PrintSettingsPageProvider, 130 ) 131 132 override val logger = if (FeatureFlagUtils.isEnabled( 133 context, FeatureFlagUtils.SETTINGS_ENABLE_SPA_METRICS 134 ) 135 ) SpaLogMetricsProvider // ToDo: Implement 'SpaLogProvider' for SPA settings. 136 else object : SpaLogger {} 137 <lambda>null138 override val isSpaExpressiveEnabled by lazy { 139 super.isSpaExpressiveEnabled || Flags.isExpressiveDesignEnabled() 140 } 141 } 142