Title: [97088] trunk
Revision
97088
Author
commit-qu...@webkit.org
Date
2011-10-10 14:31:14 -0700 (Mon, 10 Oct 2011)

Log Message

Exiting fullscreen shouldn't crash if the element that was fullscreened
had associated anonymous blocks.
https://bugs.webkit.org/show_bug.cgi?id=68503

Source/WebCore:

Patch by Jeremy Apthorp <jere...@chromium.org> on 2011-10-10
Reviewed by Simon Fraser.

Test: fullscreen/full-screen-render-inline.html
Test: fullscreen/parent-flow-inline-with-block-child.html

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::moveChildTo):
(WebCore::RenderBlock::moveChildrenTo):
* rendering/RenderBlock.h:
(WebCore::RenderBlock::moveChildTo):
(WebCore::RenderBlock::moveAllChildrenTo):
(WebCore::RenderBlock::moveChildrenTo):
* rendering/RenderFullScreen.cpp:
(RenderFullScreen::unwrapRenderer):
Move all children back to the parent, not just the firstChild.

LayoutTests:

When exiting fullscreen, if the child of the RenderFullScreen is a
block and the parent has inline flow elements, the parent's children
should be made non-inline before adding the fullscreened element back
to the parent.

Patch by Jeremy Apthorp <jere...@chromium.org> on 2011-10-10
Reviewed by Simon Fraser.

* fullscreen/full-screen-render-inline.html: Added.
* fullscreen/full-screen-render-inline-expected.png: Added.
* fullscreen/full-screen-render-inline-expected.txt: Added.
* fullscreen/parent-flow-inline-with-block-child.html: Added.
* fullscreen/parent-flow-inline-with-block-child-expected.png: Added.
* fullscreen/parent-flow-inline-with-block-child-expected.txt: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (97087 => 97088)


--- trunk/LayoutTests/ChangeLog	2011-10-10 21:28:53 UTC (rev 97087)
+++ trunk/LayoutTests/ChangeLog	2011-10-10 21:31:14 UTC (rev 97088)
@@ -1,3 +1,23 @@
+2011-10-10  Jeremy Apthorp  <jere...@chromium.org>
+
+        Exiting fullscreen shouldn't crash if the element that was fullscreened
+        had associated anonymous blocks.
+        https://bugs.webkit.org/show_bug.cgi?id=68503
+
+        When exiting fullscreen, if the child of the RenderFullScreen is a
+        block and the parent has inline flow elements, the parent's children
+        should be made non-inline before adding the fullscreened element back
+        to the parent.
+
+        Reviewed by Simon Fraser.
+
+        * fullscreen/full-screen-render-inline.html: Added.
+        * fullscreen/full-screen-render-inline-expected.png: Added.
+        * fullscreen/full-screen-render-inline-expected.txt: Added.
+        * fullscreen/parent-flow-inline-with-block-child.html: Added.
+        * fullscreen/parent-flow-inline-with-block-child-expected.png: Added.
+        * fullscreen/parent-flow-inline-with-block-child-expected.txt: Added.
+
 2011-10-10  Sergey Glazunov  <serg.glazu...@gmail.com>
 
         ScriptController::executeIfJavaScriptURL gets confused by synchronous frame loads

Added: trunk/LayoutTests/fullscreen/full-screen-render-inline-expected.png (0 => 97088)


