• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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