package com.android.build.gradle; import com.android.annotations.NonNull; import com.android.build.gradle.api.ApplicationVariant; import com.android.build.gradle.api.BaseVariant; import com.android.build.gradle.internal.ExtraModelInfo; import com.android.build.gradle.internal.SdkHandler; import com.android.build.gradle.internal.dsl.BuildType; import com.android.build.gradle.internal.dsl.ProductFlavor; import com.android.build.gradle.internal.dsl.SigningConfig; import com.android.builder.core.AndroidBuilder; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.internal.DefaultDomainObjectSet; import org.gradle.api.internal.project.ProjectInternal; import org.gradle.internal.reflect.Instantiator; /** * 'android' extension for 'com.android.test' project. */ public class TestExtension extends BaseExtension implements TestAndroidConfig { private final DefaultDomainObjectSet<ApplicationVariant> applicationVariantList = new DefaultDomainObjectSet<ApplicationVariant>(ApplicationVariant.class); private String targetProjectPath = null; private String targetVariant = "debug"; public TestExtension(@NonNull ProjectInternal project, @NonNull Instantiator instantiator, @NonNull AndroidBuilder androidBuilder, @NonNull SdkHandler sdkHandler, @NonNull NamedDomainObjectContainer<BuildType> buildTypes, @NonNull NamedDomainObjectContainer<ProductFlavor> productFlavors, @NonNull NamedDomainObjectContainer<SigningConfig> signingConfigs, @NonNull ExtraModelInfo extraModelInfo, boolean isLibrary) { super(project, instantiator, androidBuilder, sdkHandler, buildTypes, productFlavors, signingConfigs, extraModelInfo, isLibrary); } /** * Returns the list of Application variants. Since the collections is built after evaluation, it * should be used with Gradle's <code>all</code> iterator to process future items. */ public DefaultDomainObjectSet<ApplicationVariant> getApplicationVariants() { return applicationVariantList; } @Override public void addVariant(BaseVariant variant) { applicationVariantList.add((ApplicationVariant) variant); } /** * Returns the Gradle path of the project that this test project tests. */ @Override public String getTargetProjectPath() { return targetProjectPath; } public void setTargetProjectPath(String targetProjectPath) { checkWritability(); this.targetProjectPath = targetProjectPath; } public void targetProjectPath(String targetProjectPath) { setTargetProjectPath(targetProjectPath); } /** * Returns the variant of the tested project. * * Default is 'debug' */ @Override public String getTargetVariant() { return targetVariant; } public void setTargetVariant(String targetVariant) { checkWritability(); this.targetVariant = targetVariant; } public void targetVariant(String targetVariant) { setTargetVariant(targetVariant); } }