Search in sources :

Example 71 with XmlNode

use of com.android.aapt.Resources.XmlNode in project bundletool by google.

the class ManifestEditorTest method setConfigForSplit.

@Test
public void setConfigForSplit() {
    AndroidManifest androidManifest = createManifestWithApplicationElement();
    AndroidManifest editedManifest = androidManifest.toEditor().setConfigForSplit("feature1").save();
    XmlNode manifestRoot = editedManifest.getManifestRoot().getProto();
    assertThat(manifestRoot.hasElement()).isTrue();
    XmlElement manifestElement = manifestRoot.getElement();
    assertThat(manifestElement.getName()).isEqualTo("manifest");
    assertThat(manifestElement.getAttributeList()).containsExactly(xmlAttribute("configForSplit", "feature1"));
}
Also used : XmlNode(com.android.aapt.Resources.XmlNode) XmlElement(com.android.aapt.Resources.XmlElement) Test(org.junit.Test)

Example 72 with XmlNode

use of com.android.aapt.Resources.XmlNode in project bundletool by google.

the class ManifestEditorTest method copyPermissions.

@Test
public void copyPermissions() throws Exception {
    XmlElement permisisonElement = xmlElement("permission", xmlAttribute(ANDROID_NAMESPACE_URI, "name", NAME_RESOURCE_ID, "SEND_SMS"));
    AndroidManifest manifestWithPermissions = AndroidManifest.create(xmlNode(xmlElement("manifest", xmlNode(permisisonElement))));
    AndroidManifest manifestToUpdate = AndroidManifest.create(androidManifest("com.test.app"));
    AndroidManifest updatedManifest = manifestToUpdate.toEditor().copyPermissions(manifestWithPermissions).save();
    ImmutableList<XmlElement> copiedPermissions = updatedManifest.getManifestRoot().getProto().getElement().getChildList().stream().map(XmlNode::getElement).filter(childElement -> childElement.getName().equals("permission")).collect(toImmutableList());
    assertThat(copiedPermissions).containsExactly(permisisonElement);
}
Also used : ManifestProtoUtils.xmlBooleanAttribute(com.android.tools.build.bundletool.testing.ManifestProtoUtils.xmlBooleanAttribute) VERSION_CODE_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.VERSION_CODE_RESOURCE_ID) ManifestProtoUtils.withSplitNameActivity(com.android.tools.build.bundletool.testing.ManifestProtoUtils.withSplitNameActivity) DESCRIPTION_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.DESCRIPTION_RESOURCE_ID) ManifestProtoUtils.xmlDecimalIntegerAttribute(com.android.tools.build.bundletool.testing.ManifestProtoUtils.xmlDecimalIntegerAttribute) SHARED_USER_ID_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.SHARED_USER_ID_RESOURCE_ID) ManifestProtoUtils.androidManifest(com.android.tools.build.bundletool.testing.ManifestProtoUtils.androidManifest) TARGET_SANDBOX_VERSION_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.TARGET_SANDBOX_VERSION_RESOURCE_ID) ManifestProtoUtils.withSplitNameProvider(com.android.tools.build.bundletool.testing.ManifestProtoUtils.withSplitNameProvider) ManifestProtoUtils.xmlAttribute(com.android.tools.build.bundletool.testing.ManifestProtoUtils.xmlAttribute) XmlAttribute(com.android.aapt.Resources.XmlAttribute) DATA_EXTRACTION_RULES_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.DATA_EXTRACTION_RULES_RESOURCE_ID) XmlProtoAttribute(com.android.tools.build.bundletool.model.utils.xmlproto.XmlProtoAttribute) PROVIDER_ELEMENT_NAME(com.android.tools.build.bundletool.model.AndroidManifest.PROVIDER_ELEMENT_NAME) NAME_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.NAME_RESOURCE_ID) SPLIT_NAME_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.SPLIT_NAME_ATTRIBUTE_NAME) TextFormat(com.google.protobuf.TextFormat) SPLIT_NAME_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.SPLIT_NAME_RESOURCE_ID) ImmutableSet(com.google.common.collect.ImmutableSet) ImmutableList.toImmutableList(com.google.common.collect.ImmutableList.toImmutableList) DATA_EXTRACTION_RULES_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.DATA_EXTRACTION_RULES_ATTRIBUTE_NAME) ManifestProtoUtils.xmlElement(com.android.tools.build.bundletool.testing.ManifestProtoUtils.xmlElement) DESCRIPTION_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.DESCRIPTION_ATTRIBUTE_NAME) LABEL_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.LABEL_ATTRIBUTE_NAME) VALUE_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.VALUE_RESOURCE_ID) FULL_BACKUP_CONTENT_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.FULL_BACKUP_CONTENT_ATTRIBUTE_NAME) LOCALE_CONFIG_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.LOCALE_CONFIG_RESOURCE_ID) FULL_BACKUP_ONLY_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.FULL_BACKUP_ONLY_RESOURCE_ID) ManifestProtoUtils.withOnDemandAttribute(com.android.tools.build.bundletool.testing.ManifestProtoUtils.withOnDemandAttribute) ManifestProtoUtils.xmlResourceReferenceAttribute(com.android.tools.build.bundletool.testing.ManifestProtoUtils.xmlResourceReferenceAttribute) HAS_FRAGILE_USER_DATA_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.HAS_FRAGILE_USER_DATA_ATTRIBUTE_NAME) LOCALE_CONFIG_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.LOCALE_CONFIG_ATTRIBUTE_NAME) IS_GAME_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.IS_GAME_RESOURCE_ID) ICON_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.ICON_RESOURCE_ID) LABEL_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.LABEL_RESOURCE_ID) ICON_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.ICON_ATTRIBUTE_NAME) Iterables(com.google.common.collect.Iterables) Activity(com.android.tools.build.bundletool.model.manifestelements.Activity) ALLOW_BACKUP_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.ALLOW_BACKUP_ATTRIBUTE_NAME) RunWith(org.junit.runner.RunWith) ProtoTruth.assertThat(com.google.common.truth.extensions.proto.ProtoTruth.assertThat) ImmutableList(com.google.common.collect.ImmutableList) ACTIVITY_ELEMENT_NAME(com.android.tools.build.bundletool.model.AndroidManifest.ACTIVITY_ELEMENT_NAME) IS_GAME_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.IS_GAME_ATTRIBUTE_NAME) MAX_SDK_VERSION_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.MAX_SDK_VERSION_RESOURCE_ID) ManifestProtoUtils.withSplitNameService(com.android.tools.build.bundletool.testing.ManifestProtoUtils.withSplitNameService) XmlProtoElement(com.android.tools.build.bundletool.model.utils.xmlproto.XmlProtoElement) Truth8.assertThat(com.google.common.truth.Truth8.assertThat) ManifestProtoUtils.xmlNode(com.android.tools.build.bundletool.testing.ManifestProtoUtils.xmlNode) MIN_SDK_VERSION_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.MIN_SDK_VERSION_RESOURCE_ID) IS_FEATURE_SPLIT_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.IS_FEATURE_SPLIT_RESOURCE_ID) SHARED_USER_LABEL_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.SHARED_USER_LABEL_ATTRIBUTE_NAME) TARGET_SDK_VERSION_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.TARGET_SDK_VERSION_RESOURCE_ID) Receiver(com.android.tools.build.bundletool.model.manifestelements.Receiver) TestData(com.android.tools.build.bundletool.TestData) Test(org.junit.Test) FULL_BACKUP_CONTENT_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.FULL_BACKUP_CONTENT_RESOURCE_ID) JUnit4(org.junit.runners.JUnit4) Truth.assertThat(com.google.common.truth.Truth.assertThat) HAS_FRAGILE_USER_DATA_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.HAS_FRAGILE_USER_DATA_RESOURCE_ID) SHARED_USER_LABEL_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.SHARED_USER_LABEL_RESOURCE_ID) SHARED_USER_ID_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.SHARED_USER_ID_ATTRIBUTE_NAME) XmlNode(com.android.aapt.Resources.XmlNode) IS_SPLIT_REQUIRED_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.IS_SPLIT_REQUIRED_ATTRIBUTE_NAME) SERVICE_ELEMENT_NAME(com.android.tools.build.bundletool.model.AndroidManifest.SERVICE_ELEMENT_NAME) ManifestProtoUtils.withMainActivity(com.android.tools.build.bundletool.testing.ManifestProtoUtils.withMainActivity) FULL_BACKUP_ONLY_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.FULL_BACKUP_ONLY_ATTRIBUTE_NAME) HAS_CODE_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.HAS_CODE_RESOURCE_ID) XmlElement(com.android.aapt.Resources.XmlElement) IS_SPLIT_REQUIRED_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.IS_SPLIT_REQUIRED_RESOURCE_ID) ALLOW_BACKUP_RESOURCE_ID(com.android.tools.build.bundletool.model.AndroidManifest.ALLOW_BACKUP_RESOURCE_ID) NAME_ATTRIBUTE_NAME(com.android.tools.build.bundletool.model.AndroidManifest.NAME_ATTRIBUTE_NAME) XmlNode(com.android.aapt.Resources.XmlNode) XmlElement(com.android.aapt.Resources.XmlElement) Test(org.junit.Test)

