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

Side by Side Diff: third_party/WebKit/Source/core/frame/ImageBitmap.cpp

Issue 1683983002: Change an existing check to ASSERT (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/frame/ImageBitmap.h" 5 #include "core/frame/ImageBitmap.h"
6 6
7 #include "core/html/HTMLCanvasElement.h" 7 #include "core/html/HTMLCanvasElement.h"
8 #include "core/html/HTMLVideoElement.h" 8 #include "core/html/HTMLVideoElement.h"
9 #include "core/html/ImageData.h" 9 #include "core/html/ImageData.h"
10 #include "platform/image-decoders/ImageDecoder.h" 10 #include "platform/image-decoders/ImageDecoder.h"
(...skipping 25 matching lines...) Expand all
36 static inline IntRect normalizeRect(const IntRect& rect) 36 static inline IntRect normalizeRect(const IntRect& rect)
37 { 37 {
38 return IntRect(std::min(rect.x(), rect.maxX()), 38 return IntRect(std::min(rect.x(), rect.maxX()),
39 std::min(rect.y(), rect.maxY()), 39 std::min(rect.y(), rect.maxY()),
40 std::max(rect.width(), -rect.width()), 40 std::max(rect.width(), -rect.width()),
41 std::max(rect.height(), -rect.height())); 41 std::max(rect.height(), -rect.height()));
42 } 42 }
43 43
44 static bool frameIsValid(const SkBitmap& frameBitmap) 44 static bool frameIsValid(const SkBitmap& frameBitmap)
45 { 45 {
46 ASSERT(!frameBitmap.isNull() && !frameBitmap.empty()); 46 ASSERT(!frameBitmap.isNull() && !frameBitmap.empty() && frameBitmap.isImmuta ble());
47 return frameBitmap.isImmutable() 47 return frameBitmap.colorType() == kN32_SkColorType;
48 && frameBitmap.colorType() == kN32_SkColorType;
49 } 48 }
50 49
51 static SkImage* flipSkImageVertically(SkImage* input) 50 static SkImage* flipSkImageVertically(SkImage* input)
52 { 51 {
53 int width = input->width(); 52 int width = input->width();
54 int height = input->height(); 53 int height = input->height();
55 SkImageInfo info = SkImageInfo::MakeN32Premul(width, height); 54 SkImageInfo info = SkImageInfo::MakeN32Premul(width, height);
56 OwnPtr<uint8_t[]> imagePixels = adoptArrayPtr(new uint8_t[width * height * i nfo.bytesPerPixel()]); 55 OwnPtr<uint8_t[]> imagePixels = adoptArrayPtr(new uint8_t[width * height * i nfo.bytesPerPixel()]);
57 int imageRowBytes = info.bytesPerPixel() * width; 56 int imageRowBytes = info.bytesPerPixel() * width;
58 input->readPixels(info, imagePixels.get(), imageRowBytes, 0, 0); 57 input->readPixels(info, imagePixels.get(), imageRowBytes, 0, 0);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 return nullptr; 96 return nullptr;
98 decoder->setData(image->data(), true); 97 decoder->setData(image->data(), true);
99 if (!decoder->frameCount()) 98 if (!decoder->frameCount())
100 return nullptr; 99 return nullptr;
101 ImageFrame* frame = decoder->frameBufferAtIndex(0); 100 ImageFrame* frame = decoder->frameBufferAtIndex(0);
102 if (!frame || frame->status() != ImageFrame::FrameComplete) 101 if (!frame || frame->status() != ImageFrame::FrameComplete)
103 return nullptr; 102 return nullptr;
104 SkBitmap bitmap = frame->bitmap(); 103 SkBitmap bitmap = frame->bitmap();
105 if (!frameIsValid(bitmap)) 104 if (!frameIsValid(bitmap))
106 return nullptr; 105 return nullptr;
107 ASSERT(bitmap.isImmutable());
108 skiaImage = adoptRef(SkImage::NewFromBitmap(bitmap)); 106 skiaImage = adoptRef(SkImage::NewFromBitmap(bitmap));
109 } 107 }
110 108
111 if (cropRect == srcRect) { 109 if (cropRect == srcRect) {
112 if (flipYEnabled) 110 if (flipYEnabled)
113 return StaticBitmapImage::create(adoptRef(flipSkImageVertically(skia Image->newSubset(srcRect)))); 111 return StaticBitmapImage::create(adoptRef(flipSkImageVertically(skia Image->newSubset(srcRect))));
114 return StaticBitmapImage::create(adoptRef(skiaImage->newSubset(srcRect)) ); 112 return StaticBitmapImage::create(adoptRef(skiaImage->newSubset(srcRect)) );
115 } 113 }
116 114
117 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterN32Premul(cropRect. width(), cropRect.height())); 115 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterN32Premul(cropRect. width(), cropRect.height()));
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 { 354 {
357 return FloatSize(width(), height()); 355 return FloatSize(width(), height());
358 } 356 }
359 357
360 DEFINE_TRACE(ImageBitmap) 358 DEFINE_TRACE(ImageBitmap)
361 { 359 {
362 ImageLoaderClient::trace(visitor); 360 ImageLoaderClient::trace(visitor);
363 } 361 }
364 362
365 } // namespace blink 363 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698