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.core.instrumentation.SpaLogProvider 49 import com.android.settings.spa.development.UsageStatsPageProvider 50 import com.android.settings.spa.development.compat.PlatformCompatAppListPageProvider 51 import com.android.settings.spa.home.HomePageProvider 52 import com.android.settings.spa.network.NetworkAndInternetPageProvider 53 import com.android.settings.spa.network.NetworkCellularGroupProvider 54 import com.android.settings.spa.network.SimOnboardingPageProvider 55 import com.android.settings.spa.notification.AppListNotificationsPageProvider 56 import com.android.settings.spa.notification.NotificationMainPageProvider 57 import com.android.settings.spa.system.AppLanguagesPageProvider 58 import com.android.settings.spa.system.LanguageAndInputPageProvider 59 import com.android.settings.spa.system.SystemMainPageProvider 60 import com.android.settings.wifi.details2.WifiPrivacyPageProvider 61 import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository 62 import com.android.settingslib.spa.framework.common.SpaEnvironment 63 import com.android.settingslib.spa.framework.common.SpaLogger 64 import com.android.settingslib.spa.framework.common.createSettingsPage 65 import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider 66 import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListTemplate 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, 110 SystemMainPageProvider, 111 LanguageAndInputPageProvider, 112 AppLanguagesPageProvider, 113 UsageStatsPageProvider, 114 PlatformCompatAppListPageProvider, 115 BackgroundInstalledAppsPageProvider, 116 UserAspectRatioAppsPageProvider, 117 CloneAppInfoSettingsProvider, 118 NetworkAndInternetPageProvider, 119 AboutPhonePageProvider, 120 StorageAppListPageProvider.Apps, 121 StorageAppListPageProvider.Games, 122 ApnEditPageProvider, 123 SimOnboardingPageProvider, 124 BatteryOptimizationModeAppListPageProvider, 125 NetworkCellularGroupProvider(), 126 WifiPrivacyPageProvider, 127 PrintSettingsPageProvider, 128 ) 129 130 override val logger = if (FeatureFlagUtils.isEnabled( 131 context, FeatureFlagUtils.SETTINGS_ENABLE_SPA_METRICS 132 ) 133 ) SpaLogMetricsProvider // ToDo: Implement 'SpaLogProvider' for SPA settings. 134 else object : SpaLogger {} 135 } 136