<?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="httpssss://example.com" />
</widget>
