@Test public void testIsFrameworkResource() { assertThat(ResourceIds.isFrameworkResource(0x01000000)).isTrue(); assertThat(ResourceIds.isFrameworkResource(0x7F000000)).isFalse(); }
public void record(int resId, String type, String name) { TypeTracker typeTracker = typeInfo.get(type); if (typeTracker == null) { typeTracker = new TypeTracker(ResourceIds.getTypeIdentifier(resId)); typeInfo.put(type, typeTracker); } typeTracker.record(ResourceIds.getEntryIdentifier(resId)); }
void addResource(int resId, String type, String name) { if (ResourceIds.isFrameworkResource(resId)) { androidResourceIdGenerator.record(resId, type, name); } ResName resName = new ResName(packageName, type, name); int resIdPackageIdentifier = ResourceIds.getPackageIdentifier(resId); if (getPackageIdentifier() == 0) { this.packageIdentifier = resIdPackageIdentifier; } else if (getPackageIdentifier() != resIdPackageIdentifier) { throw new IllegalArgumentException("Incompatible package for " + packageName + ":" + type + "/" + name + " with resId " + resIdPackageIdentifier + " to ResourceIndex with packageIdentifier " + getPackageIdentifier()); } ResName existingEntry = resourceTable.put(resId, resName); if (existingEntry != null && !existingEntry.equals(resName)) { throw new IllegalArgumentException("ResId " + Integer.toHexString(resId) + " mapped to both " + resName + " and " + existingEntry); } }
public int generate(String type, String name) { TypeTracker typeTracker = typeInfo.get(type); if (typeTracker == null) { typeTracker = new TypeTracker(getNextFreeTypeIdentifier()); typeInfo.put(type, typeTracker); } return ResourceIds.makeIdentifer(packageIdentifier, typeTracker.getTypeIdentifier(), typeTracker.getFreeIdentifier()); }
private PackageResourceTable pickFor(int resId) { for (PackageResourceTable resourceTable : resourceTables.values()) { if (resourceTable.getPackageIdentifier() == ResourceIds.getPackageIdentifier(resId)) { return resourceTable; } } return EMPTY_RESOURCE_TABLE; }
@Test public void testGetTypeIdentifier() { assertThat(ResourceIds.getTypeIdentifier(0x01019876)).isEqualTo(0x01); assertThat(ResourceIds.getTypeIdentifier(0x7F781234)).isEqualTo(0x78); }
@Test public void testGetEntryIdentifier() { assertThat(ResourceIds.getEntryIdentifier(0x01019876)).isEqualTo(0x9876); assertThat(ResourceIds.getEntryIdentifier(0x7F781234)).isEqualTo(0x1234); }
@Test public void testMakeIdentifier() { assertThat(ResourceIds.makeIdentifer(0x01, 0x01, 0x9876)).isEqualTo(0x01019876); assertThat(ResourceIds.makeIdentifer(0x7F, 0x78, 0x1234)).isEqualTo(0x7F781234); } }
@Test public void testGetPackageIdentifier() { assertThat(ResourceIds.getPackageIdentifier(0x01000000)).isEqualTo(0x01); assertThat(ResourceIds.getPackageIdentifier(0x7F000000)).isEqualTo(0x7F); }
@Test public void resourcesOfDifferentTypes_shouldHaveDifferentTypeSpaces() { ResourceRemapper remapper = new ResourceRemapper(ApplicationRClass.class); remapper.remapRClass(SecondClass.class); remapper.remapRClass(ThirdClass.class); Set<Integer> allIds = new HashSet<>(); assertThat(allIds.add(ApplicationRClass.string.string_one)).isTrue(); assertThat(allIds.add(ApplicationRClass.string.string_two)).isTrue(); assertThat(allIds.add(SecondClass.integer.integer_one)).isTrue(); assertThat(allIds.add(SecondClass.integer.integer_two)).isTrue(); assertThat(allIds.add(SecondClass.string.string_one)).isFalse(); assertThat(allIds.add(SecondClass.string.string_three)).isTrue(); assertThat(allIds.add(ThirdClass.raw.raw_one)).isTrue(); assertThat(allIds.add(ThirdClass.raw.raw_two)).isTrue(); assertThat(ResourceIds.getTypeIdentifier(ApplicationRClass.string.string_one)).isEqualTo(ResourceIds.getTypeIdentifier(ApplicationRClass.string.string_two)); assertThat(ResourceIds.getTypeIdentifier(ApplicationRClass.string.string_one)).isEqualTo(ResourceIds.getTypeIdentifier(SecondClass.string.string_three)); assertThat(ResourceIds.getTypeIdentifier(ApplicationRClass.string.string_two)).isNotEqualTo(ResourceIds.getTypeIdentifier(SecondClass.integer.integer_two)); assertThat(ResourceIds.getTypeIdentifier(ThirdClass.raw.raw_two)).isNotEqualTo(ResourceIds.getTypeIdentifier(SecondClass.integer.integer_two)); }
protected XmlResourceParser loadXmlResourceParser(int resId, String type) throws Resources.NotFoundException { ResName resName = getResName(resId); ResName resolvedResName = resolveResName(resName, config); if (resolvedResName == null) { throw new RuntimeException("couldn't resolve " + resName.getFullyQualifiedName()); } resName = resolvedResName; XmlBlock block = resourceTable.getXml(resName, config); if (block == null) { throw new Resources.NotFoundException(resName.getFullyQualifiedName()); } ResourceTable resourceProvider = ResourceIds.isFrameworkResource(resId) ? RuntimeEnvironment.getSystemResourceTable() : RuntimeEnvironment.getCompileTimeResourceTable(); return getXmlResourceParser(resourceProvider, block, resName.packageName); }
void addResource(int resId, String type, String name) { if (ResourceIds.isFrameworkResource(resId)) { androidResourceIdGenerator.record(resId, type, name); } ResName resName = new ResName(packageName, type, name); int resIdPackageIdentifier = ResourceIds.getPackageIdentifier(resId); if (getPackageIdentifier() == 0) { this.packageIdentifier = resIdPackageIdentifier; } else if (getPackageIdentifier() != resIdPackageIdentifier) { throw new IllegalArgumentException("Incompatible package for " + packageName + ":" + type + "/" + name + " with resId " + resIdPackageIdentifier + " to ResourceIndex with packageIdentifier " + getPackageIdentifier()); } ResName existingEntry = resourceTable.put(resId, resName); if (existingEntry != null && !existingEntry.equals(resName)) { throw new IllegalArgumentException("ResId " + Integer.toHexString(resId) + " mapped to both " + resName + " and " + existingEntry); } }
public void record(int resId, String type, String name) { TypeTracker typeTracker = typeInfo.get(type); if (typeTracker == null) { typeTracker = new TypeTracker(ResourceIds.getTypeIdentifier(resId)); typeInfo.put(type, typeTracker); } typeTracker.record(ResourceIds.getEntryIdentifier(resId)); }
public int generate(String type, String name) { TypeTracker typeTracker = typeInfo.get(type); if (typeTracker == null) { typeTracker = new TypeTracker(getNextFreeTypeIdentifier()); typeInfo.put(type, typeTracker); } return ResourceIds.makeIdentifer(packageIdentifier, typeTracker.getTypeIdentifier(), typeTracker.getFreeIdentifier()); }
private PackageResourceTable pickFor(int resId) { for (PackageResourceTable resourceTable : resourceTables.values()) { if (resourceTable.getPackageIdentifier() == ResourceIds.getPackageIdentifier(resId)) { return resourceTable; } } return EMPTY_RESOURCE_TABLE; }
String defaultPackageName = ResourceIds.isFrameworkResource(resId) ? "android" : RuntimeEnvironment.application.getPackageName(); ResName resName = ResName.qualifyResName(attributeSet.getAttributeName(i), defaultPackageName, "attr"); Integer referenceResId = null;
void addResource(int resId, String type, String name) { if (ResourceIds.isFrameworkResource(resId)) { androidResourceIdGenerator.record(resId, type, name); } ResName resName = new ResName(packageName, type, name); int resIdPackageIdentifier = ResourceIds.getPackageIdentifier(resId); if (getPackageIdentifier() == 0) { this.packageIdentifier = resIdPackageIdentifier; } else if (getPackageIdentifier() != resIdPackageIdentifier) { throw new IllegalArgumentException("Incompatible package for " + packageName + ":" + type + "/" + name + " with resId " + resIdPackageIdentifier + " to ResourceIndex with packageIdentifier " + getPackageIdentifier()); } ResName existingEntry = resourceTable.put(resId, resName); if (existingEntry != null && !existingEntry.equals(resName)) { throw new IllegalArgumentException("ResId " + Integer.toHexString(resId) + " mapped to both " + resName + " and " + existingEntry); } }
public void record(int resId, String type, String name) { TypeTracker typeTracker = typeInfo.get(type); if (typeTracker == null) { typeTracker = new TypeTracker(ResourceIds.getTypeIdentifier(resId)); typeInfo.put(type, typeTracker); } typeTracker.record(ResourceIds.getEntryIdentifier(resId)); }
public int generate(String type, String name) { TypeTracker typeTracker = typeInfo.get(type); if (typeTracker == null) { typeTracker = new TypeTracker(getNextFreeTypeIdentifier()); typeInfo.put(type, typeTracker); } return ResourceIds.makeIdentifer(packageIdentifier, typeTracker.getTypeIdentifier(), typeTracker.getFreeIdentifier()); }
private PackageResourceTable pickFor(int resId) { for (PackageResourceTable resourceTable : resourceTables.values()) { if (resourceTable.getPackageIdentifier() == ResourceIds.getPackageIdentifier(resId)) { return resourceTable; } } return EMPTY_RESOURCE_TABLE; }