aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/actions
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-06-22 03:16:32 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-06-22 03:16:32 +0200
commit804a58e779e8bbb5c8c2d53211626dcfd5556ed7 (patch)
treee61d6e3b75f7bafe0d1da58046242f570e84eb86 /OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/actions
parent361ad99928589b19b2cc1d73b2f27e7060cd21b2 (diff)
downloadopen-keychain-804a58e779e8bbb5c8c2d53211626dcfd5556ed7.tar.gz
open-keychain-804a58e779e8bbb5c8c2d53211626dcfd5556ed7.tar.bz2
open-keychain-804a58e779e8bbb5c8c2d53211626dcfd5556ed7.zip
instrument: some updates to asymmetric decrypt tests
Diffstat (limited to 'OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/actions')
-rw-r--r--OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/actions/OrientationChangeAction.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/actions/OrientationChangeAction.java b/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/actions/OrientationChangeAction.java
new file mode 100644
index 000000000..cdded7d7f
--- /dev/null
+++ b/OpenKeychain/src/androidTest/java/org/sufficientlysecure/keychain/actions/OrientationChangeAction.java
@@ -0,0 +1,74 @@
+package org.sufficientlysecure.keychain.actions;
+
+
+import java.util.Collection;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.pm.ActivityInfo;
+import android.support.test.espresso.UiController;
+import android.support.test.espresso.ViewAction;
+import android.support.test.runner.lifecycle.ActivityLifecycleMonitorRegistry;
+import android.support.test.runner.lifecycle.Stage;
+import android.view.View;
+
+import org.hamcrest.Matcher;
+
+import static android.support.test.espresso.matcher.ViewMatchers.isRoot;
+
+public class OrientationChangeAction implements ViewAction {
+ private final int orientation;
+
+ private OrientationChangeAction(int orientation) {
+ this.orientation = orientation;
+ }
+
+ @Override
+ public Matcher<View> getConstraints() {
+ return isRoot();
+ }
+
+ @Override
+ public String getDescription() {
+ return "change orientation to " + orientation;
+ }
+
+ @Override
+ public void perform(UiController uiController, View view) {
+ uiController.loopMainThreadUntilIdle();
+
+ final Activity activity = findActivity(view.getContext());
+ if (activity == null){
+ throw new IllegalStateException("Could not find the current activity");
+ }
+
+ activity.setRequestedOrientation(orientation);
+
+ Collection<Activity> resumedActivities = ActivityLifecycleMonitorRegistry
+ .getInstance().getActivitiesInStage(Stage.RESUMED);
+
+ if (resumedActivities.isEmpty()) {
+ throw new RuntimeException("Could not change orientation");
+ }
+ }
+
+ private static Activity findActivity(Context context) {
+ if (context == null)
+ return null;
+ else if (context instanceof Activity)
+ return (Activity) context;
+ else if (context instanceof ContextWrapper)
+ return findActivity(((ContextWrapper) context).getBaseContext());
+
+ return null;
+ }
+
+ public static ViewAction orientationLandscape() {
+ return new OrientationChangeAction(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+ }
+
+ public static ViewAction orientationPortrait() {
+ return new OrientationChangeAction(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+ }
+} \ No newline at end of file