Example 73 with XmlNode

use of com.android.aapt.Resources.XmlNode in project bundletool by google.

the class ModuleSplitTest method masterSplitGetsManifestForFeatureSplit.

@Test
public void masterSplitGetsManifestForFeatureSplit() throws Exception {
    BundleModule module = new BundleModuleBuilder("testModule").setManifest(androidManifest("com.test.app")).build();
    ModuleSplit split = ModuleSplit.forModule(module);
    split = split.writeSplitIdInManifest(split.getSuffix());
    XmlNode writtenManifest = split.getAndroidManifest().getManifestRoot().getProto();
    assertThat(writtenManifest.getElement().getAttributeList()).containsExactly(xmlAttribute("package", "com.test.app"), xmlDecimalIntegerAttribute(ANDROID_NAMESPACE_URI, "versionCode", VERSION_CODE_RESOURCE_ID, 1), xmlAttribute("split", "testModule"), xmlBooleanAttribute(ANDROID_NAMESPACE_URI, "isFeatureSplit", IS_FEATURE_SPLIT_RESOURCE_ID, true));
}
Also used : XmlNode(com.android.aapt.Resources.XmlNode) BundleModuleBuilder(com.android.tools.build.bundletool.testing.BundleModuleBuilder) Test(org.junit.Test)

