summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java
blob: 7d28d82954c389137ad04312b3a43b71c7b3ce00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.enterprise;

import java.util.Date;

public interface EnterprisePrivacyFeatureProvider {

    /**
     * Returns whether the device is managed by a Device Owner app.
     */
    boolean hasDeviceOwner();

    /**
     * Returns whether the device is in COMP mode (primary user managed by a Device Owner app and
     * work profile managed by a Profile Owner app).
     */
    boolean isInCompMode();

    /**
     * Returns the name of the organization managing the device via a Device Owner app. If the
     * device is not managed by a Device Owner app or the name of the managing organization was not
     * set, returns {@code null}.
     */
    String getDeviceOwnerOrganizationName();

    /**
     * Returns a message informing the user that the device is managed by a Device Owner app. The
     * message includes a Learn More link that takes the user to the enterprise privacy section of
     * Settings. If the device is not managed by a Device Owner app, returns {@code null}.
     */
    CharSequence getDeviceOwnerDisclosure();

    /**
     * Returns the time at which the Device Owner last retrieved security logs, or {@code null} if
     * logs were never retrieved by the Device Owner on this device.
     */
    Date getLastSecurityLogRetrievalTime();

    /**
     * Returns the time at which the Device Owner last requested a bug report, or {@code null} if no
     * bug report was ever requested by the Device Owner on this device.
     */
    Date getLastBugReportRequestTime();

    /**
     * Returns the time at which the Device Owner last retrieved network logs, or {@code null} if
     * logs were never retrieved by the Device Owner on this device.
     */
    Date getLastNetworkLogRetrievalTime();

    /**
     * Returns whether security logging is currently enabled.
     */
    boolean isSecurityLoggingEnabled();

    /**
     * Returns whether network logging is currently enabled.
     */
    boolean isNetworkLoggingEnabled();

    /**
     * Returns whether the Device Owner or Profile Owner in the current user set an always-on VPN.
     */
    boolean isAlwaysOnVpnSetInCurrentUser();

    /**
     * Returns whether the Profile Owner in the current user's managed profile (if any) set an
     * always-on VPN.
     */
    boolean isAlwaysOnVpnSetInManagedProfile();

    /**
     * Returns the number of failed login attempts that the Device Owner or Profile Owner allows
     * before the current user is wiped, or zero if no such limit is set.
     */
    int getMaximumFailedPasswordsBeforeWipeInCurrentUser();

    /**
     * Returns the number of failed login attempts that the Profile Owner allows before the current
     * user's managed profile (if any) is wiped, or zero if no such limit is set.
     */
    int getMaximumFailedPasswordsBeforeWipeInManagedProfile();

    /**
     * Returns the label of the current user's input method if that input method was set by a Device
     * Owner or Profile Owner in that user. Otherwise, returns {@code null}.
     */
    String getImeLabelIfOwnerSet();

    /**
     * Returns the number of CA certificates that the Device Owner or Profile Owner installed in
     * current user.
     */
    int getNumberOfOwnerInstalledCaCertsForCurrentUser();

    /**
     * Returns the number of CA certificates that the Device Owner or Profile Owner installed in
     * the current user's managed profile  (if any).
     */
    int getNumberOfOwnerInstalledCaCertsForManagedProfile();

    /**
     * Returns the number of Device Admin apps active in the current user and the user's managed
     * profile (if any).
     */
    int getNumberOfActiveDeviceAdminsForCurrentUserAndManagedProfile();

    /**
     * Returns {@code true} if it is possilbe to resolve an Intent to launch the "Your work policy
     * info" page provided by the active Device Owner or Profile Owner app if it exists, {@code
     * false} otherwise.
     */
    boolean hasWorkPolicyInfo();

    /**
     * Launches the Device Owner or Profile Owner's activity that displays the "Your work policy
     * info" page. Returns {@code true} if the activity has indeed been launched.
     */
    boolean showWorkPolicyInfo();

    /**
     * Launches the parental controls settings page. Returns {@code true} if the activity has
     * been launched.
     */
    boolean showParentalControls();
}