Commit 0d242dfe authored by Henrique Nakashima's avatar Henrique Nakashima Committed by Commit Bot

Revert "Log tab switch latency histograms through RecordHistogram"

This reverts commit 7002dd78.

Reason for revert: Causes test flakiness: crbug.com/1139549. Unintended behavior change.

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}

TBR=dtrainor@chromium.org,hnakashima@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 1139081, 1139549
Change-Id: I7239091d6f7bb2fefd959b120625b834921d1881
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2485637Reviewed-by: default avatarHenrique Nakashima <hnakashima@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Cr-Commit-Position: refs/heads/master@{#818585}
parent e57924db
...@@ -11,7 +11,6 @@ import androidx.annotation.Nullable; ...@@ -11,7 +11,6 @@ import androidx.annotation.Nullable;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabLaunchType; import org.chromium.chrome.browser.tab.TabLaunchType;
...@@ -215,26 +214,20 @@ public abstract class TabModelJniBridge implements TabModel { ...@@ -215,26 +214,20 @@ public abstract class TabModelJniBridge implements TabModel {
private static void flushTabSwitchLatencyMetric(boolean perceived) { private static void flushTabSwitchLatencyMetric(boolean perceived) {
if (sTabSwitchStartTime <= 0) return; if (sTabSwitchStartTime <= 0) return;
final long ms = SystemClock.uptimeMillis() - sTabSwitchStartTime; final long ms = SystemClock.uptimeMillis() - sTabSwitchStartTime;
String baseHistogram;
switch (sTabSelectionType) { switch (sTabSelectionType) {
case TabSelectionType.FROM_CLOSE: case TabSelectionType.FROM_CLOSE:
baseHistogram = "Tabs.SwitchFromCloseLatency"; TabModelJniBridgeJni.get().logFromCloseMetric(ms, perceived);
break; break;
case TabSelectionType.FROM_EXIT: case TabSelectionType.FROM_EXIT:
baseHistogram = "Tabs.SwitchFromExitLatency"; TabModelJniBridgeJni.get().logFromExitMetric(ms, perceived);
break; break;
case TabSelectionType.FROM_NEW: case TabSelectionType.FROM_NEW:
baseHistogram = "Tabs.SwitchFromNewLatency"; TabModelJniBridgeJni.get().logFromNewMetric(ms, perceived);
break; break;
case TabSelectionType.FROM_USER: case TabSelectionType.FROM_USER:
baseHistogram = "Tabs.SwitchFromUserLatency"; TabModelJniBridgeJni.get().logFromUserMetric(ms, perceived);
break; break;
default:
assert false;
return;
} }
String histogramSuffix = perceived ? "_Perceived" : "_Actual";
RecordHistogram.recordTimesHistogram(baseHistogram + histogramSuffix, ms);
} }
@NativeMethods @NativeMethods
...@@ -245,5 +238,11 @@ public abstract class TabModelJniBridge implements TabModel { ...@@ -245,5 +238,11 @@ public abstract class TabModelJniBridge implements TabModel {
long nativeTabModelJniBridge, TabModelJniBridge caller); long nativeTabModelJniBridge, TabModelJniBridge caller);
void destroy(long nativeTabModelJniBridge, TabModelJniBridge caller); void destroy(long nativeTabModelJniBridge, TabModelJniBridge caller);
void tabAddedToModel(long nativeTabModelJniBridge, TabModelJniBridge caller, Tab tab); 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,6 +203,61 @@ void TabModelJniBridge::BroadcastSessionRestoreComplete( ...@@ -203,6 +203,61 @@ void TabModelJniBridge::BroadcastSessionRestoreComplete(
TabModel::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() { TabModelJniBridge::~TabModelJniBridge() {
TabModelList::RemoveTabModel(this); 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