<?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://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-navigation href="http://audio.ibeat.org" />
    <allow-navigation href="http://whatheaders.com" />
    <allow-navigation href="http://*.apache.org" />
    <allow-navigation href="https://*.apache.org" />
    <allow-navigation href="http://www.google.com" />
    <allow-navigation href="https://www.google.com" />
    <allow-navigation href="http://google.co.uk" />
    <allow-navigation href="https://www.google.co.uk" />
    <allow-navigation href="http://techslides.com" />
    <allow-navigation href="httpssss://example.com" />
    <allow-navigation href="cdvfile:*" />

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