Diff
Modified: trunk/LayoutTests/ChangeLog (111499 => 111500)
--- trunk/LayoutTests/ChangeLog 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/LayoutTests/ChangeLog 2012-03-21 05:12:51 UTC (rev 111500)
@@ -1,3 +1,31 @@
+2012-03-19 Shinya Kawanaka <[email protected]>
+
+ [Crash] RenderMenuList::addChild() in Shadow DOM.
+ https://bugs.webkit.org/show_bug.cgi?id=81201
+
+ Reviewed by Dimitri Glazkov.
+
+ Skipped these tests in non-chromium port since SHADOW_DOM flag is not enabled.
+
+ Marked 2 new tests FAIL. Their behavior is affected by this patch, but this patch
+ won't fix them completely. They have another bugs. See Bug 81310 and Bug 81311.
+
+ * fast/dom/shadow/content-element-in-media-element-expected.txt: Added.
+ * fast/dom/shadow/content-element-in-media-element.html: Added.
+ * fast/dom/shadow/content-element-in-meter-element-expected.txt: Added.
+ * fast/dom/shadow/content-element-in-meter-element.html: Added.
+ * fast/dom/shadow/content-element-in-progress-element-expected.txt: Added.
+ * fast/dom/shadow/content-element-in-progress-element.html: Added.
+ * fast/dom/shadow/content-element-in-select-element-expected.txt: Added.
+ * fast/dom/shadow/content-element-in-select-element.html: Added.
+ * platform/chromium/test_expectations.txt:
+ * platform/efl/Skipped:
+ * platform/mac/Skipped:
+ * platform/qt/Skipped:
+ * platform/win/Skipped:
+ * platform/wincairo/Skipped:
+ * platform/wk2/Skipped:
+
2012-03-20 Dan Bernstein <[email protected]>
Skipped editing/selection/move-by-word-visually-crash-test-5.html in WebKit2 because of
Added: trunk/LayoutTests/fast/dom/shadow/content-element-in-media-element-expected.txt (0 => 111500)
--- trunk/LayoutTests/fast/dom/shadow/content-element-in-media-element-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/content-element-in-media-element-expected.txt 2012-03-21 05:12:51 UTC (rev 111500)
@@ -0,0 +1,4 @@
+contentElementInVideoElement
+PASS
+TEST COMPLETED
+
Added: trunk/LayoutTests/fast/dom/shadow/content-element-in-media-element.html (0 => 111500)
--- trunk/LayoutTests/fast/dom/shadow/content-element-in-media-element.html (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/content-element-in-media-element.html 2012-03-21 05:12:51 UTC (rev 111500)
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+/* relative positioning ensures underlying RenderLayer */
+.container {
+ position: relative;
+}
+
+.span {
+ display: boxed-inline;
+ margin: 2px;
+ border: solid;
+}
+</style>
+<script src=""
+<script src=""
+<script>
+
+var testFuncs = [];
+
+testFuncs.push(function contentElementInVideoElement(callIfDone) {
+ document.getElementById('expect-container').innerHTML = "<div><video><div></div></video></div>";
+
+ var div = document.createElement('div');
+ div.appendChild(document.createElement('div'));
+
+ document.getElementById('actual-container').appendChild(div);
+
+ var sr = new WebKitShadowRoot(div);
+
+ var f = (function(sr, callIfDone) {
+ return function() {
+ var video = document.createElement('video');
+ var content = document.createElement('content');
+ video.appendChild(content);
+ sr.appendChild(video);
+ callIfDone();
+ };
+ })(sr, callIfDone);
+
+ setTimeout(f, 0);
+});
+
+</script>
+</head>
+<body _onload_="doTest(testFuncs)">
+
+<div id="actual-container" class="container"></div>
+<div id="expect-container" class="container"></div>
+<pre id="console"></pre>
+
+</body>
+</html>
Added: trunk/LayoutTests/fast/dom/shadow/content-element-in-meter-element-expected.txt (0 => 111500)
--- trunk/LayoutTests/fast/dom/shadow/content-element-in-meter-element-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/content-element-in-meter-element-expected.txt 2012-03-21 05:12:51 UTC (rev 111500)
@@ -0,0 +1,4 @@
+contentElementInMeterElement
+PASS
+TEST COMPLETED
+
Added: trunk/LayoutTests/fast/dom/shadow/content-element-in-meter-element.html (0 => 111500)
--- trunk/LayoutTests/fast/dom/shadow/content-element-in-meter-element.html (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/content-element-in-meter-element.html 2012-03-21 05:12:51 UTC (rev 111500)
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+/* relative positioning ensures underlying RenderLayer */
+.container {
+ position: relative;
+}
+
+.span {
+ display: boxed-inline;
+ margin: 2px;
+ border: solid;
+}
+</style>
+<script src=""
+<script src=""
+<script>
+
+var testFuncs = [];
+
+testFuncs.push(function contentElementInMeterElement(callIfDone) {
+ document.getElementById('expect-container').innerHTML = "<div><meter><div></div></meter></div>";
+
+ var div = document.createElement('div');
+ div.appendChild(document.createElement('div'));
+
+ document.getElementById('actual-container').appendChild(div);
+
+ var sr = new WebKitShadowRoot(div);
+
+ var f = (function(sr, callIfDone) {
+ return function() {
+ var meter = document.createElement('meter');
+ var content = document.createElement('content');
+ meter.appendChild(content);
+ sr.appendChild(meter);
+ callIfDone();
+ };
+ })(sr, callIfDone);
+
+ setTimeout(f, 0);
+});
+
+</script>
+</head>
+<body _onload_="doTest(testFuncs)">
+
+<div id="actual-container" class="container"></div>
+<div id="expect-container" class="container"></div>
+<pre id="console"></pre>
+
+</body>
+</html>
Added: trunk/LayoutTests/fast/dom/shadow/content-element-in-progress-element-expected.txt (0 => 111500)
--- trunk/LayoutTests/fast/dom/shadow/content-element-in-progress-element-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/content-element-in-progress-element-expected.txt 2012-03-21 05:12:51 UTC (rev 111500)
@@ -0,0 +1,4 @@
+contentElementInProgressElement
+PASS
+TEST COMPLETED
+
Added: trunk/LayoutTests/fast/dom/shadow/content-element-in-progress-element.html (0 => 111500)
--- trunk/LayoutTests/fast/dom/shadow/content-element-in-progress-element.html (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/content-element-in-progress-element.html 2012-03-21 05:12:51 UTC (rev 111500)
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+/* relative positioning ensures underlying RenderLayer */
+.container {
+ position: relative;
+}
+
+.span {
+ display: boxed-inline;
+ margin: 2px;
+ border: solid;
+}
+</style>
+<script src=""
+<script src=""
+<script>
+
+var testFuncs = [];
+
+testFuncs.push(function contentElementInProgressElement(callIfDone) {
+ document.getElementById('expect-container').innerHTML = "<div><progress><div></div></progress></div>";
+
+ var div = document.createElement('div');
+ div.appendChild(document.createElement('div'));
+
+ document.getElementById('actual-container').appendChild(div);
+
+ var sr = new WebKitShadowRoot(div);
+
+ var f = (function(sr, callIfDone) {
+ return function() {
+ var progress = document.createElement('progress');
+ var content = document.createElement('content');
+ progress.appendChild(content);
+ sr.appendChild(progress);
+ callIfDone();
+ };
+ })(sr, callIfDone);
+
+ setTimeout(f, 0);
+});
+
+</script>
+</head>
+<body _onload_="doTest(testFuncs)">
+
+<div id="actual-container" class="container"></div>
+<div id="expect-container" class="container"></div>
+<pre id="console"></pre>
+
+</body>
+</html>
Added: trunk/LayoutTests/fast/dom/shadow/content-element-in-select-element-expected.txt (0 => 111500)
--- trunk/LayoutTests/fast/dom/shadow/content-element-in-select-element-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/content-element-in-select-element-expected.txt 2012-03-21 05:12:51 UTC (rev 111500)
@@ -0,0 +1,4 @@
+contentElementInSelectElement
+PASS
+TEST COMPLETED
+
Added: trunk/LayoutTests/fast/dom/shadow/content-element-in-select-element.html (0 => 111500)
--- trunk/LayoutTests/fast/dom/shadow/content-element-in-select-element.html (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/content-element-in-select-element.html 2012-03-21 05:12:51 UTC (rev 111500)
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+/* relative positioning ensures underlying RenderLayer */
+.container {
+ position: relative;
+}
+
+.span {
+ display: boxed-inline;
+ margin: 2px;
+ border: solid;
+}
+</style>
+<script src=""
+<script src=""
+<script>
+
+var testFuncs = [];
+
+testFuncs.push(function contentElementInSelectElement(callIfDone) {
+ document.getElementById('expect-container').innerHTML = "<div><select><div></div></select></div>";
+
+ var div = document.createElement('div');
+ div.appendChild(document.createElement('div'));
+
+ document.getElementById('actual-container').appendChild(div);
+
+ var sr = new WebKitShadowRoot(div);
+
+ var f = (function(sr, callIfDone) {
+ return function() {
+ var select = document.createElement('select');
+ var content = document.createElement('content');
+ select.appendChild(content);
+ sr.appendChild(select);
+ callIfDone();
+ };
+ })(sr, callIfDone);
+
+ setTimeout(f, 0);
+});
+
+</script>
+</head>
+<body _onload_="doTest(testFuncs)">
+
+<div id="actual-container" class="container"></div>
+<div id="expect-container" class="container"></div>
+<pre id="console"></pre>
+
+</body>
+</html>
Modified: trunk/LayoutTests/platform/chromium/test_expectations.txt (111499 => 111500)
--- trunk/LayoutTests/platform/chromium/test_expectations.txt 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/LayoutTests/platform/chromium/test_expectations.txt 2012-03-21 05:12:51 UTC (rev 111500)
@@ -3277,6 +3277,9 @@
BUGCR85293 LINUX : svg/text/foreignObject-text-clipping-bug.xml = PASS IMAGE
+BUGWK81310 : fast/dom/shadow/content-element-in-media-element.html = TEXT
+BUGWK81311 : fast/dom/shadow/content-element-in-meter-element.html = TEXT
+
// CSS Grid Layout is not enabled yet.
BUGWK60731 SKIP : fast/css-grid-layout = PASS
Modified: trunk/LayoutTests/platform/efl/Skipped (111499 => 111500)
--- trunk/LayoutTests/platform/efl/Skipped 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/LayoutTests/platform/efl/Skipped 2012-03-21 05:12:51 UTC (rev 111500)
@@ -1938,6 +1938,8 @@
fast/dom/shadow/content-element-api.html
fast/dom/shadow/content-element-outside-shadow.html
fast/dom/shadow/content-element-outside-shadow-style.html
+fast/dom/shadow/content-element-in-media-element.html
+fast/dom/shadow/content-element-in-meter-element.html
fast/dom/shadow/get-element-by-id-in-shadow-root.html
fast/dom/shadow/shadow-root-js-api.html
fast/dom/shadow/shadow-disable.html
Modified: trunk/LayoutTests/platform/qt/Skipped (111499 => 111500)
--- trunk/LayoutTests/platform/qt/Skipped 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/LayoutTests/platform/qt/Skipped 2012-03-21 05:12:51 UTC (rev 111500)
@@ -167,6 +167,8 @@
fast/dom/shadow/content-element-move.html
fast/dom/shadow/content-element-outside-shadow.html
fast/dom/shadow/content-element-outside-shadow-style.html
+fast/dom/shadow/content-element-in-media-element.html
+fast/dom/shadow/content-element-in-meter-element.html
fast/dom/shadow/get-element-by-id-in-shadow-root.html
fast/dom/shadow/iframe-shadow.html
fast/dom/shadow/multiple-shadowroot.html
Modified: trunk/LayoutTests/platform/win/Skipped (111499 => 111500)
--- trunk/LayoutTests/platform/win/Skipped 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/LayoutTests/platform/win/Skipped 2012-03-21 05:12:51 UTC (rev 111500)
@@ -1007,6 +1007,7 @@
fast/dom/shadow/tree-scope-crash.html
fast/forms/form-attribute.html
+
# view mode media feature
fast/media/view-mode-media-feature.html
fast/media/media-query-list-02.html
@@ -1460,6 +1461,8 @@
fast/dom/shadow/content-element-api.html
fast/dom/shadow/content-element-outside-shadow.html
fast/dom/shadow/content-element-outside-shadow-style.html
+fast/dom/shadow/content-element-in-media-element.html
+fast/dom/shadow/content-element-in-meter-element.html
fast/dom/shadow/get-element-by-id-in-shadow-root.html
fast/dom/shadow/shadow-root-js-api.html
fast/dom/shadow/shadow-disable.html
Modified: trunk/LayoutTests/platform/wincairo/Skipped (111499 => 111500)
--- trunk/LayoutTests/platform/wincairo/Skipped 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/LayoutTests/platform/wincairo/Skipped 2012-03-21 05:12:51 UTC (rev 111500)
@@ -1972,6 +1972,8 @@
# ENABLE(SHADOW_DOM) is disabled.
fast/dom/shadow/content-element-api.html
fast/dom/shadow/content-element-outside-shadow.html
+fast/dom/shadow/content-element-in-media-element.html
+fast/dom/shadow/content-element-in-meter-element.html
fast/dom/shadow/get-element-by-id-in-shadow-root.html
fast/dom/shadow/shadow-root-js-api.html
fast/dom/shadow/shadow-disable.html
Modified: trunk/LayoutTests/platform/wk2/Skipped (111499 => 111500)
--- trunk/LayoutTests/platform/wk2/Skipped 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/LayoutTests/platform/wk2/Skipped 2012-03-21 05:12:51 UTC (rev 111500)
@@ -1083,6 +1083,8 @@
fast/dom/shadow/content-element-api.html
fast/dom/shadow/content-element-outside-shadow.html
fast/dom/shadow/content-element-outside-shadow-style.html
+fast/dom/shadow/content-element-in-media-element.html
+fast/dom/shadow/content-element-in-meter-element.html
fast/dom/shadow/shadow-root-js-api.html
fast/dom/shadow/shadow-disable.html
fast/dom/shadow/shadow-root-activeElement.html
Modified: trunk/Source/WebCore/ChangeLog (111499 => 111500)
--- trunk/Source/WebCore/ChangeLog 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/Source/WebCore/ChangeLog 2012-03-21 05:12:51 UTC (rev 111500)
@@ -1,3 +1,40 @@
+2012-03-19 Shinya Kawanaka <[email protected]>
+
+ [Crash] RenderMenuList::addChild() in Shadow DOM.
+ https://bugs.webkit.org/show_bug.cgi?id=81201
+
+ Reviewed by Dimitri Glazkov.
+
+ <audio>, <video>, <meter>, <progress>, and <select> are implemented using
+ Shadow DOM having HTMLContentElement. Their renderer children basically should not
+ create a renderer unless they are on the upper shadow encapsulation boundary,
+ which means they are the direct children of the shadow root.
+
+ However, current implementation allows their renderer children to create a renderer
+ even if they are on a lower shadow encapsulation boundary, which means
+ they are distributed elements of HTMLContentElement.
+
+ This patch makes there renderer children not to create a renderer if they are on a lower shadow
+ encapsulation boudary.
+
+ Tests: fast/dom/shadow/content-element-in-media-element.html
+ fast/dom/shadow/content-element-in-meter-element.html
+ fast/dom/shadow/content-element-in-progress-element.html
+ fast/dom/shadow/content-element-in-select-element.html
+
+ * dom/NodeRenderingContext.h:
+ (NodeRenderingContext):
+ (WebCore::NodeRenderingContext::isOnUpperEncapsulationBoundary):
+ (WebCore):
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::childShouldCreateRenderer):
+ * html/HTMLMeterElement.cpp:
+ (WebCore::HTMLMeterElement::childShouldCreateRenderer):
+ * html/HTMLProgressElement.cpp:
+ (WebCore::HTMLProgressElement::childShouldCreateRenderer):
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::childShouldCreateRenderer):
+
2012-03-20 Dana Jansens <[email protected]>
[chromium] Store origin/screen space transforms for surface and replica in the surface
Modified: trunk/Source/WebCore/dom/NodeRenderingContext.h (111499 => 111500)
--- trunk/Source/WebCore/dom/NodeRenderingContext.h 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/Source/WebCore/dom/NodeRenderingContext.h 2012-03-21 05:12:51 UTC (rev 111500)
@@ -62,6 +62,7 @@
void hostChildrenChanged();
+ bool isOnUpperEncapsulationBoundary() const;
bool isOnEncapsulationBoundary() const;
bool hasFlowThreadParent() const { return m_parentFlowRenderer; }
RenderFlowThread* parentFlowRenderer() const { return m_parentFlowRenderer; }
@@ -117,6 +118,11 @@
|| m_phase == AttachingFallbacked);
}
+inline bool NodeRenderingContext::isOnUpperEncapsulationBoundary() const
+{
+ return m_phase == AttachingShadowChild;
+}
+
class NodeRendererFactory {
WTF_MAKE_NONCOPYABLE(NodeRendererFactory);
WTF_MAKE_FAST_ALLOCATED;
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (111499 => 111500)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2012-03-21 05:12:51 UTC (rev 111500)
@@ -468,7 +468,7 @@
bool HTMLMediaElement::childShouldCreateRenderer(const NodeRenderingContext& childContext) const
{
- return childContext.isOnEncapsulationBoundary() && HTMLElement::childShouldCreateRenderer(childContext);
+ return childContext.isOnUpperEncapsulationBoundary() && HTMLElement::childShouldCreateRenderer(childContext);
}
void HTMLMediaElement::insertedIntoDocument()
Modified: trunk/Source/WebCore/html/HTMLMeterElement.cpp (111499 => 111500)
--- trunk/Source/WebCore/html/HTMLMeterElement.cpp 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/Source/WebCore/html/HTMLMeterElement.cpp 2012-03-21 05:12:51 UTC (rev 111500)
@@ -63,7 +63,7 @@
bool HTMLMeterElement::childShouldCreateRenderer(const NodeRenderingContext& childContext) const
{
- return childContext.isOnEncapsulationBoundary() && HTMLElement::childShouldCreateRenderer(childContext);
+ return childContext.isOnUpperEncapsulationBoundary() && HTMLElement::childShouldCreateRenderer(childContext);
}
bool HTMLMeterElement::supportsFocus() const
Modified: trunk/Source/WebCore/html/HTMLProgressElement.cpp (111499 => 111500)
--- trunk/Source/WebCore/html/HTMLProgressElement.cpp 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/Source/WebCore/html/HTMLProgressElement.cpp 2012-03-21 05:12:51 UTC (rev 111500)
@@ -65,7 +65,7 @@
bool HTMLProgressElement::childShouldCreateRenderer(const NodeRenderingContext& childContext) const
{
- return childContext.isOnEncapsulationBoundary() && HTMLElement::childShouldCreateRenderer(childContext);
+ return childContext.isOnUpperEncapsulationBoundary() && HTMLElement::childShouldCreateRenderer(childContext);
}
bool HTMLProgressElement::supportsFocus() const
Modified: trunk/Source/WebCore/html/HTMLSelectElement.cpp (111499 => 111500)
--- trunk/Source/WebCore/html/HTMLSelectElement.cpp 2012-03-21 05:02:57 UTC (rev 111499)
+++ trunk/Source/WebCore/html/HTMLSelectElement.cpp 2012-03-21 05:12:51 UTC (rev 111500)
@@ -328,7 +328,7 @@
bool HTMLSelectElement::childShouldCreateRenderer(const NodeRenderingContext& childContext) const
{
- return childContext.isOnEncapsulationBoundary() && HTMLFormControlElementWithState::childShouldCreateRenderer(childContext);
+ return childContext.isOnUpperEncapsulationBoundary() && HTMLFormControlElementWithState::childShouldCreateRenderer(childContext);
}
HTMLCollection* HTMLSelectElement::selectedOptions()