@@ -1,4 +1,4 @@
|
||||
package com.stardust.autojs.core.bridge;
|
||||
package com.stardust.autojs.core.accessibility;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
@@ -1,36 +0,0 @@
|
||||
package com.stardust.autojs.core.accessibility;
|
||||
|
||||
import com.stardust.autojs.core.bridge.ScriptBridges;
|
||||
import com.stardust.automator.UiObject;
|
||||
import com.stardust.automator.UiObjectCollection;
|
||||
import com.stardust.view.accessibility.AccessibilityNodeInfoAllocator;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/10/31.
|
||||
*/
|
||||
|
||||
public class ScriptUiObject extends UiObject {
|
||||
|
||||
private ScriptBridges mScriptBridges;
|
||||
|
||||
public ScriptUiObject(Object info, ScriptBridges scriptBridges) {
|
||||
super(info);
|
||||
mScriptBridges = scriptBridges;
|
||||
}
|
||||
|
||||
public ScriptUiObject(Object info, AccessibilityNodeInfoAllocator allocator, boolean isRootNode, ScriptBridges scriptBridges) {
|
||||
super(info, allocator, isRootNode);
|
||||
mScriptBridges = scriptBridges;
|
||||
}
|
||||
|
||||
public ScriptUiObject(Object info, AccessibilityNodeInfoAllocator allocator, ScriptBridges scriptBridges) {
|
||||
super(info, allocator);
|
||||
mScriptBridges = scriptBridges;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Object children() {
|
||||
return super.children();
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,6 @@ import android.util.Log;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
|
||||
import com.stardust.autojs.annotation.ScriptInterface;
|
||||
import com.stardust.autojs.core.bridge.AccessibilityBridge;
|
||||
import com.stardust.autojs.runtime.ScriptRuntime;
|
||||
import com.stardust.autojs.runtime.accessibility.AutomatorConfig;
|
||||
import com.stardust.automator.GlobalActionAutomator;
|
||||
@@ -21,6 +20,9 @@ import com.stardust.automator.simple_action.SimpleAction;
|
||||
import com.stardust.util.DeveloperUtils;
|
||||
import com.stardust.util.ScreenMetrics;
|
||||
|
||||
import org.mozilla.javascript.Context;
|
||||
import org.mozilla.javascript.NativeJavaObject;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/4/2.
|
||||
*/
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
package com.stardust.autojs.core.accessibility;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Log;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
|
||||
import com.stardust.autojs.annotation.ScriptInterface;
|
||||
import com.stardust.autojs.core.bridge.AccessibilityBridge;
|
||||
import com.stardust.autojs.core.bridge.ScriptBridges;
|
||||
import com.stardust.autojs.runtime.accessibility.AutomatorConfig;
|
||||
import com.stardust.autojs.runtime.api.UI;
|
||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||
import com.stardust.automator.ActionArgument;
|
||||
import com.stardust.automator.UiGlobalSelector;
|
||||
@@ -59,33 +55,22 @@ public class UiSelector extends UiGlobalSelector {
|
||||
|
||||
|
||||
private static final String TAG = "UiSelector";
|
||||
private static Object sEmptyUiCollection;
|
||||
|
||||
private AccessibilityBridge mAccessibilityBridge;
|
||||
private AccessibilityNodeInfoAllocator mAllocator = null;
|
||||
private ScriptBridges mScriptBridges;
|
||||
|
||||
public UiSelector(ScriptBridges bridges) {
|
||||
this(bridges, null);
|
||||
public UiSelector(AccessibilityBridge accessibilityBridge) {
|
||||
mAccessibilityBridge = accessibilityBridge;
|
||||
}
|
||||
|
||||
public UiSelector(ScriptBridges bridges, AccessibilityNodeInfoAllocator allocator) {
|
||||
mAccessibilityBridge = bridges.getAccessibilityBrige();
|
||||
mScriptBridges = bridges;
|
||||
public UiSelector(AccessibilityBridge accessibilityBridge, AccessibilityNodeInfoAllocator allocator) {
|
||||
mAccessibilityBridge = accessibilityBridge;
|
||||
mAllocator = allocator;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@ScriptInterface
|
||||
public Object find() {
|
||||
UiObjectCollection c = findInner();
|
||||
if(c == UiObjectCollection.EMPTY){
|
||||
return emptyUiCollection();
|
||||
}
|
||||
return mScriptBridges.wrapAsArray(c);
|
||||
}
|
||||
|
||||
protected UiObjectCollection findInner(){
|
||||
public UiObjectCollection find() {
|
||||
ensureAccessibilityServiceEnabled();
|
||||
if (AutomatorConfig.isUnintendedGuardEnabled() && isRunningPackageSelf()) {
|
||||
Log.d(TAG, "isSelfPackage return null");
|
||||
@@ -95,22 +80,7 @@ public class UiSelector extends UiGlobalSelector {
|
||||
if (root == null) {
|
||||
return UiObjectCollection.EMPTY;
|
||||
}
|
||||
return super.findOf(UiObject.createRoot(root, mAllocator));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public Object findOf(UiObject node) {
|
||||
return mScriptBridges.wrapAsArray((Iterable<?>) super.findOf(node));
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
private Object emptyUiCollection() {
|
||||
if(sEmptyUiCollection == null){
|
||||
sEmptyUiCollection = mScriptBridges.wrapAsArray(UiObjectCollection.EMPTY);
|
||||
}
|
||||
return sEmptyUiCollection;
|
||||
return findOf(UiObject.createRoot(root, mAllocator));
|
||||
}
|
||||
|
||||
|
||||
@@ -125,15 +95,8 @@ public class UiSelector extends UiGlobalSelector {
|
||||
|
||||
@ScriptInterface
|
||||
@NonNull
|
||||
public Object untilFind() {
|
||||
return mScriptBridges.wrapAsArray(untilFindInner());
|
||||
}
|
||||
|
||||
|
||||
@ScriptInterface
|
||||
@NonNull
|
||||
protected UiObjectCollection untilFindInner() {
|
||||
UiObjectCollection uiObjectCollection = findInner();
|
||||
public UiObjectCollection untilFind() {
|
||||
UiObjectCollection uiObjectCollection = find();
|
||||
while (uiObjectCollection.empty()) {
|
||||
if (Thread.currentThread().isInterrupted()) {
|
||||
throw new ScriptInterruptedException();
|
||||
@@ -143,7 +106,7 @@ public class UiSelector extends UiGlobalSelector {
|
||||
} catch (InterruptedException e) {
|
||||
throw new ScriptInterruptedException();
|
||||
}
|
||||
uiObjectCollection = findInner();
|
||||
uiObjectCollection = find();
|
||||
}
|
||||
return uiObjectCollection;
|
||||
}
|
||||
@@ -155,13 +118,13 @@ public class UiSelector extends UiGlobalSelector {
|
||||
|
||||
@ScriptInterface
|
||||
public boolean exists() {
|
||||
UiObjectCollection collection = findInner();
|
||||
UiObjectCollection collection = find();
|
||||
return collection.nonEmpty();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public UiObject untilFindOne() {
|
||||
UiObjectCollection collection = untilFindInner();
|
||||
UiObjectCollection collection = untilFind();
|
||||
return new UiObject(collection.get(0).getInfo());
|
||||
}
|
||||
|
||||
@@ -188,7 +151,7 @@ public class UiSelector extends UiGlobalSelector {
|
||||
|
||||
|
||||
private boolean performAction(int action, ActionArgument... arguments) {
|
||||
return untilFindInner().performAction(action, arguments);
|
||||
return untilFind().performAction(action, arguments);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
package com.stardust.autojs.core.bridge;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/10/31.
|
||||
*/
|
||||
|
||||
public abstract class ScriptBridges {
|
||||
|
||||
|
||||
public abstract Object toArray(Object[] nativeArray);
|
||||
|
||||
public abstract Object toString(String nativeString);
|
||||
|
||||
public abstract Object callFunction(Object function, Object target, Object[] args);
|
||||
|
||||
public abstract Object wrapAsArray(Iterable<?> iterable);
|
||||
|
||||
public abstract AccessibilityBridge getAccessibilityBrige();
|
||||
|
||||
}
|
||||
@@ -6,6 +6,7 @@ package com.stardust.autojs.runtime;
|
||||
|
||||
public class ScriptBridges {
|
||||
|
||||
|
||||
public interface FunctionCaller {
|
||||
|
||||
Object[] NO_ARGUMENTS = new Object[0];
|
||||
@@ -24,6 +25,4 @@ public class ScriptBridges {
|
||||
throw new IllegalStateException("no function caller");
|
||||
return mFunctionCaller.call(func, target, args);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import android.os.Looper;
|
||||
import com.stardust.autojs.R;
|
||||
import com.stardust.autojs.ScriptEngineService;
|
||||
import com.stardust.autojs.annotation.ScriptVariable;
|
||||
import com.stardust.autojs.core.bridge.AccessibilityBridge;
|
||||
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
|
||||
import com.stardust.autojs.engine.ScriptEngine;
|
||||
import com.stardust.autojs.rhino.AndroidClassLoader;
|
||||
import com.stardust.autojs.runtime.api.AbstractShell;
|
||||
@@ -25,6 +25,7 @@ import com.stardust.autojs.runtime.exception.ScriptEnvironmentException;
|
||||
import com.stardust.autojs.runtime.exception.ScriptException;
|
||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||
import com.stardust.autojs.core.accessibility.SimpleActionAutomator;
|
||||
import com.stardust.concurrent.VolatileBox;
|
||||
import com.stardust.autojs.runtime.api.UI;
|
||||
import com.stardust.concurrent.VolatileDispose;
|
||||
import com.stardust.pio.UncheckedIOException;
|
||||
|
||||
@@ -6,9 +6,10 @@ import android.graphics.Point;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
|
||||
import com.stardust.autojs.R;
|
||||
import com.stardust.autojs.core.bridge.AccessibilityBridge;
|
||||
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
|
||||
import com.stardust.autojs.core.eventloop.EventEmitter;
|
||||
import com.stardust.notification.Notification;
|
||||
import com.stardust.notification.NotificationListenerService;
|
||||
|
||||
Reference in New Issue
Block a user