1 /* 2 * Copyright (C) 2019 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.internal.logging.testing; 18 19 import com.android.internal.logging.InstanceId; 20 import com.android.internal.logging.UiEventLogger; 21 22 import java.util.LinkedList; 23 import java.util.List; 24 25 /** 26 * Fake logger that queues up logged events for inspection. 27 * 28 * @hide. 29 */ 30 public class UiEventLoggerFake implements UiEventLogger { 31 /** 32 * Immutable data class used to record fake log events. 33 */ 34 public static class FakeUiEvent { 35 public final int eventId; 36 public final int uid; 37 public final String packageName; 38 public final InstanceId instanceId; // Used only for WithInstanceId variants 39 public final int position; // Used only for Position variants 40 FakeUiEvent(int eventId, int uid, String packageName)41 FakeUiEvent(int eventId, int uid, String packageName) { 42 this.eventId = eventId; 43 this.uid = uid; 44 this.packageName = packageName; 45 this.instanceId = null; 46 this.position = 0; 47 } 48 FakeUiEvent(int eventId, int uid, String packageName, InstanceId instanceId)49 FakeUiEvent(int eventId, int uid, String packageName, InstanceId instanceId) { 50 this.eventId = eventId; 51 this.uid = uid; 52 this.packageName = packageName; 53 this.instanceId = instanceId; 54 this.position = 0; 55 } 56 FakeUiEvent(int eventId, int uid, String packageName, InstanceId instanceId, int position)57 FakeUiEvent(int eventId, int uid, String packageName, InstanceId instanceId, int position) { 58 this.eventId = eventId; 59 this.uid = uid; 60 this.packageName = packageName; 61 this.instanceId = instanceId; 62 this.position = position; 63 } 64 } 65 66 private List<FakeUiEvent> mLogs = new LinkedList<>(); 67 68 /** Returns list of all logging events recorded. */ getLogs()69 public List<FakeUiEvent> getLogs() { 70 return mLogs; 71 } 72 /** Returns number of logging events recorded. */ numLogs()73 public int numLogs() { 74 return mLogs.size(); 75 } 76 /** Returns a particular logging event. */ get(int index)77 public FakeUiEvent get(int index) { 78 return mLogs.get(index); 79 } 80 /** Returns event id (as integer) of a particular logging event. */ eventId(int index)81 public int eventId(int index) { 82 return mLogs.get(index).eventId; 83 } 84 85 @Override log(UiEventEnum event)86 public void log(UiEventEnum event) { 87 log(event, 0, null); 88 } 89 90 @Override log(UiEventEnum event, InstanceId instance)91 public void log(UiEventEnum event, InstanceId instance) { 92 logWithInstanceId(event, 0, null, instance); 93 } 94 95 @Override log(UiEventEnum event, int uid, String packageName)96 public void log(UiEventEnum event, int uid, String packageName) { 97 final int eventId = event.getId(); 98 if (eventId > 0) { 99 mLogs.add(new FakeUiEvent(eventId, uid, packageName)); 100 } 101 } 102 103 @Override logWithInstanceId(UiEventEnum event, int uid, String packageName, InstanceId instance)104 public void logWithInstanceId(UiEventEnum event, int uid, String packageName, 105 InstanceId instance) { 106 final int eventId = event.getId(); 107 if (eventId > 0) { 108 mLogs.add(new FakeUiEvent(eventId, uid, packageName, instance)); 109 } 110 } 111 112 @Override logWithPosition(UiEventEnum event, int uid, String packageName, int position)113 public void logWithPosition(UiEventEnum event, int uid, String packageName, int position) { 114 final int eventId = event.getId(); 115 if (eventId > 0) { 116 mLogs.add(new FakeUiEvent(eventId, uid, packageName, null, position)); 117 } 118 } 119 120 @Override logWithInstanceIdAndPosition(UiEventEnum event, int uid, String packageName, InstanceId instance, int position)121 public void logWithInstanceIdAndPosition(UiEventEnum event, int uid, String packageName, 122 InstanceId instance, int position) { 123 final int eventId = event.getId(); 124 if (eventId > 0) { 125 mLogs.add(new FakeUiEvent(eventId, uid, packageName, instance, position)); 126 } 127 } 128 } 129