1 /* 2 * Copyright (C) 2018 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.dialer.metrics; 18 19 import android.app.Application; 20 import android.support.annotation.Nullable; 21 22 /** Logs metrics. */ 23 public interface Metrics { 24 25 String APPLICATION_ON_CREATE_EVENT_NAME = "Application.onCreate"; 26 String DIALTACTS_ON_CREATE_EVENT_NAME = "GoogleDialtactsActivity.onCreate"; 27 String MAIN_ACTIVITY_ON_CREATE_EVENT_NAME = "GoogleMainActivity.onCreate"; 28 String ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_INCOMING = 29 "CallList.onCallAdded_To_InCallActivity.onCreate_Incoming"; 30 String ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_OUTGOING = 31 "CallList.onCallAdded_To_InCallActivity.onCreate_Outgoing"; 32 String DIALTACTS_ON_RESUME_MEMORY_EVENT_NAME = "GoogleDialtactsActivity.onResume"; 33 String OLD_MAIN_ACTIVITY_PEER_ON_RESUME_MEMORY_EVENT_NAME = "OldMainActivityPeer.onResume"; 34 String INCALL_ACTIVITY_ON_RESUME_MEMORY_EVENT_NAME = "IncallActivity.OnResume"; 35 String INCALL_ACTIVITY_ON_STOP_MEMORY_EVENT_NAME = "IncallActivity.OnStop"; 36 String OLD_CALL_LOG_JANK_EVENT_NAME = "OldCallLog.Jank"; 37 String NEW_CALL_LOG_JANK_EVENT_NAME = "NewCallLog.Jank"; 38 39 // Events related to refreshing the annotated call log. 40 String NEW_CALL_LOG_COALESCE = "NewCallLog.Coalesce"; 41 String ANNOTATED_CALL_LOG_NOT_DIRTY = "RefreshAnnotatedCallLogReceiver.NotDirty"; 42 String ANNOTATED_CALL_LOG_CHANGES_NEEDED = "RefreshAnnotatedCallLogReceiver.ChangesNeeded"; 43 String ANNOTATED_LOG_NO_CHANGES_NEEDED = "RefreshAnnotatedCallLogReceiver.NoChangesNeeded"; 44 String ANNOTATED_CALL_LOG_FORCE_REFRESH_CHANGES_NEEDED = 45 "RefreshAnnotatedCallLogReceiver.ForceRefreshChangesNeeded"; 46 String NEW_CALL_LOG_FORCE_REFRESH_NO_CHANGES_NEEDED = 47 "RefreshAnnotatedCallLogReceiver.ForceRefreshNoChangesNeeded"; 48 49 String INITIAL_FILL_EVENT_NAME = "RefreshAnnotatedCallLog.Initial.Fill"; 50 String INITIAL_ON_SUCCESSFUL_FILL_EVENT_NAME = "RefreshAnnotatedCallLog.Initial.OnSuccessfulFill"; 51 String INITIAL_APPLY_MUTATIONS_EVENT_NAME = "RefreshAnnotatedCallLog.Initial.ApplyMutations"; 52 53 String IS_DIRTY_EVENT_NAME = "RefreshAnnotatedCallLog.IsDirty"; 54 String FILL_EVENT_NAME = "RefreshAnnotatedCallLog.Fill"; 55 String ON_SUCCESSFUL_FILL_EVENT_NAME = "RefreshAnnotatedCallLog.OnSuccessfulFill"; 56 String APPLY_MUTATIONS_EVENT_NAME = "RefreshAnnotatedCallLog.ApplyMutations"; 57 58 // These templates are prefixed with a CallLogDataSource or PhoneLookup simple class name. 59 String INITIAL_FILL_TEMPLATE = "%s.Initial.Fill"; 60 String INITIAL_GET_MOST_RECENT_INFO_TEMPLATE = "%s.Initial.GetMostRecentInfo"; 61 String INITIAL_ON_SUCCESSFUL_FILL_TEMPLATE = "%s.Initial.OnSuccessfulFill"; 62 String INITIAL_ON_SUCCESSFUL_BULK_UPDATE_TEMPLATE = "%s.Initial.OnSuccessfulBulkUpdate"; 63 64 String IS_DIRTY_TEMPLATE = "%s.IsDirty"; 65 String FILL_TEMPLATE = "%s.Fill"; 66 String GET_MOST_RECENT_INFO_TEMPLATE = "%s.GetMostRecentInfo"; 67 String ON_SUCCESSFUL_FILL_TEMPLATE = "%s.OnSuccessfulFill"; 68 String ON_SUCCESSFUL_BULK_UPDATE_TEMPLATE = "%s.OnSuccessfulBulkUpdate"; 69 String LOOKUP_FOR_CALL_TEMPLATE = "%s.LookupForCall"; 70 String LOOKUP_FOR_NUMBER_TEMPLATE = "%s.LookupForNumber"; 71 72 /** Start a timer. */ startTimer(String timerEventName)73 void startTimer(String timerEventName); 74 75 /** 76 * Starts a timer for which the name is not yet known. 77 * 78 * @return opaque identifier for the event which should be provided back to {@link 79 * #stopUnnamedTimer(int, String)} to stop the timer. Null if the timer cannot be started, for 80 * example because the user is locked. 81 */ 82 @Nullable startUnnamedTimer()83 Integer startUnnamedTimer(); 84 85 /** 86 * Stop a timer which was started with {@link #startUnnamedTimer()}. 87 * 88 * @param timerId the value returned in the corresponding call to {@link #startUnnamedTimer()} 89 */ stopUnnamedTimer(int timerId, String timerEventName)90 void stopUnnamedTimer(int timerId, String timerEventName); 91 92 /** Stop a timer. */ stopTimer(String timerEventName)93 void stopTimer(String timerEventName); 94 95 /** Start a jank recorder. */ startJankRecorder(String eventName)96 void startJankRecorder(String eventName); 97 98 /** Stop a jank recorder. */ stopJankRecorder(String eventName)99 void stopJankRecorder(String eventName); 100 101 /** Record memory. */ recordMemory(String memoryEventName)102 void recordMemory(String memoryEventName); 103 104 /** Record battery. */ recordBattery(String batteryEventName)105 void recordBattery(String batteryEventName); 106 107 /** Initiazer for metrics. */ 108 interface Initializer { 109 /** Initialize metrics for the application . */ initialize(Application application)110 void initialize(Application application); 111 } 112 } 113