Adapt to PLATFORM_VERSION_FUTURE_CODENAMES.

Don't preserve the confusing names from make. Rename AllCodenames to
ActiveCodenames, add FutureCodenames, and add CombinedCodenames to
fetch the *real* AllCodenames.

To allow `introduced=P` in NDK library definitions, we need to know
that P exists. Use the combined list of current and future API
codenames generating stubs.

Test: make ndk
Test: check out/soong/api_levels.json
Bug: None
Change-Id: I435f9ce7446236edc268a84e33474044a55a6302
diff --git a/android/api_levels.go b/android/api_levels.go
index cf1011b..370d553 100644
--- a/android/api_levels.go
+++ b/android/api_levels.go
@@ -68,7 +68,7 @@
 		"N":     24,
 		"N-MR1": 25,
 	}
-	for i, codename := range ctx.Config().(Config).PlatformVersionAllCodenames() {
+	for i, codename := range ctx.Config().(Config).PlatformVersionCombinedCodenames() {
 		apiLevelsMap[codename] = baseApiLevel + i
 	}
 
diff --git a/android/config.go b/android/config.go
index 5dcc59b..ee2f40f 100644
--- a/android/config.go
+++ b/android/config.go
@@ -378,8 +378,25 @@
 	return strconv.Itoa(c.PlatformSdkVersionInt())
 }
 
-func (c *config) PlatformVersionAllCodenames() []string {
-	return c.ProductVariables.Platform_version_all_codenames
+// Codenames that are active in the current lunch target.
+func (c *config) PlatformVersionActiveCodenames() []string {
+	return c.ProductVariables.Platform_version_active_codenames
+}
+
+// Codenames that are available in the branch but not included in the current
+// lunch target.
+func (c *config) PlatformVersionFutureCodenames() []string {
+	return c.ProductVariables.Platform_version_future_codenames
+}
+
+// All possible codenames in the current branch. NB: Not named AllCodenames
+// because "all" has historically meant "active" in make, and still does in
+// build.prop.
+func (c *config) PlatformVersionCombinedCodenames() []string {
+	combined := []string{}
+	combined = append(combined, c.PlatformVersionActiveCodenames()...)
+	combined = append(combined, c.PlatformVersionFutureCodenames()...)
+	return combined
 }
 
 func (c *config) BuildNumber() string {
diff --git a/android/variable.go b/android/variable.go
index 8462d0d..74fa868 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -102,8 +102,9 @@
 	// Suffix to add to generated Makefiles
 	Make_suffix *string `json:",omitempty"`
 
-	Platform_sdk_version           *int     `json:",omitempty"`
-	Platform_version_all_codenames []string `json:",omitempty"`
+	Platform_sdk_version              *int     `json:",omitempty"`
+	Platform_version_active_codenames []string `json:",omitempty"`
+	Platform_version_future_codenames []string `json:",omitempty"`
 
 	DeviceName        *string   `json:",omitempty"`
 	DeviceArch        *string   `json:",omitempty"`