diff --git a/src/main/java/org/htmlunit/javascript/configuration/WorkerJavaScriptConfiguration.java b/src/main/java/org/htmlunit/javascript/configuration/WorkerJavaScriptConfiguration.java
index da974a395b..3db6066b23 100644
--- a/src/main/java/org/htmlunit/javascript/configuration/WorkerJavaScriptConfiguration.java
+++ b/src/main/java/org/htmlunit/javascript/configuration/WorkerJavaScriptConfiguration.java
@@ -120,6 +120,7 @@
import org.htmlunit.javascript.host.worker.ServiceWorkerRegistration;
import org.htmlunit.javascript.host.worker.SyncManager;
import org.htmlunit.javascript.host.worker.Worker;
+import org.htmlunit.javascript.host.worker.WorkerGlobalScope;
import org.htmlunit.javascript.host.worker.WorkerLocation;
import org.htmlunit.javascript.host.worker.WorkerNavigator;
import org.htmlunit.javascript.host.xml.FormData;
@@ -167,7 +168,7 @@ public final class WorkerJavaScriptConfiguration extends AbstractJavaScriptConfi
WebGLRenderbuffer.class, WebGLRenderingContext.class,
WebGLSampler.class, WebGLShader.class, WebGLShaderPrecisionFormat.class, WebGLSync.class, WebGLTexture.class,
WebGLTransformFeedback.class, WebGLUniformLocation.class, WebGLVertexArrayObject.class, WebSocket.class,
- Worker.class, WorkerLocation.class, WorkerNavigator.class,
+ Worker.class, WorkerGlobalScope.class, WorkerLocation.class, WorkerNavigator.class,
XMLHttpRequest.class, XMLHttpRequestEventTarget.class, XMLHttpRequestUpload.class
};
diff --git a/src/main/java/org/htmlunit/javascript/host/worker/DedicatedWorkerGlobalScope.java b/src/main/java/org/htmlunit/javascript/host/worker/DedicatedWorkerGlobalScope.java
index b9ac9484a3..346ac6ba01 100644
--- a/src/main/java/org/htmlunit/javascript/host/worker/DedicatedWorkerGlobalScope.java
+++ b/src/main/java/org/htmlunit/javascript/host/worker/DedicatedWorkerGlobalScope.java
@@ -50,10 +50,8 @@
import org.htmlunit.javascript.configuration.JsxSetter;
import org.htmlunit.javascript.configuration.WorkerJavaScriptConfiguration;
import org.htmlunit.javascript.host.Window;
-import org.htmlunit.javascript.host.WindowOrWorkerGlobalScope;
import org.htmlunit.javascript.host.WindowOrWorkerGlobalScopeMixin;
import org.htmlunit.javascript.host.event.Event;
-import org.htmlunit.javascript.host.event.EventTarget;
import org.htmlunit.javascript.host.event.MessageEvent;
import org.htmlunit.util.MimeType;
@@ -65,7 +63,7 @@
* @author Rural Hunter
*/
@JsxClass
-public class DedicatedWorkerGlobalScope extends EventTarget implements WindowOrWorkerGlobalScope {
+public class DedicatedWorkerGlobalScope extends WorkerGlobalScope {
private static final Log LOG = LogFactory.getLog(DedicatedWorkerGlobalScope.class);
@@ -244,28 +242,6 @@ public void jsSetName(final Scriptable name) {
name_ = JavaScriptEngine.toString(name);
}
- /**
- * Creates a base-64 encoded ASCII string from a string of binary data.
- * @param stringToEncode string to encode
- * @return the encoded string
- */
- @JsxFunction
- @Override
- public String btoa(final String stringToEncode) {
- return WindowOrWorkerGlobalScopeMixin.btoa(stringToEncode);
- }
-
- /**
- * Decodes a string of data which has been encoded using base-64 encoding.
- * @param encodedData the encoded string
- * @return the decoded value
- */
- @JsxFunction
- @Override
- public String atob(final String encodedData) {
- return WindowOrWorkerGlobalScopeMixin.atob(encodedData);
- }
-
/**
* Posts a message to the {@link Worker} in the page's context.
* @param message the message
diff --git a/src/main/java/org/htmlunit/javascript/host/worker/WorkerGlobalScope.java b/src/main/java/org/htmlunit/javascript/host/worker/WorkerGlobalScope.java
new file mode 100644
index 0000000000..e614b741e5
--- /dev/null
+++ b/src/main/java/org/htmlunit/javascript/host/worker/WorkerGlobalScope.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2002-2024 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.htmlunit.javascript.host.worker;
+
+import org.htmlunit.javascript.JavaScriptEngine;
+import org.htmlunit.javascript.configuration.JsxClass;
+import org.htmlunit.javascript.configuration.JsxConstructor;
+import org.htmlunit.javascript.configuration.JsxFunction;
+import org.htmlunit.javascript.host.WindowOrWorkerGlobalScope;
+import org.htmlunit.javascript.host.WindowOrWorkerGlobalScopeMixin;
+import org.htmlunit.javascript.host.event.EventTarget;
+
+/**
+ * The scope for the execution of {@link Worker}s.
+ *
+ * @author Ronald Brill
+ */
+@JsxClass
+public class WorkerGlobalScope extends EventTarget implements WindowOrWorkerGlobalScope {
+ /**
+ * For prototype instantiation.
+ */
+ public WorkerGlobalScope() {
+ // prototype constructor
+ super();
+ }
+
+ /**
+ * JavaScript constructor.
+ */
+ @Override
+ @JsxConstructor
+ public void jsConstructor() {
+ throw JavaScriptEngine.reportRuntimeError("Illegal constructor.");
+ }
+
+ /**
+ * Creates a base-64 encoded ASCII string from a string of binary data.
+ * @param stringToEncode string to encode
+ * @return the encoded string
+ */
+ @JsxFunction
+ @Override
+ public String btoa(final String stringToEncode) {
+ return WindowOrWorkerGlobalScopeMixin.btoa(stringToEncode);
+ }
+
+ /**
+ * Decodes a string of data which has been encoded using base-64 encoding.
+ * @param encodedData the encoded string
+ * @return the decoded value
+ */
+ @JsxFunction
+ @Override
+ public String atob(final String encodedData) {
+ return WindowOrWorkerGlobalScopeMixin.atob(encodedData);
+ }
+}
diff --git a/src/test/java/org/htmlunit/general/DedicatedWorkerGlobalScopeClassNameTest.java b/src/test/java/org/htmlunit/general/DedicatedWorkerGlobalScopeClassNameTest.java
index 0d40b35426..30ce1681b3 100644
--- a/src/test/java/org/htmlunit/general/DedicatedWorkerGlobalScopeClassNameTest.java
+++ b/src/test/java/org/htmlunit/general/DedicatedWorkerGlobalScopeClassNameTest.java
@@ -9969,7 +9969,6 @@ public void worker() throws Exception {
*/
@Test
@Alerts("function WorkerGlobalScope() { [native code] }")
- @HtmlUnitNYI(CHROME = "exception", EDGE = "exception", FF = "exception", FF_ESR = "exception")
public void workerGlobalScope() throws Exception {
test("WorkerGlobalScope");
}
diff --git a/src/test/java/org/htmlunit/general/DedicatedWorkerGlobalScopeTypeOfTest.java b/src/test/java/org/htmlunit/general/DedicatedWorkerGlobalScopeTypeOfTest.java
index 86f209fd02..5a25da59d1 100644
--- a/src/test/java/org/htmlunit/general/DedicatedWorkerGlobalScopeTypeOfTest.java
+++ b/src/test/java/org/htmlunit/general/DedicatedWorkerGlobalScopeTypeOfTest.java
@@ -9966,7 +9966,6 @@ public void worker() throws Exception {
*/
@Test
@Alerts("function")
- @HtmlUnitNYI(CHROME = "undefined", EDGE = "undefined", FF = "undefined", FF_ESR = "undefined")
public void workerGlobalScope() throws Exception {
test("WorkerGlobalScope");
}