App latency test migration.
Migrate the existing app latency test to a new solution from Project Fi team.
The main change on this new solution is that the data collection part is done by Primes now.
Also, a few changes has been made on DialerPrimes class and a new Dialer variant dialer_release_test has been created.
The benefits of using primes to collect data are:
1. latency tests dont need to insert lines of code to track latency in dialer codebase
2. be able to collect data on any variants with or without Proguard
3. latency tests now only contain ui interaction to trigger scenarios on which we want add measurements
4. share the same logic with primes on production so that data from testbeds and normal users are comparable.
5. easier for anyone to add interesting data entries.
----------Mobile Harness Below-----------------------------------
RELNOTES[INC]:Add entries for dialer to use mobileharness plugin.
Test: No
PiperOrigin-RevId: 173481741
Change-Id: Ia6812794141382898bea4b34bca90278c5663464
diff --git a/java/com/android/dialer/logging/LoggingBindings.java b/java/com/android/dialer/logging/LoggingBindings.java
index ca9a053..7682c76 100644
--- a/java/com/android/dialer/logging/LoggingBindings.java
+++ b/java/com/android/dialer/logging/LoggingBindings.java
@@ -20,6 +20,13 @@
/** Allows the container application to gather analytics. */
public interface LoggingBindings {
+ String ON_CREATE_PRIMES_EVENT_NAME = "Application.onCreate";
+ String ON_CREATE_TO_ACTIVITY_ON_CREATE_PRIMES_EVENT_NAME =
+ "Application.onCreate_To_GoogleDialtactsActivity.onCreate";
+ String ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_INCOMING =
+ "CallList.onCallAdded_To_InCallActivity.onCreate_Incoming";
+ String ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_OUTGOING =
+ "CallList.onCallAdded_To_InCallActivity.onCreate_Outgoing";
/**
* Logs an DialerImpression event that's not associated with a specific call.
*
@@ -87,4 +94,10 @@
/** Logs successful People Api lookup result */
void logSuccessfulPeopleApiLookupReport(long latency, int httpResponseCode);
+
+ /** Log start a latency timer */
+ void logStartLatencyTimer(String timerEventName);
+
+ /** Log end a latency timer */
+ void logStopLatencyTimer(String timerEventName);
}
diff --git a/java/com/android/dialer/logging/LoggingBindingsStub.java b/java/com/android/dialer/logging/LoggingBindingsStub.java
index 2dbcc3f..ab6872c 100644
--- a/java/com/android/dialer/logging/LoggingBindingsStub.java
+++ b/java/com/android/dialer/logging/LoggingBindingsStub.java
@@ -61,4 +61,10 @@
@Override
public void logSuccessfulPeopleApiLookupReport(long latency, int httpResponseCode) {}
+
+ @Override
+ public void logStartLatencyTimer(String timerEventName) {}
+
+ @Override
+ public void logStopLatencyTimer(String timerEventName) {}
}
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index c3a68c0..c509e48 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -40,6 +40,8 @@
import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.LoggingBindings;
+import com.android.dialer.logging.LoggingBindingsFactory;
import com.android.dialer.logging.ScreenEvent;
import com.android.incallui.answer.bindings.AnswerBindings;
import com.android.incallui.answer.protocol.AnswerScreen;
@@ -145,6 +147,14 @@
pseudoBlackScreenOverlay = findViewById(R.id.psuedo_black_screen_overlay);
sendBroadcast(CallPendingActivity.getFinishBroadcast());
Trace.endSection();
+ if (getApplicationContext() instanceof LoggingBindingsFactory) {
+ LoggingBindings loggingBindings =
+ ((LoggingBindingsFactory) getApplicationContext()).newLoggingBindings();
+ loggingBindings.logStopLatencyTimer(
+ LoggingBindings.ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_INCOMING);
+ loggingBindings.logStopLatencyTimer(
+ LoggingBindings.ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_OUTGOING);
+ }
}
@Override
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index 59f3834..4f1dfd4 100644
--- a/java/com/android/incallui/call/CallList.java
+++ b/java/com/android/incallui/call/CallList.java
@@ -36,6 +36,8 @@
import com.android.dialer.enrichedcall.EnrichedCallManager;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.LoggingBindings;
+import com.android.dialer.logging.LoggingBindingsFactory;
import com.android.dialer.shortcuts.ShortcutUsageReporter;
import com.android.dialer.spam.Spam;
import com.android.dialer.spam.SpamBindings;
@@ -117,6 +119,17 @@
public void onCallAdded(
final Context context, final android.telecom.Call telecomCall, LatencyReport latencyReport) {
Trace.beginSection("CallList.onCallAdded");
+ if (context.getApplicationContext() instanceof LoggingBindingsFactory) {
+ if (telecomCall.getState() == Call.STATE_CONNECTING) {
+ ((LoggingBindingsFactory) context.getApplicationContext())
+ .newLoggingBindings()
+ .logStartLatencyTimer(LoggingBindings.ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_OUTGOING);
+ } else if (telecomCall.getState() == Call.STATE_RINGING) {
+ ((LoggingBindingsFactory) context.getApplicationContext())
+ .newLoggingBindings()
+ .logStartLatencyTimer(LoggingBindings.ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_INCOMING);
+ }
+ }
if (mUiListeners != null) {
mUiListeners.onCallAdded();
}