From a80a61839a66d244c8bb14bbe2975746e02516c8 Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Sat, 3 Apr 2010 17:04:36 -0700
Subject: injection is now working
---
src/Browser.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
create mode 100644 src/Browser.js
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
new file mode 100644
index 00000000..bdf57386
--- /dev/null
+++ b/src/Browser.js
@@ -0,0 +1,46 @@
+
+//////////////////////////////
+// Browser
+//////////////////////////////
+
+function Browser(location) {
+ this.location = location;
+ this.delay = 25;
+ this.setTimeout = function(fn, delay) {
+ window.setTimeout(fn, delay);
+ };
+ this.expectedUrl = location.href;
+ this.listeners = [];
+}
+
+Browser.prototype = {
+ watchUrl: function(fn){
+ this.listeners.push(fn);
+ },
+
+ startUrlWatcher: function() {
+ var self = this;
+ (function pull () {
+ if (self.expectedUrl !== self.location.href) {
+ foreach(self.listeners, function(listener){
+ listener(self.location.href);
+ });
+ self.expectedUrl = self.location.href;
+ }
+ self.setTimeout(pull, self.delay);
+ })();
+ },
+
+ setUrl: function(url) {
+ var existingURL = this.location.href;
+ if (!existingURL.match(/#/))
+ existingURL += '#';
+ if (existingURL != url)
+ this.location.href = url;
+ this.existingURL = url;
+ },
+
+ getUrl: function() {
+ return this.location.href;
+ }
+};
--
cgit v1.2.3
From 5dcf9bb4feb144b3a54a43524210dd7d0bb4213e Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Sat, 3 Apr 2010 20:19:55 -0700
Subject: browser is now injectable into the system
---
src/Browser.js | 1 -
1 file changed, 1 deletion(-)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index bdf57386..893459ae 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -37,7 +37,6 @@ Browser.prototype = {
existingURL += '#';
if (existingURL != url)
this.location.href = url;
- this.existingURL = url;
},
getUrl: function() {
--
cgit v1.2.3
From 7a4b48020688060debe9cb0f9c17615d7585cbe7 Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Mon, 5 Apr 2010 11:46:53 -0700
Subject: added ng:switch widget
---
src/Browser.js | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index 893459ae..6036884f 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -3,9 +3,10 @@
// Browser
//////////////////////////////
-function Browser(location) {
+function Browser(location, XHR) {
this.location = location;
this.delay = 25;
+ this.XHR = XHR;
this.setTimeout = function(fn, delay) {
window.setTimeout(fn, delay);
};
@@ -14,6 +15,17 @@ function Browser(location) {
}
Browser.prototype = {
+ xhr: function(method, url, callback){
+ var xhr = new this.XHR();
+ xhr.open(method, url, true);
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState == 4) {
+ callback(xhr.status, xhr.responseText);
+ }
+ };
+ xhr.send('');
+ },
+
watchUrl: function(fn){
this.listeners.push(fn);
},
@@ -23,7 +35,11 @@ Browser.prototype = {
(function pull () {
if (self.expectedUrl !== self.location.href) {
foreach(self.listeners, function(listener){
- listener(self.location.href);
+ try {
+ listener(self.location.href);
+ } catch (e) {
+ error(e);
+ }
});
self.expectedUrl = self.location.href;
}
--
cgit v1.2.3
From 2107eafcde390eebbf59e829194626c488de9e29 Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Mon, 5 Apr 2010 20:53:33 -0700
Subject: added hover service
---
src/Browser.js | 48 +++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 41 insertions(+), 7 deletions(-)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index 6036884f..69f3eb9a 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -3,18 +3,52 @@
// Browser
//////////////////////////////
-function Browser(location, XHR) {
- this.location = location;
+function Browser(location, document) {
this.delay = 25;
- this.XHR = XHR;
+ this.expectedUrl = location.href;
+ this.urlListeners = [];
+ this.hoverListener = noop;
+
+ this.XHR = XMLHttpRequest || function () {
+ try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e1) {}
+ try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e2) {}
+ try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e3) {}
+ throw new Error("This browser does not support XMLHttpRequest.");
+ };
this.setTimeout = function(fn, delay) {
window.setTimeout(fn, delay);
};
- this.expectedUrl = location.href;
- this.listeners = [];
+
+ this.location = location;
+ this.document = jqLite(document);
+ this.body = jqLite(document.body);
}
Browser.prototype = {
+
+ bind: function() {
+ var self = this;
+ self.document.bind("mouseover", function(event){
+ self.hoverListener(jqLite(event.target), true);
+ return true;
+ });
+ self.document.bind("mouseleave mouseout click dblclick keypress keyup", function(event){
+ self.hoverListener(jqLite(event.target), false);
+ return true;
+ });
+ },
+
+ hover: function(hoverListener) {
+ this.hoverListener = hoverListener;
+ },
+
+ addCss: function(url) {
+ var head = jqLite(this.document[0].getElementsByTagName('head')[0]),
+ link = jqLite('');
+ link.attr('href', url);
+ head.append(link);
+ },
+
xhr: function(method, url, callback){
var xhr = new this.XHR();
xhr.open(method, url, true);
@@ -27,14 +61,14 @@ Browser.prototype = {
},
watchUrl: function(fn){
- this.listeners.push(fn);
+ this.urlListeners.push(fn);
},
startUrlWatcher: function() {
var self = this;
(function pull () {
if (self.expectedUrl !== self.location.href) {
- foreach(self.listeners, function(listener){
+ foreach(self.urlListeners, function(listener){
try {
listener(self.location.href);
} catch (e) {
--
cgit v1.2.3
From deb86fe357a901889bc4289087f0b9e69cb8a302 Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Fri, 16 Apr 2010 14:01:29 -0700
Subject: lots of small fixes
---
src/Browser.js | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index 69f3eb9a..ff8d9775 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -83,10 +83,11 @@ Browser.prototype = {
setUrl: function(url) {
var existingURL = this.location.href;
- if (!existingURL.match(/#/))
- existingURL += '#';
- if (existingURL != url)
- this.location.href = url;
+ if (!existingURL.match(/#/)) existingURL += '#';
+ if (!url.match(/#/)) url += '#';
+ if (existingURL != url) {
+ this.location.href = this.expectedUrl = url;
+ }
},
getUrl: function() {
--
cgit v1.2.3
From 22d93e0a3bc2a6dc0f64c63c68bc8f8489ea9068 Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Tue, 20 Apr 2010 18:14:13 -0700
Subject: fixes to enable ie
---
src/Browser.js | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index ff8d9775..e00f73a5 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -29,7 +29,7 @@ Browser.prototype = {
bind: function() {
var self = this;
self.document.bind("mouseover", function(event){
- self.hoverListener(jqLite(event.target), true);
+ self.hoverListener(jqLite(msie ? event.srcElement : event.target), true);
return true;
});
self.document.bind("mouseleave mouseout click dblclick keypress keyup", function(event){
@@ -43,8 +43,11 @@ Browser.prototype = {
},
addCss: function(url) {
- var head = jqLite(this.document[0].getElementsByTagName('head')[0]),
- link = jqLite('');
+ var doc = this.document[0],
+ head = jqLite(doc.getElementsByTagName('head')[0]),
+ link = jqLite(doc.createElement('link'));
+ link.attr('rel', 'stylesheet');
+ link.attr('type', 'text/css');
link.attr('href', url);
head.append(link);
},
--
cgit v1.2.3
From 8b29156a2ddcc738f9b0cf8dfc48a8648474884d Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Wed, 21 Apr 2010 14:29:05 -0700
Subject: ie6 now passes
---
src/Browser.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index e00f73a5..11b079f0 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -9,7 +9,7 @@ function Browser(location, document) {
this.urlListeners = [];
this.hoverListener = noop;
- this.XHR = XMLHttpRequest || function () {
+ this.XHR = window.XMLHttpRequest || function () {
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e1) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e2) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e3) {}
--
cgit v1.2.3
From c7913a4b7a3f5ffb0ea6bb1e636ac9d4a0e75c32 Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Thu, 29 Apr 2010 17:28:33 -0700
Subject: added $xhr service with bulk and cache, hooked up $resource
---
src/Browser.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index 11b079f0..d2e8608d 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -52,12 +52,12 @@ Browser.prototype = {
head.append(link);
},
- xhr: function(method, url, callback){
+ xhr: function(method, url, post, callback){
var xhr = new this.XHR();
xhr.open(method, url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
- callback(xhr.status, xhr.responseText);
+ callback(xhr.status || 200, xhr.responseText);
}
};
xhr.send('');
--
cgit v1.2.3
From ac1d02d0658cb74ae3822e364f84809d78cda335 Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Fri, 30 Apr 2010 12:22:07 -0700
Subject: make xhr post optional
---
src/Browser.js | 4 ++++
1 file changed, 4 insertions(+)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index d2e8608d..6ec083fa 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -53,6 +53,10 @@ Browser.prototype = {
},
xhr: function(method, url, post, callback){
+ if (isFunction(post)) {
+ callback = post;
+ post = null;
+ }
var xhr = new this.XHR();
xhr.open(method, url, true);
xhr.onreadystatechange = function() {
--
cgit v1.2.3
From 038a743e6f49c347a38edc0e54dcbb175905a475 Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Fri, 7 May 2010 12:09:14 -0700
Subject: xhr bulk fixes
---
src/Browser.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index 6ec083fa..2a90b63f 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -8,6 +8,7 @@ function Browser(location, document) {
this.expectedUrl = location.href;
this.urlListeners = [];
this.hoverListener = noop;
+ this.isMock = false;
this.XHR = window.XMLHttpRequest || function () {
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e1) {}
@@ -64,7 +65,7 @@ Browser.prototype = {
callback(xhr.status || 200, xhr.responseText);
}
};
- xhr.send('');
+ xhr.send(post || '');
},
watchUrl: function(fn){
--
cgit v1.2.3
From 0d41c86522ef912fe5bb7a02fd434080f9827c00 Mon Sep 17 00:00:00 2001
From: Andres Ornelas
Date: Wed, 26 May 2010 15:17:28 -0700
Subject: fixed broken jstd conf file
---
src/Browser.js | 1 -
1 file changed, 1 deletion(-)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index 2a90b63f..8abdbc61 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -1,4 +1,3 @@
-
//////////////////////////////
// Browser
//////////////////////////////
--
cgit v1.2.3
From aedf12f25e42877a302a99d906e6397bde01dcce Mon Sep 17 00:00:00 2001
From: Andres Ornelas
Date: Wed, 26 May 2010 15:21:58 -0700
Subject: added outstanding request queue
---
src/Browser.js | 31 +++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index 8abdbc61..0e265c0c 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -8,6 +8,7 @@ function Browser(location, document) {
this.urlListeners = [];
this.hoverListener = noop;
this.isMock = false;
+ this.outstandingRequests = { count: 0, callbacks:[]};
this.XHR = window.XMLHttpRequest || function () {
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e1) {}
@@ -57,16 +58,42 @@ Browser.prototype = {
callback = post;
post = null;
}
- var xhr = new this.XHR();
+ var xhr = new this.XHR(),
+ self = this;
xhr.open(method, url, true);
+ this.outstandingRequests.count ++;
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
- callback(xhr.status || 200, xhr.responseText);
+ try {
+ callback(xhr.status || 200, xhr.responseText);
+ } finally {
+ self.outstandingRequests.count--;
+ self.processRequestCallbacks();
+ }
}
};
xhr.send(post || '');
},
+ processRequestCallbacks: function(){
+ if (this.outstandingRequests.count === 0) {
+ while(this.outstandingRequests.callbacks.length) {
+ try {
+ this.outstandingRequests.callbacks.pop()();
+ } catch (e) {
+ }
+ }
+ }
+ },
+
+ notifyWhenNoOutstandingRequests: function(callback){
+ if (this.outstandingRequests.count === 0) {
+ callback();
+ } else {
+ this.outstandingRequests.callbacks.push(callback);
+ }
+ },
+
watchUrl: function(fn){
this.urlListeners.push(fn);
},
--
cgit v1.2.3
From c7d64f6d124f10c66309042c2d77896215ed43b8 Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Sun, 30 May 2010 16:34:59 -0700
Subject: improve error handling with elements
---
src/Browser.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'src/Browser.js')
diff --git a/src/Browser.js b/src/Browser.js
index 0e265c0c..0552b3ae 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -3,7 +3,7 @@
//////////////////////////////
function Browser(location, document) {
- this.delay = 25;
+ this.delay = 50;
this.expectedUrl = location.href;
this.urlListeners = [];
this.hoverListener = noop;
--
cgit v1.2.3