[Cherry-pick] Use -webkit-clip-path shapes to clip HTML elements
authorkrit@webkit.org <krit@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Sep 2012 17:48:19 +0000 (17:48 +0000)
committerGerrit Code Review <gerrit2@kim11>
Wed, 27 Mar 2013 06:15:39 +0000 (15:15 +0900)
[Title] Use -webkit-clip-path shapes to clip HTML elements
[Issues] N/A
[Problem] N/A
[Solution] Cherry picked.
[Cherry-Picker] Sanghyup Lee <sh53.lee@samsung.com>

Use -webkit-clip-path shapes to clip HTML elements
https://bugs.webkit.org/show_bug.cgi?id=95646

Reviewed by Dean Jackson.

Source/WebCore:

-webkit-clip-path creates a new layer for HTML elements now. The border,
background and content gets clipped by the clip path after any filter was
applied.

Tests: css3/masking/clip-path-circle-filter.html
       css3/masking/clip-path-circle-overflow.html
       css3/masking/clip-path-circle-overflow-hidden.html
       css3/masking/clip-path-circle-relative-overflow.html
       css3/masking/clip-path-circle.html
       css3/masking/clip-path-ellipse.html
       css3/masking/clip-path-polygon-evenodd.html
       css3/masking/clip-path-polygon-nonzero.html
       css3/masking/clip-path-polygon.html
       css3/masking/clip-path-rectangle.html

* rendering/RenderBox.h: Create new layer on clip-path.
* rendering/RenderBoxModelObject.h:
(WebCore::RenderBoxModelObject::requiresLayer): Create new layer on clip-path.
* rendering/RenderInline.h:
(WebCore::RenderInline::requiresLayer): Create new layer on clip-path.
* rendering/RenderLayer.cpp: Apply clip-path on context of object.
(WebCore::RenderLayer::paintLayerContents): Create new layer on clip-path.
* rendering/RenderObject.h:
(WebCore::RenderObject::hasClipPath): Indicates that renderer needs to be clipped by clip-path.
* rendering/RenderTableRow.h: Create new layer on clip-path.

LayoutTests:

Added new tests for the -webkit-clip-path property applied to HTML content.

* css3/masking/clip-path-circle-filter.html: Added.
* css3/masking/clip-path-circle-overflow.html: Added.
* css3/masking/clip-path-circle-relative-overflow.html: Added.
* css3/masking/clip-path-circle-overflow-hidden.html: Added.
* css3/masking/clip-path-circle.html: Added.
* css3/masking/clip-path-ellipse.html: Added.
* css3/masking/clip-path-polygon-evenodd.html: Added.
* css3/masking/clip-path-polygon-nonzero.html: Added.
* css3/masking/clip-path-polygon.html: Added.
* css3/masking/clip-path-rectangle.html: Added.
* platform/chromium/TestExpectations:
* platform/efl/TestExpectations:
* platform/gtk/TestExpectations:
* platform/mac/css3/masking/clip-path-circle-expected.png: Added.
* platform/mac/css3/masking/clip-path-circle-expected.txt: Added.
* platform/mac/css3/masking/clip-path-circle-filter-expected.png: Added.
* platform/mac/css3/masking/clip-path-circle-filter-expected.txt: Added.
* platform/mac/css3/masking/clip-path-circle-overflow-expected.png: Added.
* platform/mac/css3/masking/clip-path-circle-overflow-expected.txt: Added.
* platform/mac/css3/masking/clip-path-circle-overflow-hidden-expected.png: Added.
* platform/mac/css3/masking/clip-path-circle-overflow-hidden-expected.txt: Added.
* platform/mac/css3/masking/clip-path-circle-relative-overflow-expected.png: Added.
* platform/mac/css3/masking/clip-path-circle-relative-overflow-expected.txt: Added.
* platform/mac/css3/masking/clip-path-ellipse-expected.png: Added.
* platform/mac/css3/masking/clip-path-ellipse-expected.txt: Added.
* platform/mac/css3/masking/clip-path-polygon-evenodd-expected.png: Added.
* platform/mac/css3/masking/clip-path-polygon-evenodd-expected.txt: Added.
* platform/mac/css3/masking/clip-path-polygon-expected.png: Added.
* platform/mac/css3/masking/clip-path-polygon-expected.txt: Added.
* platform/mac/css3/masking/clip-path-polygon-nonzero-expected.png: Added.
* platform/mac/css3/masking/clip-path-polygon-nonzero-expected.txt: Added.
* platform/mac/css3/masking/clip-path-rectangle-expected.png: Added.
* platform/mac/css3/masking/clip-path-rectangle-expected.txt: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127608 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Conflicts:

LayoutTests/ChangeLog
LayoutTests/platform/chromium/TestExpectations
LayoutTests/platform/efl/TestExpectations
Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderBox.h
Source/WebCore/rendering/RenderBoxModelObject.h
Source/WebCore/rendering/RenderInline.h
Source/WebCore/rendering/RenderLayer.cpp
Source/WebCore/rendering/RenderTableRow.h

Change-Id: I66be251285f5966180f4b365fdb8342342d691a0

