Skip to content
This repository was archived by the owner on Oct 3, 2024. It is now read-only.

Commit e64510d

Browse files
committed
Differentiate between FragmentActivity and AppCompatActivity
Change-Id: I826cdfca1e5ed0c33ebcba7314e3a41ddd0913b0
1 parent d5b707c commit e64510d

File tree

6 files changed

+129
-60
lines changed

6 files changed

+129
-60
lines changed

easypermissions/src/main/java/pub/devrel/easypermissions/helper/FragmentActivityPermissionHelper.java renamed to easypermissions/src/main/java/pub/devrel/easypermissions/helper/AppCompatActivityPermissionsHelper.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@
33
import android.content.Context;
44
import android.support.annotation.NonNull;
55
import android.support.v4.app.ActivityCompat;
6-
import android.support.v4.app.FragmentActivity;
76
import android.support.v4.app.FragmentManager;
87
import android.support.v7.app.AppCompatActivity;
98

109
/**
1110
* Permissions helper for {@link AppCompatActivity}.
1211
*/
13-
class FragmentActivityPermissionHelper extends BaseSupportPermissionsHelper<FragmentActivity> {
12+
class AppCompatActivityPermissionsHelper extends BaseSupportPermissionsHelper<AppCompatActivity> {
1413

15-
public FragmentActivityPermissionHelper(FragmentActivity host) {
14+
public AppCompatActivityPermissionsHelper(AppCompatActivity host) {
1615
super(host);
1716
}
1817

easypermissions/src/main/java/pub/devrel/easypermissions/helper/PermissionHelper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import android.support.annotation.NonNull;
77
import android.support.annotation.StyleRes;
88
import android.support.v4.app.Fragment;
9-
import android.support.v4.app.FragmentActivity;
9+
import android.support.v7.app.AppCompatActivity;
1010

1111
import java.util.List;
1212

@@ -23,8 +23,8 @@ public static PermissionHelper<? extends Activity> newInstance(Activity host) {
2323
return new LowApiPermissionsHelper<>(host);
2424
}
2525

26-
if (host instanceof FragmentActivity)
27-
return new FragmentActivityPermissionHelper((FragmentActivity) host);
26+
if (host instanceof AppCompatActivity)
27+
return new AppCompatActivityPermissionsHelper((AppCompatActivity) host);
2828
else {
2929
return new ActivityPermissionHelper(host);
3030
}

easypermissions/src/test/java/pub/devrel/easypermissions/EasyPermissionsLowApiTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
import pub.devrel.easypermissions.testhelper.TestActivity;
2323
import pub.devrel.easypermissions.testhelper.TestFragment;
24-
import pub.devrel.easypermissions.testhelper.TestSupportActivity;
24+
import pub.devrel.easypermissions.testhelper.TestAppCompatActivity;
2525

2626
import static com.google.common.truth.Truth.assertThat;
2727
import static org.mockito.Mockito.times;
@@ -39,10 +39,10 @@ public class EasyPermissionsLowApiTest {
3939
Manifest.permission.READ_SMS, Manifest.permission.ACCESS_FINE_LOCATION};
4040

4141
private TestActivity spyActivity;
42-
private TestSupportActivity spySupportActivity;
42+
private TestAppCompatActivity spySupportActivity;
4343
private TestFragment spyFragment;
4444
private ActivityController<TestActivity> activityController;
45-
private ActivityController<TestSupportActivity> supportActivityController;
45+
private ActivityController<TestAppCompatActivity> supportActivityController;
4646
private SupportFragmentController<TestFragment> supportController;
4747
@Captor
4848
private ArgumentCaptor<Integer> integerCaptor;
@@ -84,11 +84,11 @@ public void shouldCallbackOnPermissionGranted_whenRequestFromActivity() {
8484

8585
@Test
8686
public void shouldCallbackOnPermissionGranted_whenRequestFromSupportActivity() {
87-
EasyPermissions.requestPermissions(spySupportActivity, RATIONALE, TestSupportActivity.REQUEST_CODE, ALL_PERMS);
87+
EasyPermissions.requestPermissions(spySupportActivity, RATIONALE, TestAppCompatActivity.REQUEST_CODE, ALL_PERMS);
8888

8989
verify(spySupportActivity, times(1))
9090
.onPermissionsGranted(integerCaptor.capture(), listCaptor.capture());
91-
assertThat(integerCaptor.getValue()).isEqualTo(TestSupportActivity.REQUEST_CODE);
91+
assertThat(integerCaptor.getValue()).isEqualTo(TestAppCompatActivity.REQUEST_CODE);
9292
assertThat(listCaptor.getValue()).containsAllIn(ALL_PERMS);
9393
}
9494

@@ -105,7 +105,7 @@ public void shouldCallbackOnPermissionGranted_whenRequestFromFragment() {
105105
private void setUpActivityAndFragment() {
106106
activityController = Robolectric.buildActivity(TestActivity.class)
107107
.create().start().resume();
108-
supportActivityController = Robolectric.buildActivity(TestSupportActivity.class)
108+
supportActivityController = Robolectric.buildActivity(TestAppCompatActivity.class)
109109
.create().start().resume();
110110
supportController = SupportFragmentController.of(new TestFragment())
111111
.create().start().resume();

easypermissions/src/test/java/pub/devrel/easypermissions/EasyPermissionsTest.java

Lines changed: 70 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@
2828
import java.util.Collections;
2929

3030
import pub.devrel.easypermissions.testhelper.TestActivity;
31+
import pub.devrel.easypermissions.testhelper.TestAppCompatActivity;
3132
import pub.devrel.easypermissions.testhelper.TestFragment;
32-
import pub.devrel.easypermissions.testhelper.TestSupportActivity;
33+
import pub.devrel.easypermissions.testhelper.TestSupportFragmentActivity;
3334

3435
import static com.google.common.truth.Truth.assertThat;
3536
import static junit.framework.Assert.fail;
@@ -57,10 +58,12 @@ public class EasyPermissionsTest {
5758
PackageManager.PERMISSION_DENIED, PackageManager.PERMISSION_GRANTED};
5859
private Application app;
5960
private TestActivity spyActivity;
60-
private TestSupportActivity spySupportActivity;
61+
private TestSupportFragmentActivity spySupportFragmentActivity;
62+
private TestAppCompatActivity spyAppCompatActivity;
6163
private TestFragment spyFragment;
6264
private ActivityController<TestActivity> activityController;
63-
private ActivityController<TestSupportActivity> supportActivityController;
65+
private ActivityController<TestSupportFragmentActivity> supportFragmentActivityController;
66+
private ActivityController<TestAppCompatActivity> appCompatActivityController;
6467
private SupportFragmentController<TestFragment> fragmentController;
6568
@Captor
6669
private ArgumentCaptor<Integer> integerCaptor;
@@ -254,75 +257,75 @@ public void shouldNotHavePermissionPermanentlyDenied_whenShowRationaleFromActivi
254257
}
255258

256259
@Test
257-
public void shouldCorrectlyCallback_whenOnRequestPermissionResultCalledFromSupportActivity() {
258-
EasyPermissions.onRequestPermissionsResult(TestSupportActivity.REQUEST_CODE, ALL_PERMS, SMS_DENIED_RESULT, spySupportActivity);
260+
public void shouldCorrectlyCallback_whenOnRequestPermissionResultCalledFromAppCompatActivity() {
261+
EasyPermissions.onRequestPermissionsResult(TestAppCompatActivity.REQUEST_CODE, ALL_PERMS, SMS_DENIED_RESULT, spyAppCompatActivity);
259262

260-
verify(spySupportActivity, times(1))
263+
verify(spyAppCompatActivity, times(1))
261264
.onPermissionsGranted(integerCaptor.capture(), listCaptor.capture());
262-
assertThat(integerCaptor.getValue()).isEqualTo(TestSupportActivity.REQUEST_CODE);
265+
assertThat(integerCaptor.getValue()).isEqualTo(TestAppCompatActivity.REQUEST_CODE);
263266
assertThat(listCaptor.getValue())
264267
.containsAllIn(new ArrayList<>(Collections.singletonList(Manifest.permission.ACCESS_FINE_LOCATION)));
265268

266-
verify(spySupportActivity, times(1))
269+
verify(spyAppCompatActivity, times(1))
267270
.onPermissionsDenied(integerCaptor.capture(), listCaptor.capture());
268-
assertThat(integerCaptor.getValue()).isEqualTo(TestSupportActivity.REQUEST_CODE);
271+
assertThat(integerCaptor.getValue()).isEqualTo(TestAppCompatActivity.REQUEST_CODE);
269272
assertThat(listCaptor.getValue())
270273
.containsAllIn(new ArrayList<>(Collections.singletonList(Manifest.permission.READ_SMS)));
271274

272-
verify(spySupportActivity, never()).afterPermissionGranted();
275+
verify(spyAppCompatActivity, never()).afterPermissionGranted();
273276
}
274277

275278
@Test
276-
public void shouldCallbackOnPermissionGranted_whenRequestAlreadyGrantedPermissionsFromSupportActivity() {
279+
public void shouldCallbackOnPermissionGranted_whenRequestAlreadyGrantedPermissionsFromAppCompatActivity() {
277280
grantPermissions(ALL_PERMS);
278281

279-
EasyPermissions.requestPermissions(spySupportActivity, RATIONALE, TestSupportActivity.REQUEST_CODE, ALL_PERMS);
282+
EasyPermissions.requestPermissions(spyAppCompatActivity, RATIONALE, TestAppCompatActivity.REQUEST_CODE, ALL_PERMS);
280283

281-
verify(spySupportActivity, times(1))
284+
verify(spyAppCompatActivity, times(1))
282285
.onPermissionsGranted(integerCaptor.capture(), listCaptor.capture());
283-
verify(spySupportActivity, never()).requestPermissions(any(String[].class), anyInt());
284-
assertThat(integerCaptor.getValue()).isEqualTo(TestSupportActivity.REQUEST_CODE);
286+
verify(spyAppCompatActivity, never()).requestPermissions(any(String[].class), anyInt());
287+
assertThat(integerCaptor.getValue()).isEqualTo(TestAppCompatActivity.REQUEST_CODE);
285288
assertThat(listCaptor.getValue()).containsAllIn(ALL_PERMS);
286289
}
287290

288291
@Test
289-
public void shouldCallbackAfterPermissionGranted_whenRequestAlreadyGrantedPermissionsFromSupportActivity() {
292+
public void shouldCallbackAfterPermissionGranted_whenRequestAlreadyGrantedPermissionsFromAppCompatActivity() {
290293
grantPermissions(ALL_PERMS);
291294

292-
EasyPermissions.requestPermissions(spySupportActivity, RATIONALE, TestSupportActivity.REQUEST_CODE, ALL_PERMS);
295+
EasyPermissions.requestPermissions(spyAppCompatActivity, RATIONALE, TestAppCompatActivity.REQUEST_CODE, ALL_PERMS);
293296

294297
// Called 2 times because this is a spy and library implementation invokes super classes annotated methods as well
295-
verify(spySupportActivity, times(2)).afterPermissionGranted();
298+
verify(spyAppCompatActivity, times(2)).afterPermissionGranted();
296299
}
297300

298301
@Test
299-
public void shouldNotCallbackAfterPermissionGranted_whenRequestNotGrantedPermissionsFromSupportActivity() {
302+
public void shouldNotCallbackAfterPermissionGranted_whenRequestNotGrantedPermissionsFromAppCompatActivity() {
300303
grantPermissions(ONE_PERM);
301304

302-
EasyPermissions.requestPermissions(spySupportActivity, RATIONALE, TestSupportActivity.REQUEST_CODE, ALL_PERMS);
305+
EasyPermissions.requestPermissions(spyAppCompatActivity, RATIONALE, TestAppCompatActivity.REQUEST_CODE, ALL_PERMS);
303306

304-
verify(spySupportActivity, never()).afterPermissionGranted();
307+
verify(spyAppCompatActivity, never()).afterPermissionGranted();
305308
}
306309

307310
@Test
308-
public void shouldRequestPermissions_whenMissingPermissionAndNotShowRationaleFromSupportActivity() {
311+
public void shouldRequestPermissions_whenMissingPermissionAndNotShowRationaleFromAppCompatActivity() {
309312
grantPermissions(ONE_PERM);
310313
showRationale(false, ALL_PERMS);
311314

312-
EasyPermissions.requestPermissions(spySupportActivity, RATIONALE, TestSupportActivity.REQUEST_CODE, ALL_PERMS);
315+
EasyPermissions.requestPermissions(spyAppCompatActivity, RATIONALE, TestAppCompatActivity.REQUEST_CODE, ALL_PERMS);
313316

314-
verify(spySupportActivity, times(1))
315-
.requestPermissions(ALL_PERMS, TestSupportActivity.REQUEST_CODE);
317+
verify(spyAppCompatActivity, times(1))
318+
.requestPermissions(ALL_PERMS, TestAppCompatActivity.REQUEST_CODE);
316319
}
317320

318321
@Test
319-
public void shouldShowCorrectDialog_whenMissingPermissionsAndShowRationaleFromSupportActivity() {
322+
public void shouldShowCorrectDialog_whenMissingPermissionsAndShowRationaleFromAppCompatActivity() {
320323
grantPermissions(ONE_PERM);
321324
showRationale(true, ALL_PERMS);
322325

323-
EasyPermissions.requestPermissions(spySupportActivity, RATIONALE, TestSupportActivity.REQUEST_CODE, ALL_PERMS);
326+
EasyPermissions.requestPermissions(spyAppCompatActivity, RATIONALE, TestAppCompatActivity.REQUEST_CODE, ALL_PERMS);
324327

325-
android.support.v4.app.Fragment dialogFragment = spySupportActivity.getSupportFragmentManager()
328+
android.support.v4.app.Fragment dialogFragment = spyAppCompatActivity.getSupportFragmentManager()
326329
.findFragmentByTag(RationaleDialogFragmentCompat.TAG);
327330
assertThat(dialogFragment).isInstanceOf(RationaleDialogFragmentCompat.class);
328331

@@ -331,19 +334,34 @@ public void shouldShowCorrectDialog_whenMissingPermissionsAndShowRationaleFromSu
331334
}
332335

333336
@Test
334-
public void shouldShowCorrectDialogUsingRequest_whenMissingPermissionsAndShowRationaleFromSupportActivity() {
337+
public void shouldShowCorrectDialog_whenMissingPermissionsAndShowRationaleFromSupportFragmentActivity() {
335338
grantPermissions(ONE_PERM);
336339
showRationale(true, ALL_PERMS);
337340

338-
PermissionRequest request = new PermissionRequest.Builder(spySupportActivity, TestSupportActivity.REQUEST_CODE, ALL_PERMS)
341+
EasyPermissions.requestPermissions(spySupportFragmentActivity, RATIONALE, TestSupportFragmentActivity.REQUEST_CODE, ALL_PERMS);
342+
343+
Fragment dialogFragment = spySupportFragmentActivity.getFragmentManager()
344+
.findFragmentByTag(RationaleDialogFragment.TAG);
345+
assertThat(dialogFragment).isInstanceOf(RationaleDialogFragment.class);
346+
347+
Dialog dialog = ((RationaleDialogFragment) dialogFragment).getDialog();
348+
assertThatHasExpectedRationale(dialog, RATIONALE);
349+
}
350+
351+
@Test
352+
public void shouldShowCorrectDialogUsingRequest_whenMissingPermissionsAndShowRationaleFromAppCompatActivity() {
353+
grantPermissions(ONE_PERM);
354+
showRationale(true, ALL_PERMS);
355+
356+
PermissionRequest request = new PermissionRequest.Builder(spyAppCompatActivity, TestAppCompatActivity.REQUEST_CODE, ALL_PERMS)
339357
.setPositiveButtonText(android.R.string.ok)
340358
.setNegativeButtonText(android.R.string.cancel)
341359
.setRationale(android.R.string.unknownName)
342360
.setTheme(R.style.Theme_AppCompat)
343361
.build();
344362
EasyPermissions.requestPermissions(request);
345363

346-
android.support.v4.app.Fragment dialogFragment = spySupportActivity.getSupportFragmentManager()
364+
android.support.v4.app.Fragment dialogFragment = spyAppCompatActivity.getSupportFragmentManager()
347365
.findFragmentByTag(RationaleDialogFragmentCompat.TAG);
348366
assertThat(dialogFragment).isInstanceOf(RationaleDialogFragmentCompat.class);
349367

@@ -353,45 +371,45 @@ public void shouldShowCorrectDialogUsingRequest_whenMissingPermissionsAndShowRat
353371
}
354372

355373
@Test
356-
public void shouldHaveSomePermissionDenied_whenShowRationaleFromSupportActivity() {
374+
public void shouldHaveSomePermissionDenied_whenShowRationaleFromAppCompatActivity() {
357375
showRationale(true, ALL_PERMS);
358376

359-
assertThat(EasyPermissions.somePermissionDenied(spySupportActivity, ALL_PERMS)).isTrue();
377+
assertThat(EasyPermissions.somePermissionDenied(spyAppCompatActivity, ALL_PERMS)).isTrue();
360378
}
361379

362380
@Test
363-
public void shouldNotHaveSomePermissionDenied_whenNotShowRationaleFromSupportActivity() {
381+
public void shouldNotHaveSomePermissionDenied_whenNotShowRationaleFromAppCompatActivity() {
364382
showRationale(false, ALL_PERMS);
365383

366-
assertThat(EasyPermissions.somePermissionDenied(spySupportActivity, ALL_PERMS)).isFalse();
384+
assertThat(EasyPermissions.somePermissionDenied(spyAppCompatActivity, ALL_PERMS)).isFalse();
367385
}
368386

369387
@Test
370-
public void shouldHaveSomePermissionPermanentlyDenied_whenNotShowRationaleFromSupportActivity() {
388+
public void shouldHaveSomePermissionPermanentlyDenied_whenNotShowRationaleFromAppCompatActivity() {
371389
showRationale(false, ALL_PERMS);
372390

373-
assertThat(EasyPermissions.somePermissionPermanentlyDenied(spySupportActivity, Arrays.asList(ALL_PERMS))).isTrue();
391+
assertThat(EasyPermissions.somePermissionPermanentlyDenied(spyAppCompatActivity, Arrays.asList(ALL_PERMS))).isTrue();
374392
}
375393

376394
@Test
377-
public void shouldNotHaveSomePermissionPermanentlyDenied_whenShowRationaleFromSupportActivity() {
395+
public void shouldNotHaveSomePermissionPermanentlyDenied_whenShowRationaleFromAppCompatActivity() {
378396
showRationale(true, ALL_PERMS);
379397

380-
assertThat(EasyPermissions.somePermissionPermanentlyDenied(spySupportActivity, Arrays.asList(ALL_PERMS))).isFalse();
398+
assertThat(EasyPermissions.somePermissionPermanentlyDenied(spyAppCompatActivity, Arrays.asList(ALL_PERMS))).isFalse();
381399
}
382400

383401
@Test
384-
public void shouldHavePermissionPermanentlyDenied_whenNotShowRationaleFromSupportActivity() {
402+
public void shouldHavePermissionPermanentlyDenied_whenNotShowRationaleFromAppCompatActivity() {
385403
showRationale(false, Manifest.permission.READ_SMS);
386404

387-
assertThat(EasyPermissions.permissionPermanentlyDenied(spySupportActivity, Manifest.permission.READ_SMS)).isTrue();
405+
assertThat(EasyPermissions.permissionPermanentlyDenied(spyAppCompatActivity, Manifest.permission.READ_SMS)).isTrue();
388406
}
389407

390408
@Test
391-
public void shouldNotHavePermissionPermanentlyDenied_whenShowRationaleFromSupportActivity() {
409+
public void shouldNotHavePermissionPermanentlyDenied_whenShowRationaleFromAppCompatActivity() {
392410
showRationale(true, Manifest.permission.READ_SMS);
393411

394-
assertThat(EasyPermissions.permissionPermanentlyDenied(spySupportActivity, Manifest.permission.READ_SMS)).isFalse();
412+
assertThat(EasyPermissions.permissionPermanentlyDenied(spyAppCompatActivity, Manifest.permission.READ_SMS)).isFalse();
395413
}
396414

397415
@Test
@@ -575,19 +593,23 @@ private void assertThatHasExpectedRationale(Dialog dialog, String rationale) {
575593
private void setUpActivityAndFragment() {
576594
activityController = Robolectric.buildActivity(TestActivity.class)
577595
.create().start().resume();
578-
supportActivityController = Robolectric.buildActivity(TestSupportActivity.class)
596+
supportFragmentActivityController = Robolectric.buildActivity(TestSupportFragmentActivity.class)
597+
.create().start().resume();
598+
appCompatActivityController = Robolectric.buildActivity(TestAppCompatActivity.class)
579599
.create().start().resume();
580600
fragmentController = SupportFragmentController.of(new TestFragment())
581601
.create().start().resume();
582602

583603
spyActivity = Mockito.spy(activityController.get());
584-
spySupportActivity = Mockito.spy(supportActivityController.get());
604+
spySupportFragmentActivity = Mockito.spy(supportFragmentActivityController.get());
605+
spyAppCompatActivity = Mockito.spy(appCompatActivityController.get());
585606
spyFragment = Mockito.spy(fragmentController.get());
586607
}
587608

588609
private void tearDownActivityAndFragment() {
589610
activityController.pause().stop().destroy();
590-
supportActivityController.pause().stop().destroy();
611+
supportFragmentActivityController.pause().stop().destroy();
612+
appCompatActivityController.pause().stop().destroy();
591613
fragmentController.pause().stop().destroy();
592614
}
593615

@@ -598,7 +620,8 @@ private void grantPermissions(String[] perms) {
598620
private void showRationale(boolean show, String... perms) {
599621
for (String perm : perms) {
600622
when(spyActivity.shouldShowRequestPermissionRationale(perm)).thenReturn(show);
601-
when(spySupportActivity.shouldShowRequestPermissionRationale(perm)).thenReturn(show);
623+
when(spySupportFragmentActivity.shouldShowRequestPermissionRationale(perm)).thenReturn(show);
624+
when(spyAppCompatActivity.shouldShowRequestPermissionRationale(perm)).thenReturn(show);
602625
when(spyFragment.shouldShowRequestPermissionRationale(perm)).thenReturn(show);
603626
}
604627
}

easypermissions/src/test/java/pub/devrel/easypermissions/testhelper/TestSupportActivity.java renamed to easypermissions/src/test/java/pub/devrel/easypermissions/testhelper/TestAppCompatActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import pub.devrel.easypermissions.EasyPermissions;
1212
import pub.devrel.easypermissions.R;
1313

14-
public class TestSupportActivity extends AppCompatActivity
14+
public class TestAppCompatActivity extends AppCompatActivity
1515
implements EasyPermissions.PermissionCallbacks, EasyPermissions.RationaleCallbacks {
1616

1717
public static final int REQUEST_CODE = 3;

0 commit comments

Comments
 (0)