Skip to content
This repository has been archived by the owner on Jul 2, 2021. It is now read-only.

Commit

Permalink
Updated dependencies, migrated to AndroidX and fixed tests (#236)
Browse files Browse the repository at this point in the history
* Updated dependencies, migrated to AndroidX and fixed tests

Fixes #228

* Attempt to fix Travis build

* Fix checkstyle issue by removing unused import
  • Loading branch information
Rolf-Smit authored and pedrovgs committed Sep 17, 2019
1 parent 7ba4f12 commit bdf3962
Show file tree
Hide file tree
Showing 21 changed files with 67 additions and 94 deletions.
5 changes: 4 additions & 1 deletion .travis.yml
Expand Up @@ -24,7 +24,10 @@ android:
- 'android-sdk-preview-license-52d11cd2'
- 'android-sdk-license-.+'
- 'google-gdk-license-.+'

-
before_install:
- yes | sdkmanager "platforms;android-28"
-
before_script:
- echo no | android create avd --force -n test -t android-24 --abi armeabi-v7a
- QEMU_AUDIO_DRV=none emulator -avd test -no-window &
Expand Down
5 changes: 2 additions & 3 deletions build.gradle
Expand Up @@ -4,15 +4,14 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.android.tools.build:gradle:3.3.2'
}
}

allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url 'https://maven.google.com' }
}

apply plugin: 'checkstyle'
Expand Down
11 changes: 5 additions & 6 deletions dexter/build.gradle
Expand Up @@ -2,12 +2,11 @@ apply plugin: 'com.android.library'
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'

android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
compileSdkVersion 28

