Bug 1139099: Dispatch DOMDocElementInserted to match the document-element-inserted observer notification. r=mrbkap

This commit is contained in:
Dave Townsend 2015-03-03 14:07:08 -08:00
parent 680a3ae811
commit 5d1cec2db6
4 changed files with 30 additions and 0 deletions

View File

@ -1550,4 +1550,8 @@ nsContentSink::NotifyDocElementCreated(nsIDocument* aDoc)
NotifyObservers(domDoc, "document-element-inserted",
EmptyString().get());
}
nsContentUtils::DispatchChromeEvent(aDoc, aDoc,
NS_LITERAL_STRING("DOMDocElementInserted"),
true, false);
}

View File

@ -13,3 +13,4 @@ support-files =
file_bug1108547-1.html
file_bug1108547-2.html
file_bug1108547-3.html
[browser_DOMDocElementInserted.js]

View File

@ -0,0 +1,24 @@
// Tests that the DOMDocElementInserted event is visible on the frame
add_task(function*() {
let tab = gBrowser.addTab();
let uri = "data:text/html;charset=utf-8,<html/>"
let eventPromise = ContentTask.spawn(tab.linkedBrowser, null, function() {
Cu.import("resource://gre/modules/PromiseUtils.jsm");
let deferred = PromiseUtils.defer();
let listener = (event) => {
removeEventListener("DOMDocElementInserted", listener, true);
deferred.resolve(event.target.documentURIObject.spec);
};
addEventListener("DOMDocElementInserted", listener, true);
return deferred.promise;
});
tab.linkedBrowser.loadURI(uri);
let loadedURI = yield eventPromise;
is(loadedURI, uri, "Should have seen the event for the right URI");
gBrowser.removeTab(tab);
});

View File

@ -9,5 +9,6 @@
<script type="application/javascript">
SimpleTest.waitForExplicitFinish();
window.addEventListener("DOMWindowCreated", function() { ok(false, "DOMWindowCreated should not have fired"); }, false);
window.addEventListener("DOMDocElementInserted", function() { ok(false, "DOMDocElementInserted should not have fired"); }, false);
<iframe src="data:text/plain,Hi"></iframe>