1*d57664e9SAndroid Build Coastguard Worker /* 2*d57664e9SAndroid Build Coastguard Worker * Copyright (C) 2015 The Android Open Source Project 3*d57664e9SAndroid Build Coastguard Worker * 4*d57664e9SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*d57664e9SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*d57664e9SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*d57664e9SAndroid Build Coastguard Worker * 8*d57664e9SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*d57664e9SAndroid Build Coastguard Worker * 10*d57664e9SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*d57664e9SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*d57664e9SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*d57664e9SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*d57664e9SAndroid Build Coastguard Worker * limitations under the License. 15*d57664e9SAndroid Build Coastguard Worker */ 16*d57664e9SAndroid Build Coastguard Worker 17*d57664e9SAndroid Build Coastguard Worker #ifndef AAPT_TEST_BUILDERS_H 18*d57664e9SAndroid Build Coastguard Worker #define AAPT_TEST_BUILDERS_H 19*d57664e9SAndroid Build Coastguard Worker 20*d57664e9SAndroid Build Coastguard Worker #include <memory> 21*d57664e9SAndroid Build Coastguard Worker 22*d57664e9SAndroid Build Coastguard Worker #include "android-base/macros.h" 23*d57664e9SAndroid Build Coastguard Worker #include "androidfw/ConfigDescription.h" 24*d57664e9SAndroid Build Coastguard Worker 25*d57664e9SAndroid Build Coastguard Worker #include "Resource.h" 26*d57664e9SAndroid Build Coastguard Worker #include "ResourceTable.h" 27*d57664e9SAndroid Build Coastguard Worker #include "ResourceValues.h" 28*d57664e9SAndroid Build Coastguard Worker #include "configuration/ConfigurationParser.h" 29*d57664e9SAndroid Build Coastguard Worker #include "configuration/ConfigurationParser.internal.h" 30*d57664e9SAndroid Build Coastguard Worker #include "process/IResourceTableConsumer.h" 31*d57664e9SAndroid Build Coastguard Worker #include "test/Common.h" 32*d57664e9SAndroid Build Coastguard Worker #include "xml/XmlDom.h" 33*d57664e9SAndroid Build Coastguard Worker 34*d57664e9SAndroid Build Coastguard Worker namespace aapt { 35*d57664e9SAndroid Build Coastguard Worker namespace test { 36*d57664e9SAndroid Build Coastguard Worker 37*d57664e9SAndroid Build Coastguard Worker class ResourceTableBuilder { 38*d57664e9SAndroid Build Coastguard Worker public: 39*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder() = default; 40*d57664e9SAndroid Build Coastguard Worker 41*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddSimple(android::StringPiece name, const ResourceId& id = {}); 42*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddSimple(android::StringPiece name, 43*d57664e9SAndroid Build Coastguard Worker const android::ConfigDescription& config, 44*d57664e9SAndroid Build Coastguard Worker const ResourceId& id = {}); 45*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddReference(android::StringPiece name, android::StringPiece ref); 46*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddReference(android::StringPiece name, const ResourceId& id, 47*d57664e9SAndroid Build Coastguard Worker android::StringPiece ref); 48*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddString(android::StringPiece name, android::StringPiece str); 49*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddString(android::StringPiece name, const ResourceId& id, 50*d57664e9SAndroid Build Coastguard Worker android::StringPiece str); 51*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddString(android::StringPiece name, const ResourceId& id, 52*d57664e9SAndroid Build Coastguard Worker const android::ConfigDescription& config, 53*d57664e9SAndroid Build Coastguard Worker android::StringPiece str); 54*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddFileReference(android::StringPiece name, android::StringPiece path, 55*d57664e9SAndroid Build Coastguard Worker io::IFile* file = nullptr); 56*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddFileReference(android::StringPiece name, const ResourceId& id, 57*d57664e9SAndroid Build Coastguard Worker android::StringPiece path, io::IFile* file = nullptr); 58*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddFileReference(android::StringPiece name, android::StringPiece path, 59*d57664e9SAndroid Build Coastguard Worker const android::ConfigDescription& config, 60*d57664e9SAndroid Build Coastguard Worker io::IFile* file = nullptr); 61*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddValue(android::StringPiece name, std::unique_ptr<Value> value); 62*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddValue(android::StringPiece name, const ResourceId& id, 63*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Value> value); 64*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& AddValue(android::StringPiece name, 65*d57664e9SAndroid Build Coastguard Worker const android::ConfigDescription& config, const ResourceId& id, 66*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Value> value); 67*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& SetSymbolState(android::StringPiece name, const ResourceId& id, 68*d57664e9SAndroid Build Coastguard Worker Visibility::Level level, bool allow_new = false); 69*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& SetOverlayable(android::StringPiece name, 70*d57664e9SAndroid Build Coastguard Worker const OverlayableItem& overlayable); 71*d57664e9SAndroid Build Coastguard Worker ResourceTableBuilder& Add(NewResource&& res); 72*d57664e9SAndroid Build Coastguard Worker 73*d57664e9SAndroid Build Coastguard Worker android::StringPool* string_pool(); 74*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<ResourceTable> Build(); 75*d57664e9SAndroid Build Coastguard Worker 76*d57664e9SAndroid Build Coastguard Worker private: 77*d57664e9SAndroid Build Coastguard Worker DISALLOW_COPY_AND_ASSIGN(ResourceTableBuilder); 78*d57664e9SAndroid Build Coastguard Worker 79*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<ResourceTable> table_ = util::make_unique<ResourceTable>(); 80*d57664e9SAndroid Build Coastguard Worker }; 81*d57664e9SAndroid Build Coastguard Worker 82*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Reference> BuildReference(android::StringPiece ref, 83*d57664e9SAndroid Build Coastguard Worker const std::optional<ResourceId>& id = {}); 84*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<BinaryPrimitive> BuildPrimitive(uint8_t type, uint32_t data); 85*d57664e9SAndroid Build Coastguard Worker 86*d57664e9SAndroid Build Coastguard Worker template <typename T> 87*d57664e9SAndroid Build Coastguard Worker class ValueBuilder { 88*d57664e9SAndroid Build Coastguard Worker public: 89*d57664e9SAndroid Build Coastguard Worker template <typename... Args> ValueBuilder(Args &&...args)90*d57664e9SAndroid Build Coastguard Worker explicit ValueBuilder(Args&&... args) : value_(new T{std::forward<Args>(args)...}) { 91*d57664e9SAndroid Build Coastguard Worker } 92*d57664e9SAndroid Build Coastguard Worker 93*d57664e9SAndroid Build Coastguard Worker template <typename... Args> SetSource(Args &&...args)94*d57664e9SAndroid Build Coastguard Worker ValueBuilder& SetSource(Args&&... args) { 95*d57664e9SAndroid Build Coastguard Worker value_->SetSource(android::Source{std::forward<Args>(args)...}); 96*d57664e9SAndroid Build Coastguard Worker return *this; 97*d57664e9SAndroid Build Coastguard Worker } 98*d57664e9SAndroid Build Coastguard Worker SetComment(android::StringPiece str)99*d57664e9SAndroid Build Coastguard Worker ValueBuilder& SetComment(android::StringPiece str) { 100*d57664e9SAndroid Build Coastguard Worker value_->SetComment(str); 101*d57664e9SAndroid Build Coastguard Worker return *this; 102*d57664e9SAndroid Build Coastguard Worker } 103*d57664e9SAndroid Build Coastguard Worker Build()104*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Value> Build() { 105*d57664e9SAndroid Build Coastguard Worker return std::move(value_); 106*d57664e9SAndroid Build Coastguard Worker } 107*d57664e9SAndroid Build Coastguard Worker 108*d57664e9SAndroid Build Coastguard Worker private: 109*d57664e9SAndroid Build Coastguard Worker DISALLOW_COPY_AND_ASSIGN(ValueBuilder); 110*d57664e9SAndroid Build Coastguard Worker 111*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Value> value_; 112*d57664e9SAndroid Build Coastguard Worker }; 113*d57664e9SAndroid Build Coastguard Worker 114*d57664e9SAndroid Build Coastguard Worker class AttributeBuilder { 115*d57664e9SAndroid Build Coastguard Worker public: 116*d57664e9SAndroid Build Coastguard Worker AttributeBuilder(); 117*d57664e9SAndroid Build Coastguard Worker AttributeBuilder& SetTypeMask(uint32_t typeMask); 118*d57664e9SAndroid Build Coastguard Worker AttributeBuilder& SetWeak(bool weak); 119*d57664e9SAndroid Build Coastguard Worker AttributeBuilder& SetComment(android::StringPiece comment); 120*d57664e9SAndroid Build Coastguard Worker AttributeBuilder& AddItem(android::StringPiece name, uint32_t value); 121*d57664e9SAndroid Build Coastguard Worker AttributeBuilder& AddItemWithComment(android::StringPiece name, uint32_t value, 122*d57664e9SAndroid Build Coastguard Worker android::StringPiece comment); 123*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Attribute> Build(); 124*d57664e9SAndroid Build Coastguard Worker 125*d57664e9SAndroid Build Coastguard Worker private: 126*d57664e9SAndroid Build Coastguard Worker DISALLOW_COPY_AND_ASSIGN(AttributeBuilder); 127*d57664e9SAndroid Build Coastguard Worker 128*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Attribute> attr_; 129*d57664e9SAndroid Build Coastguard Worker }; 130*d57664e9SAndroid Build Coastguard Worker 131*d57664e9SAndroid Build Coastguard Worker class StyleBuilder { 132*d57664e9SAndroid Build Coastguard Worker public: 133*d57664e9SAndroid Build Coastguard Worker StyleBuilder() = default; 134*d57664e9SAndroid Build Coastguard Worker StyleBuilder& SetParent(android::StringPiece str); 135*d57664e9SAndroid Build Coastguard Worker StyleBuilder& AddItem(android::StringPiece str, std::unique_ptr<Item> value); 136*d57664e9SAndroid Build Coastguard Worker StyleBuilder& AddItem(android::StringPiece str, const ResourceId& id, 137*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Item> value); 138*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Style> Build(); 139*d57664e9SAndroid Build Coastguard Worker 140*d57664e9SAndroid Build Coastguard Worker private: 141*d57664e9SAndroid Build Coastguard Worker DISALLOW_COPY_AND_ASSIGN(StyleBuilder); 142*d57664e9SAndroid Build Coastguard Worker 143*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Style> style_ = util::make_unique<Style>(); 144*d57664e9SAndroid Build Coastguard Worker }; 145*d57664e9SAndroid Build Coastguard Worker 146*d57664e9SAndroid Build Coastguard Worker class StyleableBuilder { 147*d57664e9SAndroid Build Coastguard Worker public: 148*d57664e9SAndroid Build Coastguard Worker StyleableBuilder() = default; 149*d57664e9SAndroid Build Coastguard Worker StyleableBuilder& AddItem(android::StringPiece str, const std::optional<ResourceId>& id = {}); 150*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Styleable> Build(); 151*d57664e9SAndroid Build Coastguard Worker 152*d57664e9SAndroid Build Coastguard Worker private: 153*d57664e9SAndroid Build Coastguard Worker DISALLOW_COPY_AND_ASSIGN(StyleableBuilder); 154*d57664e9SAndroid Build Coastguard Worker 155*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<Styleable> styleable_ = util::make_unique<Styleable>(); 156*d57664e9SAndroid Build Coastguard Worker }; 157*d57664e9SAndroid Build Coastguard Worker 158*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<xml::XmlResource> BuildXmlDom(android::StringPiece str); 159*d57664e9SAndroid Build Coastguard Worker std::unique_ptr<xml::XmlResource> BuildXmlDomForPackageName(IAaptContext* context, 160*d57664e9SAndroid Build Coastguard Worker android::StringPiece str); 161*d57664e9SAndroid Build Coastguard Worker 162*d57664e9SAndroid Build Coastguard Worker class ArtifactBuilder { 163*d57664e9SAndroid Build Coastguard Worker public: 164*d57664e9SAndroid Build Coastguard Worker ArtifactBuilder() = default; 165*d57664e9SAndroid Build Coastguard Worker 166*d57664e9SAndroid Build Coastguard Worker ArtifactBuilder& SetName(const std::string& name); 167*d57664e9SAndroid Build Coastguard Worker ArtifactBuilder& SetVersion(int version); 168*d57664e9SAndroid Build Coastguard Worker ArtifactBuilder& AddAbi(configuration::Abi abi); 169*d57664e9SAndroid Build Coastguard Worker ArtifactBuilder& AddDensity(const android::ConfigDescription& density); 170*d57664e9SAndroid Build Coastguard Worker ArtifactBuilder& AddLocale(const android::ConfigDescription& locale); 171*d57664e9SAndroid Build Coastguard Worker ArtifactBuilder& SetAndroidSdk(int min_sdk); 172*d57664e9SAndroid Build Coastguard Worker configuration::OutputArtifact Build(); 173*d57664e9SAndroid Build Coastguard Worker 174*d57664e9SAndroid Build Coastguard Worker private: 175*d57664e9SAndroid Build Coastguard Worker DISALLOW_COPY_AND_ASSIGN(ArtifactBuilder); 176*d57664e9SAndroid Build Coastguard Worker 177*d57664e9SAndroid Build Coastguard Worker configuration::OutputArtifact artifact_; 178*d57664e9SAndroid Build Coastguard Worker }; 179*d57664e9SAndroid Build Coastguard Worker 180*d57664e9SAndroid Build Coastguard Worker class PostProcessingConfigurationBuilder { 181*d57664e9SAndroid Build Coastguard Worker public: 182*d57664e9SAndroid Build Coastguard Worker PostProcessingConfigurationBuilder() = default; 183*d57664e9SAndroid Build Coastguard Worker 184*d57664e9SAndroid Build Coastguard Worker PostProcessingConfigurationBuilder& AddAbiGroup(const std::string& label, 185*d57664e9SAndroid Build Coastguard Worker std::vector<configuration::Abi> abis = {}); 186*d57664e9SAndroid Build Coastguard Worker PostProcessingConfigurationBuilder& AddDensityGroup(const std::string& label, 187*d57664e9SAndroid Build Coastguard Worker std::vector<std::string> densities = {}); 188*d57664e9SAndroid Build Coastguard Worker PostProcessingConfigurationBuilder& AddLocaleGroup(const std::string& label, 189*d57664e9SAndroid Build Coastguard Worker std::vector<std::string> locales = {}); 190*d57664e9SAndroid Build Coastguard Worker PostProcessingConfigurationBuilder& AddDeviceFeatureGroup(const std::string& label); 191*d57664e9SAndroid Build Coastguard Worker PostProcessingConfigurationBuilder& AddGlTextureGroup(const std::string& label); 192*d57664e9SAndroid Build Coastguard Worker PostProcessingConfigurationBuilder& AddAndroidSdk(std::string label, int min_sdk); 193*d57664e9SAndroid Build Coastguard Worker PostProcessingConfigurationBuilder& AddArtifact(configuration::ConfiguredArtifact artrifact); 194*d57664e9SAndroid Build Coastguard Worker 195*d57664e9SAndroid Build Coastguard Worker configuration::PostProcessingConfiguration Build(); 196*d57664e9SAndroid Build Coastguard Worker 197*d57664e9SAndroid Build Coastguard Worker private: 198*d57664e9SAndroid Build Coastguard Worker template <typename T> 199*d57664e9SAndroid Build Coastguard Worker inline PostProcessingConfigurationBuilder& AddGroup(const std::string& label, 200*d57664e9SAndroid Build Coastguard Worker configuration::Group<T>* group, 201*d57664e9SAndroid Build Coastguard Worker std::vector<T> to_add = {}) { 202*d57664e9SAndroid Build Coastguard Worker auto& values = GetOrCreateGroup(label, group); 203*d57664e9SAndroid Build Coastguard Worker values.insert(std::begin(values), std::begin(to_add), std::end(to_add)); 204*d57664e9SAndroid Build Coastguard Worker return *this; 205*d57664e9SAndroid Build Coastguard Worker } 206*d57664e9SAndroid Build Coastguard Worker 207*d57664e9SAndroid Build Coastguard Worker configuration::PostProcessingConfiguration config_; 208*d57664e9SAndroid Build Coastguard Worker }; 209*d57664e9SAndroid Build Coastguard Worker 210*d57664e9SAndroid Build Coastguard Worker class ConfigDescriptionBuilder { 211*d57664e9SAndroid Build Coastguard Worker public: 212*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder() = default; 213*d57664e9SAndroid Build Coastguard Worker setMcc(uint16_t mcc)214*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setMcc(uint16_t mcc) { 215*d57664e9SAndroid Build Coastguard Worker config_.mcc = mcc; 216*d57664e9SAndroid Build Coastguard Worker return *this; 217*d57664e9SAndroid Build Coastguard Worker } setMnc(uint16_t mnc)218*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setMnc(uint16_t mnc) { 219*d57664e9SAndroid Build Coastguard Worker config_.mnc = mnc; 220*d57664e9SAndroid Build Coastguard Worker return *this; 221*d57664e9SAndroid Build Coastguard Worker } setLanguage(uint16_t language)222*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setLanguage(uint16_t language) { 223*d57664e9SAndroid Build Coastguard Worker config_.language[0] = language >> 8; 224*d57664e9SAndroid Build Coastguard Worker config_.language[1] = language & 0xff; 225*d57664e9SAndroid Build Coastguard Worker return *this; 226*d57664e9SAndroid Build Coastguard Worker } setCountry(uint16_t country)227*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setCountry(uint16_t country) { 228*d57664e9SAndroid Build Coastguard Worker config_.country[0] = country >> 8; 229*d57664e9SAndroid Build Coastguard Worker config_.country[1] = country & 0xff; 230*d57664e9SAndroid Build Coastguard Worker return *this; 231*d57664e9SAndroid Build Coastguard Worker } setOrientation(uint8_t orientation)232*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setOrientation(uint8_t orientation) { 233*d57664e9SAndroid Build Coastguard Worker config_.orientation = orientation; 234*d57664e9SAndroid Build Coastguard Worker return *this; 235*d57664e9SAndroid Build Coastguard Worker } setTouchscreen(uint8_t touchscreen)236*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setTouchscreen(uint8_t touchscreen) { 237*d57664e9SAndroid Build Coastguard Worker config_.touchscreen = touchscreen; 238*d57664e9SAndroid Build Coastguard Worker return *this; 239*d57664e9SAndroid Build Coastguard Worker } setDensity(uint16_t density)240*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setDensity(uint16_t density) { 241*d57664e9SAndroid Build Coastguard Worker config_.density = density; 242*d57664e9SAndroid Build Coastguard Worker return *this; 243*d57664e9SAndroid Build Coastguard Worker } setKeyboard(uint8_t keyboard)244*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setKeyboard(uint8_t keyboard) { 245*d57664e9SAndroid Build Coastguard Worker config_.keyboard = keyboard; 246*d57664e9SAndroid Build Coastguard Worker return *this; 247*d57664e9SAndroid Build Coastguard Worker } setNavigation(uint8_t navigation)248*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setNavigation(uint8_t navigation) { 249*d57664e9SAndroid Build Coastguard Worker config_.navigation = navigation; 250*d57664e9SAndroid Build Coastguard Worker return *this; 251*d57664e9SAndroid Build Coastguard Worker } setInputFlags(uint8_t inputFlags)252*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setInputFlags(uint8_t inputFlags) { 253*d57664e9SAndroid Build Coastguard Worker config_.inputFlags = inputFlags; 254*d57664e9SAndroid Build Coastguard Worker return *this; 255*d57664e9SAndroid Build Coastguard Worker } setInputPad0(uint8_t inputPad0)256*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setInputPad0(uint8_t inputPad0) { 257*d57664e9SAndroid Build Coastguard Worker config_.inputFieldPad0 = inputPad0; 258*d57664e9SAndroid Build Coastguard Worker return *this; 259*d57664e9SAndroid Build Coastguard Worker } setGrammaticalInflection(uint8_t value)260*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setGrammaticalInflection(uint8_t value) { 261*d57664e9SAndroid Build Coastguard Worker config_.grammaticalInflection = value; 262*d57664e9SAndroid Build Coastguard Worker return *this; 263*d57664e9SAndroid Build Coastguard Worker } setScreenWidth(uint16_t screenWidth)264*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setScreenWidth(uint16_t screenWidth) { 265*d57664e9SAndroid Build Coastguard Worker config_.screenWidth = screenWidth; 266*d57664e9SAndroid Build Coastguard Worker return *this; 267*d57664e9SAndroid Build Coastguard Worker } setScreenHeight(uint16_t screenHeight)268*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setScreenHeight(uint16_t screenHeight) { 269*d57664e9SAndroid Build Coastguard Worker config_.screenHeight = screenHeight; 270*d57664e9SAndroid Build Coastguard Worker return *this; 271*d57664e9SAndroid Build Coastguard Worker } setSdkVersion(uint16_t sdkVersion)272*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setSdkVersion(uint16_t sdkVersion) { 273*d57664e9SAndroid Build Coastguard Worker config_.sdkVersion = sdkVersion; 274*d57664e9SAndroid Build Coastguard Worker return *this; 275*d57664e9SAndroid Build Coastguard Worker } setMinorVersion(uint16_t minorVersion)276*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setMinorVersion(uint16_t minorVersion) { 277*d57664e9SAndroid Build Coastguard Worker config_.minorVersion = minorVersion; 278*d57664e9SAndroid Build Coastguard Worker return *this; 279*d57664e9SAndroid Build Coastguard Worker } setScreenLayout(uint8_t screenLayout)280*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setScreenLayout(uint8_t screenLayout) { 281*d57664e9SAndroid Build Coastguard Worker config_.screenLayout = screenLayout; 282*d57664e9SAndroid Build Coastguard Worker return *this; 283*d57664e9SAndroid Build Coastguard Worker } setUiMode(uint8_t uiMode)284*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setUiMode(uint8_t uiMode) { 285*d57664e9SAndroid Build Coastguard Worker config_.uiMode = uiMode; 286*d57664e9SAndroid Build Coastguard Worker return *this; 287*d57664e9SAndroid Build Coastguard Worker } setSmallestScreenWidthDp(uint16_t smallestScreenWidthDp)288*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setSmallestScreenWidthDp(uint16_t smallestScreenWidthDp) { 289*d57664e9SAndroid Build Coastguard Worker config_.smallestScreenWidthDp = smallestScreenWidthDp; 290*d57664e9SAndroid Build Coastguard Worker return *this; 291*d57664e9SAndroid Build Coastguard Worker } setScreenWidthDp(uint16_t screenWidthDp)292*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setScreenWidthDp(uint16_t screenWidthDp) { 293*d57664e9SAndroid Build Coastguard Worker config_.screenWidthDp = screenWidthDp; 294*d57664e9SAndroid Build Coastguard Worker return *this; 295*d57664e9SAndroid Build Coastguard Worker } setScreenHeightDp(uint16_t screenHeightDp)296*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setScreenHeightDp(uint16_t screenHeightDp) { 297*d57664e9SAndroid Build Coastguard Worker config_.screenHeightDp = screenHeightDp; 298*d57664e9SAndroid Build Coastguard Worker return *this; 299*d57664e9SAndroid Build Coastguard Worker } setScreenLayout2(uint8_t screenLayout2)300*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setScreenLayout2(uint8_t screenLayout2) { 301*d57664e9SAndroid Build Coastguard Worker config_.screenLayout2 = screenLayout2; 302*d57664e9SAndroid Build Coastguard Worker return *this; 303*d57664e9SAndroid Build Coastguard Worker } setColorMode(uint8_t colorMode)304*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setColorMode(uint8_t colorMode) { 305*d57664e9SAndroid Build Coastguard Worker config_.colorMode = colorMode; 306*d57664e9SAndroid Build Coastguard Worker return *this; 307*d57664e9SAndroid Build Coastguard Worker } setScreenConfigPad2(uint16_t screenConfigPad2)308*d57664e9SAndroid Build Coastguard Worker ConfigDescriptionBuilder& setScreenConfigPad2(uint16_t screenConfigPad2) { 309*d57664e9SAndroid Build Coastguard Worker config_.screenConfigPad2 = screenConfigPad2; 310*d57664e9SAndroid Build Coastguard Worker return *this; 311*d57664e9SAndroid Build Coastguard Worker } Build()312*d57664e9SAndroid Build Coastguard Worker android::ConfigDescription Build() { 313*d57664e9SAndroid Build Coastguard Worker return config_; 314*d57664e9SAndroid Build Coastguard Worker } 315*d57664e9SAndroid Build Coastguard Worker 316*d57664e9SAndroid Build Coastguard Worker private: 317*d57664e9SAndroid Build Coastguard Worker android::ConfigDescription config_; 318*d57664e9SAndroid Build Coastguard Worker }; 319*d57664e9SAndroid Build Coastguard Worker 320*d57664e9SAndroid Build Coastguard Worker } // namespace test 321*d57664e9SAndroid Build Coastguard Worker } // namespace aapt 322*d57664e9SAndroid Build Coastguard Worker 323*d57664e9SAndroid Build Coastguard Worker #endif /* AAPT_TEST_BUILDERS_H */ 324