Example 74 with XmlNode

use of com.android.aapt.Resources.XmlNode in project bundletool by google.

the class SplitsProtoXmlBuilderTest method buildOneModule.

@Test
public void buildOneModule() {
    SplitsProtoXmlBuilder splitsProtoXmlBuilder = new SplitsProtoXmlBuilder();
    splitsProtoXmlBuilder.addLanguageMapping(BundleModuleName.create("module"), /* language = */
    "en", /* splitId = */
    "module.config.en");
    XmlNode rootNode = splitsProtoXmlBuilder.build();
    // Answer:
    // <splits>
    // <module name="module">
    // <language>
    // <entry key="en" split="module.config.en">
    // </language>
    // </module>
    // </splits>
    XmlProtoElementBuilder actual = XmlProtoElementBuilder.create("splits").addChildElement(XmlProtoElementBuilder.create("module").addAttribute(createAttribute("name", "module")).addChildElement(XmlProtoElementBuilder.create("language").addChildElement(XmlProtoElementBuilder.create("entry").addAttribute(createAttribute("key", "en")).addAttribute(createAttribute("split", "module.config.en")))));
    assertThat(rootNode).isEqualTo(getProto(actual));
}
Also used : XmlProtoElementBuilder(com.android.tools.build.bundletool.model.utils.xmlproto.XmlProtoElementBuilder) XmlNode(com.android.aapt.Resources.XmlNode) Test(org.junit.Test)

