OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.h" | 5 #include "modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.h" |
6 | 6 |
7 #include "bindings/modules/v8/OffscreenCanvasRenderingContext2DOrWebGLRenderingC
ontextOrWebGL2RenderingContext.h" | 7 #include "bindings/modules/v8/OffscreenCanvasRenderingContext2DOrWebGLRenderingC
ontextOrWebGL2RenderingContext.h" |
8 #include "core/frame/ImageBitmap.h" | 8 #include "core/frame/ImageBitmap.h" |
9 #include "core/frame/Settings.h" | 9 #include "core/frame/Settings.h" |
10 #include "core/workers/WorkerGlobalScope.h" | 10 #include "core/workers/WorkerGlobalScope.h" |
(...skipping 27 matching lines...) Expand all Loading... |
38 toWorkerGlobalScope(executionContext)->workerSettings(); | 38 toWorkerGlobalScope(executionContext)->workerSettings(); |
39 if (workerSettings && workerSettings->disableReadingFromCanvas()) | 39 if (workerSettings && workerSettings->disableReadingFromCanvas()) |
40 canvas->setDisableReadingFromCanvasTrue(); | 40 canvas->setDisableReadingFromCanvasTrue(); |
41 } | 41 } |
42 | 42 |
43 DEFINE_TRACE(OffscreenCanvasRenderingContext2D) { | 43 DEFINE_TRACE(OffscreenCanvasRenderingContext2D) { |
44 CanvasRenderingContext::trace(visitor); | 44 CanvasRenderingContext::trace(visitor); |
45 BaseRenderingContext2D::trace(visitor); | 45 BaseRenderingContext2D::trace(visitor); |
46 } | 46 } |
47 | 47 |
48 void OffscreenCanvasRenderingContext2D::commit(ExceptionState& exceptionState) { | 48 void OffscreenCanvasRenderingContext2D::commit(ScriptState* scriptState, |
| 49 ExceptionState& exceptionState) { |
| 50 UseCounter::Feature feature = UseCounter::OffscreenCanvasCommit2D; |
| 51 UseCounter::count(scriptState->getExecutionContext(), feature); |
49 if (getOffscreenCanvas()->getAssociatedCanvasId() < 0) { | 52 if (getOffscreenCanvas()->getAssociatedCanvasId() < 0) { |
50 // If an OffscreenCanvas has no associated canvas Id, it indicates that | 53 // If an OffscreenCanvas has no associated canvas Id, it indicates that |
51 // it is not an OffscreenCanvas created by transfering control from html | 54 // it is not an OffscreenCanvas created by transfering control from html |
52 // canvas. | 55 // canvas. |
53 exceptionState.throwDOMException(InvalidStateError, | 56 exceptionState.throwDOMException(InvalidStateError, |
54 "Commit() was called on a context whose " | 57 "Commit() was called on a context whose " |
55 "OffscreenCanvas is not associated with a " | 58 "OffscreenCanvas is not associated with a " |
56 "canvas element."); | 59 "canvas element."); |
57 return; | 60 return; |
58 } | 61 } |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 if (!imageBuffer()) | 133 if (!imageBuffer()) |
131 return nullptr; | 134 return nullptr; |
132 sk_sp<SkImage> skImage = m_imageBuffer->newSkImageSnapshot( | 135 sk_sp<SkImage> skImage = m_imageBuffer->newSkImageSnapshot( |
133 PreferAcceleration, SnapshotReasonTransferToImageBitmap); | 136 PreferAcceleration, SnapshotReasonTransferToImageBitmap); |
134 RefPtr<StaticBitmapImage> image = | 137 RefPtr<StaticBitmapImage> image = |
135 StaticBitmapImage::create(std::move(skImage)); | 138 StaticBitmapImage::create(std::move(skImage)); |
136 image->setOriginClean(this->originClean()); | 139 image->setOriginClean(this->originClean()); |
137 return image; | 140 return image; |
138 } | 141 } |
139 | 142 |
140 ImageBitmap* OffscreenCanvasRenderingContext2D::transferToImageBitmap() { | 143 ImageBitmap* OffscreenCanvasRenderingContext2D::transferToImageBitmap( |
| 144 ScriptState* scriptState) { |
| 145 UseCounter::Feature feature = |
| 146 UseCounter::OffscreenCanvasTransferToImageBitmap2D; |
| 147 UseCounter::count(scriptState->getExecutionContext(), feature); |
141 RefPtr<StaticBitmapImage> image = transferToStaticBitmapImage(); | 148 RefPtr<StaticBitmapImage> image = transferToStaticBitmapImage(); |
142 if (!image) | 149 if (!image) |
143 return nullptr; | 150 return nullptr; |
144 m_imageBuffer.reset(); // "Transfer" means no retained buffer | 151 m_imageBuffer.reset(); // "Transfer" means no retained buffer |
145 m_needsMatrixClipRestore = true; | 152 m_needsMatrixClipRestore = true; |
146 return ImageBitmap::create(std::move(image)); | 153 return ImageBitmap::create(std::move(image)); |
147 } | 154 } |
148 | 155 |
149 PassRefPtr<Image> OffscreenCanvasRenderingContext2D::getImage( | 156 PassRefPtr<Image> OffscreenCanvasRenderingContext2D::getImage( |
150 AccelerationHint hint, | 157 AccelerationHint hint, |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 } | 241 } |
235 | 242 |
236 bool OffscreenCanvasRenderingContext2D::isContextLost() const { | 243 bool OffscreenCanvasRenderingContext2D::isContextLost() const { |
237 return false; | 244 return false; |
238 } | 245 } |
239 | 246 |
240 bool OffscreenCanvasRenderingContext2D::isPaintable() const { | 247 bool OffscreenCanvasRenderingContext2D::isPaintable() const { |
241 return this->imageBuffer(); | 248 return this->imageBuffer(); |
242 } | 249 } |
243 } | 250 } |
OLD | NEW |