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

Side by Side Diff: third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp

Issue 2701993002: DO NOT COMMIT: Results of running new (proposed) clang-format on Blink (Closed)
Patch Set: Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/html/canvas/CanvasAsyncBlobCreator.h" 5 #include "core/html/canvas/CanvasAsyncBlobCreator.h"
6 6
7 #include "core/dom/Document.h" 7 #include "core/dom/Document.h"
8 #include "core/dom/TaskRunnerHelper.h" 8 #include "core/dom/TaskRunnerHelper.h"
9 #include "core/fileapi/Blob.h" 9 #include "core/fileapi/Blob.h"
10 #include "platform/CrossThreadFunctional.h" 10 #include "platform/CrossThreadFunctional.h"
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 WTF::bind(&CanvasAsyncBlobCreator::idleTaskStartTimeoutEvent, 274 WTF::bind(&CanvasAsyncBlobCreator::idleTaskStartTimeoutEvent,
275 wrapPersistent(this), quality), 275 wrapPersistent(this), quality),
276 IdleTaskStartTimeoutDelay); 276 IdleTaskStartTimeoutDelay);
277 } 277 }
278 } 278 }
279 279
280 void CanvasAsyncBlobCreator::scheduleInitiateJpegEncoding( 280 void CanvasAsyncBlobCreator::scheduleInitiateJpegEncoding(
281 const double& quality) { 281 const double& quality) {
282 m_scheduleInitiateStartTime = WTF::monotonicallyIncreasingTime(); 282 m_scheduleInitiateStartTime = WTF::monotonicallyIncreasingTime();
283 Platform::current()->currentThread()->scheduler()->postIdleTask( 283 Platform::current()->currentThread()->scheduler()->postIdleTask(
284 BLINK_FROM_HERE, WTF::bind(&CanvasAsyncBlobCreator::initiateJpegEncoding, 284 BLINK_FROM_HERE,
285 wrapPersistent(this), quality)); 285 WTF::bind(&CanvasAsyncBlobCreator::initiateJpegEncoding,
286 wrapPersistent(this), quality));
286 } 287 }
287 288
288 void CanvasAsyncBlobCreator::initiateJpegEncoding(const double& quality, 289 void CanvasAsyncBlobCreator::initiateJpegEncoding(const double& quality,
289 double deadlineSeconds) { 290 double deadlineSeconds) {
290 recordElapsedTimeHistogram( 291 recordElapsedTimeHistogram(
291 InitiateEncodingDelay, MimeTypeJpeg, 292 InitiateEncodingDelay, MimeTypeJpeg,
292 WTF::monotonicallyIncreasingTime() - m_scheduleInitiateStartTime); 293 WTF::monotonicallyIncreasingTime() - m_scheduleInitiateStartTime);
293 if (m_idleTaskStatus == IdleTaskSwitchedToImmediateTask) { 294 if (m_idleTaskStatus == IdleTaskSwitchedToImmediateTask) {
294 return; 295 return;
295 } 296 }
296 297
297 DCHECK(m_idleTaskStatus == IdleTaskNotStarted); 298 DCHECK(m_idleTaskStatus == IdleTaskNotStarted);
298 m_idleTaskStatus = IdleTaskStarted; 299 m_idleTaskStatus = IdleTaskStarted;
299 300
300 if (!initializeJpegStruct(quality)) { 301 if (!initializeJpegStruct(quality)) {
301 m_idleTaskStatus = IdleTaskFailed; 302 m_idleTaskStatus = IdleTaskFailed;
302 return; 303 return;
303 } 304 }
304 this->idleEncodeRowsJpeg(deadlineSeconds); 305 this->idleEncodeRowsJpeg(deadlineSeconds);
305 } 306 }
306 307
307 void CanvasAsyncBlobCreator::scheduleInitiatePngEncoding() { 308 void CanvasAsyncBlobCreator::scheduleInitiatePngEncoding() {
308 m_scheduleInitiateStartTime = WTF::monotonicallyIncreasingTime(); 309 m_scheduleInitiateStartTime = WTF::monotonicallyIncreasingTime();
309 Platform::current()->currentThread()->scheduler()->postIdleTask( 310 Platform::current()->currentThread()->scheduler()->postIdleTask(
310 BLINK_FROM_HERE, WTF::bind(&CanvasAsyncBlobCreator::initiatePngEncoding, 311 BLINK_FROM_HERE,
311 wrapPersistent(this))); 312 WTF::bind(&CanvasAsyncBlobCreator::initiatePngEncoding,
313 wrapPersistent(this)));
312 } 314 }
313 315
314 void CanvasAsyncBlobCreator::initiatePngEncoding(double deadlineSeconds) { 316 void CanvasAsyncBlobCreator::initiatePngEncoding(double deadlineSeconds) {
315 recordElapsedTimeHistogram( 317 recordElapsedTimeHistogram(
316 InitiateEncodingDelay, MimeTypePng, 318 InitiateEncodingDelay, MimeTypePng,
317 WTF::monotonicallyIncreasingTime() - m_scheduleInitiateStartTime); 319 WTF::monotonicallyIncreasingTime() - m_scheduleInitiateStartTime);
318 if (m_idleTaskStatus == IdleTaskSwitchedToImmediateTask) { 320 if (m_idleTaskStatus == IdleTaskSwitchedToImmediateTask) {
319 return; 321 return;
320 } 322 }
321 323
(...skipping 13 matching lines...) Expand all
335 } 337 }
336 338
337 double startTime = WTF::monotonicallyIncreasingTime(); 339 double startTime = WTF::monotonicallyIncreasingTime();
338 unsigned char* inputPixels = 340 unsigned char* inputPixels =
339 m_data->data() + m_pixelRowStride * m_numRowsCompleted; 341 m_data->data() + m_pixelRowStride * m_numRowsCompleted;
340 for (int y = m_numRowsCompleted; y < m_size.height(); ++y) { 342 for (int y = m_numRowsCompleted; y < m_size.height(); ++y) {
341 if (isDeadlineNearOrPassed(deadlineSeconds)) { 343 if (isDeadlineNearOrPassed(deadlineSeconds)) {
342 m_numRowsCompleted = y; 344 m_numRowsCompleted = y;
343 m_elapsedTime += (WTF::monotonicallyIncreasingTime() - startTime); 345 m_elapsedTime += (WTF::monotonicallyIncreasingTime() - startTime);
344 Platform::current()->currentThread()->scheduler()->postIdleTask( 346 Platform::current()->currentThread()->scheduler()->postIdleTask(
345 BLINK_FROM_HERE, WTF::bind(&CanvasAsyncBlobCreator::idleEncodeRowsPng, 347 BLINK_FROM_HERE,
346 wrapPersistent(this))); 348 WTF::bind(&CanvasAsyncBlobCreator::idleEncodeRowsPng,
349 wrapPersistent(this)));
347 return; 350 return;
348 } 351 }
349 PNGImageEncoder::writeOneRowToPng(inputPixels, m_pngEncoderState.get()); 352 PNGImageEncoder::writeOneRowToPng(inputPixels, m_pngEncoderState.get());
350 inputPixels += m_pixelRowStride; 353 inputPixels += m_pixelRowStride;
351 } 354 }
352 m_numRowsCompleted = m_size.height(); 355 m_numRowsCompleted = m_size.height();
353 PNGImageEncoder::finalizePng(m_pngEncoderState.get()); 356 PNGImageEncoder::finalizePng(m_pngEncoderState.get());
354 357
355 m_idleTaskStatus = IdleTaskCompleted; 358 m_idleTaskStatus = IdleTaskCompleted;
356 m_elapsedTime += (WTF::monotonicallyIncreasingTime() - startTime); 359 m_elapsedTime += (WTF::monotonicallyIncreasingTime() - startTime);
(...skipping 29 matching lines...) Expand all
386 WTF::bind(&CanvasAsyncBlobCreator::createBlobAndReturnResult, 389 WTF::bind(&CanvasAsyncBlobCreator::createBlobAndReturnResult,
387 wrapPersistent(this))); 390 wrapPersistent(this)));
388 } else { 391 } else {
389 this->createBlobAndReturnResult(); 392 this->createBlobAndReturnResult();
390 } 393 }
391 } else if (m_numRowsCompleted == JPEGImageEncoder::ProgressiveEncodeFailed) { 394 } else if (m_numRowsCompleted == JPEGImageEncoder::ProgressiveEncodeFailed) {
392 m_idleTaskStatus = IdleTaskFailed; 395 m_idleTaskStatus = IdleTaskFailed;
393 this->createNullAndReturnResult(); 396 this->createNullAndReturnResult();
394 } else { 397 } else {
395 Platform::current()->currentThread()->scheduler()->postIdleTask( 398 Platform::current()->currentThread()->scheduler()->postIdleTask(
396 BLINK_FROM_HERE, WTF::bind(&CanvasAsyncBlobCreator::idleEncodeRowsJpeg, 399 BLINK_FROM_HERE,
397 wrapPersistent(this))); 400 WTF::bind(&CanvasAsyncBlobCreator::idleEncodeRowsJpeg,
401 wrapPersistent(this)));
398 } 402 }
399 } 403 }
400 404
401 void CanvasAsyncBlobCreator::forceEncodeRowsPngOnCurrentThread() { 405 void CanvasAsyncBlobCreator::forceEncodeRowsPngOnCurrentThread() {
402 DCHECK(m_idleTaskStatus == IdleTaskSwitchedToImmediateTask); 406 DCHECK(m_idleTaskStatus == IdleTaskSwitchedToImmediateTask);
403 407
404 // Continue encoding from the last completed row 408 // Continue encoding from the last completed row
405 unsigned char* inputPixels = 409 unsigned char* inputPixels =
406 m_data->data() + m_pixelRowStride * m_numRowsCompleted; 410 m_data->data() + m_pixelRowStride * m_numRowsCompleted;
407 for (int y = m_numRowsCompleted; y < m_size.height(); ++y) { 411 for (int y = m_numRowsCompleted; y < m_size.height(); ++y) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 void CanvasAsyncBlobCreator::createBlobAndReturnResult() { 454 void CanvasAsyncBlobCreator::createBlobAndReturnResult() {
451 recordIdleTaskStatusHistogram(m_idleTaskStatus); 455 recordIdleTaskStatusHistogram(m_idleTaskStatus);
452 recordElapsedTimeHistogram(ToBlobDuration, m_mimeType, 456 recordElapsedTimeHistogram(ToBlobDuration, m_mimeType,
453 WTF::monotonicallyIncreasingTime() - m_startTime); 457 WTF::monotonicallyIncreasingTime() - m_startTime);
454 458
455 Blob* resultBlob = 459 Blob* resultBlob =
456 Blob::create(m_encodedImage->data(), m_encodedImage->size(), 460 Blob::create(m_encodedImage->data(), m_encodedImage->size(),
457 convertMimeTypeEnumToString(m_mimeType)); 461 convertMimeTypeEnumToString(m_mimeType));
458 if (m_functionType == HTMLCanvasToBlobCallback) { 462 if (m_functionType == HTMLCanvasToBlobCallback) {
459 TaskRunnerHelper::get(TaskType::CanvasBlobSerialization, m_document) 463 TaskRunnerHelper::get(TaskType::CanvasBlobSerialization, m_document)
460 ->postTask(BLINK_FROM_HERE, WTF::bind(&BlobCallback::handleEvent, 464 ->postTask(BLINK_FROM_HERE,
461 wrapPersistent(m_callback.get()), 465 WTF::bind(&BlobCallback::handleEvent,
462 wrapPersistent(resultBlob))); 466 wrapPersistent(m_callback.get()),
467 wrapPersistent(resultBlob)));
463 } else { 468 } else {
464 m_scriptPromiseResolver->resolve(resultBlob); 469 m_scriptPromiseResolver->resolve(resultBlob);
465 } 470 }
466 // Avoid unwanted retention, see dispose(). 471 // Avoid unwanted retention, see dispose().
467 dispose(); 472 dispose();
468 } 473 }
469 474
470 void CanvasAsyncBlobCreator::createNullAndReturnResult() { 475 void CanvasAsyncBlobCreator::createNullAndReturnResult() {
471 recordIdleTaskStatusHistogram(m_idleTaskStatus); 476 recordIdleTaskStatusHistogram(m_idleTaskStatus);
472 if (m_functionType == HTMLCanvasToBlobCallback) { 477 if (m_functionType == HTMLCanvasToBlobCallback) {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 619
615 DEFINE_TRACE(CanvasAsyncBlobCreator) { 620 DEFINE_TRACE(CanvasAsyncBlobCreator) {
616 visitor->trace(m_document); 621 visitor->trace(m_document);
617 visitor->trace(m_data); 622 visitor->trace(m_data);
618 visitor->trace(m_callback); 623 visitor->trace(m_callback);
619 visitor->trace(m_parentFrameTaskRunner); 624 visitor->trace(m_parentFrameTaskRunner);
620 visitor->trace(m_scriptPromiseResolver); 625 visitor->trace(m_scriptPromiseResolver);
621 } 626 }
622 627
623 } // namespace blink 628 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698