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

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLCanvasElement.h

Issue 2584643002: Revamp OffscreenCanvas commit flow (Closed)
Patch Set: rebase and fix conflict Created 4 years 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 /* 1 /*
2 * Copyright (C) 2004, 2006, 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2006, 2009, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> 3 * Copyright (C) 2007 Alp Toker <alp@atoker.com>
4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. 4 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 class ImageBuffer; 66 class ImageBuffer;
67 class ImageBufferSurface; 67 class ImageBufferSurface;
68 class ImageData; 68 class ImageData;
69 class IntSize; 69 class IntSize;
70 70
71 class 71 class
72 CanvasRenderingContext2DOrWebGLRenderingContextOrWebGL2RenderingContextOrIma geBitmapRenderingContext; 72 CanvasRenderingContext2DOrWebGLRenderingContextOrWebGL2RenderingContextOrIma geBitmapRenderingContext;
73 typedef CanvasRenderingContext2DOrWebGLRenderingContextOrWebGL2RenderingContextO rImageBitmapRenderingContext 73 typedef CanvasRenderingContext2DOrWebGLRenderingContextOrWebGL2RenderingContextO rImageBitmapRenderingContext
74 RenderingContext; 74 RenderingContext;
75 75
76 class CORE_EXPORT HTMLCanvasElement final : public HTMLElement, 76 class CORE_EXPORT HTMLCanvasElement final
77 public ContextLifecycleObserver, 77 : public HTMLElement,
78 public PageVisibilityObserver, 78 public ContextLifecycleObserver,
79 public CanvasImageSource, 79 public PageVisibilityObserver,
80 public ImageBufferClient, 80 public CanvasImageSource,
81 public ImageBitmapSource, 81 public CanvasSurfaceLayerBridgeObserver,
82 public OffscreenCanvasPlaceholder { 82 public ImageBufferClient,
83 public ImageBitmapSource,
84 public OffscreenCanvasPlaceholder {
83 DEFINE_WRAPPERTYPEINFO(); 85 DEFINE_WRAPPERTYPEINFO();
84 USING_GARBAGE_COLLECTED_MIXIN(HTMLCanvasElement); 86 USING_GARBAGE_COLLECTED_MIXIN(HTMLCanvasElement);
85 USING_PRE_FINALIZER(HTMLCanvasElement, dispose); 87 USING_PRE_FINALIZER(HTMLCanvasElement, dispose);
86 88
87 public: 89 public:
88 using Node::getExecutionContext; 90 using Node::getExecutionContext;
89 91
90 DECLARE_NODE_FACTORY(HTMLCanvasElement); 92 DECLARE_NODE_FACTORY(HTMLCanvasElement);
91 ~HTMLCanvasElement() override; 93 ~HTMLCanvasElement() override;
92 94
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 SnapshotReason, 182 SnapshotReason,
181 const FloatSize&) const override; 183 const FloatSize&) const override;
182 bool wouldTaintOrigin(SecurityOrigin*) const override; 184 bool wouldTaintOrigin(SecurityOrigin*) const override;
183 FloatSize elementSize(const FloatSize&) const override; 185 FloatSize elementSize(const FloatSize&) const override;
184 bool isCanvasElement() const override { return true; } 186 bool isCanvasElement() const override { return true; }
185 bool isOpaque() const override; 187 bool isOpaque() const override;
186 bool isAccelerated() const override; 188 bool isAccelerated() const override;
187 int sourceWidth() override { return m_size.width(); } 189 int sourceWidth() override { return m_size.width(); }
188 int sourceHeight() override { return m_size.height(); } 190 int sourceHeight() override { return m_size.height(); }
189 191
192 // CanvasSurfaceLayerBridgeObserver implementation
193 void OnWebLayerReplaced() override;
194
190 // ImageBufferClient implementation 195 // ImageBufferClient implementation
191 void notifySurfaceInvalid() override; 196 void notifySurfaceInvalid() override;
192 bool isDirty() override { return !m_dirtyRect.isEmpty(); } 197 bool isDirty() override { return !m_dirtyRect.isEmpty(); }
193 void didDisableAcceleration() override; 198 void didDisableAcceleration() override;
194 void didFinalizeFrame() override; 199 void didFinalizeFrame() override;
195 void restoreCanvasMatrixClipStack(SkCanvas*) const override; 200 void restoreCanvasMatrixClipStack(SkCanvas*) const override;
196 201
197 void doDeferredPaintInvalidation(); 202 void doDeferredPaintInvalidation();
198 203
199 // ImageBitmapSource implementation 204 // ImageBitmapSource implementation
(...skipping 22 matching lines...) Expand all
222 227
223 // For Canvas HitRegions 228 // For Canvas HitRegions
224 bool isSupportedInteractiveCanvasFallback(const Element&); 229 bool isSupportedInteractiveCanvasFallback(const Element&);
225 HitTestCanvasResult* getControlAndIdIfHitRegionExists(const LayoutPoint&); 230 HitTestCanvasResult* getControlAndIdIfHitRegionExists(const LayoutPoint&);
226 String getIdFromControl(const Element*); 231 String getIdFromControl(const Element*);
227 232
228 // For OffscreenCanvas that controls this html canvas element 233 // For OffscreenCanvas that controls this html canvas element
229 CanvasSurfaceLayerBridge* surfaceLayerBridge() const { 234 CanvasSurfaceLayerBridge* surfaceLayerBridge() const {
230 return m_surfaceLayerBridge.get(); 235 return m_surfaceLayerBridge.get();
231 } 236 }
232 bool createSurfaceLayer(); 237 void createLayer();
233 238
234 void detachContext() { m_context = nullptr; } 239 void detachContext() { m_context = nullptr; }
235 240
236 protected: 241 protected:
237 void didMoveToNewDocument(Document& oldDocument) override; 242 void didMoveToNewDocument(Document& oldDocument) override;
238 243
239 private: 244 private:
240 explicit HTMLCanvasElement(Document&); 245 explicit HTMLCanvasElement(Document&);
241 void dispose(); 246 void dispose();
242 247
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 // Used for OffscreenCanvas that controls this HTML canvas element 311 // Used for OffscreenCanvas that controls this HTML canvas element
307 std::unique_ptr<CanvasSurfaceLayerBridge> m_surfaceLayerBridge; 312 std::unique_ptr<CanvasSurfaceLayerBridge> m_surfaceLayerBridge;
308 313
309 int m_numFramesSinceLastRenderingModeSwitch; 314 int m_numFramesSinceLastRenderingModeSwitch;
310 bool m_pendingRenderingModeSwitch; 315 bool m_pendingRenderingModeSwitch;
311 }; 316 };
312 317
313 } // namespace blink 318 } // namespace blink
314 319
315 #endif // HTMLCanvasElement_h 320 #endif // HTMLCanvasElement_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698