Skip to content

Commit

Permalink
WorkerGlobalScope introduced (#816)
Browse files Browse the repository at this point in the history
  • Loading branch information
rbri committed Jul 30, 2024
1 parent d3e0e2b commit ef6b166
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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);

Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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");
}
Expand Down

0 comments on commit ef6b166

Please sign in to comment.