Change the BuildConfig.FLAVOR_# value to include the group name.

Change-Id: I6232e532af66a3bd33318a45ed078041f973ca9a
diff --git a/builder/src/main/java/com/android/builder/VariantConfiguration.java b/builder/src/main/java/com/android/builder/VariantConfiguration.java
index f55d0d6..1491405 100644
--- a/builder/src/main/java/com/android/builder/VariantConfiguration.java
+++ b/builder/src/main/java/com/android/builder/VariantConfiguration.java
@@ -84,6 +84,7 @@
     @Nullable
     private final SourceProvider mBuildTypeSourceProvider;
 
+    private final List<String> mFlavorDimensionNames = Lists.newArrayList();
     private final List<DefaultProductFlavor> mFlavorConfigs = Lists.newArrayList();
     private final List<SourceProvider> mFlavorSourceProviders = Lists.newArrayList();
 
@@ -330,17 +331,29 @@
     /**
      * Return the names of the applied flavors.
      *
+     * The list contains the dimension names as well.
+     *
      * @return the list, possibly empty if there are no flavors.
      */
     @NonNull
-    public List<String> getFlavorNames() {
+    public List<String> getFlavorNamesWithDimensionNames() {
         if (mFlavorConfigs.isEmpty()) {
             return Collections.emptyList();
         }
 
-        List<String> names = Lists.newArrayListWithCapacity(mFlavorConfigs.size());
-        for (DefaultProductFlavor flavor : mFlavorConfigs) {
-            names.add(flavor.getName());
+        List<String> names;
+        int count = mFlavorConfigs.size();
+
+        if (count > 1) {
+            names = Lists.newArrayListWithCapacity(count * 2);
+
+            for (int i = 0 ; i < count ; i++) {
+                names.add(mFlavorConfigs.get(i).getName());
+                names.add(mFlavorDimensionNames.get(i));
+            }
+
+        } else {
+            names = Collections.singletonList(mFlavorConfigs.get(0).getName());
         }
 
         return names;
@@ -356,15 +369,19 @@
      *
      * @param productFlavor the configured product flavor
      * @param sourceProvider the source provider for the product flavor
+     * @param dimensionName the name of the dimension associated with the flavor
      *
      * @return the config object
      */
     @NonNull
-    public VariantConfiguration addProductFlavor(@NonNull DefaultProductFlavor productFlavor,
-                                                 @NonNull SourceProvider sourceProvider) {
+    public VariantConfiguration addProductFlavor(
+            @NonNull DefaultProductFlavor productFlavor,
+            @NonNull SourceProvider sourceProvider,
+            @NonNull String dimensionName) {
 
         mFlavorConfigs.add(productFlavor);
         mFlavorSourceProviders.add(sourceProvider);
+        mFlavorDimensionNames.add(dimensionName);
 
         mMergedFlavor = productFlavor.mergeOver(mMergedFlavor);
         computeNdkConfig();
diff --git a/builder/src/test/java/com/android/builder/VariantConfigurationTest.java b/builder/src/test/java/com/android/builder/VariantConfigurationTest.java
index dfe8ea4..e1ffc3d 100644
--- a/builder/src/test/java/com/android/builder/VariantConfigurationTest.java
+++ b/builder/src/test/java/com/android/builder/VariantConfigurationTest.java
@@ -141,7 +141,7 @@
             }
         };
 
-        variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"));
+        variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"), "");
 
         return variant;
     }
@@ -162,7 +162,7 @@
             }
         };
 
-        variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"));
+        variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"), "");
         return variant;
     }
 
@@ -182,7 +182,7 @@
             }
         };
 
-        variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"));
+        variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"), "");
         return variant;
     }
 }
diff --git a/changelog.txt b/changelog.txt
index 3915ffe..77dfdba 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -16,7 +16,7 @@
     buildConfigField "<type>", "<name>", "<value>"
   This allows override a field (see 'basic' sample)
   Also, BuildConfig now automatically contains constants for
