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"); }