opt(ui): use new js beautifier
This commit is contained in:
@@ -8,7 +8,7 @@ import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.RequiresApi;
|
||||
|
||||
import com.stardust.app.OnActivityResultDelegate;
|
||||
import com.stardust.app.OnActivityResultListener;
|
||||
import com.stardust.app.SimpleActivityLifecycleCallbacks;
|
||||
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
|
||||
import com.stardust.autojs.core.console.GlobalStardustConsole;
|
||||
@@ -228,9 +228,9 @@ public abstract class AutoJs {
|
||||
@Override
|
||||
public void request() {
|
||||
Activity activity = mAppUtils.getCurrentActivity();
|
||||
if (activity instanceof OnActivityResultDelegate.DelegateHost) {
|
||||
if (activity instanceof OnActivityResultListener.ObservableActivity) {
|
||||
ScreenCaptureRequester requester = new ActivityScreenCaptureRequester(
|
||||
((OnActivityResultDelegate.DelegateHost) activity).getOnActivityResultDelegateMediator(), activity);
|
||||
((OnActivityResultListener.ObservableActivity) activity).getActivityResultObserver(), activity);
|
||||
requester.setOnActivityResultCallback(mCallback);
|
||||
requester.request();
|
||||
} else {
|
||||
|
||||
@@ -8,7 +8,7 @@ import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.RequiresApi;
|
||||
|
||||
import com.stardust.app.OnActivityResultDelegate;
|
||||
import com.stardust.app.OnActivityResultListener;
|
||||
import com.stardust.util.IntentExtras;
|
||||
|
||||
/**
|
||||
@@ -18,7 +18,7 @@ import com.stardust.util.IntentExtras;
|
||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||
public class ScreenCaptureRequestActivity extends Activity {
|
||||
|
||||
private OnActivityResultDelegate.Mediator mOnActivityResultDelegateMediator = new OnActivityResultDelegate.Mediator();
|
||||
private OnActivityResultListener.ActivityResultObserver mOnActivityResultDelegateActivityResultObserver = new OnActivityResultListener.ActivityResultObserver();
|
||||
private ScreenCaptureRequester mScreenCaptureRequester;
|
||||
private ScreenCaptureRequester.Callback mCallback;
|
||||
|
||||
@@ -44,7 +44,7 @@ public class ScreenCaptureRequestActivity extends Activity {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
mScreenCaptureRequester = new ScreenCaptureRequester.ActivityScreenCaptureRequester(mOnActivityResultDelegateMediator, this);
|
||||
mScreenCaptureRequester = new ScreenCaptureRequester.ActivityScreenCaptureRequester(mOnActivityResultDelegateActivityResultObserver, this);
|
||||
mScreenCaptureRequester.setOnActivityResultCallback(mCallback);
|
||||
mScreenCaptureRequester.request();
|
||||
}
|
||||
@@ -61,7 +61,7 @@ public class ScreenCaptureRequestActivity extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
mOnActivityResultDelegateMediator.onActivityResult(requestCode, resultCode, data);
|
||||
mOnActivityResultDelegateActivityResultObserver.onActivityResult(requestCode, resultCode, data);
|
||||
finish();
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import android.media.projection.MediaProjectionManager;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.RequiresApi;
|
||||
|
||||
import com.stardust.app.OnActivityResultDelegate;
|
||||
import com.stardust.app.OnActivityResultListener;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/5/17.
|
||||
@@ -53,16 +53,16 @@ public interface ScreenCaptureRequester {
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||
class ActivityScreenCaptureRequester extends AbstractScreenCaptureRequester implements ScreenCaptureRequester, OnActivityResultDelegate {
|
||||
class ActivityScreenCaptureRequester extends AbstractScreenCaptureRequester implements ScreenCaptureRequester, OnActivityResultListener {
|
||||
|
||||
private static final int REQUEST_CODE_MEDIA_PROJECTION = 17777;
|
||||
private OnActivityResultDelegate.Mediator mMediator;
|
||||
private ActivityResultObserver mActivityResultObserver;
|
||||
private Activity mActivity;
|
||||
|
||||
public ActivityScreenCaptureRequester(Mediator mediator, Activity activity) {
|
||||
mMediator = mediator;
|
||||
public ActivityScreenCaptureRequester(ActivityResultObserver activityResultObserver, Activity activity) {
|
||||
mActivityResultObserver = activityResultObserver;
|
||||
mActivity = activity;
|
||||
mMediator.addDelegate(REQUEST_CODE_MEDIA_PROJECTION, this);
|
||||
mActivityResultObserver.addListener(REQUEST_CODE_MEDIA_PROJECTION, this);
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ public interface ScreenCaptureRequester {
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
mResult = data;
|
||||
mMediator.removeDelegate(this);
|
||||
mActivityResultObserver.removeListener(this);
|
||||
onResult(resultCode, data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ public class RootAutomator {
|
||||
@Nullable
|
||||
private ScreenMetrics mScreenMetrics;
|
||||
private AbstractShell mShell;
|
||||
private int mDefaultId = 1;
|
||||
private int mDefaultId = 10000;
|
||||
|
||||
public RootAutomator(Context context) {
|
||||
mShell = new ProcessShell(true);
|
||||
@@ -151,11 +151,11 @@ public class RootAutomator {
|
||||
|
||||
public void touchDown(int x, int y, int id) throws IOException {
|
||||
sendEvent(EV_ABS, ABS_MT_TRACKING_ID, id);
|
||||
sendEvent(EV_KEY, BTN_TOUCH, 0x00000001);
|
||||
sendEvent(EV_KEY, BTN_TOOL_FINGER, 0x00000001);
|
||||
//sendEvent(EV_KEY, BTN_TOOL_FINGER, 0x00000001);
|
||||
sendEvent(EV_ABS, ABS_MT_POSITION_X, scaleX(x));
|
||||
sendEvent(EV_ABS, ABS_MT_POSITION_Y, scaleY(y));
|
||||
sendEvent(EV_ABS, ABS_MT_TOUCH_MAJOR, 5);
|
||||
sendEvent(EV_KEY, BTN_TOUCH, 0x00000001);
|
||||
// sendEvent(EV_ABS, ABS_MT_TOUCH_MAJOR, 5);
|
||||
sendEvent(EV_SYN, SYN_REPORT, 0x00000000);
|
||||
}
|
||||
|
||||
@@ -164,9 +164,9 @@ public class RootAutomator {
|
||||
}
|
||||
|
||||
public void touchUp(int id) throws IOException {
|
||||
sendEvent(EV_ABS, ABS_MT_TRACKING_ID, id);
|
||||
sendEvent(EV_ABS, ABS_MT_TRACKING_ID, 0xffffffff);
|
||||
sendEvent(EV_KEY, BTN_TOUCH, 0x00000000);
|
||||
sendEvent(EV_KEY, BTN_TOOL_FINGER, 0x00000000);
|
||||
//sendEvent(EV_KEY, BTN_TOOL_FINGER, 0x00000000);
|
||||
sendEvent(EV_SYN, SYN_REPORT, 0x00000000);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.stardust.autojs.engine;
|
||||
|
||||
import android.content.res.AssetManager;
|
||||
import android.net.Uri;
|
||||
|
||||
import org.mozilla.javascript.Scriptable;
|
||||
@@ -7,6 +8,7 @@ import org.mozilla.javascript.commonjs.module.provider.ModuleSource;
|
||||
import org.mozilla.javascript.commonjs.module.provider.UrlModuleSourceProvider;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URI;
|
||||
@@ -21,19 +23,17 @@ import java.util.List;
|
||||
|
||||
public class AssetAndUrlModuleSourceProvider extends UrlModuleSourceProvider {
|
||||
|
||||
private static final String MODULES_PATH = "modules";
|
||||
private android.content.Context mContext;
|
||||
private List<String> mModules;
|
||||
private final URI mBaseURI = URI.create("file:///android_asset/modules");
|
||||
private final URI mBaseURI;
|
||||
private final String mAssetDirPath;
|
||||
private final AssetManager mAssetManager;
|
||||
|
||||
public AssetAndUrlModuleSourceProvider(android.content.Context context, List<URI> list) {
|
||||
public AssetAndUrlModuleSourceProvider(android.content.Context context, String assetDirPath, List<URI> list) {
|
||||
super(list, null);
|
||||
mContext = context;
|
||||
try {
|
||||
mModules = Arrays.asList(mContext.getAssets().list(MODULES_PATH));
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
mAssetDirPath = assetDirPath;
|
||||
mBaseURI = URI.create("file:///android_asset/" + assetDirPath);
|
||||
mAssetManager = mContext.getAssets();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -42,10 +42,11 @@ public class AssetAndUrlModuleSourceProvider extends UrlModuleSourceProvider {
|
||||
if (!moduleIdWithExtension.endsWith(".js")) {
|
||||
moduleIdWithExtension += ".js";
|
||||
}
|
||||
if (mModules.contains(moduleIdWithExtension)) {
|
||||
return new ModuleSource(new InputStreamReader(mContext.getAssets().open(MODULES_PATH + "/" + moduleIdWithExtension)), null,
|
||||
URI.create(moduleIdWithExtension), mBaseURI, validator);
|
||||
try {
|
||||
return new ModuleSource(new InputStreamReader(mAssetManager.open(mAssetDirPath + "/" + moduleIdWithExtension)), null,
|
||||
new URI(mBaseURI.toString() + "/" + moduleIdWithExtension), mBaseURI, validator);
|
||||
} catch (FileNotFoundException e) {
|
||||
return super.loadFromPrivilegedLocations(moduleId, validator);
|
||||
}
|
||||
return super.loadFromPrivilegedLocations(moduleId, validator);
|
||||
}
|
||||
}
|
||||
@@ -47,6 +47,7 @@ public class RhinoJavaScriptEngine extends JavaScriptEngine {
|
||||
|
||||
public static final String SOURCE_NAME_INIT = "<init>";
|
||||
|
||||
private static final String MODULES_PATH = "modules";
|
||||
private static final String LOG_TAG = "RhinoJavaScriptEngine";
|
||||
|
||||
private static int contextCount = 0;
|
||||
@@ -129,7 +130,7 @@ public class RhinoJavaScriptEngine extends JavaScriptEngine {
|
||||
}
|
||||
|
||||
void initRequireBuilder(Context context, Scriptable scope) {
|
||||
AssetAndUrlModuleSourceProvider provider = new AssetAndUrlModuleSourceProvider(mAndroidContext,
|
||||
AssetAndUrlModuleSourceProvider provider = new AssetAndUrlModuleSourceProvider(mAndroidContext, MODULES_PATH,
|
||||
Collections.singletonList(new File("/").toURI()));
|
||||
new RequireBuilder()
|
||||
.setModuleScriptProvider(new SoftCachingModuleScriptProvider(provider))
|
||||
|
||||
@@ -4,14 +4,20 @@ import android.content.Context;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import com.stardust.autojs.engine.AssetAndUrlModuleSourceProvider;
|
||||
import com.stardust.pio.PFiles;
|
||||
import com.stardust.pio.UncheckedIOException;
|
||||
|
||||
import org.mozilla.javascript.Function;
|
||||
import org.mozilla.javascript.ImporterTopLevel;
|
||||
import org.mozilla.javascript.Scriptable;
|
||||
import org.mozilla.javascript.commonjs.module.RequireBuilder;
|
||||
import org.mozilla.javascript.commonjs.module.provider.SoftCachingModuleScriptProvider;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Collections;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
@@ -28,18 +34,30 @@ public class JsBeautifier {
|
||||
void onException(Exception e);
|
||||
}
|
||||
|
||||
private static final String LOG_TAG = "JsBeautifier";
|
||||
|
||||
private Executor mExecutor = Executors.newSingleThreadExecutor();
|
||||
private Context mContext;
|
||||
private Function mJsBeautifyFunction;
|
||||
private org.mozilla.javascript.Context mScriptContext;
|
||||
private Scriptable mScriptable;
|
||||
private final String mBeautifyJsPath;
|
||||
private final String mBeautifyJsDir;
|
||||
private View mView;
|
||||
private File mJsDir;
|
||||
|
||||
public JsBeautifier(View view, String beautifyJsPath) {
|
||||
public JsBeautifier(View view, String beautifyJsDirPath) {
|
||||
mContext = view.getContext();
|
||||
mView = view;
|
||||
mBeautifyJsPath = beautifyJsPath;
|
||||
mBeautifyJsDir = beautifyJsDirPath;
|
||||
mBeautifyJsPath = PFiles.join(beautifyJsDirPath, "index.js");
|
||||
mExecutor.execute(this::copyJsFiles);
|
||||
}
|
||||
|
||||
private void copyJsFiles() {
|
||||
mJsDir = new File(mContext.getFilesDir(), "js-beautify/");
|
||||
boolean result = PFiles.copyAssetDir(mContext, mBeautifyJsDir, mJsDir.getPath());
|
||||
Log.d(LOG_TAG, "copyJsFiles: " + result);
|
||||
}
|
||||
|
||||
public void beautify(final String code, final Callback callback) {
|
||||
@@ -65,11 +83,24 @@ public class JsBeautifier {
|
||||
}
|
||||
|
||||
private void enterContext() {
|
||||
if (mScriptContext == null) {
|
||||
mScriptContext = org.mozilla.javascript.Context.enter();
|
||||
mScriptContext.setLanguageVersion(org.mozilla.javascript.Context.VERSION_1_8);
|
||||
mScriptContext.setOptimizationLevel(-1);
|
||||
if (mScriptContext != null) {
|
||||
return;
|
||||
}
|
||||
mScriptContext = org.mozilla.javascript.Context.enter();
|
||||
mScriptContext.setLanguageVersion(org.mozilla.javascript.Context.VERSION_1_8);
|
||||
mScriptContext.setOptimizationLevel(-1);
|
||||
if (mScriptable == null){
|
||||
ImporterTopLevel importerTopLevel = new ImporterTopLevel();
|
||||
importerTopLevel.initStandardObjects(mScriptContext, false);
|
||||
mScriptable = importerTopLevel;
|
||||
}
|
||||
AssetAndUrlModuleSourceProvider provider = new AssetAndUrlModuleSourceProvider(mContext, mBeautifyJsDir,
|
||||
Collections.singletonList(new File("/").toURI()));
|
||||
new RequireBuilder()
|
||||
.setModuleScriptProvider(new SoftCachingModuleScriptProvider(provider))
|
||||
.setSandboxed(false)
|
||||
.createRequire(mScriptContext, mScriptable)
|
||||
.install(mScriptable);
|
||||
}
|
||||
|
||||
public void prepare() {
|
||||
@@ -93,8 +124,6 @@ public class JsBeautifier {
|
||||
try {
|
||||
enterContext();
|
||||
InputStream is = mContext.getAssets().open(mBeautifyJsPath);
|
||||
if (mScriptable == null)
|
||||
mScriptable = mScriptContext.initSafeStandardObjects();
|
||||
mJsBeautifyFunction = (Function) mScriptContext.evaluateString(mScriptable, PFiles.read(is), "<js_beautify>", 1, null);
|
||||
} catch (IOException e) {
|
||||
exitContext();
|
||||
|
||||
Reference in New Issue
Block a user