1 /*
2  * Copyright (C) 2021 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.eventlib.premade;
18 
19 import android.app.admin.DeviceAdminReceiver;
20 import android.content.Context;
21 import android.content.Intent;
22 import android.net.Uri;
23 import android.os.PersistableBundle;
24 import android.os.UserHandle;
25 
26 import com.android.eventlib.events.broadcastreceivers.BroadcastReceivedEvent;
27 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminDisableRequestedEvent;
28 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminDisabledEvent;
29 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminEnabledEvent;
30 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminPasswordChangedEvent;
31 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminPasswordFailedEvent;
32 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminPasswordSucceededEvent;
33 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminSystemUpdatePendingEvent;
34 
35 /** Implementation of {@link DeviceAdminReceiver} which logs events in response to callbacks. */
36 public class EventLibDeviceAdminReceiver extends DeviceAdminReceiver {
37 
38     private String mOverrideDeviceAdminReceiverClassName;
39 
setOverrideDeviceAdminReceiverClassName( String overrideDeviceAdminReceiverClassName)40     public void setOverrideDeviceAdminReceiverClassName(
41             String overrideDeviceAdminReceiverClassName) {
42         mOverrideDeviceAdminReceiverClassName = overrideDeviceAdminReceiverClassName;
43     }
44 
45     @Override
onEnabled(Context context, Intent intent)46     public void onEnabled(Context context, Intent intent) {
47         DeviceAdminEnabledEvent.DeviceAdminEnabledEventLogger logger =
48                 DeviceAdminEnabledEvent.logger(this, context, intent);
49 
50         if (mOverrideDeviceAdminReceiverClassName != null) {
51             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
52         }
53 
54         logger.log();
55 
56         super.onEnabled(context, intent);
57     }
58 
59     @Override
onDisableRequested(Context context, Intent intent)60     public CharSequence onDisableRequested(Context context, Intent intent) {
61         DeviceAdminDisableRequestedEvent.DeviceAdminDisableRequestedEventLogger logger =
62                 DeviceAdminDisableRequestedEvent.logger(this, context, intent);
63 
64         if (mOverrideDeviceAdminReceiverClassName != null) {
65             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
66         }
67 
68         logger.log();
69 
70         return super.onDisableRequested(context, intent);
71     }
72 
73     @Override
onDisabled(Context context, Intent intent)74     public void onDisabled(Context context, Intent intent) {
75         DeviceAdminDisabledEvent.DeviceAdminDisabledEventLogger logger =
76                 DeviceAdminDisabledEvent.logger(this, context, intent);
77 
78         if (mOverrideDeviceAdminReceiverClassName != null) {
79             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
80         }
81 
82         logger.log();
83 
84         super.onDisabled(context, intent);
85     }
86 
87     @Override
onPasswordChanged(Context context, Intent intent)88     public void onPasswordChanged(Context context, Intent intent) {
89         DeviceAdminPasswordChangedEvent.DeviceAdminPasswordChangedEventLogger logger =
90                 DeviceAdminPasswordChangedEvent.logger(this, context, intent);
91 
92         if (mOverrideDeviceAdminReceiverClassName != null) {
93             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
94         }
95 
96         logger.log();
97 
98         super.onPasswordChanged(context, intent);
99     }
100 
101     @Override
onPasswordChanged(Context context, Intent intent, UserHandle user)102     public void onPasswordChanged(Context context, Intent intent, UserHandle user) {
103         DeviceAdminPasswordChangedEvent.DeviceAdminPasswordChangedEventLogger logger =
104                 DeviceAdminPasswordChangedEvent.logger(this, context, intent);
105         logger.setUserHandle(user);
106 
107         if (mOverrideDeviceAdminReceiverClassName != null) {
108             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
109         }
110 
111         logger.log();
112     }
113 
114     @Override
onPasswordFailed(Context context, Intent intent)115     public void onPasswordFailed(Context context, Intent intent) {
116         DeviceAdminPasswordFailedEvent.DeviceAdminPasswordFailedEventLogger logger =
117                 DeviceAdminPasswordFailedEvent.logger(this, context, intent);
118 
119         if (mOverrideDeviceAdminReceiverClassName != null) {
120             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
121         }
122 
123         logger.log();
124 
125         super.onPasswordFailed(context, intent);
126     }
127 
128     @Override
onPasswordFailed(Context context, Intent intent, UserHandle user)129     public void onPasswordFailed(Context context, Intent intent, UserHandle user) {
130         DeviceAdminPasswordFailedEvent.DeviceAdminPasswordFailedEventLogger logger =
131                 DeviceAdminPasswordFailedEvent.logger(this, context, intent);
132         logger.setUserHandle(user);
133 
134         if (mOverrideDeviceAdminReceiverClassName != null) {
135             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
136         }
137 
138         logger.log();
139     }
140 
141     @Override
onPasswordSucceeded(Context context, Intent intent)142     public void onPasswordSucceeded(Context context, Intent intent) {
143         DeviceAdminPasswordSucceededEvent.DeviceAdminPasswordSucceededEventLogger logger =
144                 DeviceAdminPasswordSucceededEvent.logger(this, context, intent);
145 
146         if (mOverrideDeviceAdminReceiverClassName != null) {
147             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
148         }
149 
150         logger.log();
151 
152         super.onPasswordSucceeded(context, intent);
153     }
154 
155     @Override
onPasswordSucceeded(Context context, Intent intent, UserHandle user)156     public void onPasswordSucceeded(Context context, Intent intent, UserHandle user) {
157         DeviceAdminPasswordSucceededEvent.DeviceAdminPasswordSucceededEventLogger logger =
158                 DeviceAdminPasswordSucceededEvent.logger(this, context, intent);
159         logger.setUserHandle(user);
160 
161         if (mOverrideDeviceAdminReceiverClassName != null) {
162             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
163         }
164 
165         logger.log();
166     }
167 
168     @Override
onPasswordExpiring(Context context, Intent intent)169     public void onPasswordExpiring(Context context, Intent intent) {
170         super.onPasswordExpiring(context, intent);
171     }
172 
173     @Override
onPasswordExpiring(Context context, Intent intent, UserHandle user)174     public void onPasswordExpiring(Context context, Intent intent, UserHandle user) {
175         super.onPasswordExpiring(context, intent, user);
176     }
177 
178     @Override
onProfileProvisioningComplete(Context context, Intent intent)179     public void onProfileProvisioningComplete(Context context, Intent intent) {
180         super.onProfileProvisioningComplete(context, intent);
181     }
182 
183     @Override
onReadyForUserInitialization(Context context, Intent intent)184     public void onReadyForUserInitialization(Context context, Intent intent) {
185         super.onReadyForUserInitialization(context, intent);
186     }
187 
188     @Override
onLockTaskModeEntering(Context context, Intent intent, String pkg)189     public void onLockTaskModeEntering(Context context, Intent intent, String pkg) {
190         super.onLockTaskModeEntering(context, intent, pkg);
191     }
192 
193     @Override
onLockTaskModeExiting(Context context, Intent intent)194     public void onLockTaskModeExiting(Context context, Intent intent) {
195         super.onLockTaskModeExiting(context, intent);
196     }
197 
198     @Override
onChoosePrivateKeyAlias(Context context, Intent intent, int uid, Uri uri, String alias)199     public String onChoosePrivateKeyAlias(Context context, Intent intent, int uid, Uri uri,
200             String alias) {
201         return super.onChoosePrivateKeyAlias(context, intent, uid, uri, alias);
202     }
203 
204     @Override
onSystemUpdatePending(Context context, Intent intent, long receivedTime)205     public void onSystemUpdatePending(Context context, Intent intent, long receivedTime) {
206         DeviceAdminSystemUpdatePendingEvent.DeviceAdminSystemUpdatePendingEventLogger logger =
207                 DeviceAdminSystemUpdatePendingEvent.logger(this, context, intent, receivedTime);
208 
209         if (mOverrideDeviceAdminReceiverClassName != null) {
210             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
211         }
212 
213         logger.log();
214 
215         super.onSystemUpdatePending(context, intent, receivedTime);
216     }
217 
218     @Override
onBugreportSharingDeclined(Context context, Intent intent)219     public void onBugreportSharingDeclined(Context context, Intent intent) {
220         super.onBugreportSharingDeclined(context, intent);
221     }
222 
223     @Override
onBugreportShared(Context context, Intent intent, String bugreportHash)224     public void onBugreportShared(Context context, Intent intent, String bugreportHash) {
225         super.onBugreportShared(context, intent, bugreportHash);
226     }
227 
228     @Override
onBugreportFailed(Context context, Intent intent, int failureCode)229     public void onBugreportFailed(Context context, Intent intent, int failureCode) {
230         super.onBugreportFailed(context, intent, failureCode);
231     }
232 
233     @Override
onSecurityLogsAvailable(Context context, Intent intent)234     public void onSecurityLogsAvailable(Context context, Intent intent) {
235         super.onSecurityLogsAvailable(context, intent);
236     }
237 
238     @Override
onNetworkLogsAvailable(Context context, Intent intent, long batchToken, int networkLogsCount)239     public void onNetworkLogsAvailable(Context context, Intent intent, long batchToken,
240             int networkLogsCount) {
241         super.onNetworkLogsAvailable(context, intent, batchToken, networkLogsCount);
242     }
243 
244     @Override
onUserAdded(Context context, Intent intent, UserHandle addedUser)245     public void onUserAdded(Context context, Intent intent, UserHandle addedUser) {
246         super.onUserAdded(context, intent, addedUser);
247     }
248 
249     @Override
onUserRemoved(Context context, Intent intent, UserHandle removedUser)250     public void onUserRemoved(Context context, Intent intent, UserHandle removedUser) {
251         super.onUserRemoved(context, intent, removedUser);
252     }
253 
254     @Override
onUserStarted(Context context, Intent intent, UserHandle startedUser)255     public void onUserStarted(Context context, Intent intent, UserHandle startedUser) {
256         super.onUserStarted(context, intent, startedUser);
257     }
258 
259     @Override
onUserStopped(Context context, Intent intent, UserHandle stoppedUser)260     public void onUserStopped(Context context, Intent intent, UserHandle stoppedUser) {
261         super.onUserStopped(context, intent, stoppedUser);
262     }
263 
264     @Override
onUserSwitched(Context context, Intent intent, UserHandle switchedUser)265     public void onUserSwitched(Context context, Intent intent, UserHandle switchedUser) {
266         super.onUserSwitched(context, intent, switchedUser);
267     }
268 
269     @Override
onTransferOwnershipComplete(Context context, PersistableBundle bundle)270     public void onTransferOwnershipComplete(Context context, PersistableBundle bundle) {
271         super.onTransferOwnershipComplete(context, bundle);
272     }
273 
274     @Override
onTransferAffiliatedProfileOwnershipComplete(Context context, UserHandle user)275     public void onTransferAffiliatedProfileOwnershipComplete(Context context, UserHandle user) {
276         super.onTransferAffiliatedProfileOwnershipComplete(context, user);
277     }
278 
279     @Override
onOperationSafetyStateChanged(Context context, int reason, boolean isSafe)280     public void onOperationSafetyStateChanged(Context context, int reason, boolean isSafe) {
281         super.onOperationSafetyStateChanged(context, reason, isSafe);
282     }
283 
284     @Override
onReceive(Context context, Intent intent)285     public void onReceive(Context context, Intent intent) {
286         BroadcastReceivedEvent.BroadcastReceivedEventLogger logger =
287                 BroadcastReceivedEvent.logger(this, context, intent);
288 
289         if (mOverrideDeviceAdminReceiverClassName != null) {
290             logger.setBroadcastReceiver(mOverrideDeviceAdminReceiverClassName);
291         }
292 
293         logger.log();
294 
295         super.onReceive(context, intent);
296     }
297 }
298