Bug 1573630: Remove usage of nsIDocShellTreeItem in nsCoreUtils::IsTopLevelContentDocInProcess. r=MarcoZ

This usage of nsIDocShellTreeItem is safe, but nsIDocShellTreeItem is going away and it's trivial to convert this to use BrowsingContext.
As a bonus, the code is also shorter and more readable.

Differential Revision: https://phabricator.services.mozilla.com/D79022
This commit is contained in:
James Teh 2020-06-10 05:03:07 +00:00
parent 97cb27b85a
commit 26c591b2c1

View File

@ -360,19 +360,12 @@ bool nsCoreUtils::IsContentDocument(Document* aDocument) {
}
bool nsCoreUtils::IsTopLevelContentDocInProcess(Document* aDocumentNode) {
nsCOMPtr<nsIDocShellTreeItem> treeItem(aDocumentNode->GetDocShell());
nsCOMPtr<nsIDocShellTreeItem> parentTreeItem;
treeItem->GetInProcessParent(getter_AddRefs(parentTreeItem));
// Top level content document running in own process doesn't have parent.
if (XRE_IsContentProcess()) return !parentTreeItem;
// Parent of docshell for tab document running in chrome process is root.
nsCOMPtr<nsIDocShellTreeItem> rootTreeItem;
treeItem->GetInProcessRootTreeItem(getter_AddRefs(rootTreeItem));
return parentTreeItem == rootTreeItem;
BrowsingContext* bc = aDocumentNode->GetBrowsingContext();
return bc->IsContent() && (
// Tab document.
bc->IsTop() ||
// Out-of-process iframe.
!bc->GetParent()->IsInProcess());
}
bool nsCoreUtils::IsErrorPage(Document* aDocument) {