• 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.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