#
# 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
# aliases 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" >

        <activity-alias
            android:name="com.example.alias.MyActivity1"
            android:targetActivity="com.example.MainActivity1"
            android:label="@string/alias_name1"
            android:icon="@drawable/alias_icon1"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

        <activity-alias
            android:name="com.example.alias.MyActivity2"
            android:targetActivity="com.example.MainActivity2"
            android:label="@string/alias_name2"
            android:icon="@drawable/alias_icon2"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

    </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 1 in main -->
        <activity-alias
            android:name="com.example.alias.MyActivity1"
            android:targetActivity="com.example.MainActivity1"
            android:label="@string/alias_name1"
            android:icon="@drawable/alias_icon1"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

        <!-- Differs from 2 in main -->
        <activity-alias
            android:name="com.example.alias.MyActivity2"
            android:targetActivity="com.example.MainActivity2">
        </activity-alias>

        <!-- A new one defined by lib1 -->
        <activity-alias
            android:name="com.example.alias.MyActivity3"
            android:targetActivity="com.example.MainActivity3"
            android:label="@string/alias_name3"
            android:icon="@drawable/alias_icon3"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

    </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 -->
        <activity-alias
            android:name="com.example.alias.MyActivity3"
            android:label="@string/alias_name3"
            android:icon="@drawable/alias_icon3">
            <intent-filter>
                <category android:name="android.intent.category.LAUNCHER2" />
            </intent-filter>
        </activity-alias>
    </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" >

        <activity-alias
            android:name="com.example.alias.MyActivity1"
            android:targetActivity="com.example.MainActivity1"
            android:label="@string/alias_name1"
            android:icon="@drawable/alias_icon1"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

        <activity-alias
            android:name="com.example.alias.MyActivity2"
            android:targetActivity="com.example.MainActivity2"
            android:label="@string/alias_name2"
            android:icon="@drawable/alias_icon2"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

        <!-- A new one defined by lib1 -->
        <activity-alias
            android:name="com.example.alias.MyActivity3"
            android:targetActivity="com.example.MainActivity3"
            android:label="@string/alias_name3"
            android:icon="@drawable/alias_icon3"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

    </application>

</manifest>

@errors

P [ManifestMergerTest0_main.xml:6, ManifestMergerTest1_lib1.xml:6] Skipping identical /manifest/application/activity-alias[@name=com.example.alias.MyActivity1] element.
E [ManifestMergerTest0_main.xml:13, ManifestMergerTest1_lib1.xml:14] Trying to merge incompatible /manifest/application/activity-alias[@name=com.example.alias.MyActivity2] element:
  <activity-alias android:name=com.example.alias.MyActivity2>
++    @android:icon = @drawable/alias_icon2
++    @android:label = @string/alias_name2
      @android:name = com.example.alias.MyActivity2
      @android:targetActivity = com.example.MainActivity2
E [ManifestMergerTest0_main.xml, ManifestMergerTest2_lib2.xml:6] Trying to merge incompatible /manifest/application/activity-alias[@name=com.example.alias.MyActivity3] element:
  <activity-alias android:name=com.example.alias.MyActivity3>
      @android:icon = @drawable/alias_icon3
      @android:label = @string/alias_name3
      @android:name = com.example.alias.MyActivity3
++    @android:targetActivity = com.example.MainActivity3
