| 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 70c271251e41b316f7924cd1518d4ef2253c299b..d614506a5ab4cdfd4d50a589b35002bd0e239507 100644
|
| --- a/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
|
| +++ b/third_party/WebKit/Source/core/frame/ImageBitmap.cpp
|
| @@ -255,6 +255,10 @@ static PassRefPtr<StaticBitmapImage> cropImage(Image* image, const ParsedOptions
|
| dstLeft = -parsedOptions.cropRect.x();
|
| if (parsedOptions.cropRect.y() < 0)
|
| dstTop = -parsedOptions.cropRect.y();
|
| + if (parsedOptions.flipY) {
|
| + surface->getCanvas()->translate(0, surface->height());
|
| + surface->getCanvas()->scale(1, -1);
|
| + }
|
| if (parsedOptions.shouldScaleInput) {
|
| SkRect drawDstRect = SkRect::MakeXYWH(dstLeft, dstTop, parsedOptions.resizeWidth, parsedOptions.resizeHeight);
|
| SkPaint paint;
|
| @@ -264,8 +268,6 @@ static PassRefPtr<StaticBitmapImage> cropImage(Image* image, const ParsedOptions
|
| surface->getCanvas()->drawImage(skiaImage.get(), dstLeft, dstTop);
|
| }
|
| skiaImage = fromSkSp(surface->makeImageSnapshot());
|
| - if (parsedOptions.flipY)
|
| - skiaImage = flipSkImageVertically(skiaImage.get(), PremultiplyAlpha);
|
|
|
| if (parsedOptions.premultiplyAlpha) {
|
| if (imageFormat == PremultiplyAlpha)
|
| @@ -314,19 +316,17 @@ ImageBitmap::ImageBitmap(HTMLVideoElement* video, Optional<IntRect> cropRect, Do
|
| if (!buffer)
|
| return;
|
|
|
| + if (parsedOptions.flipY) {
|
| + buffer->canvas()->translate(0, buffer->size().height());
|
| + buffer->canvas()->scale(1, -1);
|
| + }
|
| IntPoint dstPoint = IntPoint(std::max(0, -parsedOptions.cropRect.x()), std::max(0, -parsedOptions.cropRect.y()));
|
| video->paintCurrentFrame(buffer->canvas(), IntRect(dstPoint, srcRect.size()), nullptr);
|
|
|
| - if (parsedOptions.flipY || !parsedOptions.premultiplyAlpha) {
|
| - RefPtr<SkImage> skiaImage = buffer->newSkImageSnapshot(PreferNoAcceleration, SnapshotReasonUnknown);
|
| - if (parsedOptions.flipY)
|
| - skiaImage = flipSkImageVertically(skiaImage.get(), PremultiplyAlpha);
|
| - if (!parsedOptions.premultiplyAlpha)
|
| - skiaImage = premulSkImageToUnPremul(skiaImage.get());
|
| - m_image = StaticBitmapImage::create(skiaImage.release());
|
| - } else {
|
| - m_image = StaticBitmapImage::create(buffer->newSkImageSnapshot(PreferNoAcceleration, SnapshotReasonUnknown));
|
| - }
|
| + RefPtr<SkImage> skiaImage = buffer->newSkImageSnapshot(PreferNoAcceleration, SnapshotReasonUnknown);
|
| + if (!parsedOptions.premultiplyAlpha)
|
| + skiaImage = premulSkImageToUnPremul(skiaImage.get());
|
| + m_image = StaticBitmapImage::create(skiaImage.release());
|
| m_image->setOriginClean(!video->wouldTaintOrigin(document->getSecurityOrigin()));
|
| m_image->setPremultiplied(parsedOptions.premultiplyAlpha);
|
| }
|
|
|