public InstrumentationActivityResultAssert hasResultData(Intent intent) { isNotNull(); Intent actualIntent = actual.getResultData(); assertThat(actualIntent) // .overridingErrorMessage("Expected result data <%s> but was <%s>.", intent, actualIntent) // .isEqualTo(intent); return this; } }
@Test public void intending_callsOnActivityResult() { intending(hasComponent(hasClassName(DummyActivity.class.getName()))) .respondWith(new ActivityResult(Activity.RESULT_OK, new Intent().putExtra("key", 123))); ActivityScenario<ResultCapturingActivity> activityScenario = ActivityScenario.launch(ResultCapturingActivity.class); activityScenario.onActivity( activity -> { activity.startActivityForResult(new Intent(activity, DummyActivity.class), 0); }); activityScenario.onActivity( activity -> { assertThat(activity.activityResult.getResultCode()).isEqualTo(Activity.RESULT_OK); assertThat(activity.activityResult.getResultData()).extras().containsKey("key"); }); } }
public InstrumentationActivityResultAssert hasResultData(Intent intent) { isNotNull(); Intent actualIntent = actual.getResultData(); assertThat(actualIntent) // .overridingErrorMessage("Expected result data <%s> but was <%s>.", intent, actualIntent) // .isEqualTo(intent); return this; } }
public void startActivityForResult(Intent intent, int requestCode) { if (mParent == null) { Instrumentation.ActivityResult ar = mInstrumentation.execStartActivity( this, mMainThread.getApplicationThread(), mToken, this, intent, requestCode); if (ar != null) { mMainThread.sendActivityResult( mToken, mEmbeddedID, requestCode, ar.getResultCode(), ar.getResultData()); } if (requestCode >= 0) { // If this start is requesting a result, we can avoid making // the activity visible until the result is received. Setting // this code during onCreate(Bundle savedInstanceState) or onResume() will keep the // activity hidden during this time, to avoid flickering. // This can only be done when a result is requested because // that guarantees we will get information back when the // activity is finished, no matter what happens to it. mStartedActivity = true; } } else { mParent.startActivityFromChild(this, intent, requestCode); } }
public void startActivityForResult(Intent intent, int requestCode, Bundle options) { if (mParent == null) { Instrumentation.ActivityResult ar = mInstrumentation.execStartActivity( this, mMainThread.getApplicationThread(), mToken, this, intent, requestCode, options); if (ar != null) { mMainThread.sendActivityResult( mToken, mEmbeddedID, requestCode, ar.getResultCode(), ar.getResultData()); } if (requestCode >= 0) { mStartedActivity = true; } } else { if (options != null) { mParent.startActivityFromChild(this, intent, requestCode, options); } else { // Note we want to go through this method for compatibility with // existing applications that may have overridden it. mParent.startActivityFromChild(this, intent, requestCode); } } }
@Override public void onIntentSent(Intent intent) { Matcher<Intent> intentMatcher = hasAction(PermissiveTesting.ACTION_REQUEST_PERMISSIONS); if (intentMatcher.matches(intent)) { ResettingStubber resettingStubber = (ResettingStubber) IntentStubberRegistry.getInstance(); String[] permissions = intent.getStringArrayExtra(EXTRA_REQUEST_PERMISSIONS_NAMES); if (hasStubbedIntent) { if (multiplePermissionsRequest != null) { multiplePermissionsRequest.update(resettingStubber, intentMatcher); multiplePermissionsRequest = null; } Instrumentation.ActivityResult result = resettingStubber.getActivityResultForIntent(intent); assertThat("Requested permissions should be exactly the same to the results", result.getResultData().getStringArrayExtra(EXTRA_REQUEST_PERMISSIONS_NAMES), arrayContainingInAnyOrder(permissions)); applyActivityResult(result); } else { resettingStubber.setActivityResultForIntent(intentMatcher, createResult(permissions, PackageManager.PERMISSION_DENIED)); } } }
@Test public void testSave() { onDrawingSurfaceView() .perform(touchAt(DrawingSurfaceLocationProvider.MIDDLE)); onNavigationDrawer() .performOpen(); onView(withText(R.string.menu_back)) .perform(click()); onView(withText(R.string.save_button_text)) .check(matches(isDisplayed())); onView(withText(R.string.discard_button_text)) .check(matches(isDisplayed())); onView(withText(R.string.save_button_text)) .perform(click()); String path = launchActivityRule.getActivityResult().getResultData().getStringExtra(Constants.PAINTROID_PICTURE_PATH); assertEquals(imageFile.getAbsolutePath(), path); assertTrue(imageFile.exists()); assertThat(imageFile.length(), greaterThan(0L)); }
@Test public void testSave() { onDrawingSurfaceView() .perform(touchAt(DrawingSurfaceLocationProvider.MIDDLE)); onNavigationDrawer() .performOpen(); onView(withText(R.string.menu_back)).perform(click()); onView(withText(R.string.save_button_text)).check(matches(isDisplayed())); onView(withText(R.string.discard_button_text)).check(matches(isDisplayed())); long lastModifiedBefore = imageFile.lastModified(); long fileSizeBefore = imageFile.length(); onView(withText(R.string.save_button_text)).perform(click()); assertTrue(launchActivityRule.getActivity().isFinishing()); String path = launchActivityRule.getActivityResult().getResultData().getStringExtra(Constants.PAINTROID_PICTURE_PATH); assertEquals(imageFile.getAbsolutePath(), path); assertThat("Image modification not saved", imageFile.lastModified(), greaterThan(lastModifiedBefore)); assertThat("Saved image length not changed", imageFile.length(), greaterThan(fileSizeBefore)); }
private void applyActivityResult(Instrumentation.ActivityResult result) { String[] permissions = result.getResultData().getStringArrayExtra(EXTRA_REQUEST_PERMISSIONS_NAMES); int[] resultPermissions = result.getResultData().getIntArrayExtra(EXTRA_REQUEST_PERMISSIONS_RESULTS); for (int i = 0; i < permissions.length; ++i) { if (resultPermissions[i] == PackageManager.PERMISSION_GRANTED) { grantFakePermission(permissions[i]); } else { revokeFakePermission(permissions[i]); } } } };
if (ar != null) { ShadowActivity shadowActivity = extract(target); shadowActivity.callOnActivityResult(requestCode, ar.getResultCode(), ar.getResultData()); if (ar != null) { ShadowActivity shadowActivity = extract(target); shadowActivity.callOnActivityResult(requestCode, ar.getResultCode(), ar.getResultData());
/** {@inheritDoc} */ @Override public ActivityResult execStartActivity( Context who, IBinder contextThread, IBinder token, Activity target, Intent intent, int requestCode, Bundle options) { ActivityResult ar = super.execStartActivity(who, contextThread, token, target, intent, requestCode, options); if (ar != null) { ShadowActivity shadowActivity = extract(target); shadowActivity.callOnActivityResult(requestCode, ar.getResultCode(), ar.getResultData()); } return ar; }
@Override public ActivityResult execStartActivity( Context who, IBinder contextThread, IBinder token, Activity target, Intent intent, int requestCode) { ActivityResult ar = super.execStartActivity(who, contextThread, token, target, intent, requestCode); if (ar != null) { ShadowActivity shadowActivity = extract(target); shadowActivity.callOnActivityResult(requestCode, ar.getResultCode(), ar.getResultData()); } return ar; }
if (ar != null) { ShadowActivity shadowActivity = extract(target); shadowActivity.callOnActivityResult(requestCode, ar.getResultCode(), ar.getResultData()); if (ar != null) { ShadowActivity shadowActivity = extract(target); shadowActivity.callOnActivityResult(requestCode, ar.getResultCode(), ar.getResultData());
/** {@inheritDoc} */ @Override public ActivityResult execStartActivity( Context who, IBinder contextThread, IBinder token, Activity target, Intent intent, int requestCode, Bundle options) { ActivityResult ar = super.execStartActivity(who, contextThread, token, target, intent, requestCode, options); if (ar != null) { ShadowActivity shadowActivity = extract(target); shadowActivity.callOnActivityResult(requestCode, ar.getResultCode(), ar.getResultData()); } return ar; }
@Override public ActivityResult execStartActivity( Context who, IBinder contextThread, IBinder token, Activity target, Intent intent, int requestCode) { ActivityResult ar = super.execStartActivity(who, contextThread, token, target, intent, requestCode); if (ar != null) { ShadowActivity shadowActivity = extract(target); shadowActivity.callOnActivityResult(requestCode, ar.getResultCode(), ar.getResultData()); } return ar; }