Example 75 with XmlNode

use of com.android.aapt.Resources.XmlNode in project bundletool by google.

the class SplitsProtoXmlBuilderTest method buildManyEntries.

@Test
public void buildManyEntries() {
    SplitsProtoXmlBuilder splitsProtoXmlBuilder = new SplitsProtoXmlBuilder();
    splitsProtoXmlBuilder.addLanguageMapping(BASE_MODULE_NAME, /* language = */
    "ru", /* splitId = */
    "config.ru");
    splitsProtoXmlBuilder.addLanguageMapping(BASE_MODULE_NAME, /* language = */
    "en", /* splitId = */
    "");
    splitsProtoXmlBuilder.addLanguageMapping(BASE_MODULE_NAME, /* language = */
    "fr", /* splitId = */
    "config.fr");
    XmlNode rootNode = splitsProtoXmlBuilder.build();
    // Answer:
    // <splits>
    // <module name="">
    // <language>
    // <entry key="ru" split="config.ru">
    // <entry key="en" split="">
    // <entry key="fr" split="config.fr">
    // </language>
    // </module>
    // </splits>
    // Checking base structure.
    assertThat(rootNode.getElement().getName()).isEqualTo("splits");
    assertThat(rootNode.getElement().getChildCount()).isEqualTo(1);
    assertThat(rootNode.getElement().getChild(0).getElement().getName()).isEqualTo("module");
    assertThat(rootNode.getElement().getChild(0).getElement().getAttributeList()).containsExactly(createAttribute("name", "").getProto().build());
    // Checking entries of splits[0][0] (splits -> module -> language).
    assertThat(rootNode.getElement().getChild(0).getElement().getChild(0).getElement().getChildList()).containsExactly(getProto(XmlProtoElementBuilder.create("entry").addAttribute(createAttribute("key", "ru")).addAttribute(createAttribute("split", "config.ru"))), getProto(XmlProtoElementBuilder.create("entry").addAttribute(createAttribute("key", "en")).addAttribute(createAttribute("split", ""))), getProto(XmlProtoElementBuilder.create("entry").addAttribute(createAttribute("key", "fr")).addAttribute(createAttribute("split", "config.fr"))));
}
Also used : XmlNode(com.android.aapt.Resources.XmlNode) Test(org.junit.Test)

Aggregations

XmlNode (com.android.aapt.Resources.XmlNode)99 Test (org.junit.Test)91 XmlElement (com.android.aapt.Resources.XmlElement)28 AppBundle (com.android.tools.build.bundletool.model.AppBundle)27 ManifestProtoUtils.androidManifest (com.android.tools.build.bundletool.testing.ManifestProtoUtils.androidManifest)23 Truth.assertThat (com.google.common.truth.Truth.assertThat)23 RunWith (org.junit.runner.RunWith)23 ResourceTable (com.android.aapt.Resources.ResourceTable)21 ImmutableList (com.google.common.collect.ImmutableList)21 AndroidManifest (com.android.tools.build.bundletool.model.AndroidManifest)16 Nullable (javax.annotation.Nullable)16 Theories (org.junit.experimental.theories.Theories)16 ZipFile (java.util.zip.ZipFile)12 FileReference (com.android.aapt.Resources.FileReference)10 AppBundleBuilder (com.android.tools.build.bundletool.testing.AppBundleBuilder)10 Configuration (com.android.aapt.ConfigurationOuterClass.Configuration)9 Attribute (com.android.aapt.Resources.Attribute)9 Symbol (com.android.aapt.Resources.Attribute.Symbol)9 CompoundValue (com.android.aapt.Resources.CompoundValue)9 ConfigValue (com.android.aapt.Resources.ConfigValue)9