LogUtils.java revision 72f0522569319d362f2fe05f46f4e32ab121b8b3
1/* 2 * Copyright (C) 2016 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 17package com.android.server.telecom; 18 19import android.content.Context; 20import android.telecom.Logging.EventManager; 21import android.telecom.Logging.EventManager.TimedEventPair; 22 23/** 24 * Temporary location of new Logging class 25 */ 26 27public class LogUtils { 28 29 private static final String TAG = "Telecom"; 30 private static final String LOGUTILS_TAG = "LogUtils"; 31 32 public static final boolean SYSTRACE_DEBUG = false; /* STOP SHIP if true */ 33 34 public static final class Sessions { 35 public static final String ICA_ANSWER_CALL = "ICA.aC"; 36 public static final String ICA_REJECT_CALL = "ICA.rC"; 37 public static final String ICA_DISCONNECT_CALL = "ICA.dC"; 38 public static final String ICA_HOLD_CALL = "ICA.hC"; 39 public static final String ICA_UNHOLD_CALL = "ICA.uC"; 40 public static final String ICA_MUTE = "ICA.m"; 41 public static final String ICA_SET_AUDIO_ROUTE = "ICA.sAR"; 42 public static final String ICA_CONFERENCE = "ICA.c"; 43 public static final String CSW_HANDLE_CREATE_CONNECTION_COMPLETE = "CSW.hCCC"; 44 public static final String CSW_SET_ACTIVE = "CSW.sA"; 45 public static final String CSW_SET_RINGING = "CSW.sR"; 46 public static final String CSW_SET_DIALING = "CSW.sD"; 47 public static final String CSW_SET_PULLING = "CSW.sP"; 48 public static final String CSW_SET_DISCONNECTED = "CSW.sDc"; 49 public static final String CSW_SET_ON_HOLD = "CSW.sOH"; 50 public static final String CSW_REMOVE_CALL = "CSW.rC"; 51 public static final String CSW_SET_IS_CONFERENCED = "CSW.sIC"; 52 public static final String CSW_ADD_CONFERENCE_CALL = "CSW.aCC"; 53 } 54 55 public final static class Events { 56 public static final String CREATED = "CREATED"; 57 public static final String DESTROYED = "DESTROYED"; 58 public static final String SET_CONNECTING = "SET_CONNECTING"; 59 public static final String SET_DIALING = "SET_DIALING"; 60 public static final String SET_PULLING = "SET_PULLING"; 61 public static final String SET_ACTIVE = "SET_ACTIVE"; 62 public static final String SET_HOLD = "SET_HOLD"; 63 public static final String SET_RINGING = "SET_RINGING"; 64 public static final String SET_DISCONNECTED = "SET_DISCONNECTED"; 65 public static final String SET_DISCONNECTING = "SET_DISCONNECTING"; 66 public static final String SET_SELECT_PHONE_ACCOUNT = "SET_SELECT_PHONE_ACCOUNT"; 67 public static final String REQUEST_HOLD = "REQUEST_HOLD"; 68 public static final String REQUEST_UNHOLD = "REQUEST_UNHOLD"; 69 public static final String REQUEST_DISCONNECT = "REQUEST_DISCONNECT"; 70 public static final String REQUEST_ACCEPT = "REQUEST_ACCEPT"; 71 public static final String REQUEST_REJECT = "REQUEST_REJECT"; 72 public static final String START_DTMF = "START_DTMF"; 73 public static final String STOP_DTMF = "STOP_DTMF"; 74 public static final String START_RINGER = "START_RINGER"; 75 public static final String STOP_RINGER = "STOP_RINGER"; 76 public static final String START_VIBRATOR = "START_VIBRATOR"; 77 public static final String STOP_VIBRATOR = "STOP_VIBRATOR"; 78 public static final String SKIP_VIBRATION = "SKIP_VIBRATION"; 79 public static final String SKIP_RINGING = "SKIP_RINGING"; 80 public static final String START_CALL_WAITING_TONE = "START_CALL_WAITING_TONE"; 81 public static final String STOP_CALL_WAITING_TONE = "STOP_CALL_WAITING_TONE"; 82 public static final String START_CONNECTION = "START_CONNECTION"; 83 public static final String BIND_CS = "BIND_CS"; 84 public static final String CS_BOUND = "CS_BOUND"; 85 public static final String CONFERENCE_WITH = "CONF_WITH"; 86 public static final String SPLIT_FROM_CONFERENCE = "CONF_SPLIT"; 87 public static final String SWAP = "SWAP"; 88 public static final String ADD_CHILD = "ADD_CHILD"; 89 public static final String REMOVE_CHILD = "REMOVE_CHILD"; 90 public static final String SET_PARENT = "SET_PARENT"; 91 public static final String MUTE = "MUTE"; 92 public static final String UNMUTE = "UNMUTE"; 93 public static final String AUDIO_ROUTE = "AUDIO_ROUTE"; 94 public static final String AUDIO_ROUTE_EARPIECE = "AUDIO_ROUTE_EARPIECE"; 95 public static final String AUDIO_ROUTE_HEADSET = "AUDIO_ROUTE_HEADSET"; 96 public static final String AUDIO_ROUTE_BT = "AUDIO_ROUTE_BT"; 97 public static final String AUDIO_ROUTE_SPEAKER = "AUDIO_ROUTE_SPEAKER"; 98 public static final String ERROR_LOG = "ERROR"; 99 public static final String USER_LOG_MARK = "USER_LOG_MARK"; 100 public static final String SILENCE = "SILENCE"; 101 public static final String BIND_SCREENING = "BIND_SCREENING"; 102 public static final String SCREENING_BOUND = "SCREENING_BOUND"; 103 public static final String SCREENING_SENT = "SCREENING_SENT"; 104 public static final String SCREENING_COMPLETED = "SCREENING_COMPLETED"; 105 public static final String BLOCK_CHECK_INITIATED = "BLOCK_CHECK_INITIATED"; 106 public static final String BLOCK_CHECK_FINISHED = "BLOCK_CHECK_FINISHED"; 107 public static final String DIRECT_TO_VM_INITIATED = "DIRECT_TO_VM_INITIATED"; 108 public static final String DIRECT_TO_VM_FINISHED = "DIRECT_TO_VM_FINISHED"; 109 public static final String FILTERING_INITIATED = "FILTERING_INITIATED"; 110 public static final String FILTERING_COMPLETED = "FILTERING_COMPLETED"; 111 public static final String FILTERING_TIMED_OUT = "FILTERING_TIMED_OUT"; 112 public static final String REMOTELY_HELD = "REMOTELY_HELD"; 113 public static final String REMOTELY_UNHELD = "REMOTELY_UNHELD"; 114 public static final String REQUEST_PULL = "PULL"; 115 public static final String INFO = "INFO"; 116 public static final String VIDEO_STATE_CHANGED = "VIDEO_STATE_CHANGED"; 117 public static final String RECEIVE_VIDEO_REQUEST = "RECEIVE_VIDEO_REQUEST"; 118 public static final String RECEIVE_VIDEO_RESPONSE = "RECEIVE_VIDEO_RESPONSE"; 119 public static final String SEND_VIDEO_REQUEST = "SEND_VIDEO_REQUEST"; 120 public static final String SEND_VIDEO_RESPONSE = "SEND_VIDEO_RESPONSE"; 121 public static final String IS_EXTERNAL = "IS_EXTERNAL"; 122 public static final String PROPERTY_CHANGE = "PROPERTY_CHANGE"; 123 public static final String CAPABILITY_CHANGE = "CAPABILITY_CHANGE"; 124 public static final String CONNECTION_EVENT = "CONNECTION_EVENT"; 125 126 public static class Timings { 127 public static final String ACCEPT_TIMING = "accept"; 128 public static final String REJECT_TIMING = "reject"; 129 public static final String DISCONNECT_TIMING = "disconnect"; 130 public static final String HOLD_TIMING = "hold"; 131 public static final String UNHOLD_TIMING = "unhold"; 132 public static final String OUTGOING_TIME_TO_DIALING_TIMING = "outgoing_time_to_dialing"; 133 public static final String BIND_CS_TIMING = "bind_cs"; 134 public static final String SCREENING_COMPLETED_TIMING = "screening_completed"; 135 public static final String DIRECT_TO_VM_FINISHED_TIMING = "direct_to_vm_finished"; 136 public static final String BLOCK_CHECK_FINISHED_TIMING = "block_check_finished"; 137 public static final String FILTERING_COMPLETED_TIMING = "filtering_completed"; 138 public static final String FILTERING_TIMED_OUT_TIMING = "filtering_timed_out"; 139 140 private static final TimedEventPair[] sTimedEvents = { 141 new TimedEventPair(REQUEST_ACCEPT, SET_ACTIVE, ACCEPT_TIMING), 142 new TimedEventPair(REQUEST_REJECT, SET_DISCONNECTED, REJECT_TIMING), 143 new TimedEventPair(REQUEST_DISCONNECT, SET_DISCONNECTED, DISCONNECT_TIMING), 144 new TimedEventPair(REQUEST_HOLD, SET_HOLD, HOLD_TIMING), 145 new TimedEventPair(REQUEST_UNHOLD, SET_ACTIVE, UNHOLD_TIMING), 146 new TimedEventPair(START_CONNECTION, SET_DIALING, 147 OUTGOING_TIME_TO_DIALING_TIMING), 148 new TimedEventPair(BIND_CS, CS_BOUND, BIND_CS_TIMING), 149 new TimedEventPair(SCREENING_SENT, SCREENING_COMPLETED, 150 SCREENING_COMPLETED_TIMING), 151 new TimedEventPair(DIRECT_TO_VM_INITIATED, DIRECT_TO_VM_FINISHED, 152 DIRECT_TO_VM_FINISHED_TIMING), 153 new TimedEventPair(BLOCK_CHECK_INITIATED, BLOCK_CHECK_FINISHED, 154 BLOCK_CHECK_FINISHED_TIMING), 155 new TimedEventPair(FILTERING_INITIATED, FILTERING_COMPLETED, 156 FILTERING_COMPLETED_TIMING), 157 new TimedEventPair(FILTERING_INITIATED, FILTERING_TIMED_OUT, 158 FILTERING_TIMED_OUT_TIMING, 6000L), 159 }; 160 } 161 } 162 163 private static void eventRecordAdded(EventManager.EventRecord eventRecord) { 164 // Only Calls will be added as event records in this case 165 EventManager.Loggable recordEntry = eventRecord.getRecordEntry(); 166 if (recordEntry instanceof Call) { 167 Call callRecordEntry = (Call) recordEntry; 168 android.telecom.Log.i(LOGUTILS_TAG, "EventRecord added as Call: " + callRecordEntry); 169 Analytics.CallInfo callInfo = callRecordEntry.getAnalytics(); 170 if(callInfo != null) { 171 callInfo.setCallEvents(eventRecord); 172 } else { 173 android.telecom.Log.w(LOGUTILS_TAG, "Could not get Analytics CallInfo."); 174 } 175 } else { 176 android.telecom.Log.w(LOGUTILS_TAG, "Non-Call EventRecord Added."); 177 } 178 } 179 180 public static void initLogging(Context context) { 181 android.telecom.Log.setTag(TAG); 182 android.telecom.Log.setSessionContext(context); 183 android.telecom.Log.initMd5Sum(); 184 for (EventManager.TimedEventPair p : Events.Timings.sTimedEvents) { 185 android.telecom.Log.addRequestResponsePair(p); 186 } 187 android.telecom.Log.registerEventListener(LogUtils::eventRecordAdded); 188 // Store analytics about recently completed Sessions. 189 android.telecom.Log.registerSessionListener(Analytics::addSessionTiming); 190 } 191} 192