--- trunk/LayoutTests/fullscreen/full-screen-render-inline-expected.png	                        (rev 0)
+++ trunk/LayoutTests/fullscreen/full-screen-render-inline-expected.png	2011-10-10 21:31:14 UTC (rev 97088)
@@ -0,0 +1,4 @@
+\x89PNG
+
+
+IHDR X\x9Av\x82p)tEXtchecksumb18b65cdba862a3c73de2fb5e5a1ec37\xA0A1\x95IDATx\x9C\xED\xDD1\xC2@A\xDD\xFF\xBFl^\x80R@6\x82\xCC\xD4\xD9\xED\xCAE\xD6\xCC\xCC \xF0\xBCz\xE0>\x90 @F\x80d\x90 @f=Xk{\xBC\xE57%\xF0?\@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8\xEC\xB3\xCC\xCC\xD9#\x80\xE1d\x90 @F\x80d\x90 @F\x80d\x90 @F\x80d\x90 @f\x9F=`\xAD\xF5\xD1\xF73\xF3\xA5M\x80\xAB\xB9\x80d\x90 @F\x80d\x90 @F\x80d\x90 @F\x80d\x90\xD9Gf\xA6\xD8\xB8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2/\x8F\xC0\xAE\xB8\xFB\xA0\xABIEND\xAEB`\x82
\ No newline at end of file

Added: trunk/LayoutTests/fullscreen/full-screen-render-inline-expected.txt (0 => 97088)


--- trunk/LayoutTests/fullscreen/full-screen-render-inline-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fullscreen/full-screen-render-inline-expected.txt	2011-10-10 21:31:14 UTC (rev 97088)
@@ -0,0 +1,24 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderSummary {SUMMARY} at (0,0) size 784x48
+        RenderBlock (anonymous) at (0,0) size 784x0
+        RenderBlock (anonymous) at (0,0) size 784x0
+        RenderBlock (anonymous) at (0,0) size 784x16
+          RenderText {#text} at (0,0) size 16x16
+            text run at (0,0) width 16: "a"
+          RenderInline {SPAN} at (0,0) size 16x16
+            RenderText {#text} at (16,0) size 16x16
+              text run at (16,0) width 16: "b"
+        RenderBlock (anonymous) at (0,16) size 784x16
+          RenderBlock {DIV} at (0,0) size 784x16
+            RenderText {#text} at (0,0) size 16x16
+              text run at (0,0) width 16: "c"
+        RenderBlock (anonymous) at (0,32) size 784x16
+          RenderInline {SPAN} at (0,0) size 16x16
+            RenderText {#text} at (0,0) size 16x16
+              text run at (0,0) width 16: "d"
+          RenderText {#text} at (16,0) size 16x16
+            text run at (16,0) width 16: "e"

Added: trunk/LayoutTests/fullscreen/full-screen-render-inline.html (0 => 97088)


--- trunk/LayoutTests/fullscreen/full-screen-render-inline.html	                        (rev 0)
+++ trunk/LayoutTests/fullscreen/full-screen-render-inline.html	2011-10-10 21:31:14 UTC (rev 97088)
@@ -0,0 +1,34 @@
+<style>
+body {
+    font-family: ahem;
+    -webkit-font-smoothing: none;
+}
+</style>
+<summary>a<span>b<div>c</div>d</span>e</summary>
+<script>
+    if ("webkitRequestFullScreen" in Element.prototype) {
+        if (window.layoutTestController)
+            layoutTestController.waitUntilDone();
+        document.body.offsetTop;
+        var span = document.getElementsByTagName('span')[0];
+
+        var fullscreenChangeEvent = function(event) {
+            if (document.webkitIsFullScreen) {
+                setTimeout(function () {
+                    document.webkitCancelFullScreen();
+                }, 0)
+            } else {
+                if (window.layoutTestController)
+                    layoutTestController.notifyDone();
+            }
+        };
+
+        document.addEventListener('webkitfullscreenchange', fullscreenChangeEvent);
+
+        document.addEventListener('keydown', function () {
+            span.webkitRequestFullScreen();
+        });
+        if (window.eventSender)
+            eventSender.keyDown('a');
+    }
+</script>

Added: trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child-expected.png (0 => 97088)


--- trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child-expected.png	                        (rev 0)
+++ trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child-expected.png	2011-10-10 21:31:14 UTC (rev 97088)
@@ -0,0 +1,4 @@
+\x89PNG
+
+
+IHDR X\x9Av\x82p)tEXtchecksum0b447b9d2fdb5f9edaa759e12eebe9c6\x8F\xB3\xDD=\x81IDATx\x9C\xED\xDD!\x80@A\x8E\xF0\xFF/\x85>A\xB2ft\x93\xAB\xDDTܚ\x999\xE7\xD7\xFF!@\x80\x8C2\xC8 #@\x80\x8C2\xD7n`\xAD\xF5\xEAߌ #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xD7n`f\x8A=\x80p2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 #@\x80\x8C2\xC8 s?H\xAD\xF7>IEND\xAEB`\x82
\ No newline at end of file

Added: trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child-expected.txt (0 => 97088)


--- trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child-expected.txt	2011-10-10 21:31:14 UTC (rev 97088)
@@ -0,0 +1,21 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderBlock {DIV} at (0,0) size 784x32
+        RenderBlock (anonymous) at (0,0) size 784x16
+          RenderInline {SPAN} at (0,0) size 16x16
+            RenderText {#text} at (0,0) size 16x16
+              text run at (0,0) width 16: "1"
+          RenderText {#text} at (0,0) size 0x0
+        RenderBlock (anonymous) at (0,16) size 784x16
+          RenderInline {SPAN} at (0,0) size 16x16
+            RenderText {#text} at (0,0) size 16x16
+              text run at (0,0) width 16: "2"
+        RenderBlock (anonymous) at (0,32) size 784x0
+          RenderBlock {DIV} at (0,0) size 784x0
+        RenderBlock (anonymous) at (0,32) size 784x0
+          RenderInline {SPAN} at (0,0) size 0x0
+        RenderBlock (anonymous) at (0,32) size 784x0
+          RenderText {#text} at (0,0) size 0x0

Added: trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child.html (0 => 97088)


--- trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child.html	                        (rev 0)
+++ trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child.html	2011-10-10 21:31:14 UTC (rev 97088)
@@ -0,0 +1,38 @@
+<style>
+body {
+    font-family: ahem;
+    -webkit-font-smoothing: none;
+}
+</style>
+
+<div>
+  <span>1</span>
+  <span id='c2'>2</span>
+</div>
+
+<script>
+    if ("webkitRequestFullScreen" in Element.prototype) {
+        if (window.layoutTestController) 
+            layoutTestController.waitUntilDone();
+        document.body.offsetTop;
+        var span = document.getElementById('c2');
+        var div = span.parentNode;
+
+        var spanEnteredFullScreen = function(event) {
+            setTimeout(function () {
+                span.appendChild(document.createElement('div'));
+                document.webkitCancelFullScreen();
+                if (window.layoutTestController)
+                    layoutTestController.notifyDone();
+            }, 0);
+        };
+
+        document.addEventListener('webkitfullscreenchange', spanEnteredFullScreen);
+
+        document.addEventListener('keydown', function () {
+            span.webkitRequestFullScreen();
+        });
+        if (window.eventSender)
+            eventSender.keyDown('a');
+    }
+</script>

Modified: trunk/Source/WebCore/ChangeLog (97087 => 97088)


--- trunk/Source/WebCore/ChangeLog	2011-10-10 21:28:53 UTC (rev 97087)
+++ trunk/Source/WebCore/ChangeLog	2011-10-10 21:31:14 UTC (rev 97088)
@@ -1,3 +1,25 @@
+2011-10-10  Jeremy Apthorp  <jere...@chromium.org>
+
+        Exiting fullscreen shouldn't crash if the element that was fullscreened
+        had associated anonymous blocks.
+        https://bugs.webkit.org/show_bug.cgi?id=68503
+
+        Reviewed by Simon Fraser.
+
+        Test: fullscreen/full-screen-render-inline.html
+        Test: fullscreen/parent-flow-inline-with-block-child.html
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::moveChildTo):
+        (WebCore::RenderBlock::moveChildrenTo):
+        * rendering/RenderBlock.h:
+        (WebCore::RenderBlock::moveChildTo):
+        (WebCore::RenderBlock::moveAllChildrenTo):
+        (WebCore::RenderBlock::moveChildrenTo):
+        * rendering/RenderFullScreen.cpp:
+        (RenderFullScreen::unwrapRenderer):
+        Move all children back to the parent, not just the firstChild.
+
 2011-10-10  Sergey Glazunov  <serg.glazu...@gmail.com>
 
         ScriptController::executeIfJavaScriptURL gets confused by synchronous frame loads

Modified: trunk/Source/WebCore/rendering/RenderFullScreen.cpp (97087 => 97088)


--- trunk/Source/WebCore/rendering/RenderFullScreen.cpp	2011-10-10 21:28:53 UTC (rev 97087)
+++ trunk/Source/WebCore/rendering/RenderFullScreen.cpp	2011-10-10 21:31:14 UTC (rev 97088)
@@ -124,13 +124,16 @@
 
 void RenderFullScreen::unwrapRenderer()
 {
-    RenderObject* wrappedRenderer = firstChild();
-    if (wrappedRenderer) {
-        wrappedRenderer->remove();
-        RenderObject* holder = placeholder() ? placeholder() : this;
-        RenderObject* parent = holder->parent();
-        if (parent)
-            parent->addChild(wrappedRenderer, holder);
+    RenderObject* holder = placeholder() ? placeholder() : this;
+    RenderObject* parent = holder->parent();
+    if (parent) {
+        RenderObject* child = firstChild();
+        while (child) {
+            RenderObject* nextChild = child->nextSibling();
+            child->remove();
+            parent->addChild(child, holder);
+            child = nextChild;
+        }
     }
     remove();
     document()->setFullScreenRenderer(0);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to