Title: [133236] branches/safari-536.28-branch

Diff

Modified: branches/safari-536.28-branch/LayoutTests/ChangeLog (133235 => 133236)


--- branches/safari-536.28-branch/LayoutTests/ChangeLog	2012-11-01 22:45:24 UTC (rev 133235)
+++ branches/safari-536.28-branch/LayoutTests/ChangeLog	2012-11-01 22:51:16 UTC (rev 133236)
@@ -1,5 +1,19 @@
 2012-11-01  Lucas Forschler  <lforsch...@apple.com>
 
+        Merge r124491
+
+    2012-08-02  Abhishek Arya  <infe...@chromium.org>
+
+            No isChildAllowed checked when adding RenderFullScreen as the child..
+            https://bugs.webkit.org/show_bug.cgi?id=92995
+
+            Reviewed by Eric Seidel.
+
+            * fullscreen/fullscreen-child-not-allowed-crash-expected.txt: Added.
+            * fullscreen/fullscreen-child-not-allowed-crash.html: Added.
+
+2012-11-01  Lucas Forschler  <lforsch...@apple.com>
+
         Merge r124258
 
     2012-07-31  Luke Macpherson   <macpher...@chromium.org>
@@ -10668,3 +10682,4 @@
 .
 .
 .
+.

Copied: branches/safari-536.28-branch/LayoutTests/fullscreen/fullscreen-child-not-allowed-crash-expected.txt (from rev 124491, trunk/LayoutTests/fullscreen/fullscreen-child-not-allowed-crash-expected.txt) (0 => 133236)


--- branches/safari-536.28-branch/LayoutTests/fullscreen/fullscreen-child-not-allowed-crash-expected.txt	                        (rev 0)
+++ branches/safari-536.28-branch/LayoutTests/fullscreen/fullscreen-child-not-allowed-crash-expected.txt	2012-11-01 22:51:16 UTC (rev 133236)
@@ -0,0 +1,4 @@
+Test passes if it does not crash.
+
+END OF TEST
+

Copied: branches/safari-536.28-branch/LayoutTests/fullscreen/fullscreen-child-not-allowed-crash.html (from rev 124491, trunk/LayoutTests/fullscreen/fullscreen-child-not-allowed-crash.html) (0 => 133236)


--- branches/safari-536.28-branch/LayoutTests/fullscreen/fullscreen-child-not-allowed-crash.html	                        (rev 0)
+++ branches/safari-536.28-branch/LayoutTests/fullscreen/fullscreen-child-not-allowed-crash.html	2012-11-01 22:51:16 UTC (rev 133236)
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<script src=""
+<body _onload_="init()">
+<p>Test passes if it does not crash.</p>
+<div id="div1">
+<script>
+var init = function() {
+    // Bail out early if the full screen API is not enabled or is missing:
+    if (Element.prototype.webkitRequestFullScreen == undefined) {
+        logResult(false, "Element.prototype.webkitRequestFullScreen == undefined");
+        endTest();
+    } else {
+        runWithKeyDown(function() { div1.webkitRequestFullScreen() });        
+    }
+    
+    frameset1 = document.createElementNS("http://www.w3.org/1999/xhtml", "frameset");
+    document.body.appendChild(frameset1);
+    setTimeout("crash()", 0);
+};
+
+function crash() {
+    frameset1.appendChild(div1);
+	if (window.eventSender)
+        eventSender.keyDown("X");
+    endTest();
+}
+</script>
+</html>

Modified: branches/safari-536.28-branch/Source/WebCore/ChangeLog (133235 => 133236)


--- branches/safari-536.28-branch/Source/WebCore/ChangeLog	2012-11-01 22:45:24 UTC (rev 133235)
+++ branches/safari-536.28-branch/Source/WebCore/ChangeLog	2012-11-01 22:51:16 UTC (rev 133236)
@@ -1,5 +1,30 @@
 2012-11-01  Lucas Forschler  <lforsch...@apple.com>
 
