summaryrefslogtreecommitdiffstats
path: root/dom/script/ModuleScript.h
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2020-07-01 12:57:29 +0000
committerMoonchild <moonchild@palemoon.org>2020-07-01 12:57:29 +0000
commitfd602fbffbaf8e7d7e58c9ffe9b0b188cb7c65de (patch)
tree29ef38e1656883879b306f750dfec5a3281f5c94 /dom/script/ModuleScript.h
parentc7330b5eb48cdd69b06e5f55643ea4c94303381f (diff)
parent9056191e67055c5e96ecc352e592ea9ae94a2236 (diff)
downloadUXP-fd602fbffbaf8e7d7e58c9ffe9b0b188cb7c65de.tar
UXP-fd602fbffbaf8e7d7e58c9ffe9b0b188cb7c65de.tar.gz
UXP-fd602fbffbaf8e7d7e58c9ffe9b0b188cb7c65de.tar.lz
UXP-fd602fbffbaf8e7d7e58c9ffe9b0b188cb7c65de.tar.xz
UXP-fd602fbffbaf8e7d7e58c9ffe9b0b188cb7c65de.zip
Merge branch 'es-modules-work'
Diffstat (limited to 'dom/script/ModuleScript.h')
-rw-r--r--dom/script/ModuleScript.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/dom/script/ModuleScript.h b/dom/script/ModuleScript.h
new file mode 100644
index 000000000..dd0d07e84
--- /dev/null
+++ b/dom/script/ModuleScript.h
@@ -0,0 +1,67 @@
+/* -*- 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 mozilla_dom_ModuleScript_h
+#define mozilla_dom_ModuleScript_h
+
+#include "nsCOMPtr.h"
+#include "nsCycleCollectionParticipant.h"
+#include "jsapi.h"
+
+class nsIURI;
+
+namespace mozilla {
+namespace dom {
+
+class ScriptLoader;
+
+class ModuleScript final : public nsISupports
+{
+ enum InstantiationState {
+ Uninstantiated,
+ Instantiated,
+ Errored
+ };
+
+ RefPtr<ScriptLoader> mLoader;
+ nsCOMPtr<nsIURI> mBaseURL;
+ JS::Heap<JSObject*> mModuleRecord;
+ JS::Heap<JS::Value> mException;
+ InstantiationState mInstantiationState;
+
+ ~ModuleScript();
+
+public:
+ NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+ NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ModuleScript)
+
+ ModuleScript(ScriptLoader* aLoader,
+ nsIURI* aBaseURL,
+ JS::Handle<JSObject*> aModuleRecord);
+
+ ScriptLoader* Loader() const { return mLoader; }
+ JSObject* ModuleRecord() const { return mModuleRecord; }
+ JS::Value Exception() const { return mException; }
+ nsIURI* BaseURL() const { return mBaseURL; }
+
+ void SetInstantiationResult(JS::Handle<JS::Value> aMaybeException);
+ bool IsUninstantiated() const {
+ return mInstantiationState == Uninstantiated;
+ }
+ bool IsInstantiated() const {
+ return mInstantiationState == Instantiated;
+ }
+ bool InstantiationFailed() const {
+ return mInstantiationState == Errored;
+ }
+
+ void UnlinkModuleRecord();
+};
+
+} // dom namespace
+} // mozilla namespace
+
+#endif // mozilla_dom_ModuleScript_h \ No newline at end of file