Crash in RenderBox::paintMaskImages when GraphicsContext's painting is disabled
https://bugs.webkit.org/show_bug.cgi?id=68133

Reviewed by Darin Adler.

.:

* Source/autotools/symbols.filter: Added the mangled symbols needed for window.internals

Source/WebCore:

Tests: fast/css/webkit-mask-crash-fieldset-legend.html
       fast/css/webkit-mask-crash-figure.html
       fast/css/webkit-mask-crash-table.html
       fast/css/webkit-mask-crash-td-2.html
       fast/css/webkit-mask-crash-td.html

GraphicsContext::getCTM crashes if called with a GraphicsContext that has painting
disabled. RenderBox::paintMaskImages would thus crash if called in this condition.

This change just modifies the different GraphicsContext::getCTM method to bail early
if painting is disabled on the GraphicsContext. The rest of the change is exposing
paintControlTints that exposes this.

* WebCore.exp.in: Added symbols of the newly export window.internals function.

* page/FrameView.cpp:
(WebCore::FrameView::updateControlTints): Split this function in 2 so that
I can expose the internal paintControlTints.

(WebCore::FrameView::paintControlTints):
This is the one exposed to Internals as we want to be testable regardless of
whether the platform supports control tints.

* page/FrameView.h: Added paintControlTints.

* testing/Internals.cpp:
(WebCore::Internals::paintControlTints):
* testing/Internals.h:
* testing/Internals.idl:
Added a way to force a fake painting so that we can easily reproduce the bugs.

* platform/graphics/cairo/GraphicsContextCairo.cpp:
(WebCore::GraphicsContext::getCTM):
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::GraphicsContext::getCTM):
* platform/graphics/qt/GraphicsContextQt.cpp:
(WebCore::GraphicsContext::getCTM):
* platform/graphics/skia/GraphicsContextSkia.cpp:
(WebCore::GraphicsContext::getCTM):
* platform/graphics/wince/GraphicsContextWinCE.cpp:
(WebCore::GraphicsContext::getCTM):
* platform/graphics/wx/GraphicsContextWx.cpp:
(WebCore::GraphicsContext::getCTM):
Fixed all our back-end to exit early if painting is disabled.

Source/WebKit2:

* win/WebKit2.def:
* win/WebKit2CFLite.def:
Exported the new FrameView::paintControlTints function.

LayoutTests:

Those tests checks that we do not crash when calling internals.paintControlTints.

* platform/mac/Skipped: Skipped 2 tests as they are hitting an ASSERT unrelated to
this change on Mac.

* fast/css/webkit-mask-crash-fieldset-legend-expected.txt: Added.
* fast/css/webkit-mask-crash-fieldset-legend.html: Added.
* fast/css/webkit-mask-crash-figure-expected.txt: Added.
* fast/css/webkit-mask-crash-figure.html: Added.
* fast/css/webkit-mask-crash-table-expected.txt: Added.
* fast/css/webkit-mask-crash-table.html: Added.
* fast/css/webkit-mask-crash-td-2-expected.txt: Added.
* fast/css/webkit-mask-crash-td-2.html: Added.
* fast/css/webkit-mask-crash-td-expected.txt: Added.
* fast/css/webkit-mask-crash-td.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@95685 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/fast/css/webkit-mask-crash-figure.html b/LayoutTests/fast/css/webkit-mask-crash-figure.html
new file mode 100644
index 0000000..dd7fd6d
--- /dev/null
+++ b/LayoutTests/fast/css/webkit-mask-crash-figure.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<head>
+<style>
+.box {
+display: table-footer-group; -webkit-mask-box-image: url("bogus.png");
+}
+</style>
+</head>
+<body>
+<div class="box"><figure>
+<script>
+    if (window.internals) {
+        layoutTestController.dumpAsText();
+        internals.paintControlTints(document);
+    }
+</script>
+Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=68133">68133</a>: Crash in RenderBox::paintMaskImages when GraphicsContext's painting is disabled<br>
+This test has PASSED (no crash).
+</body>
+</html>