<?xml version='1.0' encoding='utf-8'?>
<widget id="org.apache.mobilespec" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<!--
  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.
-->
    <name>mobilespec</name>
    <author>Apache Cordova</author>
    <description>
        Cordova test suite.
    </description>
    <access origin="http://audio.ibeat.org" />
    <access origin="http://cordova-filetransfer.jitsu.com" />
    <access origin="http://whatheaders.com" />
    <access origin="http://*.apache.org" />
    <access origin="https://*.apache.org" />
    <access origin="http://www.google.com" />
    <access origin="https://www.google.com" />
    <access origin="http://google.co.uk" />
    <access origin="https://www.google.co.uk" />
    <access origin="http://techslides.com" />
    <access origin="httpssss://example.com" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="tel:*" />
    <allow-intent href="www.google.com" />
    <allow-navigation href="data:*" />
    <platform name="blackberry10">
        <access origin="file:///" />
        <access origin="https://www.apache.org" />
        <access origin="http://cordova.apache.org" />
        <access origin="http://foobar.apache.org" />
        <access origin="http://www.apache.org" />
    </platform>
    <preference name="iosPersistentFileLocation" value="Library" />
    <preference name="AndroidPersistentFileLocation" value="Internal" />
    <platform name="android">
        <splash src="www/splashscreens/android-port-hdpi.png" density="port-hdpi"/>
        <splash src="www/splashscreens/android-port-xhdpi.png" density="port-xhdpi"/>
        <splash src="www/splashscreens/android-land-hdpi.png" density="land-hdpi"/>
        <splash src="www/splashscreens/android-land-xhdpi.png" density="land-xhdpi"/>
        <preference name="SplashScreen" value="screen" />
        <preference name="SplashScreenDelay" value="1000" />
        <!-- The spinner shows only when SplashScreen is disabled. -->
        <preference name="LoadingPageDialog" value="Loading,Main Page" />
        <preference name="LoadingPage" value="Loading,Sub Page" />
    </platform>
</widget>
