[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 13:54:59 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 1a4d2cb71c33bb50d6e2fa1301ca6efb835a8745
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Sep 29 17:15:01 2010 +0000

    2010-09-29  Anantanarayanan G Iyengar  <ananta at chromium.org>
    
            Reviewed by Darin Fisher.
    
            [chromium] Honor z-index specified by a plugin
            https://bugs.webkit.org/show_bug.cgi?id=46223
    
            The Chromium plugin code which implements the iframe shim technique
            for overlaying a windowed plugin with content on the page should
            honor the z-index specified on the plugin widget. If the z-index
            here is greater than the enclosing iframe shim then the plugin
            should be displayed over the iframe. Updated the layout test to test
            for this case. Skipped the plugins/iframe-shims.html layout test on
            platforms which don't support it.
    
            * platform/mac/Skipped:
            * platform/qt/Skipped:
            * platform/win/Skipped:
            * plugins/iframe-shims.html:
    2010-09-29  Anantanarayanan G Iyengar  <ananta at chromium.org>
    
            Reviewed by Darin Fisher.
    
            [chromium] Honor z-index specified by a plugin
            https://bugs.webkit.org/show_bug.cgi?id=46223
    
            The Chromium plugin code which implements the iframe shim technique
            for overlaying a windowed plugin with content on the page should
            honor the z-index specified on the plugin widget. If the z-index
            here is greater than the enclosing iframe shim then the plugin
            should be displayed over the iframe. Updated the layout test to test
            for this case. Skipped the plugins/iframe-shims.html layout test on
            platforms which don't support it.
    
            * src/WebPluginContainerImpl.cpp:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68656 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index dd6403e..242a828 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,23 @@
+2010-09-29  Anantanarayanan G Iyengar  <ananta at chromium.org>
+
+        Reviewed by Darin Fisher.
+
+        [chromium] Honor z-index specified by a plugin
+        https://bugs.webkit.org/show_bug.cgi?id=46223
+        
+        The Chromium plugin code which implements the iframe shim technique
+        for overlaying a windowed plugin with content on the page should
+        honor the z-index specified on the plugin widget. If the z-index
+        here is greater than the enclosing iframe shim then the plugin
+        should be displayed over the iframe. Updated the layout test to test
+        for this case. Skipped the plugins/iframe-shims.html layout test on
+        platforms which don't support it.
+
+        * platform/mac/Skipped:
+        * platform/qt/Skipped:
+        * platform/win/Skipped:
+        * plugins/iframe-shims.html:
+
 2010-09-29  Philippe Normand  <pnormand at igalia.com>
 
         Unreviewed, updated baselines of
diff --git a/LayoutTests/platform/mac/Skipped b/LayoutTests/platform/mac/Skipped
index 49e5652..798f91d 100644
--- a/LayoutTests/platform/mac/Skipped
+++ b/LayoutTests/platform/mac/Skipped
@@ -247,3 +247,7 @@ fast/filesystem
 
 # https://bugs.webkit.org/show_bug.cgi?id=44713
 fast/frames/iframe-reparenting-adopt-node.html
+
+# https://bugs.webkit.org/show_bug.cgi?id=46223
+# The WebKit plugin implementation does not support iframe shims.
+plugins/iframe-shims.html
diff --git a/LayoutTests/platform/qt/Skipped b/LayoutTests/platform/qt/Skipped
index a2ebd14..eac4211 100644
--- a/LayoutTests/platform/qt/Skipped
+++ b/LayoutTests/platform/qt/Skipped
@@ -5490,3 +5490,7 @@ http/tests/canvas/webgl/origin-clean-conformance.html
 media/restore-from-page-cache.html
 media/video-can-play-type.html
 media/video-delay-load-event.html
+
+# https://bugs.webkit.org/show_bug.cgi?id=46223
+# The WebKit plugin implementation does not support iframe shims.
+plugins/iframe-shims.html
diff --git a/LayoutTests/platform/win/Skipped b/LayoutTests/platform/win/Skipped
index 8b18795..f61c1ae 100644
--- a/LayoutTests/platform/win/Skipped
+++ b/LayoutTests/platform/win/Skipped
@@ -1007,3 +1007,7 @@ fast/filesystem
 
 # LayoutTestController::nodesFromRect is not supported.
 fast/dom/nodesFromRect-basic.html
+
+# https://bugs.webkit.org/show_bug.cgi?id=46223
+# The WebKit plugin implementation does not support iframe shims.
+plugins/iframe-shims.html
diff --git a/LayoutTests/plugins/iframe-shims.html b/LayoutTests/plugins/iframe-shims.html
index f76fd78..0884ae0 100644
--- a/LayoutTests/plugins/iframe-shims.html
+++ b/LayoutTests/plugins/iframe-shims.html
@@ -20,6 +20,14 @@
         return f;
     }
 
+    function makePluginElementWithHigherZIndex()
+    {
+        var f = makePluginElement();
+        f.style.zIndex = 1000;
+        f.style.position = 'relative';
+        return f;
+    }
+
     function makeIframeDiv()
     {
         var i = document.createElement('iframe');
@@ -34,7 +42,7 @@
     }
 
     function makeOverlayDiv(color, caseId)
