From 4161c5faf795aa76638f611a5d0778858ec9f4c5 Mon Sep 17 00:00:00 2001 From: Andrew McCreight Date: Thu, 10 Apr 2014 07:05:21 -0700 Subject: [PATCH] Bug 992578, part 2 - Make nsXBLResourceLoader::mLoader private. r=mrbkap --- dom/xbl/nsXBLPrototypeBinding.cpp | 3 +-- dom/xbl/nsXBLPrototypeResources.cpp | 13 +++++++++++++ dom/xbl/nsXBLPrototypeResources.h | 19 ++++++++++++++----- dom/xbl/nsXBLResourceLoader.cpp | 2 +- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/dom/xbl/nsXBLPrototypeBinding.cpp b/dom/xbl/nsXBLPrototypeBinding.cpp index fedaada325db..95ced49f54e7 100644 --- a/dom/xbl/nsXBLPrototypeBinding.cpp +++ b/dom/xbl/nsXBLPrototypeBinding.cpp @@ -148,8 +148,7 @@ nsXBLPrototypeBinding::Traverse(nsCycleCollectionTraversalCallback &cb) const NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "proto mBinding"); cb.NoteXPCOMChild(mBinding); if (mResources) { - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "proto mResources mLoader"); - cb.NoteXPCOMChild(mResources->mLoader); + mResources->Traverse(cb); } ImplCycleCollectionTraverse(cb, mInterfaceTable, "proto mInterfaceTable"); } diff --git a/dom/xbl/nsXBLPrototypeResources.cpp b/dom/xbl/nsXBLPrototypeResources.cpp index 96e9f65dd19a..77a397c61033 100644 --- a/dom/xbl/nsXBLPrototypeResources.cpp +++ b/dom/xbl/nsXBLPrototypeResources.cpp @@ -109,3 +109,16 @@ nsXBLPrototypeResources::Write(nsIObjectOutputStream* aStream) return mLoader->Write(aStream); return NS_OK; } + +void +nsXBLPrototypeResources::Traverse(nsCycleCollectionTraversalCallback &cb) const +{ + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "proto mResources mLoader"); + cb.NoteXPCOMChild(mLoader); +} + +void +nsXBLPrototypeResources::ClearLoader() +{ + NS_RELEASE(mLoader); +} diff --git a/dom/xbl/nsXBLPrototypeResources.h b/dom/xbl/nsXBLPrototypeResources.h index 819cfe2147a9..191cefcee34c 100644 --- a/dom/xbl/nsXBLPrototypeResources.h +++ b/dom/xbl/nsXBLPrototypeResources.h @@ -22,6 +22,9 @@ class nsCSSStyleSheet; class nsXBLPrototypeResources { public: + nsXBLPrototypeResources(nsXBLPrototypeBinding* aBinding); + ~nsXBLPrototypeResources(); + void LoadResources(bool* aResult); void AddResource(nsIAtom* aResourceType, const nsAString& aSrc); void AddResourceListener(nsIContent* aElement); @@ -29,13 +32,19 @@ public: nsresult Write(nsIObjectOutputStream* aStream); - nsXBLPrototypeResources(nsXBLPrototypeBinding* aBinding); - ~nsXBLPrototypeResources(); + void Traverse(nsCycleCollectionTraversalCallback &cb) const; + + void ClearLoader(); -// MEMBER VARIABLES - nsXBLResourceLoader* mLoader; // A loader object. Exists only long enough to load resources, and then it dies. typedef nsTArray > sheet_array_type; - sheet_array_type mStyleSheetList; // A list of loaded stylesheets for this binding. + +private: + // A loader object. Exists only long enough to load resources, and then it dies. + nsXBLResourceLoader* mLoader; + +public: + // A list of loaded stylesheets for this binding. + sheet_array_type mStyleSheetList; // The list of stylesheets converted to a rule processor. nsCOMPtr mRuleProcessor; diff --git a/dom/xbl/nsXBLResourceLoader.cpp b/dom/xbl/nsXBLResourceLoader.cpp index 620831efe305..d03b1e77fd25 100644 --- a/dom/xbl/nsXBLResourceLoader.cpp +++ b/dom/xbl/nsXBLResourceLoader.cpp @@ -274,7 +274,7 @@ nsXBLResourceLoader::NotifyBoundElements() mBoundElements.Clear(); // Delete ourselves. - NS_RELEASE(mResources->mLoader); + mResources->ClearLoader(); } nsresult