Add ThreadWrapperUsesMetronome to ProductionSupportedFlagList.java.
As is required in order to ramp up the ThreadWrapperUsesMetronome
experiment on Android WebView (and other platforms). Following
https://chromium.googlesource.com/chromium/src/+/main/android_webview/docs/developer-ui.md#Adding-your-flags-and-features-to-the-UI
Bug: chromium:1253787
Change-Id: I23fcca7bbacbc5196c9221593cda5780c8fa6e12
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3497391
Reviewed-by: Nate Fischer <ntfschr@chromium.org>
Commit-Queue: Henrik Boström <hbos@chromium.org>
Cr-Commit-Position: refs/heads/main@{#978196}
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn
index aff1d48..00f22234 100644
--- a/android_webview/BUILD.gn
+++ b/android_webview/BUILD.gn
@@ -789,6 +789,7 @@
"//components/network_session_configurator/android:network_session_configurator_java",
"//components/power_scheduler:power_scheduler_java",
"//components/viz:viz_java",
+ "//components/webrtc:components_webrtc_java",
"//content/public/android:content_java",
"//content/public/common:common_java",
"//gpu/config:config_java",
diff --git a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
index 2f1e6df..d3d2b00c 100644
--- a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
+++ b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
@@ -13,6 +13,7 @@
import org.chromium.components.network_session_configurator.NetworkSessionSwitches;
import org.chromium.components.power_scheduler.PowerSchedulerFeatures;
import org.chromium.components.viz.common.VizFeatures;
+import org.chromium.components.webrtc.ComponentsWebRtcFeatures;
import org.chromium.content_public.common.ContentFeatures;
import org.chromium.content_public.common.ContentSwitches;
import org.chromium.gpu.config.GpuFeatures;
@@ -279,5 +280,7 @@
AwFeatures.WEBVIEW_SYNTHESIZE_PAGE_LOAD_ONLY_ON_INITIAL_MAIN_DOCUMENT_ACCESS,
"Only synthesize page load for URL spoof prevention at most once,"
+ " on initial main document access."),
+ Flag.baseFeature(ComponentsWebRtcFeatures.THREAD_WRAPPER_USES_METRONOME,
+ "Makes ThreadWrapper coalesce delayed tasks on metronome ticks."),
};
}
diff --git a/components/webrtc/BUILD.gn b/components/webrtc/BUILD.gn
index 44981f1..b9e6f308 100644
--- a/components/webrtc/BUILD.gn
+++ b/components/webrtc/BUILD.gn
@@ -2,6 +2,10 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+if (is_android) {
+ import("//build/config/android/rules.gni")
+}
+
if (!is_ios) {
source_set("media_stream_device_enumerator") {
sources = [
@@ -95,3 +99,16 @@
"//third_party/webrtc_overrides:metronome_like_task_queue_test",
]
}
+
+if (is_android) {
+ java_cpp_features("java_features_srcjar") {
+ # External code should depend on ":components_webrtc_java" instead.
+ visibility = [ ":*" ]
+ sources = [ "//components/webrtc/thread_wrapper.cc" ]
+ template =
+ "//components/webrtc/java_templates/ComponentsWebRtcFeatures.java.tmpl"
+ }
+ android_library("components_webrtc_java") {
+ srcjar_deps = [ ":java_features_srcjar" ]
+ }
+}
diff --git a/components/webrtc/java_templates/ComponentsWebRtcFeatures.java.tmpl b/components/webrtc/java_templates/ComponentsWebRtcFeatures.java.tmpl
new file mode 100644
index 0000000..0586785
--- /dev/null
+++ b/components/webrtc/java_templates/ComponentsWebRtcFeatures.java.tmpl
@@ -0,0 +1,16 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.webrtc;
+
+/**
+ * Contains features that are specific to components/webrtc/.
+ */
+public final class ComponentsWebRtcFeatures {{
+
+{NATIVE_FEATURES}
+
+ // Prevents instantiation.
+ private ComponentsWebRtcFeatures() {{}}
+}}
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 870d81c1..60677c2 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -51495,6 +51495,7 @@
<int value="-2088555929" label="EnableAppGridGhost:enabled"/>
<int value="-2088472280" label="KeyboardShortcutViewerApp:disabled"/>
<int value="-2088263177" label="EnableMixedContentDownloadDialog:enabled"/>
+ <int value="-2087444854" label="ThreadWrapperUsesMetronome:disabled"/>
<int value="-2084849051" label="TabGroupsCollapseFreezing:disabled"/>
<int value="-2083998415" label="VrLaunchIntent:enabled"/>
<int value="-2083195884" label="enable-firewall-hole-punching"/>
@@ -55717,6 +55718,7 @@
<int value="834033186" label="enable-data-reduction-proxy-dev"/>
<int value="834326277" label="enable-answers-in-suggest"/>
<int value="835018878" label="disable-quic"/>
+ <int value="835399079" label="ThreadWrapperUsesMetronome:enabled"/>
<int value="835726069" label="NtpWebUI:disabled"/>
<int value="836406476" label="EnableTouchableAppContextMenu:enabled"/>
<int value="837350465" label="SystemProxyForSystemServices:enabled"/>