aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKevin Jin <kjin@google.com>2014-06-16 16:08:15 -0700
committerKevin Jin <kjin@google.com>2014-06-16 16:08:15 -0700
commit988386cd9cc46bf5399846a414c09e0af48b1e5a (patch)
tree1a51756f2881208340090415fbe8fc0a930385cf /src
parent74676fdd3c8a9e599eddd13bea56898674d9916a (diff)
downloaddroiddriver-988386cd9cc46bf5399846a414c09e0af48b1e5a.tar.gz
expose setAccessibilityNodeInfoCacheClearer
Change-Id: I39780422d66133738978b028252c960765490623
Diffstat (limited to 'src')
-rw-r--r--src/com/google/android/droiddriver/base/DroidDriverContext.java4
-rw-r--r--src/com/google/android/droiddriver/uiautomation/UiAutomationContext.java2
-rw-r--r--src/com/google/android/droiddriver/uiautomation/UiAutomationDriver.java46
-rw-r--r--src/com/google/android/droiddriver/uiautomation/UiAutomationElement.java2
4 files changed, 36 insertions, 18 deletions
diff --git a/src/com/google/android/droiddriver/base/DroidDriverContext.java b/src/com/google/android/droiddriver/base/DroidDriverContext.java
index 045a0b2..a306bc0 100644
--- a/src/com/google/android/droiddriver/base/DroidDriverContext.java
+++ b/src/com/google/android/droiddriver/base/DroidDriverContext.java
@@ -64,7 +64,7 @@ public class DroidDriverContext<R, E extends BaseUiElement<R, E>> {
public E newRootElement(R rawRoot) {
clearData();
- return getElement(rawRoot, null /* parent */);
+ return getElement(rawRoot, null /* parent */);
}
private void clearData() {
@@ -72,8 +72,6 @@ public class DroidDriverContext<R, E extends BaseUiElement<R, E>> {
ByXPath.clearData();
}
- /** Clears UiElement instances in the context */
-
/**
* Tries to wait for an idle state on the main thread on best-effort basis up
* to {@code timeoutMillis}. The main thread may not enter the idle state when
diff --git a/src/com/google/android/droiddriver/uiautomation/UiAutomationContext.java b/src/com/google/android/droiddriver/uiautomation/UiAutomationContext.java
index 2cdcedf..253d4e5 100644
--- a/src/com/google/android/droiddriver/uiautomation/UiAutomationContext.java
+++ b/src/com/google/android/droiddriver/uiautomation/UiAutomationContext.java
@@ -27,7 +27,7 @@ public class UiAutomationContext extends
DroidDriverContext<AccessibilityNodeInfo, UiAutomationElement> {
private final UiAutomation uiAutomation;
- protected UiAutomationContext(Instrumentation instrumentation, UiAutomationDriver driver) {
+ public UiAutomationContext(Instrumentation instrumentation, UiAutomationDriver driver) {
super(instrumentation, driver);
this.uiAutomation = instrumentation.getUiAutomation();
}
diff --git a/src/com/google/android/droiddriver/uiautomation/UiAutomationDriver.java b/src/com/google/android/droiddriver/uiautomation/UiAutomationDriver.java
index f84ab5f..f139a15 100644
--- a/src/com/google/android/droiddriver/uiautomation/UiAutomationDriver.java
+++ b/src/com/google/android/droiddriver/uiautomation/UiAutomationDriver.java
@@ -46,6 +46,8 @@ public class UiAutomationDriver extends BaseDroidDriver<AccessibilityNodeInfo, U
private final UiAutomationContext context;
private final InputInjector injector;
private final UiAutomationUiDevice uiDevice;
+ private AccessibilityNodeInfoCacheClearer clearer =
+ new WindowStateAccessibilityNodeInfoCacheClearer();
public UiAutomationDriver(Instrumentation instrumentation) {
context = new UiAutomationContext(instrumentation, this);
@@ -112,23 +114,41 @@ public class UiAutomationDriver extends BaseDroidDriver<AccessibilityNodeInfo, U
*/
public void clearAccessibilityNodeInfoCache() {
Logs.call(this, "clearAccessibilityNodeInfoCache");
- uiDevice.sleep();
- uiDevice.wakeUp();
+ clearer.clearAccessibilityNodeInfoCache(this);
+ }
+
+ public interface AccessibilityNodeInfoCacheClearer {
+ void clearAccessibilityNodeInfoCache(UiAutomationDriver driver);
+ }
+
+ /**
+ * Clears AccessibilityNodeInfoCache by turning screen off then on.
+ */
+ public static class ScreenOffAccessibilityNodeInfoCacheClearer implements
+ AccessibilityNodeInfoCacheClearer {
+ public void clearAccessibilityNodeInfoCache(UiAutomationDriver driver) {
+ driver.getUiDevice().sleep();
+ driver.getUiDevice().wakeUp();
+ }
}
/**
- * {@link #clearAccessibilityNodeInfoCache} causes the screen to blink. This
- * method clears the cache without blinking by employing an implementation
- * detail of AccessibilityNodeInfoCache. This is a hack; use it at your own
- * discretion.
+ * Clears AccessibilityNodeInfoCache by exploiting an implementation detail of
+ * AccessibilityNodeInfoCache. This is a hack; use it at your own discretion.
*/
- public void clearAccessibilityNodeInfoCacheHack() {
- Logs.call(this, "clearAccessibilityNodeInfoCacheHack");
- AccessibilityManager accessibilityManager =
- (AccessibilityManager) context.getInstrumentation().getTargetContext()
- .getSystemService(Context.ACCESSIBILITY_SERVICE);
- accessibilityManager.sendAccessibilityEvent(AccessibilityEvent
- .obtain(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED));
+ public static class WindowStateAccessibilityNodeInfoCacheClearer implements
+ AccessibilityNodeInfoCacheClearer {
+ public void clearAccessibilityNodeInfoCache(UiAutomationDriver driver) {
+ AccessibilityManager accessibilityManager =
+ (AccessibilityManager) driver.context.getInstrumentation().getTargetContext()
+ .getSystemService(Context.ACCESSIBILITY_SERVICE);
+ accessibilityManager.sendAccessibilityEvent(AccessibilityEvent
+ .obtain(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED));
+ }
+ }
+
+ public void setAccessibilityNodeInfoCacheClearer(AccessibilityNodeInfoCacheClearer clearer) {
+ this.clearer = clearer;
}
@Override
diff --git a/src/com/google/android/droiddriver/uiautomation/UiAutomationElement.java b/src/com/google/android/droiddriver/uiautomation/UiAutomationElement.java
index 3fa8653..e737bc6 100644
--- a/src/com/google/android/droiddriver/uiautomation/UiAutomationElement.java
+++ b/src/com/google/android/droiddriver/uiautomation/UiAutomationElement.java
@@ -198,7 +198,7 @@ public class UiAutomationElement extends BaseUiElement<AccessibilityNodeInfo, Ui
// A legitimate case of no AccessibilityEvent is when scrolling has
// reached the end, but we cannot tell whether it's legitimate or the
// widget has bugs, so clearAccessibilityNodeInfoCache anyways.
- context.getDriver().clearAccessibilityNodeInfoCacheHack();
+ context.getDriver().clearAccessibilityNodeInfoCache();
}
return null;
}