<!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">
    <script type="text/javascript" charset="utf-8" src="../cordova.js"></script>      

      
    <script type="text/javascript" charset="utf-8">

    var deviceReady = false;
    
    /**
     * Function called when page has finished loading.
     */
    function init() {
        document.addEventListener("deviceready", function() {
                deviceReady = true;
                console.log("Device="+device.platform+" "+device.version);
            }, false);
        function updateUserAgent() {
            document.getElementById("user-agent").textContent = navigator.userAgent;
        }
        updateUserAgent();
        window.setInterval(updateUserAgent, 1500);
        window.setTimeout(function() {
        	if (!deviceReady) {
        		alert("Error: Apache Cordova did not initialize.  Demo will not run correctly.");
        	}
        },1000);
    }

    function doOpen(url, target, params) {
        var iab = window.open(url, target, params);
        if (!iab) {
            alert('window.open returned ' + iab);
            return;
        }
        function logEvent(e) {
            if (e.type == 'loaderror') {
                console.log('IAB event=' + e.type + ' code=' + e.code + ' message=' + e.message);
            } else {
                console.log('IAB event=' + e.type);
            }
        }
        iab.addEventListener('loaderror', logEvent, false);
        iab.addEventListener('loadstart', logEvent, false);
        iab.addEventListener('loadstop', logEvent, false);
        iab.addEventListener('exit', logEvent, false);
        return iab;
    }

    function openWithStyle(url, cssUrl, useCallback) {
        var iab = doOpen(url, '_blank', 'location=yes');
        var callback = function(results) {
            if (results && results.length === 0) {
                alert('Results verified');
            } else {
                console.log(results);
                alert('Got: ' + typeof(results) + '\n' + JSON.stringify(results));
            }
        };
        if (cssUrl) {
            iab.addEventListener('loadstop', function(event) {
                iab.insertCSS({file: cssUrl}, useCallback && callback);
            });
        } else {
            iab.addEventListener('loadstop', function(event) {
                iab.insertCSS({code:'#style-update-literal { \ndisplay: block !important; \n}'},
                              useCallback && callback);
            });
        }
    }

    function openWithScript(url, jsUrl, useCallback) {
        var iab = doOpen(url, '_blank', 'location=yes');
        if (jsUrl) {
            iab.addEventListener('loadstop', function(event) {
                iab.executeScript({file: jsUrl}, useCallback && function(results) {
                    if (results && results.length === 0) {
                        alert('Results verified');
                    } else {
                        console.log(results);
                        alert('Got: ' + typeof(results) + '\n' + JSON.stringify(results));
                    }
                });
            });
        } else {
            iab.addEventListener('loadstop', function(event) {
                var code = '(function(){\n' +
                  '    var header = document.getElementById("header");\n' +
                  '    header.innerHTML = "Script literal successfully injected";\n' +
                  '    return "abc";\n' +
                  '})()';
                iab.executeScript({code:code}, useCallback && function(results) {
                    if (results && results.length === 1 && results[0] === 'abc') {
                        alert('Results verified');
                    } else {
                        console.log(results);
                        alert('Got: ' + typeof(results) + '\n' + JSON.stringify(results));
                    }
                });
            });
        }
    }
    </script>
  </head>
  <body onload="init();" id="stage" class="theme">
  
    <h1>InAppBrowser</h1>
    <div id="info">
        Make sure http://www.google.com is white listed. </br>
        Make sure http://www.apple.com is not in the white list.</br>  In iOS, starred <span style="vertical-align:super">*</span> tests will leave the app with no way to return.  </br>
        <h4>User-Agent: <span id="user-agent"> </span></h4>
    </div>
    <div onclick="backHome();">Back</div>
    <h1>Local URL</h1>
    <div class="btn large" onclick="doOpen('local.html');">Default: CordovaWebView</div>
    <div class="btn large" onclick="doOpen('local.html', '_self');">Target=Self: CordovaWebView</div>
    <div class="btn large" onclick="doOpen('local.html', '_system');">Target=System: Error</div>
    <div class="btn large" onclick="doOpen('local.html', '_blank');">Target=Blank: InAppBrowser</div>
    <div class="btn large" onclick="doOpen('local.html', 'random_string');">Target=Random: InAppBrowser</div>
    <div class="btn large" onclick="doOpen('local.html', 'random_string', 'location=no');">Target=Random, no location bar: InAppBrowser</div>
    <h1>White Listed URL</h1>
    <div class="btn large" onclick="doOpen('http://www.google.com');">Default: CordovaWebView<span style="vertical-align:super">*</span></div>
    <div class="btn large" onclick="doOpen('http://www.google.com', '_self');">Target=Self: CordovaWebView<span style="vertical-align:super">*</span></div>
    <div class="btn large" onclick="doOpen('http://www.google.com', '_system');">Target=System: System Browser</div>
    <div class="btn large" onclick="doOpen('http://www.google.com', '_blank');">Target=Blank: InAppBrowser</div>
    <div class="btn large" onclick="doOpen('http://www.google.com', 'random_string');">Target=Random: InAppBrowser</div>
    <div class="btn large" onclick="doOpen('http://www.google.com', 'random_string', 'location=no');">Target=Random, no location bar: InAppBrowser</div>
    <h1>Non White Listed URL</h1>
    <div class="btn large" onclick="doOpen('http://www.apple.com');">Default: InAppBrowser</div>
    <div class="btn large" onclick="doOpen('http://www.apple.com', '_self');">Target=Self: InAppBrowser</div>
    <div class="btn large" onclick="doOpen('http://www.apple.com', '_system');">Target=System: System</div>
    <div class="btn large" onclick="doOpen('http://www.apple.com', '_blank');">Target=Blank: InAppBrowser</div>
    <div class="btn large" onclick="doOpen('http://www.apple.com', 'random_string');">Target=Random: InAppBrowser</div>
    <div class="btn large" onclick="doOpen('http://www.apple.com', 'random_string', 'location=no');">Target=Random, no location bar: InAppBrowser</div>
    <h1>Page with redirect</h1>
    <div class="btn large" onclick="doOpen('http://google.com', 'random_string', 'location=no');">http://google.com (should 301)</div>
    <div class="btn large" onclick="doOpen('http://www.zhihu.com/answer/16714076', 'random_string', 'location=no');">http://www.zhihu.com/answer/16714076 (should 302)</div>
    <h1>PDF URL</h1>
    <div class="btn large" onclick="doOpen('http://www.stluciadance.com/prospectus_file/sample.pdf');">Remote URL</div>
    <div class="btn large" onclick="doOpen('local.pdf', '_blank');">Local URL</div>
    <h1>INVALID URL</h1>
    <div class="btn large" onclick="doOpen('x-ttp://www.invalid.com/', '_blank');">Invalid Scheme</div>
    <div class="btn large" onclick="doOpen('http://www.inv;alid.com/', '_blank');">Invalid Host</div>
    <div class="btn large" onclick="doOpen('nonexistent.html', '_blank');">Missing File</div>
    <h1>CSS / JS Injection</h1>
    <div class="btn large" onclick="doOpen('inject.html', '_blank');">Original Document</div>
    <div class="btn large" onclick="openWithStyle('inject.html','inject.css');">CSS File Injection</div>
    <div class="btn large" onclick="openWithStyle('inject.html','inject.css', true);">CSS File Injection (CB)</div>
    <div class="btn large" onclick="openWithStyle('inject.html');">CSS Literal Injection</div>
    <div class="btn large" onclick="openWithStyle('inject.html', null, true);">CSS Literal Injection (CB)</div>
    <div class="btn large" onclick="openWithScript('inject.html', 'inject.js');">Script File Injection</div>
    <div class="btn large" onclick="openWithScript('inject.html', 'inject.js', true);">Script File Injection (CB)</div>
    <div class="btn large" onclick="openWithScript('inject.html');">Script Literal Injection</div>
    <div class="btn large" onclick="openWithScript('inject.html', null, true);">Script Literal Injection (CB)</div>
    <h2> </h2><div class="backBtn" onclick="backHome();">Back</div>
  </body>
</html>
