| // Copyright 2019 Google Inc. All rights reserved. | 
 | // | 
 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
 | // you may not use this file except in compliance with the License. | 
 | // You may obtain a copy of the License at | 
 | // | 
 | //     http://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 |  | 
 | package android | 
 |  | 
 | func init() { | 
 | 	registerCSuiteBuildComponents(InitRegistrationContext) | 
 | } | 
 |  | 
 | func registerCSuiteBuildComponents(ctx RegistrationContext) { | 
 | 	ctx.RegisterModuleType("csuite_config", CSuiteConfigFactory) | 
 | } | 
 |  | 
 | type csuiteConfigProperties struct { | 
 | 	// Override the default (AndroidTest.xml) test manifest file name. | 
 | 	Test_config *string | 
 | } | 
 |  | 
 | type CSuiteConfig struct { | 
 | 	ModuleBase | 
 | 	properties     csuiteConfigProperties | 
 | 	OutputFilePath OutputPath | 
 | } | 
 |  | 
 | func (me *CSuiteConfig) GenerateAndroidBuildActions(ctx ModuleContext) { | 
 | 	me.OutputFilePath = PathForModuleOut(ctx, me.BaseModuleName()).OutputPath | 
 | } | 
 |  | 
 | func (me *CSuiteConfig) AndroidMkEntries() []AndroidMkEntries { | 
 | 	androidMkEntries := AndroidMkEntries{ | 
 | 		Class:      "FAKE", | 
 | 		Include:    "$(BUILD_SYSTEM)/suite_host_config.mk", | 
 | 		OutputFile: OptionalPathForPath(me.OutputFilePath), | 
 | 	} | 
 | 	androidMkEntries.ExtraEntries = []AndroidMkExtraEntriesFunc{ | 
 | 		func(ctx AndroidMkExtraEntriesContext, entries *AndroidMkEntries) { | 
 | 			if me.properties.Test_config != nil { | 
 | 				entries.SetString("LOCAL_TEST_CONFIG", *me.properties.Test_config) | 
 | 			} | 
 | 			entries.AddCompatibilityTestSuites("csuite") | 
 | 		}, | 
 | 	} | 
 | 	return []AndroidMkEntries{androidMkEntries} | 
 | } | 
 |  | 
 | func InitCSuiteConfigModule(me *CSuiteConfig) { | 
 | 	me.AddProperties(&me.properties) | 
 | } | 
 |  | 
 | // csuite_config generates an App Compatibility Test Suite (C-Suite) configuration file from the | 
 | // <test_config> xml file and stores it in a subdirectory of $(HOST_OUT). | 
 | func CSuiteConfigFactory() Module { | 
 | 	module := &CSuiteConfig{} | 
 | 	InitCSuiteConfigModule(module) | 
 | 	InitAndroidArchModule(module, HostSupported, MultilibFirst) | 
 | 	return module | 
 | } |