Merge "Skip idmap1 generation if target defines overlayable" into qt-dev

This commit is contained in:
Winson Chiu
2019-04-16 17:53:54 +00:00
committed by Android (Google) Code Review

View File

@@ -3510,6 +3510,7 @@ struct ResTable::Package
ResStringPool keyStrings;
size_t typeIdOffset;
bool definesOverlayable = false;
};
// A group of objects describing a particular resource package.
@@ -6861,6 +6862,10 @@ status_t ResTable::parsePackage(const ResTable_package* const pkg,
ALOGW("Found multiple library tables, ignoring...");
}
} else {
if (ctype == RES_TABLE_OVERLAYABLE_TYPE) {
package->definesOverlayable = true;
}
status_t err = validate_chunk(chunk, sizeof(ResChunk_header),
endPos, "ResTable_package:unknown");
if (err != NO_ERROR) {
@@ -7138,6 +7143,11 @@ status_t ResTable::createIdmap(const ResTable& targetResTable,
return UNKNOWN_ERROR;
}
// Idmap is not aware of overlayable, exit since policy checks can't be done
if (targetResTable.mPackageGroups[0]->packages[0]->definesOverlayable) {
return UNKNOWN_ERROR;
}
const ResTable_package* targetPackageStruct =
targetResTable.mPackageGroups[0]->packages[0]->package;
const size_t tmpNameSize = arraysize(targetPackageStruct->name);