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