Got some XHR tests to run, still some hanging threads (need to investigate). Started moving some Ajax tests away from using PHP (more portable this way). Fixed a number of XHR env bugs.
This commit is contained in:
parent
de71a046e6
commit
d776dc9d5c
|
@ -17,17 +17,21 @@ var window = this;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var curLocation = (new java.io.File("./")).toURL();
|
||||||
|
|
||||||
window.__defineSetter__("location", function(url){
|
window.__defineSetter__("location", function(url){
|
||||||
|
curLocation = new java.net.URL( curLocation, url );
|
||||||
|
|
||||||
window.document = new DOMDocument(
|
window.document = new DOMDocument(
|
||||||
new Packages.org.xml.sax.InputSource(
|
new Packages.org.xml.sax.InputSource(
|
||||||
new java.io.InputStreamReader(
|
new java.io.InputStreamReader(
|
||||||
new java.io.FileInputStream(url))));
|
new java.io.FileInputStream( url ))));
|
||||||
});
|
});
|
||||||
|
|
||||||
window.__defineGetter__("location", function(url){
|
window.__defineGetter__("location", function(url){
|
||||||
return {
|
return {
|
||||||
get protocol(){
|
get protocol(){
|
||||||
return "file:";
|
return curLocation.getProtocol() + ":";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
@ -490,28 +494,30 @@ var window = this;
|
||||||
},
|
},
|
||||||
getResponseHeader: function(header){ },
|
getResponseHeader: function(header){ },
|
||||||
send: function(data){
|
send: function(data){
|
||||||
|
var self = this;
|
||||||
|
|
||||||
function makeRequest(){
|
function makeRequest(){
|
||||||
var url = new java.net.URL(this.url),
|
var url = new java.net.URL(curLocation, self.url),
|
||||||
connection = url.openConnection();
|
connection = url.openConnection();
|
||||||
|
|
||||||
// Add headers to Java connection
|
// Add headers to Java connection
|
||||||
for (var header in this.headers)
|
for (var header in self.headers)
|
||||||
connection.addRequestProperty(header, this.headers[header]);
|
connection.addRequestProperty(header, self.headers[header]);
|
||||||
|
|
||||||
connection.connect();
|
connection.connect();
|
||||||
|
|
||||||
// Stick the response headers into responseHeaders
|
// Stick the response headers into responseHeaders
|
||||||
for (i=0; ; i++) {
|
for (var i=0; ; i++) {
|
||||||
var headerName = connection.getHeaderFieldKey(i);
|
var headerName = connection.getHeaderFieldKey(i);
|
||||||
var headerValue = connection.getHeaderField(i);
|
var headerValue = connection.getHeaderField(i);
|
||||||
if (!headerName && !headerValue) break;
|
if (!headerName && !headerValue) break;
|
||||||
if (headerName)
|
if (headerName)
|
||||||
this.responseHeaders[headerName] = headerValue;
|
self.responseHeaders[headerName] = headerValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.readyState = 4;
|
self.readyState = 4;
|
||||||
this.status = parseInt(connection.responseCode);
|
self.status = parseInt(connection.responseCode);
|
||||||
this.statusText = connection.responseMessage;
|
self.statusText = connection.responseMessage;
|
||||||
|
|
||||||
var stream = new java.io.InputStreamReader(
|
var stream = new java.io.InputStreamReader(
|
||||||
connection.getInputStream()),
|
connection.getInputStream()),
|
||||||
|
@ -519,15 +525,20 @@ var window = this;
|
||||||
line;
|
line;
|
||||||
|
|
||||||
while ((line = buffer.readLine()) != null)
|
while ((line = buffer.readLine()) != null)
|
||||||
this.responseText += line;
|
self.responseText += line;
|
||||||
|
|
||||||
|
self.responseXML = null;
|
||||||
|
|
||||||
try {
|
if ( self.responseText.match(/^\s*</) ) {
|
||||||
this.responseXML = new DOMDocument(this.responseText);
|
try {
|
||||||
} catch(e) {
|
self.responseXML = new DOMDocument(
|
||||||
this.responseXML = null;
|
new java.io.ByteArrayInputStream(
|
||||||
|
(new java.lang.String(
|
||||||
|
self.responseText)).getBytes("UTF8")));
|
||||||
|
} catch(e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.onreadystatechange();
|
self.onreadystatechange();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.async)
|
if (this.async)
|
||||||
|
|
|
@ -11,6 +11,7 @@ load(
|
||||||
"src/selector/selectorTest.js",
|
"src/selector/selectorTest.js",
|
||||||
"src/event/eventTest.js",
|
"src/event/eventTest.js",
|
||||||
"src/fx/fxTest.js"
|
"src/fx/fxTest.js"
|
||||||
|
//"src/ajax/ajaxTest.js"
|
||||||
);
|
);
|
||||||
|
|
||||||
// Display the results
|
// Display the results
|
||||||
|
|
|
@ -181,4 +181,17 @@ function triggerEvent( elem, type, event ) {
|
||||||
elem.fireEvent("on"+type);
|
elem.fireEvent("on"+type);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add random number to url to stop IE from caching
|
||||||
|
*
|
||||||
|
* @example url("data/test.html")
|
||||||
|
* @result "data/test.html?10538358428943"
|
||||||
|
*
|
||||||
|
* @example url("data/test.php?foo=bar")
|
||||||
|
* @result "data/test.php?foo=bar&10538358345554"
|
||||||
|
*/
|
||||||
|
function url(value) {
|
||||||
|
return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random()*100000);
|
||||||
}
|
}
|
1
build/test/data/json_obj.js
Normal file
1
build/test/data/json_obj.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{ "data": {"lang": "en", "length": 25} }
|
1
build/test/data/name.html
Normal file
1
build/test/data/name.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ERROR <script type="text/javascript">ok( true, "name.html retrieved" );</script>
|
|
@ -1,7 +1,5 @@
|
||||||
module("ajax");
|
module("ajax");
|
||||||
|
|
||||||
if ( location.protocol != "file:" ) {
|
|
||||||
|
|
||||||
test("serialize()", function() {
|
test("serialize()", function() {
|
||||||
expect(1);
|
expect(1);
|
||||||
var data = $(':input').not('button').serialize();
|
var data = $(':input').not('button').serialize();
|
||||||
|
@ -24,6 +22,31 @@ test("param", function() {
|
||||||
ok( $.param(params) == "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All%20your%20base%20are%20belong%20to%20us", "even more arrays" );
|
ok( $.param(params) == "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All%20your%20base%20are%20belong%20to%20us", "even more arrays" );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("evalScripts() with no script elements", function() {
|
||||||
|
expect(2);
|
||||||
|
|
||||||
|
var data = "this is just some bogus text";
|
||||||
|
$('#foo').html(data);
|
||||||
|
ok ( true, 'before evalScripts()');
|
||||||
|
try {
|
||||||
|
$('#foo').evalScripts();
|
||||||
|
} catch(e) {
|
||||||
|
ok (false, 'exception evaluating scripts: ' + e.message);
|
||||||
|
}
|
||||||
|
ok ( true, 'after evalScripts()');
|
||||||
|
});
|
||||||
|
|
||||||
|
test("synchronous request", function() {
|
||||||
|
ok( /^{ "data"/.test( $.ajax({url: url("data/json_obj.js"), async: false}).responseText ), "check returned text" );
|
||||||
|
});
|
||||||
|
|
||||||
|
test("synchronous request with callbacks", function() {
|
||||||
|
expect(2);
|
||||||
|
var result;
|
||||||
|
$.ajax({url: url("data/json_obj.js"), async: false, success: function(data) { ok(true, "sucess callback executed"); result = data; } });
|
||||||
|
ok( /^{ "data"/.test( result ), "check returned text" );
|
||||||
|
});
|
||||||
|
|
||||||
test("pass-through request object", function() {
|
test("pass-through request object", function() {
|
||||||
expect(7);
|
expect(7);
|
||||||
stop(true);
|
stop(true);
|
||||||
|
@ -32,30 +55,19 @@ test("pass-through request object", function() {
|
||||||
if(count++ == 6)
|
if(count++ == 6)
|
||||||
start();
|
start();
|
||||||
}
|
}
|
||||||
var target = "data/name.php";
|
var target = "data/name.html";
|
||||||
ok( $.get(url(target), success), "get" );
|
ok( $.get(url(target), success), "get" );
|
||||||
ok( $.getIfModified(url(target), success), "getIfModified" );
|
ok( $.getIfModified(url(target), success), "getIfModified" );
|
||||||
ok( $.post(url(target), success), "post" );
|
ok( $.post(url(target), success), "post" );
|
||||||
ok( $.getScript(url("data/test.js"), success), "script" );
|
ok( $.getScript(url("data/test.js"), success), "script" );
|
||||||
ok( $.getJSON(url("data/json.php"), success), "json" );
|
ok( $.getJSON(url("data/json_obj.js"), success), "json" );
|
||||||
ok( $.ajax({url: url(target), success: success}), "generic" );
|
ok( $.ajax({url: url(target), success: success}), "generic" );
|
||||||
});
|
});
|
||||||
|
|
||||||
test("synchronous request", function() {
|
|
||||||
ok( /^{ "data"/.test( $.ajax({url: url("data/json.php"), async: false}).responseText ), "check returned text" );
|
|
||||||
});
|
|
||||||
|
|
||||||
test("synchronous request with callbacks", function() {
|
|
||||||
expect(2);
|
|
||||||
var result;
|
|
||||||
$.ajax({url: url("data/json.php"), async: false, success: function(data) { ok(true, "sucess callback executed"); result = data; } });
|
|
||||||
ok( /^{ "data"/.test( result ), "check returned text" );
|
|
||||||
});
|
|
||||||
|
|
||||||
test("load(String, Object, Function) - simple: inject text into DOM", function() {
|
test("load(String, Object, Function) - simple: inject text into DOM", function() {
|
||||||
expect(2);
|
expect(2);
|
||||||
stop();
|
stop();
|
||||||
$('#first').load(url("data/name.php"), function() {
|
$('#first').load(url("data/name.html"), function() {
|
||||||
ok( /^ERROR/.test($('#first').text()), 'Check if content was injected into the DOM' );
|
ok( /^ERROR/.test($('#first').text()), 'Check if content was injected into the DOM' );
|
||||||
start();
|
start();
|
||||||
});
|
});
|
||||||
|
@ -64,9 +76,11 @@ test("load(String, Object, Function) - simple: inject text into DOM", function()
|
||||||
test("load(String, Object, Function) - inject without callback", function() {
|
test("load(String, Object, Function) - inject without callback", function() {
|
||||||
expect(1);
|
expect(1);
|
||||||
stop(true); // check if load can be called with only url
|
stop(true); // check if load can be called with only url
|
||||||
$('#first').load("data/name.php");
|
$('#first').load("data/name.html");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if ( location.protocol != "file:" ) {
|
||||||
|
|
||||||
test("load(String, Object, Function) - check scripts", function() {
|
test("load(String, Object, Function) - check scripts", function() {
|
||||||
expect(7);
|
expect(7);
|
||||||
stop();
|
stop();
|
||||||
|
@ -365,20 +379,6 @@ test("ajaxSetup()", function() {
|
||||||
$.ajax();
|
$.ajax();
|
||||||
});
|
});
|
||||||
|
|
||||||
test("evalScripts() with no script elements", function() {
|
|
||||||
expect(2);
|
|
||||||
|
|
||||||
var data = "this is just some bogus text";
|
|
||||||
$('#foo').html(data);
|
|
||||||
ok ( true, 'before evalScripts()');
|
|
||||||
try {
|
|
||||||
$('#foo').evalScripts();
|
|
||||||
} catch(e) {
|
|
||||||
ok (false, 'exception evaluating scripts: ' + e.message);
|
|
||||||
}
|
|
||||||
ok ( true, 'after evalScripts()');
|
|
||||||
});
|
|
||||||
|
|
||||||
test("custom timeout does not set error message when timeout occurs, see #970", function() {
|
test("custom timeout does not set error message when timeout occurs, see #970", function() {
|
||||||
stop();
|
stop();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
|
Loading…
Reference in a new issue