mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-16 23:05:42 +00:00
Bug 489008. Destroy anonymous content off a script-runner. r=bzbarsky
This commit is contained in:
parent
97c6b9c07b
commit
14fd51447e
@ -3878,13 +3878,31 @@ nsContentUtils::IsInSameAnonymousTree(nsINode* aNode,
|
||||
|
||||
}
|
||||
|
||||
class AnonymousContentDestroyer : public nsRunnable {
|
||||
public:
|
||||
AnonymousContentDestroyer(nsCOMPtr<nsIContent>* aContent) {
|
||||
mContent.swap(*aContent);
|
||||
mParent = mContent->GetParent();
|
||||
mDoc = mContent->GetOwnerDoc();
|
||||
}
|
||||
NS_IMETHOD Run() {
|
||||
mContent->UnbindFromTree();
|
||||
return NS_OK;
|
||||
}
|
||||
private:
|
||||
nsCOMPtr<nsIContent> mContent;
|
||||
// Hold strong refs to the parent content and document so that they
|
||||
// don't die unexpectedly
|
||||
nsCOMPtr<nsIDocument> mDoc;
|
||||
nsCOMPtr<nsIContent> mParent;
|
||||
};
|
||||
|
||||
/* static */
|
||||
void
|
||||
nsContentUtils::DestroyAnonymousContent(nsCOMPtr<nsIContent>* aContent)
|
||||
{
|
||||
if (*aContent) {
|
||||
(*aContent)->UnbindFromTree();
|
||||
*aContent = nsnull;
|
||||
AddScriptRunner(new AnonymousContentDestroyer(aContent));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user