Add: Sample Script Tab, EMCAScript Guide

This commit is contained in:
hyb1996
2017-03-14 16:59:45 +08:00
parent e81b661974
commit 85affed538
129 changed files with 7046 additions and 297 deletions

View File

@@ -1,11 +1,12 @@
package com.stardust.automator;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Build;
import android.view.accessibility.AccessibilityNodeInfo;
import com.stardust.automator.filter.BooleanFilter;
import com.stardust.automator.filter.BoundsFilter;
import com.stardust.automator.filter.DfsFilter;
import com.stardust.automator.filter.IdFilter;
import com.stardust.automator.filter.PackageNameFilter;
import com.stardust.automator.filter.TextFilter;
@@ -18,16 +19,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.*;
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CONTEXT_CLICK;
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_SCROLL_DOWN;
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_SCROLL_LEFT;
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_SCROLL_RIGHT;
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_SCROLL_TO_POSITION;
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_SCROLL_UP;
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_SET_PROGRESS;
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_SHOW_ON_SCREEN;
/**
* Created by Stardust on 2017/3/8.
*/
@@ -173,8 +164,18 @@ public class UiGlobalSelector {
return this;
}
public UiGlobalSelector boundsInParent(int l, int t, int r, int b) {
mFilters.add(new BoundsFilter(new Rect(l, t, r, b), BoundsFilter.TYPE_PARENT));
public UiGlobalSelector boundsContains(int l, int t, int r, int b) {
mFilters.add(new BoundsFilter(new Rect(l, t, r, b), BoundsFilter.TYPE_CONTAINS));
return this;
}
public UiGlobalSelector drawingOrder(final int order) {
mFilters.add(new DfsFilter() {
@Override
protected boolean isIncluded(AccessibilityNodeInfo nodeInfo) {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && nodeInfo.getDrawingOrder() == order;
}
});
return this;
}
@@ -265,6 +266,91 @@ public class UiGlobalSelector {
return this;
}
public UiGlobalSelector checkable() {
mFilters.add(BooleanFilter.get(BooleanFilter.CHECKABLE, true));
return this;
}
public UiGlobalSelector checked() {
mFilters.add(BooleanFilter.get(BooleanFilter.CHECKED, true));
return this;
}
public UiGlobalSelector focusable() {
mFilters.add(BooleanFilter.get(BooleanFilter.FOCUSABLE, true));
return this;
}
public UiGlobalSelector focused() {
mFilters.add(BooleanFilter.get(BooleanFilter.FOCUSED, true));
return this;
}
public UiGlobalSelector visibleToUser() {
mFilters.add(BooleanFilter.get(BooleanFilter.VISIBLE_TO_USER, true));
return this;
}
public UiGlobalSelector accessibilityFocused() {
mFilters.add(BooleanFilter.get(BooleanFilter.ACCESSIBILITY_FOCUSED, true));
return this;
}
public UiGlobalSelector selected() {
mFilters.add(BooleanFilter.get(BooleanFilter.SELECTED, true));
return this;
}
public UiGlobalSelector clickable() {
mFilters.add(BooleanFilter.get(BooleanFilter.CLICKABLE, true));
return this;
}
public UiGlobalSelector longClickable() {
mFilters.add(BooleanFilter.get(BooleanFilter.LONG_CLICKABLE, true));
return this;
}
public UiGlobalSelector enabled() {
mFilters.add(BooleanFilter.get(BooleanFilter.ENABLED, true));
return this;
}
public UiGlobalSelector password() {
mFilters.add(BooleanFilter.get(BooleanFilter.PASSWORD, true));
return this;
}
public UiGlobalSelector scrollable() {
mFilters.add(BooleanFilter.get(BooleanFilter.SCROLLABLE, true));
return this;
}
public UiGlobalSelector editable() {
mFilters.add(BooleanFilter.get(BooleanFilter.EDITABLE, true));
return this;
}
public UiGlobalSelector contentInvalid() {
mFilters.add(BooleanFilter.get(BooleanFilter.CONTENT_INVALID, true));
return this;
}
public UiGlobalSelector contextClickable() {
mFilters.add(BooleanFilter.get(BooleanFilter.CONTEXT_CLICKABLE, true));
return this;
}
public UiGlobalSelector multiLine() {
mFilters.add(BooleanFilter.get(BooleanFilter.MULTI_LINE, true));
return this;
}
public UiGlobalSelector dismissable() {
mFilters.add(BooleanFilter.get(BooleanFilter.DISMISSABLE, true));
return this;
}
public UiObjectCollection findOf(AccessibilityNodeInfo node) {
List<AccessibilityNodeInfo> list = new ArrayList<>();
list.add(node);
@@ -285,5 +371,4 @@ public class UiGlobalSelector {
}
}

View File

@@ -13,7 +13,7 @@ public class BoundsFilter extends DfsFilter {
public static final int TYPE_EQUALS = 0;
public static final int TYPE_INSIDE = 1;
public static final int TYPE_PARENT = 2;
public static final int TYPE_CONTAINS = 2;
private Rect mBounds;
private int mType;
@@ -25,8 +25,8 @@ public class BoundsFilter extends DfsFilter {
@Override
protected boolean isIncluded(AccessibilityNodeInfo nodeInfo) {
if (mType == TYPE_PARENT) {
return AccessibilityNodeInfoHelper.getBoundsInParent(nodeInfo).equals(mBounds);
if (mType == TYPE_CONTAINS) {
return AccessibilityNodeInfoHelper.getBoundsInScreen(nodeInfo).contains(mBounds);
}
Rect boundsInScreen = AccessibilityNodeInfoHelper.getBoundsInScreen(nodeInfo);
if (mType == TYPE_EQUALS)

View File

@@ -20,23 +20,23 @@ public class ClassNameFilter {
if (!text.contains(".")) {
text = "android.widget." + text;
}
return new EqualsFilter(text, CLASS_NAME_GETTER);
return new StringEqualsFilter(text, CLASS_NAME_GETTER);
}
public static ListFilter contains(String str) {
return new ContainsFilter(str, CLASS_NAME_GETTER);
return new StringContainsFilter(str, CLASS_NAME_GETTER);
}
public static ListFilter startsWith(String prefix) {
return new StartsWithFilter(prefix, CLASS_NAME_GETTER);
return new StringStartsWithFilter(prefix, CLASS_NAME_GETTER);
}
public static ListFilter endsWith(String suffix) {
return new EndsWithFilter(suffix, CLASS_NAME_GETTER);
return new StringEndsWithFilter(suffix, CLASS_NAME_GETTER);
}
public static ListFilter matches(String regex) {
return new MatchesFilter(regex, CLASS_NAME_GETTER);
return new StringMatchesFilter(regex, CLASS_NAME_GETTER);
}
private ClassNameFilter() {

View File

@@ -17,22 +17,22 @@ public class DescFilter {
};
public static ListFilter equals(String text) {
return new EqualsFilter(text, DESC_GETTER);
return new StringEqualsFilter(text, DESC_GETTER);
}
public static ListFilter contains(String str) {
return new ContainsFilter(str, DESC_GETTER);
return new StringContainsFilter(str, DESC_GETTER);
}
public static ListFilter startsWith(String prefix) {
return new StartsWithFilter(prefix, DESC_GETTER);
return new StringStartsWithFilter(prefix, DESC_GETTER);
}
public static ListFilter endsWith(String suffix) {
return new EndsWithFilter(suffix, DESC_GETTER);
return new StringEndsWithFilter(suffix, DESC_GETTER);
}
public static ListFilter matches(String regex) {
return new MatchesFilter(regex, DESC_GETTER);
return new StringMatchesFilter(regex, DESC_GETTER);
}
private DescFilter(){

View File

@@ -22,20 +22,20 @@ public class IdFilter extends ListFilter.Default {
return new IdFilter(id);
}
public static StartsWithFilter startsWith(String prefix) {
return new StartsWithFilter(prefix, ID_GETTER);
public static StringStartsWithFilter startsWith(String prefix) {
return new StringStartsWithFilter(prefix, ID_GETTER);
}
public static ListFilter endsWith(String suffix) {
return new EndsWithFilter(suffix, ID_GETTER);
return new StringEndsWithFilter(suffix, ID_GETTER);
}
public static ContainsFilter contains(String contains) {
return new ContainsFilter(contains, ID_GETTER);
public static StringContainsFilter contains(String contains) {
return new StringContainsFilter(contains, ID_GETTER);
}
public static MatchesFilter matches(String regex) {
return new MatchesFilter(regex, ID_GETTER);
public static StringMatchesFilter matches(String regex) {
return new StringMatchesFilter(regex, ID_GETTER);
}
private String mId;

View File

@@ -17,23 +17,23 @@ public class PackageNameFilter {
};
public static ListFilter equals(String text) {
return new EqualsFilter(text, PACKAGE_NAME_GETTER);
return new StringEqualsFilter(text, PACKAGE_NAME_GETTER);
}
public static ListFilter contains(String str) {
return new ContainsFilter(str, PACKAGE_NAME_GETTER);
return new StringContainsFilter(str, PACKAGE_NAME_GETTER);
}
public static ListFilter startsWith(String prefix) {
return new StartsWithFilter(prefix, PACKAGE_NAME_GETTER);
return new StringStartsWithFilter(prefix, PACKAGE_NAME_GETTER);
}
public static ListFilter endsWith(String suffix) {
return new EndsWithFilter(suffix, PACKAGE_NAME_GETTER);
return new StringEndsWithFilter(suffix, PACKAGE_NAME_GETTER);
}
public static ListFilter matches(String regex) {
return new MatchesFilter(regex, PACKAGE_NAME_GETTER);
return new StringMatchesFilter(regex, PACKAGE_NAME_GETTER);
}
private PackageNameFilter() {

View File

@@ -6,11 +6,11 @@ import android.view.accessibility.AccessibilityNodeInfo;
* Created by Stardust on 2017/3/9.
*/
public class ContainsFilter extends DfsFilter {
public class StringContainsFilter extends DfsFilter {
private final KeyGetter mKeyGetter;
private final String mContains;
ContainsFilter(String contains, KeyGetter keyGetter) {
StringContainsFilter(String contains, KeyGetter keyGetter) {
mContains = contains;
mKeyGetter = keyGetter;
}

View File

@@ -6,12 +6,12 @@ import android.view.accessibility.AccessibilityNodeInfo;
* Created by Stardust on 2017/3/9.
*/
public class EndsWithFilter extends DfsFilter {
public class StringEndsWithFilter extends DfsFilter {
private final String mSuffix;
private final KeyGetter mKeyGetter;
public EndsWithFilter(String suffix, KeyGetter keyGetter) {
public StringEndsWithFilter(String suffix, KeyGetter keyGetter) {
mSuffix = suffix;
mKeyGetter = keyGetter;
}

View File

@@ -6,12 +6,12 @@ import android.view.accessibility.AccessibilityNodeInfo;
* Created by Stardust on 2017/3/9.
*/
public class EqualsFilter extends DfsFilter {
public class StringEqualsFilter extends DfsFilter {
private String mText;
private KeyGetter mKeyGetter;
public EqualsFilter(String text, KeyGetter getter) {
public StringEqualsFilter(String text, KeyGetter getter) {
mText = text;
mKeyGetter = getter;
}

View File

@@ -6,12 +6,12 @@ import android.view.accessibility.AccessibilityNodeInfo;
* Created by Stardust on 2017/3/9.
*/
public class MatchesFilter extends DfsFilter {
public class StringMatchesFilter extends DfsFilter {
private final String mRegex;
private final KeyGetter mKeyGetter;
MatchesFilter(String regex, KeyGetter keyGetter) {
StringMatchesFilter(String regex, KeyGetter keyGetter) {
mRegex = regex;
mKeyGetter = keyGetter;
}

View File

@@ -6,12 +6,12 @@ import android.view.accessibility.AccessibilityNodeInfo;
* Created by Stardust on 2017/3/9.
*/
public class StartsWithFilter extends DfsFilter {
public class StringStartsWithFilter extends DfsFilter {
private final String mPrefix;
private final KeyGetter mKeyGetter;
public StartsWithFilter(String prefix, KeyGetter keyGetter) {
public StringStartsWithFilter(String prefix, KeyGetter keyGetter) {
mPrefix = prefix;
mKeyGetter = keyGetter;
}

View File

@@ -19,7 +19,7 @@ public class TextFilter extends ListFilter.Default {
};
public static ListFilter equals(String text) {
return new EqualsFilter(text, TEXT_GETTER);
return new StringEqualsFilter(text, TEXT_GETTER);
}
public static ListFilter contains(String str) {
@@ -27,15 +27,15 @@ public class TextFilter extends ListFilter.Default {
}
public static ListFilter startsWith(String prefix) {
return new StartsWithFilter(prefix, TEXT_GETTER);
return new StringStartsWithFilter(prefix, TEXT_GETTER);
}
public static ListFilter endsWith(String suffix) {
return new EndsWithFilter(suffix, TEXT_GETTER);
return new StringEndsWithFilter(suffix, TEXT_GETTER);
}
public static ListFilter matches(String regex) {
return new MatchesFilter(regex, TEXT_GETTER);
return new StringMatchesFilter(regex, TEXT_GETTER);
}
private String mText;