Merge "libandroidfw: move ConfigDescription from aapt2 to libandroidfw"

am: b14c887974

Change-Id: I14be80a2d2c3620919a78da5a42ed56ec1d1737f
This commit is contained in:
Mårten Kongstad
2018-10-09 16:04:34 -07:00
committed by android-build-merger
60 changed files with 270 additions and 138 deletions

View File

@@ -43,8 +43,10 @@ cc_library {
"AssetManager2.cpp",
"AttributeResolution.cpp",
"ChunkIterator.cpp",
"ConfigDescription.cpp",
"Idmap.cpp",
"LoadedArsc.cpp",
"Locale.cpp",
"LocaleData.cpp",
"misc.cpp",
"ObbFile.cpp",
@@ -135,9 +137,11 @@ cc_test {
"tests/AttributeResolution_test.cpp",
"tests/ByteBucketArray_test.cpp",
"tests/Config_test.cpp",
"tests/ConfigDescription_test.cpp",
"tests/ConfigLocale_test.cpp",
"tests/Idmap_test.cpp",
"tests/LoadedArsc_test.cpp",
"tests/Locale_test.cpp",
"tests/ResourceUtils_test.cpp",
"tests/ResTable_test.cpp",
"tests/Split_test.cpp",

View File

@@ -14,22 +14,16 @@
* limitations under the License.
*/
#include "ConfigDescription.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/Locale.h"
#include "androidfw/ResourceTypes.h"
#include "androidfw/StringPiece.h"
#include "androidfw/Util.h"
#include <string>
#include <vector>
#include "androidfw/ResourceTypes.h"
#include "androidfw/StringPiece.h"
#include "Locale.h"
#include "SdkConstants.h"
#include "util/Util.h"
using android::ResTable_config;
using android::StringPiece;
namespace aapt {
namespace android {
static const char* kWildcardName = "any";
@@ -883,7 +877,7 @@ std::string ConfigDescription::GetBcp47LanguageTag(bool canonicalize) const {
}
std::string ConfigDescription::to_string() const {
const android::String8 str = toString();
const String8 str = toString();
return std::string(str.string(), str.size());
}
@@ -996,4 +990,4 @@ bool ConfigDescription::IsCompatibleWith(const ConfigDescription& o) const {
return !ConflictsWith(o) && !Dominates(o) && !o.Dominates(*this);
}
} // namespace aapt
} // namespace android

View File

@@ -14,7 +14,8 @@
* limitations under the License.
*/
#include "Locale.h"
#include "androidfw/Locale.h"
#include "androidfw/Util.h"
#include <ctype.h>
@@ -22,12 +23,10 @@
#include <string>
#include <vector>
#include "util/Util.h"
using ::android::ResTable_config;
using ::android::StringPiece;
namespace aapt {
namespace android {
void LocaleValue::set_language(const char* language_chars) {
size_t i = 0;
@@ -258,4 +257,4 @@ void LocaleValue::WriteTo(ResTable_config* out) const {
}
}
} // namespace aapt
} // namespace android

View File

@@ -16,6 +16,7 @@
#include "androidfw/Util.h"
#include <algorithm>
#include <string>
#include "utils/ByteOrder.h"
@@ -67,5 +68,28 @@ std::string Utf16ToUtf8(const StringPiece16& utf16) {
return utf8;
}
static std::vector<std::string> SplitAndTransform(
const StringPiece& str, char sep, const std::function<char(char)>& f) {
std::vector<std::string> parts;
const StringPiece::const_iterator end = std::end(str);
StringPiece::const_iterator start = std::begin(str);
StringPiece::const_iterator current;
do {
current = std::find(start, end, sep);
parts.emplace_back(str.substr(start, current).to_string());
if (f) {
std::string& part = parts.back();
std::transform(part.begin(), part.end(), part.begin(), f);
}
start = current + 1;
} while (current != end);
return parts;
}
std::vector<std::string> SplitAndLowercase(const StringPiece& str, char sep) {
return SplitAndTransform(str, sep, ::tolower);
}
} // namespace util
} // namespace android

View File

