#
# Test supports-screens:
# - it's OK if a library defines one or multiple times an element already in the application.
# - it's a warning if the library defines an element not in the application.
# - this does not actually merge anything. The XML is not changed at all.
#

@main

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

    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="11"/>

    <supports-screens
        android:largeScreens="true"
        android:smallScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:xlargeScreens="true"
        />

    <uses-configuration
        android:reqFiveWayNav="true"
        android:reqHardKeyboard="false"
        android:reqKeyboardType="undefined"
        android:reqNavigation="nonav"
        android:reqTouchScreen="stylus"
        />

    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />

    <supports-gl-texture android:name="some.gl.texture1" />
    <supports-gl-texture android:name="some.gl.texture2" />

    <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
            android:name="com.example.MainActivity"
            android:label="@string/activity_name"
            android:icon="@drawable/activity_icon"
            android:theme="@style/Some.Theme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>


@lib1

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

    <!-- this is the same supports-screens than in the main. -->
    <supports-screens
        android:largeScreens="true"
        android:smallScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:xlargeScreens="true"
        />

</manifest>


@lib2

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

    <!-- this is the not same supports-screens than in the main. -->
    <supports-screens
        android:smallScreens="false"
        android:resizeable="false"
        />

</manifest>


@result

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

    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="11"/>

    <supports-screens
        android:largeScreens="true"
        android:smallScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:xlargeScreens="true"
        />

    <uses-configuration
        android:reqFiveWayNav="true"
        android:reqHardKeyboard="false"
        android:reqKeyboardType="undefined"
        android:reqNavigation="nonav"
        android:reqTouchScreen="stylus"
        />

    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />

    <supports-gl-texture android:name="some.gl.texture1" />
    <supports-gl-texture android:name="some.gl.texture2" />

    <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
            android:name="com.example.MainActivity"
            android:label="@string/activity_name"
            android:icon="@drawable/activity_icon"
            android:theme="@style/Some.Theme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>


@errors

W [ManifestMergerTest0_main.xml:1, ManifestMergerTest2_lib2.xml:4] /manifest/supports-screens defined in library, missing from main manifest:
<supports-screens>
    @android:resizeable = false
    @android:smallScreens = false
