Index: Source/core/html/HTMLCanvasElement.cpp |
diff --git a/Source/core/html/HTMLCanvasElement.cpp b/Source/core/html/HTMLCanvasElement.cpp |
index ae520f32f8e825c698f310b478cd4769e155f020..4261c16be2d9766a3c6298130bc45f207be91457 100644 |
--- a/Source/core/html/HTMLCanvasElement.cpp |
+++ b/Source/core/html/HTMLCanvasElement.cpp |
@@ -71,6 +71,7 @@ static const int MaxSkiaDim = 32767; // Maximum width/height in CSS pixels. |
HTMLCanvasElement::HTMLCanvasElement(Document& document) |
: HTMLElement(canvasTag, document) |
+ , DocumentVisibilityObserver(document) |
, m_size(DefaultWidth, DefaultHeight) |
, m_rendererIsCanvas(false) |
, m_ignoreReset(false) |
@@ -571,4 +572,26 @@ AffineTransform HTMLCanvasElement::baseTransform() const |
return m_imageBuffer->baseTransform(); |
} |
+void HTMLCanvasElement::didChangeVisibilityState(PageVisibilityState visibility) |
+{ |
+ if (hasImageBuffer()) { |
+ bool hidden = visibility != PageVisibilityStateVisible; |
+ if (hidden) { |
+ clearCopiedImage(); |
+ if (is3D()) { |
+ m_imageBuffer.clear(); |
+ } |
+ } |
+ if (hasImageBuffer()) { |
+ m_imageBuffer->setIsHidden(hidden); |
+ } |
+ } |
+} |
+ |
+void HTMLCanvasElement::didMoveToNewDocument(Document& oldDocument) |
+{ |
+ setObservedDocument(document()); |
+ HTMLElement::didMoveToNewDocument(oldDocument); |
+} |
+ |
} |