зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1484363: Treat FrameMessageManagers as chrome event targets. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D3663 --HG-- extra : rebase_source : aad2e4c00e6635658c736cf9400f2fb3ce5809ac
This commit is contained in:
Родитель
f90c2a2950
Коммит
7f10bb1ced
|
@ -51,11 +51,11 @@ function prepareForVisibilityEvents(browser, expectedOrder) {
|
|||
|
||||
rmvHide = BrowserTestUtils.addContentEventListener(browser, "pagehide",
|
||||
() => eventListener("pagehide"),
|
||||
{mozSystemGroup: true}, checkFn,
|
||||
{}, checkFn,
|
||||
false, false);
|
||||
rmvShow = BrowserTestUtils.addContentEventListener(browser, "pageshow",
|
||||
() => eventListener("pageshow"),
|
||||
{mozSystemGroup: true}, checkFn,
|
||||
{}, checkFn,
|
||||
false, false);
|
||||
});
|
||||
}
|
||||
|
@ -95,7 +95,7 @@ add_task(async function test_swap_frameloader_pagevisibility_events() {
|
|||
await ContentTask.spawn(emptyBrowser, {}, async() => {
|
||||
if (content.document.visibilityState === "hidden") {
|
||||
info("waiting for hidden emptyBrowser to pageshow");
|
||||
await ContentTaskUtils.waitForEvent(content, "pageshow", {mozSystemGroup: true});
|
||||
await ContentTaskUtils.waitForEvent(content, "pageshow", {});
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "nsIContentInlines.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsINode.h"
|
||||
#include "nsIScriptObjectPrincipal.h"
|
||||
#include "nsPIDOMWindow.h"
|
||||
#include "AnimationEvent.h"
|
||||
#include "BeforeUnloadEvent.h"
|
||||
|
@ -104,22 +105,23 @@ static bool IsEventTargetChrome(EventTarget* aEventTarget,
|
|||
}
|
||||
|
||||
nsIDocument* doc = nullptr;
|
||||
nsCOMPtr<nsINode> node = do_QueryInterface(aEventTarget);
|
||||
if (node) {
|
||||
if (nsCOMPtr<nsINode> node = do_QueryInterface(aEventTarget)) {
|
||||
doc = node->OwnerDoc();
|
||||
} else {
|
||||
nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aEventTarget);
|
||||
if (!window) {
|
||||
return false;
|
||||
}
|
||||
} else if (nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aEventTarget)) {
|
||||
doc = window->GetExtantDoc();
|
||||
}
|
||||
|
||||
// nsContentUtils::IsChromeDoc is null-safe.
|
||||
bool isChrome = nsContentUtils::IsChromeDoc(doc);
|
||||
if (aDocument && doc) {
|
||||
nsCOMPtr<nsIDocument> retVal = doc;
|
||||
retVal.swap(*aDocument);
|
||||
bool isChrome = false;
|
||||
if (doc) {
|
||||
isChrome = nsContentUtils::IsChromeDoc(doc);
|
||||
if (aDocument) {
|
||||
nsCOMPtr<nsIDocument> retVal = doc;
|
||||
retVal.swap(*aDocument);
|
||||
}
|
||||
} else if (nsCOMPtr<nsIScriptObjectPrincipal> sop =
|
||||
do_QueryInterface(aEventTarget->GetOwnerGlobal())) {
|
||||
isChrome = nsContentUtils::IsSystemPrincipal(sop->GetPrincipal());
|
||||
}
|
||||
return isChrome;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче