[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