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

--HG--
extra : rebase_source : e9eb26724c1889d893aa717fa6b4c7811099bc6b
This commit is contained in:
Dave Townsend 2015-03-03 14:07:08 -08:00
parent 33c5317337
commit 3e934217ce
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>