@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.
Files changed (105) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/Manifest.json +1 -1
  3. package/README.md +9 -3
  4. package/lib/compiler/compile-info.json +60 -58
  5. package/lib/compiler/index.js +3242 -1883
  6. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -1
  7. package/lib/resource/qx/tool/loadsass.js +6 -4
  8. package/lib/resource/qx/tool/schema/compile-1-0-0.json +6 -11
  9. package/package.json +17 -3
  10. package/source/class/qx/Bootstrap.js +22 -1
  11. package/source/class/qx/bom/Blocker.js +2 -1
  12. package/source/class/qx/core/Environment.js +3 -12
  13. package/source/class/qx/core/MProperty.js +1 -1
  14. package/source/class/qx/dev/unit/Sinon.js +1 -1
  15. package/source/class/qx/io/__init__.js +5 -3
  16. package/source/class/qx/io/exception/Cancel.js +34 -0
  17. package/source/class/qx/io/exception/Exception.js +38 -0
  18. package/source/class/qx/io/exception/Protocol.js +26 -0
  19. package/source/class/qx/io/exception/Transport.js +39 -0
  20. package/source/class/qx/io/exception/__init__.js +4 -0
  21. package/source/class/qx/io/graphql/Client.js +112 -0
  22. package/source/class/qx/io/graphql/__init__.js +9 -0
  23. package/source/class/qx/io/graphql/protocol/Message.js +65 -0
  24. package/source/class/qx/io/graphql/protocol/Request.js +95 -0
  25. package/source/class/qx/io/graphql/protocol/Response.js +61 -0
  26. package/source/class/qx/io/graphql/protocol/__init__.js +6 -0
  27. package/source/class/qx/io/jsonrpc/Client.js +323 -0
  28. package/source/class/qx/io/jsonrpc/__init__.js +15 -0
  29. package/source/class/qx/io/jsonrpc/protocol/Batch.js +97 -0
  30. package/source/class/qx/io/jsonrpc/protocol/Error.js +63 -0
  31. package/source/class/qx/io/jsonrpc/protocol/Message.js +48 -0
  32. package/source/class/qx/io/jsonrpc/protocol/Notification.js +45 -0
  33. package/source/class/qx/io/jsonrpc/protocol/Parser.js +81 -0
  34. package/source/class/qx/io/jsonrpc/protocol/Request.js +93 -0
  35. package/source/class/qx/io/jsonrpc/protocol/Result.js +48 -0
  36. package/source/class/qx/io/jsonrpc/protocol/__init__.js +5 -0
  37. package/source/class/qx/io/request/authentication/Bearer.js +52 -0
  38. package/source/class/qx/io/transport/AbstractClient.js +100 -0
  39. package/source/class/qx/io/transport/AbstractTransport.js +41 -0
  40. package/source/class/qx/io/transport/Fetch.js +95 -0
  41. package/source/class/qx/io/transport/ITransport.js +40 -0
  42. package/source/class/qx/io/transport/PostMessage.js +55 -0
  43. package/source/class/qx/io/transport/Websocket.js +97 -0
  44. package/source/class/qx/io/transport/Xhr.js +139 -0
  45. package/source/class/qx/io/transport/__init__.js +18 -0
  46. package/source/class/qx/test/core/Assert.js +1 -1
  47. package/source/class/qx/test/core/Environment.js +0 -3
  48. package/source/class/qx/test/io/MAssert.js +46 -0
  49. package/source/class/qx/test/io/graphql/Client.js +169 -0
  50. package/source/class/qx/test/io/graphql/ClientFetch.js +34 -0
  51. package/source/class/qx/test/io/graphql/Request.js +42 -0
  52. package/source/class/qx/test/io/jsonrpc/Client.js +267 -0
  53. package/source/class/qx/test/io/jsonrpc/Protocol.js +80 -0
  54. package/source/class/qx/test/io/transport/PostMessage.js +56 -0
  55. package/source/class/qx/test/io/transport/Websocket.js +63 -0
  56. package/source/class/qx/test/ui/embed/Iframe.js +1 -1
  57. package/source/class/qx/test/util/DateFormat.js +45 -6
  58. package/source/class/qx/tool/cli/Cli.js +1 -0
  59. package/source/class/qx/tool/cli/commands/Compile.js +13 -3
  60. package/source/class/qx/tool/cli/commands/Es6ify.js +93 -0
  61. package/source/class/qx/tool/cli/commands/package/Install.js +1 -1
  62. package/source/class/qx/tool/cli/commands/package/Publish.js +14 -0
  63. package/source/class/qx/tool/compiler/ClassFile.js +67 -27
  64. package/source/class/qx/tool/compiler/Es6ify.js +368 -0
  65. package/source/class/qx/tool/compiler/makers/AppMaker.js +2 -1
  66. package/source/class/qx/tool/compiler/targets/Target.js +57 -47
  67. package/source/class/qx/tool/compiler/targets/meta/AbstractJavascriptMeta.js +25 -18
  68. package/source/class/qx/tool/compiler/targets/meta/BootJs.js +16 -16
  69. package/source/class/qx/tool/compiler/targets/meta/PolyfillJs.js +11 -3
  70. package/source/class/qx/tool/compiler/targets/meta/Uglify.js +10 -10
  71. package/source/class/qx/ui/core/Widget.js +70 -0
  72. package/source/class/qx/ui/decoration/MLinearBackgroundGradient.js +2 -1
  73. package/source/class/qx/ui/form/ComboBox.js +8 -3
  74. package/source/class/qx/ui/form/DateField.js +16 -1
  75. package/source/class/qx/ui/form/MenuButton.js +8 -4
  76. package/source/class/qx/ui/form/SelectBox.js +8 -3
  77. package/source/class/qx/ui/menu/AbstractButton.js +12 -8
  78. package/source/class/qx/ui/menu/Menu.js +18 -8
  79. package/source/class/qx/ui/table/pane/Model.js +10 -4
  80. package/source/class/qx/ui/window/Window.js +8 -0
  81. package/source/class/qx/util/format/DateFormat.js +44 -17
  82. package/source/resource/qx/tool/loadsass.js +6 -4
  83. package/source/resource/qx/tool/schema/compile-1-0-0.json +6 -11
  84. package/source/translation/hr.po +297 -0
  85. package/lib/resource/qx/static/blank.gif +0 -0
  86. package/source/class/qx/io/remote/Exchange.js +0 -1063
  87. package/source/class/qx/io/remote/Request.js +0 -1021
  88. package/source/class/qx/io/remote/RequestQueue.js +0 -521
  89. package/source/class/qx/io/remote/Response.js +0 -137
  90. package/source/class/qx/io/remote/Rpc.js +0 -1075
  91. package/source/class/qx/io/remote/RpcError.js +0 -198
  92. package/source/class/qx/io/remote/__init__.js +0 -88
  93. package/source/class/qx/io/remote/transport/Abstract.js +0 -513
  94. package/source/class/qx/io/remote/transport/Iframe.js +0 -652
  95. package/source/class/qx/io/remote/transport/Script.js +0 -475
  96. package/source/class/qx/io/remote/transport/XmlHttp.js +0 -1019
  97. package/source/class/qx/io/remote/transport/__init__.js +0 -3
  98. package/source/class/qx/test/io/remote/AbstractRequest.js +0 -150
  99. package/source/class/qx/test/io/remote/RequestIframe.js +0 -105
  100. package/source/class/qx/test/io/remote/RequestXhr.js +0 -151
  101. package/source/class/qx/test/io/remote/Rpc.js +0 -205
  102. package/source/class/qx/test/io/remote/__init__.js +0 -4
  103. package/source/class/qx/test/io/remote/transport/Iframe.js +0 -67
  104. package/source/class/qx/test/io/remote/transport/XmlHttp.js +0 -133
  105. 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
- });