<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->

<plugin xmlns="http://cordova.apache.org/ns/plugins/1.0"
    xmlns:android="http://schemas.android.com/apk/res/android"
    id="com.phonegap.plugins.childbrowser"
    version="0.6.0">

    <name>Child Browser</name>

    <asset src="www/childbrowser" target="childbrowser" />
    <asset src="www/childbrowser_file.html" target="childbrowser_file.html" />

    <js-module src="www/childbrowser.js" name="ChildBrowser">
        <clobbers target="childbrowser" />
    </js-module>

    <config-file target="config.xml" parent="/*">
        <access origin="build.phonegap.com" />
        <access origin="s3.amazonaws.com" />
    </config-file>
    
    <info>No matter what platform you are installing to, this notice is very important.</info>

    <!-- android -->
    <platform name="android">
        <config-file target="AndroidManifest.xml" parent="/manifest/application">
            <activity android:name="com.phonegap.plugins.childBrowser.ChildBrowser"
                      android:label="@string/app_name">
                <intent-filter>
                </intent-filter>
            </activity>
        </config-file>

        <!-- CDV < 2.0 -->
        <config-file target="res/xml/plugins.xml" parent="/plugins">
            <plugin name="ChildBrowser"
                value="com.phonegap.plugins.childBrowser.ChildBrowser"/>
        </config-file>

        <!-- CDV 2.0+ (for now) -->
        <config-file target="res/xml/config.xml" parent="/cordova/plugins">
            <plugin name="ChildBrowser"
                value="com.phonegap.plugins.childBrowser.ChildBrowser"/>
        </config-file>

        <source-file src="src/android/ChildBrowser.java"
                target-dir="src/com/phonegap/plugins/childBrowser" />
        <info>Please make sure you read this because it is very important to complete the installation of your plugin.</info>
    </platform>

    <!-- ios -->
    <platform name="ios">
        <plugins-plist key="com.phonegap.plugins.childbrowser"
            string="ChildBrowserCommand" />

        <config-file target="config.xml" parent="/widget/plugins">
            <plugin name="ChildBrowser"
                value="ChildBrowserCommand" />
        </config-file>

        <resource-file src="src/ios/ChildBrowser.bundle" />
        <resource-file src="src/ios/ChildBrowserViewController.xib" />

        <config-file target="*-Info.plist" parent="AppId">
            <string>$APP_ID</string>
        </config-file>
        
        <config-file target="*-Info.plist" parent="CFBundleURLTypes">
            <array>
              <dict>
                <key>PackageName</key>
                <string>$PACKAGE_NAME</string>
              </dict>
            </array>
        </config-file>

        <header-file src="src/ios/ChildBrowserCommand.h" />
        <header-file src="src/ios/ChildBrowserViewController.h" />
        <header-file src="src/ios/TargetDirTest.h" target-dir="targetDir"/>

        <source-file src="src/ios/ChildBrowserCommand.m" />
        <source-file src="src/ios/ChildBrowserViewController.m" />
        <source-file src="src/ios/preserveDirs/PreserveDirsTest.m" preserve-dirs="true" />
        <header-file src="src/ios/TargetDirTest.m" target-dir="targetDir"/>

        <!-- framework for testing (not actual dependency of ChildBrowser -->
        <framework src="libsqlite3.dylib" />
        <framework src="social.framework" weak="true" />
        <framework src="music.framework" weak="rabbit" />
    </platform>

    <!-- wp8 -->
    <platform name="wp8">
        <resource-file src="src\wp7\Images\appbar.back.rest.png" />
        <config-file target="config.xml" parent="/widget/plugins">
            <plugin name="ChildBrowser"
                value="ChildBrowser"/>
        </config-file>

        <source-file src="src\wp7\ChildBrowserCommand.cs"
                     target-dir="Plugins\" />

        <!-- modify the project file to include the added files -->
        <config-file target=".csproj" parent=".">  
        </config-file> 

    </platform>
</plugin>
