<!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"> <!-- ISO-8859-1 -->
    <title>Cordova Mobile Spec</title>
    <link rel="stylesheet" href="../../master.css" type="text/css" media="screen" title="no title" charset="utf-8">
  </head>
  <body id="stage" class="theme">
    <h1 id="header">InAppBrowser - Script / Style Injection Test</h1>
    <h2 id="style-update-file" style="display:none">Style updated from file</h2>
    <h2 id="style-update-literal" style="display:none">Style updated from literal</h2>
    <div>User-Agent: <cite id="u-a"></cite></div>
  </body>
  <script>
      function updateUserAgent() {
          document.getElementById("u-a").textContent = navigator.userAgent;
      }
      updateUserAgent();
      window.setInterval(updateUserAgent, 1500);
  </script>
</html>
