summaryrefslogtreecommitdiff
path: root/dom/xbl/nsXBLResourceLoader.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/xbl/nsXBLResourceLoader.h')
-rw-r--r--dom/xbl/nsXBLResourceLoader.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/dom/xbl/nsXBLResourceLoader.h b/dom/xbl/nsXBLResourceLoader.h
new file mode 100644
index 0000000000..1311f11f7f
--- /dev/null
+++ b/dom/xbl/nsXBLResourceLoader.h
@@ -0,0 +1,71 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsXBLResourceLoader_h
+#define nsXBLResourceLoader_h
+
+#include "mozilla/Attributes.h"
+#include "nsCOMPtr.h"
+#include "nsICSSLoaderObserver.h"
+#include "nsCOMArray.h"
+#include "nsCycleCollectionParticipant.h"
+
+class nsIContent;
+class nsIAtom;
+class nsXBLPrototypeResources;
+class nsXBLPrototypeBinding;
+struct nsXBLResource;
+class nsIObjectOutputStream;
+
+// *********************************************************************/
+// The XBLResourceLoader class
+
+class nsXBLResourceLoader : public nsICSSLoaderObserver
+{
+public:
+ NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+ NS_DECL_CYCLE_COLLECTION_CLASS(nsXBLResourceLoader)
+
+ // nsICSSLoaderObserver
+ NS_IMETHOD StyleSheetLoaded(mozilla::StyleSheet* aSheet,
+ bool aWasAlternate,
+ nsresult aStatus) override;
+
+ void LoadResources(bool* aResult);
+ void AddResource(nsIAtom* aResourceType, const nsAString& aSrc);
+ void AddResourceListener(nsIContent* aElement);
+
+ nsXBLResourceLoader(nsXBLPrototypeBinding* aBinding,
+ nsXBLPrototypeResources* aResources);
+
+ void NotifyBoundElements();
+
+ nsresult Write(nsIObjectOutputStream* aStream);
+
+// MEMBER VARIABLES
+ nsXBLPrototypeBinding* mBinding; // A pointer back to our binding.
+ nsXBLPrototypeResources* mResources; // A pointer back to our resources
+ // information. May be null if the
+ // resources have already been
+ // destroyed.
+
+ nsXBLResource* mResourceList; // The list of resources we need to load.
+ nsXBLResource* mLastResource;
+
+ bool mLoadingResources;
+ // We need mInLoadResourcesFunc because we do a mixture of sync and
+ // async loads.
+ bool mInLoadResourcesFunc;
+ int16_t mPendingSheets; // The number of stylesheets that have yet to load.
+
+ // Bound elements that are waiting on the stylesheets and scripts.
+ nsCOMArray<nsIContent> mBoundElements;
+
+protected:
+ virtual ~nsXBLResourceLoader();
+};
+
+#endif