| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef OffscreenCanvas_h | 5 #ifndef OffscreenCanvas_h |
| 6 #define OffscreenCanvas_h | 6 #define OffscreenCanvas_h |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include "bindings/core/v8/ScriptPromise.h" | 9 #include "bindings/core/v8/ScriptPromise.h" |
| 10 #include "bindings/core/v8/ScriptState.h" | 10 #include "bindings/core/v8/ScriptState.h" |
| 11 #include "bindings/core/v8/ScriptWrappable.h" | 11 #include "bindings/core/v8/ScriptWrappable.h" |
| 12 #include "core/events/EventTarget.h" | 12 #include "core/events/EventTarget.h" |
| 13 #include "core/html/HTMLCanvasElement.h" | 13 #include "core/html/HTMLCanvasElement.h" |
| 14 #include "core/html/canvas/CanvasImageSource.h" | 14 #include "core/html/canvas/CanvasImageSource.h" |
| 15 #include "core/html/canvas/CanvasRenderingContextHost.h" | 15 #include "core/html/canvas/CanvasRenderingContextHost.h" |
| 16 #include "core/imagebitmap/ImageBitmapSource.h" |
| 16 #include "core/offscreencanvas/ImageEncodeOptions.h" | 17 #include "core/offscreencanvas/ImageEncodeOptions.h" |
| 17 #include "platform/geometry/IntSize.h" | 18 #include "platform/geometry/IntSize.h" |
| 18 #include "platform/graphics/OffscreenCanvasFrameDispatcher.h" | 19 #include "platform/graphics/OffscreenCanvasFrameDispatcher.h" |
| 19 #include "platform/heap/Handle.h" | 20 #include "platform/heap/Handle.h" |
| 20 | 21 |
| 21 namespace blink { | 22 namespace blink { |
| 22 | 23 |
| 23 class CanvasContextCreationAttributes; | 24 class CanvasContextCreationAttributes; |
| 24 class ImageBitmap; | 25 class ImageBitmap; |
| 25 class | 26 class |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 static void RegisterRenderingContextFactory( | 77 static void RegisterRenderingContextFactory( |
| 77 std::unique_ptr<CanvasRenderingContextFactory>); | 78 std::unique_ptr<CanvasRenderingContextFactory>); |
| 78 | 79 |
| 79 bool OriginClean() const; | 80 bool OriginClean() const; |
| 80 void SetOriginTainted() { origin_clean_ = false; } | 81 void SetOriginTainted() { origin_clean_ = false; } |
| 81 // TODO(crbug.com/630356): apply the flag to WebGL context as well | 82 // TODO(crbug.com/630356): apply the flag to WebGL context as well |
| 82 void SetDisableReadingFromCanvasTrue() { | 83 void SetDisableReadingFromCanvasTrue() { |
| 83 disable_reading_from_canvas_ = true; | 84 disable_reading_from_canvas_ = true; |
| 84 } | 85 } |
| 85 | 86 |
| 87 bool HasImageBuffer() const override { return !!image_buffer_; } |
| 88 void DiscardImageBuffer() override; |
| 89 ImageBuffer* GetImageBuffer() const override; |
| 90 |
| 86 void SetFrameSinkId(uint32_t client_id, uint32_t sink_id) { | 91 void SetFrameSinkId(uint32_t client_id, uint32_t sink_id) { |
| 87 client_id_ = client_id; | 92 client_id_ = client_id; |
| 88 sink_id_ = sink_id; | 93 sink_id_ = sink_id; |
| 89 } | 94 } |
| 90 uint32_t ClientId() const { return client_id_; } | 95 uint32_t ClientId() const { return client_id_; } |
| 91 uint32_t SinkId() const { return sink_id_; } | 96 uint32_t SinkId() const { return sink_id_; } |
| 92 | 97 |
| 93 void SetExecutionContext(ExecutionContext* context) { | 98 void SetExecutionContext(ExecutionContext* context) { |
| 94 execution_context_ = context; | 99 execution_context_ = context; |
| 95 } | 100 } |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 bool disable_reading_from_canvas_ = false; | 179 bool disable_reading_from_canvas_ = false; |
| 175 | 180 |
| 176 bool IsPaintable() const; | 181 bool IsPaintable() const; |
| 177 | 182 |
| 178 std::unique_ptr<OffscreenCanvasFrameDispatcher> frame_dispatcher_; | 183 std::unique_ptr<OffscreenCanvasFrameDispatcher> frame_dispatcher_; |
| 179 | 184 |
| 180 Member<ScriptPromiseResolver> commit_promise_resolver_; | 185 Member<ScriptPromiseResolver> commit_promise_resolver_; |
| 181 RefPtr<StaticBitmapImage> current_frame_; | 186 RefPtr<StaticBitmapImage> current_frame_; |
| 182 bool current_frame_is_web_gl_software_rendering_ = false; | 187 bool current_frame_is_web_gl_software_rendering_ = false; |
| 183 | 188 |
| 189 std::unique_ptr<ImageBuffer> image_buffer_; |
| 190 bool needs_matrix_clip_restore_ = false; |
| 191 |
| 184 // cc::FrameSinkId is broken into two integer components as this can be used | 192 // cc::FrameSinkId is broken into two integer components as this can be used |
| 185 // in transfer of OffscreenCanvas across threads | 193 // in transfer of OffscreenCanvas across threads |
| 186 // If this object is not created via | 194 // If this object is not created via |
| 187 // HTMLCanvasElement.transferControlToOffscreen(), | 195 // HTMLCanvasElement.transferControlToOffscreen(), |
| 188 // then the following members would remain as initialized zero values. | 196 // then the following members would remain as initialized zero values. |
| 189 uint32_t client_id_ = 0; | 197 uint32_t client_id_ = 0; |
| 190 uint32_t sink_id_ = 0; | 198 uint32_t sink_id_ = 0; |
| 191 }; | 199 }; |
| 192 | 200 |
| 193 } // namespace blink | 201 } // namespace blink |
| 194 | 202 |
| 195 #endif // OffscreenCanvas_h | 203 #endif // OffscreenCanvas_h |
| OLD | NEW |