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.spa.app.AllAppListPageProvider 22 import com.android.settings.spa.app.AppsMainPageProvider 23 import com.android.settings.spa.app.appcompat.UserAspectRatioAppsPageProvider 24 import com.android.settings.spa.app.appinfo.AppInfoSettingsProvider 25 import com.android.settings.spa.app.appinfo.CloneAppInfoSettingsProvider 26 import com.android.settings.spa.app.backgroundinstall.BackgroundInstalledAppsPageProvider 27 import com.android.settings.spa.app.specialaccess.AlarmsAndRemindersAppListProvider 28 import com.android.settings.spa.app.specialaccess.AllFilesAccessAppListProvider 29 import com.android.settings.spa.app.specialaccess.DisplayOverOtherAppsAppListProvider 30 import com.android.settings.spa.app.specialaccess.InstallUnknownAppsListProvider 31 import com.android.settings.spa.app.specialaccess.MediaManagementAppsAppListProvider 32 import com.android.settings.spa.app.specialaccess.ModifySystemSettingsAppListProvider 33 import com.android.settings.spa.app.specialaccess.NfcTagAppsSettingsProvider 34 import com.android.settings.spa.app.specialaccess.PictureInPictureListProvider 35 import com.android.settings.spa.app.specialaccess.SpecialAppAccessPageProvider 36 import com.android.settings.spa.app.specialaccess.WifiControlAppListProvider 37 import com.android.settings.spa.app.specialaccess.UseFullScreenIntentAppListProvider 38 import com.android.settings.spa.core.instrumentation.SpaLogProvider 39 import com.android.settings.spa.development.UsageStatsPageProvider 40 import com.android.settings.spa.development.compat.PlatformCompatAppListPageProvider 41 import com.android.settings.spa.home.HomePageProvider 42 import com.android.settings.spa.network.NetworkAndInternetPageProvider 43 import com.android.settings.spa.notification.AppListNotificationsPageProvider 44 import com.android.settings.spa.notification.NotificationMainPageProvider 45 import com.android.settings.spa.system.AppLanguagesPageProvider 46 import com.android.settings.spa.system.LanguageAndInputPageProvider 47 import com.android.settings.spa.system.SystemMainPageProvider 48 import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository 49 import com.android.settingslib.spa.framework.common.SpaEnvironment 50 import com.android.settingslib.spa.framework.common.SpaLogger 51 import com.android.settingslib.spa.framework.common.createSettingsPage 52 import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListProvider 53 import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListTemplate 54 55 open class SettingsSpaEnvironment(context: Context) : SpaEnvironment(context) { getTogglePermissionAppListProvidersnull56 open fun getTogglePermissionAppListProviders(): List<TogglePermissionAppListProvider> { 57 return listOf( 58 AllFilesAccessAppListProvider, 59 DisplayOverOtherAppsAppListProvider, 60 MediaManagementAppsAppListProvider, 61 ModifySystemSettingsAppListProvider, 62 UseFullScreenIntentAppListProvider, 63 PictureInPictureListProvider, 64 InstallUnknownAppsListProvider, 65 AlarmsAndRemindersAppListProvider, 66 WifiControlAppListProvider, 67 NfcTagAppsSettingsProvider, 68 ) 69 } 70 <lambda>null71 override val pageProviderRepository = lazy { 72 val togglePermissionAppListTemplate = TogglePermissionAppListTemplate( 73 allProviders = getTogglePermissionAppListProviders() 74 ) 75 SettingsPageProviderRepository( 76 allPageProviders = listOf( 77 HomePageProvider, 78 AppsMainPageProvider, 79 AllAppListPageProvider, 80 AppInfoSettingsProvider, 81 SpecialAppAccessPageProvider, 82 NotificationMainPageProvider, 83 AppListNotificationsPageProvider, 84 SystemMainPageProvider, 85 LanguageAndInputPageProvider, 86 AppLanguagesPageProvider, 87 UsageStatsPageProvider, 88 PlatformCompatAppListPageProvider, 89 BackgroundInstalledAppsPageProvider, 90 UserAspectRatioAppsPageProvider, 91 CloneAppInfoSettingsProvider, 92 NetworkAndInternetPageProvider, 93 ) + togglePermissionAppListTemplate.createPageProviders(), 94 rootPages = listOf( 95 HomePageProvider.createSettingsPage() 96 ), 97 ) 98 } 99 override val logger = 100 if (FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_ENABLE_SPA_METRICS)) 101 SpaLogProvider 102 else object : SpaLogger {} 103 } 104