Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8b0c3a81 authored by Mark Harman's avatar Mark Harman
Browse files

Update tests for not waiting on UI thread for preview to start.

parent 4b5b8e96
Loading
Loading
Loading
Loading
+32 −1
Original line number Diff line number Diff line
@@ -134,6 +134,10 @@ public class InstrumentedTest {
    }

    private void waitUntilCameraOpened() {
        waitUntilCameraOpened(true);
    }

    private void waitUntilCameraOpened(boolean wait_for_preview) {
        Log.d(TAG, "wait until camera opened");
        long time_s = System.currentTimeMillis();

@@ -150,6 +154,29 @@ public class InstrumentedTest {
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        if( wait_for_preview ) {
            waitUntilPreviewStarted(); // needed for Camera2 API when starting preview on background thread and not waiting for it to start
        }
    }

    private void waitUntilPreviewStarted() {
        Log.d(TAG, "wait until preview started");
        long time_s = System.currentTimeMillis();

        boolean done = false;
        while( !done ) {
            assertTrue( System.currentTimeMillis() - time_s < 20000 );
            done = getActivityValue(activity -> activity.getPreview().isPreviewStarted());
        }

        Log.d(TAG, "preview is started!");

        try {
            Thread.sleep(100); // sleep a bit just to be safe
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    private void waitUntilTimer() {
@@ -161,9 +188,13 @@ public class InstrumentedTest {
    }

    private void restart() {
        restart(true);
    }

    private void restart(boolean wait_for_preview) {
        Log.d(TAG, "restart");
        mActivityRule.getScenario().recreate();
        waitUntilCameraOpened();
        waitUntilCameraOpened(wait_for_preview);
        Log.d(TAG, "restart done");
    }

+17 −3
Original line number Diff line number Diff line
@@ -141,6 +141,10 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
    }
    private void waitUntilCameraOpened() {
        waitUntilCameraOpened(true);
    }
    private void waitUntilCameraOpened(boolean wait_for_preview) {
        Log.d(TAG, "wait until camera opened");
        long time_s = System.currentTimeMillis();
        while( !mPreview.openCameraAttempted() ) {
@@ -154,6 +158,10 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        if( wait_for_preview ) {
            waitUntilPreviewStarted(); // needed for Camera2 API when starting preview on background thread and not waiting for it to start
        }
    }
    private void waitUntilPreviewStarted() {
@@ -172,11 +180,15 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
        }
    }
    private void restart() {
        restart(true);
    }
    /** Restarts Open Camera.
     *  WARNING: Make sure that any assigned variables related to the activity, e.g., anything
     *  returned by findViewById(), is updated to the new mActivity after calling this method!
     */
    private void restart() {
    private void restart(boolean wait_for_preview) {
        Log.d(TAG, "restart");
        mActivity.finish();
        setActivity(null);
@@ -185,7 +197,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
        Log.d(TAG, "mActivity is now: " + mActivity);
        mPreview = mActivity.getPreview();
        Log.d(TAG, "mPreview is now: " + mPreview);
        waitUntilCameraOpened();
        waitUntilCameraOpened(wait_for_preview);
        Log.d(TAG, "restart done");
    }
@@ -10038,6 +10050,8 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
        Log.d(TAG, "testSettings");
        setToDefault();
        restart(false); // so we test going to settings even without waiting for preview to start (for Camera2 API)
        assertFalse(mActivity.isCameraInBackground());
        View settingsButton = mActivity.findViewById(net.sourceforge.opencamera.R.id.settings);
        clickView(settingsButton);
@@ -10883,7 +10897,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
            Log.d(TAG, "switch camera");
            View switchCameraButton = mActivity.findViewById(net.sourceforge.opencamera.R.id.switch_camera);
            clickView(switchCameraButton);
            waitUntilCameraOpened();
            waitUntilCameraOpened(false);
            assertNotNull(mPreview.getCameraControllerManager());
            assertNull(mPreview.getCameraController());
            this.getInstrumentation().waitForIdleSync();