Commit 59dca876 authored by Vladimir Levin's avatar Vladimir Levin Committed by Commit Bot

ContentVisibility: Add UseCounters for each value (except visible).

This patch adds a use counter for each value of content visibility
other than the default.

R=chrishtr@chromium.org

Fixed: 1096676
Change-Id: I71dcb549b04b249f701bcc0b5b68f966052f0c8e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2257540
Commit-Queue: vmpstr <vmpstr@chromium.org>
Auto-Submit: vmpstr <vmpstr@chromium.org>
Reviewed-by: default avatarChris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#781372}
parent 0e905449
......@@ -2666,6 +2666,9 @@ enum WebFeature {
kDialogWithNonZeroScrollOffset = 3329,
kDialogHeightLargerThanViewport = 3330,
kOverlayPopup = 3331,
kContentVisibilityAuto = 3332,
kContentVisibilityHidden = 3333,
kContentVisibilityHiddenMatchable = 3334,
// Add new features immediately above this line. Don't change assigned
// numbers of any item, and don't reuse removed slots.
......
......@@ -29,6 +29,7 @@
#include "third_party/blink/renderer/core/paint/pre_paint_tree_walk.h"
#include "third_party/blink/renderer/platform/bindings/microtask.h"
#include "third_party/blink/renderer/platform/heap/heap.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
namespace blink {
......@@ -105,12 +106,16 @@ void DisplayLockContext::SetRequestedState(EContentVisibility state) {
RequestUnlock();
break;
case EContentVisibility::kAuto:
UseCounter::Count(document_, WebFeature::kContentVisibilityAuto);
RequestLock(static_cast<uint16_t>(DisplayLockActivationReason::kAny));
break;
case EContentVisibility::kHidden:
UseCounter::Count(document_, WebFeature::kContentVisibilityHidden);
RequestLock(0u);
break;
case EContentVisibility::kHiddenMatchable:
UseCounter::Count(document_,
WebFeature::kContentVisibilityHiddenMatchable);
RequestLock(
static_cast<uint16_t>(DisplayLockActivationReason::kAny) &
~static_cast<uint16_t>(DisplayLockActivationReason::kViewport));
......
......@@ -2493,6 +2493,50 @@ TEST_F(DisplayLockContextRenderingTest, ContainStrictChild) {
UpdateAllLifecyclePhasesForTest();
}
TEST_F(DisplayLockContextRenderingTest, UseCounter) {
SetHtmlInnerHTML(R"HTML(
<style>
.auto { content-visibility: auto; }
.hidden { content-visibility: hidden; }
.matchable { content-visibility: hidden-matchable; }
</style>
<div id=e1></div>
<div id=e2></div>
<div id=e3></div>
)HTML");
EXPECT_FALSE(GetDocument().IsUseCounted(WebFeature::kContentVisibilityAuto));
EXPECT_FALSE(
GetDocument().IsUseCounted(WebFeature::kContentVisibilityHidden));
EXPECT_FALSE(GetDocument().IsUseCounted(
WebFeature::kContentVisibilityHiddenMatchable));
GetDocument().getElementById("e1")->classList().Add("auto");
UpdateAllLifecyclePhasesForTest();
EXPECT_TRUE(GetDocument().IsUseCounted(WebFeature::kContentVisibilityAuto));
EXPECT_FALSE(
GetDocument().IsUseCounted(WebFeature::kContentVisibilityHidden));
EXPECT_FALSE(GetDocument().IsUseCounted(
WebFeature::kContentVisibilityHiddenMatchable));
GetDocument().getElementById("e2")->classList().Add("hidden");
UpdateAllLifecyclePhasesForTest();
EXPECT_TRUE(GetDocument().IsUseCounted(WebFeature::kContentVisibilityAuto));
EXPECT_TRUE(GetDocument().IsUseCounted(WebFeature::kContentVisibilityHidden));
EXPECT_FALSE(GetDocument().IsUseCounted(
WebFeature::kContentVisibilityHiddenMatchable));
GetDocument().getElementById("e3")->classList().Add("matchable");
UpdateAllLifecyclePhasesForTest();
EXPECT_TRUE(GetDocument().IsUseCounted(WebFeature::kContentVisibilityAuto));
EXPECT_TRUE(GetDocument().IsUseCounted(WebFeature::kContentVisibilityHidden));
EXPECT_TRUE(GetDocument().IsUseCounted(
WebFeature::kContentVisibilityHiddenMatchable));
}
TEST_F(DisplayLockContextRenderingTest, CompositingRootIsSkippedIfLocked) {
SetHtmlInnerHTML(R"HTML(
<style>
......
......@@ -28069,6 +28069,9 @@ Called by update_use_counter_feature_enum.py.-->
<int value="3329" label="DialogWithNonZeroScrollOffset"/>
<int value="3330" label="DialogHeightLargerThanViewport"/>
<int value="3331" label="OverlayPopup"/>
<int value="3332" label="ContentVisibilityAuto"/>
<int value="3333" label="ContentVisibilityHidden"/>
<int value="3334" label="ContentVisibilityHiddenMatchable"/>
</enum>
<enum name="FeaturePolicyAllowlistType">
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