Commit aba9ad90 authored by Andrey Kosyakov's avatar Andrey Kosyakov Committed by Chromium LUCI CQ

DevTools overlay: add support for showing web vitals HUD

Add an ability to enable HUD display for performance metric on a per-renderer
basis through CDP.

Bug: 1152089
Change-Id: Ia6f097fc90ceae5a3e9dc878d7880adbf02ce7be
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2639393Reviewed-by: default avatarPeter Kvitek <kvitekp@chromium.org>
Reviewed-by: default avatarAlex Rudenko <alexrudenko@chromium.org>
Reviewed-by: default avatarweiliangc <weiliangc@chromium.org>
Commit-Queue: Andrey Kosyakov <caseq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845278}
parent dc38b14b
......@@ -6041,6 +6041,11 @@ experimental domain Overlay
# True for showing hit-test borders
boolean show
# Request that backend shows an overlay with web vital metrics.
command setShowWebVitals
parameters
boolean show
# Paints viewport size upon main frame resize.
command setShowViewportSizeOnResize
parameters
......
......@@ -370,6 +370,7 @@ InspectorOverlayAgent::InspectorOverlayAgent(
show_layout_shift_regions_(&agent_state_, false),
show_scroll_bottleneck_rects_(&agent_state_, false),
show_hit_test_borders_(&agent_state_, false),
show_web_vitals_(&agent_state_, false),
show_size_on_resize_(&agent_state_, false),
paused_in_debugger_message_(&agent_state_, String()),
inspect_mode_(&agent_state_, protocol::Overlay::InspectModeEnum::None),
......@@ -601,6 +602,25 @@ Response InspectorOverlayAgent::setShowViewportSizeOnResize(bool show) {
return Response::Success();
}
Response InspectorOverlayAgent::setShowWebVitals(bool show) {
show_web_vitals_.Set(show);
if (show) {
Response response = CompositingEnabled();
if (!response.IsSuccess())
return response;
}
auto* widget_impl =
static_cast<WebFrameWidgetImpl*>(frame_impl_->LocalRoot()->FrameWidget());
// While a frame is being detached the inspector will shutdown and
// turn off debug overlays, but the WebFrameWidget is already gone.
if (widget_impl) {
cc::LayerTreeDebugState debug_state = widget_impl->GetLayerTreeDebugState();
debug_state.show_web_vital_metrics = show;
widget_impl->SetLayerTreeDebugState(debug_state);
}
return Response::Success();
}
Response InspectorOverlayAgent::setPausedInDebuggerMessage(
Maybe<String> message) {
paused_in_debugger_message_.Set(message.fromMaybe(String()));
......
......@@ -169,6 +169,7 @@ class CORE_EXPORT InspectorOverlayAgent final
protocol::Response setShowFPSCounter(bool) override;
protocol::Response setShowScrollBottleneckRects(bool) override;
protocol::Response setShowHitTestBorders(bool) override;
protocol::Response setShowWebVitals(bool) override;
protocol::Response setShowViewportSizeOnResize(bool) override;
protocol::Response setPausedInDebuggerMessage(
protocol::Maybe<String>) override;
......@@ -315,6 +316,7 @@ class CORE_EXPORT InspectorOverlayAgent final
InspectorAgentState::Boolean show_layout_shift_regions_;
InspectorAgentState::Boolean show_scroll_bottleneck_rects_;
InspectorAgentState::Boolean show_hit_test_borders_;
InspectorAgentState::Boolean show_web_vitals_;
InspectorAgentState::Boolean show_size_on_resize_;
InspectorAgentState::String paused_in_debugger_message_;
InspectorAgentState::String inspect_mode_;
......
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