| Index: third_party/WebKit/Source/core/frame/ImageBitmap.cpp
|
| diff --git a/third_party/WebKit/Source/core/frame/ImageBitmap.cpp b/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
|
| index 7e5b822909b7c109cac91a7f54b752d721097ace..3940320704bbe49e4033500388fb1650fb7b03c6 100644
|
| --- a/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
|
| +++ b/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
|
| @@ -30,6 +30,7 @@ static inline IntRect normalizeRect(const IntRect& rect)
|
| ImageBitmap::ImageBitmap(HTMLImageElement* image, const IntRect& cropRect)
|
| {
|
| m_image = cropImage(image->cachedImage()->image()->imageForCurrentFrame(), cropRect);
|
| + m_isNeutered = false;
|
| }
|
|
|
| ImageBitmap::ImageBitmap(HTMLVideoElement* video, const IntRect& cropRect)
|
| @@ -47,12 +48,14 @@ ImageBitmap::ImageBitmap(HTMLVideoElement* video, const IntRect& cropRect)
|
| IntPoint dstPoint = IntPoint(std::max(0, -cropRect.x()), std::max(0, -cropRect.y()));
|
| video->paintCurrentFrame(buffer->canvas(), IntRect(dstPoint, srcRect.size()), nullptr);
|
| m_image = buffer->newSkImageSnapshot(PreferNoAcceleration);
|
| + m_isNeutered = false;
|
| }
|
|
|
| ImageBitmap::ImageBitmap(HTMLCanvasElement* canvas, const IntRect& cropRect)
|
| {
|
| ASSERT(canvas->isPaintable());
|
| m_image = cropImage(canvas->copiedImage(BackBuffer, PreferAcceleration)->imageForCurrentFrame(), cropRect);
|
| + m_isNeutered = false;
|
| }
|
|
|
| ImageBitmap::ImageBitmap(ImageData* data, const IntRect& cropRect)
|
| @@ -75,16 +78,32 @@ ImageBitmap::ImageBitmap(ImageData* data, const IntRect& cropRect)
|
| dstPoint.setY(-cropRect.y());
|
| buffer->putByteArray(Unmultiplied, data->data()->data(), data->size(), srcRect, dstPoint);
|
| m_image = buffer->newSkImageSnapshot(PreferNoAcceleration);
|
| + m_isNeutered = false;
|
| }
|
|
|
| ImageBitmap::ImageBitmap(ImageBitmap* bitmap, const IntRect& cropRect)
|
| {
|
| m_image = cropImage(bitmap->skImage(), cropRect);
|
| + m_isNeutered = false;
|
| }
|
|
|
| ImageBitmap::ImageBitmap(Image* image, const IntRect& cropRect)
|
| {
|
| m_image = cropImage(image->imageForCurrentFrame(), cropRect);
|
| + m_isNeutered = false;
|
| +}
|
| +
|
| +ImageBitmap::ImageBitmap(PassRefPtr<SkImage> image)
|
| +{
|
| + m_image = image;
|
| + m_isNeutered = false;
|
| +}
|
| +
|
| +PassRefPtr<SkImage> ImageBitmap::transfer()
|
| +{
|
| + ASSERT(!isNeutered());
|
| + m_isNeutered = true;
|
| + return m_image.release();
|
| }
|
|
|
| ImageBitmap::~ImageBitmap()
|
| @@ -127,6 +146,11 @@ PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(Image* image, const IntR
|
| return adoptRefWillBeNoop(new ImageBitmap(image, normalizedCropRect));
|
| }
|
|
|
| +PassRefPtrWillBeRawPtr<ImageBitmap> ImageBitmap::create(PassRefPtr<SkImage> image)
|
| +{
|
| + return adoptRefWillBeNoop(new ImageBitmap(image));
|
| +}
|
| +
|
| PassRefPtr<SkImage> ImageBitmap::cropImage(PassRefPtr<SkImage> image, const IntRect& cropRect)
|
| {
|
| ASSERT(image);
|
|
|