#
# Test:
# - Activities from libraries are merged in the main manifest.
# - Acts on activity / activity-alias / service / receiver / provider.
# - Elements are merged as-is with the first comment element preceding them.
# - Whitespace preceding the merged elements is transfered over too.
#
# Note:
# - New elements are always merged at the end of the application element.
# - It's an error if an element with the same @name attribute is defined
#   or merged more than once unless the definition is *exactly* the same,
#   the "same" being defined by the exact XML elements, whitespace excluded.
#
# This tests that an error is generated because the libraries define
# providers which are already defined differently.
#

@fails

@main

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app1"
    android:versionCode="100"
    android:versionName="1.0.0">


    <application
        android:label="@string/app_name"
        android:icon="@drawable/app_icon"
        android:backupAgent="com.example.app.BackupAgentClass"
        android:restoreAnyVersion="true"
        android:allowBackup="true"
        android:killAfterRestore="true"
        android:name="com.example.TheApp" >

        <provider
            android:name="com.example.Provider1"
            android:authorities="com.example.android.apis.app.thingy1"
            android:enabled="@bool/someConditionalValue" />

        <provider
            android:name="com.example.Provider2" />

    </application>

</manifest>

@lib1

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lib1">

    <application android:label="@string/lib_name1" >

        <!-- Same as MyActivity1 in main -->
        <provider
            android:name="com.example.Provider1"
            android:authorities="com.example.android.apis.app.thingy1"
            android:enabled="@bool/someConditionalValue" />

        <!-- Differs from MyActivity2 in main -->
        <provider
            android:name="com.example.Provider2"
            android:authorities="com.example.android.apis.app.thingy2"
            android:enabled="@bool/someConditionalValue2" />

        <!-- A new one defined by lib1 -->
        <provider
            android:name="com.example.Provider3"
            android:authorities="com.example.android.apis.app.thingy3"
            android:enabled="@bool/someConditionalValue" />

    </application>

</manifest>

@lib2

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lib2">

    <application android:label="@string/lib_name2" >

        <!-- Conflicts with 3 from lib1 -->
        <provider
            android:name="com.example.Provider3"
            android:authorities="com.example.android.apis.app.thingy3" />
    </application>

</manifest>


@result

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app1"
    android:versionCode="100"
    android:versionName="1.0.0">


    <application
        android:label="@string/app_name"
        android:icon="@drawable/app_icon"
        android:backupAgent="com.example.app.BackupAgentClass"
        android:restoreAnyVersion="true"
        android:allowBackup="true"
        android:killAfterRestore="true"
        android:name="com.example.TheApp" >

        <provider
            android:name="com.example.Provider1"
            android:authorities="com.example.android.apis.app.thingy1"
            android:enabled="@bool/someConditionalValue" />

        <provider
            android:name="com.example.Provider2" />

        <!-- A new one defined by lib1 -->
        <provider
            android:name="com.example.Provider3"
            android:authorities="com.example.android.apis.app.thingy3"
            android:enabled="@bool/someConditionalValue" />

    </application>

</manifest>

@errors

P [ManifestMergerTest0_main.xml:6, ManifestMergerTest1_lib1.xml:6] Skipping identical /manifest/application/provider[@name=com.example.Provider1] element.
E [ManifestMergerTest0_main.xml:8, ManifestMergerTest1_lib1.xml:9] Trying to merge incompatible /manifest/application/provider[@name=com.example.Provider2] element:
  <provider android:name=com.example.Provider2>
--    @android:authorities = com.example.android.apis.app.thingy2
--    @android:enabled = @bool/someConditionalValue2
      @android:name = com.example.Provider2
E [ManifestMergerTest0_main.xml, ManifestMergerTest2_lib2.xml:6] Trying to merge incompatible /manifest/application/provider[@name=com.example.Provider3] element:
  <provider android:name=com.example.Provider3>
      @android:authorities = com.example.android.apis.app.thingy3
++    @android:enabled = @bool/someConditionalValue
      @android:name = com.example.Provider3
