@qooxdoo/framework 7.0.0-beta.3 → 7.0.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -0
- package/Manifest.json +1 -1
- package/README.md +9 -3
- package/lib/compiler/compile-info.json +60 -58
- package/lib/compiler/index.js +3242 -1883
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -1
- package/lib/resource/qx/tool/loadsass.js +6 -4
- package/lib/resource/qx/tool/schema/compile-1-0-0.json +6 -11
- package/package.json +17 -3
- package/source/class/qx/Bootstrap.js +22 -1
- package/source/class/qx/bom/Blocker.js +2 -1
- package/source/class/qx/core/Environment.js +3 -12
- package/source/class/qx/core/MProperty.js +1 -1
- package/source/class/qx/dev/unit/Sinon.js +1 -1
- package/source/class/qx/io/__init__.js +5 -3
- package/source/class/qx/io/exception/Cancel.js +34 -0
- package/source/class/qx/io/exception/Exception.js +38 -0
- package/source/class/qx/io/exception/Protocol.js +26 -0
- package/source/class/qx/io/exception/Transport.js +39 -0
- package/source/class/qx/io/exception/__init__.js +4 -0
- package/source/class/qx/io/graphql/Client.js +112 -0
- package/source/class/qx/io/graphql/__init__.js +9 -0
- package/source/class/qx/io/graphql/protocol/Message.js +65 -0
- package/source/class/qx/io/graphql/protocol/Request.js +95 -0
- package/source/class/qx/io/graphql/protocol/Response.js +61 -0
- package/source/class/qx/io/graphql/protocol/__init__.js +6 -0
- package/source/class/qx/io/jsonrpc/Client.js +323 -0
- package/source/class/qx/io/jsonrpc/__init__.js +15 -0
- package/source/class/qx/io/jsonrpc/protocol/Batch.js +97 -0
- package/source/class/qx/io/jsonrpc/protocol/Error.js +63 -0
- package/source/class/qx/io/jsonrpc/protocol/Message.js +48 -0
- package/source/class/qx/io/jsonrpc/protocol/Notification.js +45 -0
- package/source/class/qx/io/jsonrpc/protocol/Parser.js +81 -0
- package/source/class/qx/io/jsonrpc/protocol/Request.js +93 -0
- package/source/class/qx/io/jsonrpc/protocol/Result.js +48 -0
- package/source/class/qx/io/jsonrpc/protocol/__init__.js +5 -0
- package/source/class/qx/io/request/authentication/Bearer.js +52 -0
- package/source/class/qx/io/transport/AbstractClient.js +100 -0
- package/source/class/qx/io/transport/AbstractTransport.js +41 -0
- package/source/class/qx/io/transport/Fetch.js +95 -0
- package/source/class/qx/io/transport/ITransport.js +40 -0
- package/source/class/qx/io/transport/PostMessage.js +55 -0
- package/source/class/qx/io/transport/Websocket.js +97 -0
- package/source/class/qx/io/transport/Xhr.js +139 -0
- package/source/class/qx/io/transport/__init__.js +18 -0
- package/source/class/qx/test/core/Assert.js +1 -1
- package/source/class/qx/test/core/Environment.js +0 -3
- package/source/class/qx/test/io/MAssert.js +46 -0
- package/source/class/qx/test/io/graphql/Client.js +169 -0
- package/source/class/qx/test/io/graphql/ClientFetch.js +34 -0
- package/source/class/qx/test/io/graphql/Request.js +42 -0
- package/source/class/qx/test/io/jsonrpc/Client.js +267 -0
- package/source/class/qx/test/io/jsonrpc/Protocol.js +80 -0
- package/source/class/qx/test/io/transport/PostMessage.js +56 -0
- package/source/class/qx/test/io/transport/Websocket.js +63 -0
- package/source/class/qx/test/ui/embed/Iframe.js +1 -1
- package/source/class/qx/test/util/DateFormat.js +45 -6
- package/source/class/qx/tool/cli/Cli.js +1 -0
- package/source/class/qx/tool/cli/commands/Compile.js +13 -3
- package/source/class/qx/tool/cli/commands/Es6ify.js +93 -0
- package/source/class/qx/tool/cli/commands/package/Install.js +1 -1
- package/source/class/qx/tool/cli/commands/package/Publish.js +14 -0
- package/source/class/qx/tool/compiler/ClassFile.js +67 -27
- package/source/class/qx/tool/compiler/Es6ify.js +368 -0
- package/source/class/qx/tool/compiler/makers/AppMaker.js +2 -1
- package/source/class/qx/tool/compiler/targets/Target.js +57 -47
- package/source/class/qx/tool/compiler/targets/meta/AbstractJavascriptMeta.js +25 -18
- package/source/class/qx/tool/compiler/targets/meta/BootJs.js +16 -16
- package/source/class/qx/tool/compiler/targets/meta/PolyfillJs.js +11 -3
- package/source/class/qx/tool/compiler/targets/meta/Uglify.js +10 -10
- package/source/class/qx/ui/core/Widget.js +70 -0
- package/source/class/qx/ui/decoration/MLinearBackgroundGradient.js +2 -1
- package/source/class/qx/ui/form/ComboBox.js +8 -3
- package/source/class/qx/ui/form/DateField.js +16 -1
- package/source/class/qx/ui/form/MenuButton.js +8 -4
- package/source/class/qx/ui/form/SelectBox.js +8 -3
- package/source/class/qx/ui/menu/AbstractButton.js +12 -8
- package/source/class/qx/ui/menu/Menu.js +18 -8
- package/source/class/qx/ui/table/pane/Model.js +10 -4
- package/source/class/qx/ui/window/Window.js +8 -0
- package/source/class/qx/util/format/DateFormat.js +44 -17
- package/source/resource/qx/tool/loadsass.js +6 -4
- package/source/resource/qx/tool/schema/compile-1-0-0.json +6 -11
- package/source/translation/hr.po +297 -0
- package/lib/resource/qx/static/blank.gif +0 -0
- package/source/class/qx/io/remote/Exchange.js +0 -1063
- package/source/class/qx/io/remote/Request.js +0 -1021
- package/source/class/qx/io/remote/RequestQueue.js +0 -521
- package/source/class/qx/io/remote/Response.js +0 -137
- package/source/class/qx/io/remote/Rpc.js +0 -1075
- package/source/class/qx/io/remote/RpcError.js +0 -198
- package/source/class/qx/io/remote/__init__.js +0 -88
- package/source/class/qx/io/remote/transport/Abstract.js +0 -513
- package/source/class/qx/io/remote/transport/Iframe.js +0 -652
- package/source/class/qx/io/remote/transport/Script.js +0 -475
- package/source/class/qx/io/remote/transport/XmlHttp.js +0 -1019
- package/source/class/qx/io/remote/transport/__init__.js +0 -3
- package/source/class/qx/test/io/remote/AbstractRequest.js +0 -150
- package/source/class/qx/test/io/remote/RequestIframe.js +0 -105
- package/source/class/qx/test/io/remote/RequestXhr.js +0 -151
- package/source/class/qx/test/io/remote/Rpc.js +0 -205
- package/source/class/qx/test/io/remote/__init__.js +0 -4
- package/source/class/qx/test/io/remote/transport/Iframe.js +0 -67
- package/source/class/qx/test/io/remote/transport/XmlHttp.js +0 -133
- package/source/class/qx/test/io/remote/transport/__init__.js +0 -4
|
@@ -1,652 +0,0 @@
|
|
|
1
|
-
/* ************************************************************************
|
|
2
|
-
|
|
3
|
-
qooxdoo - the new era of web development
|
|
4
|
-
|
|
5
|
-
http://qooxdoo.org
|
|
6
|
-
|
|
7
|
-
Copyright:
|
|
8
|
-
2004-2008 1&1 Internet AG, Germany, http://www.1und1.de
|
|
9
|
-
2006 Derrell Lipman
|
|
10
|
-
2006 STZ-IDA, Germany, http://www.stz-ida.de
|
|
11
|
-
|
|
12
|
-
License:
|
|
13
|
-
MIT: https://opensource.org/licenses/MIT
|
|
14
|
-
See the LICENSE file in the project's top-level directory for details.
|
|
15
|
-
|
|
16
|
-
Authors:
|
|
17
|
-
* Sebastian Werner (wpbasti)
|
|
18
|
-
* Andreas Ecker (ecker)
|
|
19
|
-
* Derrell Lipman (derrell)
|
|
20
|
-
* Andreas Junghans (lucidcake)
|
|
21
|
-
|
|
22
|
-
************************************************************************ */
|
|
23
|
-
|
|
24
|
-
/* ************************************************************************
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
************************************************************************ */
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Transports requests to a server using an IFRAME.
|
|
31
|
-
*
|
|
32
|
-
* This class should not be used directly by client programmers.
|
|
33
|
-
*
|
|
34
|
-
* NOTE: Instances of this class must be disposed of after use
|
|
35
|
-
*
|
|
36
|
-
* @asset(qx/static/blank.gif)
|
|
37
|
-
*/
|
|
38
|
-
qx.Class.define("qx.io.remote.transport.Iframe",
|
|
39
|
-
{
|
|
40
|
-
extend : qx.io.remote.transport.Abstract,
|
|
41
|
-
implement: [ qx.core.IDisposable ],
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
/*
|
|
47
|
-
*****************************************************************************
|
|
48
|
-
CONSTRUCTOR
|
|
49
|
-
*****************************************************************************
|
|
50
|
-
*/
|
|
51
|
-
|
|
52
|
-
construct : function()
|
|
53
|
-
{
|
|
54
|
-
this.base(arguments);
|
|
55
|
-
|
|
56
|
-
// Unique identifiers for iframe and form
|
|
57
|
-
var vUniqueId = (new Date).valueOf();
|
|
58
|
-
var vFrameName = "frame_" + vUniqueId;
|
|
59
|
-
var vFormName = "form_" + vUniqueId;
|
|
60
|
-
|
|
61
|
-
// This is to prevent the "mixed secure and insecure content" warning in IE with https
|
|
62
|
-
var vFrameSource;
|
|
63
|
-
if ((qx.core.Environment.get("engine.name") == "mshtml")) {
|
|
64
|
-
/* eslint-disable-next-line no-script-url */
|
|
65
|
-
vFrameSource = "javascript:void(0)";
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Create a hidden iframe.
|
|
69
|
-
// The purpose of the iframe is to receive data coming back from the server (see below).
|
|
70
|
-
this.__frame = qx.bom.Iframe.create({id: vFrameName, name: vFrameName, src: vFrameSource});
|
|
71
|
-
|
|
72
|
-
qx.bom.element.Style.set(this.__frame, "display", "none");
|
|
73
|
-
|
|
74
|
-
// Create form element with textarea as conduit for request data.
|
|
75
|
-
// The target of the form is the hidden iframe, which means the response
|
|
76
|
-
// coming back from the server is written into the iframe.
|
|
77
|
-
this.__form = qx.dom.Element.create("form", {id: vFormName, name: vFormName, target: vFrameName});
|
|
78
|
-
qx.bom.element.Style.set(this.__form, "display", "none");
|
|
79
|
-
qx.dom.Element.insertEnd(this.__form, qx.dom.Node.getBodyElement(document));
|
|
80
|
-
|
|
81
|
-
this.__data = qx.dom.Element.create("textarea", {id: "_data_", name: "_data_"});
|
|
82
|
-
qx.dom.Element.insertEnd(this.__data, this.__form);
|
|
83
|
-
|
|
84
|
-
// Finally, attach iframe to DOM and add listeners
|
|
85
|
-
qx.dom.Element.insertEnd(this.__frame, qx.dom.Node.getBodyElement(document));
|
|
86
|
-
qx.event.Registration.addListener(this.__frame, "load", this._onload, this);
|
|
87
|
-
|
|
88
|
-
// qx.event.handler.Iframe does not yet support the readystatechange event
|
|
89
|
-
this.__onreadystatechangeWrapper = qx.lang.Function.listener(this._onreadystatechange, this);
|
|
90
|
-
qx.bom.Event.addNativeListener(this.__frame, "readystatechange", this.__onreadystatechangeWrapper);
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
/*
|
|
97
|
-
*****************************************************************************
|
|
98
|
-
STATICS
|
|
99
|
-
*****************************************************************************
|
|
100
|
-
*/
|
|
101
|
-
|
|
102
|
-
statics :
|
|
103
|
-
{
|
|
104
|
-
/**
|
|
105
|
-
* Capabilities of this transport type.
|
|
106
|
-
*
|
|
107
|
-
* @internal
|
|
108
|
-
*/
|
|
109
|
-
handles :
|
|
110
|
-
{
|
|
111
|
-
synchronous : false,
|
|
112
|
-
asynchronous : true,
|
|
113
|
-
crossDomain : false,
|
|
114
|
-
fileUpload : true,
|
|
115
|
-
programmaticFormFields : true,
|
|
116
|
-
responseTypes : [ "text/plain", "text/javascript", "application/json", "application/xml", "text/html" ]
|
|
117
|
-
},
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Returns always true, because iframe transport is supported by all browsers.
|
|
122
|
-
*
|
|
123
|
-
* @return {Boolean}
|
|
124
|
-
*/
|
|
125
|
-
isSupported : function() {
|
|
126
|
-
return true;
|
|
127
|
-
},
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
/*
|
|
133
|
-
---------------------------------------------------------------------------
|
|
134
|
-
EVENT LISTENER
|
|
135
|
-
---------------------------------------------------------------------------
|
|
136
|
-
*/
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* For reference:
|
|
140
|
-
* http://msdn.microsoft.com/en-us/library/ie/ms534359%28v=vs.85%29.aspx
|
|
141
|
-
*
|
|
142
|
-
* @internal
|
|
143
|
-
*/
|
|
144
|
-
_numericMap :
|
|
145
|
-
{
|
|
146
|
-
"uninitialized" : 1,
|
|
147
|
-
"loading" : 2,
|
|
148
|
-
"loaded" : 2,
|
|
149
|
-
"interactive" : 3,
|
|
150
|
-
"complete" : 4
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
/*
|
|
158
|
-
*****************************************************************************
|
|
159
|
-
MEMBERS
|
|
160
|
-
*****************************************************************************
|
|
161
|
-
*/
|
|
162
|
-
|
|
163
|
-
members :
|
|
164
|
-
{
|
|
165
|
-
|
|
166
|
-
__data : null,
|
|
167
|
-
__lastReadyState : 0,
|
|
168
|
-
__form : null,
|
|
169
|
-
__frame : null,
|
|
170
|
-
__onreadystatechangeWrapper : null,
|
|
171
|
-
|
|
172
|
-
/*
|
|
173
|
-
---------------------------------------------------------------------------
|
|
174
|
-
USER METHODS
|
|
175
|
-
---------------------------------------------------------------------------
|
|
176
|
-
*/
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Sends a request with the use of a form.
|
|
180
|
-
*
|
|
181
|
-
*/
|
|
182
|
-
send : function()
|
|
183
|
-
{
|
|
184
|
-
var vMethod = this.getMethod();
|
|
185
|
-
var vUrl = this.getUrl();
|
|
186
|
-
|
|
187
|
-
// --------------------------------------
|
|
188
|
-
// Adding parameters
|
|
189
|
-
// --------------------------------------
|
|
190
|
-
var vParameters = this.getParameters(false);
|
|
191
|
-
var vParametersList = [];
|
|
192
|
-
|
|
193
|
-
for (var vId in vParameters)
|
|
194
|
-
{
|
|
195
|
-
var value = vParameters[vId];
|
|
196
|
-
|
|
197
|
-
if (value instanceof Array)
|
|
198
|
-
{
|
|
199
|
-
for (var i=0; i<value.length; i++) {
|
|
200
|
-
vParametersList.push(encodeURIComponent(vId) + "=" + encodeURIComponent(value[i]));
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
else
|
|
204
|
-
{
|
|
205
|
-
vParametersList.push(encodeURIComponent(vId) + "=" + encodeURIComponent(value));
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
if (vParametersList.length > 0) {
|
|
210
|
-
vUrl += (vUrl.indexOf("?") >= 0 ? "&" : "?") + vParametersList.join("&");
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
// --------------------------------------------------------
|
|
214
|
-
// Adding data parameters (if no data is already present)
|
|
215
|
-
// --------------------------------------------------------
|
|
216
|
-
if (this.getData() === null)
|
|
217
|
-
{
|
|
218
|
-
var vParameters = this.getParameters(true);
|
|
219
|
-
var vParametersList = [];
|
|
220
|
-
|
|
221
|
-
for (var vId in vParameters)
|
|
222
|
-
{
|
|
223
|
-
var value = vParameters[vId];
|
|
224
|
-
|
|
225
|
-
if (value instanceof Array)
|
|
226
|
-
{
|
|
227
|
-
for (var i=0; i<value.length; i++)
|
|
228
|
-
{
|
|
229
|
-
vParametersList.push(encodeURIComponent(vId) +
|
|
230
|
-
"=" +
|
|
231
|
-
encodeURIComponent(value[i]));
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
else
|
|
235
|
-
{
|
|
236
|
-
vParametersList.push(encodeURIComponent(vId) +
|
|
237
|
-
"=" +
|
|
238
|
-
encodeURIComponent(value));
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
if (vParametersList.length > 0)
|
|
243
|
-
{
|
|
244
|
-
this.setData(vParametersList.join("&"));
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
// --------------------------------------
|
|
249
|
-
// Adding form fields
|
|
250
|
-
// --------------------------------------
|
|
251
|
-
var vFormFields = this.getFormFields();
|
|
252
|
-
|
|
253
|
-
for (var vId in vFormFields)
|
|
254
|
-
{
|
|
255
|
-
var vField = document.createElement("textarea");
|
|
256
|
-
vField.name = vId;
|
|
257
|
-
vField.appendChild(document.createTextNode(vFormFields[vId]));
|
|
258
|
-
this.__form.appendChild(vField);
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
// --------------------------------------
|
|
262
|
-
// Preparing form
|
|
263
|
-
// --------------------------------------
|
|
264
|
-
this.__form.action = vUrl;
|
|
265
|
-
this.__form.method = vMethod;
|
|
266
|
-
|
|
267
|
-
// --------------------------------------
|
|
268
|
-
// Sending data
|
|
269
|
-
// --------------------------------------
|
|
270
|
-
this.__data.appendChild(document.createTextNode(this.getData()));
|
|
271
|
-
this.__form.submit();
|
|
272
|
-
this.setState("sending");
|
|
273
|
-
},
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* Converting complete state to numeric value and update state property
|
|
278
|
-
*
|
|
279
|
-
* @signature function(e)
|
|
280
|
-
* @param e {qx.event.type.Event} event object
|
|
281
|
-
*/
|
|
282
|
-
_onload : qx.event.GlobalError.observeMethod(function(e)
|
|
283
|
-
{
|
|
284
|
-
|
|
285
|
-
// Timing-issue in Opera
|
|
286
|
-
// Do not switch state to complete in case load event fires before content
|
|
287
|
-
// of iframe was updated
|
|
288
|
-
if (qx.core.Environment.get("engine.name") == "opera" && this.getIframeHtmlContent() == "") {
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
if (this.__form.src) {
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
this._switchReadyState(qx.io.remote.transport.Iframe._numericMap.complete);
|
|
297
|
-
}),
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
/**
|
|
301
|
-
* Converting named readyState to numeric value and update state property
|
|
302
|
-
*
|
|
303
|
-
* @signature function(e)
|
|
304
|
-
* @param e {qx.event.type.Event} event object
|
|
305
|
-
*/
|
|
306
|
-
_onreadystatechange : qx.event.GlobalError.observeMethod(function(e) {
|
|
307
|
-
this._switchReadyState(qx.io.remote.transport.Iframe._numericMap[this.__frame.readyState]);
|
|
308
|
-
}),
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* Switches the readystate by setting the internal state.
|
|
313
|
-
*
|
|
314
|
-
* @param vReadyState {String} readystate value
|
|
315
|
-
*/
|
|
316
|
-
_switchReadyState : function(vReadyState)
|
|
317
|
-
{
|
|
318
|
-
// Ignoring already stopped requests
|
|
319
|
-
switch(this.getState())
|
|
320
|
-
{
|
|
321
|
-
case "completed":
|
|
322
|
-
case "aborted":
|
|
323
|
-
case "failed":
|
|
324
|
-
case "timeout":
|
|
325
|
-
this.warn("Ignore Ready State Change");
|
|
326
|
-
return;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
// Updating internal state
|
|
330
|
-
while (this.__lastReadyState < vReadyState) {
|
|
331
|
-
this.setState(qx.io.remote.Exchange._nativeMap[++this.__lastReadyState]);
|
|
332
|
-
}
|
|
333
|
-
},
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
/*
|
|
339
|
-
---------------------------------------------------------------------------
|
|
340
|
-
REQUEST HEADER SUPPORT
|
|
341
|
-
---------------------------------------------------------------------------
|
|
342
|
-
*/
|
|
343
|
-
|
|
344
|
-
/**
|
|
345
|
-
* Sets a request header with the given value.
|
|
346
|
-
*
|
|
347
|
-
* This method is not implemented at the moment.
|
|
348
|
-
*
|
|
349
|
-
* @param vLabel {String} request header name
|
|
350
|
-
* @param vValue {var} request header value
|
|
351
|
-
*/
|
|
352
|
-
setRequestHeader : function(vLabel, vValue) {},
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
/*
|
|
356
|
-
---------------------------------------------------------------------------
|
|
357
|
-
RESPONSE HEADER SUPPORT
|
|
358
|
-
---------------------------------------------------------------------------
|
|
359
|
-
*/
|
|
360
|
-
|
|
361
|
-
/**
|
|
362
|
-
* Returns the value of the given response header.
|
|
363
|
-
*
|
|
364
|
-
* This method is not implemented at the moment and returns always "null".
|
|
365
|
-
*
|
|
366
|
-
* @param vLabel {String} Response header name
|
|
367
|
-
* @return {null} Returns null
|
|
368
|
-
*/
|
|
369
|
-
getResponseHeader : function(vLabel) {
|
|
370
|
-
return null;
|
|
371
|
-
},
|
|
372
|
-
|
|
373
|
-
/**
|
|
374
|
-
* Provides an hash of all response headers.
|
|
375
|
-
*
|
|
376
|
-
* This method is not implemented at the moment and returns an empty map.
|
|
377
|
-
*
|
|
378
|
-
* @return {Map} empty map
|
|
379
|
-
*/
|
|
380
|
-
getResponseHeaders : function() {
|
|
381
|
-
return {};
|
|
382
|
-
},
|
|
383
|
-
|
|
384
|
-
/*
|
|
385
|
-
---------------------------------------------------------------------------
|
|
386
|
-
STATUS SUPPORT
|
|
387
|
-
---------------------------------------------------------------------------
|
|
388
|
-
*/
|
|
389
|
-
|
|
390
|
-
/**
|
|
391
|
-
* Returns the current status code of the request if available or -1 if not.
|
|
392
|
-
* This method needs implementation (returns always 200).
|
|
393
|
-
*
|
|
394
|
-
* @return {Integer} status code
|
|
395
|
-
*/
|
|
396
|
-
getStatusCode : function() {
|
|
397
|
-
return 200;
|
|
398
|
-
},
|
|
399
|
-
|
|
400
|
-
/**
|
|
401
|
-
* Provides the status text for the current request if available and null otherwise.
|
|
402
|
-
* This method needs implementation (returns always an empty string)
|
|
403
|
-
*
|
|
404
|
-
* @return {String} status code text
|
|
405
|
-
*/
|
|
406
|
-
getStatusText : function() {
|
|
407
|
-
return "";
|
|
408
|
-
},
|
|
409
|
-
|
|
410
|
-
/*
|
|
411
|
-
---------------------------------------------------------------------------
|
|
412
|
-
FRAME UTILITIES
|
|
413
|
-
---------------------------------------------------------------------------
|
|
414
|
-
*/
|
|
415
|
-
|
|
416
|
-
/**
|
|
417
|
-
* Returns the DOM window object of the used iframe.
|
|
418
|
-
*
|
|
419
|
-
* @return {Object} DOM window object
|
|
420
|
-
*/
|
|
421
|
-
getIframeWindow : function() {
|
|
422
|
-
return qx.bom.Iframe.getWindow(this.__frame);
|
|
423
|
-
},
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* Returns the document node of the used iframe.
|
|
428
|
-
*
|
|
429
|
-
* @return {Object} document node
|
|
430
|
-
*/
|
|
431
|
-
getIframeDocument : function() {
|
|
432
|
-
return qx.bom.Iframe.getDocument(this.__frame);
|
|
433
|
-
},
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
/**
|
|
437
|
-
* Returns the body node of the used iframe.
|
|
438
|
-
*
|
|
439
|
-
* @return {Object} body node
|
|
440
|
-
*/
|
|
441
|
-
getIframeBody : function() {
|
|
442
|
-
return qx.bom.Iframe.getBody(this.__frame);
|
|
443
|
-
},
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
/*
|
|
449
|
-
---------------------------------------------------------------------------
|
|
450
|
-
RESPONSE DATA SUPPORT
|
|
451
|
-
---------------------------------------------------------------------------
|
|
452
|
-
*/
|
|
453
|
-
|
|
454
|
-
/**
|
|
455
|
-
* Returns the iframe content (innerHTML) as text.
|
|
456
|
-
*
|
|
457
|
-
* @return {String} iframe content as text
|
|
458
|
-
*/
|
|
459
|
-
getIframeTextContent : function()
|
|
460
|
-
{
|
|
461
|
-
var vBody = this.getIframeBody();
|
|
462
|
-
|
|
463
|
-
if (!vBody) {
|
|
464
|
-
return null;
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
if (!vBody.firstChild) {
|
|
468
|
-
return "";
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
// Mshtml returns the content inside a PRE
|
|
472
|
-
// element if we use plain text
|
|
473
|
-
if (vBody.firstChild.tagName &&
|
|
474
|
-
vBody.firstChild.tagName.toLowerCase() == "pre") {
|
|
475
|
-
return vBody.firstChild.innerHTML;
|
|
476
|
-
} else {
|
|
477
|
-
return vBody.innerHTML;
|
|
478
|
-
}
|
|
479
|
-
},
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
/**
|
|
483
|
-
* Returns the iframe content as HTML.
|
|
484
|
-
*
|
|
485
|
-
* @return {String} iframe content as HTML
|
|
486
|
-
*/
|
|
487
|
-
getIframeHtmlContent : function()
|
|
488
|
-
{
|
|
489
|
-
var vBody = this.getIframeBody();
|
|
490
|
-
return vBody ? vBody.innerHTML : null;
|
|
491
|
-
},
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
/**
|
|
495
|
-
* Returns the length of the content as fetched thus far.
|
|
496
|
-
* This method needs implementation (returns always 0).
|
|
497
|
-
*
|
|
498
|
-
* @return {Integer} Returns 0
|
|
499
|
-
*/
|
|
500
|
-
getFetchedLength : function() {
|
|
501
|
-
return 0;
|
|
502
|
-
},
|
|
503
|
-
|
|
504
|
-
/**
|
|
505
|
-
* Returns the content of the response
|
|
506
|
-
*
|
|
507
|
-
* @return {null | String} null or text of the response (=iframe content).
|
|
508
|
-
*/
|
|
509
|
-
getResponseContent : function()
|
|
510
|
-
{
|
|
511
|
-
if (this.getState() !== "completed")
|
|
512
|
-
{
|
|
513
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
514
|
-
{
|
|
515
|
-
if (qx.core.Environment.get("qx.debug.io.remote")) {
|
|
516
|
-
this.warn("Transfer not complete, ignoring content!");
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
return null;
|
|
521
|
-
}
|
|
522
|
-
|
|
523
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
524
|
-
{
|
|
525
|
-
if (qx.core.Environment.get("qx.debug.io.remote")) {
|
|
526
|
-
this.debug("Returning content for responseType: " + this.getResponseType());
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
var vText = this.getIframeTextContent();
|
|
531
|
-
|
|
532
|
-
switch(this.getResponseType())
|
|
533
|
-
{
|
|
534
|
-
case "text/plain":
|
|
535
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
536
|
-
{
|
|
537
|
-
if (qx.core.Environment.get("qx.debug.io.remote.data"))
|
|
538
|
-
{
|
|
539
|
-
this.debug("Response: " + this._responseContent);
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
return vText;
|
|
543
|
-
|
|
544
|
-
case "text/html":
|
|
545
|
-
vText = this.getIframeHtmlContent();
|
|
546
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
547
|
-
{
|
|
548
|
-
if (qx.core.Environment.get("qx.debug.io.remote.data"))
|
|
549
|
-
{
|
|
550
|
-
this.debug("Response: " + this._responseContent);
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
return vText;
|
|
554
|
-
|
|
555
|
-
case "application/json":
|
|
556
|
-
vText = this.getIframeHtmlContent();
|
|
557
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
558
|
-
{
|
|
559
|
-
if (qx.core.Environment.get("qx.debug.io.remote.data"))
|
|
560
|
-
{
|
|
561
|
-
this.debug("Response: " + this._responseContent);
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
try {
|
|
566
|
-
return vText && vText.length > 0 ? qx.lang.Json.parse(vText) : null;
|
|
567
|
-
} catch(ex) {
|
|
568
|
-
return this.error("Could not execute json: (" + vText + ")", ex);
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
case "text/javascript":
|
|
572
|
-
vText = this.getIframeHtmlContent();
|
|
573
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
574
|
-
{
|
|
575
|
-
if (qx.core.Environment.get("qx.debug.io.remote.data"))
|
|
576
|
-
{
|
|
577
|
-
this.debug("Response: " + this._responseContent);
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
try {
|
|
582
|
-
return vText && vText.length > 0 ? window.eval(vText) : null;
|
|
583
|
-
} catch(ex) {
|
|
584
|
-
return this.error("Could not execute javascript: (" + vText + ")", ex);
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
case "application/xml":
|
|
588
|
-
vText = this.getIframeDocument();
|
|
589
|
-
if (qx.core.Environment.get("qx.debug"))
|
|
590
|
-
{
|
|
591
|
-
if (qx.core.Environment.get("qx.debug.io.remote.data"))
|
|
592
|
-
{
|
|
593
|
-
this.debug("Response: " + this._responseContent);
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
return vText;
|
|
597
|
-
|
|
598
|
-
default:
|
|
599
|
-
this.warn("No valid responseType specified (" + this.getResponseType() + ")!");
|
|
600
|
-
return null;
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
},
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
/*
|
|
608
|
-
*****************************************************************************
|
|
609
|
-
DEFER
|
|
610
|
-
*****************************************************************************
|
|
611
|
-
*/
|
|
612
|
-
|
|
613
|
-
defer : function()
|
|
614
|
-
{
|
|
615
|
-
// basic registration to qx.io.remote.Exchange
|
|
616
|
-
// the real availability check (activeX stuff and so on) follows at the first real request
|
|
617
|
-
qx.io.remote.Exchange.registerType(qx.io.remote.transport.Iframe, "qx.io.remote.transport.Iframe");
|
|
618
|
-
},
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
/*
|
|
624
|
-
*****************************************************************************
|
|
625
|
-
DESTRUCTOR
|
|
626
|
-
*****************************************************************************
|
|
627
|
-
*/
|
|
628
|
-
|
|
629
|
-
destruct : function()
|
|
630
|
-
{
|
|
631
|
-
if (this.__frame)
|
|
632
|
-
{
|
|
633
|
-
qx.event.Registration.removeListener(this.__frame, "load", this._onload, this);
|
|
634
|
-
qx.bom.Event.removeNativeListener(this.__frame, "readystatechange", this.__onreadystatechangeWrapper);
|
|
635
|
-
|
|
636
|
-
// Reset source to a blank image for gecko
|
|
637
|
-
// Otherwise it will switch into a load-without-end behaviour
|
|
638
|
-
if ((qx.core.Environment.get("engine.name") == "gecko")) {
|
|
639
|
-
this.__frame.src = qx.util.ResourceManager.getInstance().toUri("qx/static/blank.gif");
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
// Finally, remove element node
|
|
643
|
-
qx.dom.Element.remove(this.__frame);
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
if (this.__form) {
|
|
647
|
-
qx.dom.Element.remove(this.__form);
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
this.__frame = this.__form = this.__data = null;
|
|
651
|
-
}
|
|
652
|
-
});
|