Commit 7002dd78 authored by Henrique Nakashima's avatar Henrique Nakashima Committed by Commit Bot

Log tab switch latency histograms through RecordHistogram

Remove JNI calls that do only that and record through the Java API.

Bug: 1139081
Change-Id: I6f22bca96f8e3bd2de125d6e302d12eadb5e4301
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2473042Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Cr-Commit-Position: refs/heads/master@{#818043}
parent dad5efae
......@@ -11,6 +11,7 @@ import androidx.annotation.Nullable;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabLaunchType;
......@@ -214,20 +215,26 @@ public abstract class TabModelJniBridge implements TabModel {
private static void flushTabSwitchLatencyMetric(boolean perceived) {
if (sTabSwitchStartTime <= 0) return;
final long ms = SystemClock.uptimeMillis() - sTabSwitchStartTime;
String baseHistogram;
switch (sTabSelectionType) {
case TabSelectionType.FROM_CLOSE:
TabModelJniBridgeJni.get().logFromCloseMetric(ms, perceived);
baseHistogram = "Tabs.SwitchFromCloseLatency";
break;
case TabSelectionType.FROM_EXIT:
TabModelJniBridgeJni.get().logFromExitMetric(ms, perceived);
baseHistogram = "Tabs.SwitchFromExitLatency";
break;
case TabSelectionType.FROM_NEW:
TabModelJniBridgeJni.get().logFromNewMetric(ms, perceived);
baseHistogram = "Tabs.SwitchFromNewLatency";
break;
case TabSelectionType.FROM_USER:
TabModelJniBridgeJni.get().logFromUserMetric(ms, perceived);
baseHistogram = "Tabs.SwitchFromUserLatency";
break;
default:
assert false;
return;
}
String histogramSuffix = perceived ? "_Perceived" : "_Actual";
RecordHistogram.recordTimesHistogram(baseHistogram + histogramSuffix, ms);
}
@NativeMethods
......@@ -238,11 +245,5 @@ public abstract class TabModelJniBridge implements TabModel {
long nativeTabModelJniBridge, TabModelJniBridge caller);
void destroy(long nativeTabModelJniBridge, TabModelJniBridge caller);
void tabAddedToModel(long nativeTabModelJniBridge, TabModelJniBridge caller, Tab tab);
// Methods for tab switch latency metrics.
void logFromCloseMetric(long ms, boolean perceived);
void logFromExitMetric(long ms, boolean perceived);
void logFromNewMetric(long ms, boolean perceived);
void logFromUserMetric(long ms, boolean perceived);
}
}
......@@ -203,61 +203,6 @@ void TabModelJniBridge::BroadcastSessionRestoreComplete(
TabModel::BroadcastSessionRestoreComplete();
}
inline static base::TimeDelta GetTimeDelta(jlong ms) {
return base::TimeDelta::FromMilliseconds(static_cast<int64_t>(ms));
}
void JNI_TabModelJniBridge_LogFromCloseMetric(
JNIEnv* env,
jlong ms,
jboolean perceived) {
if (perceived) {
UMA_HISTOGRAM_TIMES("Tabs.SwitchFromCloseLatency_Perceived",
GetTimeDelta(ms));
} else {
UMA_HISTOGRAM_TIMES("Tabs.SwitchFromCloseLatency_Actual",
GetTimeDelta(ms));
}
}
void JNI_TabModelJniBridge_LogFromExitMetric(
JNIEnv* env,
jlong ms,
jboolean perceived) {
if (perceived) {
UMA_HISTOGRAM_TIMES("Tabs.SwitchFromExitLatency_Perceived",
GetTimeDelta(ms));
} else {
UMA_HISTOGRAM_TIMES("Tabs.SwitchFromExitLatency_Actual",
GetTimeDelta(ms));
}
}
void JNI_TabModelJniBridge_LogFromNewMetric(JNIEnv* env,
jlong ms,
jboolean perceived) {
if (perceived) {
UMA_HISTOGRAM_TIMES("Tabs.SwitchFromNewLatency_Perceived",
GetTimeDelta(ms));
} else {
UMA_HISTOGRAM_TIMES("Tabs.SwitchFromNewLatency_Actual",
GetTimeDelta(ms));
}
}
void JNI_TabModelJniBridge_LogFromUserMetric(
JNIEnv* env,
jlong ms,
jboolean perceived) {
if (perceived) {
UMA_HISTOGRAM_TIMES("Tabs.SwitchFromUserLatency_Perceived",
GetTimeDelta(ms));
} else {
UMA_HISTOGRAM_TIMES("Tabs.SwitchFromUserLatency_Actual",
GetTimeDelta(ms));
}
}
TabModelJniBridge::~TabModelJniBridge() {
TabModelList::RemoveTabModel(this);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment