<?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://apache.org/cordova/ns/plugins/1.0"
    xmlns:android="http://schemas.android.com/apk/res/android"
    id="cordova-plugin-vibration"
    version="1.2.0">

    <name>Vibration</name>
    <description>Cordova Vibration Plugin</description>
    <license>Apache 2.0</license>
    <keywords>cordova,vibration</keywords>
    <repo>https://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration.git</repo>
    <issue>https://issues.apache.org/jira/browse/CB/component/12320639</issue>

    <js-module src="www/vibration.js" name="notification">
        <merges target="navigator.notification" />
        <merges target="navigator" />
    </js-module>

    <!-- firefoxos -->
    <platform name="firefoxos">
        <config-file target="www/config.xml" parent="/*">
            <feature name="Vibration">
                <param name="firefoxos-package" value="Vibration" />
            </feature>
        </config-file>                                         
        <js-module src="src/firefoxos/VibrationProxy.js" name="VibrationProxy">
            <runs />
        </js-module>
    </platform>

    <!-- wp7 -->
    <platform name="wp7">
        <config-file target="config.xml" parent="/*">
            <feature name="Vibration">
                <param name="wp-package" value="Vibration"/>
            </feature>
        </config-file>

        <source-file src="src/wp/Vibration.cs" />
    </platform>

    <!-- wp8 -->
    <platform name="wp8">
        <config-file target="config.xml" parent="/*">
            <feature name="Vibration">
                <param name="wp-package" value="Vibration"/>
            </feature>
        </config-file>

        <source-file src="src/wp/Vibration.cs" />
    </platform>

    <!-- windows -->
    <platform name="windows">
        <js-module src="src/windows/VibrationProxy.js" name="VibrationProxy">
            <runs />
        </js-module>

        <framework src="src/windows/Vibration/Vibration.csproj" target="phone"
            type="projectReference" custom="true" versions="<10.0.0" />
    </platform>

    <!-- android -->
    <platform name="android">
        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="Vibration">
                <param name="android-package" value="org.apache.cordova.vibration.Vibration"/>
            </feature>
        </config-file>

        <source-file src="src/android/Vibration.java" target-dir="src/org/apache/cordova/vibration" />

        <config-file target="AndroidManifest.xml" parent="/manifest">
            <uses-permission android:name="android.permission.VIBRATE"/>
        </config-file>
    </platform>

    <!-- amazon-fireos -->
    <platform name="amazon-fireos">
        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="Vibration">
                <param name="android-package" value="org.apache.cordova.vibration.Vibration"/>
            </feature>
        </config-file>

        <source-file src="src/android/Vibration.java" target-dir="src/org/apache/cordova/vibration" />

        <config-file target="AndroidManifest.xml" parent="/manifest">
            <uses-permission android:name="android.permission.VIBRATE"/>
        </config-file>
    </platform>
    
    <!-- ubuntu -->
    <platform name="ubuntu">
        <header-file src="src/ubuntu/vibration.h" />
        <source-file src="src/ubuntu/vibration.cpp" />
    </platform>

    <!-- ios -->
    <platform name="ios">
        <config-file target="config.xml" parent="/*">
            <feature name="Vibration">
                <param name="ios-package" value="CDVVibration"/>
            </feature>
        </config-file>
        <header-file src="src/ios/CDVVibration.h" />
	    <source-file src="src/ios/CDVVibration.m" />

		<framework src="AudioToolbox.framework" weak="true" />
    </platform>
	
    <!-- blackberry10 -->
    <platform name="blackberry10">
        <source-file src="src/blackberry10/index.js" target-dir="Vibration"/>
        <lib-file src="src/blackberry10/native/device/libVibration.so" arch="device" />
        <lib-file src="src/blackberry10/native/simulator/libVibration.so" arch="simulator" />
        <config-file target="www/config.xml" parent="/widget">
            <feature name="Vibration" value="Vibration" />
        </config-file>
    </platform>

    <!-- tizen -->
    <platform name="tizen">
        <js-module src="src/tizen/VibrationProxy.js" name="VibrationProxy">
            <runs />
        </js-module>
    </platform>
</plugin>
