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.deviceadminreceivers; 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.IntegerQueryHelper; 32 import com.android.queryable.queries.IntentQueryHelper; 33 import com.android.queryable.queries.LongQueryHelper; 34 import com.android.queryable.util.SerializableParcelWrapper; 35 36 /** 37 * Event logged when {@link DelegatedAdminReceiver#onNetworkLogsAvailable(Context, Intent, long, 38 * int)} 39 * is called. 40 */ 41 public final class DelegatedAdminNetworkLogsAvailableEvent extends Event { 42 43 private static final long serialVersionUID = 1; 44 protected SerializableParcelWrapper<Intent> mIntent; 45 protected DelegatedAdminReceiverInfo mDelegatedAdminReceiver; 46 protected long mBatchToken; 47 protected int mNetworkLogsCount; 48 49 /** Begins a query for {@link DelegatedAdminNetworkLogsAvailableEvent} events. */ queryPackage(String packageName)50 public static DelegatedAdminNetworkLogsAvailableEventQuery queryPackage(String packageName) { 51 return new DelegatedAdminNetworkLogsAvailableEventQuery(packageName); 52 } 53 54 /** Begins logging a {@link DelegatedAdminNetworkLogsAvailableEvent}. */ logger( DelegatedAdminReceiver delegatedAdminReceiver, Context context, Intent intent, long batchToken, int networkLogsCount)55 public static DelegatedAdminNetworkLogsAvailableEventLogger logger( 56 DelegatedAdminReceiver delegatedAdminReceiver, Context context, Intent intent, 57 long batchToken, int networkLogsCount) { 58 return new DelegatedAdminNetworkLogsAvailableEventLogger( 59 delegatedAdminReceiver, context, intent, batchToken, networkLogsCount); 60 } 61 62 /** 63 * The {@link Intent} passed into 64 * {@link DelegatedAdminReceiver#onNetworkLogsAvailable(Context, Intent, long, int)}. 65 */ intent()66 public Intent intent() { 67 if (mIntent == null) { 68 return null; 69 } 70 return mIntent.get(); 71 } 72 73 /** Information about the {@link DelegatedAdminReceiver} which received the intent. */ delegatedAdminReceiver()74 public DelegatedAdminReceiverInfo delegatedAdminReceiver() { 75 return mDelegatedAdminReceiver; 76 } 77 78 /** 79 * The {@code batchToken} passed into 80 * {@link DelegatedAdminReceiver#onNetworkLogsAvailable(Context, Intent, long, int)}. 81 */ batchToken()82 public long batchToken() { 83 return mBatchToken; 84 } 85 86 /** 87 * The {@code networkLogsCount} passed into 88 * {@link DelegatedAdminReceiver#onNetworkLogsAvailable(Context, Intent, long, int)}. 89 */ networkLogsCount()90 public int networkLogsCount() { 91 return mNetworkLogsCount; 92 } 93 94 @Override toString()95 public String toString() { 96 return "DelegatedAdminNetworkLogsAvailableEvent{" 97 + " intent=" + intent() 98 + ", batchToken=" + mBatchToken 99 + ", networkLogsCount=" + mNetworkLogsCount 100 + ", delegatedAdminReceiver=" + mDelegatedAdminReceiver 101 + ", packageName='" + mPackageName + "'" 102 + ", timestamp=" + mTimestamp 103 + "}"; 104 } 105 106 /** {@link EventLogsQuery} for {@link DelegatedAdminNetworkLogsAvailableEvent}. */ 107 public static final class DelegatedAdminNetworkLogsAvailableEventQuery 108 extends EventLogsQuery<DelegatedAdminNetworkLogsAvailableEvent, 109 DelegatedAdminNetworkLogsAvailableEventQuery> { 110 111 private static final long serialVersionUID = 1; 112 113 DelegatedAdminReceiverQueryHelper<DelegatedAdminNetworkLogsAvailableEventQuery> 114 mDelegatedAdminReceiver = 115 new DelegatedAdminReceiverQueryHelper<>(this); 116 IntentQueryHelper<DelegatedAdminNetworkLogsAvailableEventQuery> mIntent = 117 new IntentQueryHelper<>(this); 118 LongQueryHelper<DelegatedAdminNetworkLogsAvailableEventQuery> mBatchToken = 119 new LongQueryHelper<>(this); 120 IntegerQueryHelper<DelegatedAdminNetworkLogsAvailableEventQuery> mNetworkLogsCount = 121 new IntegerQueryHelper<>(this); 122 DelegatedAdminNetworkLogsAvailableEventQuery(String packageName)123 private DelegatedAdminNetworkLogsAvailableEventQuery(String packageName) { 124 super(DelegatedAdminNetworkLogsAvailableEvent.class, packageName); 125 } 126 127 /** 128 * Queries {@link Intent} passed into 129 * {@link DelegatedAdminReceiver#onNetworkLogsAvailable(Context, Intent, long, int)}. 130 */ 131 @CheckResult whereIntent()132 public IntentQueryHelper<DelegatedAdminNetworkLogsAvailableEventQuery> whereIntent() { 133 return mIntent; 134 } 135 136 /** Queries {@link DelegatedAdminReceiver}. */ 137 @CheckResult whereDelegatedAdminReceiver()138 public DelegatedAdminReceiverQuery<DelegatedAdminNetworkLogsAvailableEventQuery> whereDelegatedAdminReceiver() { 139 return mDelegatedAdminReceiver; 140 } 141 142 /** 143 * Query {@code batchToken} passed into 144 * {@link DelegatedAdminReceiver#onNetworkLogsAvailable(Context, Intent, long, int)}. 145 */ 146 @CheckResult whereBatchToken()147 public LongQueryHelper<DelegatedAdminNetworkLogsAvailableEventQuery> whereBatchToken() { 148 return mBatchToken; 149 } 150 151 /** 152 * Query {@code networkLogsCount} passed into 153 * {@link DelegatedAdminReceiver#onNetworkLogsAvailable(Context, Intent, long, int)}. 154 */ 155 @CheckResult whereNetworkLogsCount()156 public IntegerQueryHelper<DelegatedAdminNetworkLogsAvailableEventQuery> whereNetworkLogsCount() { 157 return mNetworkLogsCount; 158 } 159 160 @Override filter(DelegatedAdminNetworkLogsAvailableEvent event)161 protected boolean filter(DelegatedAdminNetworkLogsAvailableEvent event) { 162 if (!mIntent.matches(event.mIntent)) { 163 return false; 164 } 165 if (!mDelegatedAdminReceiver.matches(event.mDelegatedAdminReceiver)) { 166 return false; 167 } 168 if (!mBatchToken.matches(event.mBatchToken)) { 169 return false; 170 } 171 return mNetworkLogsCount.matches(event.mNetworkLogsCount); 172 } 173 174 @Override describeQuery(String fieldName)175 public String describeQuery(String fieldName) { 176 return toStringBuilder(DelegatedAdminNetworkLogsAvailableEvent.class, this) 177 .field("intent", mIntent) 178 .field("delegatedAdminReceiver", mDelegatedAdminReceiver) 179 .field("batchToken", mBatchToken) 180 .field("networkLogsCount", mNetworkLogsCount) 181 .toString(); 182 } 183 } 184 185 /** {@link EventLogger} for {@link DelegatedAdminNetworkLogsAvailableEvent}. */ 186 public static final class DelegatedAdminNetworkLogsAvailableEventLogger 187 extends EventLogger<DelegatedAdminNetworkLogsAvailableEvent> { DelegatedAdminNetworkLogsAvailableEventLogger( DelegatedAdminReceiver delegatedAdminReceiver, Context context, Intent intent, long batchToken, int networkLogsCount)188 private DelegatedAdminNetworkLogsAvailableEventLogger( 189 DelegatedAdminReceiver delegatedAdminReceiver, Context context, Intent intent, 190 long batchToken, int networkLogsCount) { 191 super(context, new DelegatedAdminNetworkLogsAvailableEvent()); 192 mEvent.mIntent = new SerializableParcelWrapper<>(intent); 193 mEvent.mBatchToken = batchToken; 194 mEvent.mNetworkLogsCount = networkLogsCount; 195 setDelegatedAdminReceiver(delegatedAdminReceiver); 196 } 197 198 /** Sets the {@link DelegatedAdminReceiver} which received this event. */ setDelegatedAdminReceiver( DelegatedAdminReceiver delegatedAdminReceiver)199 public DelegatedAdminNetworkLogsAvailableEventLogger setDelegatedAdminReceiver( 200 DelegatedAdminReceiver delegatedAdminReceiver) { 201 mEvent.mDelegatedAdminReceiver = new DelegatedAdminReceiverInfo(delegatedAdminReceiver); 202 return this; 203 } 204 205 /** Sets the {@link DelegatedAdminReceiver} which received this event. */ setDelegatedAdminReceiver( Class<? extends DelegatedAdminReceiver> delegatedAdminReceiverClass)206 public DelegatedAdminNetworkLogsAvailableEventLogger setDelegatedAdminReceiver( 207 Class<? extends DelegatedAdminReceiver> delegatedAdminReceiverClass) { 208 mEvent.mDelegatedAdminReceiver = new DelegatedAdminReceiverInfo( 209 delegatedAdminReceiverClass); 210 return this; 211 } 212 213 /** Sets the {@link DelegatedAdminReceiver} which received this event. */ setDelegatedAdminReceiver( String delegatedAdminReceiverClassName)214 public DelegatedAdminNetworkLogsAvailableEventLogger setDelegatedAdminReceiver( 215 String delegatedAdminReceiverClassName) { 216 mEvent.mDelegatedAdminReceiver = new DelegatedAdminReceiverInfo( 217 delegatedAdminReceiverClassName); 218 return this; 219 } 220 221 /** Sets the {@link Intent} which was received. */ setIntent(Intent intent)222 public DelegatedAdminNetworkLogsAvailableEventLogger setIntent(Intent intent) { 223 mEvent.mIntent = new SerializableParcelWrapper<>(intent); 224 return this; 225 } 226 227 /** Sets the {@code batchToken} which was received. */ setBatchToken(long batchToken)228 public DelegatedAdminNetworkLogsAvailableEventLogger setBatchToken(long batchToken) { 229 mEvent.mBatchToken = batchToken; 230 return this; 231 } 232 233 /** Sets the {@code networkLogsCount} which was received. */ setNetworkLogsCount( int networkLogsCount)234 public DelegatedAdminNetworkLogsAvailableEventLogger setNetworkLogsCount( 235 int networkLogsCount) { 236 mEvent.mNetworkLogsCount = networkLogsCount; 237 return this; 238 } 239 } 240 } 241