diff --git a/Base/res/html/misc/canvas-rotate.html b/Base/res/html/misc/canvas-rotate.html
new file mode 100644
index 0000000000..9cdb9489ea
--- /dev/null
+++ b/Base/res/html/misc/canvas-rotate.html
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/Base/res/html/misc/welcome.html b/Base/res/html/misc/welcome.html
index a4294f1605..d07b0ffd90 100644
--- a/Base/res/html/misc/welcome.html
+++ b/Base/res/html/misc/welcome.html
@@ -28,6 +28,7 @@ span#ua {
Your user agent is:
Some small test pages:
+ - canvas rotate()
- margin collapsing 2
- margin collapsing 1
- position: absolute, offset from edges
diff --git a/Libraries/LibWeb/DOM/CanvasRenderingContext2D.cpp b/Libraries/LibWeb/DOM/CanvasRenderingContext2D.cpp
index c210e36458..a56ac222e7 100644
--- a/Libraries/LibWeb/DOM/CanvasRenderingContext2D.cpp
+++ b/Libraries/LibWeb/DOM/CanvasRenderingContext2D.cpp
@@ -123,6 +123,12 @@ void CanvasRenderingContext2D::translate(float tx, float ty)
m_transform.translate(tx, ty);
}
+void CanvasRenderingContext2D::rotate(float radians)
+{
+ dbg() << "CanvasRenderingContext2D::rotate(): " << radians;
+ m_transform.rotate_radians(radians);
+}
+
void CanvasRenderingContext2D::did_draw(const Gfx::FloatRect&)
{
// FIXME: Make use of the rect to reduce the invalidated area when possible.
diff --git a/Libraries/LibWeb/DOM/CanvasRenderingContext2D.h b/Libraries/LibWeb/DOM/CanvasRenderingContext2D.h
index 1b68f13fc4..eee5804897 100644
--- a/Libraries/LibWeb/DOM/CanvasRenderingContext2D.h
+++ b/Libraries/LibWeb/DOM/CanvasRenderingContext2D.h
@@ -62,6 +62,7 @@ public:
void scale(float sx, float sy);
void translate(float x, float y);
+ void rotate(float degrees);
void set_line_width(float line_width) { m_line_width = line_width; }
float line_width() const { return m_line_width; }
diff --git a/Libraries/LibWeb/DOM/CanvasRenderingContext2D.idl b/Libraries/LibWeb/DOM/CanvasRenderingContext2D.idl
index 98861cc8ec..2aad0f8027 100644
--- a/Libraries/LibWeb/DOM/CanvasRenderingContext2D.idl
+++ b/Libraries/LibWeb/DOM/CanvasRenderingContext2D.idl
@@ -5,6 +5,7 @@ interface CanvasRenderingContext2D {
void scale(double x, double y);
void translate(double x, double y);
+ void rotate(double radians);
void beginPath();
void closePath();