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

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

Issue 2566313002: Make OffscreenCanvas commit() propagate the origin-clean flag. (Closed)
Patch Set: add test Created 4 years 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 /* 1 /*
2 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved.
3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> 3 * Copyright (C) 2007 Alp Toker <alp@atoker.com>
4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. 4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 imageData = ImageData::create(m_size); 634 imageData = ImageData::create(m_size);
635 635
636 if ((!m_context || !imageData) && !placeholderFrame()) 636 if ((!m_context || !imageData) && !placeholderFrame())
637 return imageData; 637 return imageData;
638 638
639 DCHECK((m_context && m_context->is2d()) || placeholderFrame()); 639 DCHECK((m_context && m_context->is2d()) || placeholderFrame());
640 sk_sp<SkImage> snapshot; 640 sk_sp<SkImage> snapshot;
641 if (hasImageBuffer()) { 641 if (hasImageBuffer()) {
642 snapshot = buffer()->newSkImageSnapshot(PreferNoAcceleration, reason); 642 snapshot = buffer()->newSkImageSnapshot(PreferNoAcceleration, reason);
643 } else if (placeholderFrame()) { 643 } else if (placeholderFrame()) {
644 DCHECK(placeholderFrame()->originClean());
644 // TODO(ccameron): Canvas should produce sRGB images. 645 // TODO(ccameron): Canvas should produce sRGB images.
645 // https://crbug.com/672299 646 // https://crbug.com/672299
646 snapshot = placeholderFrame()->imageForCurrentFrame( 647 snapshot = placeholderFrame()->imageForCurrentFrame(
647 ColorBehavior::transformToGlobalTarget()); 648 ColorBehavior::transformToGlobalTarget());
648 } 649 }
649 650
650 if (snapshot) { 651 if (snapshot) {
651 SkImageInfo imageInfo = SkImageInfo::Make( 652 SkImageInfo imageInfo = SkImageInfo::Make(
652 width(), height(), kRGBA_8888_SkColorType, kUnpremul_SkAlphaType); 653 width(), height(), kRGBA_8888_SkColorType, kUnpremul_SkAlphaType);
653 snapshot->readPixels(imageInfo, imageData->data()->data(), 654 snapshot->readPixels(imageInfo, imageData->data()->data(),
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 } 776 }
776 777
777 SecurityOrigin* HTMLCanvasElement::getSecurityOrigin() const { 778 SecurityOrigin* HTMLCanvasElement::getSecurityOrigin() const {
778 return document().getSecurityOrigin(); 779 return document().getSecurityOrigin();
779 } 780 }
780 781
781 bool HTMLCanvasElement::originClean() const { 782 bool HTMLCanvasElement::originClean() const {
782 if (document().settings() && 783 if (document().settings() &&
783 document().settings()->disableReadingFromCanvas()) 784 document().settings()->disableReadingFromCanvas())
784 return false; 785 return false;
786 if (placeholderFrame())
787 return placeholderFrame()->originClean();
785 return m_originClean; 788 return m_originClean;
786 } 789 }
787 790
788 bool HTMLCanvasElement::shouldAccelerate(const IntSize& size) const { 791 bool HTMLCanvasElement::shouldAccelerate(const IntSize& size) const {
789 if (m_context && !m_context->is2d()) 792 if (m_context && !m_context->is2d())
790 return false; 793 return false;
791 794
792 if (RuntimeEnabledFeatures::forceDisplayList2dCanvasEnabled()) 795 if (RuntimeEnabledFeatures::forceDisplayList2dCanvasEnabled())
793 return false; 796 return false;
794 797
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after
1398 mojom::blink::OffscreenCanvasSurfacePtr service; 1401 mojom::blink::OffscreenCanvasSurfacePtr service;
1399 Platform::current()->interfaceProvider()->getInterface( 1402 Platform::current()->interfaceProvider()->getInterface(
1400 mojo::GetProxy(&service)); 1403 mojo::GetProxy(&service));
1401 m_surfaceLayerBridge = 1404 m_surfaceLayerBridge =
1402 WTF::wrapUnique(new CanvasSurfaceLayerBridge(std::move(service))); 1405 WTF::wrapUnique(new CanvasSurfaceLayerBridge(std::move(service)));
1403 return m_surfaceLayerBridge->createSurfaceLayer(this->width(), 1406 return m_surfaceLayerBridge->createSurfaceLayer(this->width(),
1404 this->height()); 1407 this->height());
1405 } 1408 }
1406 1409
1407 } // namespace blink 1410 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698