Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f479aa09 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

Add padding to public.xml to avoid breaking from auto-merges.

parent b204d4f1
Loading
Loading
Loading
Loading
+4827 −1967

File changed.

Preview size limit exceeded, changes collapsed.

+39 −17
Original line number Diff line number Diff line
@@ -1092,23 +1092,45 @@
  <eat-comment />

  <public type="attr" name="tension" id="0x0101026a" />
   <public type="attr" name="extraTension" id="0x0101026b" />
   <public type="attr" name="density" id="0x0101026c" />
   <public type="attr" name="searchSuggestThreshold" id="0x0101026d" />
   <public type="attr" name="includeInGlobalSearch" id="0x0101026e" />
   <public type="attr" name="onClick" id="0x0101026f" />
   <public type="attr" name="targetSdkVersion" id="0x01010270" />
   <public type="attr" name="maxSdkVersion" id="0x01010271" />
   <public type="attr" name="testOnly" id="0x01010272" />
   <public type="attr" name="contentDescription" id="0x01010273" />
  <public type="attr" name="extraTension" />
  <public type="attr" name="density" />
  <public type="attr" name="searchSuggestThreshold" />
  <public type="attr" name="includeInGlobalSearch" />
  <public type="attr" name="onClick" />
  <public type="attr" name="targetSdkVersion" />
  <public type="attr" name="maxSdkVersion" />
  <public type="attr" name="testOnly" />
  <public type="attr" name="contentDescription" />
  
   <public type="anim" name="anticipate_interpolator" id="0x010a0007" />
   <public type="anim" name="overshoot_interpolator" id="0x010a0008" />
   <public type="anim" name="anticipate_overshoot_interpolator" id="0x010a0009" />
   <public type="anim" name="bounce_interpolator" id="0x010a000a" />
   <public type="anim" name="linear_interpolator" id="0x010a000b" />
  <public-padding type="attr" name="donut_resource_pad" end="0x0101029f" />

  <public type="drawable" name="stat_sys_vp_phone_call" id="0x0108022d" />
  <public type="drawable" name="stat_sys_vp_phone_call_on_hold" id="0x0108022e" />
  <public-padding type="id" name="donut_resource_pad" end="0x01020040" />
  
  <public-padding type="style" name="donut_resource_pad" end="0x01030070" />
  
  <public-padding type="string" name="donut_resource_pad" end="0x01040030" />

  <public-padding type="dimen" name="donut_resource_pad" end="0x01050010" />

  <public-padding type="color" name="donut_resource_pad" end="0x01060030" />

  <public-padding type="array" name="donut_resource_pad" end="0x01070010" />

  <public type="drawable" name="stat_sys_vp_phone_call" />
  <public type="drawable" name="stat_sys_vp_phone_call_on_hold" />
  
  <public-padding type="drawable" name="donut_resource_pad" end="0x010800d0" />
  
  <public-padding type="layout" name="donut_resource_pad" end="0x01090020" />
  
  <public type="anim" name="anticipate_interpolator" />
  <public type="anim" name="overshoot_interpolator" />
  <public type="anim" name="anticipate_overshoot_interpolator" />
  <public type="anim" name="bounce_interpolator" />
  <public type="anim" name="linear_interpolator" />

  <public-padding type="anim" name="donut_resource_pad" end="0x010a0020" />
  
  <public-padding type="integer" name="donut_resource_pad" end="0x010e0010" />
  
