105061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski/*
205061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski * Copyright (C) 2016 The Android Open Source Project
305061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski *
405061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski * Licensed under the Apache License, Version 2.0 (the "License");
505061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski * you may not use this file except in compliance with the License.
605061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski * You may obtain a copy of the License at
705061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski *
805061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski *      http://www.apache.org/licenses/LICENSE-2.0
905061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski *
1005061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski * Unless required by applicable law or agreed to in writing, software
1105061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski * distributed under the License is distributed on an "AS IS" BASIS,
1205061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1305061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski * See the License for the specific language governing permissions and
1405061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski * limitations under the License.
1505061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski */
1605061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski
1705061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowskipackage com.android.settings.enterprise;
1805061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski
1905061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowskiimport android.content.Context;
2005061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowskiimport android.provider.SearchIndexableResource;
2105061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski
2205061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowskiimport com.android.internal.logging.nano.MetricsProto.MetricsEvent;
239704a28c7b2934d40a70a4529a06641816be3d62Bartosz Fabianowskiimport com.android.settings.R;
2405061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowskiimport com.android.settings.dashboard.DashboardFragment;
25cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhangimport com.android.settings.overlay.FeatureFactory;
2605061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowskiimport com.android.settings.search.BaseSearchIndexProvider;
27b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhangimport com.android.settings.widget.PreferenceCategoryController;
281d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantlerimport com.android.settingslib.core.AbstractPreferenceController;
2905061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski
3062b96811c15d635a475e87ea22c4cedad1567bb6Bartosz Fabianowskiimport java.util.ArrayList;
3105061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowskiimport java.util.Arrays;
3205061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowskiimport java.util.List;
3305061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski
3405061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowskipublic class EnterprisePrivacySettings extends DashboardFragment {
3505061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski
3605061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    static final String TAG = "EnterprisePrivacySettings";
3705061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski
3805061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    @Override
3905061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    public int getMetricsCategory() {
4005061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski        return MetricsEvent.ENTERPRISE_PRIVACY_SETTINGS;
4105061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    }
4205061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski
4305061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    @Override
4405061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    protected String getLogTag() {
4505061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski        return TAG;
4605061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    }
4705061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski
4805061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    @Override
4905061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    protected int getPreferenceScreenResId() {
5005061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski        return R.xml.enterprise_privacy_settings;
5105061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    }
5205061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski
5305061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    @Override
54f7843adabd4e8e1cc84a52721daabefa3a1410fdFan Zhang    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
55b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang        return buildPreferenceControllers(context, true /* async */);
565dc168af1add029df23674f60eb4130b82012e70Bartosz Fabianowski    }
575dc168af1add029df23674f60eb4130b82012e70Bartosz Fabianowski
581d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantler    private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
59b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang            boolean async) {
601d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantler        final List<AbstractPreferenceController> controllers = new ArrayList<>();
612e0b60849592ad65fa7c18468eebd13ec0772f2dBartosz Fabianowski        controllers.add(new NetworkLogsPreferenceController(context));
622e0b60849592ad65fa7c18468eebd13ec0772f2dBartosz Fabianowski        controllers.add(new BugReportsPreferenceController(context));
632e0b60849592ad65fa7c18468eebd13ec0772f2dBartosz Fabianowski        controllers.add(new SecurityLogsPreferenceController(context));
64b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang        final List<AbstractPreferenceController> exposureChangesCategoryControllers =
651d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantler                new ArrayList<>();
6655038c0a95fee80a1d399c123be7cdde5b1f0d96Bartosz Fabianowski        exposureChangesCategoryControllers.add(new EnterpriseInstalledPackagesPreferenceController(
67b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                context, async));
6855038c0a95fee80a1d399c123be7cdde5b1f0d96Bartosz Fabianowski        exposureChangesCategoryControllers.add(
69b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                new AdminGrantedLocationPermissionsPreferenceController(context, async));
7055038c0a95fee80a1d399c123be7cdde5b1f0d96Bartosz Fabianowski        exposureChangesCategoryControllers.add(
71b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                new AdminGrantedMicrophonePermissionPreferenceController(context, async));
7255038c0a95fee80a1d399c123be7cdde5b1f0d96Bartosz Fabianowski        exposureChangesCategoryControllers.add(new AdminGrantedCameraPermissionPreferenceController(
73b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                context, async));
7455038c0a95fee80a1d399c123be7cdde5b1f0d96Bartosz Fabianowski        exposureChangesCategoryControllers.add(new EnterpriseSetDefaultAppsPreferenceController(
75b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                context));
7655038c0a95fee80a1d399c123be7cdde5b1f0d96Bartosz Fabianowski        exposureChangesCategoryControllers.add(new AlwaysOnVpnCurrentUserPreferenceController(
77b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                context));
7855038c0a95fee80a1d399c123be7cdde5b1f0d96Bartosz Fabianowski        exposureChangesCategoryControllers.add(new AlwaysOnVpnManagedProfilePreferenceController(
79b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                context));
80b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang        exposureChangesCategoryControllers.add(new ImePreferenceController(context));
81b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang        exposureChangesCategoryControllers.add(new GlobalHttpProxyPreferenceController(context));
82b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang        exposureChangesCategoryControllers.add(new CaCertsCurrentUserPreferenceController(context));
83c74bbcd3b247c3005d8997de650ade21039c5a96Tony Mak        exposureChangesCategoryControllers.add(new CaCertsManagedProfilePreferenceController(
84b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                context));
85a112226db22f47587a814d1891b2ce137c62b2d5Lenka Trochtova        exposureChangesCategoryControllers.add(new BackupsEnabledPreferenceController(context));
8655038c0a95fee80a1d399c123be7cdde5b1f0d96Bartosz Fabianowski        controllers.addAll(exposureChangesCategoryControllers);
87b5c651c9399aa53e0bef296a265a47c825fe12b2Fan Zhang        controllers.add(new PreferenceCategoryController(context, "exposure_changes_category")
88b5c651c9399aa53e0bef296a265a47c825fe12b2Fan Zhang                .setChildren(exposureChangesCategoryControllers));
89b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang        controllers.add(new FailedPasswordWipeCurrentUserPreferenceController(context));
90b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang        controllers.add(new FailedPasswordWipeManagedProfilePreferenceController(context));
9162b96811c15d635a475e87ea22c4cedad1567bb6Bartosz Fabianowski        return controllers;
9205061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    }
9305061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski
94cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang    public static boolean isPageEnabled(Context context) {
95cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang        return FeatureFactory.getFactory(context)
96cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                .getEnterprisePrivacyFeatureProvider(context)
97cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                .hasDeviceOwner();
98cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang    }
99cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang
10005061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
101cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang            new BaseSearchIndexProvider() {
102cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                @Override
103cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                protected boolean isPageSearchEnabled(Context context) {
104cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                    return isPageEnabled(context);
105cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                }
106cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang
107cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                @Override
108cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                public List<SearchIndexableResource> getXmlResourcesToIndex(
109cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                        Context context, boolean enabled) {
110cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                    final SearchIndexableResource sir = new SearchIndexableResource(context);
111cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                    sir.xmlResId = R.xml.enterprise_privacy_settings;
112cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                    return Arrays.asList(sir);
113b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                }
1145dc168af1add029df23674f60eb4130b82012e70Bartosz Fabianowski
115b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                @Override
116aed8994f6f50a6bc0adfaa92b499ebde3a8f2a76Fan Zhang                public List<AbstractPreferenceController> createPreferenceControllers(
117b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                        Context context) {
118b5f5ffbece14b4f2882144f465ee67b35d5aa567Fan Zhang                    return buildPreferenceControllers(context, false /* async */);
119cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang                }
120cabc509e4f2d43a65910e1c8aa642aa59d781caeFan Zhang            };
12105061fced346b6f60e84c34f08b1957d1003ccdfBartosz Fabianowski}
122