+        Merge r124491
+
+    2012-08-02  Abhishek Arya  <infe...@chromium.org>
+
+            No isChildAllowed checked when adding RenderFullScreen as the child..
+            https://bugs.webkit.org/show_bug.cgi?id=92995
+
+            Reviewed by Eric Seidel.
+
+            Test: fullscreen/fullscreen-child-not-allowed-crash.html
+
+            * dom/Document.cpp:
+            (WebCore::Document::webkitWillEnterFullScreenForElement): pass the object's parent
+            pointer as an additional argument.
+            * dom/NodeRenderingContext.cpp:
+            (WebCore::NodeRendererFactory::createRendererIfNeeded): pass the to be parent |parentRenderer|
+            as the argument. 
+            * rendering/RenderFullScreen.cpp:
+            (RenderFullScreen::wrapRenderer): make sure that parent allows RenderFullScreen as the child.
+            * rendering/RenderFullScreen.h: 
+            (RenderFullScreen): support the object's parent
+            pointer as an additional argument.
+
+2012-11-01  Lucas Forschler  <lforsch...@apple.com>
+
         Merge r124258
 
     2012-07-31  Luke Macpherson   <macpher...@chromium.org>
@@ -205922,3 +205947,4 @@
 .
 .
 .
+.

Modified: branches/safari-536.28-branch/Source/WebCore/dom/Document.cpp (133235 => 133236)


--- branches/safari-536.28-branch/Source/WebCore/dom/Document.cpp	2012-11-01 22:45:24 UTC (rev 133235)
+++ branches/safari-536.28-branch/Source/WebCore/dom/Document.cpp	2012-11-01 22:51:16 UTC (rev 133236)
@@ -5576,7 +5576,7 @@
     }
 
     if (m_fullScreenElement != documentElement())
-        RenderFullScreen::wrapRenderer(renderer, this);
+        RenderFullScreen::wrapRenderer(renderer, renderer ? renderer->parent() : 0, this);
 
     m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(true);
     

Modified: branches/safari-536.28-branch/Source/WebCore/dom/NodeRenderingContext.cpp (133235 => 133236)


--- branches/safari-536.28-branch/Source/WebCore/dom/NodeRenderingContext.cpp	2012-11-01 22:45:24 UTC (rev 133235)
+++ branches/safari-536.28-branch/Source/WebCore/dom/NodeRenderingContext.cpp	2012-11-01 22:51:16 UTC (rev 133236)
@@ -398,7 +398,7 @@
 
 #if ENABLE(FULLSCREEN_API)
     if (document->webkitIsFullScreen() && document->webkitCurrentFullScreenElement() == node)
-        newRenderer = RenderFullScreen::wrapRenderer(newRenderer, document);
+        newRenderer = RenderFullScreen::wrapRenderer(newRenderer, parentRenderer, document);
 #endif
 
     if (!newRenderer)

Modified: branches/safari-536.28-branch/Source/WebCore/rendering/RenderFullScreen.cpp (133235 => 133236)


--- branches/safari-536.28-branch/Source/WebCore/rendering/RenderFullScreen.cpp	2012-11-01 22:45:24 UTC (rev 133235)
+++ branches/safari-536.28-branch/Source/WebCore/rendering/RenderFullScreen.cpp	2012-11-01 22:51:16 UTC (rev 133236)
@@ -105,11 +105,17 @@
     return fullscreenStyle.release();
 }
 
-RenderObject* RenderFullScreen::wrapRenderer(RenderObject* object, Document* document)
+RenderObject* RenderFullScreen::wrapRenderer(RenderObject* object, RenderObject* parent, Document* document)
 {
     RenderFullScreen* fullscreenRenderer = new (document->renderArena()) RenderFullScreen(document);
     fullscreenRenderer->setStyle(createFullScreenStyle());
+    if (parent && !parent->isChildAllowed(fullscreenRenderer, fullscreenRenderer->style())) {
+        fullscreenRenderer->destroy();
+        return 0;
+    }
     if (object) {
+        // |object->parent()| can be null if the object is not yet attached
+        // to |parent|.
         if (RenderObject* parent = object->parent()) {
             parent->addChild(fullscreenRenderer, object);
             object->remove();

Modified: branches/safari-536.28-branch/Source/WebCore/rendering/RenderFullScreen.h (133235 => 133236)


--- branches/safari-536.28-branch/Source/WebCore/rendering/RenderFullScreen.h	2012-11-01 22:45:24 UTC (rev 133235)
+++ branches/safari-536.28-branch/Source/WebCore/rendering/RenderFullScreen.h	2012-11-01 22:51:16 UTC (rev 133236)
@@ -42,7 +42,7 @@
     void createPlaceholder(PassRefPtr<RenderStyle>, const LayoutRect& frameRect);
 
 
-    static RenderObject* wrapRenderer(RenderObject* renderer, Document*);
+    static RenderObject* wrapRenderer(RenderObject*, RenderObject*, Document*);
     void unwrapRenderer();
 
 private:
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to