Skip to content

Commit dd8add3

Browse files
refactor permissions
1 parent d5bedc3 commit dd8add3

File tree

7 files changed

+93
-69
lines changed

7 files changed

+93
-69
lines changed

app/build.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#Build Properties
2-
#Fri Aug 23 08:16:25 EDT 2019
2+
#Sat Aug 24 14:32:20 EDT 2019
33
version_minor=0
4-
version_build=16
4+
version_build=17
55
version_patch=7
6-
version_store=48
76
version_major=2
7+
version_store=48

app/src/main/java/com/vrem/wifianalyzer/MainActivity.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import com.vrem.wifianalyzer.navigation.NavigationMenuControl;
3434
import com.vrem.wifianalyzer.navigation.NavigationMenuController;
3535
import com.vrem.wifianalyzer.navigation.options.OptionMenu;
36-
import com.vrem.wifianalyzer.permission.ApplicationPermission;
36+
import com.vrem.wifianalyzer.permission.PermissionService;
3737
import com.vrem.wifianalyzer.settings.Repository;
3838
import com.vrem.wifianalyzer.settings.Settings;
3939
import com.vrem.wifianalyzer.settings.SettingsFactory;
@@ -57,7 +57,7 @@ public class MainActivity extends AppCompatActivity implements NavigationMenuCon
5757
private NavigationMenuController navigationMenuController;
5858
private OptionMenu optionMenu;
5959
private String currentCountryCode;
60-
private ApplicationPermission applicationPermission;
60+
private PermissionService permissionService;
6161

