// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

apply plugin: ChromiumPlugin

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

dependencies {
    // Note about the configuration names: they are defined in buildSrc/ChromiumPlugin

    def androidXArchComponentsVersion = '2.0.0'
    compile "androidx.lifecycle:lifecycle-runtime:${androidXArchComponentsVersion}"
    compile "androidx.lifecycle:lifecycle-common:${androidXArchComponentsVersion}"
    compile "androidx.lifecycle:lifecycle-common-java8:${androidXArchComponentsVersion}"
    compile "androidx.lifecycle:lifecycle-viewmodel:${androidXArchComponentsVersion}"

    // Support v4 libraries
    def androidXSupportLibVersion = '1.0.0'
    compile "androidx.core:core:${androidXSupportLibVersion}"
    compile "androidx.legacy:legacy-support-core-ui:${androidXSupportLibVersion}"
    compile "androidx.legacy:legacy-support-core-utils:${androidXSupportLibVersion}"
    compile "androidx.legacy:legacy-support-v4:${androidXSupportLibVersion}"
    compile "androidx.legacy:legacy-support-v13:${androidXSupportLibVersion}"

    compile "androidx.annotation:annotation:${androidXSupportLibVersion}"
    compile "androidx.appcompat:appcompat:${androidXSupportLibVersion}"
    compile "androidx.asynclayoutinflater:asynclayoutinflater:${androidXSupportLibVersion}"
    compile "androidx.cardview:cardview:${androidXSupportLibVersion}"
    compile "androidx.concurrent:concurrent-futures:${androidXSupportLibVersion}"
    compile "androidx.collection:collection:${androidXSupportLibVersion}"
    compile "androidx.coordinatorlayout:coordinatorlayout:${androidXSupportLibVersion}"
    compile "androidx.customview:customview:${androidXSupportLibVersion}"
    compile "androidx.drawerlayout:drawerlayout:${androidXSupportLibVersion}"
    compile "androidx.gridlayout:gridlayout:${androidXSupportLibVersion}"
    compile "androidx.interpolator:interpolator:${androidXSupportLibVersion}"
    compile "androidx.leanback:leanback-preference:${androidXSupportLibVersion}"
    compile "androidx.localbroadcastmanager:localbroadcastmanager:${androidXSupportLibVersion}"
    compile "androidx.mediarouter:mediarouter:${androidXSupportLibVersion}"
    compile "androidx.preference:preference:${androidXSupportLibVersion}"
    compile "androidx.recyclerview:recyclerview:${androidXSupportLibVersion}"
    compile "androidx.swiperefreshlayout:swiperefreshlayout:${androidXSupportLibVersion}"
    compile "androidx.viewpager:viewpager:${androidXSupportLibVersion}"

    compile "androidx.multidex:multidex:2.0.0"

    // Replacement for com.android.support:design
    compile "com.google.android.material:material:1.0.0-rc02"

    // Architecture components
    def archComponentsVersion = '1.1.1'
    compile "android.arch.lifecycle:runtime:${archComponentsVersion}"
    compile "android.arch.lifecycle:common:${archComponentsVersion}"
    compile "android.arch.lifecycle:common-java8:${archComponentsVersion}"
    compile "android.arch.lifecycle:viewmodel:${archComponentsVersion}"

    // Play services libraries
    // See https://developers.google.com/android/guides/releases for updates
    // Starting from 15.0.0 these libraries are allowed to update independently
    def gmsVersion = '15.0.1'
    compile "com.google.android.gms:play-services-basement:${gmsVersion}"
    compile "com.google.android.gms:play-services-tasks:${gmsVersion}"
    compile "com.google.android.gms:play-services-base:${gmsVersion}"
    compile "com.google.android.gms:play-services-auth-base:${gmsVersion}"
    compile "com.google.android.gms:play-services-auth-api-phone:${gmsVersion}"
    compile "com.google.android.gms:play-services-auth:${gmsVersion}"
    compile "com.google.android.gms:play-services-cast:16.0.1"
    compile "com.google.android.gms:play-services-cast-framework:16.0.1"
    compile "com.google.android.gms:play-services-iid:${gmsVersion}"
    compile "com.google.android.gms:play-services-instantapps:16.0.0"
    compile "com.google.android.gms:play-services-gcm:${gmsVersion}"
    compile "com.google.android.gms:play-services-location:${gmsVersion}"
    compile "com.google.android.gms:play-services-vision-common:${gmsVersion}"
    compile "com.google.android.gms:play-services-vision:${gmsVersion}"
    compile "com.google.android.gms:play-services-fido:${gmsVersion}"

    // TODO (bjoyce): Remove after androidx migration crbug.com/896775
    // Support v4 libraries
    def supportLibVersion = '28.0.0'
    compile "com.android.support:support-v4:${supportLibVersion}"
    compile "com.android.support:support-compat:${supportLibVersion}"
    compile "com.android.support:support-core-ui:${supportLibVersion}"
    compile "com.android.support:support-core-utils:${supportLibVersion}"
    compile "com.android.support:support-fragment:${supportLibVersion}"

    // Support v7 libraries
    compile "com.android.support:appcompat-v7:${supportLibVersion}"
    compile "com.android.support:gridlayout-v7:${supportLibVersion}"
    compile "com.android.support:mediarouter-v7:${supportLibVersion}"
    compile "com.android.support:recyclerview-v7:${supportLibVersion}"
    compile "com.android.support:cardview-v7:${supportLibVersion}"
    compile "com.android.support:preference-v7:${supportLibVersion}"

    compile "com.android.support:support-v13:${supportLibVersion}"

    compile "com.android.support:preference-leanback-v17:${supportLibVersion}"

    compile "com.android.support:support-annotations:${supportLibVersion}"
    compile "com.android.support:design:${supportLibVersion}"

    compile "com.android.support:asynclayoutinflater:${supportLibVersion}"
    compile "com.android.support:collections:${supportLibVersion}"
    compile "com.android.support:coordinatorlayout:${supportLibVersion}"
    compile "com.android.support:customview:${supportLibVersion}"
    compile "com.android.support:drawerlayout:${supportLibVersion}"
    compile "com.android.support:interpolator:${supportLibVersion}"
    compile "com.android.support:localbroadcastmanager:${supportLibVersion}"
    compile "com.android.support:swiperefreshlayout:${supportLibVersion}"
    compile "com.android.support:viewpager:${supportLibVersion}"

    compile "com.android.support:multidex:1.0.0"

    compile "com.google.guava:listenablefuture:1.0"
    compile "com.google.protobuf:protobuf-lite:3.0.1"
    compile "javax.annotation:jsr250-api:1.0"
    compile "javax.inject:javax.inject:1"


    // buildCompile targets have supports_android = false.
    buildCompile "com.google.guava:guava:27.0.1-jre"

    def daggerVersion = '2.17'
    compile "com.google.dagger:dagger:${daggerVersion}"
    buildCompile "com.google.dagger:dagger-compiler:${daggerVersion}"

    // Matches version depended on by Dagger.
    buildCompile "com.squareup:javapoet:1.11.0"

    buildCompile "com.google.auto.service:auto-service-annotations:1.0-rc6"
    buildCompile "com.google.auto.service:auto-service:1.0-rc6"

    buildCompile "com.google.errorprone:error_prone_core:2.3.3"

    // testCompile targets have test_only = true.
    testCompile "androidx.test:core:1.0.0"
    testCompile "androidx.test:monitor:1.1.0"
    testCompile "androidx.test:rules:1.1.0"
    testCompile "androidx.test:runner:1.1.0"
    testCompile "androidx.test.ext:junit:1.0.0"
    testCompile "androidx.test.uiautomator:uiautomator:2.2.0"
    testCompile "com.googlecode.java-diff-utils:diffutils:1.3.0"
}

task setUpRepository(type: BuildConfigGenerator) {
    // Paths are relative to the chromium source root.
    repositoryPath 'third_party/android_deps'
    depsPath 'DEPS'
    chromiumSourceRoot '../../../..'
    cipdBucket 'chromium'
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.3.1'
}