-  PACKAGE_NAME, VERSION_CODE, VERSION_NAME, BUILD_TYPE, FLAVOR as well as FLAVOR1, FLAVOR2, etc... if there are several flavor dimensions.
+  PACKAGE_NAME, VERSION_CODE, VERSION_NAME, BUILD_TYPE, FLAVOR as well as FLAVOR_<group>, FLAVOR_<group>, etc... if there are several flavor dimensions.
 - Switch to ProGuard 4.10
    - Added ability to test proguarded (obfuscated) apps.
 - Jar files are now pre-dexed for faster dexing.
diff --git a/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
index 0cc4e35..32a13ad 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
@@ -438,9 +438,15 @@
                     buildTypeData.sourceSet)
 
             for (ProductFlavorData data : flavorDataList) {
+                String dimensionName = "";
+                if (data.productFlavor instanceof GroupableProductFlavorDsl) {
+                    dimensionName = ((GroupableProductFlavorDsl) data.productFlavor).flavorGroup
+                }
                 variantConfig.addProductFlavor(
                         data.productFlavor,
-                        data.sourceSet)
+                        data.sourceSet,
+                        dimensionName
+                )
                 variantProviders.add(data.mainProvider)
             }
 
@@ -491,9 +497,14 @@
         List<ConfigurationProvider> testVariantProviders = []
 
         for (ProductFlavorData data : flavorDataList) {
+            String dimensionName = "";
+            if (data.productFlavor instanceof GroupableProductFlavorDsl) {
+                dimensionName = ((GroupableProductFlavorDsl) data.productFlavor).flavorGroup
+            }
             testVariantConfig.addProductFlavor(
                     data.productFlavor,
-                    data.testSourceSet)
+                    data.testSourceSet,
+                    dimensionName)
             testVariantProviders.add(data.testProvider)
         }
 
diff --git a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
index 18d43c9..ddd7b4a 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
@@ -587,8 +587,8 @@
             variantConfiguration.flavorName
         }
 
-        generateBuildConfigTask.conventionMapping.flavorNames = {
-            variantConfiguration.flavorNames
+        generateBuildConfigTask.conventionMapping.flavorNamesWithDimensionNames = {
+            variantConfiguration.flavorNamesWithDimensionNames
         }
 
         generateBuildConfigTask.conventionMapping.items = {
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy
index cba93f0..1f4d7af 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy
@@ -43,7 +43,7 @@
     String flavorName
 
     @Input
-    List<String> flavorNames
+    List<String> flavorNamesWithDimensionNames
 
     @Input
     String buildTypeName
@@ -86,9 +86,12 @@
             generator.addField("String", "VERSION_NAME", "\"${getVersionName()}\"")
         }
 
-        int i = 1;
-        for (String name : getFlavorNames()) {
-            generator.addField("String", "FLAVOR${i++}", "\"$name\"")
+        List<String> flavors = getFlavorNamesWithDimensionNames();
+        int count = flavors.size();
+        if (count > 1) {
+            for (int i = 0; i < count ; i+=2) {
+                generator.addField("String", "FLAVOR_${flavors.get(i+1)}", "\"${flavors.get(i)}\"")
+            }
         }
 
         generator.generate();
diff --git a/tests/flavors/src/main/java/com/android/tests/flavors/MainActivity.java b/tests/flavors/src/main/java/com/android/tests/flavors/MainActivity.java
index d768e1e..ff2b47c 100644
--- a/tests/flavors/src/main/java/com/android/tests/flavors/MainActivity.java
+++ b/tests/flavors/src/main/java/com/android/tests/flavors/MainActivity.java
@@ -14,10 +14,10 @@
         TextView tv;
 
         tv = (TextView) findViewById(R.id.buildconfig1);
-        tv.setText(BuildConfig.FLAVOR1);
+        tv.setText(BuildConfig.FLAVOR_group1);
 
         tv = (TextView) findViewById(R.id.buildconfig2);
-        tv.setText(BuildConfig.FLAVOR2);
+        tv.setText(BuildConfig.FLAVOR_group2);
 
         tv = (TextView) findViewById(R.id.codeoverlay1);
         tv.setText(com.android.tests.flavors.group1.SomeClass.getString());