void UseCounter::updateMeasurements() { featureObserverHistogram().count(PageVisits); m_countBits.updateMeasurements(); // FIXME: Sometimes this function is called more than once per page. The following // bool guards against incrementing the page count when there are no CSS // bits set. https://crbug.com/236262. DEFINE_STATIC_LOCAL(EnumerationHistogram, cssPropertiesHistogram, ("WebCore.FeatureObserver.CSSProperties", maximumCSSSampleId())); bool needsPagesMeasuredUpdate = false; for (int i = firstCSSProperty; i <= lastUnresolvedCSSProperty; ++i) { if (m_CSSFeatureBits.quickGet(i)) { int cssSampleId = mapCSSPropertyIdToCSSSampleIdForHistogram(i); cssPropertiesHistogram.count(cssSampleId); needsPagesMeasuredUpdate = true; } } if (needsPagesMeasuredUpdate) cssPropertiesHistogram.count(totalPagesMeasuredCSSSampleId()); m_CSSFeatureBits.clearAll(); }
void UseCounter::updateMeasurements() { blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserver", PageVisits, NumberOfFeatures); if (m_countBits) { for (unsigned i = 0; i < NumberOfFeatures; ++i) { if (m_countBits->quickGet(i)) blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserver", i, NumberOfFeatures); } // Clearing count bits is timing sensitive. m_countBits->clearAll(); } // FIXME: Sometimes this function is called more than once per page. The following // bool guards against incrementing the page count when there are no CSS // bits set. http://crbug.com/236262. bool needsPagesMeasuredUpdate = false; for (int i = firstCSSProperty; i <= lastCSSProperty; ++i) { if (m_CSSFeatureBits.quickGet(i)) { int cssSampleId = mapCSSPropertyIdToCSSSampleIdForHistogram(i); blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserver.CSSProperties", cssSampleId, maximumCSSSampleId()); needsPagesMeasuredUpdate = true; } } if (needsPagesMeasuredUpdate) blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserver.CSSProperties", totalPagesMeasuredCSSSampleId(), maximumCSSSampleId()); m_CSSFeatureBits.clearAll(); }