@@ -14,21 +14,52 @@
* limitations under the License.
*/
#ifndef AAPT_CONFIG_DESCRIPTION_H
#define AAPT_CONFIG_DESCRIPTION_H
#ifndef ANDROIDFW_CONFIG_DESCRIPTION_H
#define ANDROIDFW_CONFIG_DESCRIPTION_H
#include <ostream>
#include "androidfw/ResourceTypes.h"
#include "androidfw/StringPiece.h"
namespace aapt {
namespace android {
using ApiVersion = int;
enum : ApiVersion {
SDK_CUPCAKE = 3,
SDK_DONUT = 4,
SDK_ECLAIR = 5,
SDK_ECLAIR_0_1 = 6,
SDK_ECLAIR_MR1 = 7,
SDK_FROYO = 8,
SDK_GINGERBREAD = 9,
SDK_GINGERBREAD_MR1 = 10,
SDK_HONEYCOMB = 11,
SDK_HONEYCOMB_MR1 = 12,
SDK_HONEYCOMB_MR2 = 13,
SDK_ICE_CREAM_SANDWICH = 14,
SDK_ICE_CREAM_SANDWICH_MR1 = 15,
SDK_JELLY_BEAN = 16,
SDK_JELLY_BEAN_MR1 = 17,
SDK_JELLY_BEAN_MR2 = 18,
SDK_KITKAT = 19,
SDK_KITKAT_WATCH = 20,
SDK_LOLLIPOP = 21,
SDK_LOLLIPOP_MR1 = 22,
SDK_MARSHMALLOW = 23,
SDK_NOUGAT = 24,
SDK_NOUGAT_MR1 = 25,
SDK_O = 26,
SDK_O_MR1 = 27,
SDK_P = 28,
};
/*
* Subclass of ResTable_config that adds convenient
* initialization and comparison methods.
*/
struct ConfigDescription : public android::ResTable_config {
struct ConfigDescription : public ResTable_config {
/**
* Returns an immutable default config.
*/
@@ -180,6 +211,6 @@ inline ::std::ostream& operator<<(::std::ostream& out,
return out << o.toString().string();
}
} // namespace aapt
} // namespace android
#endif // AAPT_CONFIG_DESCRIPTION_H
#endif // ANDROIDFW_CONFIG_DESCRIPTION_H

View File

@@ -14,8 +14,8 @@
* limitations under the License.
*/
#ifndef AAPT_LOCALE_VALUE_H
#define AAPT_LOCALE_VALUE_H
#ifndef ANDROIDFW_LOCALE_VALUE_H
#define ANDROIDFW_LOCALE_VALUE_H
#include <string>
#include <vector>
@@ -23,7 +23,7 @@
#include "androidfw/ResourceTypes.h"
#include "androidfw/StringPiece.h"
namespace aapt {
namespace android {
/**
* A convenience class to build and parse locales.
@@ -112,6 +112,6 @@ bool LocaleValue::operator>(const LocaleValue& o) const {
return compare(o) > 0;
}
} // namespace aapt
} // namespace android
#endif // AAPT_LOCALE_VALUE_H
#endif // ANDROIDFW_LOCALE_VALUE_H

View File

@@ -19,6 +19,7 @@
#include <cstdlib>
#include <memory>
#include <vector>
#include "android-base/macros.h"
@@ -116,6 +117,8 @@ std::u16string Utf8ToUtf16(const StringPiece& utf8);
// Converts a UTF-16 string to a UTF-8 string.
std::string Utf16ToUtf8(const StringPiece16& utf16);
std::vector<std::string> SplitAndLowercase(const android::StringPiece& str, char sep);
} // namespace util
} // namespace android

View File

@@ -14,18 +14,16 @@
* limitations under the License.
*/
#include "ConfigDescription.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/StringPiece.h"
#include "android-base/logging.h"
#include "gtest/gtest.h"
#include <string>
#include "androidfw/StringPiece.h"
#include "SdkConstants.h"
#include "test/Test.h"
using android::StringPiece;
namespace aapt {
namespace android {
static ::testing::AssertionResult TestParse(
const StringPiece& input, ConfigDescription* config = nullptr) {
@@ -140,9 +138,13 @@ TEST(ConfigDescriptionTest, ParseVrAttribute) {
EXPECT_EQ(std::string("vrheadset-v26"), config.toString().string());
}
TEST(ConfigDescriptionTest, RangeQualifiersDoNotConflict) {
using test::ParseConfigOrDie;
static inline ConfigDescription ParseConfigOrDie(const android::StringPiece& str) {
ConfigDescription config;
CHECK(ConfigDescription::Parse(str, &config)) << "invalid configuration: " << str;
return config;
}
TEST(ConfigDescriptionTest, RangeQualifiersDoNotConflict) {
EXPECT_FALSE(ParseConfigOrDie("large").ConflictsWith(ParseConfigOrDie("normal-land")));
EXPECT_FALSE(ParseConfigOrDie("long-hdpi").ConflictsWith(ParseConfigOrDie("xhdpi")));
EXPECT_FALSE(ParseConfigOrDie("sw600dp").ConflictsWith(ParseConfigOrDie("sw700dp")));
@@ -152,4 +154,4 @@ TEST(ConfigDescriptionTest, RangeQualifiersDoNotConflict) {
EXPECT_FALSE(ParseConfigOrDie("600x400").ConflictsWith(ParseConfigOrDie("300x200")));
}
} // namespace aapt
} // namespace android

View File

@@ -14,15 +14,14 @@
* limitations under the License.
*/
#include "Locale.h"
#include "androidfw/Locale.h"
#include "androidfw/Util.h"
#include <string>
#include "gtest/gtest.h"
#include "util/Util.h"
namespace aapt {
namespace android {
static ::testing::AssertionResult TestLanguage(const char* input,
const char* lang) {
@@ -93,4 +92,4 @@ TEST(ConfigDescriptionTest, ParseLanguage) {
EXPECT_TRUE(TestLanguageRegion("fr-rCA", "fr", "CA"));
}
} // namespace aapt
} // namespace android

View File

@@ -120,7 +120,6 @@ cc_library_host_static {
"util/BigBuffer.cpp",
"util/Files.cpp",
"util/Util.cpp",
"ConfigDescription.cpp",
"Debug.cpp",
"DominatorTree.cpp",
"Flags.cpp",
@@ -130,7 +129,6 @@ cc_library_host_static {
"java/ManifestClassGenerator.cpp",
"java/ProguardRules.cpp",
"LoadedApk.cpp",
"Locale.cpp",
"Resource.cpp",
"ResourceParser.cpp",
"ResourceTable.cpp",

View File

@@ -19,8 +19,9 @@
#include <algorithm>
#include "android-base/logging.h"
#include "androidfw/ConfigDescription.h"
#include "ConfigDescription.h"
using ::android::ConfigDescription;
namespace aapt {

View File

@@ -23,6 +23,8 @@
#include "test/Test.h"
#include "util/Util.h"
using ::android::ConfigDescription;
namespace aapt {
namespace {

View File

@@ -24,10 +24,10 @@
#include <tuple>
#include <vector>
#include "androidfw/ConfigDescription.h"
#include "androidfw/StringPiece.h"
#include "utils/JenkinsHash.h"
#include "ConfigDescription.h"
#include "Source.h"
namespace aapt {
@@ -171,7 +171,7 @@ struct ResourceFile {
ResourceName name;
// Configuration
ConfigDescription config;
android::ConfigDescription config;
// Type
Type type;
@@ -189,7 +189,7 @@ struct ResourceFile {
*/
struct ResourceKey {
ResourceName name;
ConfigDescription config;
android::ConfigDescription config;
};
bool operator<(const ResourceKey& a, const ResourceKey& b);
@@ -201,16 +201,16 @@ bool operator<(const ResourceKey& a, const ResourceKey& b);
*/
struct ResourceKeyRef {
ResourceNameRef name;
ConfigDescription config;
android::ConfigDescription config;
ResourceKeyRef() = default;
ResourceKeyRef(const ResourceNameRef& n, const ConfigDescription& c)
ResourceKeyRef(const ResourceNameRef& n, const android::ConfigDescription& c)
: name(n), config(c) {}
/**
* Prevent taking a reference to a temporary. This is bad.
*/
ResourceKeyRef(ResourceName&& n, const ConfigDescription& c) = delete;
ResourceKeyRef(ResourceName&& n, const android::ConfigDescription& c) = delete;
};
bool operator<(const ResourceKeyRef& a, const ResourceKeyRef& b);

View File

@@ -34,6 +34,7 @@
using ::aapt::ResourceUtils::StringBuilder;
using ::aapt::text::Utf8Iterator;
using ::android::ConfigDescription;
using ::android::StringPiece;
namespace aapt {

View File

@@ -20,9 +20,9 @@
#include <memory>
#include "android-base/macros.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/StringPiece.h"
#include "ConfigDescription.h"
#include "Diagnostics.h"
#include "ResourceTable.h"
#include "ResourceValues.h"
@@ -53,7 +53,7 @@ struct ResourceParserOptions {
class ResourceParser {
public:
ResourceParser(IDiagnostics* diag, ResourceTable* table, const Source& source,
const ConfigDescription& config,
const android::ConfigDescription& config,
const ResourceParserOptions& options = {});
bool Parse(xml::XmlPullParser* parser);
@@ -110,7 +110,7 @@ class ResourceParser {
IDiagnostics* diag_;
ResourceTable* table_;
Source source_;
ConfigDescription config_;
android::ConfigDescription config_;
ResourceParserOptions options_;
};

View File

@@ -29,6 +29,7 @@
using ::aapt::io::StringInputStream;
using ::aapt::test::StrValueEq;
using ::aapt::test::ValueEq;
using ::android::ConfigDescription;
using ::android::Res_value;
using ::android::ResTable_map;
using ::android::StringPiece;

View File

@@ -23,9 +23,9 @@
#include "android-base/logging.h"
#include "android-base/stringprintf.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/ResourceTypes.h"
#include "ConfigDescription.h"
#include "NameMangler.h"
#include "ResourceValues.h"
#include "ValueVisitor.h"
@@ -33,6 +33,7 @@
#include "util/Util.h"
using ::aapt::text::IsValidResourceEntryName;
using ::android::ConfigDescription;
using ::android::StringPiece;
using ::android::base::StringPrintf;

View File

@@ -17,7 +17,6 @@
#ifndef AAPT_RESOURCE_TABLE_H
#define AAPT_RESOURCE_TABLE_H
#include "ConfigDescription.h"
#include "Diagnostics.h"
#include "Resource.h"
#include "ResourceValues.h"
@@ -26,6 +25,7 @@
#include "io/File.h"
#include "android-base/macros.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/StringPiece.h"
#include <functional>
@@ -66,7 +66,7 @@ struct Overlayable {
class ResourceConfigValue {
public:
// The configuration for which this value is defined.
const ConfigDescription config;
const android::ConfigDescription config;
// The product for which this value is defined.
const std::string product;
@@ -74,7 +74,7 @@ class ResourceConfigValue {
// The actual Value.
std::unique_ptr<Value> value;
ResourceConfigValue(const ConfigDescription& config, const android::StringPiece& product)
ResourceConfigValue(const android::ConfigDescription& config, const android::StringPiece& product)
: config(config), product(product.to_string()) {}
private:
@@ -103,14 +103,14 @@ class ResourceEntry {
explicit ResourceEntry(const android::StringPiece& name) : name(name.to_string()) {}
ResourceConfigValue* FindValue(const ConfigDescription& config);
ResourceConfigValue* FindValue(const android::ConfigDescription& config);
ResourceConfigValue* FindValue(const ConfigDescription& config,
ResourceConfigValue* FindValue(const android::ConfigDescription& config,
const android::StringPiece& product);
ResourceConfigValue* FindOrCreateValue(const ConfigDescription& config,
ResourceConfigValue* FindOrCreateValue(const android::ConfigDescription& config,
const android::StringPiece& product);
std::vector<ResourceConfigValue*> FindAllValues(const ConfigDescription& config);
std::vector<ResourceConfigValue*> FindAllValues(const android::ConfigDescription& config);
template <typename Func>
std::vector<ResourceConfigValue*> FindValuesIf(Func f) {
@@ -182,29 +182,30 @@ class ResourceTable {
// When a collision of resources occurs, this method decides which value to keep.
static CollisionResult ResolveValueCollision(Value* existing, Value* incoming);
bool AddResource(const ResourceNameRef& name, const ConfigDescription& config,
bool AddResource(const ResourceNameRef& name, const android::ConfigDescription& config,
const android::StringPiece& product, std::unique_ptr<Value> value,
IDiagnostics* diag);
bool AddResourceWithId(const ResourceNameRef& name, const ResourceId& res_id,
const ConfigDescription& config, const android::StringPiece& product,
std::unique_ptr<Value> value, IDiagnostics* diag);
const android::ConfigDescription& config,
const android::StringPiece& product, std::unique_ptr<Value> value,
IDiagnostics* diag);
bool AddFileReference(const ResourceNameRef& name, const ConfigDescription& config,
bool AddFileReference(const ResourceNameRef& name, const android::ConfigDescription& config,
const Source& source, const android::StringPiece& path, IDiagnostics* diag);
bool AddFileReferenceMangled(const ResourceNameRef& name, const ConfigDescription& config,
bool AddFileReferenceMangled(const ResourceNameRef& name, const android::ConfigDescription& config,
const Source& source, const android::StringPiece& path,
io::IFile* file, IDiagnostics* diag);
// Same as AddResource, but doesn't verify the validity of the name. This is used
// when loading resources from an existing binary resource table that may have mangled names.
bool AddResourceMangled(const ResourceNameRef& name, const ConfigDescription& config,
bool AddResourceMangled(const ResourceNameRef& name, const android::ConfigDescription& config,
const android::StringPiece& product, std::unique_ptr<Value> value,
IDiagnostics* diag);
bool AddResourceWithIdMangled(const ResourceNameRef& name, const ResourceId& id,
const ConfigDescription& config,
const android::ConfigDescription& config,
const android::StringPiece& product, std::unique_ptr<Value> value,
IDiagnostics* diag);
@@ -277,11 +278,12 @@ class ResourceTable {
IDiagnostics* diag);
bool AddResourceImpl(const ResourceNameRef& name, const ResourceId& res_id,
const ConfigDescription& config, const android::StringPiece& product,
std::unique_ptr<Value> value, NameValidator name_validator,
const CollisionResolverFunc& conflict_resolver, IDiagnostics* diag);
const android::ConfigDescription& config,
const android::StringPiece& product, std::unique_ptr<Value> value,
NameValidator name_validator, const CollisionResolverFunc& conflict_resolver,
IDiagnostics* diag);
bool AddFileReferenceImpl(const ResourceNameRef& name, const ConfigDescription& config,
bool AddFileReferenceImpl(const ResourceNameRef& name, const android::ConfigDescription& config,
const Source& source, const android::StringPiece& path, io::IFile* file,
NameValidator name_validator, IDiagnostics* diag);

View File

@@ -24,6 +24,7 @@
#include <ostream>
#include <string>
using ::android::ConfigDescription;
using ::android::StringPiece;
using ::testing::Eq;
using ::testing::NotNull;

View File

@@ -31,6 +31,7 @@
#include "util/Util.h"
using ::aapt::text::Utf8Iterator;
using ::android::ConfigDescription;
using ::android::StringPiece;
using ::android::StringPiece16;
using ::android::base::StringPrintf;

View File

@@ -20,6 +20,7 @@
#include <functional>
#include <memory>
#include "androidfw/ConfigDescription.h"
#include "androidfw/ResourceTypes.h"
#include "androidfw/StringPiece.h"
@@ -219,7 +220,8 @@ std::string BuildResourceFileName(const ResourceFile& res_file,
// Parses the binary form of a resource value. `type` is used as a hint to know when a value is
// an ID versus a False boolean value, etc. `config` is for sorting strings in the string pool.
std::unique_ptr<Item> ParseBinaryResValue(const ResourceType& type, const ConfigDescription& config,
std::unique_ptr<Item> ParseBinaryResValue(const ResourceType& type,
const android::ConfigDescription& config,
const android::ResStringPool& src_pool,
const android::Res_value& res_value,
StringPool* dst_pool);

View File

@@ -24,9 +24,9 @@
#include <vector>
#include "android-base/macros.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/StringPiece.h"
#include "ConfigDescription.h"
#include "Diagnostics.h"
#include "util/BigBuffer.h"
@@ -60,12 +60,12 @@ class StringPool {
kLowPriority = 0xffffffffu,
};
uint32_t priority = kNormalPriority;
ConfigDescription config;
android::ConfigDescription config;
Context() = default;
Context(uint32_t p, const ConfigDescription& c) : priority(p), config(c) {}
Context(uint32_t p, const android::ConfigDescription& c) : priority(p), config(c) {}
explicit Context(uint32_t p) : priority(p) {}
explicit Context(const ConfigDescription& c) : priority(kNormalPriority), config(c) {
explicit Context(const android::ConfigDescription& c) : priority(kNormalPriority), config(c) {
}
};

View File

@@ -21,11 +21,11 @@
#include "android-base/errors.h"
#include "android-base/file.h"
#include "android-base/utf8.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/StringPiece.h"
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/io/zero_copy_stream_impl_lite.h"
#include "ConfigDescription.h"
#include "Diagnostics.h"
#include "Flags.h"
#include "ResourceParser.h"
@@ -50,6 +50,7 @@
using ::aapt::io::FileInputStream;
using ::aapt::text::Printer;
using ::android::ConfigDescription;
using ::android::StringPiece;
using ::android::base::SystemErrorCodeToString;
using ::google::protobuf::io::CopyingOutputStreamAdaptor;

View File

@@ -24,13 +24,13 @@
#include "android-base/errors.h"
#include "android-base/file.h"
#include "android-base/stringprintf.h"
#include "androidfw/Locale.h"
#include "androidfw/StringPiece.h"
#include "AppInfo.h"
#include "Debug.h"
#include "Flags.h"
#include "LoadedApk.h"
#include "Locale.h"
#include "NameMangler.h"
#include "ResourceUtils.h"
#include "ResourceValues.h"
@@ -68,6 +68,7 @@
#include "xml/XmlDom.h"
using ::aapt::io::FileInputStream;
using ::android::ConfigDescription;
using ::android::StringPiece;
using ::android::base::StringPrintf;

View File

@@ -20,6 +20,7 @@
#include "android-base/file.h"
#include "android-base/stringprintf.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/ResourceTypes.h"
#include "androidfw/StringPiece.h"
@@ -45,6 +46,7 @@
using ::aapt::configuration::Abi;
using ::aapt::configuration::OutputArtifact;
using ::android::ConfigDescription;
using ::android::ResTable_config;
using ::android::StringPiece;
using ::android::base::ReadFileToString;

View File

@@ -19,15 +19,17 @@
#include <vector>
#include "android-base/logging.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/Locale.h"
#include "ConfigDescription.h"
#include "Locale.h"
#include "ResourceUtils.h"
#include "ValueVisitor.h"
#include "split/TableSplitter.h"
#include "util/Maybe.h"
#include "util/Util.h"
using ::android::ConfigDescription;
using ::android::LocaleValue;
using ::android::StringPiece;
namespace aapt {

View File

@@ -24,6 +24,7 @@
#include "compile/Pseudolocalizer.h"
#include "util/Util.h"
using ::android::ConfigDescription;
using ::android::StringPiece;
using ::android::StringPiece16;

View File

@@ -19,6 +19,8 @@
#include "test/Test.h"
#include "util/Util.h"
using ::android::ConfigDescription;
namespace aapt {
TEST(PseudolocaleGeneratorTest, PseudolocalizeStyledString) {

View File

@@ -25,8 +25,8 @@
#include "android-base/file.h"
#include "android-base/logging.h"
#include "androidfw/ConfigDescription.h"
#include "ConfigDescription.h"
#include "Diagnostics.h"
#include "ResourceUtils.h"
#include "configuration/ConfigurationParser.internal.h"
@@ -40,6 +40,8 @@
#include "xml/XmlDom.h"
#include "xml/XmlUtil.h"
using ::android::ConfigDescription;
namespace aapt {
namespace {

View File

@@ -22,7 +22,8 @@
#include <unordered_map>
#include <vector>
#include "ConfigDescription.h"
#include "androidfw/ConfigDescription.h"
#include "Diagnostics.h"
#include "util/Maybe.h"
@@ -109,8 +110,8 @@ struct OutputArtifact {
std::string name;
int version;
std::vector<Abi> abis;
std::vector<ConfigDescription> screen_densities;
std::vector<ConfigDescription> locales;
std::vector<android::ConfigDescription> screen_densities;
std::vector<android::ConfigDescription> locales;
Maybe<AndroidSdk> android_sdk;
std::vector<DeviceFeature> features;
std::vector<GlTexture> textures;

View File

@@ -17,6 +17,8 @@
#ifndef AAPT2_CONFIGURATIONPARSER_INTERNAL_H
#define AAPT2_CONFIGURATIONPARSER_INTERNAL_H
#include "androidfw/ConfigDescription.h"
#include "configuration/ConfigurationParser.h"
#include <algorithm>
@@ -148,8 +150,8 @@ struct PostProcessingConfiguration {
Maybe<std::string> artifact_format;
Group<Abi> abi_groups;
Group<ConfigDescription> screen_density_groups;
Group<ConfigDescription> locale_groups;
Group<android::ConfigDescription> screen_density_groups;
Group<android::ConfigDescription> locale_groups;
Group<DeviceFeature> device_feature_groups;
Group<GlTexture> gl_texture_groups;
Entry<AndroidSdk> android_sdks;

View File

@@ -26,6 +26,8 @@
#include "test/Test.h"
#include "xml/XmlDom.h"
using ::android::ConfigDescription;
namespace aapt {
namespace configuration {

View File

@@ -16,9 +16,10 @@
#include "filter/ConfigFilter.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/ResourceTypes.h"
#include "ConfigDescription.h"
using ::android::ConfigDescription;
namespace aapt {

View File

@@ -20,7 +20,7 @@
#include <set>
#include <utility>
#include "ConfigDescription.h"
#include "androidfw/ConfigDescription.h"
namespace aapt {
@@ -34,7 +34,7 @@ class IConfigFilter {
/**
* Returns true if the filter matches the configuration, false otherwise.
*/
virtual bool Match(const ConfigDescription& config) const = 0;
virtual bool Match(const android::ConfigDescription& config) const = 0;
};
/**
@@ -46,12 +46,12 @@ class IConfigFilter {
*/
class AxisConfigFilter : public IConfigFilter {
public:
void AddConfig(ConfigDescription config);
void AddConfig(android::ConfigDescription config);
bool Match(const ConfigDescription& config) const override;
bool Match(const android::ConfigDescription& config) const override;
private:
std::set<std::pair<ConfigDescription, uint32_t>> configs_;
std::set<std::pair<android::ConfigDescription, uint32_t>> configs_;
uint32_t config_mask_ = 0;
};

View File

@@ -20,6 +20,7 @@
#include <string>
#include "android-base/macros.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/ResourceTypes.h"
#include "ResourceTable.h"
@@ -54,22 +55,28 @@ class BinaryResourceParser {
bool ParseType(const ResourceTablePackage* package, const android::ResChunk_header* chunk);
bool ParseLibrary(const android::ResChunk_header* chunk);
std::unique_ptr<Item> ParseValue(const ResourceNameRef& name, const ConfigDescription& config,
std::unique_ptr<Item> ParseValue(const ResourceNameRef& name,
const android::ConfigDescription& config,
const android::Res_value& value);
std::unique_ptr<Value> ParseMapEntry(const ResourceNameRef& name, const ConfigDescription& config,
std::unique_ptr<Value> ParseMapEntry(const ResourceNameRef& name,
const android::ConfigDescription& config,
const android::ResTable_map_entry* map);
std::unique_ptr<Style> ParseStyle(const ResourceNameRef& name, const ConfigDescription& config,
std::unique_ptr<Style> ParseStyle(const ResourceNameRef& name,
const android::ConfigDescription& config,
const android::ResTable_map_entry* map);
std::unique_ptr<Attribute> ParseAttr(const ResourceNameRef& name, const ConfigDescription& config,
std::unique_ptr<Attribute> ParseAttr(const ResourceNameRef& name,
const android::ConfigDescription& config,
const android::ResTable_map_entry* map);
std::unique_ptr<Array> ParseArray(const ResourceNameRef& name, const ConfigDescription& config,
std::unique_ptr<Array> ParseArray(const ResourceNameRef& name,
const android::ConfigDescription& config,
const android::ResTable_map_entry* map);
std::unique_ptr<Plural> ParsePlural(const ResourceNameRef& name, const ConfigDescription& config,
std::unique_ptr<Plural> ParsePlural(const ResourceNameRef& name,
const android::ConfigDescription& config,
const android::ResTable_map_entry* map);
/**

View File

@@ -19,13 +19,15 @@
#include "android-base/logging.h"
#include "android-base/macros.h"
#include "androidfw/ResourceTypes.h"
#include "androidfw/Locale.h"
#include "Locale.h"
#include "ResourceTable.h"
#include "ResourceUtils.h"
#include "ResourceValues.h"
#include "ValueVisitor.h"
using ::android::ConfigDescription;
using ::android::LocaleValue;
using ::android::ResStringPool;
namespace aapt {

View File

@@ -18,9 +18,9 @@
#define AAPT_FORMAT_PROTO_PROTODESERIALIZE_H
#include "android-base/macros.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/ResourceTypes.h"
#include "ConfigDescription.h"
#include "Configuration.pb.h"
#include "ResourceTable.h"
#include "ResourceValues.h"
@@ -34,14 +34,15 @@ namespace aapt {
std::unique_ptr<Value> DeserializeValueFromPb(const pb::Value& pb_value,
const android::ResStringPool& src_pool,
const ConfigDescription& config,
const android::ConfigDescription& config,
StringPool* value_pool, io::IFileCollection* files,
std::string* out_error);
std::unique_ptr<Item> DeserializeItemFromPb(const pb::Item& pb_item,
const android::ResStringPool& src_pool,
const ConfigDescription& config, StringPool* value_pool,
io::IFileCollection* files, std::string* out_error);
const android::ConfigDescription& config,
StringPool* value_pool, io::IFileCollection* files,
std::string* out_error);
std::unique_ptr<xml::XmlResource> DeserializeXmlResourceFromPb(const pb::XmlNode& pb_node,
std::string* out_error);
@@ -49,8 +50,8 @@ std::unique_ptr<xml::XmlResource> DeserializeXmlResourceFromPb(const pb::XmlNode
bool DeserializeXmlFromPb(const pb::XmlNode& pb_node, xml::Element* out_el, StringPool* value_pool,
std::string* out_error);
bool DeserializeConfigFromPb(const pb::Configuration& pb_config, ConfigDescription* out_config,
std::string* out_error);
bool DeserializeConfigFromPb(const pb::Configuration& pb_config,
android::ConfigDescription* out_config, std::string* out_error);
// Optional io::IFileCollection used to lookup references to files in the ResourceTable.
bool DeserializeTableFromPb(const pb::ResourceTable& pb_table, io::IFileCollection* files,

View File

@@ -19,6 +19,8 @@
#include "ValueVisitor.h"
#include "util/BigBuffer.h"
using android::ConfigDescription;
namespace aapt {
void SerializeStringPoolToPb(const StringPool& pool, pb::StringPool* out_pb_pool, IDiagnostics* diag) {

View File

@@ -18,8 +18,8 @@
#define AAPT_FORMAT_PROTO_PROTOSERIALIZE_H
#include "android-base/macros.h"
#include "androidfw/ConfigDescription.h"
#include "ConfigDescription.h"
#include "Configuration.pb.h"
#include "ResourceTable.h"
#include "ResourceValues.h"
@@ -49,7 +49,7 @@ void SerializeXmlResourceToPb(const xml::XmlResource& resource, pb::XmlNode* out
void SerializeStringPoolToPb(const StringPool& pool, pb::StringPool* out_pb_pool, IDiagnostics* diag);
// Serializes a ConfigDescription into its protobuf representation.
void SerializeConfig(const ConfigDescription& config, pb::Configuration* out_pb_config);
void SerializeConfig(const android::ConfigDescription& config, pb::Configuration* out_pb_config);
// Serializes a ResourceTable into its protobuf representation.
void SerializeTableToPb(const ResourceTable& table, pb::ResourceTable* out_table, IDiagnostics* diag);

View File

@@ -20,6 +20,7 @@
#include "format/proto/ProtoDeserialize.h"
#include "test/Test.h"
using ::android::ConfigDescription;
using ::android::StringPiece;
using ::testing::Eq;
using ::testing::IsEmpty;

View File

@@ -21,6 +21,7 @@
#include "test/Test.h"
using ::aapt::io::StringOutputStream;
using ::android::ConfigDescription;
using ::testing::HasSubstr;
using ::testing::Not;

View File

@@ -20,14 +20,16 @@
#include "android-base/logging.h"
#include "ConfigDescription.h"
#include "ResourceTable.h"
#include "SdkConstants.h"
#include "ValueVisitor.h"
using android::ConfigDescription;
namespace aapt {
bool ShouldGenerateVersionedResource(const ResourceEntry* entry, const ConfigDescription& config,
bool ShouldGenerateVersionedResource(const ResourceEntry* entry,
const ConfigDescription& config,
const ApiVersion sdk_version_to_generate) {
// We assume the caller is trying to generate a version greater than the current configuration.
CHECK(sdk_version_to_generate > config.sdkVersion);

View File

@@ -16,9 +16,11 @@
#include "link/Linkers.h"
#include "ConfigDescription.h"
#include "androidfw/ConfigDescription.h"
#include "test/Test.h"
using ::android::ConfigDescription;
using ::testing::NotNull;
namespace aapt {

View File

@@ -21,6 +21,7 @@
#include <unordered_set>
#include "android-base/macros.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/StringPiece.h"
#include "Resource.h"
@@ -32,7 +33,6 @@ namespace aapt {
class ResourceTable;
class ResourceEntry;
struct ConfigDescription;
// Defines the context in which a resource value is defined. Most resources are defined with the
// implicit package name of their compilation context. Understanding the package name of a resource
@@ -43,12 +43,14 @@ struct CallSite {
// Determines whether a versioned resource should be created. If a versioned resource already
// exists, it takes precedence.
bool ShouldGenerateVersionedResource(const ResourceEntry* entry, const ConfigDescription& config,
bool ShouldGenerateVersionedResource(const ResourceEntry* entry,
const android::ConfigDescription& config,
const ApiVersion sdk_version_to_generate);
// Finds the next largest ApiVersion of the config which is identical to the given config except
// for sdkVersion.
ApiVersion FindNextApiVersionForConfig(const ResourceEntry* entry, const ConfigDescription& config);
ApiVersion FindNextApiVersionForConfig(const ResourceEntry* entry,
const android::ConfigDescription& config);
class AutoVersioner : public IResourceTableConsumer {
public:

View File

@@ -14,12 +14,16 @@
* limitations under the License.
*/
#include "androidfw/Locale.h"
#include "link/NoDefaultResourceRemover.h"
#include <algorithm>
#include "ResourceTable.h"
using android::ConfigDescription;
namespace aapt {
static bool IsDefaultConfigRequired(const ConfigDescription& config) {

View File

@@ -18,6 +18,8 @@
#include "test/Test.h"
using ::android::ConfigDescription;
namespace aapt {
TEST(ProductFilterTest, SelectTwoProducts) {

View File

@@ -20,6 +20,7 @@
#include <regex>
#include <string>
#include "androidfw/ConfigDescription.h"
#include "androidfw/StringPiece.h"
#include "LoadedApk.h"
@@ -43,6 +44,7 @@ using ::aapt::configuration::AndroidSdk;
using ::aapt::configuration::OutputArtifact;
using ::aapt::xml::kSchemaAndroid;
using ::aapt::xml::XmlResource;
using ::android::ConfigDescription;
using ::android::StringPiece;
/**

View File

@@ -22,6 +22,8 @@
#include <unordered_set>
#include <vector>
#include "androidfw/ConfigDescription.h"
#include "Diagnostics.h"
#include "LoadedApk.h"
#include "configuration/ConfigurationParser.h"
@@ -66,7 +68,7 @@ class MultiApkGenerator {
/**
* Adds the <screen> elements to the parent node for the provided density configuration.
*/
void AddScreens(const ConfigDescription& config, xml::Element* parent);
void AddScreens(const android::ConfigDescription& config, xml::Element* parent);
LoadedApk* apk_;
IAaptContext* context_;

View File

@@ -31,6 +31,8 @@
#include "test/Context.h"
#include "test/Test.h"
using ::android::ConfigDescription;
namespace aapt {
namespace {

View File

@@ -21,6 +21,8 @@
#include "DominatorTree.h"
#include "ResourceTable.h"
using android::ConfigDescription;
namespace aapt {
namespace {

View File

@@ -20,6 +20,7 @@
#include "test/Test.h"
using ::aapt::test::HasValue;
using ::android::ConfigDescription;
using ::testing::Not;
namespace aapt {

View File

@@ -21,6 +21,8 @@
#include "ResourceTable.h"
using android::ConfigDescription;
namespace aapt {
template <typename Iterator, typename Pred>

View File

@@ -21,15 +21,16 @@
#include "android-base/logging.h"
#include "android-base/stringprintf.h"
#include "androidfw/AssetManager.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/ResourceTypes.h"
#include "ConfigDescription.h"
#include "NameMangler.h"
#include "Resource.h"
#include "ResourceUtils.h"
#include "ValueVisitor.h"
#include "util/Util.h"
using ::android::ConfigDescription;
using ::android::StringPiece;
using ::android::StringPiece16;

View File

@@ -24,11 +24,13 @@
#include <vector>
#include "android-base/logging.h"
#include "androidfw/ConfigDescription.h"
#include "ConfigDescription.h"
#include "ResourceTable.h"
#include "util/Util.h"
using ::android::ConfigDescription;
namespace aapt {
using ConfigClaimedMap = std::unordered_map<ResourceConfigValue*, bool>;

View File

@@ -20,8 +20,8 @@
#include <set>
#include <vector>
#include "android-base/macros.h"
#include "androidfw/ConfigDescription.h"
#include "ConfigDescription.h"
#include "ResourceTable.h"
#include "filter/ConfigFilter.h"
#include "process/IResourceTableConsumer.h"
@@ -29,7 +29,7 @@
namespace aapt {
struct SplitConstraints {
std::set<ConfigDescription> configs;
std::set<android::ConfigDescription> configs;
};
struct TableSplitterOptions {

View File

@@ -18,6 +18,8 @@
#include "test/Test.h"
using ::android::ConfigDescription;
namespace aapt {
TEST(TableSplitterTest, NoSplitPreferredDensity) {

View File

@@ -28,6 +28,7 @@ using ::aapt::configuration::AndroidSdk;
using ::aapt::configuration::ConfiguredArtifact;
using ::aapt::configuration::GetOrCreateGroup;
using ::aapt::io::StringInputStream;
using ::android::ConfigDescription;
using ::android::StringPiece;
namespace aapt {

View File

@@ -20,6 +20,7 @@
#include <memory>
#include "android-base/macros.h"
#include "androidfw/ConfigDescription.h"
#include "Resource.h"
#include "ResourceTable.h"
@@ -40,7 +41,8 @@ class ResourceTableBuilder {
ResourceTableBuilder& SetPackageId(const android::StringPiece& package_name, uint8_t id);
ResourceTableBuilder& AddSimple(const android::StringPiece& name, const ResourceId& id = {});
ResourceTableBuilder& AddSimple(const android::StringPiece& name, const ConfigDescription& config,
ResourceTableBuilder& AddSimple(const android::StringPiece& name,
const android::ConfigDescription& config,
const ResourceId& id = {});
ResourceTableBuilder& AddReference(const android::StringPiece& name,
const android::StringPiece& ref);
@@ -51,7 +53,8 @@ class ResourceTableBuilder {
ResourceTableBuilder& AddString(const android::StringPiece& name, const ResourceId& id,
const android::StringPiece& str);
ResourceTableBuilder& AddString(const android::StringPiece& name, const ResourceId& id,
const ConfigDescription& config, const android::StringPiece& str);
const android::ConfigDescription& config,
const android::StringPiece& str);
ResourceTableBuilder& AddFileReference(const android::StringPiece& name,
const android::StringPiece& path,
io::IFile* file = nullptr);
@@ -60,12 +63,13 @@ class ResourceTableBuilder {
io::IFile* file = nullptr);
ResourceTableBuilder& AddFileReference(const android::StringPiece& name,
const android::StringPiece& path,
const ConfigDescription& config,
const android::ConfigDescription& config,
io::IFile* file = nullptr);
ResourceTableBuilder& AddValue(const android::StringPiece& name, std::unique_ptr<Value> value);
ResourceTableBuilder& AddValue(const android::StringPiece& name, const ResourceId& id,
std::unique_ptr<Value> value);
ResourceTableBuilder& AddValue(const android::StringPiece& name, const ConfigDescription& config,
ResourceTableBuilder& AddValue(const android::StringPiece& name,
const android::ConfigDescription& config,
const ResourceId& id, std::unique_ptr<Value> value);
ResourceTableBuilder& SetSymbolState(const android::StringPiece& name, const ResourceId& id,
Visibility::Level level, bool allow_new = false);
@@ -163,8 +167,8 @@ class ArtifactBuilder {
ArtifactBuilder& SetName(const std::string& name);
ArtifactBuilder& SetVersion(int version);
ArtifactBuilder& AddAbi(configuration::Abi abi);
ArtifactBuilder& AddDensity(const ConfigDescription& density);
ArtifactBuilder& AddLocale(const ConfigDescription& locale);
ArtifactBuilder& AddDensity(const android::ConfigDescription& density);
ArtifactBuilder& AddLocale(const android::ConfigDescription& locale);
ArtifactBuilder& SetAndroidSdk(int min_sdk);
configuration::OutputArtifact Build();

View File

@@ -16,6 +16,8 @@
#include "test/Common.h"
using android::ConfigDescription;
namespace aapt {
namespace test {

View File

@@ -21,11 +21,11 @@
#include "android-base/logging.h"
#include "android-base/macros.h"
#include "androidfw/ConfigDescription.h"
#include "androidfw/StringPiece.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "ConfigDescription.h"
#include "Debug.h"
#include "ResourceTable.h"
#include "ResourceUtils.h"
@@ -45,15 +45,15 @@ inline ResourceName ParseNameOrDie(const android::StringPiece& str) {
return ref.ToResourceName();
}
inline ConfigDescription ParseConfigOrDie(const android::StringPiece& str) {
ConfigDescription config;
CHECK(ConfigDescription::Parse(str, &config)) << "invalid configuration: " << str;
inline android::ConfigDescription ParseConfigOrDie(const android::StringPiece& str) {
android::ConfigDescription config;
CHECK(android::ConfigDescription::Parse(str, &config)) << "invalid configuration: " << str;
return config;
}
template <typename T = Value>
T* GetValueForConfigAndProduct(ResourceTable* table, const android::StringPiece& res_name,
const ConfigDescription& config,
const android::ConfigDescription& config,
const android::StringPiece& product) {
Maybe<ResourceTable::SearchResult> result = table->FindResource(ParseNameOrDie(res_name));
if (result) {
@@ -68,12 +68,12 @@ T* GetValueForConfigAndProduct(ResourceTable* table, const android::StringPiece&
template <>
Value* GetValueForConfigAndProduct<Value>(ResourceTable* table,
const android::StringPiece& res_name,
const ConfigDescription& config,
const android::ConfigDescription& config,
const android::StringPiece& product);
template <typename T = Value>
T* GetValueForConfig(ResourceTable* table, const android::StringPiece& res_name,
const ConfigDescription& config) {
const android::ConfigDescription& config) {
return GetValueForConfigAndProduct<T>(table, res_name, config, {});
}