You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by za...@apache.org on 2014/06/05 14:32:07 UTC

[2/9] git commit: back/forward buttons added, iframe has no border

back/forward buttons added, iframe has no border


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/7b24dcb3
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/tree/7b24dcb3
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/diff/7b24dcb3

Branch: refs/heads/master
Commit: 7b24dcb3ddf86bb3dd4423ed7d0904aa786abe03
Parents: 282fdb7
Author: Piotr Zalewa <pi...@zalewa.info>
Authored: Thu Apr 24 14:14:41 2014 -0400
Committer: Piotr Zalewa <pi...@zalewa.info>
Committed: Thu Apr 24 14:14:41 2014 -0400

----------------------------------------------------------------------
 src/firefoxos/InAppBrowserProxy.js | 97 ++++++++++++++++++++++++++++-----
 1 file changed, 82 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/7b24dcb3/src/firefoxos/InAppBrowserProxy.js
----------------------------------------------------------------------
diff --git a/src/firefoxos/InAppBrowserProxy.js b/src/firefoxos/InAppBrowserProxy.js
index 85ea5b9..1427ea0 100644
--- a/src/firefoxos/InAppBrowserProxy.js
+++ b/src/firefoxos/InAppBrowserProxy.js
@@ -47,10 +47,35 @@ var IABExecs = {
     open: function (win, lose, args) {
         var strUrl = args[0],
             target = args[1],
-            features = args[2],
+            features_string = args[2],
+            features = {},
             url,
             elem;
 
+        var features_list = features_string.split(',');
+        features_list.forEach(function(feature) {
+            var tup = feature.split('=');
+            if (tup[1] == 'yes') {
+                tup[1] = true;
+            } else if (tup[1] == 'no') {
+                tup[1] = false;
+            } else {
+                var number = parseInt(tup[1]);    
+                if (!isNaN(number)) {
+                    tup[1] = number;
+                }
+            }
+            features[tup[0]] = tup[1];
+        });
+
+        function updateIframeSizeNoLocation() {
+            console.log('hey');
+            browserWrap.style.width = window.innerWidth + 'px';
+            browserWrap.style.height = window.innerHeight + 'px';
+            browserWrap.browser.style.height = (window.innerHeight - 60) + 'px';
+            browserWrap.browser.style.width = browserWrap.style.width;
+        }
+
         if (target === '_system') {
             origOpenFunc.apply(window, [strUrl, '_blank']);
         } else if (target === '_blank') {
@@ -63,31 +88,73 @@ var IABExecs = {
                 document.body.removeChild(browserWrap);
             }
             browserWrap = document.createElement('div');
-            browserWrap.classList.add('inappbrowser-wrap');
+            // assign browser element to browserWrap for future reference
+            browserWrap.browser = browserElem;
+
+            browserWrap.classList.add('inAppBrowserWrap');
             browserWrap.style.position = 'absolute';
-            browserWrap.style.width = window.innerWidth + 'px';
-            browserWrap.style.height = window.innerHeight + 'px';
-            browserWrap.style.padding = '10px,0,0,0';
             browserElem.style.position = 'absolute';
+            browserElem.style.border = 0;
             browserElem.style.top = '60px';
             browserElem.style.left = '0px';
-            browserElem.style.height = (window.innerHeight - 60) + 'px';
-            browserElem.style.width = browserWrap.style.width;
+            updateIframeSizeNoLocation();
+
+            var menu = document.createElement('menu');
+            menu.setAttribute('type', 'toolbar');
+            var close = document.createElement('li');
+            var back = document.createElement('li');
+            var forward = document.createElement('li');
 
-            browserWrap.addEventListener('click', function () {
+            close.appendChild(document.createTextNode('×'));
+            back.appendChild(document.createTextNode('<'));
+            forward.appendChild(document.createTextNode('>'));
+
+            close.classList.add('inAppBrowserClose');
+            back.classList.add('inAppBrowserBack');
+            forward.classList.add('inAppBrowserForward');
+
+            function checkForwardBackward() {
+                var backReq = browserElem.getCanGoBack();
+                backReq.onsuccess = function() {
+                    if (this.result) {
+                        back.classList.remove('disabled');
+                    } else {
+                        back.classList.add('disabled');
+                    }
+                }
+                var forwardReq = browserElem.getCanGoForward();
+                forwardReq.onsuccess = function() {
+                    if (this.result) {
+                        forward.classList.remove('disabled');
+                    } else {
+                        forward.classList.add('disabled');
+                    }
+                }
+            };
+
+            browserElem.addEventListener('mozbrowserloadend', checkForwardBackward);
+
+            close.addEventListener('click', function () {
                 setTimeout(function () {
                     IABExecs.close();
                 }, 0);
             }, false);
-            var p = document.createElement('p');
-            p.appendChild(document.createTextNode('close'));
-            // TODO: make all buttons - ← → ×
-            browserWrap.appendChild(p);
+
+            back.addEventListener('click', function () {
+                browserElem.goBack();
+            }, false);
+
+            forward.addEventListener('click', function () {
+                browserElem.goForward();
+            }, false);
+
+            menu.appendChild(back);
+            menu.appendChild(forward);
+            menu.appendChild(close);
+
+            browserWrap.appendChild(menu);
             browserWrap.appendChild(browserElem);
             document.body.appendChild(browserWrap);
-            // assign browser element to browserWrap for future
-            // reference
-            browserWrap.browser = browserElem;
         } else {
             window.location = strUrl;
         }