tabs: log version of saved tab state at deserialization
This will allow us to validate whether the old version 0 and version 1
deserialization logic is indeed dead code.
Bug: 1520963
Change-Id: I7b18de6f5f0894087299a8373d02a58136e0529b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5230738
Reviewed-by: David Trainor <dtrainor@chromium.org>
Reviewed-by: Wenyu Fu <wenyufu@chromium.org>
Commit-Queue: Elly FJ <ellyjones@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1251826}
diff --git a/chrome/browser/tab/web_contents_state.cc b/chrome/browser/tab/web_contents_state.cc
index 143a826..7f2101fa 100644
--- a/chrome/browser/tab/web_contents_state.cc
+++ b/chrome/browser/tab/web_contents_state.cc
@@ -16,6 +16,7 @@
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/logging.h"
+#include "base/metrics/histogram_macros.h"
#include "base/pickle.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
@@ -268,6 +269,12 @@
return false;
}
+ // TODO(https://crbug.com/1520963): Remove this once we have enough data to
+ // conclude whether V0 and V1 are still used.
+ constexpr size_t kHighestVersion = 3;
+ UMA_HISTOGRAM_EXACT_LINEAR("Android.WebContentsState.SavedStateVersion",
+ saved_state_version, kHighestVersion);
+
if (!saved_state_version) {
// When |saved_state_version| is 0, it predates our notion of each tab
// having a saved version id. For that version of tab serialization, we
diff --git a/tools/metrics/histograms/metadata/android/histograms.xml b/tools/metrics/histograms/metadata/android/histograms.xml
index 38fc274..b56ec92 100644
--- a/tools/metrics/histograms/metadata/android/histograms.xml
+++ b/tools/metrics/histograms/metadata/android/histograms.xml
@@ -4493,6 +4493,18 @@
</summary>
</histogram>
+<histogram name="Android.WebContentsState.SavedStateVersion" units="version"
+ expires_after="2024-06-01">
+ <owner>ellyjones@chromium.org</owner>
+ <owner>src/chrome/browser/tab/OWNERS</owner>
+ <summary>
+ Logs which version of the WebContentsState saved state is being deserialized
+ by ExtractNavigationEntries() and related functions.
+
+ This is recorded every time a WebContentsState is deserialized.
+ </summary>
+</histogram>
+
<histogram name="Android.WebView.AndroidX.ApiCall" enum="AndroidXWebkitApiCall"
expires_after="2024-10-31">
<owner>ntfschr@chromium.org</owner>