summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/logging/LoggingBindings.java
blob: 9288324a15208244e1eac8d492824aa21d2f04df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package com.android.dialer.logging;

import android.app.Activity;
import android.widget.QuickContactBadge;
import com.google.auto.value.AutoValue;
import java.util.Collection;

/** Allows the container application to gather analytics. */
public interface LoggingBindings {

  /**
   * Logs an DialerImpression event that's not associated with a specific call.
   *
   * @param dialerImpression an integer representing what event occurred.
   */
  void logImpression(DialerImpression.Type dialerImpression);

  /**
   * Logs an impression for a general dialer event that's not associated with a specific call.
   *
   * @param dialerImpression an integer representing what event occurred.
   */
  @Deprecated
  void logImpression(int dialerImpression);

  /**
   * Logs an impression for a general dialer event that's associated with a specific call.
   *
   * @param dialerImpression an integer representing what event occurred.
   * @param callId unique ID of the call.
   * @param callStartTimeMillis the absolute time when the call started.
   */
  void logCallImpression(
      DialerImpression.Type dialerImpression, String callId, long callStartTimeMillis);

  /**
   * Logs an interaction that occurred.
   *
   * @param interaction an integer representing what interaction occurred.
   * @see com.android.dialer.logging.InteractionEvent
   */
  void logInteraction(InteractionEvent.Type interaction);

  /**
   * Logs an event indicating that a screen was displayed.
   *
   * @param screenEvent an integer representing the displayed screen.
   * @param activity Parent activity of the displayed screen.
   * @see com.android.dialer.logging.ScreenEvent
   */
  void logScreenView(com.android.dialer.logging.ScreenEvent.Type screenEvent, Activity activity);

  /** Logs the composition of contact tiles in the speed dial tab. */
  void logSpeedDialContactComposition(
      int counter,
      int starredContactsCount,
      int pinnedContactsCount,
      int multipleNumbersContactsCount,
      int contactsWithPhotoCount,
      int contactsWithNameCount,
      int lightbringerReachableContactsCount);

  /** Logs a hit event to the analytics server. */
  void sendHitEventAnalytics(String category, String action, String label, long value);

  /** Logs where a quick contact badge is clicked */
  void logQuickContactOnTouch(
      QuickContactBadge quickContact,
      InteractionEvent.Type interactionEvent,
      boolean shouldPerformClick);

  /** Logs People Api lookup result with error */
  void logPeopleApiLookupReportWithError(
      long latency, int httpResponseCode, PeopleApiLookupError.Type errorType);

  /** Logs successful People Api lookup result */
  void logSuccessfulPeopleApiLookupReport(long latency, int httpResponseCode);

  /** Logs a call auto-blocked in call screening. */
  void logAutoBlockedCall(String phoneNumber);

  /** Logs annotated call log metrics. */
  void logAnnotatedCallLogMetrics(int invalidNumbersInCallLog);

  /** Logs annotated call log metrics. */
  void logAnnotatedCallLogMetrics(int numberRowsThatDidPop, int numberRowsThatDidNotPop);

  /** Logs contacts provider metrics. */
  void logContactsProviderMetrics(Collection<ContactsProviderMatchInfo> matchInfos);

  /** Input type for {@link #logContactsProviderMetrics(Collection)}. */
  @AutoValue
  abstract class ContactsProviderMatchInfo {
    public abstract boolean matchedContact();

    public abstract boolean inputNumberValid();

    public abstract int inputNumberLength();

    public abstract int matchedNumberLength();

    public abstract boolean inputNumberHasPostdialDigits();

    public abstract boolean matchedNumberHasPostdialDigits();

    public static Builder builder() {
      return new AutoValue_LoggingBindings_ContactsProviderMatchInfo.Builder()
          .setMatchedContact(false)
          .setMatchedNumberLength(0)
          .setMatchedNumberHasPostdialDigits(false);
    }

    /** Builder. */
    @AutoValue.Builder
    public abstract static class Builder {
      public abstract Builder setMatchedContact(boolean value);

      public abstract Builder setInputNumberValid(boolean value);

      public abstract Builder setInputNumberLength(int value);

      public abstract Builder setMatchedNumberLength(int value);

      public abstract Builder setInputNumberHasPostdialDigits(boolean value);

      public abstract Builder setMatchedNumberHasPostdialDigits(boolean value);

      public abstract ContactsProviderMatchInfo build();
    }
  }
}