Remove Enumeration Histograms from the Blink Platform API.
Use the new API for logging enumeration histograms.
BUG=583012
Review URL: https://codereview.chromium.org/1652983005
Cr-Commit-Position: refs/heads/master@{#373922}
diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc
index 4bb755a..fa8c782 100644
--- a/content/child/blink_platform_impl.cc
+++ b/content/child/blink_platform_impl.cc
@@ -14,7 +14,6 @@
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/singleton.h"
-#include "base/metrics/histogram.h"
#include "base/rand_util.h"
#include "base/single_thread_task_runner.h"
#include "base/strings/string_number_conversions.h"
@@ -579,17 +578,6 @@
return web_events[idx];
}
-void BlinkPlatformImpl::histogramEnumeration(
- const char* name, int sample, int boundary_value) {
- // Copied from histogram macro, but without the static variable caching
- // the histogram because name is dynamic.
- base::HistogramBase* counter =
- base::LinearHistogram::FactoryGet(name, 1, boundary_value,
- boundary_value + 1, base::HistogramBase::kUmaTargetedHistogramFlag);
- DCHECK_EQ(name, counter->histogram_name());
- counter->Add(sample);
-}
-
void BlinkPlatformImpl::registerMemoryDumpProvider(
blink::WebMemoryDumpProvider* wmdp, const char* name) {
WebMemoryDumpProviderAdapter* wmdp_adapter =
diff --git a/content/child/blink_platform_impl.h b/content/child/blink_platform_impl.h
index 52b8e3e..af6f000 100644
--- a/content/child/blink_platform_impl.h
+++ b/content/child/blink_platform_impl.h
@@ -109,9 +109,6 @@
blink::WebWaitableEvent::InitialState state) override;
blink::WebWaitableEvent* waitMultipleEvents(
const blink::WebVector<blink::WebWaitableEvent*>& events) override;
- void histogramEnumeration(const char* name,
- int sample,
- int boundary_value) override;
void registerMemoryDumpProvider(blink::WebMemoryDumpProvider* wmdp,
const char* name) override;
void unregisterMemoryDumpProvider(
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
index d7ff45f..2dc568e 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
@@ -12,11 +12,11 @@
#include "core/fetch/ScriptResource.h"
#include "core/frame/Settings.h"
#include "core/html/parser/TextResourceDecoder.h"
+#include "platform/Histogram.h"
#include "platform/SharedBuffer.h"
#include "platform/Task.h"
#include "platform/ThreadSafeFunctional.h"
#include "platform/TraceEvent.h"
-#include "public/platform/Platform.h"
#include "public/platform/WebScheduler.h"
#include "wtf/MainThread.h"
#include "wtf/text/TextEncodingRegistry.h"
@@ -25,23 +25,28 @@
namespace {
-const char* startedStreamingHistogramName(ScriptStreamer::Type scriptType)
+void recordStartedStreamingHistogram(ScriptStreamer::Type scriptType, int reason)
{
switch (scriptType) {
- case ScriptStreamer::ParsingBlocking:
- return "WebCore.Scripts.ParsingBlocking.StartedStreaming";
+ case ScriptStreamer::ParsingBlocking: {
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, parseBlockingHistogram, ("WebCore.Scripts.ParsingBlocking.StartedStreaming", 2));
+ parseBlockingHistogram.count(reason);
break;
- case ScriptStreamer::Deferred:
- return "WebCore.Scripts.Deferred.StartedStreaming";
+ }
+ case ScriptStreamer::Deferred: {
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, deferredHistogram, ("WebCore.Scripts.Deferred.StartedStreaming", 2));
+ deferredHistogram.count(reason);
break;
- case ScriptStreamer::Async:
- return "WebCore.Scripts.Async.StartedStreaming";
+ }
+ case ScriptStreamer::Async: {
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, asyncHistogram, ("WebCore.Scripts.Async.StartedStreaming", 2));
+ asyncHistogram.count(reason);
break;
+ }
default:
ASSERT_NOT_REACHED();
break;
}
- return 0;
}
// For tracking why some scripts are not streamed. Not streaming is part of
@@ -59,23 +64,28 @@
NotStreamingReasonEnd
};
-const char* notStreamingReasonHistogramName(ScriptStreamer::Type scriptType)
+void recordNotStreamingReasonHistogram(ScriptStreamer::Type scriptType, NotStreamingReason reason)
{
switch (scriptType) {
- case ScriptStreamer::ParsingBlocking:
- return "WebCore.Scripts.ParsingBlocking.NotStreamingReason";
+ case ScriptStreamer::ParsingBlocking: {
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, parseBlockingHistogram, ("WebCore.Scripts.ParsingBlocking.NotStreamingReason", NotStreamingReasonEnd));
+ parseBlockingHistogram.count(reason);
break;
- case ScriptStreamer::Deferred:
- return "WebCore.Scripts.Deferred.NotStreamingReason";
+ }
+ case ScriptStreamer::Deferred: {
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, deferredHistogram, ("WebCore.Scripts.Deferred.NotStreamingReason", NotStreamingReasonEnd));
+ deferredHistogram.count(reason);
break;
- case ScriptStreamer::Async:
- return "WebCore.Scripts.Async.NotStreamingReason";
+ }
+ case ScriptStreamer::Async: {
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, asyncHistogram, ("WebCore.Scripts.Async.NotStreamingReason", NotStreamingReasonEnd));
+ asyncHistogram.count(reason);
break;
+ }
default:
ASSERT_NOT_REACHED();
break;
}
- return 0;
}
} // namespace
@@ -384,7 +394,7 @@
// sure negative cases here.
bool startedStreaming = startStreamingInternal(script, scriptType, settings, scriptState, loadingTaskRunner);
if (!startedStreaming)
- Platform::current()->histogramEnumeration(startedStreamingHistogramName(scriptType), 0, 2);
+ recordStartedStreamingHistogram(scriptType, 0);
}
bool ScriptStreamer::convertEncoding(const char* encodingName, v8::ScriptCompiler::StreamedSource::Encoding* encoding)
@@ -492,8 +502,8 @@
// from the decoder.
if (!convertEncoding(decoder->encoding().name(), &m_encoding)) {
suppressStreaming();
- Platform::current()->histogramEnumeration(notStreamingReasonHistogramName(m_scriptType), EncodingNotSupported, NotStreamingReasonEnd);
- Platform::current()->histogramEnumeration(startedStreamingHistogramName(m_scriptType), 0, 2);
+ recordNotStreamingReasonHistogram(m_scriptType, EncodingNotSupported);
+ recordStartedStreamingHistogram(m_scriptType, 0);
return;
}
if (ScriptStreamerThread::shared()->isRunningTask()) {
@@ -502,15 +512,15 @@
// because the running task can block and wait for data from the
// network.
suppressStreaming();
- Platform::current()->histogramEnumeration(notStreamingReasonHistogramName(m_scriptType), ThreadBusy, NotStreamingReasonEnd);
- Platform::current()->histogramEnumeration(startedStreamingHistogramName(m_scriptType), 0, 2);
+ recordNotStreamingReasonHistogram(m_scriptType, ThreadBusy);
+ recordStartedStreamingHistogram(m_scriptType, 0);
return;
}
if (!m_scriptState->contextIsValid()) {
suppressStreaming();
- Platform::current()->histogramEnumeration(notStreamingReasonHistogramName(m_scriptType), ContextNotValid, NotStreamingReasonEnd);
- Platform::current()->histogramEnumeration(startedStreamingHistogramName(m_scriptType), 0, 2);
+ recordNotStreamingReasonHistogram(m_scriptType, ContextNotValid);
+ recordStartedStreamingHistogram(m_scriptType, 0);
return;
}
@@ -527,8 +537,8 @@
suppressStreaming();
m_stream = 0;
m_source.clear();
- Platform::current()->histogramEnumeration(notStreamingReasonHistogramName(m_scriptType), V8CannotStream, NotStreamingReasonEnd);
- Platform::current()->histogramEnumeration(startedStreamingHistogramName(m_scriptType), 0, 2);
+ recordNotStreamingReasonHistogram(m_scriptType, V8CannotStream);
+ recordStartedStreamingHistogram(m_scriptType, 0);
return;
}
@@ -537,7 +547,7 @@
// the corresponding deref() is in streamingComplete.
ref();
ScriptStreamerThread::shared()->postTask(new Task(threadSafeBind(&ScriptStreamerThread::runScriptStreamingTask, scriptStreamingTask.release(), AllowCrossThreadAccess(this))));
- Platform::current()->histogramEnumeration(startedStreamingHistogramName(m_scriptType), 1, 2);
+ recordStartedStreamingHistogram(m_scriptType, 1);
}
if (m_stream)
m_stream->didReceiveData(this, lengthOfBOM);
@@ -552,8 +562,8 @@
// be a "parsing complete" notification either, and we should not wait for
// it.
if (!m_haveEnoughDataForStreaming) {
- Platform::current()->histogramEnumeration(notStreamingReasonHistogramName(m_scriptType), ScriptTooSmall, NotStreamingReasonEnd);
- Platform::current()->histogramEnumeration(startedStreamingHistogramName(m_scriptType), 0, 2);
+ recordNotStreamingReasonHistogram(m_scriptType, ScriptTooSmall);
+ recordStartedStreamingHistogram(m_scriptType, 0);
suppressStreaming();
}
if (m_stream)
@@ -642,15 +652,15 @@
ASSERT(scriptState->contextIsValid());
ScriptResource* resource = script->resource();
if (resource->isLoaded()) {
- Platform::current()->histogramEnumeration(notStreamingReasonHistogramName(scriptType), AlreadyLoaded, NotStreamingReasonEnd);
+ recordNotStreamingReasonHistogram(scriptType, AlreadyLoaded);
return false;
}
if (!resource->url().protocolIsInHTTPFamily()) {
- Platform::current()->histogramEnumeration(notStreamingReasonHistogramName(scriptType), NotHTTP, NotStreamingReasonEnd);
+ recordNotStreamingReasonHistogram(scriptType, NotHTTP);
return false;
}
if (resource->isCacheValidator()) {
- Platform::current()->histogramEnumeration(notStreamingReasonHistogramName(scriptType), Reload, NotStreamingReasonEnd);
+ recordNotStreamingReasonHistogram(scriptType, Reload);
// This happens e.g., during reloads. We're actually not going to load
// the current Resource of the PendingScript but switch to another
// Resource -> don't stream.
diff --git a/third_party/WebKit/Source/core/css/FontFace.cpp b/third_party/WebKit/Source/core/css/FontFace.cpp
index 2f4661d..c1e0181 100644
--- a/third_party/WebKit/Source/core/css/FontFace.cpp
+++ b/third_party/WebKit/Source/core/css/FontFace.cpp
@@ -58,8 +58,8 @@
#include "core/frame/Settings.h"
#include "core/frame/UseCounter.h"
#include "platform/FontFamilyNames.h"
+#include "platform/Histogram.h"
#include "platform/SharedBuffer.h"
-#include "public/platform/Platform.h"
namespace blink {
@@ -602,8 +602,10 @@
m_cssFontFace->addSource(source.release());
}
- if (m_display)
- Platform::current()->histogramEnumeration("WebFont.FontDisplayValue", CSSValueToFontDisplay(m_display.get()), FontDisplayEnumMax);
+ if (m_display) {
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, fontDisplayHistogram, ("WebFont.FontDisplayValue", FontDisplayEnumMax));
+ fontDisplayHistogram.count(CSSValueToFontDisplay(m_display.get()));
+ }
}
void FontFace::initCSSFontFace(const unsigned char* data, size_t size)
diff --git a/third_party/WebKit/Source/core/css/FontFaceSet.cpp b/third_party/WebKit/Source/core/css/FontFaceSet.cpp
index fb3eda7..e0c6c7f5 100644
--- a/third_party/WebKit/Source/core/css/FontFaceSet.cpp
+++ b/third_party/WebKit/Source/core/css/FontFaceSet.cpp
@@ -41,7 +41,6 @@
#include "core/frame/LocalFrame.h"
#include "core/style/StyleInheritedData.h"
#include "platform/Histogram.h"
-#include "public/platform/Platform.h"
namespace blink {
@@ -484,7 +483,8 @@
webFontsInPageHistogram.count(m_count);
}
if (m_status == HadBlankText || m_status == DidNotHaveBlankText) {
- Platform::current()->histogramEnumeration("WebFont.HadBlankText", m_status == HadBlankText ? 1 : 0, 2);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, hadBlankTextHistogram, ("WebFont.HadBlankText", 2));
+ hadBlankTextHistogram.count(m_status == HadBlankText ? 1 : 0);
m_status = Reported;
}
}
diff --git a/third_party/WebKit/Source/core/css/LocalFontFaceSource.cpp b/third_party/WebKit/Source/core/css/LocalFontFaceSource.cpp
index 59074cf4f..4ea73e26 100644
--- a/third_party/WebKit/Source/core/css/LocalFontFaceSource.cpp
+++ b/third_party/WebKit/Source/core/css/LocalFontFaceSource.cpp
@@ -4,10 +4,10 @@
#include "core/css/LocalFontFaceSource.h"
+#include "platform/Histogram.h"
#include "platform/fonts/FontCache.h"
#include "platform/fonts/FontDescription.h"
#include "platform/fonts/SimpleFontData.h"
-#include "public/platform/Platform.h"
namespace blink {
@@ -29,7 +29,8 @@
if (m_reported)
return;
m_reported = true;
- Platform::current()->histogramEnumeration("WebFont.LocalFontUsed", loadSuccess ? 1 : 0, 2);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, localFontUsedHistogram, ("WebFont.LocalFontUsed", 2));
+ localFontUsedHistogram.count(loadSuccess ? 1 : 0);
}
} // namespace blink
diff --git a/third_party/WebKit/Source/core/css/RemoteFontFaceSource.cpp b/third_party/WebKit/Source/core/css/RemoteFontFaceSource.cpp
index 6665427..160e397 100644
--- a/third_party/WebKit/Source/core/css/RemoteFontFaceSource.cpp
+++ b/third_party/WebKit/Source/core/css/RemoteFontFaceSource.cpp
@@ -13,7 +13,6 @@
#include "platform/fonts/FontCache.h"
#include "platform/fonts/FontDescription.h"
#include "platform/fonts/SimpleFontData.h"
-#include "public/platform/Platform.h"
#include "wtf/CurrentTime.h"
namespace blink {
@@ -236,11 +235,13 @@
int histogramValue = font->url().protocolIsData() ? DataUrl
: font->response().wasCached() ? Hit
: Miss;
- Platform::current()->histogramEnumeration("WebFont.CacheHit", histogramValue, CacheHitEnumMax);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, cacheHitHistogram, ("WebFont.CacheHit", CacheHitEnumMax));
+ cacheHitHistogram.count(histogramValue);
enum { CORSFail, CORSSuccess, CORSEnumMax };
int corsValue = font->isCORSFailed() ? CORSFail : CORSSuccess;
- Platform::current()->histogramEnumeration("WebFont.CORSSuccess", corsValue, CORSEnumMax);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, corsHistogram, ("WebFont.CORSSuccess", CORSEnumMax));
+ corsHistogram.count(corsValue);
}
}
@@ -288,7 +289,9 @@
if (triggered)
interventionResult |= 1 << 1;
const int boundary = 1 << 2;
- Platform::current()->histogramEnumeration("WebFont.InterventionResult", interventionResult, boundary);
+
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, interventionHistogram, ("WebFont.InterventionResult", boundary));
+ interventionHistogram.count(interventionResult);
}
} // namespace blink
diff --git a/third_party/WebKit/Source/core/dom/ViewportDescription.cpp b/third_party/WebKit/Source/core/dom/ViewportDescription.cpp
index c57e8f63..8fd6d241 100644
--- a/third_party/WebKit/Source/core/dom/ViewportDescription.cpp
+++ b/third_party/WebKit/Source/core/dom/ViewportDescription.cpp
@@ -34,7 +34,6 @@
#include "core/frame/Settings.h"
#include "platform/Histogram.h"
#include "platform/weborigin/KURL.h"
-#include "public/platform/Platform.h"
namespace blink {
@@ -221,18 +220,15 @@
if (!mainFrame->document()->url().protocolIsInHTTPFamily())
return;
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, metaTagTypeHistogram, ("Viewport.MetaTagType", TypeCount));
if (!isSpecifiedByAuthor()) {
- if (mainFrame->document()->isMobileDocument())
- Platform::current()->histogramEnumeration("Viewport.MetaTagType", XhtmlMobileProfile, TypeCount);
- else
- Platform::current()->histogramEnumeration("Viewport.MetaTagType", NoViewportTag, TypeCount);
-
+ metaTagTypeHistogram.count(mainFrame->document()->isMobileDocument() ? XhtmlMobileProfile : NoViewportTag);
return;
}
if (isMetaViewportType()) {
if (maxWidth.type() == blink::Fixed) {
- Platform::current()->histogramEnumeration("Viewport.MetaTagType", ConstantWidth, TypeCount);
+ metaTagTypeHistogram.count(ConstantWidth);
if (mainFrame->view()) {
// To get an idea of how "far" the viewport is from the device's ideal width, we
@@ -245,15 +241,15 @@
}
} else if (maxWidth.type() == blink::DeviceWidth || maxWidth.type() == blink::ExtendToZoom) {
- Platform::current()->histogramEnumeration("Viewport.MetaTagType", DeviceWidth, TypeCount);
+ metaTagTypeHistogram.count(DeviceWidth);
} else {
// Overflow bucket for cases we may be unaware of.
- Platform::current()->histogramEnumeration("Viewport.MetaTagType", MetaWidthOther, TypeCount);
+ metaTagTypeHistogram.count(MetaWidthOther);
}
} else if (type == ViewportDescription::HandheldFriendlyMeta) {
- Platform::current()->histogramEnumeration("Viewport.MetaTagType", MetaHandheldFriendly, TypeCount);
+ metaTagTypeHistogram.count(MetaHandheldFriendly);
} else if (type == ViewportDescription::MobileOptimizedMeta) {
- Platform::current()->histogramEnumeration("Viewport.MetaTagType", MobileOptimizedMeta, TypeCount);
+ metaTagTypeHistogram.count(MobileOptimizedMeta);
}
#endif
}
diff --git a/third_party/WebKit/Source/core/fetch/FontResource.cpp b/third_party/WebKit/Source/core/fetch/FontResource.cpp
index 48b48ae..7bc502e 100644
--- a/third_party/WebKit/Source/core/fetch/FontResource.cpp
+++ b/third_party/WebKit/Source/core/fetch/FontResource.cpp
@@ -29,10 +29,10 @@
#include "core/fetch/FetchRequest.h"
#include "core/fetch/ResourceClientWalker.h"
#include "core/fetch/ResourceFetcher.h"
+#include "platform/Histogram.h"
#include "platform/SharedBuffer.h"
#include "platform/fonts/FontCustomPlatformData.h"
#include "platform/fonts/FontPlatformData.h"
-#include "public/platform/Platform.h"
#include "wtf/CurrentTime.h"
namespace blink {
@@ -66,7 +66,8 @@
static void recordPackageFormatHistogram(FontPackageFormat format)
{
- Platform::current()->histogramEnumeration("WebFont.PackageFormat", format, PackageFormatEnumMax);
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, packageFormatHistogram, new EnumerationHistogram("WebFont.PackageFormat", PackageFormatEnumMax));
+ packageFormatHistogram.count(format);
}
ResourcePtr<FontResource> FontResource::fetch(FetchRequest& request, ResourceFetcher* fetcher)
diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
index 7b58488..a55cb44 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
+++ b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
@@ -68,11 +68,37 @@
SriResourceIntegrityMismatchEventCount
};
+#define DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, name) \
+ case Resource::name: { \
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, resourceHistogram, new EnumerationHistogram("Blink.MemoryCache.RevalidationPolicy." prefix #name, Load + 1)); \
+ resourceHistogram.count(policy); \
+ break; \
+ }
+
+#define DEFINE_RESOURCE_HISTOGRAM(prefix) \
+ switch (factory.type()) { \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, CSSStyleSheet) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Font) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Image) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, ImportResource) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, LinkPrefetch) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, LinkPreload) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, MainResource) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Manifest) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Media) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Raw) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Script) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, SVGDocument) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, TextTrack) \
+ DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, XSLStyleSheet) \
+ }
+
} // namespace
static void RecordSriResourceIntegrityMismatchEvent(SriResourceIntegrityMismatchEvent event)
{
- Platform::current()->histogramEnumeration("sri.resource_integrity_mismatch_event", event, SriResourceIntegrityMismatchEventCount);
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, integrityHistogram, new EnumerationHistogram("sri.resource_integrity_mismatch_event", SriResourceIntegrityMismatchEventCount));
+ integrityHistogram.count(event);
}
static ResourceLoadPriority typeToPriority(Resource::Type type)
@@ -389,11 +415,11 @@
const RevalidationPolicy policy = determineRevalidationPolicy(factory.type(), request, resource.get(), isStaticData);
- String histogramName = "Blink.MemoryCache.RevalidationPolicy.";
- if (request.forPreload())
- histogramName.append("Preload.");
- histogramName.append(Resource::resourceTypeName(factory.type()));
- Platform::current()->histogramEnumeration(histogramName.utf8().data(), policy, Load + 1);
+ if (request.forPreload()) {
+ DEFINE_RESOURCE_HISTOGRAM("Preload.");
+ } else {
+ DEFINE_RESOURCE_HISTOGRAM("");
+ }
switch (policy) {
case Reload:
diff --git a/third_party/WebKit/Source/core/frame/UseCounter.cpp b/third_party/WebKit/Source/core/frame/UseCounter.cpp
index 4a513d9c..02998ab 100644
--- a/third_party/WebKit/Source/core/frame/UseCounter.cpp
+++ b/third_party/WebKit/Source/core/frame/UseCounter.cpp
@@ -34,7 +34,7 @@
#include "core/frame/LocalFrame.h"
#include "core/inspector/ConsoleMessage.h"
#include "core/workers/WorkerGlobalScope.h"
-#include "public/platform/Platform.h"
+#include "platform/Histogram.h"
namespace blink {
@@ -568,6 +568,12 @@
static int maximumCSSSampleId() { return 518; }
+static EnumerationHistogram& featureObserverHistogram()
+{
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, histogram, ("WebCore.FeatureObserver", UseCounter::NumberOfFeatures));
+ return histogram;
+}
+
void UseCounter::muteForInspector()
{
UseCounter::m_muteCount++;
@@ -587,16 +593,17 @@
UseCounter::~UseCounter()
{
// We always log PageDestruction so that we have a scale for the rest of the features.
- Platform::current()->histogramEnumeration("WebCore.FeatureObserver", PageDestruction, NumberOfFeatures);
+ featureObserverHistogram().count(PageDestruction);
updateMeasurements();
}
void UseCounter::CountBits::updateMeasurements()
{
+ EnumerationHistogram& featureHistogram = featureObserverHistogram();
for (unsigned i = 0; i < NumberOfFeatures; ++i) {
if (m_bits.quickGet(i))
- Platform::current()->histogramEnumeration("WebCore.FeatureObserver", i, NumberOfFeatures);
+ featureHistogram.count(i);
}
// Clearing count bits is timing sensitive.
m_bits.clearAll();
@@ -604,23 +611,24 @@
void UseCounter::updateMeasurements()
{
- Platform::current()->histogramEnumeration("WebCore.FeatureObserver", PageVisits, NumberOfFeatures);
+ 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);
- Platform::current()->histogramEnumeration("WebCore.FeatureObserver.CSSProperties", cssSampleId, maximumCSSSampleId());
+ cssPropertiesHistogram.count(cssSampleId);
needsPagesMeasuredUpdate = true;
}
}
if (needsPagesMeasuredUpdate)
- Platform::current()->histogramEnumeration("WebCore.FeatureObserver.CSSProperties", totalPagesMeasuredCSSSampleId(), maximumCSSSampleId());
+ cssPropertiesHistogram.count(totalPagesMeasuredCSSSampleId());
m_CSSFeatureBits.clearAll();
}
diff --git a/third_party/WebKit/Source/core/frame/VisualViewport.cpp b/third_party/WebKit/Source/core/frame/VisualViewport.cpp
index a7494c8a..4f8a31d 100644
--- a/third_party/WebKit/Source/core/frame/VisualViewport.cpp
+++ b/third_party/WebKit/Source/core/frame/VisualViewport.cpp
@@ -42,6 +42,7 @@
#include "core/page/ChromeClient.h"
#include "core/page/Page.h"
#include "core/page/scrolling/ScrollingCoordinator.h"
+#include "platform/Histogram.h"
#include "platform/TraceEvent.h"
#include "platform/geometry/DoubleRect.h"
#include "platform/geometry/FloatSize.h"
@@ -49,7 +50,6 @@
#include "platform/graphics/GraphicsLayerFactory.h"
#include "platform/scroll/Scrollbar.h"
#include "platform/scroll/ScrollbarThemeOverlay.h"
-#include "public/platform/Platform.h"
#include "public/platform/WebCompositorSupport.h"
#include "public/platform/WebLayer.h"
#include "public/platform/WebLayerTreeView.h"
@@ -686,7 +686,8 @@
if (m_trackPinchZoomStatsForPage) {
bool didScale = m_maxPageScale > 0;
- Platform::current()->histogramEnumeration("Viewport.DidScalePage", didScale ? 1 : 0, 2);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, didScaleHistogram, ("Viewport.DidScalePage", 2));
+ didScaleHistogram.count(didScale ? 1 : 0);
if (didScale) {
int zoomPercentage = floor(m_maxPageScale * 100);
@@ -694,7 +695,8 @@
// See the PageScaleFactor enumeration in histograms.xml for the bucket ranges.
int bucket = floor(zoomPercentage / 25.f);
- Platform::current()->histogramEnumeration("Viewport.MaxPageScale", bucket, 21);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, maxScaleHistogram, ("Viewport.MaxPageScale", 21));
+ maxScaleHistogram.count(bucket);
}
}
diff --git a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
index e0d7ecd..118fa20 100644
--- a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
@@ -46,6 +46,7 @@
#include "core/imagebitmap/ImageBitmapOptions.h"
#include "core/layout/LayoutHTMLCanvas.h"
#include "core/paint/PaintLayer.h"
+#include "platform/Histogram.h"
#include "platform/MIMETypeRegistry.h"
#include "platform/RuntimeEnabledFeatures.h"
#include "platform/graphics/Canvas2DImageBufferSurface.h"
@@ -237,8 +238,10 @@
return nullptr;
// Log the aliased context type used.
- if (!m_context)
- Platform::current()->histogramEnumeration("Canvas.ContextType", contextType, CanvasRenderingContext::ContextTypeCount);
+ if (!m_context) {
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, contextTypeHistogram, ("Canvas.ContextType", CanvasRenderingContext::ContextTypeCount));
+ contextTypeHistogram.count(contextType);
+ }
contextType = CanvasRenderingContext::resolveContextTypeAliases(contextType);
diff --git a/third_party/WebKit/Source/core/html/HTMLLinkElement.cpp b/third_party/WebKit/Source/core/html/HTMLLinkElement.cpp
index 137cd7f28..c8b6bbb 100644
--- a/third_party/WebKit/Source/core/html/HTMLLinkElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLLinkElement.cpp
@@ -52,9 +52,9 @@
#include "core/loader/NetworkHintsInterface.h"
#include "core/style/StyleInheritedData.h"
#include "platform/ContentType.h"
+#include "platform/Histogram.h"
#include "platform/MIMETypeRegistry.h"
#include "platform/RuntimeEnabledFeatures.h"
-#include "public/platform/Platform.h"
#include "wtf/StdLibExtras.h"
namespace blink {
@@ -534,6 +534,9 @@
CSSParserContext parserContext(m_owner->document(), 0, baseURL, charset);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, restoredCachedStyleSheetHistogram, ("Blink.RestoredCachedStyleSheet", 2));
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, restoredCachedStyleSheet2Histogram, ("Blink.RestoredCachedStyleSheet2", StyleSheetCacheStatusCount));
+
if (RefPtrWillBeRawPtr<StyleSheetContents> restoredSheet = const_cast<CSSStyleSheetResource*>(cachedStyleSheet)->restoreParsedStyleSheet(parserContext)) {
ASSERT(restoredSheet->isCacheable());
ASSERT(!restoredSheet->isLoading());
@@ -548,13 +551,13 @@
m_loading = false;
restoredSheet->checkLoaded();
- Platform::current()->histogramEnumeration("Blink.RestoredCachedStyleSheet", true, 2);
- Platform::current()->histogramEnumeration("Blink.RestoredCachedStyleSheet2", StyleSheetInMemoryCache, StyleSheetCacheStatusCount);
+ restoredCachedStyleSheetHistogram.count(true);
+ restoredCachedStyleSheet2Histogram.count(StyleSheetInMemoryCache);
return;
}
- Platform::current()->histogramEnumeration("Blink.RestoredCachedStyleSheet", false, 2);
+ restoredCachedStyleSheetHistogram.count(false);
StyleSheetCacheStatus cacheStatus = cachedStyleSheet->response().wasCached() ? StyleSheetInDiskCache : StyleSheetNewEntry;
- Platform::current()->histogramEnumeration("Blink.RestoredCachedStyleSheet2", cacheStatus, StyleSheetCacheStatusCount);
+ restoredCachedStyleSheet2Histogram.count(cacheStatus);
RefPtrWillBeRawPtr<StyleSheetContents> styleSheet = StyleSheetContents::create(href, parserContext);
diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp
index 7a3c5bb..ac9168d 100644
--- a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp
+++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp
@@ -66,6 +66,7 @@
#include "core/page/ChromeClient.h"
#include "core/page/NetworkStateNotifier.h"
#include "platform/ContentType.h"
+#include "platform/Histogram.h"
#include "platform/Logging.h"
#include "platform/MIMETypeFromURL.h"
#include "platform/MIMETypeRegistry.h"
@@ -241,7 +242,8 @@
void HTMLMediaElement::recordAutoplayMetric(AutoplayMetrics metric)
{
- Platform::current()->histogramEnumeration("Blink.MediaElement.Autoplay", metric, NumberOfAutoplayMetrics);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, autoplayHistogram, ("Blink.MediaElement.Autoplay", NumberOfAutoplayMetrics));
+ autoplayHistogram.count(metric);
}
WebMimeRegistry::SupportsType HTMLMediaElement::supportsType(const ContentType& contentType, const String& keySystem)
diff --git a/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp b/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp
index f8227ce..5b76bf6 100644
--- a/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp
+++ b/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp
@@ -42,8 +42,8 @@
#include "core/layout/LayoutSlider.h"
#include "core/layout/LayoutTheme.h"
#include "core/layout/LayoutVideo.h"
+#include "platform/Histogram.h"
#include "platform/RuntimeEnabledFeatures.h"
-#include "public/platform/Platform.h"
namespace blink {
@@ -623,7 +623,8 @@
void MediaControlCastButtonElement::recordMetrics(CastOverlayMetrics metric)
{
ASSERT(m_isOverlayButton);
- Platform::current()->histogramEnumeration("Cast.Sender.Overlay", static_cast<int>(metric), static_cast<int>(CastOverlayMetrics::Count));
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, overlayHistogram, ("Cast.Sender.Overlay", static_cast<int>(CastOverlayMetrics::Count)));
+ overlayHistogram.count(static_cast<int>(metric));
}
// ----------------------------
diff --git a/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp b/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp
index 6ee3cc0..1c34c08 100644
--- a/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp
+++ b/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp
@@ -52,6 +52,7 @@
#include "core/page/scrolling/ScrollingCoordinator.h"
#include "core/paint/FramePainter.h"
#include "core/paint/TransformRecorder.h"
+#include "platform/Histogram.h"
#include "platform/RuntimeEnabledFeatures.h"
#include "platform/ScriptForbiddenScope.h"
#include "platform/TraceEvent.h"
@@ -61,7 +62,6 @@
#include "platform/graphics/paint/DrawingRecorder.h"
#include "platform/graphics/paint/PaintController.h"
#include "platform/graphics/paint/TransformDisplayItem.h"
-#include "public/platform/Platform.h"
namespace blink {
@@ -588,10 +588,8 @@
else
m_scrollLayer->setPosition(-scrollPosition);
-
- Platform::current()->histogramEnumeration("Renderer.AcceleratedFixedRootBackground",
- ScrolledMainFrameBucket,
- AcceleratedFixedRootBackgroundHistogramMax);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, acceleratedBackgroundHistogram, ("Renderer.AcceleratedFixedRootBackground", AcceleratedFixedRootBackgroundHistogramMax));
+ acceleratedBackgroundHistogram.count(ScrolledMainFrameBucket);
}
void PaintLayerCompositor::frameViewScrollbarsExistenceDidChange()
diff --git a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
index dd7569f..4e7161b 100644
--- a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
+++ b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
@@ -63,6 +63,7 @@
#include "core/xmlhttprequest/XMLHttpRequestUpload.h"
#include "platform/FileMetadata.h"
#include "platform/HTTPNames.h"
+#include "platform/Histogram.h"
#include "platform/Logging.h"
#include "platform/RuntimeEnabledFeatures.h"
#include "platform/SharedBuffer.h"
@@ -71,7 +72,6 @@
#include "platform/network/ParsedContentType.h"
#include "platform/network/ResourceError.h"
#include "platform/network/ResourceRequest.h"
-#include "public/platform/Platform.h"
#include "public/platform/WebURLRequest.h"
#include "wtf/Assertions.h"
#include "wtf/StdLibExtras.h"
@@ -1206,7 +1206,8 @@
if (!normalizedValue.isEmpty() && !isValidHTTPFieldContentRFC7230(normalizedValue))
headerValueCategory = HeaderValueInvalid;
- Platform::current()->histogramEnumeration("Blink.XHR.setRequestHeader.HeaderValueCategoryInRFC7230", headerValueCategory, HeaderValueCategoryByRFC7230End);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, headerValueCategoryHistogram, ("Blink.XHR.setRequestHeader.HeaderValueCategoryInRFC7230", HeaderValueCategoryByRFC7230End));
+ headerValueCategoryHistogram.count(headerValueCategory);
}
const AtomicString& XMLHttpRequest::getRequestHeader(const AtomicString& name) const
diff --git a/third_party/WebKit/Source/modules/cachestorage/Cache.cpp b/third_party/WebKit/Source/modules/cachestorage/Cache.cpp
index 44789bc..27591b76 100644
--- a/third_party/WebKit/Source/modules/cachestorage/Cache.cpp
+++ b/third_party/WebKit/Source/modules/cachestorage/Cache.cpp
@@ -21,7 +21,7 @@
#include "modules/fetch/Request.h"
#include "modules/fetch/Response.h"
#include "platform/HTTPNames.h"
-#include "public/platform/Platform.h"
+#include "platform/Histogram.h"
#include "public/platform/WebPassOwnPtr.h"
#include "public/platform/modules/serviceworker/WebServiceWorkerCache.h"
@@ -193,7 +193,8 @@
type = ResponseType::OpaqueRedirectType;
break;
}
- Platform::current()->histogramEnumeration("ServiceWorkerCache.Cache.AddResponseType", static_cast<int>(type), static_cast<int>(ResponseType::EnumMax));
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, responseTypeHistogram, new EnumerationHistogram("ServiceWorkerCache.Cache.AddResponseType", static_cast<int>(ResponseType::EnumMax)));
+ responseTypeHistogram.count(static_cast<int>(type));
};
} // namespace
diff --git a/third_party/WebKit/Source/modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.cpp b/third_party/WebKit/Source/modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.cpp
index 9654deb..82f0e18 100644
--- a/third_party/WebKit/Source/modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.cpp
+++ b/third_party/WebKit/Source/modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.cpp
@@ -17,9 +17,9 @@
#include "modules/encryptedmedia/MediaKeySystemAccess.h"
#include "modules/encryptedmedia/MediaKeysController.h"
#include "platform/EncryptedMediaRequest.h"
+#include "platform/Histogram.h"
#include "platform/Logging.h"
#include "platform/network/ParsedContentType.h"
-#include "public/platform/Platform.h"
#include "public/platform/WebEncryptedMediaClient.h"
#include "public/platform/WebEncryptedMediaRequest.h"
#include "public/platform/WebMediaKeySystemConfiguration.h"
@@ -190,8 +190,10 @@
break;
}
- if (hasVideoCapabilities)
- Platform::current()->histogramEnumeration("Media.EME.Widevine.VideoCapability.HasEmptyRobustness", hasEmptyRobustness, 2);
+ if (hasVideoCapabilities) {
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, emptyRobustnessHistogram, new EnumerationHistogram("Media.EME.Widevine.VideoCapability.HasEmptyRobustness", 2));
+ emptyRobustnessHistogram.count(hasEmptyRobustness);
+ }
if (hasEmptyRobustness) {
m_resolver->executionContext()->addConsoleMessage(ConsoleMessage::create(JSMessageSource, WarningMessageLevel,
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp
index e9c0b3b..8ff9caa 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp
@@ -35,13 +35,12 @@
#include "core/events/EventQueue.h"
#include "modules/indexeddb/IDBAny.h"
#include "modules/indexeddb/IDBEventDispatcher.h"
-#include "modules/indexeddb/IDBHistograms.h"
#include "modules/indexeddb/IDBIndex.h"
#include "modules/indexeddb/IDBKeyPath.h"
#include "modules/indexeddb/IDBTracing.h"
#include "modules/indexeddb/IDBVersionChangeEvent.h"
#include "modules/indexeddb/WebIDBDatabaseCallbacksImpl.h"
-#include "public/platform/Platform.h"
+#include "platform/Histogram.h"
#include "public/platform/modules/indexeddb/WebIDBKeyPath.h"
#include "public/platform/modules/indexeddb/WebIDBTypes.h"
#include "wtf/Atomics.h"
@@ -180,7 +179,8 @@
IDBObjectStore* IDBDatabase::createObjectStore(const String& name, const IDBKeyPath& keyPath, bool autoIncrement, ExceptionState& exceptionState)
{
IDB_TRACE("IDBDatabase::createObjectStore");
- Platform::current()->histogramEnumeration("WebCore.IndexedDB.FrontEndAPICalls", IDBCreateObjectStoreCall, IDBMethodsMax);
+ recordApiCallsHistogram(IDBCreateObjectStoreCall);
+
if (!m_versionChangeTransaction) {
exceptionState.throwDOMException(InvalidStateError, IDBDatabase::notVersionChangeTransactionErrorMessage);
return nullptr;
@@ -229,7 +229,7 @@
void IDBDatabase::deleteObjectStore(const String& name, ExceptionState& exceptionState)
{
IDB_TRACE("IDBDatabase::deleteObjectStore");
- Platform::current()->histogramEnumeration("WebCore.IndexedDB.FrontEndAPICalls", IDBDeleteObjectStoreCall, IDBMethodsMax);
+ recordApiCallsHistogram(IDBDeleteObjectStoreCall);
if (!m_versionChangeTransaction) {
exceptionState.throwDOMException(InvalidStateError, IDBDatabase::notVersionChangeTransactionErrorMessage);
return;
@@ -262,7 +262,7 @@
IDBTransaction* IDBDatabase::transaction(ScriptState* scriptState, const StringOrStringSequenceOrDOMStringList& storeNames, const String& modeString, ExceptionState& exceptionState)
{
IDB_TRACE("IDBDatabase::transaction");
- Platform::current()->histogramEnumeration("WebCore.IndexedDB.FrontEndAPICalls", IDBTransactionCall, IDBMethodsMax);
+ recordApiCallsHistogram(IDBTransactionCall);
HashSet<String> scope;
if (storeNames.isString()) {
@@ -453,4 +453,10 @@
return ActiveDOMObject::executionContext();
}
+void IDBDatabase::recordApiCallsHistogram(IndexedDatabaseMethods method)
+{
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, apiCallsHistogram, new EnumerationHistogram("WebCore.IndexedDB.FrontEndAPICalls", IDBMethodsMax));
+ apiCallsHistogram.count(method);
+}
+
} // namespace blink
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.h b/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.h
index bfa68306..03aab50 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.h
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.h
@@ -34,6 +34,7 @@
#include "modules/EventTargetModules.h"
#include "modules/ModulesExport.h"
#include "modules/indexeddb/IDBDatabaseCallbacks.h"
+#include "modules/indexeddb/IDBHistograms.h"
#include "modules/indexeddb/IDBMetadata.h"
#include "modules/indexeddb/IDBObjectStore.h"
#include "modules/indexeddb/IDBObjectStoreParameters.h"
@@ -129,6 +130,8 @@
static const char transactionReadOnlyErrorMessage[];
static const char databaseClosedErrorMessage[];
+ static void recordApiCallsHistogram(IndexedDatabaseMethods);
+
protected:
// EventTarget
bool dispatchEventInternal(PassRefPtrWillBeRawPtr<Event>) override;
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBFactory.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBFactory.cpp
index 45f60157..b1976633 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBFactory.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBFactory.cpp
@@ -35,12 +35,12 @@
#include "core/dom/ExceptionCode.h"
#include "modules/indexeddb/IDBDatabase.h"
#include "modules/indexeddb/IDBDatabaseCallbacks.h"
-#include "modules/indexeddb/IDBHistograms.h"
#include "modules/indexeddb/IDBKey.h"
#include "modules/indexeddb/IDBTracing.h"
#include "modules/indexeddb/IndexedDBClient.h"
#include "modules/indexeddb/WebIDBCallbacksImpl.h"
#include "modules/indexeddb/WebIDBDatabaseCallbacksImpl.h"
+#include "platform/Histogram.h"
#include "platform/weborigin/DatabaseIdentifier.h"
#include "platform/weborigin/SecurityOrigin.h"
#include "public/platform/Platform.h"
@@ -103,7 +103,7 @@
IDBOpenDBRequest* IDBFactory::openInternal(ScriptState* scriptState, const String& name, int64_t version, ExceptionState& exceptionState)
{
- Platform::current()->histogramEnumeration("WebCore.IndexedDB.FrontEndAPICalls", IDBOpenCall, IDBMethodsMax);
+ IDBDatabase::recordApiCallsHistogram(IDBOpenCall);
ASSERT(version >= 1 || version == IDBDatabaseMetadata::NoIntVersion);
if (!isContextValid(scriptState->executionContext()))
return nullptr;
@@ -134,7 +134,7 @@
IDBOpenDBRequest* IDBFactory::deleteDatabase(ScriptState* scriptState, const String& name, ExceptionState& exceptionState)
{
IDB_TRACE("IDBFactory::deleteDatabase");
- Platform::current()->histogramEnumeration("WebCore.IndexedDB.FrontEndAPICalls", IDBDeleteDatabaseCall, IDBMethodsMax);
+ IDBDatabase::recordApiCallsHistogram(IDBDeleteDatabaseCall);
if (!isContextValid(scriptState->executionContext()))
return nullptr;
if (!scriptState->executionContext()->securityOrigin()->canAccessDatabase()) {
diff --git a/third_party/WebKit/Source/modules/notifications/ServiceWorkerRegistrationNotifications.cpp b/third_party/WebKit/Source/modules/notifications/ServiceWorkerRegistrationNotifications.cpp
index 4c8be6d..a00f19d 100644
--- a/third_party/WebKit/Source/modules/notifications/ServiceWorkerRegistrationNotifications.cpp
+++ b/third_party/WebKit/Source/modules/notifications/ServiceWorkerRegistrationNotifications.cpp
@@ -13,6 +13,7 @@
#include "modules/notifications/NotificationData.h"
#include "modules/notifications/NotificationOptions.h"
#include "modules/serviceworkers/ServiceWorkerRegistration.h"
+#include "platform/Histogram.h"
#include "public/platform/Platform.h"
#include "public/platform/WebSecurityOrigin.h"
#include "public/platform/modules/notifications/WebNotificationData.h"
@@ -60,7 +61,8 @@
return exceptionState.reject(scriptState);
// Log number of actions developer provided in linear histogram: 0 -> underflow bucket, 1-16 -> distinct buckets, 17+ -> overflow bucket.
- Platform::current()->histogramEnumeration("Notifications.PersistentNotificationActionCount", options.actions().size(), 17);
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, notificationCountHistogram, new EnumerationHistogram("Notifications.PersistentNotificationActionCount", 17));
+ notificationCountHistogram.count(options.actions().size());
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
ScriptPromise promise = resolver->promise();
diff --git a/third_party/WebKit/Source/modules/websockets/DOMWebSocket.cpp b/third_party/WebKit/Source/modules/websockets/DOMWebSocket.cpp
index c05db191..d39635c 100644
--- a/third_party/WebKit/Source/modules/websockets/DOMWebSocket.cpp
+++ b/third_party/WebKit/Source/modules/websockets/DOMWebSocket.cpp
@@ -48,6 +48,7 @@
#include "core/frame/csp/ContentSecurityPolicy.h"
#include "core/inspector/ConsoleMessage.h"
#include "modules/websockets/CloseEvent.h"
+#include "platform/Histogram.h"
#include "platform/Logging.h"
#include "platform/blob/BlobData.h"
#include "platform/heap/Handle.h"
@@ -391,7 +392,9 @@
updateBufferedAmountAfterClose(encodedMessage.length());
return;
}
- Platform::current()->histogramEnumeration("WebCore.WebSocket.SendType", WebSocketSendTypeString, WebSocketSendTypeMax);
+
+ recordSendTypeHistogram(WebSocketSendTypeString);
+
ASSERT(m_channel);
m_bufferedAmount += encodedMessage.length();
m_channel->send(encodedMessage);
@@ -409,7 +412,8 @@
updateBufferedAmountAfterClose(binaryData->byteLength());
return;
}
- Platform::current()->histogramEnumeration("WebCore.WebSocket.SendType", WebSocketSendTypeArrayBuffer, WebSocketSendTypeMax);
+ recordSendTypeHistogram(WebSocketSendTypeArrayBuffer);
+
ASSERT(m_channel);
m_bufferedAmount += binaryData->byteLength();
m_channel->send(*binaryData, 0, binaryData->byteLength());
@@ -427,7 +431,8 @@
updateBufferedAmountAfterClose(arrayBufferView->byteLength());
return;
}
- Platform::current()->histogramEnumeration("WebCore.WebSocket.SendType", WebSocketSendTypeArrayBufferView, WebSocketSendTypeMax);
+ recordSendTypeHistogram(WebSocketSendTypeArrayBufferView);
+
ASSERT(m_channel);
m_bufferedAmount += arrayBufferView->byteLength();
m_channel->send(*arrayBufferView->buffer(), arrayBufferView->byteOffset(), arrayBufferView->byteLength());
@@ -445,7 +450,8 @@
updateBufferedAmountAfterClose(binaryData->size());
return;
}
- Platform::current()->histogramEnumeration("WebCore.WebSocket.SendType", WebSocketSendTypeBlob, WebSocketSendTypeMax);
+ recordSendTypeHistogram(WebSocketSendTypeBlob);
+
unsigned long long size = binaryData->size();
m_bufferedAmount += size;
ASSERT(m_channel);
@@ -624,7 +630,8 @@
WTF_LOG(Network, "WebSocket %p didReceiveTextMessage() Text message '%s'", this, msg.utf8().data());
if (m_state != OPEN)
return;
- Platform::current()->histogramEnumeration("WebCore.WebSocket.ReceiveType", WebSocketReceiveTypeString, WebSocketReceiveTypeMax);
+ recordReceiveTypeHistogram(WebSocketReceiveTypeString);
+
m_eventQueue->dispatch(MessageEvent::create(msg, SecurityOrigin::create(m_url)->toString()));
}
@@ -639,14 +646,14 @@
OwnPtr<BlobData> blobData = BlobData::create();
blobData->appendData(rawData.release(), 0, BlobDataItem::toEndOfFile);
Blob* blob = Blob::create(BlobDataHandle::create(blobData.release(), size));
- Platform::current()->histogramEnumeration("WebCore.WebSocket.ReceiveType", WebSocketReceiveTypeBlob, WebSocketReceiveTypeMax);
+ recordReceiveTypeHistogram(WebSocketReceiveTypeBlob);
m_eventQueue->dispatch(MessageEvent::create(blob, SecurityOrigin::create(m_url)->toString()));
break;
}
case BinaryTypeArrayBuffer:
RefPtr<DOMArrayBuffer> arrayBuffer = DOMArrayBuffer::create(binaryData->data(), binaryData->size());
- Platform::current()->histogramEnumeration("WebCore.WebSocket.ReceiveType", WebSocketReceiveTypeArrayBuffer, WebSocketReceiveTypeMax);
+ recordReceiveTypeHistogram(WebSocketReceiveTypeArrayBuffer);
m_eventQueue->dispatch(MessageEvent::create(arrayBuffer.release(), SecurityOrigin::create(m_url)->toString()));
break;
}
@@ -691,6 +698,18 @@
releaseChannel();
}
+void DOMWebSocket::recordSendTypeHistogram(WebSocketSendType type)
+{
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, sendTypeHistogram, new EnumerationHistogram("WebCore.WebSocket.SendType", WebSocketSendTypeMax));
+ sendTypeHistogram.count(type);
+}
+
+void DOMWebSocket::recordReceiveTypeHistogram(WebSocketReceiveType type)
+{
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, receiveTypeHistogram, new EnumerationHistogram("WebCore.WebSocket.ReceiveType", WebSocketReceiveTypeMax));
+ receiveTypeHistogram.count(type);
+}
+
DEFINE_TRACE(DOMWebSocket)
{
visitor->trace(m_channel);
diff --git a/third_party/WebKit/Source/modules/websockets/DOMWebSocket.h b/third_party/WebKit/Source/modules/websockets/DOMWebSocket.h
index 27ed56c..441e3ad4 100644
--- a/third_party/WebKit/Source/modules/websockets/DOMWebSocket.h
+++ b/third_party/WebKit/Source/modules/websockets/DOMWebSocket.h
@@ -217,6 +217,8 @@
void reflectBufferedAmountConsumption(Timer<DOMWebSocket>*);
void releaseChannel();
+ void recordSendTypeHistogram(WebSocketSendType);
+ void recordReceiveTypeHistogram(WebSocketReceiveType);
enum BinaryType {
BinaryTypeBlob,
diff --git a/third_party/WebKit/Source/platform/graphics/BitmapImageMetrics.cpp b/third_party/WebKit/Source/platform/graphics/BitmapImageMetrics.cpp
index be56acb..6003675 100644
--- a/third_party/WebKit/Source/platform/graphics/BitmapImageMetrics.cpp
+++ b/third_party/WebKit/Source/platform/graphics/BitmapImageMetrics.cpp
@@ -4,7 +4,8 @@
#include "platform/graphics/BitmapImageMetrics.h"
-#include "public/platform/Platform.h"
+#include "platform/Histogram.h"
+#include "wtf/Threading.h"
#include "wtf/text/WTFString.h"
namespace blink {
@@ -30,12 +31,14 @@
type == "ico" ? ImageICO :
type == "bmp" ? ImageBMP : DecodedImageType::ImageUnknown;
- Platform::current()->histogramEnumeration("Blink.DecodedImageType", decodedImageType, DecodedImageTypeEnumEnd);
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, decodedImageTypeHistogram, new EnumerationHistogram("Blink.DecodedImageType", DecodedImageTypeEnumEnd));
+ decodedImageTypeHistogram.count(decodedImageType);
}
void BitmapImageMetrics::countImageOrientation(const ImageOrientationEnum orientation)
{
- Platform::current()->histogramEnumeration("Blink.DecodedImage.Orientation", orientation, ImageOrientationEnumEnd);
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, orientationHistogram, new EnumerationHistogram("Blink.DecodedImage.Orientation", ImageOrientationEnumEnd));
+ orientationHistogram.count(orientation);
}
} // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp b/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
index 70b4ad1..2fd95e2 100644
--- a/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
+++ b/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
@@ -25,6 +25,7 @@
#include "platform/graphics/Canvas2DLayerBridge.h"
+#include "platform/Histogram.h"
#include "platform/TraceEvent.h"
#include "platform/graphics/CanvasMetrics.h"
#include "platform/graphics/ExpensiveCanvasHeuristicParameters.h"
@@ -345,7 +346,8 @@
if (!m_isDeferralEnabled)
return;
- Platform::current()->histogramEnumeration("Canvas.GPUAccelerated2DCanvasDisableDeferralReason", reason, DisableDeferralReasonCount);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, gpuDisabledHistogram, ("Canvas.GPUAccelerated2DCanvasDisableDeferralReason", DisableDeferralReasonCount));
+ gpuDisabledHistogram.count(reason);
CanvasMetrics::countCanvasContextUsage(CanvasMetrics::GPUAccelerated2DCanvasDeferralDisabled);
flushRecordingOnly();
// Because we will be discarding the recorder, if the flush failed
@@ -825,7 +827,8 @@
void Canvas2DLayerBridge::Logger::reportHibernationEvent(HibernationEvent event)
{
- blink::Platform::current()->histogramEnumeration("Canvas.HibernationEvents", event, HibernationEventCount);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, hibernationHistogram, ("Canvas.HibernationEvents", HibernationEventCount));
+ hibernationHistogram.count(event);
}
} // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/CanvasMetrics.cpp b/third_party/WebKit/Source/platform/graphics/CanvasMetrics.cpp
index 69fad9e..4783924 100644
--- a/third_party/WebKit/Source/platform/graphics/CanvasMetrics.cpp
+++ b/third_party/WebKit/Source/platform/graphics/CanvasMetrics.cpp
@@ -4,13 +4,15 @@
#include "platform/graphics/CanvasMetrics.h"
-#include "public/platform/Platform.h"
+#include "platform/Histogram.h"
+#include "wtf/Threading.h"
namespace blink {
void CanvasMetrics::countCanvasContextUsage(const CanvasContextUsage canvasContextUsage)
{
- Platform::current()->histogramEnumeration("WebCore.CanvasContextUsage", canvasContextUsage, CanvasContextUsage::NumberOfUsages);
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, usageHistogram, new EnumerationHistogram("WebCore.CanvasContextUsage", CanvasContextUsage::NumberOfUsages));
+ usageHistogram.count(canvasContextUsage);
}
} // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurface.cpp b/third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurface.cpp
index e0273d78..afc2ba9 100644
--- a/third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurface.cpp
+++ b/third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurface.cpp
@@ -4,11 +4,11 @@
#include "platform/graphics/RecordingImageBufferSurface.h"
+#include "platform/Histogram.h"
#include "platform/graphics/CanvasMetrics.h"
#include "platform/graphics/ExpensiveCanvasHeuristicParameters.h"
#include "platform/graphics/GraphicsContext.h"
#include "platform/graphics/ImageBuffer.h"
-#include "public/platform/Platform.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkPictureRecorder.h"
#include "wtf/PassOwnPtr.h"
@@ -75,7 +75,8 @@
return;
}
- Platform::current()->histogramEnumeration("Canvas.DisplayListFallbackReason", reason, FallbackReasonCount);
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, canvasFallbackHistogram, new EnumerationHistogram("Canvas.DisplayListFallbackReason", FallbackReasonCount));
+ canvasFallbackHistogram.count(reason);
m_fallbackSurface = m_fallbackFactory->createSurface(size(), opacityMode());
m_fallbackSurface->setImageBuffer(m_imageBuffer);
diff --git a/third_party/WebKit/Source/platform/heap/Heap.cpp b/third_party/WebKit/Source/platform/heap/Heap.cpp
index 1b25eaf..2722570 100644
--- a/third_party/WebKit/Source/platform/heap/Heap.cpp
+++ b/third_party/WebKit/Source/platform/heap/Heap.cpp
@@ -460,7 +460,9 @@
totalObjectSpaceHistogram.count(Heap::allocatedObjectSize() / 1024);
DEFINE_THREAD_SAFE_STATIC_LOCAL(CustomCountHistogram, totalAllocatedSpaceHistogram, new CustomCountHistogram("BlinkGC.TotalAllocatedSpace", 0, 4 * 1024 * 1024, 50));
totalAllocatedSpaceHistogram.count(Heap::allocatedSpace() / 1024);
- Platform::current()->histogramEnumeration("BlinkGC.GCReason", reason, BlinkGC::NumberOfGCReason);
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, gcReasonHistogram, new EnumerationHistogram("BlinkGC.GCReason", BlinkGC::NumberOfGCReason));
+ gcReasonHistogram.count(reason);
+
Heap::reportMemoryUsageHistogram();
WTF::Partitions::reportMemoryUsageHistogram();
@@ -611,7 +613,8 @@
if (sizeInMB > observedMaxSizeInMB) {
// Send a UseCounter only when we see the highest memory usage
// we've ever seen.
- Platform::current()->histogramEnumeration("BlinkGC.CommittedSize", sizeInMB, supportedMaxSizeInMB);
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, commitedSizeHistogram, new EnumerationHistogram("BlinkGC.CommittedSize", supportedMaxSizeInMB));
+ commitedSizeHistogram.count(sizeInMB);
observedMaxSizeInMB = sizeInMB;
}
}
diff --git a/third_party/WebKit/Source/platform/text/CompressibleString.cpp b/third_party/WebKit/Source/platform/text/CompressibleString.cpp
index 38e6c09..3b7f6c3 100644
--- a/third_party/WebKit/Source/platform/text/CompressibleString.cpp
+++ b/third_party/WebKit/Source/platform/text/CompressibleString.cpp
@@ -4,7 +4,7 @@
#include "platform/text/CompressibleString.h"
-#include "public/platform/Platform.h"
+#include "platform/Histogram.h"
#include "wtf/Assertions.h"
#include "wtf/WTFThreadData.h"
#include "wtf/text/WTFString.h"
@@ -97,7 +97,8 @@
static void recordCompressibleStringCount(CompressibleStringCountType type)
{
- Platform::current()->histogramEnumeration("Memory.CompressibleStringCount", type, CompressibleStringCountTypeMax + 1);
+ DEFINE_THREAD_SAFE_STATIC_LOCAL(EnumerationHistogram, sringTypeHistogram, new EnumerationHistogram("Memory.CompressibleStringCount", CompressibleStringCountTypeMax + 1));
+ sringTypeHistogram.count(type);
}
// compressString does nothing but collect UMA so far.
diff --git a/third_party/WebKit/Source/web/ChromeClientImpl.cpp b/third_party/WebKit/Source/web/ChromeClientImpl.cpp
index c5af44a..e3513778 100644
--- a/third_party/WebKit/Source/web/ChromeClientImpl.cpp
+++ b/third_party/WebKit/Source/web/ChromeClientImpl.cpp
@@ -56,13 +56,13 @@
#include "modules/accessibility/AXObject.h"
#include "platform/Cursor.h"
#include "platform/FileChooser.h"
+#include "platform/Histogram.h"
#include "platform/KeyboardCodes.h"
#include "platform/RuntimeEnabledFeatures.h"
#include "platform/exported/WrappedResourceRequest.h"
#include "platform/geometry/IntRect.h"
#include "platform/graphics/GraphicsLayer.h"
#include "platform/weborigin/SecurityOrigin.h"
-#include "public/platform/Platform.h"
#include "public/platform/WebCursorInfo.h"
#include "public/platform/WebFloatRect.h"
#include "public/platform/WebFrameScheduler.h"
@@ -868,7 +868,8 @@
ASSERT_WITH_SECURITY_IMPLICATION(0 <= dismissal);
ASSERT_WITH_SECURITY_IMPLICATION(dismissal < static_cast<int>(WTF_ARRAY_LENGTH(kDismissals)));
- Platform::current()->histogramEnumeration("Renderer.ModalDialogsDuringPageDismissal", dismissal * WTF_ARRAY_LENGTH(kDialogs) + dialog, WTF_ARRAY_LENGTH(kDialogs) * WTF_ARRAY_LENGTH(kDismissals));
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, dialogDismissalHistogram, ("Renderer.ModalDialogsDuringPageDismissal", WTF_ARRAY_LENGTH(kDialogs) * WTF_ARRAY_LENGTH(kDismissals)));
+ dialogDismissalHistogram.count(dismissal * WTF_ARRAY_LENGTH(kDialogs) + dialog);
String message = String("Blocked ") + kDialogs[dialog] + "('" + dialogMessage + "') during " + kDismissals[dismissal] + ".";
m_webView->mainFrame()->addMessageToConsole(WebConsoleMessage(WebConsoleMessage::LevelError, message));
diff --git a/third_party/WebKit/Source/web/WebKit.cpp b/third_party/WebKit/Source/web/WebKit.cpp
index 4b4c5f6..52896830 100644
--- a/third_party/WebKit/Source/web/WebKit.cpp
+++ b/third_party/WebKit/Source/web/WebKit.cpp
@@ -43,6 +43,7 @@
#include "core/workers/WorkerGlobalScopeProxy.h"
#include "gin/public/v8_platform.h"
#include "modules/InitModules.h"
+#include "platform/Histogram.h"
#include "platform/LayoutTestSupport.h"
#include "platform/Logging.h"
#include "platform/RuntimeEnabledFeatures.h"
@@ -143,9 +144,16 @@
return Platform::current()->monotonicallyIncreasingTimeSeconds();
}
-static void histogramEnumerationFunction(const char* name, int sample, int boundaryValue)
+static void maxObservedSizeFunction(size_t sizeInMB)
{
- Platform::current()->histogramEnumeration(name, sample, boundaryValue);
+ const size_t supportedMaxSizeInMB = 4 * 1024;
+ if (sizeInMB >= supportedMaxSizeInMB)
+ sizeInMB = supportedMaxSizeInMB - 1;
+
+ // Send a UseCounter only when we see the highest memory usage
+ // we've ever seen.
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, committedSizeHistogram, ("PartitionAlloc.CommittedSize", supportedMaxSizeInMB));
+ committedSizeHistogram.count(sizeInMB);
}
static void callOnMainThreadFunction(WTF::MainThreadFunction function, void* context)
@@ -163,7 +171,7 @@
ASSERT(!s_webKitInitialized);
s_webKitInitialized = true;
- WTF::Partitions::initialize(histogramEnumerationFunction);
+ WTF::Partitions::initialize(maxObservedSizeFunction);
ASSERT(platform);
Platform::initialize(platform);
diff --git a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp b/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
index 761030a..46e6577 100644
--- a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
+++ b/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
@@ -185,7 +185,6 @@
#include "platform/weborigin/KURL.h"
#include "platform/weborigin/SchemeRegistry.h"
#include "platform/weborigin/SecurityPolicy.h"
-#include "public/platform/Platform.h"
#include "public/platform/WebFloatPoint.h"
#include "public/platform/WebFloatRect.h"
#include "public/platform/WebLayer.h"
diff --git a/third_party/WebKit/Source/web/WebPageImportanceSignals.cpp b/third_party/WebKit/Source/web/WebPageImportanceSignals.cpp
index 25b09c3c..f541185 100644
--- a/third_party/WebKit/Source/web/WebPageImportanceSignals.cpp
+++ b/third_party/WebKit/Source/web/WebPageImportanceSignals.cpp
@@ -4,7 +4,7 @@
#include "public/web/WebPageImportanceSignals.h"
-#include "public/platform/Platform.h"
+#include "platform/Histogram.h"
#include "public/web/WebViewClient.h"
namespace blink {
@@ -33,8 +33,11 @@
void WebPageImportanceSignals::onCommitLoad()
{
- Platform::current()->histogramEnumeration("PageImportanceSignals.HadFormInteraction.OnCommitLoad", m_hadFormInteraction, 2);
- Platform::current()->histogramEnumeration("PageImportanceSignals.IssuedNonGetFetchFromScript.OnCommitLoad", m_issuedNonGetFetchFromScript, 2);
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, hadFormInteractionHistogram, ("PageImportanceSignals.HadFormInteraction.OnCommitLoad", 2));
+ hadFormInteractionHistogram.count(m_hadFormInteraction);
+
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, issuedNonGetHistogram, ("PageImportanceSignals.IssuedNonGetFetchFromScript.OnCommitLoad", 2));
+ issuedNonGetHistogram.count(m_issuedNonGetFetchFromScript);
reset();
}
diff --git a/third_party/WebKit/Source/wtf/Partitions.cpp b/third_party/WebKit/Source/wtf/Partitions.cpp
index 890ba93..b0e587d 100644
--- a/third_party/WebKit/Source/wtf/Partitions.cpp
+++ b/third_party/WebKit/Source/wtf/Partitions.cpp
@@ -47,9 +47,9 @@
SizeSpecificPartitionAllocator<3328> Partitions::m_nodeAllocator;
#endif
SizeSpecificPartitionAllocator<1024> Partitions::m_layoutAllocator;
-HistogramEnumerationFunction Partitions::m_histogramEnumeration = nullptr;
+Partitions::ReportPartitionAllocSizeFunction Partitions::m_reportSizeFunction = nullptr;
-void Partitions::initialize(HistogramEnumerationFunction histogramEnumeration)
+void Partitions::initialize(ReportPartitionAllocSizeFunction reportSizeFunction)
{
SpinLock::Guard guard(s_initializationLock);
@@ -61,7 +61,7 @@
m_nodeAllocator.init();
#endif
m_layoutAllocator.init();
- m_histogramEnumeration = histogramEnumeration;
+ m_reportSizeFunction = reportSizeFunction;
s_initialized = true;
}
}
@@ -99,22 +99,17 @@
void Partitions::reportMemoryUsageHistogram()
{
- static size_t supportedMaxSizeInMB = 4 * 1024;
static size_t observedMaxSizeInMB = 0;
- if (!m_histogramEnumeration)
+ if (!m_reportSizeFunction)
return;
// We only report the memory in the main thread.
if (!isMainThread())
return;
// +1 is for rounding up the sizeInMB.
size_t sizeInMB = Partitions::totalSizeOfCommittedPages() / 1024 / 1024 + 1;
- if (sizeInMB >= supportedMaxSizeInMB)
- sizeInMB = supportedMaxSizeInMB - 1;
if (sizeInMB > observedMaxSizeInMB) {
- // Send a UseCounter only when we see the highest memory usage
- // we've ever seen.
- m_histogramEnumeration("PartitionAlloc.CommittedSize", sizeInMB, supportedMaxSizeInMB);
+ m_reportSizeFunction(sizeInMB);
observedMaxSizeInMB = sizeInMB;
}
}
diff --git a/third_party/WebKit/Source/wtf/Partitions.h b/third_party/WebKit/Source/wtf/Partitions.h
index 24e50d3..1940039 100644
--- a/third_party/WebKit/Source/wtf/Partitions.h
+++ b/third_party/WebKit/Source/wtf/Partitions.h
@@ -40,11 +40,13 @@
class WTF_EXPORT Partitions {
public:
+ typedef void (*ReportPartitionAllocSizeFunction)(size_t);
+
// Name of allocator used by tracing for marking sub-allocations while take
// memory snapshots.
static const char* const kAllocatedObjectPoolName;
- static void initialize(HistogramEnumerationFunction);
+ static void initialize(ReportPartitionAllocSizeFunction);
static void shutdown();
ALWAYS_INLINE static PartitionRootGeneric* bufferPartition()
{
@@ -160,7 +162,7 @@
static SizeSpecificPartitionAllocator<3328> m_nodeAllocator;
#endif
static SizeSpecificPartitionAllocator<1024> m_layoutAllocator;
- static HistogramEnumerationFunction m_histogramEnumeration;
+ static ReportPartitionAllocSizeFunction m_reportSizeFunction;
};
} // namespace WTF
diff --git a/third_party/WebKit/Source/wtf/WTF.h b/third_party/WebKit/Source/wtf/WTF.h
index 806d52b..5dbd1b5 100644
--- a/third_party/WebKit/Source/wtf/WTF.h
+++ b/third_party/WebKit/Source/wtf/WTF.h
@@ -37,7 +37,6 @@
namespace WTF {
-typedef void(*HistogramEnumerationFunction)(const char* name, int sample, int boundaryValue);
typedef void(*AdjustAmountOfExternalAllocatedMemoryFunction)(int size);
// This function must be called exactly once from the main thread before using anything else in WTF.
diff --git a/third_party/WebKit/public/platform/Platform.h b/third_party/WebKit/public/platform/Platform.h
index 8f4793b2..fd54a75b 100644
--- a/third_party/WebKit/public/platform/Platform.h
+++ b/third_party/WebKit/public/platform/Platform.h
@@ -442,10 +442,6 @@
// Get a pointer to testing support interfaces. Will not be available in production builds.
virtual WebUnitTestSupport* unitTestSupport() { return nullptr; }
- // Callbacks for reporting histogram data.
- // Enumeration histogram buckets are linear, boundaryValue should be larger than any possible sample value.
- virtual void histogramEnumeration(const char* name, int sample, int boundaryValue) { }
-
// Record to a RAPPOR privacy-preserving metric, see: https://www.chromium.org/developers/design-documents/rappor.
// recordRappor records a sample string, while recordRapporURL records the domain and registry of a url.
virtual void recordRappor(const char* metric, const WebString& sample) { }