Bug 533845 - Mouse events don't work in content iframe, if iframe is inside a xul panel, r=roc

--HG--
extra : rebase_source : 8270dcfedb49c555a5deb6bb7a29e4a500cd7a90
This commit is contained in:
Olli Pettay 2010-01-13 11:02:11 +02:00
parent fdecb5cb37
commit 06740d3796
3 changed files with 48 additions and 1 deletions

View File

@ -6131,10 +6131,13 @@ PresShell::HandleEvent(nsIView *aView,
nsTArray<nsIFrame*> popups = pm->GetVisiblePopups();
PRUint32 i;
// Search from top to bottom
nsIDocument* doc = frame->PresContext()->GetPresShell()->GetDocument();
for (i = 0; i < popups.Length(); i++) {
nsIFrame* popup = popups[i];
if (popup->GetOverflowRect().Contains(
nsLayoutUtils::GetEventCoordinatesRelativeTo(aEvent, popup))) {
nsLayoutUtils::GetEventCoordinatesRelativeTo(aEvent, popup)) &&
!nsContentUtils::ContentIsCrossDocDescendantOf(
doc, popup->GetContent())) {
// The event should target the popup
frame = popup;
break;

View File

@ -54,6 +54,7 @@ _CHROME_FILES = \
test_bug514660.xul \
test_printpreview.xul \
printpreview_helper.xul \
test_bug533845.xul \
$(NULL)
libs:: $(_CHROME_FILES)

View File

@ -0,0 +1,43 @@
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=533845
-->
<window title="Mozilla Bug 533845"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="doTest()">
<script type="application/javascript"
src="chrome://mochikit/content/MochiKit/packed.js"></script>
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<panel id="panel" width="50" height="50" onpopupshown="continueTest()">
<iframe type="content" id="contentFrame" src="data:text/html,&lt;html&gt;&lt;body onclick='document.body.textContent=1&gt;This is a panel!&lt;/body&gt;&lt;/html&gt;" width="500" height="500"/>
</panel>
<body xmlns="http://www.w3.org/1999/xhtml">
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=533845"
target="_blank">Mozilla Bug 533845</a>
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
function doTest() {
document.getElementById('panel').showPopup();
}
function continueTest() {
var ifrwindow = document.getElementById("contentFrame").contentWindow;
ifrwindow.focus();
var utils = ifrwindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindowUtils);
utils.sendMouseEvent("mousedown", 1, 1, 0, 1, 0);
utils.sendMouseEvent("mouseup", 1, 1, 0, 1, 0);
is(ifrwindow.document.body.textContent, 1, "Should have got a click event!");
SimpleTest.finish();
}
]]></script>
</window>