Commit 61ee504e authored by Henrique Nakashima's avatar Henrique Nakashima Committed by Commit Bot

Reland "Log tab switch latency histograms through RecordHistogram"

This is a reland of 7002dd78

Original change's description:
> 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/+/2473042
> Reviewed-by: David Trainor <dtrainor@chromium.org>
> Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#818043}

Bug: 1139081
Change-Id: I61e6b53b2acca3bd70555fceed1c2da7de0ce0a5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2485541Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Cr-Commit-Position: refs/heads/master@{#819019}
parent 2caf1bae
......@@ -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,25 @@ 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:
return;
}
String histogramSuffix = perceived ? "_Perceived" : "_Actual";
RecordHistogram.recordTimesHistogram(baseHistogram + histogramSuffix, ms);
}
@NativeMethods
......@@ -238,11 +244,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