<?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"
    id="org.apache.cordova.labs.tcpsocket"
    version="0.0.1">
    <name>TCPSocket</name>
    <description>Cordova TCP Socket Plugin</description>
    <license>Apache 2.0</license>
    <keywords>cordova,tcpsocket,socket,tcp</keywords>


	<engines>
		<engine name="cordova" version=">=3.6.0" />
	</engines>

    <js-module src="www/TCPSocket.js" name="TCPSocket">
        <clobbers target="navigator.TCPSocket" />
    </js-module>

    <!-- firefoxos -->
    <platform name="firefoxos">
        <config-file target="config.xml" parent="/*">
            <permission name="tcp-socket" description="Required for accessing TCP Socket"
                        privileged="true"/>
        </config-file>
        <js-module src="src/firefoxos/TCPSocketProxy.js" name="TCPSocketProxy">
            <runs />
        </js-module>
    </platform>
</plugin>

