修复 调试时在不能断点的地方打断点会崩溃的问题
This commit is contained in:
@@ -1,19 +1,47 @@
|
||||
package com.stardust.automator;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
import android.support.annotation.RequiresApi;
|
||||
|
||||
import com.stardust.util.Consumer;
|
||||
import com.stardust.util.Func1;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import java.util.Spliterator;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.UnaryOperator;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.*;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ARGUMENT_COLUMN_INT;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ARGUMENT_PROGRESS_VALUE;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ARGUMENT_ROW_INT;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ARGUMENT_SELECTION_END_INT;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ARGUMENT_SELECTION_START_INT;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_CLEAR_FOCUS;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_CLICK;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_COLLAPSE;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_COPY;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_CUT;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_DISMISS;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_EXPAND;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_FOCUS;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_LONG_CLICK;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_PASTE;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_SCROLL_BACKWARD;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_SCROLL_FORWARD;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_SELECT;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_SET_SELECTION;
|
||||
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_SET_TEXT;
|
||||
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;
|
||||
@@ -27,7 +55,7 @@ import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.
|
||||
* Created by Stardust on 2017/3/9.
|
||||
*/
|
||||
|
||||
public class UiObjectCollection {
|
||||
public class UiObjectCollection implements List<UiObject> {
|
||||
|
||||
public static final UiObjectCollection EMPTY = UiObjectCollection.of(Collections.<UiObject>emptyList());
|
||||
|
||||
@@ -41,10 +69,67 @@ public class UiObjectCollection {
|
||||
mNodes = list;
|
||||
}
|
||||
|
||||
public UiObject[] toArray(){
|
||||
public UiObject[] toArray() {
|
||||
return mNodes.toArray(new UiObject[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T[] toArray(T[] a) {
|
||||
return mNodes.toArray(a);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean add(UiObject uiObject) {
|
||||
return mNodes.add(uiObject);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove(Object o) {
|
||||
return mNodes.remove(o);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsAll(Collection<?> c) {
|
||||
return mNodes.containsAll(c);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addAll(Collection<? extends UiObject> c) {
|
||||
return mNodes.addAll(c);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addAll(int index, Collection<? extends UiObject> c) {
|
||||
return mNodes.addAll(index, c);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeAll(Collection<?> c) {
|
||||
return mNodes.removeAll(c);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean retainAll(Collection<?> c) {
|
||||
return mNodes.retainAll(c);
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public void replaceAll(UnaryOperator<UiObject> operator) {
|
||||
mNodes.replaceAll(operator);
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public void sort(Comparator<? super UiObject> c) {
|
||||
mNodes.sort(c);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clear() {
|
||||
mNodes.clear();
|
||||
}
|
||||
|
||||
public boolean performAction(int action) {
|
||||
boolean fail = false;
|
||||
for (UiObject node : mNodes) {
|
||||
@@ -185,10 +270,98 @@ public class UiObjectCollection {
|
||||
return mNodes.get(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UiObject set(int index, UiObject element) {
|
||||
return mNodes.set(index, element);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(int index, UiObject element) {
|
||||
mNodes.add(index, element);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UiObject remove(int index) {
|
||||
return mNodes.remove(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int indexOf(Object o) {
|
||||
return mNodes.indexOf(o);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int lastIndexOf(Object o) {
|
||||
return mNodes.lastIndexOf(o);
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public ListIterator<UiObject> listIterator() {
|
||||
return mNodes.listIterator();
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public ListIterator<UiObject> listIterator(int index) {
|
||||
return mNodes.listIterator(index);
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public List<UiObject> subList(int fromIndex, int toIndex) {
|
||||
return mNodes.subList(fromIndex, toIndex);
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public Spliterator<UiObject> spliterator() {
|
||||
return mNodes.spliterator();
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public boolean removeIf(Predicate<? super UiObject> filter) {
|
||||
return mNodes.removeIf(filter);
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public Stream<UiObject> stream() {
|
||||
return mNodes.stream();
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public Stream<UiObject> parallelStream() {
|
||||
return mNodes.parallelStream();
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public void forEach(java.util.function.Consumer<? super UiObject> action) {
|
||||
mNodes.forEach(action);
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return mNodes.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
return mNodes.isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean contains(Object o) {
|
||||
return mNodes.contains(o);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<UiObject> iterator() {
|
||||
return mNodes.iterator();
|
||||
}
|
||||
|
||||
public UiObjectCollection each(Consumer<UiObject> consumer) {
|
||||
for (UiObject uiObject : mNodes) {
|
||||
consumer.accept(uiObject);
|
||||
|
||||
Reference in New Issue
Block a user