</resources>
+116 −5
Original line number Diff line number Diff line
@@ -661,6 +661,7 @@ status_t compileResourceFile(Bundle* bundle,
    const String16 string_array16("string-array");
    const String16 integer_array16("integer-array");
    const String16 public16("public");
    const String16 public_padding16("public-padding");
    const String16 private_symbols16("private-symbols");
    const String16 skip16("skip");
    const String16 eat_comment16("eat-comment");
@@ -695,7 +696,7 @@ status_t compileResourceFile(Bundle* bundle,

    bool hasErrors = false;
    
    uint32_t nextPublicId = 0;
    DefaultKeyedVector<String16, uint32_t> nextPublicId(0);

    ResXMLTree::event_code_t code;
    do {
@@ -784,15 +785,15 @@ status_t compileResourceFile(Bundle* bundle,
                        hasErrors = localHasErrors = true;
                    } else {
                        ident = identValue.data;
                        nextPublicId = ident+1;
                        nextPublicId.replaceValueFor(type, ident+1);
                    }
                } else if (nextPublicId == 0) {
                } else if (nextPublicId.indexOfKey(type) < 0) {
                    srcPos.error("No 'id' attribute supplied <public>,"
                            " and no previous id defined in this file.\n");
                    hasErrors = localHasErrors = true;
                } else if (!localHasErrors) {
                    ident = nextPublicId;
                    nextPublicId++;
                    ident = nextPublicId.valueFor(type);
                    nextPublicId.replaceValueFor(type, ident+1);
                }

                if (!localHasErrors) {
@@ -826,6 +827,116 @@ status_t compileResourceFile(Bundle* bundle,
                }
                continue;

            } else if (strcmp16(block.getElementName(&len), public_padding16.string()) == 0) {
                SourcePos srcPos(in->getPrintableSource(), block.getLineNumber());
            
                String16 type;
                ssize_t typeIdx = block.indexOfAttribute(NULL, "type");
                if (typeIdx < 0) {
                    srcPos.error("A 'type' attribute is required for <public-padding>\n");
                    hasErrors = localHasErrors = true;
                }
                type = String16(block.getAttributeStringValue(typeIdx, &len));

                String16 name;
                ssize_t nameIdx = block.indexOfAttribute(NULL, "name");
                if (nameIdx < 0) {
                    srcPos.error("A 'name' attribute is required for <public-padding>\n");
                    hasErrors = localHasErrors = true;
                }
                name = String16(block.getAttributeStringValue(nameIdx, &len));

                uint32_t start = 0;
                ssize_t startIdx = block.indexOfAttribute(NULL, "start");
                if (startIdx >= 0) {
                    const char16_t* startStr = block.getAttributeStringValue(startIdx, &len);
                    Res_value startValue;
                    if (!ResTable::stringToInt(startStr, len, &startValue)) {
                        srcPos.error("Given 'start' attribute is not an integer: %s\n",
                                String8(block.getAttributeStringValue(startIdx, &len)).string());
                        hasErrors = localHasErrors = true;
                    } else {
                        start = startValue.data;
                    }
                } else if (nextPublicId.indexOfKey(type) < 0) {
                    srcPos.error("No 'start' attribute supplied <public-padding>,"
                            " and no previous id defined in this file.\n");
                    hasErrors = localHasErrors = true;
                } else if (!localHasErrors) {
                    start = nextPublicId.valueFor(type);
                }

                uint32_t end = 0;
                ssize_t endIdx = block.indexOfAttribute(NULL, "end");
                if (endIdx >= 0) {
                    const char16_t* endStr = block.getAttributeStringValue(endIdx, &len);
                    Res_value endValue;
                    if (!ResTable::stringToInt(endStr, len, &endValue)) {
                        srcPos.error("Given 'end' attribute is not an integer: %s\n",
                                String8(block.getAttributeStringValue(endIdx, &len)).string());
                        hasErrors = localHasErrors = true;
                    } else {
                        end = endValue.data;
                    }
                } else {
                    srcPos.error("No 'end' attribute supplied <public-padding>\n");
                    hasErrors = localHasErrors = true;
                }

                if (end >= start) {
                    nextPublicId.replaceValueFor(type, end+1);
                } else {
                    srcPos.error("Padding start '%ul' is after end '%ul'\n",
                            start, end);
                    hasErrors = localHasErrors = true;
                }
                
                String16 comment(
                    block.getComment(&len) ? block.getComment(&len) : nulStr);
                for (uint32_t curIdent=start; curIdent<=end; curIdent++) {
                    if (localHasErrors) {
                        break;
                    }
                    String16 curName(name);
                    char buf[64];
                    sprintf(buf, "%d", (int)(end-curIdent+1));
                    curName.append(String16(buf));
                    
                    err = outTable->addEntry(srcPos, myPackage, type, curName,
                                             String16("padding"), NULL, &curParams, false,
                                             ResTable_map::TYPE_STRING, overwrite);
                    if (err < NO_ERROR) {
                        hasErrors = localHasErrors = true;
                        break;
                    }
                    err = outTable->addPublic(srcPos, myPackage, type,
                            curName, curIdent);
                    if (err < NO_ERROR) {
                        hasErrors = localHasErrors = true;
                        break;
                    }
                    sp<AaptSymbols> symbols = assets->getSymbolsFor(String8("R"));
                    if (symbols != NULL) {
                        symbols = symbols->addNestedSymbol(String8(type), srcPos);
                    }
                    if (symbols != NULL) {
                        symbols->makeSymbolPublic(String8(curName), srcPos);
                        symbols->appendComment(String8(curName), comment, srcPos);
                    } else {
                        srcPos.error("Unable to create symbols!\n");
                        hasErrors = localHasErrors = true;
                    }
                }

                while ((code=block.next()) != ResXMLTree::END_DOCUMENT && code != ResXMLTree::BAD_DOCUMENT) {
                    if (code == ResXMLTree::END_TAG) {
                        if (strcmp16(block.getElementName(&len), public_padding16.string()) == 0) {
                            break;
                        }
                    }
                }
                continue;

            } else if (strcmp16(block.getElementName(&len), private_symbols16.string()) == 0) {
                String16 pkg;
                ssize_t pkgIdx = block.indexOfAttribute(NULL, "package");