mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 812744 part 2. Use the document scope object, not the script global, to find the JSObject to use as a scope when creating event handlers. r=smaug
Anoother option would be to just explicitly wrap the node and use that, for what it's worth. That wouldn't give us an nsIScriptContext, though.
This commit is contained in:
parent
52e3d77eed
commit
a03434327e
@ -604,7 +604,11 @@ nsEventListenerManager::SetEventHandler(nsIAtom *aName,
|
||||
// XXX sXBL/XBL2 issue -- do we really want the owner here? What
|
||||
// if that's the XBL document?
|
||||
doc = node->OwnerDoc();
|
||||
global = doc->GetScriptGlobalObject();
|
||||
MOZ_ASSERT(!doc->IsLoadedAsData(), "Should not get in here at all");
|
||||
|
||||
// We want to allow compiling an event handler even in an unloaded
|
||||
// document, so use GetScopeObject here, not GetScriptHandlingObject.
|
||||
global = doc->GetScopeObject();
|
||||
} else {
|
||||
nsCOMPtr<nsPIDOMWindow> win = GetTargetAsInnerWindow();
|
||||
if (win) {
|
||||
@ -623,6 +627,13 @@ nsEventListenerManager::SetEventHandler(nsIAtom *aName,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
nsCOMPtr<nsPIDOMWindow> win = do_QueryInterface(global);
|
||||
if (win) {
|
||||
MOZ_ASSERT(win->IsInnerWindow(), "We should not have an outer window here!");
|
||||
}
|
||||
#endif
|
||||
|
||||
nsresult rv = NS_OK;
|
||||
// return early preventing the event listener from being added
|
||||
// 'doc' is fetched above
|
||||
|
@ -99,6 +99,7 @@ MOCHITEST_FILES = \
|
||||
test_bug716822.html \
|
||||
test_bug742376.html \
|
||||
test_dragstart.html \
|
||||
test_bug812744.html \
|
||||
$(NULL)
|
||||
|
||||
MOCHITEST_CHROME_FILES = \
|
||||
|
38
content/events/test/test_bug812744.html
Normal file
38
content/events/test/test_bug812744.html
Normal file
@ -0,0 +1,38 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=812744
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for Bug 812744</title>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=812744">Mozilla Bug 812744</a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none">
|
||||
<iframe id="f"></iframe>
|
||||
</div>
|
||||
<pre id="test">
|
||||
<script type="application/javascript">
|
||||
|
||||
/** Test for Bug 812744 **/
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
addLoadEvent(function() {
|
||||
var f = $("f");
|
||||
var el = f.contentDocument.documentElement;
|
||||
f.onload = function() {
|
||||
el.setAttribute("onmouseleave", "(void 0)");
|
||||
is(el.onmouseleave.toString(), "function onmouseleave(event) {\n(void 0)\n}",
|
||||
"Should have a function here");
|
||||
SimpleTest.finish();
|
||||
};
|
||||
f.src = "http://www.example.com/"
|
||||
});
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user