import static androidx.build.dependencies.DependenciesKt.*
import androidx.build.LibraryGroups
import androidx.build.LibraryVersions
import androidx.build.Publish

plugins {
    id("AndroidXPlugin")
    id("com.android.library")
}

android {
    defaultConfig {
        minSdkVersion 16
    }
    buildFeatures {
        aidl = true
    }
    testOptions.unitTests.includeAndroidResources = true
}

dependencies {
    api("androidx.core:core:1.1.0")
    api("androidx.annotation:annotation:1.1.0")
    api(GUAVA_LISTENABLE_FUTURE)

    implementation("androidx.collection:collection:1.1.0")
    implementation("androidx.concurrent:concurrent-futures:1.0.0")
    implementation("androidx.interpolator:interpolator:1.0.0")

    annotationProcessor(NULLAWAY)

    testImplementation(ANDROIDX_TEST_CORE)
    testImplementation(ANDROIDX_TEST_RUNNER)
    testImplementation(JUNIT)
    testImplementation(ROBOLECTRIC)
    testImplementation(MOCKITO_CORE)

    androidTestImplementation("androidx.appcompat:appcompat:1.0.0")
    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
    androidTestImplementation(ANDROIDX_TEST_CORE)
    androidTestImplementation(ANDROIDX_TEST_RUNNER)
    androidTestImplementation(ANDROIDX_TEST_RULES)
    androidTestImplementation(ESPRESSO_CORE, libs.exclude_for_espresso)
    androidTestImplementation(MOCKITO_CORE, libs.exclude_bytebuddy) // DexMaker has it"s own MockMaker
    androidTestImplementation(DEXMAKER_MOCKITO, libs.exclude_bytebuddy) // DexMaker has it"s own MockMaker
    androidTestImplementation(project(":internal-testutils-runtime"))
}

androidx {
    name = "Android Support Custom Tabs"
    publish = Publish.SNAPSHOT_AND_RELEASE
    mavenGroup = LibraryGroups.BROWSER
    inceptionYear = "2015"
    description = "Android Support Custom Tabs"
}
