From 9056191e67055c5e96ecc352e592ea9ae94a2236 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Wed, 1 Jul 2020 10:15:24 +0000 Subject: Issue #1603 - Part 2: Split some classes out of ScriptLoader.cpp This splits ScriptLoader up the same way Mozilla did with the exception of ScriptRequest due to the fact that ScriptLoader and ScriptRequest are interdependent and would create a circular dependency if split apart when not using unified building. --- dom/script/ModuleScript.h | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 dom/script/ModuleScript.h (limited to 'dom/script/ModuleScript.h') 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 mLoader; + nsCOMPtr mBaseURL; + JS::Heap mModuleRecord; + JS::Heap 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 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 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 -- cgit v1.2.3 From 046534432d2914c80bcab36797fe0a43ff332a98 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sat, 4 Jul 2020 10:35:22 +0000 Subject: Issue #618 - Remove eager instantiation This backs out the stuff added in Bug 1295978. Ref: BZ 1295978, 1388728 --- dom/script/ModuleScript.h | 20 -------------------- 1 file changed, 20 deletions(-) (limited to 'dom/script/ModuleScript.h') diff --git a/dom/script/ModuleScript.h b/dom/script/ModuleScript.h index dd0d07e84..97fdb8ed1 100644 --- a/dom/script/ModuleScript.h +++ b/dom/script/ModuleScript.h @@ -20,17 +20,9 @@ class ScriptLoader; class ModuleScript final : public nsISupports { - enum InstantiationState { - Uninstantiated, - Instantiated, - Errored - }; - RefPtr mLoader; nsCOMPtr mBaseURL; JS::Heap mModuleRecord; - JS::Heap mException; - InstantiationState mInstantiationState; ~ModuleScript(); @@ -44,20 +36,8 @@ public: 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 aMaybeException); - bool IsUninstantiated() const { - return mInstantiationState == Uninstantiated; - } - bool IsInstantiated() const { - return mInstantiationState == Instantiated; - } - bool InstantiationFailed() const { - return mInstantiationState == Errored; - } - void UnlinkModuleRecord(); }; -- cgit v1.2.3 From 66bf3a2279891ed621738fe988359758df881e41 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sat, 4 Jul 2020 16:28:30 +0000 Subject: Issue #618 - Further align error handling for module scripts with the spec Ref: BZ 1388728 --- dom/script/ModuleScript.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'dom/script/ModuleScript.h') diff --git a/dom/script/ModuleScript.h b/dom/script/ModuleScript.h index 97fdb8ed1..571359859 100644 --- a/dom/script/ModuleScript.h +++ b/dom/script/ModuleScript.h @@ -23,6 +23,7 @@ class ModuleScript final : public nsISupports RefPtr mLoader; nsCOMPtr mBaseURL; JS::Heap mModuleRecord; + JS::Heap mError; ~ModuleScript(); @@ -31,13 +32,18 @@ public: NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ModuleScript) ModuleScript(ScriptLoader* aLoader, - nsIURI* aBaseURL, - JS::Handle aModuleRecord); + nsIURI* aBaseURL); + + void SetModuleRecord(JS::Handle aModuleRecord); + void SetPreInstantiationError(const JS::Value& aError); ScriptLoader* Loader() const { return mLoader; } JSObject* ModuleRecord() const { return mModuleRecord; } nsIURI* BaseURL() const { return mBaseURL; } + bool IsErrored() const; + JS::Value Error() const; + void UnlinkModuleRecord(); }; -- cgit v1.2.3 From 43e0632cd474265ef0660bf881f4472996c8ad5a Mon Sep 17 00:00:00 2001 From: Moonchild Date: Wed, 8 Jul 2020 12:58:30 +0000 Subject: Issue #618 - Align error handling for module scripts with the spec (again) This updates module implementation to match spec regarding handling of instantiation errors, after it was changed yet again, this time to not remember instantiation errors, but instead immediately rethrow applicable ones. Ref: BZ 1420420 --- dom/script/ModuleScript.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'dom/script/ModuleScript.h') diff --git a/dom/script/ModuleScript.h b/dom/script/ModuleScript.h index 571359859..f765aa0fa 100644 --- a/dom/script/ModuleScript.h +++ b/dom/script/ModuleScript.h @@ -23,7 +23,8 @@ class ModuleScript final : public nsISupports RefPtr mLoader; nsCOMPtr mBaseURL; JS::Heap mModuleRecord; - JS::Heap mError; + JS::Heap mParseError; + JS::Heap mErrorToRethrow; ~ModuleScript(); @@ -35,14 +36,17 @@ public: nsIURI* aBaseURL); void SetModuleRecord(JS::Handle aModuleRecord); - void SetPreInstantiationError(const JS::Value& aError); + void SetParseError(const JS::Value& aError); + void SetErrorToRethrow(const JS::Value& aError); ScriptLoader* Loader() const { return mLoader; } JSObject* ModuleRecord() const { return mModuleRecord; } nsIURI* BaseURL() const { return mBaseURL; } - bool IsErrored() const; - JS::Value Error() const; + JS::Value ParseError() const { return mParseError; } + JS::Value ErrorToRethrow() const { return mErrorToRethrow; } + bool HasParseError() const { return !mParseError.isUndefined(); } + bool HasErrorToRethrow() const { return !mErrorToRethrow.isUndefined(); } void UnlinkModuleRecord(); }; -- cgit v1.2.3 From a680bdc637e0393aaa08d575c66f7166b788b443 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Wed, 23 Sep 2020 13:55:00 +0000 Subject: Issue #1656 - Part 1: Nuke most vim config lines in the tree. Since these are just interpreted comments, there's 0 impact on actual code. This removes all lines that match /* vim: set(.*)tw=80: */ with S&R -- there are a few others scattered around which will be removed manually in a second part. --- dom/script/ModuleScript.h | 1 - 1 file changed, 1 deletion(-) (limited to 'dom/script/ModuleScript.h') diff --git a/dom/script/ModuleScript.h b/dom/script/ModuleScript.h index f765aa0fa..7a4a7d3d4 100644 --- a/dom/script/ModuleScript.h +++ b/dom/script/ModuleScript.h @@ -1,5 +1,4 @@ /* -*- 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/. */ -- cgit v1.2.3