xref: /aosp_15_r20/frameworks/base/tools/aapt2/test/Builders.h (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
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