1/*
2 * Copyright (C) 2016 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
17package com.android.settings.core.gateway;
18
19import com.android.settings.DateTimeSettings;
20import com.android.settings.DeviceAdminSettings;
21import com.android.settings.DisplaySettings;
22import com.android.settings.IccLockSettings;
23import com.android.settings.MasterClear;
24import com.android.settings.PrivacySettings;
25import com.android.settings.Settings;
26import com.android.settings.TestingSettings;
27import com.android.settings.TetherSettings;
28import com.android.settings.TrustedCredentialsSettings;
29import com.android.settings.accessibility.AccessibilitySettings;
30import com.android.settings.accessibility.AccessibilitySettingsForSetupWizard;
31import com.android.settings.accessibility.CaptionPropertiesFragment;
32import com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment;
33import com.android.settings.accounts.AccountDashboardFragment;
34import com.android.settings.accounts.AccountSyncSettings;
35import com.android.settings.accounts.ChooseAccountActivity;
36import com.android.settings.accounts.ManagedProfileSettings;
37import com.android.settings.applications.AppAndNotificationDashboardFragment;
38import com.android.settings.applications.DefaultAppSettings;
39import com.android.settings.applications.DirectoryAccessDetails;
40import com.android.settings.applications.ManageDomainUrls;
41import com.android.settings.applications.ProcessStatsSummary;
42import com.android.settings.applications.ProcessStatsUi;
43import com.android.settings.applications.UsageAccessDetails;
44import com.android.settings.applications.VrListenerSettings;
45import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
46import com.android.settings.applications.appinfo.DrawOverlayDetails;
47import com.android.settings.applications.appinfo.ExternalSourcesDetails;
48import com.android.settings.applications.appinfo.PictureInPictureDetails;
49import com.android.settings.applications.appinfo.PictureInPictureSettings;
50import com.android.settings.applications.appinfo.WriteSettingsDetails;
51import com.android.settings.applications.appops.BackgroundCheckSummary;
52import com.android.settings.applications.assist.ManageAssist;
53import com.android.settings.applications.manageapplications.ManageApplications;
54import com.android.settings.backup.ToggleBackupSettingFragment;
55import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment;
56import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment;
57import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
58import com.android.settings.connecteddevice.PreviouslyConnectedDeviceDashboardFragment;
59import com.android.settings.connecteddevice.usb.UsbDetailsFragment;
60import com.android.settings.datausage.DataUsageList;
61import com.android.settings.datausage.DataUsageSummary;
62import com.android.settings.datausage.DataUsageSummaryLegacy;
63import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
64import com.android.settings.development.DevelopmentSettingsDashboardFragment;
65import com.android.settings.deviceinfo.DeviceInfoSettings;
66import com.android.settings.deviceinfo.PrivateVolumeForget;
67import com.android.settings.deviceinfo.PrivateVolumeSettings;
68import com.android.settings.deviceinfo.PublicVolumeSettings;
69import com.android.settings.deviceinfo.StorageDashboardFragment;
70import com.android.settings.deviceinfo.StorageSettings;
71import com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment;
72import com.android.settings.display.NightDisplaySettings;
73import com.android.settings.dream.DreamSettings;
74import com.android.settings.enterprise.EnterprisePrivacySettings;
75import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
76import com.android.settings.fuelgauge.PowerUsageSummary;
77import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
78import com.android.settings.gestures.AssistGestureSettings;
79import com.android.settings.gestures.DoubleTapPowerSettings;
80import com.android.settings.gestures.DoubleTapScreenSettings;
81import com.android.settings.gestures.DoubleTwistGestureSettings;
82import com.android.settings.gestures.SwipeUpGestureSettings;
83import com.android.settings.gestures.PickupGestureSettings;
84import com.android.settings.gestures.SwipeToNotificationSettings;
85import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment;
86import com.android.settings.inputmethod.KeyboardLayoutPickerFragment;
87import com.android.settings.inputmethod.PhysicalKeyboardFragment;
88import com.android.settings.inputmethod.SpellCheckersSettings;
89import com.android.settings.inputmethod.UserDictionaryList;
90import com.android.settings.inputmethod.UserDictionarySettings;
91import com.android.settings.language.LanguageAndInputSettings;
92import com.android.settings.localepicker.LocaleListEditor;
93import com.android.settings.location.LocationSettings;
94import com.android.settings.location.ScanningSettings;
95import com.android.settings.network.ApnEditor;
96import com.android.settings.network.ApnSettings;
97import com.android.settings.network.NetworkDashboardFragment;
98import com.android.settings.nfc.AndroidBeam;
99import com.android.settings.nfc.PaymentSettings;
100import com.android.settings.notification.AppNotificationSettings;
101import com.android.settings.notification.ChannelGroupNotificationSettings;
102import com.android.settings.notification.ChannelNotificationSettings;
103import com.android.settings.notification.ConfigureNotificationSettings;
104import com.android.settings.notification.NotificationAccessSettings;
105import com.android.settings.notification.NotificationStation;
106import com.android.settings.notification.SoundSettings;
107import com.android.settings.notification.ZenAccessSettings;
108import com.android.settings.notification.ZenModeAutomationSettings;
109import com.android.settings.notification.ZenModeMsgEventReminderSettings;
110import com.android.settings.notification.ZenModeBlockedEffectsSettings;
111import com.android.settings.notification.ZenModeEventRuleSettings;
112import com.android.settings.notification.ZenModeRestrictNotificationsSettings;
113import com.android.settings.notification.ZenModeScheduleRuleSettings;
114import com.android.settings.notification.ZenModeSettings;
115import com.android.settings.password.ChooseLockPassword;
116import com.android.settings.password.ChooseLockPattern;
117import com.android.settings.print.PrintJobSettingsFragment;
118import com.android.settings.print.PrintSettingsFragment;
119import com.android.settings.security.CryptKeeperSettings;
120import com.android.settings.security.LockscreenDashboardFragment;
121import com.android.settings.security.SecuritySettings;
122import com.android.settings.sim.SimSettings;
123import com.android.settings.support.SupportDashboardActivity;
124import com.android.settings.system.ResetDashboardFragment;
125import com.android.settings.system.SystemDashboardFragment;
126import com.android.settings.tts.TextToSpeechSettings;
127import com.android.settings.users.UserSettings;
128import com.android.settings.vpn2.VpnSettings;
129import com.android.settings.wallpaper.WallpaperTypeSettings;
130import com.android.settings.webview.WebViewAppPicker;
131import com.android.settings.wfd.WifiDisplaySettings;
132import com.android.settings.wifi.ConfigureWifiSettings;
133import com.android.settings.wifi.SavedAccessPointsWifiSettings;
134import com.android.settings.wifi.WifiAPITest;
135import com.android.settings.wifi.WifiInfo;
136import com.android.settings.wifi.WifiSettings;
137import com.android.settings.wifi.calling.WifiCallingSettings;
138import com.android.settings.wifi.p2p.WifiP2pSettings;
139
140public class SettingsGateway {
141
142    /**
143     * A list of fragment that can be hosted by SettingsActivity. SettingsActivity will throw a
144     * security exception if the fragment it needs to display is not in this list.
145     */
146    public static final String[] ENTRY_FRAGMENTS = {
147            AdvancedConnectedDeviceDashboardFragment.class.getName(),
148            WifiSettings.class.getName(),
149            ConfigureWifiSettings.class.getName(),
150            SavedAccessPointsWifiSettings.class.getName(),
151            SimSettings.class.getName(),
152            TetherSettings.class.getName(),
153            WifiP2pSettings.class.getName(),
154            BackgroundCheckSummary.class.getName(),
155            VpnSettings.class.getName(),
156            DateTimeSettings.class.getName(),
157            LocaleListEditor.class.getName(),
158            AvailableVirtualKeyboardFragment.class.getName(),
159            LanguageAndInputSettings.class.getName(),
160            SpellCheckersSettings.class.getName(),
161            UserDictionaryList.class.getName(),
162            UserDictionarySettings.class.getName(),
163            DisplaySettings.class.getName(),
164            DeviceInfoSettings.class.getName(),
165            MyDeviceInfoFragment.class.getName(),
166            ManageApplications.class.getName(),
167            ManageAssist.class.getName(),
168            ProcessStatsUi.class.getName(),
169            NotificationStation.class.getName(),
170            LocationSettings.class.getName(),
171            ScanningSettings.class.getName(),
172            SecuritySettings.class.getName(),
173            UsageAccessDetails.class.getName(),
174            PrivacySettings.class.getName(),
175            DeviceAdminSettings.class.getName(),
176            AccessibilitySettings.class.getName(),
177            AccessibilitySettingsForSetupWizard.class.getName(),
178            CaptionPropertiesFragment.class.getName(),
179            ToggleDaltonizerPreferenceFragment.class.getName(),
180            TextToSpeechSettings.class.getName(),
181            StorageSettings.class.getName(),
182            PrivateVolumeForget.class.getName(),
183            PrivateVolumeSettings.class.getName(),
184            PublicVolumeSettings.class.getName(),
185            DevelopmentSettingsDashboardFragment.class.getName(),
186            AndroidBeam.class.getName(),
187            WifiDisplaySettings.class.getName(),
188            PowerUsageSummary.class.getName(),
189            AccountSyncSettings.class.getName(),
190            AssistGestureSettings.class.getName(),
191            SwipeToNotificationSettings.class.getName(),
192            DoubleTapPowerSettings.class.getName(),
193            DoubleTapScreenSettings.class.getName(),
194            PickupGestureSettings.class.getName(),
195            DoubleTwistGestureSettings.class.getName(),
196            SwipeUpGestureSettings.class.getName(),
197            CryptKeeperSettings.class.getName(),
198            DataUsageSummary.class.getName(),
199            DataUsageSummaryLegacy.class.getName(),
200            DreamSettings.class.getName(),
201            UserSettings.class.getName(),
202            NotificationAccessSettings.class.getName(),
203            ZenAccessSettings.class.getName(),
204            ZenModeAutomationSettings.class.getName(),
205            PrintSettingsFragment.class.getName(),
206            PrintJobSettingsFragment.class.getName(),
207            TrustedCredentialsSettings.class.getName(),
208            PaymentSettings.class.getName(),
209            KeyboardLayoutPickerFragment.class.getName(),
210            PhysicalKeyboardFragment.class.getName(),
211            ZenModeSettings.class.getName(),
212            SoundSettings.class.getName(),
213            ConfigureNotificationSettings.class.getName(),
214            ChooseLockPassword.ChooseLockPasswordFragment.class.getName(),
215            ChooseLockPattern.ChooseLockPatternFragment.class.getName(),
216            AppInfoDashboardFragment.class.getName(),
217            BatterySaverSettings.class.getName(),
218            AppNotificationSettings.class.getName(),
219            ChannelNotificationSettings.class.getName(),
220            ChannelGroupNotificationSettings.class.getName(),
221            ApnSettings.class.getName(),
222            ApnEditor.class.getName(),
223            WifiCallingSettings.class.getName(),
224            ZenModeScheduleRuleSettings.class.getName(),
225            ZenModeEventRuleSettings.class.getName(),
226            ZenModeBlockedEffectsSettings.class.getName(),
227            ProcessStatsUi.class.getName(),
228            AdvancedPowerUsageDetail.class.getName(),
229            ProcessStatsSummary.class.getName(),
230            DrawOverlayDetails.class.getName(),
231            WriteSettingsDetails.class.getName(),
232            ExternalSourcesDetails.class.getName(),
233            DefaultAppSettings.class.getName(),
234            WallpaperTypeSettings.class.getName(),
235            VrListenerSettings.class.getName(),
236            PictureInPictureSettings.class.getName(),
237            PictureInPictureDetails.class.getName(),
238            ManagedProfileSettings.class.getName(),
239            ChooseAccountActivity.class.getName(),
240            IccLockSettings.class.getName(),
241            TestingSettings.class.getName(),
242            WifiAPITest.class.getName(),
243            WifiInfo.class.getName(),
244            MasterClear.class.getName(),
245            ResetDashboardFragment.class.getName(),
246            NightDisplaySettings.class.getName(),
247            ManageDomainUrls.class.getName(),
248            AutomaticStorageManagerSettings.class.getName(),
249            StorageDashboardFragment.class.getName(),
250            SystemDashboardFragment.class.getName(),
251            NetworkDashboardFragment.class.getName(),
252            ConnectedDeviceDashboardFragment.class.getName(),
253            UsbDetailsFragment.class.getName(),
254            AppAndNotificationDashboardFragment.class.getName(),
255            AccountDashboardFragment.class.getName(),
256            EnterprisePrivacySettings.class.getName(),
257            WebViewAppPicker.class.getName(),
258            LockscreenDashboardFragment.class.getName(),
259            BluetoothDeviceDetailsFragment.class.getName(),
260            DataUsageList.class.getName(),
261            DirectoryAccessDetails.class.getName(),
262            ToggleBackupSettingFragment.class.getName(),
263            PreviouslyConnectedDeviceDashboardFragment.class.getName(),
264    };
265
266    public static final String[] SETTINGS_FOR_RESTRICTED = {
267            // Home page
268            Settings.NetworkDashboardActivity.class.getName(),
269            Settings.ConnectedDeviceDashboardActivity.class.getName(),
270            Settings.AppAndNotificationDashboardActivity.class.getName(),
271            Settings.DisplaySettingsActivity.class.getName(),
272            Settings.SoundSettingsActivity.class.getName(),
273            Settings.StorageDashboardActivity.class.getName(),
274            Settings.PowerUsageSummaryActivity.class.getName(),
275            Settings.AccountDashboardActivity.class.getName(),
276            Settings.SecurityDashboardActivity.class.getName(),
277            Settings.AccessibilitySettingsActivity.class.getName(),
278            Settings.SystemDashboardActivity.class.getName(),
279            SupportDashboardActivity.class.getName(),
280            // Home page > Network & Internet
281            Settings.WifiSettingsActivity.class.getName(),
282            Settings.DataUsageSummaryActivity.class.getName(),
283            Settings.SimSettingsActivity.class.getName(),
284            // Home page > Connected devices
285            Settings.BluetoothSettingsActivity.class.getName(),
286            Settings.WifiDisplaySettingsActivity.class.getName(),
287            Settings.PrintSettingsActivity.class.getName(),
288            // Home page > Apps & Notifications
289            Settings.UserSettingsActivity.class.getName(),
290            Settings.ConfigureNotificationSettingsActivity.class.getName(),
291            Settings.AdvancedAppsActivity.class.getName(),
292            Settings.ManageApplicationsActivity.class.getName(),
293            Settings.PaymentSettingsActivity.class.getName(),
294            // Home page > Security & screen lock
295            Settings.LocationSettingsActivity.class.getName(),
296            // Home page > System
297            Settings.LanguageAndInputSettingsActivity.class.getName(),
298            Settings.DateTimeSettingsActivity.class.getName(),
299            Settings.DeviceInfoSettingsActivity.class.getName(),
300            Settings.EnterprisePrivacySettingsActivity.class.getName(),
301            Settings.MyDeviceInfoActivity.class.getName(),
302    };
303}
304