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.events.delegatedadminreceivers; 18 19 import android.app.admin.DelegatedAdminReceiver; 20 import android.content.Context; 21 import android.content.Intent; 22 23 import androidx.annotation.CheckResult; 24 25 import com.android.eventlib.Event; 26 import com.android.eventlib.EventLogger; 27 import com.android.eventlib.EventLogsQuery; 28 import com.android.queryable.info.DelegatedAdminReceiverInfo; 29 import com.android.queryable.queries.DelegatedAdminReceiverQuery; 30 import com.android.queryable.queries.DelegatedAdminReceiverQueryHelper; 31 import com.android.queryable.queries.IntentQueryHelper; 32 import com.android.queryable.util.SerializableParcelWrapper; 33 34 /** 35 * Event logged when {@link DelegatedAdminReceiver#onSecurityLogsAvailable(Context, Intent)} 36 * is called. 37 */ 38 public final class DelegatedAdminSecurityLogsAvailableEvent extends Event { 39 40 private static final long serialVersionUID = 1; 41 protected SerializableParcelWrapper<Intent> mIntent; 42 protected DelegatedAdminReceiverInfo mDelegatedAdminReceiver; 43 44 /** Begins a query for {@link DelegatedAdminSecurityLogsAvailableEvent} events. */ queryPackage(String packageName)45 public static DelegatedAdminSecurityLogsAvailableEventQuery queryPackage(String packageName) { 46 return new DelegatedAdminSecurityLogsAvailableEventQuery(packageName); 47 } 48 49 /** Begins logging a {@link DelegatedAdminSecurityLogsAvailableEvent}. */ logger( DelegatedAdminReceiver delegatedAdminReceiver, Context context, Intent intent)50 public static DelegatedAdminSecurityLogsAvailableEventLogger logger( 51 DelegatedAdminReceiver delegatedAdminReceiver, Context context, Intent intent) { 52 return new DelegatedAdminSecurityLogsAvailableEventLogger(delegatedAdminReceiver, context, 53 intent); 54 } 55 56 /** 57 * The {@link Intent} passed into 58 * {@link DelegatedAdminReceiver#onSecurityLogsAvailable(Context, Intent)}. 59 */ intent()60 public Intent intent() { 61 if (mIntent == null) { 62 return null; 63 } 64 return mIntent.get(); 65 } 66 67 /** Information about the {@link DelegatedAdminReceiver} which received the intent. */ delegatedAdminReceiver()68 public DelegatedAdminReceiverInfo delegatedAdminReceiver() { 69 return mDelegatedAdminReceiver; 70 } 71 72 @Override toString()73 public String toString() { 74 return "DelegatedAdminSecurityLogsAvailableEvent{" 75 + " intent=" + intent() 76 + ", delegatedAdminReceiver=" + mDelegatedAdminReceiver 77 + ", packageName='" + mPackageName + "'" 78 + ", timestamp=" + mTimestamp 79 + "}"; 80 } 81 82 /** {@link EventLogsQuery} for {@link DelegatedAdminSecurityLogsAvailableEvent}. */ 83 public static final class DelegatedAdminSecurityLogsAvailableEventQuery 84 extends EventLogsQuery<DelegatedAdminSecurityLogsAvailableEvent, 85 DelegatedAdminSecurityLogsAvailableEventQuery> { 86 87 private static final long serialVersionUID = 1; 88 89 DelegatedAdminReceiverQueryHelper<DelegatedAdminSecurityLogsAvailableEventQuery> 90 mDelegatedAdminReceiver = 91 new DelegatedAdminReceiverQueryHelper<>(this); 92 IntentQueryHelper<DelegatedAdminSecurityLogsAvailableEventQuery> mIntent = 93 new IntentQueryHelper<>(this); 94 DelegatedAdminSecurityLogsAvailableEventQuery(String packageName)95 private DelegatedAdminSecurityLogsAvailableEventQuery(String packageName) { 96 super(DelegatedAdminSecurityLogsAvailableEvent.class, packageName); 97 } 98 99 /** 100 * Queries {@link Intent} passed into 101 * {@link DelegatedAdminReceiver#onSecurityLogsAvailable(Context, Intent)}. 102 */ 103 @CheckResult whereIntent()104 public IntentQueryHelper<DelegatedAdminSecurityLogsAvailableEventQuery> whereIntent() { 105 return mIntent; 106 } 107 108 /** Queries {@link DelegatedAdminReceiver}. */ 109 @CheckResult whereDelegatedAdminReceiver()110 public DelegatedAdminReceiverQuery<DelegatedAdminSecurityLogsAvailableEventQuery> whereDelegatedAdminReceiver() { 111 return mDelegatedAdminReceiver; 112 } 113 114 @Override filter(DelegatedAdminSecurityLogsAvailableEvent event)115 protected boolean filter(DelegatedAdminSecurityLogsAvailableEvent event) { 116 if (!mIntent.matches(event.mIntent)) { 117 return false; 118 } 119 return mDelegatedAdminReceiver.matches(event.mDelegatedAdminReceiver); 120 } 121 122 @Override describeQuery(String fieldName)123 public String describeQuery(String fieldName) { 124 return toStringBuilder(DelegatedAdminSecurityLogsAvailableEvent.class, this) 125 .field("intent", mIntent) 126 .field("delegatedAdminReceiver", mDelegatedAdminReceiver) 127 .toString(); 128 } 129 } 130 131 /** {@link EventLogger} for {@link DelegatedAdminSecurityLogsAvailableEvent}. */ 132 public static final class DelegatedAdminSecurityLogsAvailableEventLogger 133 extends EventLogger<DelegatedAdminSecurityLogsAvailableEvent> { DelegatedAdminSecurityLogsAvailableEventLogger( DelegatedAdminReceiver delegatedAdminReceiver, Context context, Intent intent)134 private DelegatedAdminSecurityLogsAvailableEventLogger( 135 DelegatedAdminReceiver delegatedAdminReceiver, Context context, Intent intent) { 136 super(context, new DelegatedAdminSecurityLogsAvailableEvent()); 137 mEvent.mIntent = new SerializableParcelWrapper<>(intent); 138 setDelegatedAdminReceiver(delegatedAdminReceiver); 139 } 140 141 /** Sets the {@link DelegatedAdminReceiver} which received this event. */ setDelegatedAdminReceiver( DelegatedAdminReceiver delegatedAdminReceiver)142 public DelegatedAdminSecurityLogsAvailableEventLogger setDelegatedAdminReceiver( 143 DelegatedAdminReceiver delegatedAdminReceiver) { 144 mEvent.mDelegatedAdminReceiver = new DelegatedAdminReceiverInfo(delegatedAdminReceiver); 145 return this; 146 } 147 148 /** Sets the {@link DelegatedAdminReceiver} which received this event. */ setDelegatedAdminReceiver( Class<? extends DelegatedAdminReceiver> delegatedAdminReceiverClass)149 public DelegatedAdminSecurityLogsAvailableEventLogger setDelegatedAdminReceiver( 150 Class<? extends DelegatedAdminReceiver> delegatedAdminReceiverClass) { 151 mEvent.mDelegatedAdminReceiver = new DelegatedAdminReceiverInfo( 152 delegatedAdminReceiverClass); 153 return this; 154 } 155 156 /** Sets the {@link DelegatedAdminReceiver} which received this event. */ setDelegatedAdminReceiver( String delegatedAdminReceiverClassName)157 public DelegatedAdminSecurityLogsAvailableEventLogger setDelegatedAdminReceiver( 158 String delegatedAdminReceiverClassName) { 159 mEvent.mDelegatedAdminReceiver = new DelegatedAdminReceiverInfo( 160 delegatedAdminReceiverClassName); 161 return this; 162 } 163 164 /** Sets the {@link Intent} which was received. */ setIntent(Intent intent)165 public DelegatedAdminSecurityLogsAvailableEventLogger setIntent(Intent intent) { 166 mEvent.mIntent = new SerializableParcelWrapper<>(intent); 167 return this; 168 } 169 } 170 } 171