diff --git a/.travis.yml b/.travis.yml index aaa37d12..6b024549 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,11 +4,13 @@ language: android android: components: - - build-tools-27.0.3 - - android-27 + - build-tools-30.0.0 + - android-230 script: - ./gradlew check jacoco assemble - bash <(curl -s https://codecov.io/bash) +before_install: + - yes | sdkmanager "platforms;android-30" before_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ diff --git a/README.md b/README.md index c6e53970..e8d767b2 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,26 @@ either through custom URI scheme redirects, or App Links. AS's that assume all clients are web-based or require clients to maintain confidentiality of the client secrets may not work well. +From Android API 30 (R) and above, set [queries](https://developer.android.com/preview/privacy/package-visibility) in the manifest, +to enable AppAuth searching for usable installed browsers. +```xml + + + + + + + + + + + + + + ... + +``` + ## Demo app A demo app is contained within this repository. For instructions on how to diff --git a/app/AndroidManifest.xml b/app/AndroidManifest.xml index ef6cbb5e..0a180c70 100644 --- a/app/AndroidManifest.xml +++ b/app/AndroidManifest.xml @@ -13,11 +13,23 @@ --> + + + + + + + + + + + + + - - @@ -86,19 +86,19 @@ android:layout_marginTop="16dp" style="@style/Base.TextAppearance.AppCompat.Subhead" /> - - - + - - + + diff --git a/app/res/layout/activity_token.xml b/app/res/layout/activity_token.xml index ceaff2d6..847faa61 100644 --- a/app/res/layout/activity_token.xml +++ b/app/res/layout/activity_token.xml @@ -1,5 +1,5 @@ - - + diff --git a/build.gradle b/build.gradle index a454d9ce..3b825b6c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,5 @@ +import org.ajoberstar.grgit.Grgit + apply from: 'config/keystore.gradle' buildscript { @@ -6,10 +8,11 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.android.tools.build:gradle:4.0.0' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0' + classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.5' classpath 'org.ajoberstar:gradle-git:1.7.2' + classpath "org.jacoco:org.jacoco.core:0.8.5" } } @@ -24,7 +27,7 @@ subprojects { ext.verifyKeystore() try { - def grgit = org.ajoberstar.grgit.Grgit.open(dir: '.') + def grgit = Grgit.open(dir: '.') def lastCommit = grgit.head() project.ext.versionNum = grgit.log(includes:['HEAD']).size() @@ -33,16 +36,31 @@ try { if (project.ext.versionName == null) { project.ext.versionName = 'DEV' } -} catch (Exception ex) { +} catch (Exception ignored) { project.ext.versionNum = 0 project.ext.versionName = 'DEV' project.ext.versionDate = new Date() } -project.ext.minSdkVersion = 16 -project.ext.compileSdkVersion = 27 -project.ext.buildToolsVersion = '27.0.3' -project.ext.supportLibVersion = '27.1.1' +project.ext { + minSdkVersion = 16 + compileSdkVersion = 30 + buildToolsVersion = '30.0.0' + + googleVersions = [ + glide : '4.11.0', + material : '1.1.0', + ] + + androidXVersions = [ + annotation : '1.1.0', + appCompat : '1.1.0', + browser : '1.2.0', + ] + + okioVersion = '1.17.5' + jodaVersion = '2.10.6' +} task showVersion { doLast { diff --git a/config/android-common.gradle b/config/android-common.gradle index 95f96f52..c65539e6 100644 --- a/config/android-common.gradle +++ b/config/android-common.gradle @@ -14,8 +14,8 @@ android { main.res.srcDir 'res' main.assets.srcDir 'assets' main.resources.srcDir 'java' - test.setRoot('javatests'); - test.java.srcDir('javatests'); + test.setRoot('javatests') + test.java.srcDir('javatests') } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/config/coverage.gradle b/config/coverage.gradle index 17334464..fb168273 100644 --- a/config/coverage.gradle +++ b/config/coverage.gradle @@ -1,8 +1,4 @@ apply plugin: 'jacoco' -jacoco { - toolVersion = "0.8.1" -} - android { testOptions { unitTests.all { @@ -21,10 +17,18 @@ task jacocoTestReport(type: JacocoReport, dependsOn: "testDebugUnitTest") { html.enabled = true } // Class R is used, but usage will not be covered, so ignore this class from report - classDirectories = fileTree( - dir: 'build/intermediates/classes/debug', - excludes: ['**/BuildConfig.class'] - ) - sourceDirectories = files('java') - executionData = files('build/jacoco/testDebugUnitTest.exec') + afterEvaluate { + getClassDirectories().setFrom( + fileTree( + dir: 'build/intermediates/classes/debug', + excludes: ['**/BuildConfig.class'] + ) + ) + getSourceDirectories().setFrom( + files('java') + ) + getExecutionData().setFrom( + files('build/jacoco/testDebugUnitTest.exec') + ) + } } diff --git a/config/javadoc.gradle b/config/javadoc.gradle index f55c4ca3..3e55b285 100644 --- a/config/javadoc.gradle +++ b/config/javadoc.gradle @@ -3,21 +3,23 @@ configurations { } dependencies { - mdDoclet 'com.github.mnlipp.jdrupes-mdoclet:doclet:1.0.3' + mdDoclet 'com.github.mnlipp.jdrupes-mdoclet:doclet:1.0.10' } task androidJavadoc(type: Javadoc) { - source = android.sourceSets.main.java.srcDirs - title = "AppAuth for Android" - classpath += files(project.android.getBootClasspath()) - options { - doclet "org.jdrupes.mdoclet.MDoclet" - docletpath(*configurations.mdDoclet.files.asType(List)) - links "http://docs.oracle.com/javase/7/docs/api/" - linksOffline "http://d.android.com/reference","${android.sdkDirectory}/docs/reference" + afterEvaluate { + source = android.sourceSets.main.java.srcDirs + title = "AppAuth for Android" + classpath += files(project.android.getBootClasspath()) + options { + doclet "org.jdrupes.mdoclet.MDoclet" + docletpath(*configurations.mdDoclet.files.asType(List)) + links "http://docs.oracle.com/javase/7/docs/api/" + linksOffline "http://d.android.com/reference", "${android.sdkDirectory}/docs/reference" + } + exclude '**/BuildConfig.java' + exclude '**/R.java' } - exclude '**/BuildConfig.java' - exclude '**/R.java' } task javadocJar(type: Jar, dependsOn:androidJavadoc) { @@ -28,6 +30,6 @@ task javadocJar(type: Jar, dependsOn:androidJavadoc) { afterEvaluate { // fixes issue where javadoc can't find android symbols ref: http://stackoverflow.com/a/34572606 androidJavadoc.classpath += files(android.libraryVariants.collect { variant -> - variant.javaCompile.classpath.files + variant.javaCompileProvider.get().classpath.files }) } diff --git a/config/style.gradle b/config/style.gradle index 7ee3fd6c..c4013ef0 100644 --- a/config/style.gradle +++ b/config/style.gradle @@ -7,9 +7,11 @@ checkstyle { } task checkAllSource(type: Checkstyle) { - source 'java' - include '**/*.java' - classpath = files project.configurations.compile.files + afterEvaluate { + source 'java' + include '**/*.java' + classpath = files project.configurations.compile.files + } } task failOnCheckstyleWarning { diff --git a/gradle.properties b/gradle.properties index 1a644c77..7f4668fd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1,3 @@ +android.enableJetifier=true +android.useAndroidX=true org.gradle.daemon=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b65735cd..484a3543 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Apr 06 13:27:13 PDT 2018 +#Sat Jun 13 20:20:21 CEST 2020 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-6.1.1-all.zip diff --git a/library/build.gradle b/library/build.gradle index 10f965ee..5fcdac48 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -7,7 +7,7 @@ apply from: '../config/android-common.gradle' group = "net.openid" version = rootProject.versionName -android.defaultConfig.project.archivesBaseName = 'appauth' +project.archivesBaseName = 'appauth' // use a separate build type for unit tests, so that we can configure the manifest placeholder // without interfering with other builds. @@ -23,7 +23,8 @@ android.buildTypes { android.testBuildType "forTests" dependencies { - api "com.android.support:customtabs:${rootProject.supportLibVersion}" + api "androidx.browser:browser:${project.androidXVersions.browser}" + implementation "androidx.annotation:annotation:${project.androidXVersions.annotation}" apply from: '../config/testdeps.gradle', to:it } diff --git a/library/java/net/openid/appauth/AdditionalParamsProcessor.java b/library/java/net/openid/appauth/AdditionalParamsProcessor.java index 6b8a631b..566d3fd2 100644 --- a/library/java/net/openid/appauth/AdditionalParamsProcessor.java +++ b/library/java/net/openid/appauth/AdditionalParamsProcessor.java @@ -18,8 +18,8 @@ import static net.openid.appauth.Preconditions.checkNotNull; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import org.json.JSONException; import org.json.JSONObject; diff --git a/library/java/net/openid/appauth/AppAuthConfiguration.java b/library/java/net/openid/appauth/AppAuthConfiguration.java index d86fb0ab..a0255cfc 100644 --- a/library/java/net/openid/appauth/AppAuthConfiguration.java +++ b/library/java/net/openid/appauth/AppAuthConfiguration.java @@ -14,7 +14,7 @@ package net.openid.appauth; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import net.openid.appauth.browser.AnyBrowserMatcher; import net.openid.appauth.browser.BrowserMatcher; diff --git a/library/java/net/openid/appauth/AsciiStringListUtil.java b/library/java/net/openid/appauth/AsciiStringListUtil.java index 9631f6be..967c28c5 100644 --- a/library/java/net/openid/appauth/AsciiStringListUtil.java +++ b/library/java/net/openid/appauth/AsciiStringListUtil.java @@ -16,9 +16,10 @@ import static net.openid.appauth.Preconditions.checkArgument; -import android.support.annotation.Nullable; import android.text.TextUtils; +import androidx.annotation.Nullable; + import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; diff --git a/library/java/net/openid/appauth/AuthState.java b/library/java/net/openid/appauth/AuthState.java index 1de1be52..ae08e3d3 100644 --- a/library/java/net/openid/appauth/AuthState.java +++ b/library/java/net/openid/appauth/AuthState.java @@ -19,9 +19,9 @@ import static net.openid.appauth.Preconditions.checkNotEmpty; import static net.openid.appauth.Preconditions.checkNotNull; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import net.openid.appauth.internal.Logger; diff --git a/library/java/net/openid/appauth/AuthorizationException.java b/library/java/net/openid/appauth/AuthorizationException.java index 77738e33..e2057ce7 100644 --- a/library/java/net/openid/appauth/AuthorizationException.java +++ b/library/java/net/openid/appauth/AuthorizationException.java @@ -19,10 +19,10 @@ import android.content.Intent; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; -import android.support.v4.util.ArrayMap; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; +import androidx.collection.ArrayMap; import org.json.JSONException; import org.json.JSONObject; diff --git a/library/java/net/openid/appauth/AuthorizationManagementActivity.java b/library/java/net/openid/appauth/AuthorizationManagementActivity.java index 3eddac43..a1bcd1c9 100644 --- a/library/java/net/openid/appauth/AuthorizationManagementActivity.java +++ b/library/java/net/openid/appauth/AuthorizationManagementActivity.java @@ -21,7 +21,7 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.VisibleForTesting; import net.openid.appauth.AuthorizationException.AuthorizationRequestErrors; import net.openid.appauth.internal.Logger; diff --git a/library/java/net/openid/appauth/AuthorizationRequest.java b/library/java/net/openid/appauth/AuthorizationRequest.java index 0f133eb8..3ed5f315 100644 --- a/library/java/net/openid/appauth/AuthorizationRequest.java +++ b/library/java/net/openid/appauth/AuthorizationRequest.java @@ -22,12 +22,13 @@ import static net.openid.appauth.Preconditions.checkNullOrNotEmpty; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Base64; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; + import net.openid.appauth.internal.UriUtil; import org.json.JSONException; diff --git a/library/java/net/openid/appauth/AuthorizationResponse.java b/library/java/net/openid/appauth/AuthorizationResponse.java index 84aa6bd0..cae009cd 100644 --- a/library/java/net/openid/appauth/AuthorizationResponse.java +++ b/library/java/net/openid/appauth/AuthorizationResponse.java @@ -21,11 +21,12 @@ import android.content.Intent; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; import android.text.TextUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; + import net.openid.appauth.internal.UriUtil; import org.json.JSONException; diff --git a/library/java/net/openid/appauth/AuthorizationService.java b/library/java/net/openid/appauth/AuthorizationService.java index 3fd5c054..5f380631 100644 --- a/library/java/net/openid/appauth/AuthorizationService.java +++ b/library/java/net/openid/appauth/AuthorizationService.java @@ -17,6 +17,7 @@ import static net.openid.appauth.Preconditions.checkNotNull; import android.annotation.TargetApi; +import android.app.Activity; import android.app.PendingIntent; import android.content.ActivityNotFoundException; import android.content.Context; @@ -24,12 +25,13 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Build; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; -import android.support.customtabs.CustomTabsIntent; import android.text.TextUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; +import androidx.browser.customtabs.CustomTabsIntent; + import net.openid.appauth.AuthorizationException.GeneralErrors; import net.openid.appauth.AuthorizationException.RegistrationRequestErrors; import net.openid.appauth.AuthorizationException.TokenRequestErrors; diff --git a/library/java/net/openid/appauth/AuthorizationServiceConfiguration.java b/library/java/net/openid/appauth/AuthorizationServiceConfiguration.java index 5d2b0e9a..6ad8fccb 100644 --- a/library/java/net/openid/appauth/AuthorizationServiceConfiguration.java +++ b/library/java/net/openid/appauth/AuthorizationServiceConfiguration.java @@ -19,8 +19,8 @@ import android.net.Uri; import android.os.AsyncTask; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import net.openid.appauth.AuthorizationException.GeneralErrors; diff --git a/library/java/net/openid/appauth/AuthorizationServiceDiscovery.java b/library/java/net/openid/appauth/AuthorizationServiceDiscovery.java index f74e0927..8a56ff6c 100644 --- a/library/java/net/openid/appauth/AuthorizationServiceDiscovery.java +++ b/library/java/net/openid/appauth/AuthorizationServiceDiscovery.java @@ -17,9 +17,9 @@ import static net.openid.appauth.Preconditions.checkNotNull; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import net.openid.appauth.JsonUtil.BooleanField; import net.openid.appauth.JsonUtil.Field; diff --git a/library/java/net/openid/appauth/ClientAuthentication.java b/library/java/net/openid/appauth/ClientAuthentication.java index 0928a713..c52d1607 100644 --- a/library/java/net/openid/appauth/ClientAuthentication.java +++ b/library/java/net/openid/appauth/ClientAuthentication.java @@ -14,7 +14,7 @@ package net.openid.appauth; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import java.util.Map; diff --git a/library/java/net/openid/appauth/ClientSecretBasic.java b/library/java/net/openid/appauth/ClientSecretBasic.java index 62ef0be9..debc0320 100644 --- a/library/java/net/openid/appauth/ClientSecretBasic.java +++ b/library/java/net/openid/appauth/ClientSecretBasic.java @@ -16,9 +16,10 @@ import static net.openid.appauth.Preconditions.checkNotNull; -import android.support.annotation.NonNull; import android.util.Base64; +import androidx.annotation.NonNull; + import net.openid.appauth.internal.UriUtil; import java.util.Collections; diff --git a/library/java/net/openid/appauth/ClientSecretPost.java b/library/java/net/openid/appauth/ClientSecretPost.java index be93a233..1a9eca7d 100644 --- a/library/java/net/openid/appauth/ClientSecretPost.java +++ b/library/java/net/openid/appauth/ClientSecretPost.java @@ -16,7 +16,7 @@ import static net.openid.appauth.Preconditions.checkNotNull; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import java.util.HashMap; import java.util.Map; diff --git a/library/java/net/openid/appauth/IdToken.java b/library/java/net/openid/appauth/IdToken.java index ef9740b3..216f94fa 100644 --- a/library/java/net/openid/appauth/IdToken.java +++ b/library/java/net/openid/appauth/IdToken.java @@ -15,11 +15,12 @@ package net.openid.appauth; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.text.TextUtils; import android.util.Base64; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + import net.openid.appauth.AuthorizationException.GeneralErrors; import org.json.JSONException; import org.json.JSONObject; diff --git a/library/java/net/openid/appauth/JsonUtil.java b/library/java/net/openid/appauth/JsonUtil.java index d167dcd3..dac69204 100644 --- a/library/java/net/openid/appauth/JsonUtil.java +++ b/library/java/net/openid/appauth/JsonUtil.java @@ -17,8 +17,8 @@ import static net.openid.appauth.Preconditions.checkNotNull; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import org.json.JSONArray; import org.json.JSONException; diff --git a/library/java/net/openid/appauth/NoClientAuthentication.java b/library/java/net/openid/appauth/NoClientAuthentication.java index c5222b7d..97cb8a14 100644 --- a/library/java/net/openid/appauth/NoClientAuthentication.java +++ b/library/java/net/openid/appauth/NoClientAuthentication.java @@ -14,7 +14,7 @@ package net.openid.appauth; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import java.util.Collections; import java.util.Map; diff --git a/library/java/net/openid/appauth/Preconditions.java b/library/java/net/openid/appauth/Preconditions.java index 1a8a5e71..faa916f4 100644 --- a/library/java/net/openid/appauth/Preconditions.java +++ b/library/java/net/openid/appauth/Preconditions.java @@ -14,10 +14,11 @@ package net.openid.appauth; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.text.TextUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + import java.util.Collection; /** diff --git a/library/java/net/openid/appauth/RegistrationRequest.java b/library/java/net/openid/appauth/RegistrationRequest.java index d2c577fc..b37eff0e 100644 --- a/library/java/net/openid/appauth/RegistrationRequest.java +++ b/library/java/net/openid/appauth/RegistrationRequest.java @@ -21,8 +21,8 @@ import static net.openid.appauth.Preconditions.checkNotNull; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import org.json.JSONException; import org.json.JSONObject; diff --git a/library/java/net/openid/appauth/RegistrationResponse.java b/library/java/net/openid/appauth/RegistrationResponse.java index 475d7c09..e7eb04fb 100644 --- a/library/java/net/openid/appauth/RegistrationResponse.java +++ b/library/java/net/openid/appauth/RegistrationResponse.java @@ -20,9 +20,9 @@ import static net.openid.appauth.Preconditions.checkNotNull; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import org.json.JSONException; import org.json.JSONObject; diff --git a/library/java/net/openid/appauth/TokenRequest.java b/library/java/net/openid/appauth/TokenRequest.java index e86fcb0b..18e62e2c 100644 --- a/library/java/net/openid/appauth/TokenRequest.java +++ b/library/java/net/openid/appauth/TokenRequest.java @@ -20,11 +20,12 @@ import static net.openid.appauth.Preconditions.checkNullOrNotEmpty; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; import android.text.TextUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; + import org.json.JSONException; import org.json.JSONObject; diff --git a/library/java/net/openid/appauth/TokenResponse.java b/library/java/net/openid/appauth/TokenResponse.java index 72a431c0..c00ba97d 100644 --- a/library/java/net/openid/appauth/TokenResponse.java +++ b/library/java/net/openid/appauth/TokenResponse.java @@ -20,11 +20,12 @@ import static net.openid.appauth.Preconditions.checkNotNull; import static net.openid.appauth.Preconditions.checkNullOrNotEmpty; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; import android.text.TextUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; + import org.json.JSONException; import org.json.JSONObject; diff --git a/library/java/net/openid/appauth/browser/AnyBrowserMatcher.java b/library/java/net/openid/appauth/browser/AnyBrowserMatcher.java index 67177767..d3d96265 100644 --- a/library/java/net/openid/appauth/browser/AnyBrowserMatcher.java +++ b/library/java/net/openid/appauth/browser/AnyBrowserMatcher.java @@ -14,7 +14,7 @@ package net.openid.appauth.browser; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; /** * Matches any browser. diff --git a/library/java/net/openid/appauth/browser/BrowserBlacklist.java b/library/java/net/openid/appauth/browser/BrowserBlacklist.java index ad2ce094..ff71ea56 100644 --- a/library/java/net/openid/appauth/browser/BrowserBlacklist.java +++ b/library/java/net/openid/appauth/browser/BrowserBlacklist.java @@ -14,7 +14,7 @@ package net.openid.appauth.browser; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import java.util.Arrays; import java.util.List; diff --git a/library/java/net/openid/appauth/browser/BrowserDescriptor.java b/library/java/net/openid/appauth/browser/BrowserDescriptor.java index c280c308..6ca76697 100644 --- a/library/java/net/openid/appauth/browser/BrowserDescriptor.java +++ b/library/java/net/openid/appauth/browser/BrowserDescriptor.java @@ -16,9 +16,10 @@ import android.content.pm.PackageInfo; import android.content.pm.Signature; -import android.support.annotation.NonNull; import android.util.Base64; +import androidx.annotation.NonNull; + import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.HashSet; diff --git a/library/java/net/openid/appauth/browser/BrowserMatcher.java b/library/java/net/openid/appauth/browser/BrowserMatcher.java index eb5acd20..d4a6d113 100644 --- a/library/java/net/openid/appauth/browser/BrowserMatcher.java +++ b/library/java/net/openid/appauth/browser/BrowserMatcher.java @@ -14,7 +14,7 @@ package net.openid.appauth.browser; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; /** * Determines whether a {@link BrowserDescriptor} matches some set of criteria. diff --git a/library/java/net/openid/appauth/browser/BrowserSelector.java b/library/java/net/openid/appauth/browser/BrowserSelector.java index 5f2862fb..75da1ca5 100644 --- a/library/java/net/openid/appauth/browser/BrowserSelector.java +++ b/library/java/net/openid/appauth/browser/BrowserSelector.java @@ -24,10 +24,10 @@ import android.net.Uri; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; -import android.support.customtabs.CustomTabsService; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; +import androidx.browser.customtabs.CustomTabsService; import java.util.ArrayList; import java.util.Iterator; @@ -182,7 +182,8 @@ private static boolean hasWarmupService(PackageManager pm, String packageName) { private static boolean isFullBrowser(ResolveInfo resolveInfo) { // The filter must match ACTION_VIEW, CATEGORY_BROWSEABLE, and at least one scheme, if (!resolveInfo.filter.hasAction(Intent.ACTION_VIEW) - || !resolveInfo.filter.hasCategory(Intent.CATEGORY_BROWSABLE) + || !(resolveInfo.filter.hasCategory(Intent.CATEGORY_BROWSABLE) + || (resolveInfo.filter.hasCategory(Intent.CATEGORY_APP_BROWSER))) || resolveInfo.filter.schemesIterator() == null) { return false; } diff --git a/library/java/net/openid/appauth/browser/BrowserWhitelist.java b/library/java/net/openid/appauth/browser/BrowserWhitelist.java index 69d41d01..e11cff0f 100644 --- a/library/java/net/openid/appauth/browser/BrowserWhitelist.java +++ b/library/java/net/openid/appauth/browser/BrowserWhitelist.java @@ -14,7 +14,7 @@ package net.openid.appauth.browser; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import java.util.Arrays; import java.util.List; diff --git a/library/java/net/openid/appauth/browser/Browsers.java b/library/java/net/openid/appauth/browser/Browsers.java index 4e0e8953..3f70101e 100644 --- a/library/java/net/openid/appauth/browser/Browsers.java +++ b/library/java/net/openid/appauth/browser/Browsers.java @@ -14,7 +14,7 @@ package net.openid.appauth.browser; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import java.util.Collections; import java.util.Set; diff --git a/library/java/net/openid/appauth/browser/CustomTabManager.java b/library/java/net/openid/appauth/browser/CustomTabManager.java index c0074f1d..28573c54 100644 --- a/library/java/net/openid/appauth/browser/CustomTabManager.java +++ b/library/java/net/openid/appauth/browser/CustomTabManager.java @@ -18,14 +18,14 @@ import android.content.Context; import android.net.Uri; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.WorkerThread; -import android.support.customtabs.CustomTabsCallback; -import android.support.customtabs.CustomTabsClient; -import android.support.customtabs.CustomTabsIntent; -import android.support.customtabs.CustomTabsServiceConnection; -import android.support.customtabs.CustomTabsSession; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.WorkerThread; +import androidx.browser.customtabs.CustomTabsCallback; +import androidx.browser.customtabs.CustomTabsClient; +import androidx.browser.customtabs.CustomTabsIntent; +import androidx.browser.customtabs.CustomTabsServiceConnection; +import androidx.browser.customtabs.CustomTabsSession; import net.openid.appauth.internal.Logger; import net.openid.appauth.internal.UriUtil; @@ -103,7 +103,7 @@ private void setClient(@Nullable CustomTabsClient client) { } /** - * Creates a {@link android.support.customtabs.CustomTabsIntent.Builder custom tab builder}, + * Creates a {@link androidx.browser.customtabs.CustomTabsIntent.Builder custom tab builder}, * with an optional list of optional URIs that may be requested. The URI list * should be ordered such that the most likely URI to be requested is first. If the selected * browser does not support custom tabs, then the URI list has no effect. @@ -129,7 +129,7 @@ public synchronized void dispose() { } /** - * Creates a {@link android.support.customtabs.CustomTabsSession custom tab session} for + * Creates a {@link androidx.browser.customtabs.CustomTabsSession custom tab session} for * use with a custom tab intent, with optional callbacks and optional list of URIs that may * be requested. The URI list should be ordered such that the most likely URI to be requested * is first. If no custom tab supporting browser is available, this will return {@code null}. diff --git a/library/java/net/openid/appauth/browser/DelimitedVersion.java b/library/java/net/openid/appauth/browser/DelimitedVersion.java index dbec5d66..3bf9ace1 100644 --- a/library/java/net/openid/appauth/browser/DelimitedVersion.java +++ b/library/java/net/openid/appauth/browser/DelimitedVersion.java @@ -14,7 +14,7 @@ package net.openid.appauth.browser; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; /** * Represents a delimited version number for an application. This can parse common version number diff --git a/library/java/net/openid/appauth/browser/ExactBrowserMatcher.java b/library/java/net/openid/appauth/browser/ExactBrowserMatcher.java index c3ca2605..c4c1a4e3 100644 --- a/library/java/net/openid/appauth/browser/ExactBrowserMatcher.java +++ b/library/java/net/openid/appauth/browser/ExactBrowserMatcher.java @@ -14,7 +14,7 @@ package net.openid.appauth.browser; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; /** * Matches only the specified browser. diff --git a/library/java/net/openid/appauth/browser/VersionRange.java b/library/java/net/openid/appauth/browser/VersionRange.java index 09546433..b95015c3 100644 --- a/library/java/net/openid/appauth/browser/VersionRange.java +++ b/library/java/net/openid/appauth/browser/VersionRange.java @@ -14,8 +14,8 @@ package net.openid.appauth.browser; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; /** * A browser filter which matches when a browser falls into a version range. Versions are diff --git a/library/java/net/openid/appauth/browser/VersionedBrowserMatcher.java b/library/java/net/openid/appauth/browser/VersionedBrowserMatcher.java index 8c8c0628..3daa7dd2 100644 --- a/library/java/net/openid/appauth/browser/VersionedBrowserMatcher.java +++ b/library/java/net/openid/appauth/browser/VersionedBrowserMatcher.java @@ -14,7 +14,7 @@ package net.openid.appauth.browser; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import java.util.Collections; import java.util.Set; diff --git a/library/java/net/openid/appauth/connectivity/ConnectionBuilder.java b/library/java/net/openid/appauth/connectivity/ConnectionBuilder.java index 28125ca3..33ac8985 100644 --- a/library/java/net/openid/appauth/connectivity/ConnectionBuilder.java +++ b/library/java/net/openid/appauth/connectivity/ConnectionBuilder.java @@ -15,7 +15,7 @@ package net.openid.appauth.connectivity; import android.net.Uri; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import java.io.IOException; import java.net.HttpURLConnection; diff --git a/library/java/net/openid/appauth/connectivity/DefaultConnectionBuilder.java b/library/java/net/openid/appauth/connectivity/DefaultConnectionBuilder.java index 9dba97f9..6f8324a1 100644 --- a/library/java/net/openid/appauth/connectivity/DefaultConnectionBuilder.java +++ b/library/java/net/openid/appauth/connectivity/DefaultConnectionBuilder.java @@ -15,7 +15,7 @@ package net.openid.appauth.connectivity; import android.net.Uri; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import net.openid.appauth.Preconditions; diff --git a/library/java/net/openid/appauth/internal/Logger.java b/library/java/net/openid/appauth/internal/Logger.java index fc879edb..99068878 100644 --- a/library/java/net/openid/appauth/internal/Logger.java +++ b/library/java/net/openid/appauth/internal/Logger.java @@ -16,11 +16,12 @@ import static net.openid.appauth.Preconditions.checkNotNull; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; import android.util.Log; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; + /** * Convenience wrapper around {@link android.util.Log}, which evaluates the current log level of * the logging tag once and uses this to determine whether logging should proceed. This minimizes diff --git a/library/java/net/openid/appauth/internal/UriUtil.java b/library/java/net/openid/appauth/internal/UriUtil.java index 84b9be65..fb7bf78d 100644 --- a/library/java/net/openid/appauth/internal/UriUtil.java +++ b/library/java/net/openid/appauth/internal/UriUtil.java @@ -16,12 +16,13 @@ import android.net.Uri; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.customtabs.CustomTabsService; -import android.support.v4.util.Pair; import android.text.TextUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.browser.customtabs.CustomTabsService; +import androidx.core.util.Pair; + import net.openid.appauth.Preconditions; import java.io.UnsupportedEncodingException; diff --git a/library/javatests/net/openid/appauth/AuthorizationServiceConfigurationTest.java b/library/javatests/net/openid/appauth/AuthorizationServiceConfigurationTest.java index e3eb10de..e4e91eb2 100644 --- a/library/javatests/net/openid/appauth/AuthorizationServiceConfigurationTest.java +++ b/library/javatests/net/openid/appauth/AuthorizationServiceConfigurationTest.java @@ -23,7 +23,7 @@ import static org.mockito.Mockito.when; import android.net.Uri; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; diff --git a/library/javatests/net/openid/appauth/AuthorizationServiceTest.java b/library/javatests/net/openid/appauth/AuthorizationServiceTest.java index 078c5046..779ad541 100644 --- a/library/javatests/net/openid/appauth/AuthorizationServiceTest.java +++ b/library/javatests/net/openid/appauth/AuthorizationServiceTest.java @@ -19,11 +19,11 @@ import android.content.Intent; import android.graphics.Color; import android.net.Uri; -import android.support.annotation.ColorInt; -import android.support.annotation.Nullable; -import android.support.customtabs.CustomTabsClient; -import android.support.customtabs.CustomTabsIntent; -import android.support.customtabs.CustomTabsServiceConnection; +import androidx.annotation.ColorInt; +import androidx.annotation.Nullable; +import androidx.browser.customtabs.CustomTabsClient; +import androidx.browser.customtabs.CustomTabsIntent; +import androidx.browser.customtabs.CustomTabsServiceConnection; import net.openid.appauth.AppAuthConfiguration.Builder; import net.openid.appauth.AuthorizationException.GeneralErrors; @@ -53,8 +53,8 @@ import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; -import static android.support.customtabs.CustomTabsIntent.EXTRA_TITLE_VISIBILITY_STATE; -import static android.support.customtabs.CustomTabsIntent.EXTRA_TOOLBAR_COLOR; +import static androidx.browser.customtabs.CustomTabsIntent.EXTRA_TITLE_VISIBILITY_STATE; +import static androidx.browser.customtabs.CustomTabsIntent.EXTRA_TOOLBAR_COLOR; import static net.openid.appauth.AuthorizationManagementActivity.KEY_AUTH_INTENT; import static net.openid.appauth.AuthorizationManagementActivity.KEY_AUTH_REQUEST; import static net.openid.appauth.AuthorizationManagementActivity.KEY_CANCEL_INTENT; diff --git a/library/javatests/net/openid/appauth/IdTokenTest.java b/library/javatests/net/openid/appauth/IdTokenTest.java index 3579bbb7..f19bcae6 100644 --- a/library/javatests/net/openid/appauth/IdTokenTest.java +++ b/library/javatests/net/openid/appauth/IdTokenTest.java @@ -1,6 +1,6 @@ package net.openid.appauth; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.util.Base64; import java.util.Arrays; diff --git a/library/javatests/net/openid/appauth/TokenResponseTest.java b/library/javatests/net/openid/appauth/TokenResponseTest.java index fa6b7637..ec18c9d1 100644 --- a/library/javatests/net/openid/appauth/TokenResponseTest.java +++ b/library/javatests/net/openid/appauth/TokenResponseTest.java @@ -24,7 +24,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; -import java.util.Set; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; @@ -43,9 +42,6 @@ import static net.openid.appauth.TokenResponse.KEY_SCOPE; import static net.openid.appauth.TokenResponse.KEY_TOKEN_TYPE; import static org.assertj.core.api.Assertions.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.isEmptyOrNullString; @RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, sdk=16) diff --git a/library/javatests/net/openid/appauth/browser/BrowserSelectorTest.java b/library/javatests/net/openid/appauth/browser/BrowserSelectorTest.java index 54fc9bb9..d89a5b6d 100644 --- a/library/javatests/net/openid/appauth/browser/BrowserSelectorTest.java +++ b/library/javatests/net/openid/appauth/browser/BrowserSelectorTest.java @@ -33,6 +33,7 @@ import android.content.pm.Signature; import android.text.TextUtils; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -408,7 +409,7 @@ public TestBrowserBuilder addAuthority(String authority) { } public TestBrowserBuilder addSignature(String signature) { - mSignatures.add(signature.getBytes(Charset.forName("UTF-8"))); + mSignatures.add(signature.getBytes(StandardCharsets.UTF_8)); return this; } diff --git a/library/javatests/net/openid/appauth/browser/CustomTabManagerTest.java b/library/javatests/net/openid/appauth/browser/CustomTabManagerTest.java index fbad9000..02b3ce62 100644 --- a/library/javatests/net/openid/appauth/browser/CustomTabManagerTest.java +++ b/library/javatests/net/openid/appauth/browser/CustomTabManagerTest.java @@ -8,11 +8,11 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.support.customtabs.CustomTabsCallback; -import android.support.customtabs.CustomTabsClient; -import android.support.customtabs.CustomTabsService; -import android.support.customtabs.CustomTabsServiceConnection; -import android.support.customtabs.CustomTabsSession; +import androidx.browser.customtabs.CustomTabsCallback; +import androidx.browser.customtabs.CustomTabsClient; +import androidx.browser.customtabs.CustomTabsService; +import androidx.browser.customtabs.CustomTabsServiceConnection; +import androidx.browser.customtabs.CustomTabsSession; import java.util.List; import net.openid.appauth.BuildConfig; import org.junit.Before; diff --git a/library/javatests/net/openid/appauth/browser/VersionedBrowserMatcherTest.java b/library/javatests/net/openid/appauth/browser/VersionedBrowserMatcherTest.java index de14d195..29d7441f 100644 --- a/library/javatests/net/openid/appauth/browser/VersionedBrowserMatcherTest.java +++ b/library/javatests/net/openid/appauth/browser/VersionedBrowserMatcherTest.java @@ -18,7 +18,7 @@ import java.util.Collections; import java.util.HashSet; -import junit.runner.Version; + import net.openid.appauth.BuildConfig; import org.junit.Before; import org.junit.Test; diff --git a/library/javatests/net/openid/appauth/internal/UriUtilTest.java b/library/javatests/net/openid/appauth/internal/UriUtilTest.java index 0dfe2300..61861aeb 100644 --- a/library/javatests/net/openid/appauth/internal/UriUtilTest.java +++ b/library/javatests/net/openid/appauth/internal/UriUtilTest.java @@ -17,7 +17,7 @@ import android.net.Uri; import android.net.UrlQuerySanitizer; import android.os.Bundle; -import android.support.customtabs.CustomTabsService; +import androidx.browser.customtabs.CustomTabsService; import net.openid.appauth.BuildConfig; import net.openid.appauth.internal.UriUtil; diff --git a/library/javatests/resources/mockito-extensions/org.mockito.plugins.MockMaker b/library/javatests/resources/mockito-extensions/org.mockito.plugins.MockMaker new file mode 100644 index 00000000..1f0955d4 --- /dev/null +++ b/library/javatests/resources/mockito-extensions/org.mockito.plugins.MockMaker @@ -0,0 +1 @@ +mock-maker-inline