diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
index b97ec2070b1..be84f363cb1 100644
--- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
+++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp
@@ -336,6 +336,13 @@ void CanvasRenderingContext2D::reset()
reset_to_default_state();
}
+// https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-iscontextlost
+bool CanvasRenderingContext2D::is_context_lost()
+{
+ // The isContextLost() method steps are to return this's context lost.
+ return m_context_lost;
+}
+
// https://html.spec.whatwg.org/multipage/canvas.html#reset-the-rendering-context-to-its-default-state
void CanvasRenderingContext2D::reset_to_default_state()
{
diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h
index fc925c69132..99d05f6baf4 100644
--- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h
+++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h
@@ -72,6 +72,7 @@ public:
void save();
void restore();
void reset();
+ bool is_context_lost();
void reset_to_default_state();
@@ -97,6 +98,9 @@ private:
DrawingState m_drawing_state;
Vector m_drawing_state_stack;
+ // https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-context-lost
+ bool m_context_lost { false };
+
Gfx::Path m_path;
};
diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl
index d61dfbdde0c..8a4e7dbec82 100644
--- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl
+++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl
@@ -34,6 +34,7 @@ interface CanvasRenderingContext2D {
undefined save();
undefined restore();
undefined reset();
+ boolean isContextLost();
readonly attribute HTMLCanvasElement canvas;