• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.DeviceAdminBugreportFailedEvent;
28 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminBugreportSharedEvent;
29 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminBugreportSharingDeclinedEvent;
30 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminChoosePrivateKeyAliasEvent;
31 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminDisableRequestedEvent;
32 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminDisabledEvent;
33 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminEnabledEvent;
34 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminLockTaskModeEnteringEvent;
35 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminLockTaskModeExitingEvent;
36 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminNetworkLogsAvailableEvent;
37 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminOperationSafetyStateChangedEvent;
38 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminPasswordChangedEvent;
39 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminPasswordExpiringEvent;
40 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminPasswordFailedEvent;
41 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminPasswordSucceededEvent;
42 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminProfileProvisioningCompleteEvent;
43 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminReadyForUserInitializationEvent;
44 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminSecurityLogsAvailableEvent;
45 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminSystemUpdatePendingEvent;
46 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminTransferAffiliatedProfileOwnershipCompleteEvent;
47 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminTransferOwnershipCompleteEvent;
48 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminUserAddedEvent;
49 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminUserRemovedEvent;
50 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminUserStartedEvent;
51 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminUserStoppedEvent;
52 import com.android.eventlib.events.deviceadminreceivers.DeviceAdminUserSwitchedEvent;
53 
54 /** Implementation of {@link DeviceAdminReceiver} which logs events in response to callbacks. */
55 public class EventLibDeviceAdminReceiver extends DeviceAdminReceiver {
56 
57     private String mOverrideDeviceAdminReceiverClassName;
58 
setOverrideDeviceAdminReceiverClassName( String overrideDeviceAdminReceiverClassName)59     public void setOverrideDeviceAdminReceiverClassName(
60             String overrideDeviceAdminReceiverClassName) {
61         mOverrideDeviceAdminReceiverClassName = overrideDeviceAdminReceiverClassName;
62     }
63 
64     /**
65      * Get the class name for this {@link DeviceAdminReceiver}.
66      *
67      * <p>This will account for the name being overridden.
68      */
className()69     public String className() {
70         if (mOverrideDeviceAdminReceiverClassName != null) {
71             return mOverrideDeviceAdminReceiverClassName;
72         } else {
73             return EventLibDeviceAdminReceiver.class.getName();
74         }
75     }
76 
77     @Override
onEnabled(Context context, Intent intent)78     public void onEnabled(Context context, Intent intent) {
79         DeviceAdminEnabledEvent.DeviceAdminEnabledEventLogger logger =
80                 DeviceAdminEnabledEvent.logger(this, context, intent);
81 
82         if (mOverrideDeviceAdminReceiverClassName != null) {
83             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
84         }
85 
86         logger.log();
87 
88         super.onEnabled(context, intent);
89     }
90 
91     @Override
onDisableRequested(Context context, Intent intent)92     public CharSequence onDisableRequested(Context context, Intent intent) {
93         DeviceAdminDisableRequestedEvent.DeviceAdminDisableRequestedEventLogger logger =
94                 DeviceAdminDisableRequestedEvent.logger(this, context, intent);
95 
96         if (mOverrideDeviceAdminReceiverClassName != null) {
97             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
98         }
99 
100         logger.log();
101 
102         return super.onDisableRequested(context, intent);
103     }
104 
105     @Override
onDisabled(Context context, Intent intent)106     public void onDisabled(Context context, Intent intent) {
107         DeviceAdminDisabledEvent.DeviceAdminDisabledEventLogger logger =
108                 DeviceAdminDisabledEvent.logger(this, context, intent);
109 
110         if (mOverrideDeviceAdminReceiverClassName != null) {
111             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
112         }
113 
114         logger.log();
115 
116         super.onDisabled(context, intent);
117     }
118 
119     @Override
onPasswordChanged(Context context, Intent intent)120     public void onPasswordChanged(Context context, Intent intent) {
121         DeviceAdminPasswordChangedEvent.DeviceAdminPasswordChangedEventLogger logger =
122                 DeviceAdminPasswordChangedEvent.logger(this, context, intent);
123 
124         if (mOverrideDeviceAdminReceiverClassName != null) {
125             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
126         }
127 
128         logger.log();
129 
130         super.onPasswordChanged(context, intent);
131     }
132 
133     @Override
onPasswordChanged(Context context, Intent intent, UserHandle user)134     public void onPasswordChanged(Context context, Intent intent, UserHandle user) {
135         DeviceAdminPasswordChangedEvent.DeviceAdminPasswordChangedEventLogger logger =
136                 DeviceAdminPasswordChangedEvent.logger(this, context, intent);
137         logger.setUserHandle(user);
138 
139         if (mOverrideDeviceAdminReceiverClassName != null) {
140             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
141         }
142 
143         logger.log();
144     }
145 
146     @Override
onPasswordFailed(Context context, Intent intent)147     public void onPasswordFailed(Context context, Intent intent) {
148         DeviceAdminPasswordFailedEvent.DeviceAdminPasswordFailedEventLogger logger =
149                 DeviceAdminPasswordFailedEvent.logger(this, context, intent);
150 
151         if (mOverrideDeviceAdminReceiverClassName != null) {
152             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
153         }
154 
155         logger.log();
156 
157         super.onPasswordFailed(context, intent);
158     }
159 
160     @Override
onPasswordFailed(Context context, Intent intent, UserHandle user)161     public void onPasswordFailed(Context context, Intent intent, UserHandle user) {
162         DeviceAdminPasswordFailedEvent.DeviceAdminPasswordFailedEventLogger logger =
163                 DeviceAdminPasswordFailedEvent.logger(this, context, intent);
164         logger.setUserHandle(user);
165 
166         if (mOverrideDeviceAdminReceiverClassName != null) {
167             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
168         }
169 
170         logger.log();
171     }
172 
173     @Override
onPasswordSucceeded(Context context, Intent intent)174     public void onPasswordSucceeded(Context context, Intent intent) {
175         DeviceAdminPasswordSucceededEvent.DeviceAdminPasswordSucceededEventLogger logger =
176                 DeviceAdminPasswordSucceededEvent.logger(this, context, intent);
177 
178         if (mOverrideDeviceAdminReceiverClassName != null) {
179             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
180         }
181 
182         logger.log();
183 
184         super.onPasswordSucceeded(context, intent);
185     }
186 
187     @Override
onPasswordSucceeded(Context context, Intent intent, UserHandle user)188     public void onPasswordSucceeded(Context context, Intent intent, UserHandle user) {
189         DeviceAdminPasswordSucceededEvent.DeviceAdminPasswordSucceededEventLogger logger =
190                 DeviceAdminPasswordSucceededEvent.logger(this, context, intent);
191         logger.setUserHandle(user);
192 
193         if (mOverrideDeviceAdminReceiverClassName != null) {
194             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
195         }
196 
197         logger.log();
198     }
199 
200     @Override
onPasswordExpiring(Context context, Intent intent)201     public void onPasswordExpiring(Context context, Intent intent) {
202         DeviceAdminPasswordExpiringEvent.DeviceAdminPasswordExpiringEventLogger logger =
203                 DeviceAdminPasswordExpiringEvent.logger(this, context, intent);
204 
205         if (mOverrideDeviceAdminReceiverClassName != null) {
206             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
207         }
208 
209         logger.log();
210 
211         super.onPasswordExpiring(context, intent);
212     }
213 
214     @Override
onPasswordExpiring(Context context, Intent intent, UserHandle user)215     public void onPasswordExpiring(Context context, Intent intent, UserHandle user) {
216         DeviceAdminPasswordExpiringEvent.DeviceAdminPasswordExpiringEventLogger logger =
217                 DeviceAdminPasswordExpiringEvent.logger(this, context, intent);
218         logger.setUserHandle(user);
219 
220         if (mOverrideDeviceAdminReceiverClassName != null) {
221             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
222         }
223 
224         logger.log();
225     }
226 
227     @Override
onProfileProvisioningComplete(Context context, Intent intent)228     public void onProfileProvisioningComplete(Context context, Intent intent) {
229         DeviceAdminProfileProvisioningCompleteEvent.DeviceAdminProfileProvisioningCompleteEventLogger logger =
230                 DeviceAdminProfileProvisioningCompleteEvent.logger(this, context, intent);
231 
232         if (mOverrideDeviceAdminReceiverClassName != null) {
233             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
234         }
235 
236         logger.log();
237 
238         super.onProfileProvisioningComplete(context, intent);
239     }
240 
241     @Override
onReadyForUserInitialization(Context context, Intent intent)242     public void onReadyForUserInitialization(Context context, Intent intent) {
243         DeviceAdminReadyForUserInitializationEvent.DeviceAdminReadyForUserInitializationEventLogger logger =
244                 DeviceAdminReadyForUserInitializationEvent.logger(this, context, intent);
245 
246         if (mOverrideDeviceAdminReceiverClassName != null) {
247             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
248         }
249 
250         logger.log();
251 
252         super.onReadyForUserInitialization(context, intent);
253     }
254 
255     @Override
onLockTaskModeEntering(Context context, Intent intent, String pkg)256     public void onLockTaskModeEntering(Context context, Intent intent, String pkg) {
257         DeviceAdminLockTaskModeEnteringEvent.DeviceAdminLockTaskModeEnteringEventLogger logger =
258                 DeviceAdminLockTaskModeEnteringEvent.logger(this, context, intent, pkg);
259 
260         if (mOverrideDeviceAdminReceiverClassName != null) {
261             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
262         }
263 
264         logger.log();
265 
266         super.onLockTaskModeEntering(context, intent, pkg);
267     }
268 
269     @Override
onLockTaskModeExiting(Context context, Intent intent)270     public void onLockTaskModeExiting(Context context, Intent intent) {
271         DeviceAdminLockTaskModeExitingEvent.DeviceAdminLockTaskModeExitingEventLogger logger =
272                 DeviceAdminLockTaskModeExitingEvent.logger(this, context, intent);
273 
274         if (mOverrideDeviceAdminReceiverClassName != null) {
275             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
276         }
277 
278         logger.log();
279 
280         super.onLockTaskModeExiting(context, intent);
281     }
282 
283     @Override
onChoosePrivateKeyAlias(Context context, Intent intent, int uid, Uri uri, String alias)284     public String onChoosePrivateKeyAlias(Context context, Intent intent, int uid, Uri uri,
285             String alias) {
286         DeviceAdminChoosePrivateKeyAliasEvent.DeviceAdminChoosePrivateKeyAliasEventLogger logger =
287                 DeviceAdminChoosePrivateKeyAliasEvent
288                         .logger(this, context, intent, uid, uri, alias);
289 
290         if (mOverrideDeviceAdminReceiverClassName != null) {
291             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
292         }
293 
294         logger.log();
295 
296         // TODO(b/198280332) Allow TestApp to return values for methods.
297         super.onChoosePrivateKeyAlias(context, intent, uid, uri, alias);
298         if (uri == null) {
299             return null;
300         }
301         return uri.getQueryParameter("alias");
302     }
303 
304     @Override
onSystemUpdatePending(Context context, Intent intent, long receivedTime)305     public void onSystemUpdatePending(Context context, Intent intent, long receivedTime) {
306         DeviceAdminSystemUpdatePendingEvent.DeviceAdminSystemUpdatePendingEventLogger logger =
307                 DeviceAdminSystemUpdatePendingEvent.logger(this, context, intent, receivedTime);
308 
309         if (mOverrideDeviceAdminReceiverClassName != null) {
310             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
311         }
312 
313         logger.log();
314 
315         super.onSystemUpdatePending(context, intent, receivedTime);
316     }
317 
318     @Override
onBugreportSharingDeclined(Context context, Intent intent)319     public void onBugreportSharingDeclined(Context context, Intent intent) {
320         DeviceAdminBugreportSharingDeclinedEvent.DeviceAdminBugreportSharingDeclinedEventLogger logger =
321                 DeviceAdminBugreportSharingDeclinedEvent.logger(this, context, intent);
322 
323         if (mOverrideDeviceAdminReceiverClassName != null) {
324             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
325         }
326 
327         logger.log();
328 
329         super.onBugreportSharingDeclined(context, intent);
330     }
331 
332     @Override
onBugreportShared(Context context, Intent intent, String bugreportHash)333     public void onBugreportShared(Context context, Intent intent, String bugreportHash) {
334         DeviceAdminBugreportSharedEvent.DeviceAdminBugreportSharedEventLogger logger =
335                 DeviceAdminBugreportSharedEvent.logger(this, context, intent, bugreportHash);
336 
337         if (mOverrideDeviceAdminReceiverClassName != null) {
338             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
339         }
340 
341         logger.log();
342 
343         super.onBugreportSharingDeclined(context, intent);
344     }
345 
346     @Override
onBugreportFailed(Context context, Intent intent, int failureCode)347     public void onBugreportFailed(Context context, Intent intent, int failureCode) {
348         DeviceAdminBugreportFailedEvent.DeviceAdminBugreportFailedEventLogger logger =
349                 DeviceAdminBugreportFailedEvent.logger(this, context, intent, failureCode);
350 
351         if (mOverrideDeviceAdminReceiverClassName != null) {
352             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
353         }
354 
355         logger.log();
356 
357         super.onBugreportFailed(context, intent, failureCode);
358     }
359 
360     @Override
onSecurityLogsAvailable(Context context, Intent intent)361     public void onSecurityLogsAvailable(Context context, Intent intent) {
362         DeviceAdminSecurityLogsAvailableEvent.DeviceAdminSecurityLogsAvailableEventLogger logger =
363                 DeviceAdminSecurityLogsAvailableEvent.logger(this, context, intent);
364 
365         if (mOverrideDeviceAdminReceiverClassName != null) {
366             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
367         }
368 
369         logger.log();
370 
371         super.onSecurityLogsAvailable(context, intent);
372     }
373 
374     @Override
onNetworkLogsAvailable(Context context, Intent intent, long batchToken, int networkLogsCount)375     public void onNetworkLogsAvailable(Context context, Intent intent, long batchToken,
376             int networkLogsCount) {
377         DeviceAdminNetworkLogsAvailableEvent.DeviceAdminNetworkLogsAvailableEventLogger logger =
378                 DeviceAdminNetworkLogsAvailableEvent
379                         .logger(this, context, intent, batchToken, networkLogsCount);
380 
381         if (mOverrideDeviceAdminReceiverClassName != null) {
382             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
383         }
384 
385         logger.log();
386 
387         super.onNetworkLogsAvailable(context, intent, batchToken, networkLogsCount);
388     }
389 
390     @Override
onUserAdded(Context context, Intent intent, UserHandle addedUser)391     public void onUserAdded(Context context, Intent intent, UserHandle addedUser) {
392         DeviceAdminUserAddedEvent.DeviceAdminUserAddedEventLogger logger =
393                 DeviceAdminUserAddedEvent.logger(this, context, intent, addedUser);
394 
395         if (mOverrideDeviceAdminReceiverClassName != null) {
396             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
397         }
398 
399         logger.log();
400 
401         super.onUserAdded(context, intent, addedUser);
402     }
403 
404     @Override
onUserRemoved(Context context, Intent intent, UserHandle removedUser)405     public void onUserRemoved(Context context, Intent intent, UserHandle removedUser) {
406         DeviceAdminUserRemovedEvent.DeviceAdminUserRemovedEventLogger logger =
407                 DeviceAdminUserRemovedEvent.logger(this, context, intent, removedUser);
408 
409         if (mOverrideDeviceAdminReceiverClassName != null) {
410             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
411         }
412 
413         logger.log();
414 
415         super.onUserRemoved(context, intent, removedUser);
416     }
417 
418     @Override
onUserStarted(Context context, Intent intent, UserHandle startedUser)419     public void onUserStarted(Context context, Intent intent, UserHandle startedUser) {
420         DeviceAdminUserStartedEvent.DeviceAdminUserStartedEventLogger logger =
421                 DeviceAdminUserStartedEvent.logger(this, context, intent, startedUser);
422 
423         if (mOverrideDeviceAdminReceiverClassName != null) {
424             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
425         }
426 
427         logger.log();
428 
429         super.onUserStarted(context, intent, startedUser);
430     }
431 
432     @Override
onUserStopped(Context context, Intent intent, UserHandle stoppedUser)433     public void onUserStopped(Context context, Intent intent, UserHandle stoppedUser) {
434         DeviceAdminUserStoppedEvent.DeviceAdminUserStoppedEventLogger logger =
435                 DeviceAdminUserStoppedEvent.logger(this, context, intent, stoppedUser);
436 
437         if (mOverrideDeviceAdminReceiverClassName != null) {
438             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
439         }
440 
441         logger.log();
442 
443         super.onUserStopped(context, intent, stoppedUser);
444     }
445 
446     @Override
onUserSwitched(Context context, Intent intent, UserHandle switchedUser)447     public void onUserSwitched(Context context, Intent intent, UserHandle switchedUser) {
448         DeviceAdminUserSwitchedEvent.DeviceAdminUserSwitchedEventLogger logger =
449                 DeviceAdminUserSwitchedEvent.logger(this, context, intent, switchedUser);
450 
451         if (mOverrideDeviceAdminReceiverClassName != null) {
452             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
453         }
454 
455         logger.log();
456 
457         super.onUserRemoved(context, intent, switchedUser);
458     }
459 
460     @Override
onTransferOwnershipComplete(Context context, PersistableBundle bundle)461     public void onTransferOwnershipComplete(Context context, PersistableBundle bundle) {
462         DeviceAdminTransferOwnershipCompleteEvent.DeviceAdminTransferOwnershipCompleteEventLogger logger =
463                 DeviceAdminTransferOwnershipCompleteEvent.logger(this, context, bundle);
464 
465         if (mOverrideDeviceAdminReceiverClassName != null) {
466             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
467         }
468 
469         logger.log();
470 
471         super.onTransferOwnershipComplete(context, bundle);
472     }
473 
474     @Override
onTransferAffiliatedProfileOwnershipComplete(Context context, UserHandle user)475     public void onTransferAffiliatedProfileOwnershipComplete(Context context, UserHandle user) {
476         DeviceAdminTransferAffiliatedProfileOwnershipCompleteEvent.DeviceAdminTransferAffiliatedProfileOwnershipCompleteEventLogger logger =
477                 DeviceAdminTransferAffiliatedProfileOwnershipCompleteEvent
478                         .logger(this, context, user);
479 
480         if (mOverrideDeviceAdminReceiverClassName != null) {
481             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
482         }
483 
484         logger.log();
485 
486         super.onTransferAffiliatedProfileOwnershipComplete(context, user);
487     }
488 
489     @Override
onOperationSafetyStateChanged(Context context, int reason, boolean isSafe)490     public void onOperationSafetyStateChanged(Context context, int reason, boolean isSafe) {
491         DeviceAdminOperationSafetyStateChangedEvent.DeviceAdminOperationSafetyStateChangedEventLogger logger =
492                 DeviceAdminOperationSafetyStateChangedEvent
493                         .logger(this, context, reason, isSafe);
494 
495         if (mOverrideDeviceAdminReceiverClassName != null) {
496             logger.setDeviceAdminReceiver(mOverrideDeviceAdminReceiverClassName);
497         }
498 
499         logger.log();
500 
501         super.onOperationSafetyStateChanged(context, reason, isSafe);
502     }
503 
504     @Override
onReceive(Context context, Intent intent)505     public void onReceive(Context context, Intent intent) {
506         BroadcastReceivedEvent.BroadcastReceivedEventLogger logger =
507                 BroadcastReceivedEvent.logger(this, context, intent);
508 
509         if (mOverrideDeviceAdminReceiverClassName != null) {
510             logger.setBroadcastReceiver(mOverrideDeviceAdminReceiverClassName);
511         }
512 
513         logger.log();
514 
515         super.onReceive(context, intent);
516     }
517 }
518