• 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.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