summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/metrics
diff options
context:
space:
mode:
authorzachh <zachh@google.com>2018-02-20 21:50:53 -0800
committerEric Erfanian <erfanian@google.com>2018-02-22 21:10:46 +0000
commit2905f6f492c34db684d53bac6e438c1d81fc0314 (patch)
tree3316e5ee0a79793dc278805f3bac84862bfc4073 /java/com/android/dialer/metrics
parent8d26b821c9754a9a81915ccb1b431efbb8550670 (diff)
Record jank metrics in old and new call logs.
Bug: 70989667 Test: unit PiperOrigin-RevId: 186410938 Change-Id: I0671ab0bbbe957b8f034c673e6309204284756d2
Diffstat (limited to 'java/com/android/dialer/metrics')
-rw-r--r--java/com/android/dialer/metrics/Metrics.java6
-rw-r--r--java/com/android/dialer/metrics/StubMetrics.java6
-rw-r--r--java/com/android/dialer/metrics/jank/RecyclerViewJankLogger.java46
3 files changed, 58 insertions, 0 deletions
diff --git a/java/com/android/dialer/metrics/Metrics.java b/java/com/android/dialer/metrics/Metrics.java
index 3922a8cfa..7cdfa220e 100644
--- a/java/com/android/dialer/metrics/Metrics.java
+++ b/java/com/android/dialer/metrics/Metrics.java
@@ -28,6 +28,12 @@ public interface Metrics {
/** Stop a timer. */
void stopTimer(String timerEventName);
+ /** Start a jank recorder. */
+ void startJankRecorder(String eventName);
+
+ /** Stop a jank recorder. */
+ void stopJankRecorder(String eventName);
+
/** Record memory. */
void recordMemory(String memoryEventName);
diff --git a/java/com/android/dialer/metrics/StubMetrics.java b/java/com/android/dialer/metrics/StubMetrics.java
index 114eb4308..f4d41e2d2 100644
--- a/java/com/android/dialer/metrics/StubMetrics.java
+++ b/java/com/android/dialer/metrics/StubMetrics.java
@@ -32,5 +32,11 @@ public final class StubMetrics implements Metrics {
public void stopTimer(String timerEventName) {}
@Override
+ public void startJankRecorder(String eventName) {}
+
+ @Override
+ public void stopJankRecorder(String eventName) {}
+
+ @Override
public void recordMemory(String memoryEventName) {}
}
diff --git a/java/com/android/dialer/metrics/jank/RecyclerViewJankLogger.java b/java/com/android/dialer/metrics/jank/RecyclerViewJankLogger.java
new file mode 100644
index 000000000..c9f389285
--- /dev/null
+++ b/java/com/android/dialer/metrics/jank/RecyclerViewJankLogger.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2018 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.metrics.jank;
+
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.RecyclerView.OnScrollListener;
+import com.android.dialer.metrics.Metrics;
+
+/** Logs jank for {@link RecyclerView} scrolling events. */
+public final class RecyclerViewJankLogger extends OnScrollListener {
+
+ private final Metrics metrics;
+ private final String eventName;
+
+ private boolean isScrolling;
+
+ public RecyclerViewJankLogger(Metrics metrics, String eventName) {
+ this.metrics = metrics;
+ this.eventName = eventName;
+ }
+
+ @Override
+ public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
+ if (!isScrolling && newState == RecyclerView.SCROLL_STATE_DRAGGING) {
+ isScrolling = true;
+ metrics.startJankRecorder(eventName);
+ } else if (isScrolling && newState == RecyclerView.SCROLL_STATE_IDLE) {
+ isScrolling = false;
+ metrics.stopJankRecorder(eventName);
+ }
+ }
+}