| Index: third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp b/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
|
| index 6d1eff20d0ca5ba303079d7c23f4d0be79022061..4050fa6c3734973d5e2f155e688fc6fc187e4f90 100644
|
| --- a/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
|
| +++ b/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
|
| @@ -86,14 +86,11 @@ CanvasAsyncBlobCreator::MimeType convertMimeTypeStringToEnum(
|
| }
|
|
|
| void recordIdleTaskStatusHistogram(
|
| - CanvasAsyncBlobCreator::ToBlobFunctionType functionType,
|
| CanvasAsyncBlobCreator::IdleTaskStatus status) {
|
| - // TODO(crbug.com/653599): Add histograms for OffscreenCanvas.convertToBlob.
|
| - if (functionType == CanvasAsyncBlobCreator::OffscreenCanvasToBlobPromise)
|
| - return;
|
| - DEFINE_STATIC_LOCAL(EnumerationHistogram, toBlobIdleTaskStatus,
|
| - ("Blink.Canvas.ToBlob.IdleTaskStatus",
|
| - CanvasAsyncBlobCreator::IdleTaskCount));
|
| + DEFINE_THREAD_SAFE_STATIC_LOCAL(
|
| + EnumerationHistogram, toBlobIdleTaskStatus,
|
| + new EnumerationHistogram("Blink.Canvas.ToBlob.IdleTaskStatus",
|
| + CanvasAsyncBlobCreator::IdleTaskCount));
|
| toBlobIdleTaskStatus.count(status);
|
| }
|
|
|
| @@ -107,52 +104,57 @@ enum ElapsedTimeHistogramType {
|
| };
|
|
|
| void recordElapsedTimeHistogram(
|
| - CanvasAsyncBlobCreator::ToBlobFunctionType functionType,
|
| ElapsedTimeHistogramType type,
|
| CanvasAsyncBlobCreator::MimeType mimeType,
|
| double elapsedTime) {
|
| - // TODO(crbug.com/653599): Add histograms for OffscreenCanvas.convertToBlob.
|
| - if (functionType == CanvasAsyncBlobCreator::OffscreenCanvasToBlobPromise)
|
| - return;
|
| -
|
| if (type == InitiateEncodingDelay) {
|
| if (mimeType == CanvasAsyncBlobCreator::MimeTypePng) {
|
| - DEFINE_STATIC_LOCAL(
|
| + DEFINE_THREAD_SAFE_STATIC_LOCAL(
|
| CustomCountHistogram, toBlobPNGInitiateEncodingCounter,
|
| - ("Blink.Canvas.ToBlob.InitiateEncodingDelay.PNG", 0, 10000000, 50));
|
| + new CustomCountHistogram(
|
| + "Blink.Canvas.ToBlob.InitiateEncodingDelay.PNG", 0, 10000000,
|
| + 50));
|
| toBlobPNGInitiateEncodingCounter.count(elapsedTime * 1000000.0);
|
| } else if (mimeType == CanvasAsyncBlobCreator::MimeTypeJpeg) {
|
| - DEFINE_STATIC_LOCAL(
|
| + DEFINE_THREAD_SAFE_STATIC_LOCAL(
|
| CustomCountHistogram, toBlobJPEGInitiateEncodingCounter,
|
| - ("Blink.Canvas.ToBlob.InitiateEncodingDelay.JPEG", 0, 10000000, 50));
|
| + new CustomCountHistogram(
|
| + "Blink.Canvas.ToBlob.InitiateEncodingDelay.JPEG", 0, 10000000,
|
| + 50));
|
| toBlobJPEGInitiateEncodingCounter.count(elapsedTime * 1000000.0);
|
| }
|
| } else if (type == IdleEncodeDuration) {
|
| if (mimeType == CanvasAsyncBlobCreator::MimeTypePng) {
|
| - DEFINE_STATIC_LOCAL(
|
| + DEFINE_THREAD_SAFE_STATIC_LOCAL(
|
| CustomCountHistogram, toBlobPNGIdleEncodeCounter,
|
| - ("Blink.Canvas.ToBlob.IdleEncodeDuration.PNG", 0, 10000000, 50));
|
| + new CustomCountHistogram("Blink.Canvas.ToBlob.IdleEncodeDuration.PNG",
|
| + 0, 10000000, 50));
|
| toBlobPNGIdleEncodeCounter.count(elapsedTime * 1000000.0);
|
| } else if (mimeType == CanvasAsyncBlobCreator::MimeTypeJpeg) {
|
| - DEFINE_STATIC_LOCAL(
|
| + DEFINE_THREAD_SAFE_STATIC_LOCAL(
|
| CustomCountHistogram, toBlobJPEGIdleEncodeCounter,
|
| - ("Blink.Canvas.ToBlob.IdleEncodeDuration.JPEG", 0, 10000000, 50));
|
| + new CustomCountHistogram(
|
| + "Blink.Canvas.ToBlob.IdleEncodeDuration.JPEG", 0, 10000000, 50));
|
| toBlobJPEGIdleEncodeCounter.count(elapsedTime * 1000000.0);
|
| }
|
| } else if (type == ToBlobDuration) {
|
| if (mimeType == CanvasAsyncBlobCreator::MimeTypePng) {
|
| - DEFINE_STATIC_LOCAL(CustomCountHistogram, toBlobPNGCounter,
|
| - ("Blink.Canvas.ToBlobDuration.PNG", 0, 10000000, 50));
|
| + DEFINE_THREAD_SAFE_STATIC_LOCAL(
|
| + CustomCountHistogram, toBlobPNGCounter,
|
| + new CustomCountHistogram("Blink.Canvas.ToBlobDuration.PNG", 0,
|
| + 10000000, 50));
|
| toBlobPNGCounter.count(elapsedTime * 1000000.0);
|
| } else if (mimeType == CanvasAsyncBlobCreator::MimeTypeJpeg) {
|
| - DEFINE_STATIC_LOCAL(
|
| + DEFINE_THREAD_SAFE_STATIC_LOCAL(
|
| CustomCountHistogram, toBlobJPEGCounter,
|
| - ("Blink.Canvas.ToBlobDuration.JPEG", 0, 10000000, 50));
|
| + new CustomCountHistogram("Blink.Canvas.ToBlobDuration.JPEG", 0,
|
| + 10000000, 50));
|
| toBlobJPEGCounter.count(elapsedTime * 1000000.0);
|
| } else if (mimeType == CanvasAsyncBlobCreator::MimeTypeWebp) {
|
| - DEFINE_STATIC_LOCAL(
|
| + DEFINE_THREAD_SAFE_STATIC_LOCAL(
|
| CustomCountHistogram, toBlobWEBPCounter,
|
| - ("Blink.Canvas.ToBlobDuration.WEBP", 0, 10000000, 50));
|
| + new CustomCountHistogram("Blink.Canvas.ToBlobDuration.WEBP", 0,
|
| + 10000000, 50));
|
| toBlobWEBPCounter.count(elapsedTime * 1000000.0);
|
| }
|
| }
|
| @@ -296,7 +298,7 @@ void CanvasAsyncBlobCreator::scheduleInitiateJpegEncoding(
|
| void CanvasAsyncBlobCreator::initiateJpegEncoding(const double& quality,
|
| double deadlineSeconds) {
|
| recordElapsedTimeHistogram(
|
| - m_functionType, InitiateEncodingDelay, MimeTypeJpeg,
|
| + InitiateEncodingDelay, MimeTypeJpeg,
|
| WTF::monotonicallyIncreasingTime() - m_scheduleInitiateStartTime);
|
| if (m_idleTaskStatus == IdleTaskSwitchedToImmediateTask) {
|
| return;
|
| @@ -321,7 +323,7 @@ void CanvasAsyncBlobCreator::scheduleInitiatePngEncoding() {
|
|
|
| void CanvasAsyncBlobCreator::initiatePngEncoding(double deadlineSeconds) {
|
| recordElapsedTimeHistogram(
|
| - m_functionType, InitiateEncodingDelay, MimeTypePng,
|
| + InitiateEncodingDelay, MimeTypePng,
|
| WTF::monotonicallyIncreasingTime() - m_scheduleInitiateStartTime);
|
| if (m_idleTaskStatus == IdleTaskSwitchedToImmediateTask) {
|
| return;
|
| @@ -362,8 +364,7 @@ void CanvasAsyncBlobCreator::idleEncodeRowsPng(double deadlineSeconds) {
|
|
|
| m_idleTaskStatus = IdleTaskCompleted;
|
| m_elapsedTime += (WTF::monotonicallyIncreasingTime() - startTime);
|
| - recordElapsedTimeHistogram(m_functionType, IdleEncodeDuration, MimeTypePng,
|
| - m_elapsedTime);
|
| + recordElapsedTimeHistogram(IdleEncodeDuration, MimeTypePng, m_elapsedTime);
|
| if (isDeadlineNearOrPassed(deadlineSeconds)) {
|
| TaskRunnerHelper::get(TaskType::CanvasBlobSerialization, m_document)
|
| ->postTask(BLINK_FROM_HERE,
|
| @@ -386,8 +387,7 @@ void CanvasAsyncBlobCreator::idleEncodeRowsJpeg(double deadlineSeconds) {
|
| m_elapsedTime += (WTF::monotonicallyIncreasingTime() - startTime);
|
| if (m_numRowsCompleted == m_size.height()) {
|
| m_idleTaskStatus = IdleTaskCompleted;
|
| - recordElapsedTimeHistogram(m_functionType, IdleEncodeDuration, MimeTypeJpeg,
|
| - m_elapsedTime);
|
| + recordElapsedTimeHistogram(IdleEncodeDuration, MimeTypeJpeg, m_elapsedTime);
|
|
|
| if (isDeadlineNearOrPassed(deadlineSeconds)) {
|
| TaskRunnerHelper::get(TaskType::CanvasBlobSerialization, m_document)
|
| @@ -458,8 +458,8 @@ void CanvasAsyncBlobCreator::forceEncodeRowsJpegOnCurrentThread() {
|
| }
|
|
|
| void CanvasAsyncBlobCreator::createBlobAndReturnResult() {
|
| - recordIdleTaskStatusHistogram(m_functionType, m_idleTaskStatus);
|
| - recordElapsedTimeHistogram(m_functionType, ToBlobDuration, m_mimeType,
|
| + recordIdleTaskStatusHistogram(m_idleTaskStatus);
|
| + recordElapsedTimeHistogram(ToBlobDuration, m_mimeType,
|
| WTF::monotonicallyIncreasingTime() - m_startTime);
|
|
|
| Blob* resultBlob =
|
| @@ -478,10 +478,10 @@ void CanvasAsyncBlobCreator::createBlobAndReturnResult() {
|
| }
|
|
|
| void CanvasAsyncBlobCreator::createNullAndReturnResult() {
|
| - recordIdleTaskStatusHistogram(m_functionType, m_idleTaskStatus);
|
| + recordIdleTaskStatusHistogram(m_idleTaskStatus);
|
| if (m_functionType == HTMLCanvasToBlobCallback) {
|
| DCHECK(isMainThread());
|
| - recordIdleTaskStatusHistogram(m_functionType, m_idleTaskStatus);
|
| + recordIdleTaskStatusHistogram(m_idleTaskStatus);
|
| TaskRunnerHelper::get(TaskType::CanvasBlobSerialization, m_document)
|
| ->postTask(BLINK_FROM_HERE,
|
| WTF::bind(&BlobCallback::handleEvent,
|
|
|