• 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.deviceadminreceivers;
18 
19 import android.app.admin.DeviceAdminReceiver;
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.DeviceAdminReceiverInfo;
29 import com.android.queryable.queries.DeviceAdminReceiverQuery;
30 import com.android.queryable.queries.DeviceAdminReceiverQueryHelper;
31 import com.android.queryable.queries.IntegerQuery;
32 import com.android.queryable.queries.IntegerQueryHelper;
33 import com.android.queryable.queries.IntentQueryHelper;
34 import com.android.queryable.util.SerializableParcelWrapper;
35 
36 /**
37  * Event logged when {@link DeviceAdminReceiver#onBugreportFailed(Context, Intent, int)}
38  * is called.
39  */
40 public final class DeviceAdminBugreportFailedEvent extends Event {
41 
42     private static final long serialVersionUID = 1;
43 
44     /** Begins a query for {@link DeviceAdminBugreportFailedEvent} events. */
queryPackage(String packageName)45     public static DeviceAdminBugreportFailedEventQuery queryPackage(String packageName) {
46         return new DeviceAdminBugreportFailedEventQuery(packageName);
47     }
48 
49     /** {@link EventLogsQuery} for {@link DeviceAdminBugreportFailedEvent}. */
50     public static final class DeviceAdminBugreportFailedEventQuery
51             extends EventLogsQuery<DeviceAdminBugreportFailedEvent,
52             DeviceAdminBugreportFailedEventQuery> {
53 
54         private static final long serialVersionUID = 1;
55 
56         DeviceAdminReceiverQueryHelper<DeviceAdminBugreportFailedEventQuery> mDeviceAdminReceiver =
57                 new DeviceAdminReceiverQueryHelper<>(this);
58         IntentQueryHelper<DeviceAdminBugreportFailedEventQuery> mIntent =
59                 new IntentQueryHelper<>(this);
60         IntegerQueryHelper<DeviceAdminBugreportFailedEventQuery> mFailureCode =
61                 new IntegerQueryHelper<>(this);
62 
DeviceAdminBugreportFailedEventQuery(String packageName)63         private DeviceAdminBugreportFailedEventQuery(String packageName) {
64             super(DeviceAdminBugreportFailedEvent.class, packageName);
65         }
66 
67         /**
68          * Queries {@link Intent} passed into
69          * {@link DeviceAdminReceiver#onBugreportFailed(Context, Intent, int)}.
70          */
71         @CheckResult
whereIntent()72         public IntentQueryHelper<DeviceAdminBugreportFailedEventQuery> whereIntent() {
73             return mIntent;
74         }
75 
76         /** Queries {@link DeviceAdminReceiver}. */
77         @CheckResult
whereDeviceAdminReceiver()78         public DeviceAdminReceiverQuery<DeviceAdminBugreportFailedEventQuery> whereDeviceAdminReceiver() {
79             return mDeviceAdminReceiver;
80         }
81 
82         /**
83          * Query {@code failureCode} passed into
84          * {@link DeviceAdminReceiver#onBugreportFailed(Context, Intent, int)}.
85          */
86         @CheckResult
whereFailureCode()87         public IntegerQuery<DeviceAdminBugreportFailedEventQuery> whereFailureCode() {
88             return mFailureCode;
89         }
90 
91         @Override
filter(DeviceAdminBugreportFailedEvent event)92         protected boolean filter(DeviceAdminBugreportFailedEvent event) {
93             if (!mIntent.matches(event.mIntent)) {
94                 return false;
95             }
96             if (!mDeviceAdminReceiver.matches(event.mDeviceAdminReceiver)) {
97                 return false;
98             }
99             if (!mFailureCode.matches(event.mFailureCode)) {
100                 return false;
101             }
102             return true;
103         }
104 
105         @Override
describeQuery(String fieldName)106         public String describeQuery(String fieldName) {
107             return toStringBuilder(DeviceAdminBugreportFailedEvent.class, this)
108                     .field("intent", mIntent)
109                     .field("deviceAdminReceiver", mDeviceAdminReceiver)
110                     .field("failureCode", mFailureCode)
111                     .toString();
112         }
113     }
114 
115     /** Begins logging a {@link DeviceAdminBugreportFailedEvent}. */
logger( DeviceAdminReceiver deviceAdminReceiver, Context context, Intent intent, int failureCode)116     public static DeviceAdminBugreportFailedEventLogger logger(
117             DeviceAdminReceiver deviceAdminReceiver,
118             Context context, Intent intent, int failureCode) {
119         return new DeviceAdminBugreportFailedEventLogger(
120                 deviceAdminReceiver, context, intent, failureCode);
121     }
122 
123     /** {@link EventLogger} for {@link DeviceAdminBugreportFailedEvent}. */
124     public static final class DeviceAdminBugreportFailedEventLogger
125             extends EventLogger<DeviceAdminBugreportFailedEvent> {
DeviceAdminBugreportFailedEventLogger( DeviceAdminReceiver deviceAdminReceiver, Context context, Intent intent, int failureCode)126         private DeviceAdminBugreportFailedEventLogger(
127                 DeviceAdminReceiver deviceAdminReceiver,
128                 Context context, Intent intent, int failureCode) {
129             super(context, new DeviceAdminBugreportFailedEvent());
130             mEvent.mIntent = new SerializableParcelWrapper<>(intent);
131             mEvent.mFailureCode = failureCode;
132             setDeviceAdminReceiver(deviceAdminReceiver);
133         }
134 
135         /** Sets the {@link DeviceAdminReceiver} which received this event. */
setDeviceAdminReceiver( DeviceAdminReceiver deviceAdminReceiver)136         public DeviceAdminBugreportFailedEventLogger setDeviceAdminReceiver(
137                 DeviceAdminReceiver deviceAdminReceiver) {
138             mEvent.mDeviceAdminReceiver = new DeviceAdminReceiverInfo(deviceAdminReceiver);
139             return this;
140         }
141 
142         /** Sets the {@link DeviceAdminReceiver} which received this event. */
setDeviceAdminReceiver( Class<? extends DeviceAdminReceiver> deviceAdminReceiverClass)143         public DeviceAdminBugreportFailedEventLogger setDeviceAdminReceiver(
144                 Class<? extends DeviceAdminReceiver> deviceAdminReceiverClass) {
145             mEvent.mDeviceAdminReceiver = new DeviceAdminReceiverInfo(deviceAdminReceiverClass);
146             return this;
147         }
148 
149         /** Sets the {@link DeviceAdminReceiver} which received this event. */
setDeviceAdminReceiver( String deviceAdminReceiverClassName)150         public DeviceAdminBugreportFailedEventLogger setDeviceAdminReceiver(
151                 String deviceAdminReceiverClassName) {
152             mEvent.mDeviceAdminReceiver = new DeviceAdminReceiverInfo(deviceAdminReceiverClassName);
153             return this;
154         }
155 
156         /** Sets the {@link Intent} which was received. */
setIntent(Intent intent)157         public DeviceAdminBugreportFailedEventLogger setIntent(Intent intent) {
158             mEvent.mIntent = new SerializableParcelWrapper<>(intent);
159             return this;
160         }
161 
162         /** Sets the {@code failureCode} which was received. */
setFailureCode(int failureCode)163         public DeviceAdminBugreportFailedEventLogger setFailureCode(int failureCode) {
164             mEvent.mFailureCode = failureCode;
165             return this;
166         }
167     }
168 
169     protected SerializableParcelWrapper<Intent> mIntent;
170     protected DeviceAdminReceiverInfo mDeviceAdminReceiver;
171     protected int mFailureCode;
172 
173     /**
174      * The {@link Intent} passed into
175      * {@link DeviceAdminReceiver#onBugreportFailed(Context, Intent, int)}.
176      */
intent()177     public Intent intent() {
178         if (mIntent == null) {
179             return null;
180         }
181         return mIntent.get();
182     }
183 
184     /** Information about the {@link DeviceAdminReceiver} which received the intent. */
deviceAdminReceiver()185     public DeviceAdminReceiverInfo deviceAdminReceiver() {
186         return mDeviceAdminReceiver;
187     }
188 
189     /**
190      * The {@code failureCode} passed into
191      * {@link DeviceAdminReceiver#onBugreportFailed(Context, Intent, int)}.
192      */
failureCode()193     public int failureCode() {
194         return mFailureCode;
195     }
196 
197     @Override
toString()198     public String toString() {
199         return "DeviceAdminBugreportFailedEvent{"
200                 + " intent=" + intent()
201                 + ", failureCode=" + mFailureCode
202                 + ", deviceAdminReceiver=" + mDeviceAdminReceiver
203                 + ", packageName='" + mPackageName + "'"
204                 + ", timestamp=" + mTimestamp
205                 + "}";
206     }
207 }
208