defaultConfig {
minSdkVersion 14
targetSdkVersion 27
targetSdkVersion 28
versionCode 1
versionName "1.0"
consumerProguardFiles 'proguard-rules.pro'
Expand All @@ -26,8 +25,8 @@ android {

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.google.android.material:material:1.0.0'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:1.9.5'
testImplementation 'org.mockito:mockito-core:2.28.2'
}
Expand Up @@ -18,10 +18,10 @@

import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.PermissionChecker;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.PermissionChecker;

/**
* Wrapper class for all the static calls to the Android permission system
Expand Down
4 changes: 2 additions & 2 deletions dexter/src/main/java/com/karumi/dexter/DexterActivity.java
Expand Up @@ -22,8 +22,8 @@
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.PermissionChecker;
import androidx.core.app.ActivityCompat;
import androidx.core.content.PermissionChecker;
import android.view.WindowManager;
import java.util.Arrays;
import java.util.Collection;
Expand Down
4 changes: 2 additions & 2 deletions dexter/src/main/java/com/karumi/dexter/DexterInstance.java
Expand Up @@ -21,7 +21,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.support.v4.content.PermissionChecker;
import androidx.core.content.PermissionChecker;
import com.karumi.dexter.listener.DexterError;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
Expand Down Expand Up @@ -166,7 +166,7 @@ void onCancelPermissionRequest() {
private void requestPermissionsToSystem(Collection<String> permissions) {
if (!isShowingNativeDialog.get()) {
androidPermissionService.requestPermissions(activity,
permissions.toArray(new String[permissions.size()]), PERMISSIONS_REQUEST_CODE);
permissions.toArray(new String[0]), PERMISSIONS_REQUEST_CODE);
}
isShowingNativeDialog.set(true);
}
Expand Down
Expand Up @@ -16,7 +16,7 @@

package com.karumi.dexter.listener;

import android.support.annotation.NonNull;
import androidx.annotation.NonNull;

/**
* If a permission was denied, an instance of this class will be returned
Expand Down
Expand Up @@ -16,7 +16,7 @@

package com.karumi.dexter.listener;

import android.support.annotation.NonNull;
import androidx.annotation.NonNull;

/**
* If a permission was granted, an instance of this class will be returned
Expand Down
Expand Up @@ -16,7 +16,7 @@

package com.karumi.dexter.listener;

import android.support.annotation.NonNull;
import androidx.annotation.NonNull;

/**
* Wrapper class for a permission request
Expand Down
Expand Up @@ -21,8 +21,8 @@
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.support.annotation.DrawableRes;
import android.support.annotation.StringRes;
import androidx.annotation.DrawableRes;
import androidx.annotation.StringRes;
import com.karumi.dexter.MultiplePermissionsReport;

/**
Expand Down
Expand Up @@ -20,8 +20,8 @@
import android.content.Intent;
import android.net.Uri;
import android.provider.Settings;
import android.support.annotation.StringRes;
import android.support.design.widget.Snackbar;
import androidx.annotation.StringRes;
import com.google.android.material.snackbar.Snackbar;
import android.view.View;
import com.karumi.dexter.MultiplePermissionsReport;

Expand Down Expand Up @@ -70,7 +70,7 @@ private void showSnackbar() {
snackbar.setAction(buttonText, onButtonClickListener);
}
if (snackbarCallback != null) {
snackbar.setCallback(snackbarCallback);
snackbar.addCallback(snackbarCallback);
}
snackbar.show();
}
Expand Down
Expand Up @@ -20,8 +20,8 @@
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.support.annotation.DrawableRes;
import android.support.annotation.StringRes;
import androidx.annotation.DrawableRes;
import androidx.annotation.StringRes;
import com.karumi.dexter.listener.PermissionDeniedResponse;

/**
Expand Down
Expand Up @@ -20,8 +20,8 @@
import android.content.Intent;
import android.net.Uri;
import android.provider.Settings;
import android.support.annotation.StringRes;
import android.support.design.widget.Snackbar;
import androidx.annotation.StringRes;
import com.google.android.material.snackbar.Snackbar;
import android.view.View;
import com.karumi.dexter.listener.PermissionDeniedResponse;

Expand Down Expand Up @@ -63,7 +63,7 @@ private SnackbarOnDeniedPermissionListener(View view, String text, String button
snackbar.setAction(buttonText, onButtonClickListener);
}
if (snackbarCallback != null) {
snackbar.setCallback(snackbarCallback);
snackbar.addCallback(snackbarCallback);
}
snackbar.show();
}
Expand Down
16 changes: 5 additions & 11 deletions dexter/src/test/java/com/karumi/dexter/DexterInstanceTest.java
Expand Up @@ -33,15 +33,14 @@
import org.junit.runner.RunWith;
import org.mockito.ArgumentMatcher;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.mockito.junit.MockitoJUnitRunner;

import java.util.Collections;

import static org.mockito.Matchers.any;
import static org.mockito.Matchers.argThat;
import static org.mockito.Matchers.eq;
import static org.mockito.Matchers.isA;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
Expand All @@ -63,8 +62,6 @@

@Before public void setUp() {
IntentProvider intentProvider = new IntentMockProvider(intent);
Context mockApplicationContext = mock(Context.class);
when(context.getApplicationContext()).thenReturn(mockApplicationContext);
asyncExecutor = new AsyncExecutor();
dexter = new DexterInstance(context, androidPermissionService, intentProvider);
}
Expand Down Expand Up @@ -152,7 +149,7 @@ private void givenPermissionIsAlreadyGranted(String permission) {

private void givenPermissionIsChecked(String permission, int permissionState) {
when(androidPermissionService.checkSelfPermission(
any(Activity.class),
any(Context.class),
eq(permission))
).thenReturn(permissionState);
}
Expand Down Expand Up @@ -216,8 +213,7 @@ private void thenPermissionRationaleIsShown(int times) {
private static ArgumentMatcher<PermissionGrantedResponse> getPermissionGrantedResponseMatcher(
final String permission) {
return new ArgumentMatcher<PermissionGrantedResponse>() {
@Override public boolean matches(Object argument) {
PermissionGrantedResponse response = (PermissionGrantedResponse) argument;
@Override public boolean matches(PermissionGrantedResponse response) {
return permission.equals(response.getPermissionName());
}
};
Expand All @@ -226,8 +222,7 @@ private static ArgumentMatcher<PermissionGrantedResponse> getPermissionGrantedRe
private static ArgumentMatcher<PermissionDeniedResponse> getPermissionDeniedResponseMatcher(
final String permission, final boolean isPermanentlyDenied) {
return new ArgumentMatcher<PermissionDeniedResponse>() {
@Override public boolean matches(Object argument) {
PermissionDeniedResponse response = (PermissionDeniedResponse) argument;
@Override public boolean matches(PermissionDeniedResponse response) {
return permission.equals(response.getPermissionName())
&& response.isPermanentlyDenied() == isPermanentlyDenied;
}
Expand All @@ -237,8 +232,7 @@ private static ArgumentMatcher<PermissionDeniedResponse> getPermissionDeniedResp
private static ArgumentMatcher<PermissionRequest> getPermissionRequestShouldShowTokenMatcher(
final String permission) {
return new ArgumentMatcher<PermissionRequest>() {
@Override public boolean matches(Object argument) {
PermissionRequest request = (PermissionRequest) argument;
@Override public boolean matches(PermissionRequest request) {
return permission.equals(request.getName());
}
};
Expand Down
Expand Up @@ -23,11 +23,10 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.mockito.junit.MockitoJUnitRunner;

import static java.util.Collections.singletonList;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.verify;

@RunWith(MockitoJUnitRunner.class) public class MultiplePermissionListenerThreadDecoratorTest {
Expand All @@ -49,7 +48,7 @@
@Test public void onPermissionCheckedThenListenerIsDecorated() {
decorator.onPermissionsChecked(null);

verify(listener).onPermissionsChecked(any(MultiplePermissionsReport.class));
verify(listener).onPermissionsChecked(null);
assertTrue(thread.decorated);
}

Expand Down
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Tue Jun 12 13:21:11 AMT 2018
#Mon Aug 19 16:17:44 CEST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6-all.zip
39 changes: 19 additions & 20 deletions sample/build.gradle
@@ -1,23 +1,24 @@
apply plugin: 'com.android.application'

configurations.all {
resolutionStrategy {
force 'com.android.support:support-annotations:25.2.0'
}
}

android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
compileSdkVersion 28

defaultConfig {
applicationId "com.karumi.dexter.sample"
minSdkVersion 18
targetSdkVersion 27
targetSdkVersion 28
versionCode 1
versionName "1.0"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

// Butterknife requires Java 8.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

buildTypes {
debug {
minifyEnabled false
Expand All @@ -31,17 +32,15 @@ android {

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.jakewharton:butterknife:8.6.0',{
exclude group: 'com.android.support'
}
implementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
implementation project(':dexter')
androidTestImplementation 'com.android.support.test:runner:0.5'
androidTestImplementation 'com.android.support.test:rules:0.5'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.jakewharton:butterknife:10.1.0'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-beta-2'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
androidTestImplementation 'org.awaitility:awaitility:3.0.0'
androidTestImplementation 'org.hamcrest:hamcrest-library:1.3'
androidTestImplementation 'com.android.support.test:rules:1.0.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
}
Expand Up @@ -3,10 +3,11 @@
import android.Manifest;
import android.os.Handler;
import android.os.HandlerThread;
import android.support.test.rule.ActivityTestRule;
import android.support.test.rule.GrantPermissionRule;
import android.support.test.runner.AndroidJUnit4;
import android.util.Log;

import androidx.test.rule.ActivityTestRule;
import androidx.test.rule.GrantPermissionRule;

import com.karumi.dexter.Dexter;
import com.karumi.dexter.listener.DexterError;
import com.karumi.dexter.listener.PermissionDeniedResponse;
Expand All @@ -20,13 +21,12 @@
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import static org.awaitility.Awaitility.await;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;

@RunWith(AndroidJUnit4.class) public class DexterTest {
public class DexterTest {

private static final String TAG = "DexterTest";
private final AtomicBoolean unblock = new AtomicBoolean(false);
Expand Down
1 change: 0 additions & 1 deletion sample/src/main/AndroidManifest.xml
Expand Up @@ -23,7 +23,6 @@
<uses-permission android:name="android.permission.RECORD_AUDIO"/>

<application
android:name=".SampleApplication"
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_logo_karumi"
Expand Down
Expand Up @@ -23,8 +23,8 @@
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v4.content.ContextCompat;
import com.google.android.material.snackbar.Snackbar;
import androidx.core.content.ContextCompat;
import android.view.View;
import android.widget.TextView;
import butterknife.BindView;
Expand Down

0 comments on commit bdf3962

Please sign in to comment.