diff --git a/AndroidCompat/build.gradle.kts b/AndroidCompat/build.gradle.kts index 4c86208..dfab985 100644 --- a/AndroidCompat/build.gradle.kts +++ b/AndroidCompat/build.gradle.kts @@ -53,7 +53,11 @@ dependencies { // AndroidX annotations compileOnly( "androidx.annotation:annotation:1.2.0-alpha01") -// compileOnly("io.reactivex:rxjava:1.3.8") + // substitute for duktape-android + // 'org.mozilla:rhino' includes some code that we don't need so use 'org.mozilla:rhino-runtime' instead + implementation("org.mozilla:rhino-runtime:1.7.13") + // 'org.mozilla:rhino-engine' provides the same interface as 'javax.script' a.k.a Nashorn + implementation("org.mozilla:rhino-engine:1.7.13") } //def fatJarTask = tasks.getByPath(':AndroidCompat:JVMPatch:fatJar') diff --git a/AndroidCompat/src/main/java/com/squareup/duktape/Duktape.java b/AndroidCompat/src/main/java/com/squareup/duktape/Duktape.java index 18f1a34..cb30a95 100644 --- a/AndroidCompat/src/main/java/com/squareup/duktape/Duktape.java +++ b/AndroidCompat/src/main/java/com/squareup/duktape/Duktape.java @@ -1,20 +1,12 @@ -/* - * Copyright (C) 2015 Square, 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 - * - * http://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 com.squareup.duktape; +/* + * Copyright (C) Contributors to the Suwayomi project + * + * 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 https://mozilla.org/MPL/2.0/. */ + import kotlin.NotImplementedError; import javax.script.ScriptEngine; @@ -22,11 +14,18 @@ import javax.script.ScriptEngineManager; import javax.script.ScriptException; import java.io.Closeable; -/** A simple EMCAScript (Javascript) interpreter. */ +/* Note (March 2021): + * The old implementation for duktape-android used the nashorn engine which is deprecated. + * This new implementation uses Mozilla's Rhino: https://github.com/mozilla/rhino + */ + +/** + * A simple EMCAScript (Javascript) interpreter. + */ public final class Duktape implements Closeable, AutoCloseable { private ScriptEngineManager factory = new ScriptEngineManager(); - private ScriptEngine engine = factory.getEngineByName("JavaScript"); + private ScriptEngine engine = factory.getEngineByName("rhino"); /** * Create a new interpreter instance. Calls to this method must matched with @@ -38,17 +37,6 @@ public final class Duktape implements Closeable, AutoCloseable { private Duktape() {} - /** - * Evaluate {@code script} and return a result. {@code fileName} will be used in error - * reporting. Note that the result must be one of the supported Java types or the call will - * return null. - * - * @throws DuktapeException if there is an error evaluating the script. - */ - public synchronized Object evaluate(String script, String fileName) { - throw new NotImplementedError("Not implemented!"); - } - /** * Evaluate {@code script} and return a result. Note that the result must be one of the * supported Java types or the call will return null. @@ -76,18 +64,18 @@ public final class Duktape implements Closeable, AutoCloseable { throw new NotImplementedError("Not implemented!"); } - /** - * Attaches to a global JavaScript object called {@code name} that implements {@code type}. - * {@code type} defines the interface implemented in JavaScript that will be accessible to Java. - * {@code type} must be an interface that does not extend any other interfaces, and cannot define - * any overloaded methods. - *
Methods of the interface may return {@code void} or any of the following supported argument
- * types: {@code boolean}, {@link Boolean}, {@code int}, {@link Integer}, {@code double},
- * {@link Double}, {@link String}.
- */
- public synchronized Methods of the interface may return {@code void} or any of the following supported argument
+// * types: {@code boolean}, {@link Boolean}, {@code int}, {@link Integer}, {@code double},
+// * {@link Double}, {@link String}.
+// */
+// public synchronized