Repository: cordova-plugin-inappbrowser
Updated Branches:
  refs/heads/master 761164546 -> 902427525


CB-12895 : added eslint and removed jshint


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/commit/90242752
Tree: 
http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/tree/90242752
Diff: 
http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/diff/90242752

Branch: refs/heads/master
Commit: 902427525f896ae80b11cc0061a9e2420a00662d
Parents: 7611645
Author: Audrey So <[email protected]>
Authored: Mon Jun 12 10:34:08 2017 -0700
Committer: Audrey So <[email protected]>
Committed: Tue Aug 29 15:13:21 2017 -0700

----------------------------------------------------------------------
 .eslintrc.yml                           |  10 ++
 .jshintrc                               |  16 ---
 package.json                            |  12 +-
 src/browser/InAppBrowserProxy.js        | 155 +++++++++++-----------
 src/firefoxos/InAppBrowserProxy.js      |  43 +++---
 src/ubuntu/InAppBrowser_escapeScript.js |   9 +-
 src/windows/InAppBrowserProxy.js        | 191 +++++++++++++--------------
 tests/.eslintrc.yml                     |   2 +
 tests/resources/inject.js               |   4 +-
 tests/tests.js                          | 150 ++++++++++-----------
 www/inappbrowser.js                     |  46 +++----
 www/windows8/InAppBrowserProxy.js       |  76 +++++------
 12 files changed, 351 insertions(+), 363 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/.eslintrc.yml
----------------------------------------------------------------------
diff --git a/.eslintrc.yml b/.eslintrc.yml
new file mode 100644
index 0000000..0cccb8c
--- /dev/null
+++ b/.eslintrc.yml
@@ -0,0 +1,10 @@
+root: true
+extends: semistandard
+rules:
+  indent:
+    - error
+    - 4
+  camelcase: off
+  padded-blocks: off
+  operator-linebreak: off
+  no-throw-literal: off
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/.jshintrc
----------------------------------------------------------------------
diff --git a/.jshintrc b/.jshintrc
deleted file mode 100644
index cf48aac..0000000
--- a/.jshintrc
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "browser": true
-  , "devel": true
-  , "bitwise": true
-  , "undef": true
-  , "trailing": true
-  , "quotmark": false
-  , "indent": 4
-  , "unused": "vars"
-  , "latedef": "nofunc"
-  , "globals": {
-        "module": false,
-        "exports": false,
-        "require": false
-    }
-}

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index a7e0ef0..2f97b5f 100644
--- a/package.json
+++ b/package.json
@@ -44,8 +44,8 @@
     "cordova-firefoxos"
   ],
   "scripts": {
-    "test": "npm run jshint",
-    "jshint": "node node_modules/jshint/bin/jshint www && node 
node_modules/jshint/bin/jshint src && node node_modules/jshint/bin/jshint tests"
+    "test": "npm run eslint",
+    "eslint": "node node_modules/eslint/bin/eslint www && node 
node_modules/eslint/bin/eslint src && node node_modules/eslint/bin/eslint tests"
   },
   "engines": {
     "cordovaDependencies": {
@@ -60,6 +60,12 @@
   "author": "Apache Software Foundation",
   "license": "Apache-2.0",
   "devDependencies": {
-    "jshint": "^2.6.0"
+    "eslint": "^4.0.0",
+    "eslint-config-semistandard": "^11.0.0",
+    "eslint-config-standard": "^10.2.1",
+    "eslint-plugin-import": "^2.3.0",
+    "eslint-plugin-node": "^5.0.0",
+    "eslint-plugin-promise": "^3.5.0",
+    "eslint-plugin-standard": "^3.0.1"
   }
 }

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/src/browser/InAppBrowserProxy.js
----------------------------------------------------------------------
diff --git a/src/browser/InAppBrowserProxy.js b/src/browser/InAppBrowserProxy.js
index 2d17599..1c62574 100644
--- a/src/browser/InAppBrowserProxy.js
+++ b/src/browser/InAppBrowserProxy.js
@@ -29,43 +29,43 @@ var browserWrap,
     forwardButton,
     closeButton;
 
-function attachNavigationEvents(element, callback) {
+function attachNavigationEvents (element, callback) {
     var onError = function () {
         try {
-            callback({ type: "loaderror", url: 
this.contentWindow.location.href}, {keepCallback: true});
+            callback({ type: 'loaderror', url: 
this.contentWindow.location.href }, {keepCallback: true}); // 
eslint-disable-line standard/no-callback-literal
         } catch (err) {
             // blocked by CORS :\
-            callback({ type: "loaderror", url: null}, {keepCallback: true});
+            callback({ type: 'loaderror', url: null }, {keepCallback: true}); 
// eslint-disable-line standard/no-callback-literal
         }
     };
 
-    element.addEventListener("pageshow", function () {
+    element.addEventListener('pageshow', function () {
         try {
-            callback({ type: "loadstart", url: 
this.contentWindow.location.href}, {keepCallback: true});
+            callback({ type: 'loadstart', url: 
this.contentWindow.location.href }, {keepCallback: true}); // 
eslint-disable-line standard/no-callback-literal
         } catch (err) {
             // blocked by CORS :\
-            callback({ type: "loadstart", url: null}, {keepCallback: true});
+            callback({ type: 'loadstart', url: null }, {keepCallback: true}); 
// eslint-disable-line standard/no-callback-literal
         }
     });
 
-    element.addEventListener("load", function () {
+    element.addEventListener('load', function () {
         try {
-            callback({ type: "loadstop", url: 
this.contentWindow.location.href}, {keepCallback: true});
+            callback({ type: 'loadstop', url: this.contentWindow.location.href 
}, {keepCallback: true}); // eslint-disable-line standard/no-callback-literal
         } catch (err) {
             // blocked by CORS :\
-            callback({ type: "loadstop", url: null}, {keepCallback: true});
+            callback({ type: 'loadstop', url: null }, {keepCallback: true}); 
// eslint-disable-line standard/no-callback-literal
         }
     });
 
-    element.addEventListener("error", onError);
-    element.addEventListener("abort", onError);
+    element.addEventListener('error', onError);
+    element.addEventListener('abort', onError);
 }
 
 var IAB = {
     close: function (win, lose) {
         if (browserWrap) {
             // use the "open" function callback so that the exit event is 
fired properly
-            if (IAB._win) IAB._win({ type: "exit" });
+            if (IAB._win) IAB._win({ type: 'exit' });
 
             browserWrap.parentNode.removeChild(browserWrap);
             browserWrap = null;
@@ -75,34 +75,34 @@ var IAB = {
 
     show: function (win, lose) {
         if (browserWrap) {
-            browserWrap.style.display = "block";
+            browserWrap.style.display = 'block';
         }
     },
 
     open: function (win, lose, args) {
-        var strUrl = args[0],
-            target = args[1],
-            features = args[2];
+        var strUrl = args[0];
+        var target = args[1];
+        var features = args[2];
 
         IAB._win = win;
 
-        if (target === "_self" || !target) {
+        if (target === '_self' || !target) {
             window.location = strUrl;
-        } else if (target === "_system") {
-            modulemapper.getOriginalSymbol(window, 'window.open').call(window, 
strUrl, "_blank");
+        } else if (target === '_system') {
+            modulemapper.getOriginalSymbol(window, 'window.open').call(window, 
strUrl, '_blank');
         } else {
             // "_blank" or anything else
             if (!browserWrap) {
-                browserWrap = document.createElement("div");
-                browserWrap.style.position = "absolute";
-                browserWrap.style.top = "0";
-                browserWrap.style.left = "0";
-                browserWrap.style.boxSizing = "border-box";
-                browserWrap.style.borderWidth = "40px";
-                browserWrap.style.width = "100vw";
-                browserWrap.style.height = "100vh";
-                browserWrap.style.borderStyle = "solid";
-                browserWrap.style.borderColor = "rgba(0,0,0,0.25)";
+                browserWrap = document.createElement('div');
+                browserWrap.style.position = 'absolute';
+                browserWrap.style.top = '0';
+                browserWrap.style.left = '0';
+                browserWrap.style.boxSizing = 'border-box';
+                browserWrap.style.borderWidth = '40px';
+                browserWrap.style.width = '100vw';
+                browserWrap.style.height = '100vh';
+                browserWrap.style.borderStyle = 'solid';
+                browserWrap.style.borderColor = 'rgba(0,0,0,0.25)';
 
                 browserWrap.onclick = function () {
                     setTimeout(function () {
@@ -113,71 +113,68 @@ var IAB = {
                 document.body.appendChild(browserWrap);
             }
 
-            if (features.indexOf("hidden=yes") !== -1) {
-                browserWrap.style.display = "none";
+            if (features.indexOf('hidden=yes') !== -1) {
+                browserWrap.style.display = 'none';
             }
 
-            popup = document.createElement("iframe");
-            popup.style.borderWidth = "0px";
-            popup.style.width = "100%";
+            popup = document.createElement('iframe');
+            popup.style.borderWidth = '0px';
+            popup.style.width = '100%';
 
             browserWrap.appendChild(popup);
 
-            if (features.indexOf("location=yes") !== -1 || 
features.indexOf("location") === -1) {
-                popup.style.height = "calc(100% - 60px)";
-                popup.style.marginBottom = "-4px";
+            if (features.indexOf('location=yes') !== -1 || 
features.indexOf('location') === -1) {
+                popup.style.height = 'calc(100% - 60px)';
+                popup.style.marginBottom = '-4px';
 
-                navigationButtonsDiv = document.createElement("div");
-                navigationButtonsDiv.style.height = "60px";
-                navigationButtonsDiv.style.backgroundColor = "#404040";
-                navigationButtonsDiv.style.zIndex = "999";
+                navigationButtonsDiv = document.createElement('div');
+                navigationButtonsDiv.style.height = '60px';
+                navigationButtonsDiv.style.backgroundColor = '#404040';
+                navigationButtonsDiv.style.zIndex = '999';
                 navigationButtonsDiv.onclick = function (e) {
                     e.cancelBubble = true;
                 };
 
-                navigationButtonsDivInner = document.createElement("div");
-                navigationButtonsDivInner.style.paddingTop = "10px";
-                navigationButtonsDivInner.style.height = "50px";
-                navigationButtonsDivInner.style.width = "160px";
-                navigationButtonsDivInner.style.margin = "0 auto";
-                navigationButtonsDivInner.style.backgroundColor = "#404040";
-                navigationButtonsDivInner.style.zIndex = "999";
+                navigationButtonsDivInner = document.createElement('div');
+                navigationButtonsDivInner.style.paddingTop = '10px';
+                navigationButtonsDivInner.style.height = '50px';
+                navigationButtonsDivInner.style.width = '160px';
+                navigationButtonsDivInner.style.margin = '0 auto';
+                navigationButtonsDivInner.style.backgroundColor = '#404040';
+                navigationButtonsDivInner.style.zIndex = '999';
                 navigationButtonsDivInner.onclick = function (e) {
                     e.cancelBubble = true;
                 };
 
+                backButton = document.createElement('button');
+                backButton.style.width = '40px';
+                backButton.style.height = '40px';
+                backButton.style.borderRadius = '40px';
 
-                backButton = document.createElement("button");
-                backButton.style.width = "40px";
-                backButton.style.height = "40px";
-                backButton.style.borderRadius = "40px";
-
-                backButton.innerHTML = "←";
-                backButton.addEventListener("click", function (e) {
-                    if (popup.canGoBack)
-                        popup.goBack();
+                backButton.innerHTML = '←';
+                backButton.addEventListener('click', function (e) {
+                    if (popup.canGoBack) { popup.goBack(); }
                 });
 
-                forwardButton = document.createElement("button");
-                forwardButton.style.marginLeft = "20px";
-                forwardButton.style.width = "40px";
-                forwardButton.style.height = "40px";
-                forwardButton.style.borderRadius = "40px";
+                forwardButton = document.createElement('button');
+                forwardButton.style.marginLeft = '20px';
+                forwardButton.style.width = '40px';
+                forwardButton.style.height = '40px';
+                forwardButton.style.borderRadius = '40px';
 
-                forwardButton.innerHTML = "→";
-                forwardButton.addEventListener("click", function (e) {
-                    if (popup.canGoForward)
-                        popup.goForward();
+                forwardButton.innerHTML = '→';
+                forwardButton.addEventListener('click', function (e) {
+                    if (popup.canGoForward) { popup.goForward(); }
                 });
 
-                closeButton = document.createElement("button");
-                closeButton.style.marginLeft = "20px";
-                closeButton.style.width = "40px";
-                closeButton.style.height = "40px";
-                closeButton.style.borderRadius = "40px";
+                closeButton = document.createElement('button');
+                closeButton.style.marginLeft = '20px';
+                closeButton.style.width = '40px';
+                closeButton.style.height = '40px';
+                closeButton.style.borderRadius = '40px';
 
-                closeButton.innerHTML = "✖";
-                closeButton.addEventListener("click", function (e) {
+                closeButton.innerHTML = '✖';
+                closeButton.addEventListener('click', function (e) {
                     setTimeout(function () {
                         IAB.close();
                     }, 0);
@@ -194,7 +191,7 @@ var IAB = {
 
                 browserWrap.appendChild(navigationButtonsDiv);
             } else {
-                popup.style.height = "100%";
+                popup.style.height = '100%';
             }
 
             // start listening for navigation events
@@ -205,8 +202,8 @@ var IAB = {
     },
 
     injectScriptCode: function (win, fail, args) {
-        var code = args[0],
-            hasCallback = args[1];
+        var code = args[0];
+        var hasCallback = args[1];
 
         if (browserWrap && popup) {
             try {
@@ -214,7 +211,7 @@ var IAB = {
                 if (hasCallback) {
                     win([]);
                 }
-            } catch(e) {
+            } catch (e) {
                 console.error('Error occured while trying to injectScriptCode: 
' + JSON.stringify(e));
             }
         }
@@ -226,7 +223,7 @@ var IAB = {
         if (fail) {
             fail(msg);
         }
-    }, 
+    },
 
     injectStyleCode: function (win, fail, args) {
         var msg = 'Browser cordova-plugin-inappbrowser injectStyleCode is not 
yet implemented';
@@ -247,4 +244,4 @@ var IAB = {
 
 module.exports = IAB;
 
-require("cordova/exec/proxy").add("InAppBrowser", module.exports);
+require('cordova/exec/proxy').add('InAppBrowser', module.exports);

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/src/firefoxos/InAppBrowserProxy.js
----------------------------------------------------------------------
diff --git a/src/firefoxos/InAppBrowserProxy.js 
b/src/firefoxos/InAppBrowserProxy.js
index 33db1b9..4538c05 100644
--- a/src/firefoxos/InAppBrowserProxy.js
+++ b/src/firefoxos/InAppBrowserProxy.js
@@ -32,7 +32,7 @@ var IABExecs = {
         if (browserWrap) {
             browserWrap.parentNode.removeChild(browserWrap);
             browserWrap = null;
-            if (typeof(win) == "function") win({type:'exit'});
+            if (typeof (win) === 'function') win({type: 'exit'});
         }
     },
 
@@ -48,17 +48,17 @@ var IABExecs = {
     },
 
     open: function (win, lose, args) {
-        var strUrl = args[0],
-            target = args[1],
-            features_string = args[2] || "location=yes", //location=yes is 
default
-            features = {};
+        var strUrl = args[0];
+        var target = args[1];
+        var features_string = args[2] || 'location=yes'; // location=yes is 
default
+        var features = {};
 
         var features_list = features_string.split(',');
-        features_list.forEach(function(feature) {
+        features_list.forEach(function (feature) {
             var tup = feature.split('=');
-            if (tup[1] == 'yes') {
+            if (tup[1] === 'yes') {
                 tup[1] = true;
-            } else if (tup[1] == 'no') {
+            } else if (tup[1] === 'no') {
                 tup[1] = false;
             } else {
                 var number = parseInt(tup[1]);
@@ -68,8 +68,7 @@ var IABExecs = {
             }
             features[tup[0]] = tup[1];
         });
-
-        function updateIframeSizeNoLocation() {
+        function updateIframeSizeNoLocation () {
             browserWrap.style.width = window.innerWidth + 'px';
             browserWrap.style.height = window.innerHeight + 'px';
             browserWrap.style.zIndex = '999999999';
@@ -117,7 +116,7 @@ var IABExecs = {
 
             var checkForwardBackward = function () {
                 var backReq = browserElem.getCanGoBack();
-                backReq.onsuccess = function() {
+                backReq.onsuccess = function () {
                     if (this.result) {
                         back.classList.remove('disabled');
                     } else {
@@ -125,7 +124,7 @@ var IABExecs = {
                     }
                 };
                 var forwardReq = browserElem.getCanGoForward();
-                forwardReq.onsuccess = function() {
+                forwardReq.onsuccess = function () {
                     if (this.result) {
                         forward.classList.remove('disabled');
                     } else {
@@ -158,21 +157,21 @@ var IABExecs = {
             browserWrap.appendChild(browserElem);
             document.body.appendChild(browserWrap);
 
-            //we use mozbrowserlocationchange instead of mozbrowserloadstart 
to get the url
-            browserElem.addEventListener('mozbrowserlocationchange', 
function(e){
+            // we use mozbrowserlocationchange instead of mozbrowserloadstart 
to get the url
+            browserElem.addEventListener('mozbrowserlocationchange', function 
(e) {
                 win({
-                    type:'loadstart',
-                    url : e.detail
+                    type: 'loadstart',
+                    url: e.detail
                 });
             }, false);
-            browserElem.addEventListener('mozbrowserloadend', function(e){
-                win({type:'loadstop'});
+            browserElem.addEventListener('mozbrowserloadend', function (e) {
+                win({type: 'loadstop'});
             }, false);
-            browserElem.addEventListener('mozbrowsererror', function(e){
-                win({type:'loaderror'});
+            browserElem.addEventListener('mozbrowsererror', function (e) {
+                win({type: 'loaderror'});
             }, false);
-            browserElem.addEventListener('mozbrowserclose', function(e){
-                win({type:'exit'});
+            browserElem.addEventListener('mozbrowserclose', function (e) {
+                win({type: 'exit'});
             }, false);
         } else {
             window.location = strUrl;

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/src/ubuntu/InAppBrowser_escapeScript.js
----------------------------------------------------------------------
diff --git a/src/ubuntu/InAppBrowser_escapeScript.js 
b/src/ubuntu/InAppBrowser_escapeScript.js
index b01daeb..9b9d029 100644
--- a/src/ubuntu/InAppBrowser_escapeScript.js
+++ b/src/ubuntu/InAppBrowser_escapeScript.js
@@ -19,14 +19,13 @@
  *
 */
 
-/* jshint -W061 */
 /* global oxide */
 
-oxide.addMessageHandler("EXECUTE", function(msg) {
+oxide.addMessageHandler('EXECUTE', function (msg) {
     var code = msg.args.code;
     try {
-        msg.reply({result: eval(code)});
-    } catch(e) {
-        msg.error("Code threw exception: \"" + e + "\"");
+        msg.reply({result: eval(code)}); // eslint-disable-line no-eval
+    } catch (e) {
+        msg.error('Code threw exception: "' + e + '"');
     }
 });

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/src/windows/InAppBrowserProxy.js
----------------------------------------------------------------------
diff --git a/src/windows/InAppBrowserProxy.js b/src/windows/InAppBrowserProxy.js
index dec91db..9e544c5 100644
--- a/src/windows/InAppBrowserProxy.js
+++ b/src/windows/InAppBrowserProxy.js
@@ -1,4 +1,4 @@
-/*
+/*
  *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -21,9 +21,10 @@
 
 /* jslint sloppy:true */
 /* global Windows:true, setImmediate */
+/* eslint standard/no-callback-literal : 0 */
 
-var cordova = require('cordova'),
-    urlutil = require('cordova/urlutil');
+var cordova = require('cordova');
+var urlutil = require('cordova/urlutil');
 
 var browserWrap,
     popup,
@@ -40,56 +41,56 @@ var browserWrap,
 // http://msdn.microsoft.com/en-us/library/windows/apps/dn301831.aspx
 var isWebViewAvailable = cordova.platformId === 'windows';
 
-function attachNavigationEvents(element, callback) {
+function attachNavigationEvents (element, callback) {
     if (isWebViewAvailable) {
-        element.addEventListener("MSWebViewNavigationStarting", function (e) {
-            callback({ type: "loadstart", url: e.uri}, {keepCallback: true} );
+        element.addEventListener('MSWebViewNavigationStarting', function (e) {
+            callback({ type: 'loadstart', url: e.uri }, {keepCallback: true});
         });
 
-        element.addEventListener("MSWebViewNavigationCompleted", function (e) {
+        element.addEventListener('MSWebViewNavigationCompleted', function (e) {
             if (e.isSuccess) {
-                callback({ type: "loadstop", url: e.uri }, { keepCallback: 
true });
+                callback({ type: 'loadstop', url: e.uri }, { keepCallback: 
true });
             } else {
-                callback({ type: "loaderror", url: e.uri, code: 
e.webErrorStatus, message: "Navigation failed with error code " + 
e.webErrorStatus}, { keepCallback: true });
+                callback({ type: 'loaderror', url: e.uri, code: 
e.webErrorStatus, message: 'Navigation failed with error code ' + 
e.webErrorStatus }, { keepCallback: true });
             }
         });
 
-        element.addEventListener("MSWebViewUnviewableContentIdentified", 
function (e) {
+        element.addEventListener('MSWebViewUnviewableContentIdentified', 
function (e) {
             // WebView found the content to be not HTML.
             // 
http://msdn.microsoft.com/en-us/library/windows/apps/dn609716.aspx
-            callback({ type: "loaderror", url: e.uri, code: e.webErrorStatus, 
message: "Navigation failed with error code " + e.webErrorStatus}, { 
keepCallback: true });
+            callback({ type: 'loaderror', url: e.uri, code: e.webErrorStatus, 
message: 'Navigation failed with error code ' + e.webErrorStatus }, { 
keepCallback: true });
         });
 
-        element.addEventListener("MSWebViewContentLoading", function (e) {
+        element.addEventListener('MSWebViewContentLoading', function (e) {
             if (navigationButtonsDiv && popup) {
                 if (popup.canGoBack) {
-                    backButton.removeAttribute("disabled");
+                    backButton.removeAttribute('disabled');
                 } else {
-                    backButton.setAttribute("disabled", "true");
+                    backButton.setAttribute('disabled', 'true');
                 }
 
                 if (popup.canGoForward) {
-                    forwardButton.removeAttribute("disabled");
+                    forwardButton.removeAttribute('disabled');
                 } else {
-                    forwardButton.setAttribute("disabled", "true");
+                    forwardButton.setAttribute('disabled', 'true');
                 }
             }
         });
     } else {
         var onError = function () {
-            callback({ type: "loaderror", url: this.contentWindow.location}, 
{keepCallback: true});
+            callback({ type: 'loaderror', url: this.contentWindow.location }, 
{keepCallback: true});
         };
 
-        element.addEventListener("unload", function () {
-            callback({ type: "loadstart", url: this.contentWindow.location}, 
{keepCallback: true});
+        element.addEventListener('unload', function () {
+            callback({ type: 'loadstart', url: this.contentWindow.location }, 
{keepCallback: true});
         });
 
-        element.addEventListener("load", function () {
-            callback({ type: "loadstop", url: this.contentWindow.location}, 
{keepCallback: true});
+        element.addEventListener('load', function () {
+            callback({ type: 'loadstop', url: this.contentWindow.location }, 
{keepCallback: true});
         });
 
-        element.addEventListener("error", onError);
-        element.addEventListener("abort", onError);
+        element.addEventListener('error', onError);
+        element.addEventListener('abort', onError);
     }
 }
 
@@ -98,7 +99,7 @@ var IAB = {
         setImmediate(function () {
             if (browserWrap) {
                 if (navigationEventsCallback) {
-                    navigationEventsCallback({ type: "exit" });
+                    navigationEventsCallback({ type: 'exit' });
                 }
 
                 browserWrap.parentNode.removeChild(browserWrap);
@@ -107,52 +108,52 @@ var IAB = {
                 browserWrap = null;
                 popup = null;
 
-                document.removeEventListener("backbutton", 
hardwareBackCallback, false);
+                document.removeEventListener('backbutton', 
hardwareBackCallback, false);
             }
         });
     },
     show: function (win, lose) {
         setImmediate(function () {
             if (browserWrap) {
-                browserWrap.style.display = "block";
+                browserWrap.style.display = 'block';
             }
         });
     },
     hide: function (win, lose) {
         if (browserWrap) {
-            browserWrap.style.display = "none";
+            browserWrap.style.display = 'none';
         }
     },
     open: function (win, lose, args) {
         // make function async so that we can add navigation events handlers 
before view is loaded and navigation occured
         setImmediate(function () {
-            var strUrl = args[0],
-                target = args[1],
-                features = args[2],
-                url;
+            var strUrl = args[0];
+            var target = args[1];
+            var features = args[2];
+            var url;
 
             navigationEventsCallback = win;
 
-            if (target === "_system") {
+            if (target === '_system') {
                 url = new Windows.Foundation.Uri(strUrl);
                 Windows.System.Launcher.launchUriAsync(url);
-            } else if (target === "_self" || !target) {
+            } else if (target === '_self' || !target) {
                 window.location = strUrl;
             } else {
                 // "_blank" or anything else
                 if (!browserWrap) {
                     var browserWrapStyle = document.createElement('link');
-                    browserWrapStyle.rel = "stylesheet";
-                    browserWrapStyle.type = "text/css";
-                    browserWrapStyle.href = 
urlutil.makeAbsolute("/www/css/inappbrowser.css");
+                    browserWrapStyle.rel = 'stylesheet';
+                    browserWrapStyle.type = 'text/css';
+                    browserWrapStyle.href = 
urlutil.makeAbsolute('/www/css/inappbrowser.css');
 
                     document.head.appendChild(browserWrapStyle);
 
-                    browserWrap = document.createElement("div");
-                    browserWrap.className = "inAppBrowserWrap";
+                    browserWrap = document.createElement('div');
+                    browserWrap.className = 'inAppBrowserWrap';
 
-                    if (features.indexOf("fullscreen=yes") > -1) {
-                        
browserWrap.classList.add("inAppBrowserWrapFullscreen");
+                    if (features.indexOf('fullscreen=yes') > -1) {
+                        
browserWrap.classList.add('inAppBrowserWrapFullscreen');
                     }
 
                     // Save body overflow style to be able to reset it back 
later
@@ -166,22 +167,22 @@ var IAB = {
 
                     document.body.appendChild(browserWrap);
                     // Hide scrollbars for the whole body while inappbrowser's 
window is open
-                    document.body.style.msOverflowStyle = "none";
+                    document.body.style.msOverflowStyle = 'none';
                 }
 
-                if (features.indexOf("hidden=yes") !== -1) {
-                    browserWrap.style.display = "none";
+                if (features.indexOf('hidden=yes') !== -1) {
+                    browserWrap.style.display = 'none';
                 }
 
-                popup = document.createElement(isWebViewAvailable ? 
"x-ms-webview" : "iframe");
-                if (popup instanceof HTMLIFrameElement) {
+                popup = document.createElement(isWebViewAvailable ? 
'x-ms-webview' : 'iframe');
+                if (popup instanceof HTMLIFrameElement) { // 
eslint-disable-line no-undef
                     // For iframe we need to override bacground color of 
parent element here
                     // otherwise pages without background color set will have 
transparent background
-                    popup.style.backgroundColor = "white";
+                    popup.style.backgroundColor = 'white';
                 }
-                popup.style.borderWidth = "0px";
-                popup.style.width = "100%";
-                popup.style.marginBottom = "-5px";
+                popup.style.borderWidth = '0px';
+                popup.style.width = '100%';
+                popup.style.marginBottom = '-5px';
 
                 browserWrap.appendChild(popup);
 
@@ -191,14 +192,14 @@ var IAB = {
                     }, 0);
                 };
 
-                if (features.indexOf("hardwareback=yes") > -1 || 
features.indexOf("hardwareback") === -1) {
+                if (features.indexOf('hardwareback=yes') > -1 || 
features.indexOf('hardwareback') === -1) {
                     hardwareBackCallback = function () {
                         if (browserWrap.style.display === 'none') {
                             // NOTE: backbutton handlers have to throw an 
exception in order to prevent
                             // returning 'true' inside cordova-js, which would 
mean that the event is handled by user.
                             // Throwing an exception means that the 
default/system navigation behavior will take place,
                             // which is to exit the app if the navigation 
stack is empty.
-                            throw 'Exit the app';
+                            throw 'Exit the app'; // eslint-disable-line 
no-throw-literal
                         }
 
                         if (popup.canGoBack) {
@@ -207,59 +208,57 @@ var IAB = {
                             closeHandler();
                         }
                     };
-                } else if (features.indexOf("hardwareback=no") > -1) {
+                } else if (features.indexOf('hardwareback=no') > -1) {
                     hardwareBackCallback = function () {
                         if (browserWrap.style.display === 'none') {
                             // See comment above
-                            throw 'Exit the app';
+                            throw 'Exit the app'; // eslint-disable-line 
no-throw-literal
                         }
 
                         closeHandler();
                     };
                 }
 
-                document.addEventListener("backbutton", hardwareBackCallback, 
false);
+                document.addEventListener('backbutton', hardwareBackCallback, 
false);
 
-                if (features.indexOf("location=yes") !== -1 || 
features.indexOf("location") === -1) {
-                    popup.style.height = "calc(100% - 70px)";
+                if (features.indexOf('location=yes') !== -1 || 
features.indexOf('location') === -1) {
+                    popup.style.height = 'calc(100% - 70px)';
 
-                    navigationButtonsDiv = document.createElement("div");
-                    navigationButtonsDiv.className = "inappbrowser-app-bar";
+                    navigationButtonsDiv = document.createElement('div');
+                    navigationButtonsDiv.className = 'inappbrowser-app-bar';
                     navigationButtonsDiv.onclick = function (e) {
                         e.cancelBubble = true;
                     };
 
-                    navigationButtonsDivInner = document.createElement("div");
-                    navigationButtonsDivInner.className = 
"inappbrowser-app-bar-inner";
+                    navigationButtonsDivInner = document.createElement('div');
+                    navigationButtonsDivInner.className = 
'inappbrowser-app-bar-inner';
                     navigationButtonsDivInner.onclick = function (e) {
                         e.cancelBubble = true;
                     };
 
-                    backButton = document.createElement("div");
-                    backButton.innerText = "back";
-                    backButton.className = "app-bar-action action-back";
-                    backButton.addEventListener("click", function (e) {
-                        if (popup.canGoBack)
-                            popup.goBack();
+                    backButton = document.createElement('div');
+                    backButton.innerText = 'back';
+                    backButton.className = 'app-bar-action action-back';
+                    backButton.addEventListener('click', function (e) {
+                        if (popup.canGoBack) { popup.goBack(); }
                     });
 
-                    forwardButton = document.createElement("div");
-                    forwardButton.innerText = "forward";
-                    forwardButton.className = "app-bar-action action-forward";
-                    forwardButton.addEventListener("click", function (e) {
-                        if (popup.canGoForward)
-                            popup.goForward();
+                    forwardButton = document.createElement('div');
+                    forwardButton.innerText = 'forward';
+                    forwardButton.className = 'app-bar-action action-forward';
+                    forwardButton.addEventListener('click', function (e) {
+                        if (popup.canGoForward) { popup.goForward(); }
                     });
 
-                    closeButton = document.createElement("div");
-                    closeButton.innerText = "close";
-                    closeButton.className = "app-bar-action action-close";
-                    closeButton.addEventListener("click", closeHandler);
+                    closeButton = document.createElement('div');
+                    closeButton.innerText = 'close';
+                    closeButton.className = 'app-bar-action action-close';
+                    closeButton.addEventListener('click', closeHandler);
 
                     if (!isWebViewAvailable) {
                         // iframe navigation is not yet supported
-                        backButton.setAttribute("disabled", "true");
-                        forwardButton.setAttribute("disabled", "true");
+                        backButton.setAttribute('disabled', 'true');
+                        forwardButton.setAttribute('disabled', 'true');
                     }
 
                     navigationButtonsDivInner.appendChild(backButton);
@@ -269,14 +268,14 @@ var IAB = {
 
                     browserWrap.appendChild(navigationButtonsDiv);
                 } else {
-                    popup.style.height = "100%";
+                    popup.style.height = '100%';
                 }
 
                 // start listening for navigation events
                 attachNavigationEvents(popup, navigationEventsCallback);
 
                 if (isWebViewAvailable) {
-                    strUrl = strUrl.replace("ms-appx://", "ms-appx-web://");
+                    strUrl = strUrl.replace('ms-appx://', 'ms-appx-web://');
                 }
                 popup.src = strUrl;
             }
@@ -285,11 +284,11 @@ var IAB = {
 
     injectScriptCode: function (win, fail, args) {
         setImmediate(function () {
-            var code = args[0],
-                hasCallback = args[1];
+            var code = args[0];
+            var hasCallback = args[1];
 
             if (isWebViewAvailable && browserWrap && popup) {
-                var op = popup.invokeScriptAsync("eval", code);
+                var op = popup.invokeScriptAsync('eval', code);
                 op.oncomplete = function (e) {
                     if (hasCallback) {
                         // return null if event target is unavailable by some 
reason
@@ -305,10 +304,10 @@ var IAB = {
 
     injectScriptFile: function (win, fail, args) {
         setImmediate(function () {
-            var filePath = args[0],
-                hasCallback = args[1];
+            var filePath = args[0];
+            var hasCallback = args[1];
 
-            if (!!filePath) {
+            if (filePath) {
                 filePath = urlutil.makeAbsolute(filePath);
             }
 
@@ -317,8 +316,8 @@ var IAB = {
                 var uri = new 
Windows.Foundation.Uri(filePath.replace('ms-appx-web:', 'ms-appx:'));
                 
Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri).done(function 
(file) {
                     Windows.Storage.FileIO.readTextAsync(file).done(function 
(code) {
-                        var op = popup.invokeScriptAsync("eval", code);
-                        op.oncomplete = function(e) {
+                        var op = popup.invokeScriptAsync('eval', code);
+                        op.oncomplete = function (e) {
                             if (hasCallback) {
                                 var result = [e.target.result];
                                 win(result);
@@ -334,8 +333,8 @@ var IAB = {
 
     injectStyleCode: function (win, fail, args) {
         setImmediate(function () {
-            var code = args[0],
-                hasCallback = args[1];
+            var code = args[0];
+            var hasCallback = args[1];
 
             if (isWebViewAvailable && browserWrap && popup) {
                 injectCSS(popup, code, hasCallback && win);
@@ -345,8 +344,8 @@ var IAB = {
 
     injectStyleFile: function (win, fail, args) {
         setImmediate(function () {
-            var filePath = args[0],
-                hasCallback = args[1];
+            var filePath = args[0];
+            var hasCallback = args[1];
 
             filePath = filePath && urlutil.makeAbsolute(filePath);
 
@@ -368,11 +367,11 @@ var IAB = {
 function injectCSS (webView, cssCode, callback) {
     // This will automatically escape all thing that we need (quotes, slashes, 
etc.)
     var escapedCode = JSON.stringify(cssCode);
-    var evalWrapper = "(function(d){var 
c=d.createElement('style');c.innerHTML=%s;d.head.appendChild(c);})(document)"
+    var evalWrapper = '(function(d){var 
c=d.createElement(\'style\');c.innerHTML=%s;d.head.appendChild(c);})(document)'
         .replace('%s', escapedCode);
 
-    var op = webView.invokeScriptAsync("eval", evalWrapper);
-    op.oncomplete = function() {
+    var op = webView.invokeScriptAsync('eval', evalWrapper);
+    op.oncomplete = function () {
         if (callback) {
             callback([]);
         }
@@ -383,4 +382,4 @@ function injectCSS (webView, cssCode, callback) {
 
 module.exports = IAB;
 
-require("cordova/exec/proxy").add("InAppBrowser", module.exports);
+require('cordova/exec/proxy').add('InAppBrowser', module.exports);

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/tests/.eslintrc.yml
----------------------------------------------------------------------
diff --git a/tests/.eslintrc.yml b/tests/.eslintrc.yml
new file mode 100644
index 0000000..6afba65
--- /dev/null
+++ b/tests/.eslintrc.yml
@@ -0,0 +1,2 @@
+env:
+    jasmine: true
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/tests/resources/inject.js
----------------------------------------------------------------------
diff --git a/tests/resources/inject.js b/tests/resources/inject.js
index a89a421..d704ab3 100644
--- a/tests/resources/inject.js
+++ b/tests/resources/inject.js
@@ -16,5 +16,5 @@
  * specific language governing permissions and limitations
  * under the License.
 */
-var d = document.getElementById("header");
-d.innerHTML = "Script file successfully injected";
+var d = document.getElementById('header');
+d.innerHTML = 'Script file successfully injected';

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/tests/tests.js
----------------------------------------------------------------------
diff --git a/tests/tests.js b/tests/tests.js
index 7d6c79b..abb2a6d 100644
--- a/tests/tests.js
+++ b/tests/tests.js
@@ -19,7 +19,6 @@
  *
 */
 
-/* jshint jasmine: true */
 /* global MSApp */
 
 var cordova = require('cordova');
@@ -36,11 +35,11 @@ exports.defineAutoTests = function () {
 
     describe('cordova.InAppBrowser', function () {
 
-        it("inappbrowser.spec.1 should exist", function () {
+        it('inappbrowser.spec.1 should exist', function () {
             expect(cordova.InAppBrowser).toBeDefined();
         });
 
-        it("inappbrowser.spec.2 should contain open function", function () {
+        it('inappbrowser.spec.2 should contain open function', function () {
             expect(cordova.InAppBrowser.open).toBeDefined();
             expect(cordova.InAppBrowser.open).toEqual(jasmine.any(Function));
         });
@@ -48,7 +47,7 @@ exports.defineAutoTests = function () {
 
     describe('open method', function () {
 
-        if (cordova.platformId == 'osx') {
+        if (cordova.platformId === 'osx') {
             pending('Open method not fully supported on OSX.');
             return;
         }
@@ -78,7 +77,7 @@ exports.defineAutoTests = function () {
             setTimeout(done, 2000);
         });
 
-        function verifyEvent(evt, type) {
+        function verifyEvent (evt, type) {
             expect(evt).toBeDefined();
             expect(evt.type).toEqual(type);
             // `exit` event does not have url field, browser returns null url 
for CORS requests
@@ -87,7 +86,7 @@ exports.defineAutoTests = function () {
             }
         }
 
-        function verifyLoadErrorEvent(evt) {
+        function verifyLoadErrorEvent (evt) {
             expect(evt).toBeDefined();
             expect(evt.type).toEqual('loaderror');
             expect(evt.url).toEqual(badUrl);
@@ -95,7 +94,7 @@ exports.defineAutoTests = function () {
             expect(evt.message).toEqual(jasmine.any(String));
         }
 
-        it("inappbrowser.spec.3 should return InAppBrowser instance with 
required methods", function () {
+        it('inappbrowser.spec.3 should return InAppBrowser instance with 
required methods', function () {
             iabInstance = cordova.InAppBrowser.open(url, '_blank');
 
             expect(iabInstance).toBeDefined();
@@ -109,7 +108,7 @@ exports.defineAutoTests = function () {
             expect(iabInstance.insertCSS).toEqual(jasmine.any(Function));
         });
 
-        it("inappbrowser.spec.4 should support loadstart and loadstop events", 
function (done) {
+        it('inappbrowser.spec.4 should support loadstart and loadstop events', 
function (done) {
             var onLoadStart = jasmine.createSpy('loadstart event 
callback').and.callFake(function (evt) {
                 verifyEvent(evt, 'loadstart');
             });
@@ -127,7 +126,7 @@ exports.defineAutoTests = function () {
             });
         });
 
-        it("inappbrowser.spec.5 should support exit event", function (done) {
+        it('inappbrowser.spec.5 should support exit event', function (done) {
             iabInstance = cordova.InAppBrowser.open(url, '_blank');
             iabInstance.addEventListener('exit', function (evt) {
                 verifyEvent(evt, 'exit');
@@ -137,7 +136,7 @@ exports.defineAutoTests = function () {
             iabInstance = null;
         });
 
-        it("inappbrowser.spec.6 should support loaderror event", function 
(done) {
+        it('inappbrowser.spec.6 should support loaderror event', function 
(done) {
             if (isBrowser) {
                 // according to documentation, "loaderror" event is not 
supported on browser
                 // 
https://github.com/apache/cordova-plugin-inappbrowser#browser-quirks-1
@@ -154,15 +153,15 @@ exports.defineAutoTests = function () {
 
 exports.defineManualTests = function (contentEl, createActionButton) {
 
-    function doOpen(url, target, params, numExpectedRedirects, useWindowOpen) {
+    function doOpen (url, target, params, numExpectedRedirects, useWindowOpen) 
{
         numExpectedRedirects = numExpectedRedirects || 0;
         useWindowOpen = useWindowOpen || false;
-        console.log("Opening " + url);
+        console.log('Opening ' + url);
 
         var counts;
         var lastLoadStartURL;
         var wasReset = false;
-        function reset() {
+        function reset () {
             counts = {
                 'loaderror': 0,
                 'loadstart': 0,
@@ -183,49 +182,48 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         if (useWindowOpen) {
             console.log('Use window.open() for url');
             iab = window.open(url, target, params, callbacks);
-        }
-        else {
+        } else {
             iab = cordova.InAppBrowser.open(url, target, params, callbacks);
         }
         if (!iab) {
-            alert('open returned ' + iab);
+            alert('open returned ' + iab); // eslint-disable-line no-undef
             return;
         }
 
-        function logEvent(e) {
+        function logEvent (e) {
             console.log('IAB event=' + JSON.stringify(e));
             counts[e.type]++;
             // Verify that event.url gets updated on redirects.
-            if (e.type == 'loadstart') {
-                if (e.url == lastLoadStartURL) {
-                    alert('Unexpected: loadstart fired multiple times for the 
same URL.');
+            if (e.type === 'loadstart') {
+                if (e.url === lastLoadStartURL) {
+                    alert('Unexpected: loadstart fired multiple times for the 
same URL.'); // eslint-disable-line no-undef
                 }
                 lastLoadStartURL = e.url;
             }
             // Verify the right number of loadstart events were fired.
-            if (e.type == 'loadstop' || e.type == 'loaderror') {
-                if (e.url != lastLoadStartURL) {
-                    alert('Unexpected: ' + e.type + ' event.url != 
loadstart\'s event.url');
+            if (e.type === 'loadstop' || e.type === 'loaderror') {
+                if (e.url !== lastLoadStartURL) {
+                    alert('Unexpected: ' + e.type + ' event.url != 
loadstart\'s event.url'); // eslint-disable-line no-undef
                 }
                 if (numExpectedRedirects === 0 && counts.loadstart !== 1) {
                     // Do allow a loaderror without a loadstart (e.g. in the 
case of an invalid URL).
-                    if (!(e.type == 'loaderror' && counts.loadstart === 0)) {
-                        alert('Unexpected: got multiple loadstart events. (' + 
counts.loadstart + ')');
+                    if (!(e.type === 'loaderror' && counts.loadstart === 0)) {
+                        alert('Unexpected: got multiple loadstart events. (' + 
counts.loadstart + ')'); // eslint-disable-line no-undef
                     }
                 } else if (numExpectedRedirects > 0 && counts.loadstart < 
(numExpectedRedirects + 1)) {
-                    alert('Unexpected: should have got at least ' + 
(numExpectedRedirects + 1) + ' loadstart events, but got ' + counts.loadstart);
+                    alert('Unexpected: should have got at least ' + 
(numExpectedRedirects + 1) + ' loadstart events, but got ' + counts.loadstart); 
// eslint-disable-line no-undef
                 }
                 wasReset = true;
                 numExpectedRedirects = 0;
                 reset();
             }
             // Verify that loadend / loaderror was called.
-            if (e.type == 'exit') {
+            if (e.type === 'exit') {
                 var numStopEvents = counts.loadstop + counts.loaderror;
                 if (numStopEvents === 0 && !wasReset) {
-                    alert('Unexpected: browser closed without a loadstop or 
loaderror.');
+                    alert('Unexpected: browser closed without a loadstop or 
loaderror.'); // eslint-disable-line no-undef
                 } else if (numStopEvents > 1) {
-                    alert('Unexpected: got multiple loadstop/loaderror 
events.');
+                    alert('Unexpected: got multiple loadstop/loaderror 
events.'); // eslint-disable-line no-undef
                 }
             }
         }
@@ -233,33 +231,31 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         return iab;
     }
 
-    function doHookOpen(url, target, params, numExpectedRedirects) {
+    function doHookOpen (url, target, params, numExpectedRedirects) {
         var originalFunc = window.open;
         var wasClobbered = window.hasOwnProperty('open');
         window.open = cordova.InAppBrowser.open;
 
         try {
             doOpen(url, target, params, numExpectedRedirects, true);
-        }
-        finally {
+        } finally {
             if (wasClobbered) {
                 window.open = originalFunc;
-            }
-            else {
-              console.log('just delete, to restore open from prototype');
+            } else {
+                console.log('just delete, to restore open from prototype');
                 delete window.open;
             }
         }
     }
 
-    function openWithStyle(url, cssUrl, useCallback) {
+    function openWithStyle (url, cssUrl, useCallback) {
         var iab = doOpen(url, '_blank', 'location=yes');
         var callback = function (results) {
             if (results && results.length === 0) {
-                alert('Results verified');
+                alert('Results verified'); // eslint-disable-line no-undef
             } else {
                 console.log(results);
-                alert('Got: ' + typeof (results) + '\n' + 
JSON.stringify(results));
+                alert('Got: ' + typeof (results) + '\n' + 
JSON.stringify(results)); // eslint-disable-line no-undef
             }
         };
         if (cssUrl) {
@@ -269,21 +265,21 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         } else {
             iab.addEventListener('loadstop', function (event) {
                 iab.insertCSS({ code: '#style-update-literal { \ndisplay: 
block !important; \n}' },
-                              useCallback && callback);
+                    useCallback && callback);
             });
         }
     }
 
-    function openWithScript(url, jsUrl, useCallback) {
+    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');
+                        alert('Results verified'); // eslint-disable-line 
no-undef
                     } else {
                         console.log(results);
-                        alert('Got: ' + typeof (results) + '\n' + 
JSON.stringify(results));
+                        alert('Got: ' + typeof (results) + '\n' + 
JSON.stringify(results)); // eslint-disable-line no-undef
                     }
                 });
             });
@@ -296,33 +292,33 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
                   '})()';
                 iab.executeScript({ code: code }, useCallback && function 
(results) {
                     if (results && results.length === 1 && results[0] === 
'abc') {
-                        alert('Results verified');
+                        alert('Results verified'); // eslint-disable-line 
no-undef
                     } else {
                         console.log(results);
-                        alert('Got: ' + typeof (results) + '\n' + 
JSON.stringify(results));
+                        alert('Got: ' + typeof (results) + '\n' + 
JSON.stringify(results)); // eslint-disable-line no-undef
                     }
                 });
             });
         }
     }
     var hiddenwnd = null;
-    var loadlistener = function (event) { alert('background window loaded '); 
};
-    function openHidden(url, startHidden) {
+    var loadlistener = function (event) { alert('background window loaded '); 
}; // eslint-disable-line no-undef
+    function openHidden (url, startHidden) {
         var shopt = (startHidden) ? 'hidden=yes' : '';
         hiddenwnd = cordova.InAppBrowser.open(url, 'random_string', shopt);
         if (!hiddenwnd) {
-            alert('cordova.InAppBrowser.open returned ' + hiddenwnd);
+            alert('cordova.InAppBrowser.open returned ' + hiddenwnd); // 
eslint-disable-line no-undef
             return;
         }
         if (startHidden) hiddenwnd.addEventListener('loadstop', loadlistener);
     }
-    function showHidden() {
-        if (!!hiddenwnd) {
+    function showHidden () {
+        if (hiddenwnd) {
             hiddenwnd.show();
         }
     }
-    function closeHidden() {
-        if (!!hiddenwnd) {
+    function closeHidden () {
+        if (hiddenwnd) {
             hiddenwnd.removeEventListener('loadstop', loadlistener);
             hiddenwnd.close();
             hiddenwnd = null;
@@ -467,14 +463,14 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         '<p/> <div id="openHardwareBackYes"></div>' +
         'Expected result: hardwareback=yes pressing back button should 
navigate backwards in history then close InAppBrowser' +
         '<p/> <div id="openHardwareBackNo"></div>' +
-        'Expected result: hardwareback=no pressing back button should close 
InAppBrowser regardless history' + 
+        'Expected result: hardwareback=no pressing back button should close 
InAppBrowser regardless history' +
         '<p/> <div id="openHardwareBackDefaultAfterNo"></div>' +
         'Expected result: consistently open browsers with with the appropriate 
option: hardwareback=defaults to yes then hardwareback=no then 
hardwareback=defaults to yes. By default hardwareback is yes so pressing back 
button should navigate backwards in history then close InAppBrowser';
 
     // CB-7490 We need to wrap this code due to Windows security restrictions
     // see 
http://msdn.microsoft.com/en-us/library/windows/apps/hh465380.aspx#differences 
for details
     if (window.MSApp && window.MSApp.execUnsafeLocalFunction) {
-        MSApp.execUnsafeLocalFunction(function() {
+        MSApp.execUnsafeLocalFunction(function () {
             contentEl.innerHTML = info_div + local_tests + white_listed_tests 
+ non_white_listed_tests + page_with_redirects_tests + pdf_url_tests + 
invalid_url_tests +
                 css_js_injection_tests + open_hidden_tests + 
clearing_cache_tests + video_tag_tests + local_with_anchor_tag_tests + 
hardwareback_tests;
         });
@@ -483,18 +479,18 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
             css_js_injection_tests + open_hidden_tests + clearing_cache_tests 
+ video_tag_tests + local_with_anchor_tag_tests + hardwareback_tests;
     }
 
-    document.getElementById("user-agent").textContent = navigator.userAgent;
+    document.getElementById('user-agent').textContent = navigator.userAgent;
 
     // we are already in cdvtests directory
     var basePath = 'iab-resources/';
-    var localhtml = basePath + 'local.html',
-        localpdf = basePath + 'local.pdf',
-        injecthtml = basePath + 'inject.html',
-        injectjs = isWindows ? basePath + 'inject.js' : 'inject.js',
-        injectcss = isWindows ? basePath + 'inject.css' : 'inject.css',
-        videohtml = basePath + 'video.html';
-
-    //Local
+    var localhtml = basePath + 'local.html';
+    var localpdf = basePath + 'local.pdf';
+    var injecthtml = basePath + 'inject.html';
+    var injectjs = isWindows ? basePath + 'inject.js' : 'inject.js';
+    var injectcss = isWindows ? basePath + 'inject.css' : 'inject.css';
+    var videohtml = basePath + 'video.html';
+
+    // Local
     createActionButton('target=Default', function () {
         doOpen(localhtml);
     }, 'openLocal');
@@ -523,7 +519,7 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         doOpen(localhtml, 'random_string', 'toolbarposition=top,location=no');
     }, 'openLocalRandomToolBarTopNoLocation');
 
-    //White Listed
+    // White Listed
     createActionButton('* target=Default', function () {
         doOpen('http://cordova.apache.org');
     }, 'openWhiteListed');
@@ -546,7 +542,7 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         doOpen('http://cordova.apache.org', 'random_string', 'location=no');
     }, 'openWhiteListedRandomNoLocation');
 
-    //Non White Listed
+    // Non White Listed
     createActionButton('target=Default', function () {
         doOpen('http://www.apple.com');
     }, 'openNonWhiteListed');
@@ -569,7 +565,7 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         doOpen('http://www.apple.com', 'random_string', 'location=no');
     }, 'openNonWhiteListedRandomNoLocation');
 
-    //Page with redirect
+    // Page with redirect
     createActionButton('http://google.co.uk', function () {
         doOpen('http://google.co.uk', 'random_string', '', 1);
     }, 'openRedirect301');
@@ -577,7 +573,7 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         doOpen('http://goo.gl/pUFqg', 'random_string', '', 2);
     }, 'openRedirect302');
 
-    //PDF URL
+    // PDF URL
     createActionButton('Remote URL', function () {
         doOpen('http://www.stluciadance.com/prospectus_file/sample.pdf');
     }, 'openPDF');
@@ -585,7 +581,7 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         doOpen(localpdf, '_blank');
     }, 'openPDFBlank');
 
-    //Invalid URL
+    // Invalid URL
     createActionButton('Invalid Scheme', function () {
         doOpen('x-ttp://www.invalid.com/', '_blank');
     }, 'openInvalidScheme');
@@ -596,7 +592,7 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         doOpen('nonexistent.html', '_blank');
     }, 'openInvalidMissing');
 
-    //CSS / JS injection
+    // CSS / JS injection
     createActionButton('Original Document', function () {
         doOpen(injecthtml, '_blank');
     }, 'openOriginalDocument');
@@ -625,7 +621,7 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         openWithScript(injecthtml, null, true);
     }, 'openScriptLiteralInjectionCallback');
 
-    //Open hidden
+    // Open hidden
     createActionButton('Create Hidden', function () {
         openHidden('https://www.google.co.uk', true);
     }, 'openHidden');
@@ -645,7 +641,7 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         }, 2000);
     }, 'openVisibleAndHide');
 
-    //Clearing cache
+    // Clearing cache
     createActionButton('Clear Browser Cache', function () {
         doOpen('https://www.google.co.uk', '_blank', 'clearcache=yes');
     }, 'openClearCache');
@@ -653,7 +649,7 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         doOpen('https://www.google.co.uk', '_blank', 'clearsessioncache=yes');
     }, 'openClearSessionCache');
 
-    //Video tag
+    // Video tag
     createActionButton('Remote Video', function () {
         doOpen(videohtml, '_blank');
     }, 'openRemoteVideo');
@@ -664,7 +660,7 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
         doOpen(videohtml, '_blank', 'mediaPlaybackRequiresUserAction=yes');
     }, 'openRemoteNeedUserYesVideo');
 
-    //Local With Anchor Tag
+    // Local With Anchor Tag
     createActionButton('Anchor1', function () {
         doOpen(localhtml + '#bogusanchor', '_blank');
     }, 'openAnchor1');
@@ -682,17 +678,17 @@ exports.defineManualTests = function (contentEl, 
createActionButton) {
     createActionButton('hardwareback=no', function () {
         doOpen('http://cordova.apache.org', '_blank', 'hardwareback=no');
     }, 'openHardwareBackNo');
-    createActionButton('no hardwareback -> hardwareback=no -> no 
hardwareback', function() {
+    createActionButton('no hardwareback -> hardwareback=no -> no 
hardwareback', function () {
         var ref = cordova.InAppBrowser.open('https://google.com', '_blank', 
'location=yes');
-        ref.addEventListener('loadstop', function() {
+        ref.addEventListener('loadstop', function () {
             ref.close();
         });
-        ref.addEventListener('exit', function() {
+        ref.addEventListener('exit', function () {
             var ref2 = cordova.InAppBrowser.open('https://google.com', 
'_blank', 'location=yes,hardwareback=no');
-            ref2.addEventListener('loadstop', function() {
+            ref2.addEventListener('loadstop', function () {
                 ref2.close();
             });
-            ref2.addEventListener('exit', function() {
+            ref2.addEventListener('exit', function () {
                 cordova.InAppBrowser.open('https://google.com', '_blank', 
'location=yes');
             });
         });

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/www/inappbrowser.js
----------------------------------------------------------------------
diff --git a/www/inappbrowser.js b/www/inappbrowser.js
index 983dbba..7c3e749 100644
--- a/www/inappbrowser.js
+++ b/www/inappbrowser.js
@@ -19,7 +19,7 @@
  *
 */
 
-(function() {
+(function () {
     // special patch to correctly work on Ripple emulator (CB-9760)
     if (window.parent && !!window.parent.ripple) { // 
https://gist.github.com/triceam/4658021
         module.exports = window.open.bind(window); // fallback to default 
window.open behaviour
@@ -31,13 +31,13 @@
     var modulemapper = require('cordova/modulemapper');
     var urlutil = require('cordova/urlutil');
 
-    function InAppBrowser() {
-       this.channels = {
+    function InAppBrowser () {
+        this.channels = {
             'loadstart': channel.create('loadstart'),
-            'loadstop' : channel.create('loadstop'),
-            'loaderror' : channel.create('loaderror'),
-            'exit' : channel.create('exit')
-       };
+            'loadstop': channel.create('loadstop'),
+            'loaderror': channel.create('loaderror'),
+            'exit': channel.create('exit')
+        };
     }
 
     InAppBrowser.prototype = {
@@ -47,47 +47,47 @@
             }
         },
         close: function (eventname) {
-            exec(null, null, "InAppBrowser", "close", []);
+            exec(null, null, 'InAppBrowser', 'close', []);
         },
         show: function (eventname) {
-            exec(null, null, "InAppBrowser", "show", []);
+            exec(null, null, 'InAppBrowser', 'show', []);
         },
         hide: function (eventname) {
-            exec(null, null, "InAppBrowser", "hide", []);
+            exec(null, null, 'InAppBrowser', 'hide', []);
         },
-        addEventListener: function (eventname,f) {
+        addEventListener: function (eventname, f) {
             if (eventname in this.channels) {
                 this.channels[eventname].subscribe(f);
             }
         },
-        removeEventListener: function(eventname, f) {
+        removeEventListener: function (eventname, f) {
             if (eventname in this.channels) {
                 this.channels[eventname].unsubscribe(f);
             }
         },
 
-        executeScript: function(injectDetails, cb) {
+        executeScript: function (injectDetails, cb) {
             if (injectDetails.code) {
-                exec(cb, null, "InAppBrowser", "injectScriptCode", 
[injectDetails.code, !!cb]);
+                exec(cb, null, 'InAppBrowser', 'injectScriptCode', 
[injectDetails.code, !!cb]);
             } else if (injectDetails.file) {
-                exec(cb, null, "InAppBrowser", "injectScriptFile", 
[injectDetails.file, !!cb]);
+                exec(cb, null, 'InAppBrowser', 'injectScriptFile', 
[injectDetails.file, !!cb]);
             } else {
                 throw new Error('executeScript requires exactly one of code or 
file to be specified');
             }
         },
 
-        insertCSS: function(injectDetails, cb) {
+        insertCSS: function (injectDetails, cb) {
             if (injectDetails.code) {
-                exec(cb, null, "InAppBrowser", "injectStyleCode", 
[injectDetails.code, !!cb]);
+                exec(cb, null, 'InAppBrowser', 'injectStyleCode', 
[injectDetails.code, !!cb]);
             } else if (injectDetails.file) {
-                exec(cb, null, "InAppBrowser", "injectStyleFile", 
[injectDetails.file, !!cb]);
+                exec(cb, null, 'InAppBrowser', 'injectStyleFile', 
[injectDetails.file, !!cb]);
             } else {
                 throw new Error('insertCSS requires exactly one of code or 
file to be specified');
             }
         }
     };
 
-    module.exports = function(strUrl, strWindowName, strWindowFeatures, 
callbacks) {
+    module.exports = function (strUrl, strWindowName, strWindowFeatures, 
callbacks) {
         // Don't catch calls that write to existing frames (e.g. named 
iframes).
         if (window.frames && window.frames[strWindowName]) {
             var origOpenFunc = modulemapper.getOriginalSymbol(window, 'open');
@@ -102,13 +102,13 @@
             iab.addEventListener(callbackName, callbacks[callbackName]);
         }
 
-        var cb = function(eventname) {
-           iab._eventHandler(eventname);
+        var cb = function (eventname) {
+            iab._eventHandler(eventname);
         };
 
-        strWindowFeatures = strWindowFeatures || "";
+        strWindowFeatures = strWindowFeatures || '';
 
-        exec(cb, cb, "InAppBrowser", "open", [strUrl, strWindowName, 
strWindowFeatures]);
+        exec(cb, cb, 'InAppBrowser', 'open', [strUrl, strWindowName, 
strWindowFeatures]);
         return iab;
     };
 })();

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/90242752/www/windows8/InAppBrowserProxy.js
----------------------------------------------------------------------
diff --git a/www/windows8/InAppBrowserProxy.js 
b/www/windows8/InAppBrowserProxy.js
index d780fcd..13bb145 100644
--- a/www/windows8/InAppBrowserProxy.js
+++ b/www/windows8/InAppBrowserProxy.js
@@ -19,8 +19,8 @@
  *
  */
 
-/*jslint sloppy:true */
-/*global Windows:true, require, document, setTimeout, window, module */
+/* jslint sloppy:true */
+/* global Windows:true, require, document, setTimeout, window, module */
 
 var browserWrap;
 
@@ -36,33 +36,33 @@ var IAB = {
         /* empty block, ran out of bacon?
          if (browserWrap) {
 
-         }*/
+         } */
     },
     hide: function (win, lose) {
         /* empty block, ran out of bacon?
         if (browserWrap) {
 
-        }*/
+        } */
     },
     open: function (win, lose, args) {
-        var strUrl = args[0],
-            target = args[1],
-            url,
-            elem;
+        var strUrl = args[0];
+        var target = args[1];
+        var url;
+        var elem;
 
-        if (target === "_system") {
+        if (target === '_system') {
             url = new Windows.Foundation.Uri(strUrl);
             Windows.System.Launcher.launchUriAsync(url);
-        } else if (target === "_blank") {
+        } else if (target === '_blank') {
             if (!browserWrap) {
-                browserWrap = document.createElement("div");
-                browserWrap.style.position = "absolute";
-                browserWrap.style.width = (window.innerWidth - 80) + "px";
-                browserWrap.style.height = (window.innerHeight - 80) + "px";
-                browserWrap.style.borderWidth = "40px";
-                browserWrap.style.borderStyle = "solid";
-                browserWrap.style.borderColor = "rgba(0,0,0,0.25)";
-                browserWrap.style.zIndex = "9999999";
+                browserWrap = document.createElement('div');
+                browserWrap.style.position = 'absolute';
+                browserWrap.style.width = (window.innerWidth - 80) + 'px';
+                browserWrap.style.height = (window.innerHeight - 80) + 'px';
+                browserWrap.style.borderWidth = '40px';
+                browserWrap.style.borderStyle = 'solid';
+                browserWrap.style.borderColor = 'rgba(0,0,0,0.25)';
+                browserWrap.style.zIndex = '9999999';
 
                 browserWrap.onclick = function () {
                     setTimeout(function () {
@@ -74,33 +74,31 @@ var IAB = {
             }
             var localFile = (strUrl.indexOf('ms-appdata:///') > -1);
             if (localFile) {
-                elem = document.createElement("x-ms-webview");
-                elem.style.width = (window.innerWidth - 80) + "px";
-                elem.style.height = (window.innerHeight - 80) + "px";
-                elem.style.borderWidth = "0px";
-                elem.name = "targetFrame";
+                elem = document.createElement('x-ms-webview');
+                elem.style.width = (window.innerWidth - 80) + 'px';
+                elem.style.height = (window.innerHeight - 80) + 'px';
+                elem.style.borderWidth = '0px';
+                elem.name = 'targetFrame';
                 elem.src = strUrl;
 
-                window.addEventListener("resize", function () {
+                window.addEventListener('resize', function () {
                     if (browserWrap && elem) {
-                        elem.style.width = (window.innerWidth - 80) + "px";
-                        elem.style.height = (window.innerHeight - 80) + "px";
+                        elem.style.width = (window.innerWidth - 80) + 'px';
+                        elem.style.height = (window.innerHeight - 80) + 'px';
                     }
                 });
-
             } else {
-                elem = document.createElement("iframe");
-                elem.style.width = (window.innerWidth - 80) + "px";
-                elem.style.height = (window.innerHeight - 80) + "px";
-                elem.style.borderWidth = "0px";
-                elem.name = "targetFrame";
+                elem = document.createElement('iframe');
+                elem.style.width = (window.innerWidth - 80) + 'px';
+                elem.style.height = (window.innerHeight - 80) + 'px';
+                elem.style.borderWidth = '0px';
+                elem.name = 'targetFrame';
                 elem.src = strUrl;
 
-
-                window.addEventListener("resize", function () {
+                window.addEventListener('resize', function () {
                     if (browserWrap && elem) {
-                        elem.style.width = (window.innerWidth - 80) + "px";
-                        elem.style.height = (window.innerHeight - 80) + "px";
+                        elem.style.width = (window.innerWidth - 80) + 'px';
+                        elem.style.height = (window.innerHeight - 80) + 'px';
                     }
                 });
             }
@@ -110,8 +108,7 @@ var IAB = {
             window.location = strUrl;
         }
 
-        //var object = new WinJS.UI.HtmlControl(elem, { uri: strUrl });
-
+        // var object = new WinJS.UI.HtmlControl(elem, { uri: strUrl });
     },
 
     injectScriptCode: function (code, bCB) {
@@ -126,5 +123,4 @@ var IAB = {
 
 module.exports = IAB;
 
-
-require("cordova/exec/proxy").add("InAppBrowser", module.exports);
+require('cordova/exec/proxy').add('InAppBrowser', module.exports);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to