Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: Source/core/rendering/RenderLayer.cpp

Issue 23455031: New UMA stats for stacking container opt-in measurements. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: combine histograms Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/rendering/RenderLayer.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderLayer.cpp
diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
index ad7140e7d9eec108e4dfdb6e05ef0952b3217262..abd0eba8111511c711fcd8c5777e3e540204a15c 100644
--- a/Source/core/rendering/RenderLayer.cpp
+++ b/Source/core/rendering/RenderLayer.cpp
@@ -134,6 +134,9 @@ RenderLayer::RenderLayer(RenderLayerModelObject* renderer)
, m_hasUnclippedDescendant(false)
, m_isUnclippedDescendant(false)
, m_needsCompositedScrolling(false)
+ , m_needsCompositedScrollingHasBeenRecorded(false)
+ , m_willUseCompositedScrollingHasBeenRecorded(false)
+ , m_isScrollableAreaHasBeenRecorded(false)
, m_canBePromotedToStackingContainer(false)
, m_canBePromotedToStackingContainerDirty(true)
, m_isRootLayer(renderer->isRenderView())
@@ -2084,11 +2087,39 @@ void RenderLayer::updateNeedsCompositedScrolling()
setNeedsCompositedScrolling(needsCompositedScrolling);
}
+enum CompositedScrollingHistogramBuckets {
+ IsScrollableAreaBucket = 0,
+ NeedsToBeStackingContainerBucket = 1,
+ WillUseCompositedScrollingBucket = 2
+};
+
void RenderLayer::setNeedsCompositedScrolling(bool needsCompositedScrolling)
{
if (m_needsCompositedScrolling == needsCompositedScrolling)
return;
+ // Count the total number of RenderLayers which need to be stacking
+ // containers some point. This should be recorded at most once per
+ // RenderLayer, so we check m_needsCompositedScrollingHasBeenRecorded.
+ if (acceleratedCompositingForOverflowScrollEnabled() && !m_needsCompositedScrollingHasBeenRecorded) {
+ HistogramSupport::histogramEnumeration("Renderer.CompositedScrolling", NeedsToBeStackingContainerBucket, 3);
Alexei Svitkine (slow) 2013/09/04 15:21:19 Nit: Instead of hardcoding 3 for the last param at
hartmanng 2013/09/04 15:48:56 Done.
+ m_needsCompositedScrollingHasBeenRecorded = true;
+ }
+
+ // Count the total number of RenderLayers which need composited scrolling at
+ // some point. This should be recorded at most once per RenderLayer, so we
+ // check m_willUseCompositedScrollingHasBeenRecorded.
+ //
+ // FIXME: Currently, this computes the exact same value as the above.
+ // However, it will soon be expanded to cover more than just stacking
+ // containers (see crbug.com/249354). When this happens, we should see a
+ // spike in "WillUseCompositedScrolling", while "NeedsToBeStackingContainer"
+ // will remain relatively static.
+ if (acceleratedCompositingForOverflowScrollEnabled() && !m_willUseCompositedScrollingHasBeenRecorded) {
+ HistogramSupport::histogramEnumeration("Renderer.CompositedScrolling", WillUseCompositedScrollingBucket, 3);
+ m_willUseCompositedScrollingHasBeenRecorded = true;
+ }
+
m_needsCompositedScrolling = needsCompositedScrolling;
// Note, the z-order lists may need to be rebuilt, but our code guarantees
@@ -6185,8 +6216,16 @@ void RenderLayer::updateScrollableAreaSet(bool hasOverflow)
isVisibleToHitTest &= owner->renderer() && owner->renderer()->visibleToHitTesting();
if (hasOverflow && isVisibleToHitTest) {
- if (frameView->addScrollableArea(scrollableArea()))
+ if (frameView->addScrollableArea(scrollableArea())) {
compositor()->setNeedsUpdateCompositingRequirementsState();
+
+ // Count the total number of RenderLayers that are scrollable areas for
+ // any period. We only want to record this at most once per RenderLayer.
+ if (!m_isScrollableAreaHasBeenRecorded) {
+ HistogramSupport::histogramEnumeration("Renderer.CompositedScrolling", IsScrollableAreaBucket, 3);
+ m_isScrollableAreaHasBeenRecorded = true;
+ }
+ }
} else {
if (frameView->removeScrollableArea(scrollableArea()))
setNeedsCompositedScrolling(false);
« no previous file with comments | « Source/core/rendering/RenderLayer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698