<?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.
-->

<widget id="whatever" version="1.1.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>HelloWorld</name>
    <description>
        A sample Apache Cordova application.
    </description>
    <author email="dev@cordova.com" href="http://cordova.io"></author>
    <license>Apache 2.0 License</license>
    <preference name="Orientation" value="portrait" />
    <content src="index.html" main="index.js" />
    <plugin name="cordova-plugin-whitelist" spec="1" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
    <icon src="res/electron/cordova.png"  width="16" height="16"/>
    <platform name="electron">
        <icon src="res/electron/cordova.png"/>
        <icon src="res/electron/cordova@1.5.png" />
        <icon src="res/electron/cordova@2.png" />
        <icon src="res/electron/cordova@3.png" />
        <icon src="res/electron/cordova@4.png" />
        <icon src="res/electron/cordova@8.png" />
        <icon src="res/electron/cordova@16.png" />
        <icon src="res/electron/cordova_512.png" target="installer" />
    </platform>
    <engine name="electron" spec="github:Apache/cordova-electron" />
</widget>
