mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 07:15:46 +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 */
|
/* static */
|
||||||
void
|
void
|
||||||
nsContentUtils::DestroyAnonymousContent(nsCOMPtr<nsIContent>* aContent)
|
nsContentUtils::DestroyAnonymousContent(nsCOMPtr<nsIContent>* aContent)
|
||||||
{
|
{
|
||||||
if (*aContent) {
|
if (*aContent) {
|
||||||
(*aContent)->UnbindFromTree();
|
AddScriptRunner(new AnonymousContentDestroyer(aContent));
|
||||||
*aContent = nsnull;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user