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

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

Issue 1609343004: Add display list fallback reason histograms for 2D canvas (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git cl web 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
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 "third_party/skia/include/core/SkSurface.h" 10 #include "third_party/skia/include/core/SkSurface.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 88
89 IntRect videoRect = IntRect(IntPoint(), playerSize); 89 IntRect videoRect = IntRect(IntPoint(), playerSize);
90 IntRect srcRect = intersection(cropRect, videoRect); 90 IntRect srcRect = intersection(cropRect, videoRect);
91 OwnPtr<ImageBuffer> buffer = ImageBuffer::create(cropRect.size(), NonOpaque, DoNotInitializeImagePixels); 91 OwnPtr<ImageBuffer> buffer = ImageBuffer::create(cropRect.size(), NonOpaque, DoNotInitializeImagePixels);
92 if (!buffer) 92 if (!buffer)
93 return; 93 return;
94 94
95 IntPoint dstPoint = IntPoint(std::max(0, -cropRect.x()), std::max(0, -cropRe ct.y())); 95 IntPoint dstPoint = IntPoint(std::max(0, -cropRect.x()), std::max(0, -cropRe ct.y()));
96 video->paintCurrentFrame(buffer->canvas(), IntRect(dstPoint, srcRect.size()) , nullptr); 96 video->paintCurrentFrame(buffer->canvas(), IntRect(dstPoint, srcRect.size()) , nullptr);
97 if (options.imageOrientation() == imageOrientationFlipY) 97 if (options.imageOrientation() == imageOrientationFlipY)
98 m_image = StaticBitmapImage::create(adoptRef(flipSkImageVertically(buffe r->newSkImageSnapshot(PreferNoAcceleration).get()))); 98 m_image = StaticBitmapImage::create(adoptRef(flipSkImageVertically(buffe r->newSkImageSnapshot(PreferNoAcceleration, SnapshotReasonUnknown).get())));
99 else 99 else
100 m_image = StaticBitmapImage::create(buffer->newSkImageSnapshot(PreferNoA cceleration)); 100 m_image = StaticBitmapImage::create(buffer->newSkImageSnapshot(PreferNoA cceleration, SnapshotReasonUnknown));
101 m_image->setOriginClean(!video->wouldTaintOrigin(document->securityOrigin()) ); 101 m_image->setOriginClean(!video->wouldTaintOrigin(document->securityOrigin()) );
102 } 102 }
103 103
104 ImageBitmap::ImageBitmap(HTMLCanvasElement* canvas, const IntRect& cropRect, con st ImageBitmapOptions& options) 104 ImageBitmap::ImageBitmap(HTMLCanvasElement* canvas, const IntRect& cropRect, con st ImageBitmapOptions& options)
105 { 105 {
106 ASSERT(canvas->isPaintable()); 106 ASSERT(canvas->isPaintable());
107 if (options.imageOrientation() == imageOrientationFlipY) 107 if (options.imageOrientation() == imageOrientationFlipY)
108 m_image = cropImage(canvas->copiedImage(BackBuffer, PreferAcceleration). get(), cropRect, true); 108 m_image = cropImage(canvas->copiedImage(BackBuffer, PreferAcceleration). get(), cropRect, true);
109 else 109 else
110 m_image = cropImage(canvas->copiedImage(BackBuffer, PreferAcceleration). get(), cropRect, false); 110 m_image = cropImage(canvas->copiedImage(BackBuffer, PreferAcceleration). get(), cropRect, false);
111 m_image->setOriginClean(canvas->originClean()); 111 m_image->setOriginClean(canvas->originClean());
112 } 112 }
113 113
114 ImageBitmap::ImageBitmap(ImageData* data, const IntRect& cropRect, const ImageBi tmapOptions& options) 114 ImageBitmap::ImageBitmap(ImageData* data, const IntRect& cropRect, const ImageBi tmapOptions& options)
115 { 115 {
116 IntRect srcRect = intersection(cropRect, IntRect(IntPoint(), data->size())); 116 IntRect srcRect = intersection(cropRect, IntRect(IntPoint(), data->size()));
117 117
118 OwnPtr<ImageBuffer> buffer = ImageBuffer::create(cropRect.size(), NonOpaque, DoNotInitializeImagePixels); 118 OwnPtr<ImageBuffer> buffer = ImageBuffer::create(cropRect.size(), NonOpaque, DoNotInitializeImagePixels);
119 if (!buffer) 119 if (!buffer)
120 return; 120 return;
121 121
122 if (srcRect.isEmpty()) { 122 if (srcRect.isEmpty()) {
123 m_image = StaticBitmapImage::create(buffer->newSkImageSnapshot(PreferNoA cceleration)); 123 m_image = StaticBitmapImage::create(buffer->newSkImageSnapshot(PreferNoA cceleration, SnapshotReasonUnknown));
124 return; 124 return;
125 } 125 }
126 126
127 IntPoint dstPoint = IntPoint(std::min(0, -cropRect.x()), std::min(0, -cropRe ct.y())); 127 IntPoint dstPoint = IntPoint(std::min(0, -cropRect.x()), std::min(0, -cropRe ct.y()));
128 if (cropRect.x() < 0) 128 if (cropRect.x() < 0)
129 dstPoint.setX(-cropRect.x()); 129 dstPoint.setX(-cropRect.x());
130 if (cropRect.y() < 0) 130 if (cropRect.y() < 0)
131 dstPoint.setY(-cropRect.y()); 131 dstPoint.setY(-cropRect.y());
132 buffer->putByteArray(Unmultiplied, data->data()->data(), data->size(), srcRe ct, dstPoint); 132 buffer->putByteArray(Unmultiplied, data->data()->data(), data->size(), srcRe ct, dstPoint);
133 if (options.imageOrientation() == imageOrientationFlipY) 133 if (options.imageOrientation() == imageOrientationFlipY)
134 m_image = StaticBitmapImage::create(adoptRef(flipSkImageVertically(buffe r->newSkImageSnapshot(PreferNoAcceleration).get()))); 134 m_image = StaticBitmapImage::create(adoptRef(flipSkImageVertically(buffe r->newSkImageSnapshot(PreferNoAcceleration, SnapshotReasonUnknown).get())));
135 else 135 else
136 m_image = StaticBitmapImage::create(buffer->newSkImageSnapshot(PreferNoA cceleration)); 136 m_image = StaticBitmapImage::create(buffer->newSkImageSnapshot(PreferNoA cceleration, SnapshotReasonUnknown));
137 } 137 }
138 138
139 ImageBitmap::ImageBitmap(ImageBitmap* bitmap, const IntRect& cropRect, const Ima geBitmapOptions& options) 139 ImageBitmap::ImageBitmap(ImageBitmap* bitmap, const IntRect& cropRect, const Ima geBitmapOptions& options)
140 { 140 {
141 if (options.imageOrientation() == imageOrientationFlipY) 141 if (options.imageOrientation() == imageOrientationFlipY)
142 m_image = cropImage(bitmap->bitmapImage(), cropRect, true); 142 m_image = cropImage(bitmap->bitmapImage(), cropRect, true);
143 else 143 else
144 m_image = cropImage(bitmap->bitmapImage(), cropRect, false); 144 m_image = cropImage(bitmap->bitmapImage(), cropRect, false);
145 m_image->setOriginClean(bitmap->originClean()); 145 m_image->setOriginClean(bitmap->originClean());
146 } 146 }
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 exceptionState.throwDOMException(IndexSizeError, String::format("The sou rce %s provided is 0.", sw ? "height" : "width")); 258 exceptionState.throwDOMException(IndexSizeError, String::format("The sou rce %s provided is 0.", sw ? "height" : "width"));
259 return ScriptPromise(); 259 return ScriptPromise();
260 } 260 }
261 return ImageBitmapSource::fulfillImageBitmap(scriptState, create(this, IntRe ct(sx, sy, sw, sh), options)); 261 return ImageBitmapSource::fulfillImageBitmap(scriptState, create(this, IntRe ct(sx, sy, sw, sh), options));
262 } 262 }
263 263
264 void ImageBitmap::notifyImageSourceChanged() 264 void ImageBitmap::notifyImageSourceChanged()
265 { 265 {
266 } 266 }
267 267
268 PassRefPtr<Image> ImageBitmap::getSourceImageForCanvas(SourceImageStatus* status , AccelerationHint) const 268 PassRefPtr<Image> ImageBitmap::getSourceImageForCanvas(SourceImageStatus* status , AccelerationHint, SnapshotReason) const
269 { 269 {
270 *status = NormalSourceImageStatus; 270 *status = NormalSourceImageStatus;
271 return m_image ? m_image : nullptr; 271 return m_image ? m_image : nullptr;
272 } 272 }
273 273
274 void ImageBitmap::adjustDrawRects(FloatRect* srcRect, FloatRect* dstRect) const 274 void ImageBitmap::adjustDrawRects(FloatRect* srcRect, FloatRect* dstRect) const
275 { 275 {
276 } 276 }
277 277
278 FloatSize ImageBitmap::elementSize() const 278 FloatSize ImageBitmap::elementSize() const
279 { 279 {
280 return FloatSize(width(), height()); 280 return FloatSize(width(), height());
281 } 281 }
282 282
283 DEFINE_TRACE(ImageBitmap) 283 DEFINE_TRACE(ImageBitmap)
284 { 284 {
285 ImageLoaderClient::trace(visitor); 285 ImageLoaderClient::trace(visitor);
286 } 286 }
287 287
288 } // namespace blink 288 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/frame/ImageBitmap.h ('k') | third_party/WebKit/Source/core/html/HTMLCanvasElement.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698