@qooxdoo/framework 7.1.0 → 7.2.1

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 (153) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/Manifest.json +22 -22
  3. package/lib/compiler/compile-info.json +66 -66
  4. package/lib/compiler/index.js +406 -335
  5. package/lib/resource/qx/tool/cli/templates/loader/loader-browser.tmpl.js +1 -2
  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/schema/compile-1-0-0.json +11 -1
  8. package/npm-shrinkwrap.json +793 -744
  9. package/package.json +9 -8
  10. package/source/class/qx/Interface.js +13 -15
  11. package/source/class/qx/dev/unit/MTestLoader.js +25 -33
  12. package/source/class/qx/dev/unit/TestResult.js +9 -13
  13. package/source/class/qx/event/handler/Focus.js +1 -1
  14. package/source/class/qx/html/Element.js +1 -1
  15. package/source/class/qx/html/Node.js +0 -1
  16. package/source/class/qx/io/request/AbstractRequest.js +42 -66
  17. package/source/class/qx/test/Interface.js +70 -6
  18. package/source/class/qx/test/Mixin.js +20 -17
  19. package/source/class/qx/test/Promise.js +67 -91
  20. package/source/class/qx/test/bom/History.js +11 -19
  21. package/source/class/qx/test/bom/WebWorker.js +7 -15
  22. package/source/class/qx/test/bom/media/MediaTestCase.js +10 -18
  23. package/source/class/qx/test/bom/media/Video.js +10 -18
  24. package/source/class/qx/test/bom/rest/Resource.js +3 -7
  25. package/source/class/qx/test/bom/rest/ResourceWithRemote.js +40 -56
  26. package/source/class/qx/test/bom/webfonts/Validator.js +12 -20
  27. package/source/class/qx/test/core/Object.js +3 -7
  28. package/source/class/qx/test/data/controller/List.js +18 -22
  29. package/source/class/qx/test/data/marshal/Json.js +10 -14
  30. package/source/class/qx/test/data/store/Json.js +337 -428
  31. package/source/class/qx/test/data/store/Jsonp.js +46 -66
  32. package/source/class/qx/test/data/store/RestWithRemote.js +10 -18
  33. package/source/class/qx/test/html/Element.js +4 -8
  34. package/source/class/qx/test/html/Iframe.js +48 -60
  35. package/source/class/qx/test/io/jsonrpc/Client.js +1 -1
  36. package/source/class/qx/test/io/request/JsonpWithRemote.js +6 -10
  37. package/source/class/qx/test/io/request/MRequest.js +13 -25
  38. package/source/class/qx/test/io/request/Xhr.js +5 -9
  39. package/source/class/qx/test/io/request/XhrWithRemote.js +50 -78
  40. package/source/class/qx/test/io/rest/Resource.js +3 -7
  41. package/source/class/qx/test/io/rest/ResourceWithRemote.js +41 -57
  42. package/source/class/qx/test/mobile/basic/Image.js +16 -24
  43. package/source/class/qx/test/mobile/container/Navigation.js +3 -7
  44. package/source/class/qx/test/mobile/container/Scroll.js +8 -12
  45. package/source/class/qx/test/mobile/page/Page.js +24 -44
  46. package/source/class/qx/test/performance/Property.js +2 -2
  47. package/source/class/qx/test/ui/basic/Image.js +32 -52
  48. package/source/class/qx/test/ui/core/Blocker.js +6 -14
  49. package/source/class/qx/test/ui/embed/Iframe.js +13 -21
  50. package/source/class/qx/test/ui/form/FileSelectorButton.js +32 -0
  51. package/source/class/qx/test/ui/form/FormValidator.js +147 -211
  52. package/source/class/qx/test/ui/form/Label.js +8 -16
  53. package/source/class/qx/test/ui/root/Inline.js +9 -13
  54. package/source/class/qx/test/ui/table/Table.js +6 -14
  55. package/source/class/qx/test/ui/toolbar/OverflowHandling.js +18 -30
  56. package/source/class/qx/test/ui/virtual/Pane.js +3 -7
  57. package/source/class/qx/test/util/DynamicScriptLoader.js +23 -42
  58. package/source/class/qx/theme/iconfont/LoadMaterialIcons.js +4 -4
  59. package/source/class/qx/theme/iconfont/LoadMaterialIconsOutlined.js +4 -4
  60. package/source/class/qx/theme/iconfont/LoadMaterialIconsRound.js +4 -4
  61. package/source/class/qx/theme/iconfont/LoadMaterialIconsSharp.js +4 -4
  62. package/source/class/qx/theme/iconfont/LoadMaterialIconsTwoTone.js +4 -4
  63. package/source/class/qx/theme/tangible/Appearance.js +22 -3
  64. package/source/class/qx/theme/tangible/ColorEngine.js +3 -3
  65. package/source/class/qx/theme/tangible/Decoration.js +3 -3
  66. package/source/class/qx/tool/cli/Watch.js +3 -7
  67. package/source/class/qx/tool/cli/api/AbstractApi.js +1 -1
  68. package/source/class/qx/tool/cli/api/CompilerApi.js +3 -7
  69. package/source/class/qx/tool/cli/commands/Compile.js +9 -1
  70. package/source/class/qx/tool/cli/commands/Lint.js +21 -17
  71. package/source/class/qx/tool/compiler/ClassFile.js +22 -12
  72. package/source/class/qx/tool/compiler/Es6ify.js +12 -5
  73. package/source/class/qx/tool/compiler/TargetError.js +3 -4
  74. package/source/class/qx/tool/compiler/app/Application.js +14 -0
  75. package/source/class/qx/tool/compiler/app/WebFont.js +8 -6
  76. package/source/class/qx/tool/compiler/targets/SourceCodeCopier.js +1 -1
  77. package/source/class/qx/tool/compiler/targets/Target.js +7 -5
  78. package/source/class/qx/tool/compiler/targets/meta/AbstractJavascriptMeta.js +1 -1
  79. package/source/class/qx/tool/compiler/targets/meta/Browserify.js +88 -52
  80. package/source/class/qx/tool/compiler/targets/meta/Uglify.js +11 -3
  81. package/source/class/qx/tool/utils/Json.js +1 -1
  82. package/source/class/qx/tool/utils/Website.js +2 -2
  83. package/source/class/qx/ui/basic/Label.js +13 -17
  84. package/source/class/qx/ui/core/MPlacement.js +13 -21
  85. package/source/class/qx/ui/core/Widget.js +2 -3
  86. package/source/class/qx/ui/core/scroll/NativeScrollBar.js +3 -7
  87. package/source/class/qx/ui/core/scroll/ScrollBar.js +3 -7
  88. package/source/class/qx/ui/embed/Iframe.js +40 -50
  89. package/source/class/qx/ui/form/AbstractField.js +8 -12
  90. package/source/class/qx/ui/form/ComboBox.js +7 -15
  91. package/source/class/qx/ui/form/DateField.js +9 -18
  92. package/source/class/qx/ui/form/FileSelectorButton.js +157 -0
  93. package/source/class/qx/ui/form/Spinner.js +7 -15
  94. package/source/class/qx/ui/form/TextArea.js +3 -7
  95. package/source/class/qx/ui/form/VirtualComboBox.js +8 -16
  96. package/source/class/qx/ui/form/VirtualSelectBox.js +21 -37
  97. package/source/class/qx/ui/layout/Canvas.js +2 -2
  98. package/source/class/qx/ui/mobile/container/MIScroll.js +3 -7
  99. package/source/class/qx/ui/progressive/headfoot/Progress.js +22 -34
  100. package/source/class/qx/ui/progressive/renderer/table/Row.js +1 -1
  101. package/source/class/qx/ui/splitpane/Pane.js +14 -22
  102. package/source/class/qx/ui/table/MTableContextMenu.js +63 -71
  103. package/source/class/qx/ui/table/Table.js +3 -7
  104. package/source/class/qx/ui/table/model/Abstract.js +5 -2
  105. package/source/class/qx/ui/table/pane/Scroller.js +8 -12
  106. package/source/class/qx/ui/toolbar/FileSelectorButton.js +57 -0
  107. package/source/class/qx/ui/toolbar/Part.js +3 -7
  108. package/source/class/qx/ui/tree/VirtualTree.js +5 -9
  109. package/source/class/qx/ui/treevirtual/MNode.js +5 -3
  110. package/source/class/qx/ui/treevirtual/TreeVirtual.js +3 -7
  111. package/source/class/qx/ui/virtual/core/Pane.js +30 -42
  112. package/source/class/qx/util/DynamicScriptLoader.js +31 -43
  113. package/source/resource/qx/iconfont/MaterialIcons/materialicons-v126.eot +0 -0
  114. package/source/resource/qx/iconfont/MaterialIcons/{materialicons-v70.ttf → materialicons-v126.ttf} +0 -0
  115. package/source/resource/qx/iconfont/MaterialIcons/materialicons-v126.woff +0 -0
  116. package/source/resource/qx/iconfont/MaterialIcons/materialicons-v126.woff2 +0 -0
  117. package/source/resource/qx/iconfont/MaterialIcons/materialiconsoutlined-v101.eot +0 -0
  118. package/source/resource/qx/iconfont/MaterialIcons/materialiconsoutlined-v101.otf +0 -0
  119. package/source/resource/qx/iconfont/MaterialIcons/materialiconsoutlined-v101.woff +0 -0
  120. package/source/resource/qx/iconfont/MaterialIcons/materialiconsoutlined-v101.woff2 +0 -0
  121. package/source/resource/qx/iconfont/MaterialIcons/materialiconsround-v100.eot +0 -0
  122. package/source/resource/qx/iconfont/MaterialIcons/materialiconsround-v100.otf +0 -0
  123. package/source/resource/qx/iconfont/MaterialIcons/materialiconsround-v100.woff +0 -0
  124. package/source/resource/qx/iconfont/MaterialIcons/materialiconsround-v100.woff2 +0 -0
  125. package/source/resource/qx/iconfont/MaterialIcons/materialiconssharp-v101.eot +0 -0
  126. package/source/resource/qx/iconfont/MaterialIcons/materialiconssharp-v101.otf +0 -0
  127. package/source/resource/qx/iconfont/MaterialIcons/materialiconssharp-v101.woff +0 -0
  128. package/source/resource/qx/iconfont/MaterialIcons/materialiconssharp-v101.woff2 +0 -0
  129. package/source/resource/qx/iconfont/MaterialIcons/materialiconstwotone-v104.eot +0 -0
  130. package/source/resource/qx/iconfont/MaterialIcons/materialiconstwotone-v104.otf +0 -0
  131. package/source/resource/qx/iconfont/MaterialIcons/materialiconstwotone-v104.woff +0 -0
  132. package/source/resource/qx/iconfont/MaterialIcons/materialiconstwotone-v104.woff2 +0 -0
  133. package/source/resource/qx/tool/cli/templates/loader/loader-browser.tmpl.js +1 -2
  134. package/source/resource/qx/tool/schema/compile-1-0-0.json +11 -1
  135. package/source/resource/qx/iconfont/MaterialIcons/materialicons-v70.eot +0 -0
  136. package/source/resource/qx/iconfont/MaterialIcons/materialicons-v70.woff +0 -0
  137. package/source/resource/qx/iconfont/MaterialIcons/materialicons-v70.woff2 +0 -0
  138. package/source/resource/qx/iconfont/MaterialIcons/materialiconsoutlined-v38.eot +0 -0
  139. package/source/resource/qx/iconfont/MaterialIcons/materialiconsoutlined-v38.otf +0 -0
  140. package/source/resource/qx/iconfont/MaterialIcons/materialiconsoutlined-v38.woff +0 -0
  141. package/source/resource/qx/iconfont/MaterialIcons/materialiconsoutlined-v38.woff2 +0 -0
  142. package/source/resource/qx/iconfont/MaterialIcons/materialiconsround-v37.eot +0 -0
  143. package/source/resource/qx/iconfont/MaterialIcons/materialiconsround-v37.otf +0 -0
  144. package/source/resource/qx/iconfont/MaterialIcons/materialiconsround-v37.woff +0 -0
  145. package/source/resource/qx/iconfont/MaterialIcons/materialiconsround-v37.woff2 +0 -0
  146. package/source/resource/qx/iconfont/MaterialIcons/materialiconssharp-v38.eot +0 -0
  147. package/source/resource/qx/iconfont/MaterialIcons/materialiconssharp-v38.otf +0 -0
  148. package/source/resource/qx/iconfont/MaterialIcons/materialiconssharp-v38.woff +0 -0
  149. package/source/resource/qx/iconfont/MaterialIcons/materialiconssharp-v38.woff2 +0 -0
  150. package/source/resource/qx/iconfont/MaterialIcons/materialiconstwotone-v36.eot +0 -0
  151. package/source/resource/qx/iconfont/MaterialIcons/materialiconstwotone-v36.otf +0 -0
  152. package/source/resource/qx/iconfont/MaterialIcons/materialiconstwotone-v36.woff +0 -0
  153. package/source/resource/qx/iconfont/MaterialIcons/materialiconstwotone-v36.woff2 +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qooxdoo/framework",
