Left: | ||
Right: |
OLD | NEW |
---|---|
(Empty) | |
1 | |
2 XMLHttpRequest = function() | |
3 { | |
4 this.headers = {}; | |
5 this.responseHeaders = {}; | |
6 }; | |
7 | |
8 XMLHttpRequest.UNSENT = 0; | |
9 XMLHttpRequest.OPEN = 1; | |
10 XMLHttpRequest.HEADERS_RECEIVED = 2; | |
11 XMLHttpRequest.LOADING = 3; | |
12 XMLHttpRequest.DONE = 4; | |
13 | |
14 XMLHttpRequest.prototype = | |
15 { | |
16 open: function(method, url, async, user, password) | |
17 { | |
18 this.async = (typeof async == "undefined" || async) ? true : false; | |
19 this.method = method || "GET"; | |
20 this.url = url; | |
21 this.readyState = XMLHttpRequest.OPEN; | |
22 this.onreadystatechange(); | |
23 }, | |
24 setRequestHeader: function(header, value) | |
25 { | |
26 this.headers[header] = value; | |
27 }, | |
28 send: function(data) | |
29 { | |
30 var self = this; | |
31 | |
32 Android.httpSend(self.method, self.url, self.headers, self.async, handleResp onse); | |
33 | |
34 function handleResponse(code, message, headers, text) | |
35 { | |
36 if (self.aborted) | |
37 return; | |
38 if (headers != null) | |
39 { | |
40 for (var i = 0; i < headers.length; i++) | |
41 { | |
42 var headerName = headers[i][0]; | |
43 var headerValue = headers[i][1]; | |
44 if (headerName) | |
45 self.responseHeaders[headerName] = headerValue; | |
46 } | |
47 } | |
48 self.readyState = XMLHttpRequest.HEADERS_RECEIVED; | |
49 self.onreadystatechange(); | |
50 | |
51 self.readyState = XMLHttpRequest.LOADING; | |
52 self.onreadystatechange(); | |
53 self.status = parseInt(code) || undefined; | |
54 self.statusText = message || ""; | |
55 | |
56 self.responseText = text; | |
57 | |
58 self.readyState = XMLHttpRequest.DONE; | |
59 self.onreadystatechange(); | |
60 self.triggerListeners("load"); | |
61 self.triggerListeners("loadend"); | |
62 } | |
63 }, | |
64 abort: function() | |
65 { | |
66 this.aborted = true; | |
67 this.triggerListeners("abort"); | |
68 this.readyState = XMLHttpRequest.DONE; | |
69 this.onreadystatechange(); | |
70 }, | |
71 onreadystatechange: function(){}, | |
72 getResponseHeader: function(header) | |
73 { | |
74 if (this.readyState < XMLHttpRequest.LOADING) | |
75 throw new Error("INVALID_STATE_ERR"); | |
76 else | |
77 { | |
78 var lcHeader = header.toLowerCase(); | |
79 var returnedHeaders = []; | |
80 for (var rHeader in this.responseHeaders) | |
Felix Dahlke
2012/11/13 07:53:14
You might want to make sure that you're not iterat
Andrey Novikov
2012/11/13 09:44:54
Done.
| |
81 { | |
82 if (rHeader.toLowerCase() == lcHeader) | |
83 returnedHeaders.push(this.responseHeaders[rHeader]); | |
84 } | |
85 | |
86 if (returnedHeaders.length) | |
87 return returnedHeaders.join(", "); | |
88 } | |
89 | |
90 return null; | |
91 }, | |
92 getAllResponseHeaders: function(header) | |
93 { | |
94 if (this.readyState < 3) | |
95 throw new Error("INVALID_STATE_ERR"); | |
96 else | |
97 { | |
98 var returnedHeaders = []; | |
99 | |
100 for (var header in this.responseHeaders) | |
101 returnedHeaders.push(header + ": " + this.responseHeaders[header]); | |
102 | |
103 return returnedHeaders.join("\r\n"); | |
104 } | |
105 }, | |
106 overrideMimeType: function(mime) {}, | |
107 addEventListener: function(type, listener, useCapture) | |
108 { | |
109 var listeners = null; | |
110 | |
111 if (type == "progress") | |
112 listeners = this.progressEventListeners; | |
113 else if (type == "loadend") | |
114 listeners = this.loadendEventListeners; | |
115 else if (type == "load") | |
116 listeners = this.loadEventListeners; | |
117 else if (type == "error") | |
118 listeners = this.errorEventListeners; | |
119 else if (type == "abort") | |
120 listeners = this.abortEventListeners; | |
121 | |
122 if (listeners == null || listeners.indexOf(listener) >= 0) | |
123 return; | |
124 listeners.push(listener); | |
125 }, | |
126 triggerListeners: function(type) | |
127 { | |
128 var listeners = null; | |
129 | |
130 if (type == "progress") | |
131 listeners = this.progressEventListeners; | |
132 else if (type == "loadend") | |
133 listeners = this.loadendEventListeners; | |
134 else if (type == "load") | |
135 listeners = this.loadEventListeners; | |
136 else if (type == "error") | |
137 listeners = this.errorEventListeners; | |
138 else if (type == "abort") | |
139 listeners = this.abortEventListeners; | |
140 | |
141 for (var i = 0; i < listeners.length; i++) | |
142 { | |
143 var listener = listeners[i]; | |
144 listener(); | |
145 } | |
146 }, | |
147 progressEventListeners: [], | |
148 loadendEventListeners: [], | |
149 loadEventListeners: [], | |
150 errorEventListeners: [], | |
151 abortEventListeners: [], | |
152 aborted: false, | |
153 async: true, | |
154 readyState: XMLHttpRequest.UNSENT, | |
155 responseText: "", | |
156 status: 0 | |
157 }; | |
158 | |
159 XMLHttpRequest.prototype.channel = | |
160 { | |
161 status: -1, | |
162 notificationCallbacks: {}, | |
163 loadFlags: 0, | |
164 INHIBIT_CACHING: 0, | |
165 VALIDATE_ALWAYS: 0, | |
166 QueryInterface: function() | |
167 { | |
168 return this; | |
169 } | |
170 }; | |
OLD | NEW |