-    {
+    {
         var o = document.createElement('div');
         o.style.position = 'absolute';
         o.style.top = '10px';
@@ -84,8 +92,8 @@
         items++;
 
         var expectClickable = tags.expect && tags.expect.indexOf('UNDER') == -1;
-        expectedClicks[caseId] = expectClickable;
-
+        expectedClicks[caseId] = expectClickable;
+
         var container = document.getElementById('container');
         var root = document.createElement('div');
         root.style.position = 'absolute';
@@ -109,11 +117,22 @@
             pluginDivZ = 100;
             overlayDivZIframe = 100;
             overlayDivZOverlay = 100;
+        } else if (tags.pluginExplicitHigherZIndex) {
+            // For this test case we set the z-index for the iframe and the overlay
+            // to be lower than the plugin.
+            overlayDivZIframe = 100;
+            overlayDivZOverlay = 0;
         }
 
         var appendPlugin = function()
         {
-            var pd = makePluginElement();
+            var pd;
+            if (tags.pluginExplicitHigherZIndex) {
+                pd = makePluginElementWithHigherZIndex();
+            } else {
+                pd = makePluginElement();
+            }
+
             if (tags.pluginInsideDiv || pluginDivZ) {
                 var parentdiv = document.createElement('div');
                 parentdiv.appendChild(pd)
@@ -127,7 +146,6 @@
             } else {
                 if (!tags.pluginNorelative)
                     pd.style.position = 'relative';
-
                 root.appendChild(pd);
             }
         };
@@ -135,18 +153,18 @@
         if (tags.overlayEarlier) {
             appendOverlay(overlayDivZIframe, overlayDivZOverlay, tags.overlayInsideDiv, expectClickable, caseId);
             appendPlugin();
-        } else {
+        } else {
             appendPlugin();
             if (tags.overlayOnTimeout) {
                 setTimeout('appendOverlay('+overlayDivZIframe+', '+overlayDivZOverlay +', ' + tags.overlayInsideDiv + ', ' + expectClickable + ', ' + caseId + ')', 0);
-            } else {
+            } else {
                 appendOverlay(overlayDivZIframe, overlayDivZOverlay, tags.overlayInsideDiv, expectClickable, caseId);
             }
         }
      }
 
     function doClick(id)
-    {
+    {
         clicks[id] = true;
 
         // Check success/failure.
@@ -160,8 +178,8 @@
                 output.innerHTML = 'FAILURE';
                 return;
             }
-        }
-
+        }
+
         if (!waitingForMoreClicks) {
             output.innerHTML = 'SUCCESS';
             return;
@@ -184,7 +202,7 @@
         addCase(1, 3, {'overlayEarlier':1, 'pluginNorelative':1, 'pluginInsideDiv':1, expect:'overlay OVER'});
         addCase(2, 3, {'pluginNorelative':1, 'pluginInsideDiv':1, expect:'overlay OVER'});
         addCase(3, 3, {'pluginLowerz':1, 'overlayOnTimeout':1, expect:'overlay OVER'});
-
+        addCase(4, 0, {'pluginExplicitHigherZIndex': 1, 'pluginNorelative': 1, 'pluginInsideDiv': 1, 'overlayInsideDiv': 1, expect: 'overlay UNDER' });
         runTest();
     }
 
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index a28517a..42a8bb2 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,20 @@
+2010-09-29  Anantanarayanan G Iyengar  <ananta at chromium.org>
+
+        Reviewed by Darin Fisher.
+
+        [chromium] Honor z-index specified by a plugin
+        https://bugs.webkit.org/show_bug.cgi?id=46223
+        
+        The Chromium plugin code which implements the iframe shim technique
+        for overlaying a windowed plugin with content on the page should
+        honor the z-index specified on the plugin widget. If the z-index
+        here is greater than the enclosing iframe shim then the plugin
+        should be displayed over the iframe. Updated the layout test to test
+        for this case. Skipped the plugins/iframe-shims.html layout test on
+        platforms which don't support it.
+
+        * src/WebPluginContainerImpl.cpp:
+
 2010-09-28  Vangelis Kokkevis  <vangelis at chromium.org>
 
         Reviewed by Kenneth Russell.
diff --git a/WebKit/chromium/src/WebPluginContainerImpl.cpp b/WebKit/chromium/src/WebPluginContainerImpl.cpp
index 7f74db2..8d3db90 100644
--- a/WebKit/chromium/src/WebPluginContainerImpl.cpp
+++ b/WebKit/chromium/src/WebPluginContainerImpl.cpp
@@ -541,11 +541,20 @@ static bool checkStackOnTop(
                     return false;
             }
 
-            // For compatibility with IE: when the plugin is not positioned,
-            // it stacks behind the iframe, even if it's later in the
-            // document order.
-            if (ro2->style()->position() == StaticPosition)
+            // If the plugin does not have an explicit z-index it stacks behind the iframe.
+            // This is for maintaining compatibility with IE.
+            if (ro2->style()->position() == StaticPosition) {
+                // The 0'th elements of these RenderObject arrays represent the plugin node and
+                // the iframe.
+                const RenderObject* pluginRenderObject = pluginZstack[0];
+                const RenderObject* iframeRenderObject = iframeZstack[0];
+
+                if (pluginRenderObject->style() && iframeRenderObject->style()) {
+                    if (pluginRenderObject->style()->zIndex() > iframeRenderObject->style()->zIndex())
+                        return false;
+                }
                 return true;
+            }
 
             // Inspect the document order.  Later order means higher
             // stacking.

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list