3
- "version": "7.1.0",
3
+ "version": "7.2.1",
4
4
  "description": "The JS Framework for Coders",
5
5
  "author": "The qooxdoo project",
6
6
  "keywords": [
@@ -51,7 +51,7 @@
51
51
  "bin/deploy"
52
52
  ],
53
53
  "dependencies": {
54
- "@babel/core": "^7.12.10",
54
+ "@babel/core": "^7.17.10",
55
55
  "@babel/eslint-parser": "^7.16.3",
56
56
  "@babel/generator": "^7.12.11",
57
57
  "@babel/parser": "^7.12.11",
@@ -60,12 +60,14 @@
60
60
  "@babel/plugin-syntax-jsx": "^7.16.7",
61
61
  "@babel/plugin-transform-block-scoping": "^7.12.12",
62
62
  "@babel/plugin-transform-react-jsx": "^7.12.12",
63
- "@babel/preset-env": "^7.12.11",
63
+ "@babel/preset-env": "^7.17.10",
64
64
  "@babel/preset-react": "^7.12.10",
65
65
  "@babel/preset-typescript": "^7.12.7",
66
66
  "@babel/traverse": "^7.12.12",
67
67
  "@babel/types": "^7.12.12",
68
68
  "@foliojs-fork/fontkit": "^1.9.1",
69
+ "@metalsmith/layouts": "^2.5.1",
70
+ "@metalsmith/markdown": "^1.5.0",
69
71
  "@octokit/rest": "^18.0.15",
70
72
  "@qooxdoo/eslint-config-jsdoc-disable": "^1.0.3",
71
73
  "@qooxdoo/eslint-config-qx": "^2.0.1",
@@ -73,6 +75,7 @@
73
75
  "ajv": "^8.8.1",
74
76
  "app-module-path": "^2.2.0",
75
77
  "async": "^2.6.3",
78
+ "babelify": "^10.0.0",
76
79
  "better-ajv-errors": "^1.1.1",
77
80
  "browserify": "^17.0.0",
78
81
  "chokidar": "^3.5.1",
@@ -95,9 +98,7 @@
95
98
  "inquirer": "^7.3.3",
96
99
  "json-stable-stringify": "^1.0.1",
97
100
  "jstransformer-dot": "^0.1.2",
98
- "metalsmith": "^2.3.0",
99
- "metalsmith-layouts": "^2.3.1",
100
- "metalsmith-markdown": "^1.3.0",
101
+ "metalsmith": "^2.4.3",
101
102
  "node-fetch": "^2.6.7",
102
103
  "object-hash": "^2.1.1",
103
104
  "prettier": "^2.5.1",
@@ -108,9 +109,9 @@
108
109
  "semver": "^7.3.4",
109
110
  "set-value": "^4.1.0",
110
111
  "showdown": "^1.9.1",
111
- "source-map": "^0.5.7",
112
+ "source-map-js": "^1.0.2",
112
113
  "tap-colorize": "^1.2.0",
113
- "terser": "^5.10.0",
114
+ "terser": "^5.14.1",
114
115
  "tmp": "0.2.1",
115
116
  "unset-value": "^1.0.0",
116
117
  "upath": "^1.2.0",
@@ -255,21 +255,19 @@ qx.Bootstrap.define("qx.Interface", {
255
255
  } else {
256
256
  // Other members are not checked more detailed because of
257
257
  // JavaScript's loose type handling
258
- if (typeof object[key] === undefined) {
259
- if (typeof object[key] !== "function") {
260
- if (shouldThrow) {
261
- throw new Error(
262
- 'Implementation of member "' +
263
- key +
264
- '" is missing in class "' +
265
- clazz.classname +
266
- '" required by interface "' +
267
- iface.name +
268
- '"'
269
- );
270
- } else {
271
- return false;
272
- }
258
+ if (typeof object[key] === "undefined") {
259
+ if (shouldThrow) {
260
+ throw new Error(
261
+ 'Implementation of member "' +
262
+ key +
263
+ '" is missing in class "' +
264
+ clazz.classname +
265
+ '" required by interface "' +
266
+ iface.name +
267
+ '"'
268
+ );
269
+ } else {
270
+ return false;
273
271
  }
274
272
  }
275
273
  }
@@ -91,39 +91,31 @@ qx.Mixin.define("qx.dev.unit.MTestLoader", {
91
91
  runStandAlone() {
92
92
  var testResult = new qx.dev.unit.TestResult();
93
93
 
94
- testResult.addListener(
95
- "failure",
96
- function (e) {
97
- var ex = e.getData()[0].exception;
98
- var test = e.getData()[0].test;
99
- this.error(
100
- "Test '" +
101
- test.getFullName() +
102
- "' failed: " +
103
- ex.message +
104
- " - " +
105
- ex.getComment()
106
- );
107
-
108
- if (ex.getStackTrace) {
109
- this.error("Stack trace: " + ex.getStackTrace().join("\n"));
110
- }
111
- },
112
- this
113
- );
114
-
115
- testResult.addListener(
116
- "error",
117
- function (e) {
118
- var ex = e.getData()[0].exception;
119
- var test = e.getData()[0].test;
120
- this.error(
121
- "The test '" + test.getFullName() + "' had an error: " + ex,
122
- ex
123
- );
124
- },
125
- this
126
- );
94
+ testResult.addListener("failure", e => {
95
+ var ex = e.getData()[0].exception;
96
+ var test = e.getData()[0].test;
97
+ this.error(
98
+ "Test '" +
99
+ test.getFullName() +
100
+ "' failed: " +
101
+ ex.message +
102
+ " - " +
103
+ ex.getComment()
104
+ );
105
+
106
+ if (ex.getStackTrace) {
107
+ this.error("Stack trace: " + ex.getStackTrace().join("\n"));
108
+ }
109
+ });
110
+
111
+ testResult.addListener("error", e => {
112
+ var ex = e.getData()[0].exception;
113
+ var test = e.getData()[0].test;
114
+ this.error(
115
+ "The test '" + test.getFullName() + "' had an error: " + ex,
116
+ ex
117
+ );
118
+ });
127
119
 
128
120
  this.getSuite().run(testResult);
129
121
  },
@@ -125,20 +125,16 @@ qx.Class.define("qx.dev.unit.TestResult", {
125
125
 
126
126
  var testClass = test.getTestClass();
127
127
  if (!testClass.hasListener("assertionFailed")) {
128
- testClass.addListener(
129
- "assertionFailed",
130
- function (ev) {
131
- var error = [
132
- {
133
- exception: ev.getData(),
134
- test: test
135
- }
136
- ];
128
+ testClass.addListener("assertionFailed", ev => {
129
+ var error = [
130
+ {
131
+ exception: ev.getData(),
132
+ test: test
133
+ }
134
+ ];
137
135
 
138
- this.fireDataEvent("failure", error);
139
- },
140
- this
141
- );
136
+ this.fireDataEvent("failure", error);
137
+ });
142
138
  }
143
139
 
144
140
  if (resume && !this._timeout[test.getFullName()]) {
@@ -88,7 +88,7 @@ qx.Class.define("qx.event.handler.Focus", {
88
88
  nullable: true
89
89
  },
90
90
 
91
- /** The focussed DOM element */
91
+ /** The focused DOM element */
92
92
  focus: {
93
93
  apply: "_applyFocus",
94
94
  nullable: true
@@ -1044,7 +1044,7 @@ qx.Class.define("qx.html.Element", {
1044
1044
  * @Override
1045
1045
  */
1046
1046
  _applyVisible(value, oldValue) {
1047
- this.base(arguments, value, oldValue);
1047
+ super._applyVisible(value, oldValue);
1048
1048
  if (value) {
1049
1049
  if (this._domNode) {
1050
1050
  qx.html.Element._visibility[this.toHashCode()] = this;
@@ -1349,7 +1349,6 @@ qx.Class.define("qx.html.Node", {
1349
1349
  // Nothing - to be overridden
1350
1350
  },
1351
1351
 
1352
-
1353
1352
  /*
1354
1353
  ---------------------------------------------------------------------------
1355
1354
  PROPERTY SUPPORT
@@ -451,87 +451,63 @@ qx.Class.define("qx.io.request.AbstractRequest", {
451
451
  var promise = new qx.Promise(function (resolve, reject) {
452
452
  var listeners = [];
453
453
 
454
- var changeResponseListener = req.addListener(
455
- "success",
456
- function (e) {
457
- listeners.forEach(req.removeListenerById.bind(req));
458
- resolve(req);
459
- },
460
- this
461
- );
454
+ var changeResponseListener = req.addListener("success", e => {
455
+ listeners.forEach(req.removeListenerById.bind(req));
456
+ resolve(req);
457
+ });
462
458
 
463
459
  listeners.push(changeResponseListener);
464
460
 
465
- var statusErrorListener = req.addListener(
466
- "statusError",
467
- function (e) {
468
- listeners.forEach(req.removeListenerById.bind(req));
469
- var failMessage = qx.lang.String.format("%1: %2.", [
470
- req.getStatus(),
471
- req.getStatusText()
472
- ]);
473
-
474
- var err = new qx.type.BaseError("statusError", failMessage);
475
- reject(err);
476
- },
477
- this
478
- );
461
+ var statusErrorListener = req.addListener("statusError", e => {
462
+ listeners.forEach(req.removeListenerById.bind(req));
463
+ var failMessage = qx.lang.String.format("%1: %2.", [
464
+ req.getStatus(),
465
+ req.getStatusText()
466
+ ]);
467
+
468
+ var err = new qx.type.BaseError("statusError", failMessage);
469
+ reject(err);
470
+ });
479
471
 
480
472
  listeners.push(statusErrorListener);
481
473
 
482
- var timeoutListener = req.addListener(
483
- "timeout",
484
- function (e) {
485
- listeners.forEach(req.removeListenerById.bind(req));
486
- var failMessage = qx.lang.String.format(
487
- "Request failed with timeout after %1 ms.",
488
- [req.getTimeout()]
489
- );
490
-
491
- var err = new qx.type.BaseError("timeout", failMessage);
492
- reject(err);
493
- },
494
- this
495
- );
474
+ var timeoutListener = req.addListener("timeout", e => {
475
+ listeners.forEach(req.removeListenerById.bind(req));
476
+ var failMessage = qx.lang.String.format(
477
+ "Request failed with timeout after %1 ms.",
478
+ [req.getTimeout()]
479
+ );
480
+
481
+ var err = new qx.type.BaseError("timeout", failMessage);
482
+ reject(err);
483
+ });
496
484
 
497
485
  listeners.push(timeoutListener);
498
486
 
499
- var parseErrorListener = req.addListener(
500
- "parseError",
501
- function (e) {
502
- listeners.forEach(req.removeListenerById.bind(req));
503
- var failMessage = "Error parsing the response.";
504
- var err = new qx.type.BaseError("parseError", failMessage);
505
- reject(err);
506
- },
507
- this
508
- );
487
+ var parseErrorListener = req.addListener("parseError", e => {
488
+ listeners.forEach(req.removeListenerById.bind(req));
489
+ var failMessage = "Error parsing the response.";
490
+ var err = new qx.type.BaseError("parseError", failMessage);
491
+ reject(err);
492
+ });
509
493
 
510
494
  listeners.push(parseErrorListener);
511
495
 
512
- var abortListener = req.addListener(
513
- "abort",
514
- function (e) {
515
- listeners.forEach(req.removeListenerById.bind(req));
516
- var failMessage = "Request aborted.";
517
- var err = new qx.type.BaseError("abort", failMessage);
518
- reject(err);
519
- },
520
- this
521
- );
496
+ var abortListener = req.addListener("abort", e => {
497
+ listeners.forEach(req.removeListenerById.bind(req));
498
+ var failMessage = "Request aborted.";
499
+ var err = new qx.type.BaseError("abort", failMessage);
500
+ reject(err);
501
+ });
522
502
 
523
503
  listeners.push(abortListener);
524
504
 
525
- var errorListener = req.addListener(
526
- "error",
527
- function (e) {
528
- listeners.forEach(req.removeListenerById.bind(req));
529
- var failMessage = "Request failed.";
530
- var err = new qx.type.BaseError("error", failMessage);
531
- reject(err);
532
- },
533
- this
534
- );
505
+ var errorListener = req.addListener("error", e => {
506
+ listeners.forEach(req.removeListenerById.bind(req));
507
+ var failMessage = "Request failed.";
508
+ var err = new qx.type.BaseError("error", failMessage);
509
+ reject(err);
510
+ });
535
511
 
536
512
  listeners.push(errorListener);
537
513
 
@@ -28,7 +28,9 @@ qx.Class.define("qx.test.Interface", {
28
28
  members: {
29
29
  startEngine() {
30
30
  return true;
31
- }
31
+ },
32
+
33
+ engineStarted : null
32
34
  },
33
35
 
34
36
  properties: { color: {} }
@@ -49,7 +51,9 @@ qx.Class.define("qx.test.Interface", {
49
51
  members: {
50
52
  startEngine() {
51
53
  return "start";
52
- }
54
+ },
55
+
56
+ engineStarted : true
53
57
  },
54
58
 
55
59
  statics: {
@@ -78,7 +82,9 @@ qx.Class.define("qx.test.Interface", {
78
82
  members: {
79
83
  startEngine() {
80
84
  return "start";
81
- }
85
+ },
86
+
87
+ engineStarted : true
82
88
  },
83
89
 
84
90
  statics: {
@@ -117,6 +123,54 @@ qx.Class.define("qx.test.Interface", {
117
123
  qx.Class.undefine("qx.test.i.Bmw2");
118
124
  },
119
125
 
126
+ testMissingMemberFunction() {
127
+ qx.Class.define("qx.test.i.Bmw2", {
128
+ extend: Object,
129
+ construct() {},
130
+ members : {
131
+ engineStarted : false
132
+ },
133
+ statics: {
134
+ honk() {
135
+ return "honk";
136
+ }
137
+ },
138
+
139
+ properties: { color: {} }
140
+ });
141
+
142
+ this.assertFalse(
143
+ qx.Interface.classImplements(qx.test.i.Bmw2, qx.test.i.ICar)
144
+ );
145
+
146
+ qx.Class.undefine("qx.test.i.Bmw2");
147
+ },
148
+
149
+ testMissingMemberVariable() {
150
+ qx.Class.define("qx.test.i.Bmw2", {
151
+ extend: Object,
152
+ construct() {},
153
+ members : {
154
+ startEngine() {
155
+ return "start";
156
+ }
157
+ },
158
+ statics: {
159
+ honk() {
160
+ return "honk";
161
+ }
162
+ },
163
+
164
+ properties: { color: {} }
165
+ });
166
+
167
+ this.assertFalse(
168
+ qx.Interface.classImplements(qx.test.i.Bmw2, qx.test.i.ICar)
169
+ );
170
+
171
+ qx.Class.undefine("qx.test.i.Bmw2");
172
+ },
173
+
120
174
  testMissingStatics() {
121
175
  // (ie it does implement all necessary)
122
176
  qx.Class.define("qx.test.i.Bmw3", {
@@ -125,7 +179,9 @@ qx.Class.define("qx.test.Interface", {
125
179
  members: {
126
180
  startEngine() {
127
181
  return "start";
128
- }
182
+ },
183
+
184
+ engineStarted : null
129
185
  },
130
186
 
131
187
  properties: { color: {} }
@@ -145,7 +201,9 @@ qx.Class.define("qx.test.Interface", {
145
201
  members: {
146
202
  startEngine() {
147
203
  return "start";
148
- }
204
+ },
205
+
206
+ engineStarted : false
149
207
  },
150
208
 
151
209
  statics: {
@@ -189,6 +247,10 @@ qx.Class.define("qx.test.Interface", {
189
247
  construct() {},
190
248
  implement: [qx.test.i.ICar],
191
249
 
250
+ members: {
251
+ engineStarted : false
252
+ },
253
+
192
254
  statics: {
193
255
  honk() {
194
256
  return "honk";
@@ -213,7 +275,9 @@ qx.Class.define("qx.test.Interface", {
213
275
  members: {
214
276
  startEngine() {
215
277
  return "start";
216
- }
278
+ },
279
+
280
+ engineStarted : false
217
281
  },
218
282
 
219
283
  statics: {
@@ -405,7 +405,6 @@ qx.Class.define("qx.test.Mixin", {
405
405
  },
406
406
 
407
407
  testPatchDouble() {
408
-
409
408
  qx.Class.define("qx.Patch_1", {
410
409
  extend: qx.core.Object,
411
410
 
@@ -426,14 +425,14 @@ qx.Class.define("qx.test.Mixin", {
426
425
  }
427
426
  });
428
427
 
429
-
430
428
  qx.Mixin.define("qx.MPatch", {
431
429
  members: {
432
430
  sayJuhu() {
433
431
  return super.sayJuhu() + " Mixin";
434
- },
432
+ }
435
433
  }
436
434
  });
435
+
437
436
  qx.Class.patch(qx.Patch_1, qx.MPatch);
438
437
  qx.Class.patch(qx.Patch_2, qx.MPatch);
439
438
 
@@ -444,7 +443,6 @@ qx.Class.define("qx.test.Mixin", {
444
443
  var o = new qx.Patch_2();
445
444
  this.assertEquals("Juhu 2 Mixin", o.sayJuhu());
446
445
  o.dispose();
447
-
448
446
  },
449
447
 
450
448
  testPatchOverwrittenDerived() {
@@ -470,9 +468,10 @@ qx.Class.define("qx.test.Mixin", {
470
468
  members: {
471
469
  sayJuhu() {
472
470
  return super.sayJuhu() + " Mixin";
473
- },
471
+ }
474
472
  }
475
473
  });
474
+
476
475
  qx.Class.patch(qx.PatchDerived, qx.MPatch);
477
476
 
478
477
  var o = new qx.PatchDerived();
@@ -481,12 +480,11 @@ qx.Class.define("qx.test.Mixin", {
481
480
  },
482
481
 
483
482
  testPatchOverwrittenDerivedInBaseClass() {
484
-
485
483
  qx.Mixin.define("qx.MPatch", {
486
484
  members: {
487
485
  sayJuhu() {
488
486
  return super.sayJuhu() + " Mixin";
489
- },
487
+ }
490
488
  }
491
489
  });
492
490
 
@@ -517,7 +515,6 @@ qx.Class.define("qx.test.Mixin", {
517
515
  var o = new qx.PatchDerived();
518
516
  this.assertEquals("Juhu Mixin Derived", o.sayJuhu());
519
517
  o.dispose();
520
-
521
518
  },
522
519
 
523
520
  testPatchMultiOverwrittenDerived() {
@@ -529,6 +526,7 @@ qx.Class.define("qx.test.Mixin", {
529
526
  }
530
527
  }
531
528
  });
529
+
532
530
  qx.Class.define("qx.B", {
533
531
  extend: qx.A,
534
532
  members: {
@@ -537,6 +535,7 @@ qx.Class.define("qx.test.Mixin", {
537
535
  }
538
536
  }
539
537
  });
538
+
540
539
  qx.Class.define("qx.C", {
541
540
  extend: qx.B,
542
541
  members: {
@@ -545,27 +544,31 @@ qx.Class.define("qx.test.Mixin", {
545
544
  }
546
545
  }
547
546
  });
547
+
548
548
  qx.Mixin.define("qx.MA", {
549
549
  members: {
550
550
  sayJuhu() {
551
551
  return super.sayJuhu() + " MA";
552
- },
552
+ }
553
553
  }
554
554
  });
555
+
555
556
  qx.Mixin.define("qx.MB", {
556
557
  members: {
557
558
  sayJuhu() {
558
559
  return super.sayJuhu() + " MB";
559
- },
560
+ }
560
561
  }
561
562
  });
563
+
562
564
  qx.Mixin.define("qx.MC", {
563
565
  members: {
564
566
  sayJuhu() {
565
567
  return super.sayJuhu() + " MC";
566
- },
568
+ }
567
569
  }
568
570
  });
571
+
569
572
  qx.Class.patch(qx.A, qx.MA);
570
573
  qx.Class.patch(qx.B, qx.MB);
571
574
  qx.Class.patch(qx.C, qx.MC);
@@ -573,7 +576,6 @@ qx.Class.define("qx.test.Mixin", {
573
576
  var o = new qx.C();
574
577
  this.assertEquals("A MA B MB C MC", o.sayJuhu());
575
578
  o.dispose();
576
-
577
579
  },
578
580
 
579
581
  testDoubleMixin() {
@@ -585,28 +587,29 @@ qx.Class.define("qx.test.Mixin", {
585
587
  }
586
588
  }
587
589
  });
590
+
588
591
  qx.Mixin.define("qx.MDA", {
589
592
  members: {
590
593
  sayJuhu() {
591
594
  return super.sayJuhu() + " MA";
592
- },
595
+ }
593
596
  }
594
597
  });
598
+
595
599
  qx.Mixin.define("qx.MDB", {
596
600
  members: {
597
601
  sayJuhu() {
598
602
  return super.sayJuhu() + " MB";
599
- },
603
+ }
600
604
  }
601
605
  });
606
+
602
607
  qx.Class.patch(qx.D, qx.MDA);
603
608
  qx.Class.patch(qx.D, qx.MDB);
604
609
 
605
610
  var o = new qx.D();
606
611
  this.assertEquals("Double MA MB", o.sayJuhu());
607
612
  o.dispose();
608
-
609
613
  }
610
-
611
- }
614
+ }
612
615
  });