Title: [195662] releases/WebKitGTK/webkit-2.10
- Revision
- 195662
- Author
- [email protected]
- Date
- 2016-01-27 04:28:26 -0800 (Wed, 27 Jan 2016)
Log Message
Merge r195397 - http://victordarras.fr/cssgame/ doesn't work in Safari.
https://bugs.webkit.org/show_bug.cgi?id=153285
<rdar://problem/24212369>
Reviewed by Tim Horton.
This patch adds support for hittesting ClipPathOperation::Reference.
Source/WebCore:
Tests: svg/clip-path/hittest-clip-path-reference-miss.html
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::nodeAtPoint):
* rendering/RenderObject.h:
(WebCore::RenderObject::isSVGResourceClipper):
* rendering/svg/RenderSVGResourceClipper.h:
(isType):
LayoutTests:
* svg/clip-path/hittest-clip-path-reference-miss-expected.html: Added.
* svg/clip-path/hittest-clip-path-reference-miss.html: Added.
Modified Paths
Added Paths
Diff
Modified: releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog (195661 => 195662)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog 2016-01-27 10:32:59 UTC (rev 195661)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog 2016-01-27 12:28:26 UTC (rev 195662)
@@ -1,3 +1,16 @@
+2016-01-20 Zalan Bujtas <[email protected]>
+
+ http://victordarras.fr/cssgame/ doesn't work in Safari.
+ https://bugs.webkit.org/show_bug.cgi?id=153285
+ <rdar://problem/24212369>
+
+ Reviewed by Tim Horton.
+
+ This patch adds support for hittesting ClipPathOperation::Reference.
+
+ * svg/clip-path/hittest-clip-path-reference-miss-expected.html: Added.
+ * svg/clip-path/hittest-clip-path-reference-miss.html: Added.
+
2016-01-15 Jiewen Tan <[email protected]>
FrameLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame() is never called when loading a main resource from the memory cache
Added: releases/WebKitGTK/webkit-2.10/LayoutTests/svg/clip-path/hittest-clip-path-reference-miss-expected.html (0 => 195662)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/svg/clip-path/hittest-clip-path-reference-miss-expected.html (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/svg/clip-path/hittest-clip-path-reference-miss-expected.html 2016-01-27 12:28:26 UTC (rev 195662)
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>This tests that we properly hittest boxes with reference clip path.</title>
+<style>
+div {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 200px;
+ height: 200px;
+ background: green;
+}
+</style>
+</head>
+<body>
+<div></div>
+</body>
+</html>
\ No newline at end of file
Added: releases/WebKitGTK/webkit-2.10/LayoutTests/svg/clip-path/hittest-clip-path-reference-miss.html (0 => 195662)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/svg/clip-path/hittest-clip-path-reference-miss.html (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/svg/clip-path/hittest-clip-path-reference-miss.html 2016-01-27 12:28:26 UTC (rev 195662)
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>This tests that we properly hittest boxes with reference clip path.</title>
+<style>
+svg {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+}
+
+div {
+ width: 200px;
+ height: 200px;
+ background: green;
+}
+
+.greenbox {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ z-index: -1;
+}
+
+.clipbox {
+ -webkit-clip-path: url('#svgreference');
+}
+
+.clipbox:hover ~ .greenbox
+{
+ background: blue;
+}
+</style>
+</head>
+<body>
+<svg width="200px" height="200px" viewBox="0 0 200 200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <clippath id=svgreference><path d="M50 50 L150 50 L150 150 L50 150 Z"></path></clippath>
+</svg>
+<div id=hittestthis class=clipbox></div>
+<div class=greenbox></div>
+<script>
+ if (window.eventSender)
+ eventSender.mouseMoveTo(10, 10);
+</script>
+</body>
+</html>
\ No newline at end of file
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog (195661 => 195662)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog 2016-01-27 10:32:59 UTC (rev 195661)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog 2016-01-27 12:28:26 UTC (rev 195662)
@@ -1,3 +1,22 @@
+2016-01-20 Zalan Bujtas <[email protected]>
+
+ http://victordarras.fr/cssgame/ doesn't work in Safari.
+ https://bugs.webkit.org/show_bug.cgi?id=153285
+ <rdar://problem/24212369>
+
+ Reviewed by Tim Horton.
+
+ This patch adds support for hittesting ClipPathOperation::Reference.
+
+ Tests: svg/clip-path/hittest-clip-path-reference-miss.html
+
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::nodeAtPoint):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::isSVGResourceClipper):
+ * rendering/svg/RenderSVGResourceClipper.h:
+ (isType):
+
2016-01-19 Konstantin Tokarev <[email protected]>
Fixed compilation of AXObjectCache in case of !HAVE(ACCESSIBILITY).
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderBlock.cpp (195661 => 195662)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderBlock.cpp 2016-01-27 10:32:59 UTC (rev 195661)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderBlock.cpp 2016-01-27 12:28:26 UTC (rev 195662)
@@ -59,6 +59,7 @@
#include "RenderNamedFlowFragment.h"
#include "RenderNamedFlowThread.h"
#include "RenderRegion.h"
+#include "RenderSVGResourceClipper.h"
#include "RenderTableCell.h"
#include "RenderTextFragment.h"
#include "RenderTheme.h"
@@ -2460,8 +2461,18 @@
return false;
break;
}
- // FIXME: handle Reference/Box
- case ClipPathOperation::Reference:
+ case ClipPathOperation::Reference: {
+ const auto& referenceClipPathOperation = downcast<ReferenceClipPathOperation>(*style().clipPath());
+ auto* element = document().getElementById(referenceClipPathOperation.fragment());
+ if (!element || !element->renderer())
+ break;
+ if (!is<SVGClipPathElement>(*element))
+ break;
+ auto& clipper = downcast<RenderSVGResourceClipper>(*element->renderer());
+ if (!clipper.hitTestClipContent(FloatRect(borderBoxRect()), FloatPoint(locationInContainer.point() - localOffset)))
+ return false;
+ break;
+ }
case ClipPathOperation::Box:
break;
}
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderObject.h (195661 => 195662)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderObject.h 2016-01-27 10:32:59 UTC (rev 195661)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderObject.h 2016-01-27 12:28:26 UTC (rev 195662)
@@ -437,6 +437,7 @@
virtual bool isSVGForeignObject() const { return false; }
virtual bool isSVGResourceContainer() const { return false; }
virtual bool isSVGResourceFilter() const { return false; }
+ virtual bool isSVGResourceClipper() const { return false; }
virtual bool isSVGResourceFilterPrimitive() const { return false; }
// FIXME: Those belong into a SVG specific base-class for all renderers (see above)
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceClipper.h (195661 => 195662)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceClipper.h 2016-01-27 10:32:59 UTC (rev 195661)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceClipper.h 2016-01-27 12:28:26 UTC (rev 195662)
@@ -63,6 +63,7 @@
void element() const = delete;
virtual const char* renderName() const override { return "RenderSVGResourceClipper"; }
+ bool isSVGResourceClipper() const override { return true; }
bool pathOnlyClipping(GraphicsContext*, const AffineTransform&, const FloatRect&);
bool drawContentIntoMaskImage(const ClipperMaskImage&, const FloatRect& objectBoundingBox);
@@ -75,6 +76,9 @@
}
-SPECIALIZE_TYPE_TRAITS_RENDER_SVG_RESOURCE(RenderSVGResourceClipper, ClipperResourceType)
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::RenderSVGResourceClipper)
+static bool isType(const WebCore::RenderObject& renderer) { return renderer.isSVGResourceClipper(); }
+static bool isType(const WebCore::RenderSVGResource& resource) { return resource.resourceType() == WebCore::ClipperResourceType; }
+SPECIALIZE_TYPE_TRAITS_END()
#endif
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes