<!DOCTYPE html>
<!--

 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.

-->


<html>
  <head>
    <meta name="viewport" content="width=device-width,height=device-height,user-scalable=no,maximum-scale=1.0,initial-scale=1.0" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Cordova Mobile Spec</title>
    <link rel="stylesheet" href="../master.css" type="text/css" media="screen" title="no title" charset="utf-8">
    <script type="text/javascript" charset="utf-8" src="../cordova-incl.js"></script>
    <script type="text/javascript" charset="utf-8" src="../main.js"></script>
    <style>
      iframe, .iframe_container {
        height:100px;
        overflow:scroll;
      }
    </style>
  </head>
  <body onload="init();" id="stage" class="theme">
    <h1>Page2 App</h1>
    <h2>This is page 2 of a Apache Cordova app</h2>
    <div id="info">
        <h4>Platform: <span id="platform">  </span></h4>
        <h4>Version: <span id="version"> </span></h4>
        <h4>UUID: <span id="uuid">  </span></h4>
        <h4>Name: <span id="name"> </span></h4>
        <h4>Width: <span id="width">  </span>,   Height: <span id="height"> 
                   </span>, Color Depth: <span id="colorDepth"></span></h4>
     </div>
     about:blank
     <div class="iframe_container">
       <iframe src="about:blank"></iframe>
     </div>
     invalid URL
     <div class="iframe_container">
       <iframe src="x-ttp://www.invalid.com/"></iframe>
     </div>
     whatheaders.com
     <div class="iframe_container">
       <iframe src="http://whatheaders.com"></iframe>
     </div>
     apache.org
     <div class="iframe_container">
       <iframe src="" id="apacheiframe"></iframe>
     </div>
     <div><button class="backBtn" onclick="backHome();">Back</button></div>
  </body>
  <script>
    setTimeout(function() {
        console.log('loading iframe after timeout.');
        document.querySelector('#apacheiframe').src = 'http://apache.org';
    }, 2000);
  </script>
</html>