6262
@Override
6363
protected void attachBaseContext(Context newBase) {
@@ -101,8 +101,8 @@ protected void onCreate(Bundle savedInstanceState) {
101101
ConnectionView connectionView = new ConnectionView(this);
102102
mainContext.getScannerService().register(connectionView);
103103

104-
applicationPermission = new ApplicationPermission(this);
105-
applicationPermission.check();
104+
permissionService = new PermissionService(this);
105+
permissionService.check();
106106
}
107107

108108
@Override
@@ -119,7 +119,7 @@ public void onConfigurationChanged(Configuration newConfig) {
119119

120120
@Override
121121
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
122-
if (!applicationPermission.isGranted(requestCode, grantResults)) {
122+
if (!permissionService.isGranted(requestCode, grantResults)) {
123123
finish();
124124
}
125125
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
@@ -218,7 +218,7 @@ public boolean onCreateOptionsMenu(Menu menu) {
218218
}
219219

220220
@Override
221-
public boolean onOptionsItemSelected(MenuItem item) {
221+
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
222222
optionMenu.select(item);
223223
updateActionBar();
224224
return true;
@@ -268,6 +268,10 @@ public NavigationMenuController getNavigationMenuController() {
268268
return navigationMenuController;
269269
}
270270

271+
public PermissionService getPermissionService() {
272+
return permissionService;
273+
}
274+
271275
void setNavigationMenuController(NavigationMenuController navigationMenuController) {
272276
this.navigationMenuController = navigationMenuController;
273277
}

app/src/main/java/com/vrem/wifianalyzer/permission/ApplicationPermission.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@
2828

2929
import androidx.annotation.NonNull;
3030

31-
public class ApplicationPermission {
31+
class ApplicationPermission {
3232
static final String[] PERMISSIONS = {Manifest.permission.ACCESS_FINE_LOCATION};
3333
static final int REQUEST_CODE = 0x123450;
3434

3535
private final Activity activity;
3636
private final PermissionDialog permissionDialog;
3737

38-
public ApplicationPermission(@NonNull Activity activity) {
38+
ApplicationPermission(@NonNull Activity activity) {
3939
this(activity, new PermissionDialog(activity));
4040
}
4141

@@ -44,7 +44,7 @@ public ApplicationPermission(@NonNull Activity activity) {
4444
this.permissionDialog = permissionDialog;
4545
}
4646

47-
public void check() {
47+
void check() {
4848
if (isGranted()) {
4949
return;
5050
}
@@ -54,7 +54,7 @@ public void check() {
5454
permissionDialog.show();
5555
}
5656

57-
public boolean isGranted(int requestCode, @NonNull int[] grantResults) {
57+
boolean isGranted(int requestCode, @NonNull int[] grantResults) {
5858
return requestCode == REQUEST_CODE && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED;
5959
}
6060

app/src/main/java/com/vrem/wifianalyzer/permission/RequirementPermission.java renamed to app/src/main/java/com/vrem/wifianalyzer/permission/PermissionService.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,32 +18,38 @@
1818

1919
package com.vrem.wifianalyzer.permission;
2020

21-
import android.annotation.TargetApi;
2221
import android.app.Activity;
23-
import android.os.Build;
24-
25-
import com.vrem.util.BuildUtils;
2622

2723
import androidx.annotation.NonNull;
2824

29-
public class RequirementPermission {
25+
public class PermissionService {
3026
private SystemPermission systemPermission;
3127
private ApplicationPermission applicationPermission;
3228

33-
public RequirementPermission(@NonNull Activity activity) {
29+
public PermissionService(@NonNull Activity activity) {
3430
this.applicationPermission = new ApplicationPermission(activity);
3531
this.systemPermission = new SystemPermission(activity);
3632
}
3733

3834
public boolean isEnabled() {
39-
return !BuildUtils.isMinVersionM() || isEnabledAndroidM();
35+
return isSystemEnabled() && isPermissionGranted();
36+
}
37+
38+
public boolean isSystemEnabled() {
39+
return systemPermission.isEnabled();
4040
}
4141

42-
@TargetApi(Build.VERSION_CODES.M)
43-
private boolean isEnabledAndroidM() {
44-
return systemPermission.isEnabled() && applicationPermission.isGranted();
42+
public void check() {
43+
applicationPermission.check();
4544
}
4645

46+
public boolean isGranted(int requestCode, int[] grantResults) {
47+
return applicationPermission.isGranted(requestCode, grantResults);
48+
}
49+
50+
public boolean isPermissionGranted() {
51+
return applicationPermission.isGranted();
52+
}
4753

4854
void setSystemPermission(SystemPermission systemPermission) {
4955
this.systemPermission = systemPermission;
@@ -52,4 +58,5 @@ void setSystemPermission(SystemPermission systemPermission) {
5258
void setApplicationPermission(ApplicationPermission applicationPermission) {
5359
this.applicationPermission = applicationPermission;
5460
}
61+
5562
}

app/src/main/java/com/vrem/wifianalyzer/permission/SystemPermission.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@
2828

2929
import androidx.annotation.NonNull;
3030

31-
public class SystemPermission {
31+
class SystemPermission {
3232
private final Activity activity;
3333

34-
public SystemPermission(@NonNull Activity activity) {
34+
SystemPermission(@NonNull Activity activity) {
3535
this.activity = activity;
3636
}
3737

38-
public boolean isEnabled() {
38+
boolean isEnabled() {
3939
return !BuildUtils.isMinVersionM() || isProviderEnabledAndroidM();
4040
}
4141

app/src/main/java/com/vrem/wifianalyzer/wifi/accesspoint/ConnectionView.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import com.vrem.wifianalyzer.MainActivity;
2828
import com.vrem.wifianalyzer.MainContext;
2929
import com.vrem.wifianalyzer.R;
30-
import com.vrem.wifianalyzer.permission.RequirementPermission;
30+
import com.vrem.wifianalyzer.permission.PermissionService;
3131
import com.vrem.wifianalyzer.wifi.model.WiFiConnection;
3232
import com.vrem.wifianalyzer.wifi.model.WiFiData;
3333
import com.vrem.wifianalyzer.wifi.model.WiFiDetail;
@@ -39,13 +39,11 @@
3939

4040
public class ConnectionView implements UpdateNotifier {
4141
private final MainActivity mainActivity;
42-
private final RequirementPermission requirementPermission;
4342
private AccessPointDetail accessPointDetail;
4443
private AccessPointPopup accessPointPopup;
4544

4645
public ConnectionView(@NonNull MainActivity mainActivity) {
4746
this.mainActivity = mainActivity;
48-
this.requirementPermission = new RequirementPermission(mainActivity);
4947
setAccessPointDetail(new AccessPointDetail());
5048
setAccessPointPopup(new AccessPointPopup());
5149
}
@@ -75,7 +73,8 @@ private void displayNoData(@NonNull WiFiData wiFiData) {
7573
}
7674

7775
private int getNoLocationVisibility(int visibility) {
78-
return requirementPermission.isEnabled() ? View.GONE : visibility;
76+
PermissionService permissionService = mainActivity.getPermissionService();
77+
return permissionService.isEnabled() ? View.GONE : visibility;
7978
}
8079

8180
private boolean noData(@NonNull WiFiData wiFiData) {

app/src/test/java/com/vrem/wifianalyzer/permission/RequirementPermissionTest.java renamed to app/src/test/java/com/vrem/wifianalyzer/permission/PermissionServiceTest.java

Lines changed: 53 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,21 @@
2020

2121
import android.app.Activity;
2222

23-
import com.vrem.util.BuildUtils;
24-
2523
import org.junit.After;
2624
import org.junit.Before;
2725
import org.junit.Test;
2826
import org.junit.runner.RunWith;
2927
import org.mockito.Mock;
30-
import org.powermock.core.classloader.annotations.PrepareForTest;
31-
import org.powermock.modules.junit4.PowerMockRunner;
28+
import org.mockito.junit.MockitoJUnitRunner;
3229

3330
import static org.junit.Assert.assertFalse;
3431
import static org.junit.Assert.assertTrue;
3532
import static org.mockito.Mockito.verify;
36-
import static org.powermock.api.mockito.PowerMockito.mockStatic;
37-
import static org.powermock.api.mockito.PowerMockito.verifyNoMoreInteractions;
38-
import static org.powermock.api.mockito.PowerMockito.verifyStatic;
39-
import static org.powermock.api.mockito.PowerMockito.when;
33+
import static org.mockito.Mockito.verifyNoMoreInteractions;
34+
import static org.mockito.Mockito.when;
4035

41-
@RunWith(PowerMockRunner.class)
42-
@PrepareForTest(BuildUtils.class)
43-
public class RequirementPermissionTest {
36+
@RunWith(MockitoJUnitRunner.class)
37+
public class PermissionServiceTest {
4438

4539
@Mock
4640
private Activity activity;
@@ -49,12 +43,11 @@ public class RequirementPermissionTest {
4943
@Mock
5044
private ApplicationPermission applicationPermission;
5145

52-
private RequirementPermission fixture;
46+
private PermissionService fixture;
5347

5448
@Before
5549
public void setUp() {
56-
mockStatic(BuildUtils.class);
57-
fixture = new RequirementPermission(activity);
50+
fixture = new PermissionService(activity);
5851
fixture.setApplicationPermission(applicationPermission);
5952
fixture.setSystemPermission(systemPermission);
6053
}
@@ -64,25 +57,11 @@ public void tearDown() {
6457
verifyNoMoreInteractions(activity);
6558
verifyNoMoreInteractions(applicationPermission);
6659
verifyNoMoreInteractions(systemPermission);
67-
verifyNoMoreInteractions(BuildUtils.class);
68-
}
69-
70-
@Test
71-
public void testIsEnabledWithNoPermissionRequired() {
72-
// setup
73-
when(BuildUtils.isMinVersionM()).thenReturn(false);
74-
// execute
75-
boolean actual = fixture.isEnabled();
76-
// validate
77-
assertTrue(actual);
78-
verifyStatic(BuildUtils.class);
79-
BuildUtils.isMinVersionM();
8060
}
8161

8262
@Test
8363
public void testIsEnabled() {
8464
// setup
85-
when(BuildUtils.isMinVersionM()).thenReturn(true);
8665
when(systemPermission.isEnabled()).thenReturn(true);
8766
when(applicationPermission.isGranted()).thenReturn(true);
8867
// execute
@@ -91,29 +70,22 @@ public void testIsEnabled() {
9170
assertTrue(actual);
9271
verify(systemPermission).isEnabled();
9372
verify(applicationPermission).isGranted();
94-
verifyStatic(BuildUtils.class);
95-
BuildUtils.isMinVersionM();
9673
}
9774

9875
@Test
99-
public void testIsEnabledWhenLocationCheckerIsNotEnabled() {
76+
public void testIsEnabledWhenSystemPermissionIsNotEnabled() {
10077
// setup
101-
when(BuildUtils.isMinVersionM()).thenReturn(true);
10278
when(systemPermission.isEnabled()).thenReturn(false);
10379
// execute
10480
boolean actual = fixture.isEnabled();
10581
// validate
10682
assertFalse(actual);
10783
verify(systemPermission).isEnabled();
108-
verifyStatic(BuildUtils.class);
109-
BuildUtils.isMinVersionM();
11084
}
11185

11286
@Test
113-
114-
public void testIsEnabledWhenPermissionCheckerIsNotEnabled() {
87+
public void testIsEnabledWhenApplicationPermissionAreNotGranted() {
11588
// setup
116-
when(BuildUtils.isMinVersionM()).thenReturn(true);
11789
when(systemPermission.isEnabled()).thenReturn(true);
11890
when(applicationPermission.isGranted()).thenReturn(false);
11991
// execute
@@ -122,7 +94,49 @@ public void testIsEnabledWhenPermissionCheckerIsNotEnabled() {
12294
assertFalse(actual);
12395
verify(systemPermission).isEnabled();
12496
verify(applicationPermission).isGranted();
125-
verifyStatic(BuildUtils.class);
126-
BuildUtils.isMinVersionM();
12797
}
98+
99+
@Test
100+
public void testIsSystemEnabled() {
101+
// setup
102+
when(systemPermission.isEnabled()).thenReturn(true);
103+
// execute
104+
boolean actual = fixture.isSystemEnabled();
105+
// validate
106+
assertTrue(actual);
107+
verify(systemPermission).isEnabled();
108+
}
109+
110+
@Test
111+
public void testIsPermissionGranted() {
112+
// setup
113+
when(applicationPermission.isGranted()).thenReturn(true);
114+
// execute
115+
boolean actual = fixture.isPermissionGranted();
116+
// validate
117+
assertTrue(actual);
118+
verify(applicationPermission).isGranted();
119+
}
120+
121+
@Test
122+
public void testPermissionCheck() {
123+
// execute
124+
fixture.check();
125+
// validate
126+
verify(applicationPermission).check();
127+
}
128+
129+
@Test
130+
public void testIsGranted() {
131+
// setup
132+
int requestCode = 111;
133+
int[] results = new int[]{1, 2, 3};
134+
when(applicationPermission.isGranted(requestCode, results)).thenReturn(true);
135+
// execute
136+
boolean actual = fixture.isGranted(requestCode, results);
137+
// validate
138+
assertTrue(actual);
139+
verify(applicationPermission).isGranted(requestCode, results);
140+
}
141+
128142
}

0 commit comments

Comments
 (0)