<!--

 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.

-->

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <meta name="viewport" content="width=device-width, height=device-height, user-scalable=yes, initial-scale=1.0;" />

    <title>Cordova API Specs</title>

    <link rel="stylesheet" href="../master.css" type="text/css" media="screen" title="no title" charset="utf-8">
    <script type="text/javascript" src="../cordova.js"></script>
  </head>
  <body id="stage" class="theme">
    <h1>Cordova API Specs</h1>

    <a href="pages/all.html" class="btn large" style="width:100%;">Run All Tests</a>
    <a href="pages/accelerometer.html" class="btn large" style="width:100%;">Run Accelerometer Tests</a>
    <a href="pages/battery.html" class="btn large" style="width:100%;">Run Battery Tests</a>
    <a href="pages/camera.html" class="btn large" style="width:100%;">Run Camera Tests</a>
    <a href="pages/capture.html" class="btn large" style="width:100%;">Run Capture Tests</a>
    <a href="pages/compass.html" class="btn large" style="width:100%;">Run Compass Tests</a>
    <a href="pages/contacts.html" class="btn large" style="width:100%;">Run Contacts Tests</a>
    <a href="pages/device.html" class="btn large" style="width:100%;">Run Device Tests</a>
    <a href="pages/file.html" class="btn large" style="width:100%;">Run File Tests</a>
    <a href="pages/filetransfer.html" class="btn large" style="width:100%;">Run FileTransfer Tests</a>
    <a href="pages/geolocation.html" class="btn large" style="width:100%;">Run Geolocation Tests</a>
    <a href="pages/media.html" class="btn large" style="width:100%;">Run Media Tests</a>
    <a href="pages/network.html" class="btn large" style="width:100%;">Run Network Tests</a>
    <a href="pages/notification.html" class="btn large" style="width:100%;">Run Notification Tests</a>
    <a href="pages/platform.html" class="btn large" style="width:100%;">Run Platform Tests</a>
    <a href="pages/storage.html" class="btn large" style="width:100%;">Run Storage Tests</a>

    <h2> </h2><div class="backBtn" onclick="backHome();">Back</div>
  </body>
</html>