39 files changed:
LayoutTests/css3/masking/clip-path-circle-filter.html [new file with mode: 0644]
LayoutTests/css3/masking/clip-path-circle-overflow-hidden.html [new file with mode: 0644]
LayoutTests/css3/masking/clip-path-circle-overflow.html [new file with mode: 0644]
LayoutTests/css3/masking/clip-path-circle-relative-overflow.html [new file with mode: 0644]
LayoutTests/css3/masking/clip-path-circle.html [new file with mode: 0644]
LayoutTests/css3/masking/clip-path-ellipse.html [new file with mode: 0644]
LayoutTests/css3/masking/clip-path-polygon-evenodd.html [new file with mode: 0644]
LayoutTests/css3/masking/clip-path-polygon-nonzero.html [new file with mode: 0644]
LayoutTests/css3/masking/clip-path-polygon.html [new file with mode: 0644]
LayoutTests/css3/masking/clip-path-rectangle.html [new file with mode: 0644]
LayoutTests/platform/chromium/TestExpectations
LayoutTests/platform/efl/TestExpectations
LayoutTests/platform/gtk/TestExpectations
LayoutTests/platform/mac/css3/masking/clip-path-circle-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-circle-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-circle-filter-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-circle-filter-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-hidden-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-hidden-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-circle-relative-overflow-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-circle-relative-overflow-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-ellipse-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-ellipse-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-polygon-evenodd-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-polygon-evenodd-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-polygon-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-polygon-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-polygon-nonzero-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-polygon-nonzero-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-rectangle-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/css3/masking/clip-path-rectangle-expected.txt [new file with mode: 0644]
Source/WebCore/rendering/RenderBox.h
Source/WebCore/rendering/RenderBoxModelObject.h
Source/WebCore/rendering/RenderInline.h
Source/WebCore/rendering/RenderLayer.cpp
Source/WebCore/rendering/RenderObject.h
Source/WebCore/rendering/RenderTableRow.h

diff --git a/LayoutTests/css3/masking/clip-path-circle-filter.html b/LayoutTests/css3/masking/clip-path-circle-filter.html
new file mode 100644 (file)
index 0000000..bf5f0c2
--- /dev/null
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<style>
+div {
+    width: 200px;
+    height: 200px;
+    background-color: green;
+    -webkit-filter: blur(5px);
+    -webkit-clip-path: circle(100px, 100px, 90px);
+}
+</style>
+</head>
+<body>
+<div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/clip-path-circle-overflow-hidden.html b/LayoutTests/css3/masking/clip-path-circle-overflow-hidden.html
new file mode 100644 (file)
index 0000000..c326af3
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <style>
+ .parent {
+       width: 200px;
+       height: 200px;
+       overflow: hidden;
+       -webkit-clip-path: circle(100px, 100px, 100px);
+ }
+ .child {
+       height: 400px;
+       width: 200px;
+       margin:0;
+       padding:0;
+       background-color: green;
+ }
+</style>
+</head>
+<body>
+<div class="parent">
+<div class="child"></div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/clip-path-circle-overflow.html b/LayoutTests/css3/masking/clip-path-circle-overflow.html
new file mode 100644 (file)
index 0000000..43ec33e
--- /dev/null
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<style>
+div {
+    width: 200px;
+    height: 200px;
+    background-color: green;
+    border: 20px solid black;
+    -webkit-clip-path: circle(130px, 130px, 130px);
+}
+</style>
+</head>
+<body>
+<div><div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/clip-path-circle-relative-overflow.html b/LayoutTests/css3/masking/clip-path-circle-relative-overflow.html
new file mode 100644 (file)
index 0000000..21dfeda
--- /dev/null
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<style>
+div {
+    width: 200px;
+    height: 200px;
+    background-color: green;
+    border: 20px solid black;
+    -webkit-clip-path: circle(50%, 50%, 50%);
+}
+</style>
+</head>
+<body>
+<div><div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/clip-path-circle.html b/LayoutTests/css3/masking/clip-path-circle.html
new file mode 100644 (file)
index 0000000..16ce4fe
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<style>
+div {
+    width: 200px;
+    height: 200px;
+    background-color: green;
+    -webkit-clip-path: circle(100px, 100px, 100px);
+}
+</style>
+</head>
+<body>
+<div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/clip-path-ellipse.html b/LayoutTests/css3/masking/clip-path-ellipse.html
new file mode 100644 (file)
index 0000000..eabb993
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<style>
+div {
+    width: 200px;
+    height: 200px;
+    background-color: green;
+    -webkit-clip-path: ellipse(100px, 100px, 100px, 75px);
+}
+</style>
+</head>
+<body>
+<div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/clip-path-polygon-evenodd.html b/LayoutTests/css3/masking/clip-path-polygon-evenodd.html
new file mode 100644 (file)
index 0000000..2736bd0
--- /dev/null
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<style>
+div {
+    width: 200px;
+    height: 200px;
+
+    background-color: green;
+    -webkit-clip-path: polygon(evenodd, 10px 75px, 180px 180px, 100px 10px, 10px 180px, 180px 75px, 10px 75px);
+}
+</style>
+</head>
+<body>
+<div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/clip-path-polygon-nonzero.html b/LayoutTests/css3/masking/clip-path-polygon-nonzero.html
new file mode 100644 (file)
index 0000000..aa1a4e8
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<style>
+div {
+    width: 200px;
+    height: 200px;
+    background-color: green;
+    -webkit-clip-path: polygon(nonzero, 10px 75px, 180px 180px, 100px 10px, 10px 180px, 180px 75px, 10px 75px);
+}
+</style>
+</head>
+<body>
+<div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/clip-path-polygon.html b/LayoutTests/css3/masking/clip-path-polygon.html
new file mode 100644 (file)
index 0000000..ee333b0
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<style>
+div {
+    width: 200px;
+    height: 200px;
+    background-color: green;
+    -webkit-clip-path: polygon(10px 75px, 180px 180px, 100px 10px, 10px 180px, 180px 75px, 10px 75px);
+}
+</style>
+</head>
+<body>
+<div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/masking/clip-path-rectangle.html b/LayoutTests/css3/masking/clip-path-rectangle.html
new file mode 100644 (file)
index 0000000..df869dd
--- /dev/null
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<style>
+div {
+    width: 180px;
+    height: 180px;
+    background-color: green;
+    border: 10px solid black;
+    -webkit-clip-path: rectangle(0, 0, 200px, 200px, 100px, 100px);
+}
+</style>
+</head>
+<body>
+<div>
+</body>
+</html>
\ No newline at end of file
index 9f36272..26cb716 100644 (file)
@@ -3643,3 +3643,269 @@ BUGWK92570 WIN DEBUG : inspector/timeline/timeline-network-received-data.html =
 BUGWK92570 WIN DEBUG : inspector/timeline/timeline-start-time.html = TEXT PASS TIMEOUT
 
 BUGCR139493 DEBUG : media/track/track-cues-sorted-before-dispatch.html = PASS CRASH
+
+// Supposedly started failing between CR r140760 and CR r141216.  The failures
+// look like they involve antialiasing; the fact that the test clearly expects
+// these pixels not to be antialiased means these shouldn't just be rebaselined
+// blindly.
+BUGCR131189 : canvas/philip/tests/2d.line.width.basic.html = TEXT
+BUGCR131189 : canvas/philip/tests/2d.line.width.transformed.html = TEXT
+BUGCR131189 : canvas/philip/tests/2d.transformation.setTransform.skewed.html = TEXT
+BUGCR131189 : canvas/philip/tests/2d.transformation.transform.skewed.html = TEXT
+BUGCR131189 : platform/chromium/virtual/gpu/canvas/philip/tests/2d.transformation.setTransform.skewed.html = TEXT
+BUGCR131189 : platform/chromium/virtual/gpu/canvas/philip/tests/2d.transformation.transform.skewed.html = TEXT
+
+BUGWK92835 MAC WIN ANDROID DEBUG SLOW : svg/as-background-image/svg-as-background-5.html = PASS
+
+BUGWK92850 LINUX ANDROID DEBUG : http/tests/websocket/tests/hybi/workers/close-code-and-reason.html = PASS CRASH
+
+BUGWK92938 : compositing/layer-creation/animation-overlap-with-children.html = TEXT PASS
+
+BUGWK92941 WIN MAC : accessibility/loading-iframe-updates-axtree.html = CRASH PASS
+
+// Tests added by bug 76270. According to bug 92968, they should be skipped in Chromium.
+BUGWK92968 SKIP : http/tests/appcache/abort-cache-onchecking-manifest-404.html = PASS
+BUGWK92968 SKIP : http/tests/appcache/abort-cache-onchecking-resource-404.html = PASS
+BUGWK92968 SKIP : http/tests/appcache/abort-cache-ondownloading-resource-404.html = PASS
+BUGWK92968 SKIP : http/tests/appcache/abort-cache-onchecking.html = PASS
+BUGWK92968 SKIP : http/tests/appcache/abort-cache-ondownloading.html = PASS
+BUGWK92968 SKIP : http/tests/appcache/abort-cache-onprogress.html = PASS
+
+// Fails due to Bug 85856.
+BUGWK85856 : fast/block/float/028.html = TEXT IMAGE IMAGE+TEXT
+BUGWK85856 : fast/block/float/026.html = TEXT IMAGE IMAGE+TEXT
+BUGWK85856 : fast/overflow/unreachable-overflow-rtl-bug.html = TEXT IMAGE IMAGE+TEXT
+BUGWK85856 : scrollbars/rtl/div-absolute.html = TEXT
+BUGWK85856 : scrollbars/rtl/div-horizontal.html = TEXT
+
+// Bug 93148 changed this to a testRunner test and it started timing out on Mac.
+BUGWK93148 MAC : fast/css/nested-layers-with-hover.html = TIMEOUT
+
+BUGWK93247 DEBUG : fast/lists/list-marker-remove-crash.html = CRASH
+
+BUGWK93565 DEBUG : fast/dom/Document/document-reopen.html = PASS TEXT
+BUGWK93566 DEBUG : fast/parser/iframe-sets-parent-to-javascript-url.html = PASS TEXT
+BUGWK93567 DEBUG : fast/parser/javascript-url-compat-mode.html = PASS TEXT
+BUGWK93569 DEBUG : http/tests/navigation/lockedhistory-iframe.html = PASS TIMEOUT TEXT
+BUGWK93568 DEBUG : http/tests/misc/window-dot-stop.html = PASS TEXT
+
+// V8 does not support static attributes
+BUGWK93488 SKIP : fast/notifications/notifications-permission.html = TEXT
+
+// Flaky
+BUGWK93799 MAC : fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html = PASS IMAGE
+BUGWK93799 MAC : fast/dom/HTMLMeterElement/meter-element.html = PASS IMAGE
+BUGWK93799 MAC : fast/dom/HTMLMeterElement/meter-optimums.html = PASS IMAGE
+BUGWK93799 MAC : fast/dom/HTMLMeterElement/meter-styles.html = PASS IMAGE
+
+BUGWK93801 LION : fast/speech/input-appearance-searchandspeech.html = PASS IMAGE
+
+// This was fixed in V8 3.13.0, but the V8 roll to 3.13.0 was reverted :(
+BUGWK75468 : fast/js/kde/GlobalObject.html = TEXT
+
+// Flaky
+BUGWK93938 DEBUG : fast/forms/range/slider-delete-while-dragging-thumb.html = PASS TEXT
+BUGWK93938 LION RELEASE : fast/forms/range/slider-delete-while-dragging-thumb.html = PASS TEXT
+BUGWK93938 DEBUG : fast/forms/range/slider-mouse-events.html = PASS TEXT
+BUGWK93938 LION RELEASE : fast/forms/range/slider-mouse-events.html = PASS TEXT
+BUGWK93938 WIN LINUX DEBUG : fast/forms/range/slider-onchange-event.html = PASS TEXT
+
+// Require rebaselining after  https://bugs.webkit.org/show_bug.cgi?id=89826
+BUGWK89826 MAC WIN : fast/css/word-space-extra.html = IMAGE+TEXT
+
+BUGWK94002 WIN7 : inspector/debugger = PASS TIMEOUT
+
+// Added by bug 89826
+BUGWK94008 MAC WIN : fast/css/word-spacing-characters.html = IMAGE
+BUGWK94003 MAC WIN : fast/css/word-spacing-characters-complex-text.html = IMAGE
+
+BUGWK94010 DEBUG : fast/regex/unicodeCaseInsensitive.html = PASS CRASH
+BUGWK94017 WIN : css2.1/20110323/c541-word-sp-000.htm = IMAGE
+
+BUGWK94059 DEBUG : editing/selection/move-by-line-001.html = PASS TEXT
+BUGWK94059 LION RELEASE : editing/selection/move-by-line-001.html = PASS TEXT
+
+BUGWK94060 LINUX : fast/dom/Window/dom-access-from-closure-window.html = PASS TEXT
+
+BUGWK94063 LION : fast/css/nested-rounded-corners.html = IMAGE+TEXT
+
+BUGWK94078 WIN RELEASE : http/tests/inspector/web-socket-frame-error.html = PASS TEXT
+
+BUGWK94256 DEBUG : fast/block/inline-children-root-linebox-crash.html = PASS CRASH
+
+// Following tests need baselines on Win and Linux 
+BUGWK94492 WIN LINUX : css3/filters/custom/custom-filter-color-matrix.html = PASS IMAGE IMAGE+TEXT TEXT MISSING
+BUGWK94492 WIN LINUX : css3/filters/custom/custom-filter-composite-source-atop.html = PASS IMAGE IMAGE+TEXT TEXT MISSING
+
+// Flaky
+BUGWK95246 : http/tests/security/mixedContent/filesystem-url-in-iframe.html = PASS TEXT
+
+BUGWK95581 : http/tests/xmlhttprequest/zero-length-response.html = TIMEOUT PASS
+BUGWK95581 : http/tests/misc/javascript-url-stop-loaders.html = TIMEOUT PASS
+
+BUGWK94261 DEBUG : http/tests/inspector/indexeddb/resources-panel.html = PASS CRASH TIMEOUT
+
+// ENABLE_OVERFLOW_SCROLLING is not currently enabled in Chromium.
+BUGWK94353 : compositing/overflow/scrolling-content-clip-to-viewport.html = TEXT
+BUGWK94353 : compositing/overflow/textarea-scroll-touch.html = TEXT
+// Failing on Linux (Content Shell) only now
+BUGWK94353 LINUX ANDROID : compositing/overflow/nested-scrolling.html = IMAGE+TEXT PASS
+BUGWK94353 : compositing/overflow/overflow-auto-with-touch.html = TEXT
+BUGWK94353 : compositing/overflow/overflow-overlay-with-touch.html = TEXT
+
+BUGWK90488 SLOW WIN : http/tests/inspector/network-preflight-options.html = PASS
+
+BUGWK94501 WIN : http/tests/inspector/resource-tree/resource-tree-invalid-mime-type-css-content.html = PASS TEXT
+BUGWK94501 WIN LINUX : http/tests/inspector/resource-tree/resource-tree-frame-navigate.html = PASS TEXT
+
+BUGWK94521 LINUX : fast/loader/loadInProgress.html = PASS CRASH
+
+BUGWK94528 MAC : fast/text-autosizing/nested-em-line-height.html = PASS IMAGE
+
+BUGWK94532 LINUX : fast/forms/formmethod-attribute-button-html.html = PASS MISSING
+
+BUGWK94660 : fast/js/create-lots-of-workers.html = PASS CRASH TIMEOUT
+BUGWK95366 DEBUG : css3/flexbox/flexitem-stretch-image.html = TEXT PASS
+
+BUGCR67540 BUGWK94735 LINUX : fast/text/emphasis-overlap.html = IMAGE IMAGE+TEXT
+
+BUGWK95167 : fast/overflow/paged-x-with-column-gap.html = IMAGE IMAGE+TEXT TEXT MISSING
+BUGWK95167 : fast/overflow/paged-x-div-with-column-gap.html = IMAGE IMAGE+TEXT TEXT MISSING
+
+BUGWK94793 : http/tests/notifications/event-listener-crash.html = TEXT PASS
+
+// Failing tests because Android has different implementation of HTML controls.
+BUGCR144536 WONTFIX ANDROID : editing/selection/context-menu-on-text.html = TEXT
+BUGCR144536 WONTFIX ANDROID : editing/selection/context-menu-text-selection.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/dom/HTMLSelectElement/select-selectedOptions.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/events/select-element.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/listbox-clip.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/listbox-deselect-scroll.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/listbox-onchange.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/listbox-select-all.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/listbox-selection.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/listbox-selection-2.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/listbox-typeahead-scroll.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/option-mouseevents.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select-cache-desynchronization.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select-clientheight-large-size.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select-clientheight-with-multiple-attr.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select-item-background-clip.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select-listbox-multiple-no-focusring.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select-live-pseudo-selectors.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select-multiple-elements-with-mouse-drag-with-options-less-than-size.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select-multiple-elements-with-mouse-drag.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select/listbox-drag-in-non-multiple.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select/listbox-in-multi-column.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select/option-selecting.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select/optgroup-clicking.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/forms/select/optgroup-rendering.html = TEXT
+BUGCR144536 WONTFIX ANDROID : fast/repaint/select-option-background-color.html = TEXT
+BUGCR144536 WONTFIX ANDROID : scrollbars/custom-scrollbar-with-incomplete-style.html = TEXT
+BUGCR144536 WONTFIX ANDROID : scrollbars/listbox-scrollbar-combinations.html = TEXT
+
+// Failing tests with 2d canvas acceleration.
+BUGCR145084 ANDROID : platform/chromium/virtual/gpu/canvas/philip = PASS TEXT
+BUGCR145084 ANDROID : platform/chromium/virtual/gpu/fast/canvas = PASS TEXT TIMEOUT
+
+// Failing compositing tests.
+BUGCR145087 ANDROID : compositing/geometry/fixed-position-composited-switch.html = TEXT
+BUGCR145087 ANDROID : compositing/geometry/limit-layer-bounds-opacity-transition.html = TEXT
+BUGCR145087 ANDROID : compositing/reflections/nested-reflection-animated.html = TEXT PASS
+BUGCR145087 ANDROID : compositing/rtl/rtl-fixed-overflow-scrolled.html = TEXT PASS
+BUGCR145087 ANDROID : compositing/rtl/rtl-fixed-overflow.html = TEXT PASS
+BUGCR145087 ANDROID : compositing/rtl/rtl-fixed.html = TEXT PASS
+BUGCR145087 ANDROID : compositing/rtl/rtl-iframe-fixed-overflow-scrolled.html = TEXT PASS
+BUGCR145087 ANDROID : compositing/rtl/rtl-iframe-fixed-overflow.html = TEXT PASS
+BUGCR145087 ANDROID : compositing/rtl/rtl-iframe-fixed.html = TEXT PASS
+
+// Failing media tests on Android.
+BUGCR145590 ANDROID : fullscreen/video-controls-drag.html = TIMEOUT
+BUGCR145590 ANDROID : fullscreen/video-controls-override.html = TIMEOUT
+BUGCR145590 ANDROID : fullscreen/video-controls-timeline.html = TIMEOUT
+BUGCR145590 ANDROID : fullscreen/video-specified-size.html = TIMEOUT
+BUGCR145590 ANDROID : http/tests/appcache/video.html = TEXT
+BUGCR145590 ANDROID : http/tests/media/media-source/video-media-source-abort.html = TIMEOUT
+BUGCR145590 ANDROID : http/tests/media/media-source/video-media-source-add-and-remove-buffers.html = TIMEOUT
+BUGCR145590 ANDROID : http/tests/media/media-source/video-media-source-async-events.html = TIMEOUT
+BUGCR145590 ANDROID : http/tests/media/media-source/video-media-source-errors.html = TIMEOUT
+BUGCR145590 ANDROID : http/tests/media/media-source/video-media-source-event-attributes.html = TIMEOUT
+BUGCR145590 ANDROID : http/tests/media/media-source/video-media-source-objects.html = TIMEOUT
+BUGCR145590 ANDROID : http/tests/media/media-source/video-media-source-play.html = TEXT
+BUGCR145590 ANDROID : http/tests/media/media-source/video-media-source-seek.html = TEXT
+BUGCR145590 ANDROID : http/tests/media/media-source/video-media-source-sourcebufferlist-crash.html = TIMEOUT
+BUGCR145590 ANDROID : http/tests/media/media-source/video-media-source-state-changes.html = TEXT
+BUGCR145590 ANDROID : http/tests/media/pdf-served-as-pdf.html = TEXT
+BUGCR145590 ANDROID : http/tests/media/text-served-as-text.html = TEXT
+BUGCR145590 ANDROID : http/tests/media/video-error-abort.html = TEXT
+BUGCR145590 ANDROID : http/tests/media/video-load-suspend.html = TIMEOUT
+BUGCR145590 ANDROID : http/tests/media/video-play-stall-before-meta-data.html = TEXT
+BUGCR145590 ANDROID : http/tests/media/video-throttled-load-metadata.html = TEXT
+BUGCR145590 ANDROID : http/tests/security/mixedContent/insecure-audio-video-in-main-frame.html = TEXT
+BUGCR145590 ANDROID : http/tests/security/video-cross-origin-readback.html = TEXT
+BUGCR145590 ANDROID : media/W3C/video/canPlayType/canPlayType_two_implies_one_5.html = TEXT
+BUGCR145590 ANDROID : media/W3C/video/canPlayType/canPlayType_two_implies_one_6.html = TEXT
+BUGCR145590 ANDROID : media/audio-data-url.html = TEXT
+BUGCR145590 ANDROID : media/audio-repaint.html = TEXT TIMEOUT
+BUGCR145590 ANDROID : media/encrypted-media/encrypted-media-events.html = TIMEOUT
+BUGCR145590 ANDROID : media/encrypted-media/encrypted-media-not-loaded.html = TEXT
+BUGCR145590 ANDROID : media/encrypted-media/encrypted-media-syntax.html = TEXT
+BUGCR145590 ANDROID : media/track/track-default-attribute.html = TIMEOUT PASS
+BUGCR145590 ANDROID : media/video-aspect-ratio.html = TEXT // 8 videos
+BUGCR145590 ANDROID : media/video-buffered.html = TEXT
+BUGCR145590 ANDROID : media/video-canvas-source.html = TEXT
+BUGCR145590 ANDROID : media/video-error-does-not-exist.html = TEXT
+BUGCR145590 ANDROID : media/video-source-error-no-candidate.html = TIMEOUT PASS
+BUGCR145590 ANDROID : media/video-source-type-params.html = TEXT
+BUGCR145590 ANDROID : platform/chromium/compositing/video-frame-size-change.html = TIMEOUT
+BUGCR145590 ANDROID : platform/chromium/media/video-frame-size-change.html = TIMEOUT
+
+BUGWK89167 : media/track/track-cue-rendering-snap-to-lines-not-set.html = TEXT PASS
+
+BUGWK95588 MAC : fast/dom/shadow/shadowdom-for-textarea-complex-shadow.html = IMAGE
+
+BUGWK95070 LINUX DEBUG : inspector/styles/media-queries.html = TEXT
+BUGWK95070 WIN LINUX RELEASE : inspector/styles/media-queries.html = PASS TEXT
+
+BUGWK95101 SNOWLEOPARD : fast/text/atsui-bidi-control.html = PASS TIMEOUT
+
+// Failing due to sub-pixel layout.
+BUGWK95136 : fast/css/sticky/sticky-left-percentage.html = IMAGE
+BUGWK95136 WIN LINUX : fast/css/sticky/sticky-writing-mode-vertical-lr.html = IMAGE
+BUGWK95136 : fast/css/sticky/sticky-writing-mode-vertical-rl.html = IMAGE
+
+BUGWK95617 : fast/js/function-constructor-this-value.html = PASS TEXT
+
+//Require rebaseline after https://bugs.webkit.org/show_bug.cgi?id=80394
+BUGWK80394 MAC WIN : fast/block/margin-collapse/empty-clear-blocks.html = IMAGE+TEXT
+BUGWK80394 MAC WIN : fast/block/float/024.html = IMAGE+TEXT
+BUGWK80394 MAC WIN : fast/block/margin-collapse/025.html = TEXT
+BUGWK80394 MAC WIN : fast/block/margin-collapse/block-inside-inline/025.html = TEXT
+
+// Following tests need baselines on Mac, Win and Linux  
+BUGWK95646 MAC WIN LINUX : css3/masking/clip-path-circle.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 MAC WIN LINUX : css3/masking/clip-path-ellipse.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 MAC WIN LINUX : css3/masking/clip-path-rectangle.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 MAC WIN LINUX : css3/masking/clip-path-polygon.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 MAC WIN LINUX : css3/masking/clip-path-polygon-evenodd.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 MAC WIN LINUX : css3/masking/clip-path-polygon-nonzero.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 MAC WIN LINUX : css3/masking/clip-path-circle-filter.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 MAC WIN LINUX : css3/masking/clip-path-circle-overflow.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 MAC WIN LINUX : css3/masking/clip-path-circle-relative-overflow.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 MAC WIN LINUX : css3/masking/clip-path-circle-overflow-hidden.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+
+// Does not yet support new web notifications TestRunner API
+BUGWK95506 SKIP : http/tests/notifications = PASS
+
+// The test font doesn't contain the glyph that Android uses to detect Arabic.
+BUGCR146399 ANDROID : platform/chromium-linux/fast/text/international/arabic-vertical-offset.html = TEXT
+
+// Ref tests produce little image difference on Android.
+BUGCR146401 ANDROID : css3/filters/custom/effect-custom-transform-parameters.html = IMAGE
+BUGCR146401 ANDROID : css3/filters/custom/filter-fallback-to-software.html = IMAGE
+BUGCR146401 ANDROID : fast/css/sticky/sticky-writing-mode-vertical-lr.html = IMAGE
+
+// Started failing after r127457
+BUGWK95799 MAC : touchadjustment/iframe-boundary.html = TEXT
+
+>>>>>>> 49391c0... Use -webkit-clip-path shapes to clip HTML elements
index 006fc4d..f4c6def 100644 (file)
@@ -800,3 +800,15 @@ BUGWK92063 : fast/css/sticky/parsing-position-sticky.html = TEXT
 
 // This test depends on subpixel layout.
 BUGWK92352 : css3/flexbox/flex-rounding.html = TEXT
+
+// Following tests need baselines
+BUGWK95646 : css3/masking/clip-path-circle.html = MISSING 
+BUGWK95646 : css3/masking/clip-path-ellipse.html = MISSING 
+BUGWK95646 : css3/masking/clip-path-rectangle.html = MISSING 
+BUGWK95646 : css3/masking/clip-path-polygon.html = MISSING 
+BUGWK95646 : css3/masking/clip-path-polygon-evenodd.html = MISSING 
+BUGWK95646 : css3/masking/clip-path-polygon-nonzero.html = MISSING 
+BUGWK95646 : css3/masking/clip-path-circle-filter.html = MISSING 
+BUGWK95646 : css3/masking/clip-path-circle-overflow.html = MISSING 
+BUGWK95646 : css3/masking/clip-path-circle-relative-overflow.html = MISSING 
+BUGWK95646 : css3/masking/clip-path-circle-overflow-hidden.html = MISSING 
index 02486e6..200cca4 100644 (file)
@@ -1262,6 +1262,18 @@ BUGWK92352 : css3/flexbox/flex-rounding.html = TEXT
 
 BUGWK92477 : platform/gtk/accessibility/object-with-title.html = TEXT
 
+// Following tests need baselines
+BUGWK95646 : css3/masking/clip-path-circle.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 : css3/masking/clip-path-ellipse.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 : css3/masking/clip-path-rectangle.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 : css3/masking/clip-path-polygon.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 : css3/masking/clip-path-polygon-evenodd.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 : css3/masking/clip-path-polygon-nonzero.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 : css3/masking/clip-path-circle-filter.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 : css3/masking/clip-path-circle-overflow.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 : css3/masking/clip-path-circle-relative-overflow.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+BUGWK95646 : css3/masking/clip-path-circle-overflow-hidden.html = PASS IMAGE IMAGE+TEXT TEXT MISSING 
+
 //////////////////////////////////////////////////////////////////////////////////////////
 // End of Tests failing
 //////////////////////////////////////////////////////////////////////////////////////////
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-circle-expected.png b/LayoutTests/platform/mac/css3/masking/clip-path-circle-expected.png
new file mode 100644 (file)
index 0000000..48b07b8
Binary files /dev/null and b/LayoutTests/platform/mac/css3/masking/clip-path-circle-expected.png differ
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-circle-expected.txt b/LayoutTests/platform/mac/css3/masking/clip-path-circle-expected.txt
new file mode 100644 (file)
index 0000000..5146ce4
--- /dev/null
@@ -0,0 +1,7 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x216
+  RenderBlock {HTML} at (0,0) size 800x216
+    RenderBody {BODY} at (8,8) size 784x200
+layer at (8,8) size 200x200
+  RenderBlock {DIV} at (0,0) size 200x200 [bgcolor=#008000]
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-circle-filter-expected.png b/LayoutTests/platform/mac/css3/masking/clip-path-circle-filter-expected.png
new file mode 100644 (file)
index 0000000..599c33c
Binary files /dev/null and b/LayoutTests/platform/mac/css3/masking/clip-path-circle-filter-expected.png differ
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-circle-filter-expected.txt b/LayoutTests/platform/mac/css3/masking/clip-path-circle-filter-expected.txt
new file mode 100644 (file)
index 0000000..5146ce4
--- /dev/null
@@ -0,0 +1,7 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x216
+  RenderBlock {HTML} at (0,0) size 800x216
+    RenderBody {BODY} at (8,8) size 784x200
+layer at (8,8) size 200x200
+  RenderBlock {DIV} at (0,0) size 200x200 [bgcolor=#008000]
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-expected.png b/LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-expected.png
new file mode 100644 (file)
index 0000000..0037321
Binary files /dev/null and b/LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-expected.png differ
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-expected.txt b/LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-expected.txt
new file mode 100644 (file)
index 0000000..7f7791e
--- /dev/null
@@ -0,0 +1,9 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x256
+  RenderBlock {HTML} at (0,0) size 800x256
+    RenderBody {BODY} at (8,8) size 784x240
+layer at (8,8) size 240x240
+  RenderBlock {DIV} at (0,0) size 240x240 [bgcolor=#008000] [border: (20px solid #000000)]
+layer at (28,28) size 240x240
+  RenderBlock {DIV} at (20,20) size 240x240 [border: (20px solid #000000)]
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-hidden-expected.png b/LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-hidden-expected.png
new file mode 100644 (file)
index 0000000..48b07b8
Binary files /dev/null and b/LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-hidden-expected.png differ
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-hidden-expected.txt b/LayoutTests/platform/mac/css3/masking/clip-path-circle-overflow-hidden-expected.txt
new file mode 100644 (file)
index 0000000..f3bac43
--- /dev/null
@@ -0,0 +1,8 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x216
+  RenderBlock {HTML} at (0,0) size 800x216
+    RenderBody {BODY} at (8,8) size 784x200
+layer at (8,8) size 200x200 scrollHeight 400
+  RenderBlock {DIV} at (0,0) size 200x200
+    RenderBlock {DIV} at (0,0) size 200x400 [bgcolor=#008000]
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-circle-relative-overflow-expected.png b/LayoutTests/platform/mac/css3/masking/clip-path-circle-relative-overflow-expected.png
new file mode 100644 (file)
index 0000000..a23a5e7
Binary files /dev/null and b/LayoutTests/platform/mac/css3/masking/clip-path-circle-relative-overflow-expected.png differ
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-circle-relative-overflow-expected.txt b/LayoutTests/platform/mac/css3/masking/clip-path-circle-relative-overflow-expected.txt
new file mode 100644 (file)
index 0000000..7f7791e
--- /dev/null
@@ -0,0 +1,9 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x256
+  RenderBlock {HTML} at (0,0) size 800x256
+    RenderBody {BODY} at (8,8) size 784x240
+layer at (8,8) size 240x240
+  RenderBlock {DIV} at (0,0) size 240x240 [bgcolor=#008000] [border: (20px solid #000000)]
+layer at (28,28) size 240x240
+  RenderBlock {DIV} at (20,20) size 240x240 [border: (20px solid #000000)]
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-ellipse-expected.png b/LayoutTests/platform/mac/css3/masking/clip-path-ellipse-expected.png
new file mode 100644 (file)
index 0000000..fb9a606
Binary files /dev/null and b/LayoutTests/platform/mac/css3/masking/clip-path-ellipse-expected.png differ
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-ellipse-expected.txt b/LayoutTests/platform/mac/css3/masking/clip-path-ellipse-expected.txt
new file mode 100644 (file)
index 0000000..5146ce4
--- /dev/null
@@ -0,0 +1,7 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x216
+  RenderBlock {HTML} at (0,0) size 800x216
+    RenderBody {BODY} at (8,8) size 784x200
+layer at (8,8) size 200x200
+  RenderBlock {DIV} at (0,0) size 200x200 [bgcolor=#008000]
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-polygon-evenodd-expected.png b/LayoutTests/platform/mac/css3/masking/clip-path-polygon-evenodd-expected.png
new file mode 100644 (file)
index 0000000..4cb538c
Binary files /dev/null and b/LayoutTests/platform/mac/css3/masking/clip-path-polygon-evenodd-expected.png differ
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-polygon-evenodd-expected.txt b/LayoutTests/platform/mac/css3/masking/clip-path-polygon-evenodd-expected.txt
new file mode 100644 (file)
index 0000000..5146ce4
--- /dev/null
@@ -0,0 +1,7 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x216
+  RenderBlock {HTML} at (0,0) size 800x216
+    RenderBody {BODY} at (8,8) size 784x200
+layer at (8,8) size 200x200
+  RenderBlock {DIV} at (0,0) size 200x200 [bgcolor=#008000]
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-polygon-expected.png b/LayoutTests/platform/mac/css3/masking/clip-path-polygon-expected.png
new file mode 100644 (file)
index 0000000..5b77f05
Binary files /dev/null and b/LayoutTests/platform/mac/css3/masking/clip-path-polygon-expected.png differ
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-polygon-expected.txt b/LayoutTests/platform/mac/css3/masking/clip-path-polygon-expected.txt
new file mode 100644 (file)
index 0000000..5146ce4
--- /dev/null
@@ -0,0 +1,7 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x216
+  RenderBlock {HTML} at (0,0) size 800x216
+    RenderBody {BODY} at (8,8) size 784x200
+layer at (8,8) size 200x200
+  RenderBlock {DIV} at (0,0) size 200x200 [bgcolor=#008000]
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-polygon-nonzero-expected.png b/LayoutTests/platform/mac/css3/masking/clip-path-polygon-nonzero-expected.png
new file mode 100644 (file)
index 0000000..5b77f05
Binary files /dev/null and b/LayoutTests/platform/mac/css3/masking/clip-path-polygon-nonzero-expected.png differ
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-polygon-nonzero-expected.txt b/LayoutTests/platform/mac/css3/masking/clip-path-polygon-nonzero-expected.txt
new file mode 100644 (file)
index 0000000..5146ce4
--- /dev/null
@@ -0,0 +1,7 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x216
+  RenderBlock {HTML} at (0,0) size 800x216
+    RenderBody {BODY} at (8,8) size 784x200
+layer at (8,8) size 200x200
+  RenderBlock {DIV} at (0,0) size 200x200 [bgcolor=#008000]
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-rectangle-expected.png b/LayoutTests/platform/mac/css3/masking/clip-path-rectangle-expected.png
new file mode 100644 (file)
index 0000000..25c9d06
Binary files /dev/null and b/LayoutTests/platform/mac/css3/masking/clip-path-rectangle-expected.png differ
diff --git a/LayoutTests/platform/mac/css3/masking/clip-path-rectangle-expected.txt b/LayoutTests/platform/mac/css3/masking/clip-path-rectangle-expected.txt
new file mode 100644 (file)
index 0000000..7b18c99
--- /dev/null
@@ -0,0 +1,7 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x216
+  RenderBlock {HTML} at (0,0) size 800x216
+    RenderBody {BODY} at (8,8) size 784x200
+layer at (8,8) size 200x200
+  RenderBlock {DIV} at (0,0) size 200x200 [bgcolor=#008000] [border: (10px solid #000000)]
index 7b22415..1c4aaa6 100644 (file)
@@ -42,7 +42,9 @@ public:
     RenderBox(Node*);
     virtual ~RenderBox();
 
-    virtual bool requiresLayer() const OVERRIDE { return isRoot() || isOutOfFlowPositioned() || isRelPositioned() || isTransparent() || hasOverflowClip() || hasTransform() || hasHiddenBackface() || hasMask() || hasReflection() || hasFilter() || style()->specifiesColumns(); }
+    // hasAutoZIndex only returns true if the element is positioned or a flex-item since
+    // position:static elements that are not flex-items get their z-index coerced to auto.
+    virtual bool requiresLayer() const OVERRIDE { return isRoot() || isOutOfFlowPositioned() || isRelPositioned() || isTransparent() || hasClipPath() || hasOverflowClip() || hasTransform() || hasHiddenBackface() || hasMask() || hasReflection() || hasFilter() || style()->specifiesColumns(); }
 
     // Use this with caution! No type checking is done!
     RenderBox* firstChildBox() const;
index 067f604..89ddea0 100644 (file)
@@ -80,7 +80,8 @@ public:
 
     bool hasSelfPaintingLayer() const;
     RenderLayer* layer() const { return m_layer; }
-    virtual bool requiresLayer() const { return isRoot() || isOutOfFlowPositioned() || isRelPositioned() || isTransparent() || hasTransform() || hasHiddenBackface() || hasMask() || hasReflection() || hasFilter() || style()->specifiesColumns(); }
+    
+    virtual bool requiresLayer() const { return isRoot() || isOutOfFlowPositioned() || isRelPositioned() || isTransparent() || hasClipPath() || hasTransform() || hasHiddenBackface() || hasMask() || hasReflection() || hasFilter() || style()->specifiesColumns(); }
 
     // This will work on inlines to return the bounding box of all of the lines' border boxes.
     virtual IntRect borderBoundingBox() const = 0;
index a8cc2f1..bb03213 100644 (file)
@@ -124,7 +124,7 @@ private:
 
     virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestPoint& pointInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) OVERRIDE;
 
-    virtual bool requiresLayer() const { return isRelPositioned() || isTransparent() || hasMask() || hasFilter(); }
+    virtual bool requiresLayer() const { return isRelPositioned() || isTransparent() || hasClipPath() || hasMask() || hasFilter(); }
 
     virtual LayoutUnit offsetLeft() const;
     virtual LayoutUnit offsetTop() const;
index a7f88a4..b21d8d3 100755 (executable)
@@ -3133,6 +3133,18 @@ void RenderLayer::paintLayerContents(RenderLayer* rootLayer, GraphicsContext* co
     // Ensure our lists are up-to-date.
     updateLayerListsIfNeeded();
 
+    // Apply clip-path to context.
+    RenderStyle* style = renderer()->style();
+    if (renderer()->hasClipPath() && !context->paintingDisabled() && style) {
+        if (BasicShape* clipShape = style->clipPath()) {
+            // FIXME: Investigate if it is better to store and update a Path object in RenderStyle.
+            // https://bugs.webkit.org/show_bug.cgi?id=95619
+            Path clipPath;
+            clipShape->path(clipPath, calculateLayerBounds(this, rootLayer, 0));
+            transparencyLayerContext->clipPath(clipPath, clipShape->windRule());
+        }
+    }
+
 #if ENABLE(CSS_FILTERS)
     FilterEffectRendererHelper filterPainter(filterRenderer() && paintsWithFilters());
     if (filterPainter.haveFilterEffect() && !context->paintingDisabled()) {
@@ -4912,6 +4924,10 @@ bool RenderLayer::shouldBeNormalFlowOnly() const
             && !renderer()->isOutOfFlowPositioned()
             && !renderer()->isRelPositioned()
             && !renderer()->hasTransform()
+            && !renderer()->hasClipPath()
+#if ENABLE(CSS_FILTERS)
+            && !renderer()->hasFilter()
+#endif
             && !isTransparent()
 #if ENABLE(TIZEN_CSS_OVERFLOW_SCROLL_ACCELERATION)
             && !hasAcceleratedTouchScrolling()
index a1d7a32..eaa8035 100755 (executable)
@@ -546,6 +546,7 @@ public:
 
     bool hasTransform() const { return m_bitfields.hasTransform(); }
     bool hasMask() const { return style() && style()->hasMask(); }
+    bool hasClipPath() const { return style() && style()->clipPath(); }
     bool hasHiddenBackface() const { return style() && style()->backfaceVisibility() == BackfaceVisibilityHidden; }
 
 #if ENABLE(CSS_FILTERS)
index afa838c..081eacf 100644 (file)
@@ -97,7 +97,7 @@ private:
     virtual LayoutRect clippedOverflowRectForRepaint(RenderBoxModelObject* repaintContainer) const;
     virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestPoint& pointInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) OVERRIDE;
 
-    virtual bool requiresLayer() const OVERRIDE { return isTransparent() || hasOverflowClip() || hasTransform() || hasHiddenBackface() || hasMask() || hasFilter(); }
+    virtual bool requiresLayer() const OVERRIDE { return isTransparent() || hasClipPath() || hasOverflowClip() || hasTransform() || hasHiddenBackface() || hasMask() || hasFilter(); }
 
     virtual void paint(PaintInfo&, const LayoutPoint&);