Platform-Browser.js 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. define(["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
  2. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  3. var $pkg = $core.addPackage("Platform-Browser");
  4. $pkg.innerEval = function (expr) { return eval(expr); };
  5. $pkg.imports = ["amber/core/Platform-Services"];
  6. //>>excludeStart("imports", pragmas.excludeImports);
  7. $pkg.isReady = new Promise(function (resolve, reject) { requirejs(["amber/core/Platform-Services"], function () {resolve();}, reject); });
  8. //>>excludeEnd("imports");
  9. $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
  10. $core.addClass("BrowserPlatform", $globals.Object, [], "Platform-Browser");
  11. //>>excludeStart("ide", pragmas.excludeIdeData);
  12. $globals.BrowserPlatform.comment="I am `Platform` service implementation for browser.";
  13. //>>excludeEnd("ide");
  14. $core.addMethod(
  15. $core.method({
  16. selector: "globals",
  17. protocol: "accessing",
  18. fn: function (){
  19. var self=this,$self=this;
  20. return window;
  21. },
  22. //>>excludeStart("ide", pragmas.excludeIdeData);
  23. args: [],
  24. source: "globals\x0a\x09^ window",
  25. referencedClasses: [],
  26. //>>excludeEnd("ide");
  27. pragmas: [],
  28. messageSends: []
  29. }),
  30. $globals.BrowserPlatform);
  31. $core.addMethod(
  32. $core.method({
  33. selector: "newXhr",
  34. protocol: "accessing",
  35. fn: function (){
  36. var self=this,$self=this;
  37. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38. return $core.withContext(function($ctx1) {
  39. //>>excludeEnd("ctx");
  40. var $receiver;
  41. if(($receiver = $globals.XMLHttpRequest) == null || $receiver.a$nil){
  42. $self._error_("XMLHttpRequest not available.");
  43. } else {
  44. return $recv($globals.NativeFunction)._constructorOf_($globals.XMLHttpRequest);
  45. }
  46. return self;
  47. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48. }, function($ctx1) {$ctx1.fill(self,"newXhr",{})});
  49. //>>excludeEnd("ctx");
  50. },
  51. //>>excludeStart("ide", pragmas.excludeIdeData);
  52. args: [],
  53. source: "newXhr\x0a\x09XMLHttpRequest\x0a\x09\x09ifNotNil: [ ^ NativeFunction constructorOf: XMLHttpRequest ]\x0a\x09\x09ifNil: [ self error: 'XMLHttpRequest not available.' ]",
  54. referencedClasses: ["XMLHttpRequest", "NativeFunction"],
  55. //>>excludeEnd("ide");
  56. pragmas: [],
  57. messageSends: ["ifNotNil:ifNil:", "constructorOf:", "error:"]
  58. }),
  59. $globals.BrowserPlatform);
  60. $core.addMethod(
  61. $core.method({
  62. selector: "initialize",
  63. protocol: "testing",
  64. fn: function (){
  65. var self=this,$self=this;
  66. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67. return $core.withContext(function($ctx1) {
  68. //>>excludeEnd("ctx");
  69. var $1;
  70. $1=$self._isFeasible();
  71. if($core.assert($1)){
  72. $recv($globals.Platform)._registerIfNone_($self._new());
  73. }
  74. return self;
  75. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  77. //>>excludeEnd("ctx");
  78. },
  79. //>>excludeStart("ide", pragmas.excludeIdeData);
  80. args: [],
  81. source: "initialize\x0a\x09self isFeasible ifTrue: [ Platform registerIfNone: self new ]",
  82. referencedClasses: ["Platform"],
  83. //>>excludeEnd("ide");
  84. pragmas: [],
  85. messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
  86. }),
  87. $globals.BrowserPlatform.a$cls);
  88. $core.addMethod(
  89. $core.method({
  90. selector: "isFeasible",
  91. protocol: "testing",
  92. fn: function (){
  93. var self=this,$self=this;
  94. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  95. return $core.withContext(function($ctx1) {
  96. //>>excludeEnd("ctx");
  97. return typeof window !== "undefined";
  98. return self;
  99. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  100. }, function($ctx1) {$ctx1.fill(self,"isFeasible",{})});
  101. //>>excludeEnd("ctx");
  102. },
  103. //>>excludeStart("ide", pragmas.excludeIdeData);
  104. args: [],
  105. source: "isFeasible\x0a<inlineJS: 'return typeof window !== \x22undefined\x22'>",
  106. referencedClasses: [],
  107. //>>excludeEnd("ide");
  108. pragmas: [["inlineJS:", ["return typeof window !== \x22undefined\x22"]]],
  109. messageSends: []
  110. }),
  111. $globals.BrowserPlatform.a$cls);
  112. $core.addClass("BrowserTerminal", $globals.Object, [], "Platform-Browser");
  113. //>>excludeStart("ide", pragmas.excludeIdeData);
  114. $globals.BrowserTerminal.comment="I am `Terminal` service implementation for browser.";
  115. //>>excludeEnd("ide");
  116. $core.addMethod(
  117. $core.method({
  118. selector: "alert:",
  119. protocol: "actions",
  120. fn: function (aString){
  121. var self=this,$self=this;
  122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  123. return $core.withContext(function($ctx1) {
  124. //>>excludeEnd("ctx");
  125. return $recv(window)._alert_(aString);
  126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  127. }, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString})});
  128. //>>excludeEnd("ctx");
  129. },
  130. //>>excludeStart("ide", pragmas.excludeIdeData);
  131. args: ["aString"],
  132. source: "alert: aString\x0a\x09^ window alert: aString",
  133. referencedClasses: [],
  134. //>>excludeEnd("ide");
  135. pragmas: [],
  136. messageSends: ["alert:"]
  137. }),
  138. $globals.BrowserTerminal);
  139. $core.addMethod(
  140. $core.method({
  141. selector: "confirm:",
  142. protocol: "actions",
  143. fn: function (aString){
  144. var self=this,$self=this;
  145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  146. return $core.withContext(function($ctx1) {
  147. //>>excludeEnd("ctx");
  148. return $recv(window)._confirm_(aString);
  149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  150. }, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString})});
  151. //>>excludeEnd("ctx");
  152. },
  153. //>>excludeStart("ide", pragmas.excludeIdeData);
  154. args: ["aString"],
  155. source: "confirm: aString\x0a\x09^ window confirm: aString",
  156. referencedClasses: [],
  157. //>>excludeEnd("ide");
  158. pragmas: [],
  159. messageSends: ["confirm:"]
  160. }),
  161. $globals.BrowserTerminal);
  162. $core.addMethod(
  163. $core.method({
  164. selector: "prompt:",
  165. protocol: "actions",
  166. fn: function (aString){
  167. var self=this,$self=this;
  168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  169. return $core.withContext(function($ctx1) {
  170. //>>excludeEnd("ctx");
  171. return $recv(window)._prompt_(aString);
  172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  173. }, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString})});
  174. //>>excludeEnd("ctx");
  175. },
  176. //>>excludeStart("ide", pragmas.excludeIdeData);
  177. args: ["aString"],
  178. source: "prompt: aString\x0a\x09^ window prompt: aString",
  179. referencedClasses: [],
  180. //>>excludeEnd("ide");
  181. pragmas: [],
  182. messageSends: ["prompt:"]
  183. }),
  184. $globals.BrowserTerminal);
  185. $core.addMethod(
  186. $core.method({
  187. selector: "prompt:default:",
  188. protocol: "actions",
  189. fn: function (aString,defaultString){
  190. var self=this,$self=this;
  191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  192. return $core.withContext(function($ctx1) {
  193. //>>excludeEnd("ctx");
  194. return $recv(window)._prompt_default_(aString,defaultString);
  195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  196. }, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString})});
  197. //>>excludeEnd("ctx");
  198. },
  199. //>>excludeStart("ide", pragmas.excludeIdeData);
  200. args: ["aString", "defaultString"],
  201. source: "prompt: aString default: defaultString\x0a\x09^ window prompt: aString default: defaultString",
  202. referencedClasses: [],
  203. //>>excludeEnd("ide");
  204. pragmas: [],
  205. messageSends: ["prompt:default:"]
  206. }),
  207. $globals.BrowserTerminal);
  208. $core.addMethod(
  209. $core.method({
  210. selector: "initialize",
  211. protocol: "testing",
  212. fn: function (){
  213. var self=this,$self=this;
  214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  215. return $core.withContext(function($ctx1) {
  216. //>>excludeEnd("ctx");
  217. var $1;
  218. $1=$self._isFeasible();
  219. if($core.assert($1)){
  220. $recv($globals.Terminal)._registerIfNone_($self._new());
  221. }
  222. return self;
  223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  224. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  225. //>>excludeEnd("ctx");
  226. },
  227. //>>excludeStart("ide", pragmas.excludeIdeData);
  228. args: [],
  229. source: "initialize\x0a\x09self isFeasible ifTrue: [ Terminal registerIfNone: self new ]",
  230. referencedClasses: ["Terminal"],
  231. //>>excludeEnd("ide");
  232. pragmas: [],
  233. messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
  234. }),
  235. $globals.BrowserTerminal.a$cls);
  236. $core.addMethod(
  237. $core.method({
  238. selector: "isFeasible",
  239. protocol: "testing",
  240. fn: function (){
  241. var self=this,$self=this;
  242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  243. return $core.withContext(function($ctx1) {
  244. //>>excludeEnd("ctx");
  245. return typeof window !== "undefined";
  246. return self;
  247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  248. }, function($ctx1) {$ctx1.fill(self,"isFeasible",{})});
  249. //>>excludeEnd("ctx");
  250. },
  251. //>>excludeStart("ide", pragmas.excludeIdeData);
  252. args: [],
  253. source: "isFeasible\x0a<inlineJS: 'return typeof window !== \x22undefined\x22'>",
  254. referencedClasses: [],
  255. //>>excludeEnd("ide");
  256. pragmas: [["inlineJS:", ["return typeof window !== \x22undefined\x22"]]],
  257. messageSends: []
  258. }),
  259. $globals.BrowserTerminal.a$cls);
  260. $core.addMethod(
  261. $core.method({
  262. selector: "postMessageTo:",
  263. protocol: "*Platform-Browser",
  264. fn: function (aFrame){
  265. var self=this,$self=this;
  266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  267. return $core.withContext(function($ctx1) {
  268. //>>excludeEnd("ctx");
  269. return $self._postMessageTo_origin_(aFrame,"*");
  270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  271. }, function($ctx1) {$ctx1.fill(self,"postMessageTo:",{aFrame:aFrame})});
  272. //>>excludeEnd("ctx");
  273. },
  274. //>>excludeStart("ide", pragmas.excludeIdeData);
  275. args: ["aFrame"],
  276. source: "postMessageTo: aFrame\x0a^ self postMessageTo: aFrame origin: '*'",
  277. referencedClasses: [],
  278. //>>excludeEnd("ide");
  279. pragmas: [],
  280. messageSends: ["postMessageTo:origin:"]
  281. }),
  282. $globals.Object);
  283. $core.addMethod(
  284. $core.method({
  285. selector: "postMessageTo:origin:",
  286. protocol: "*Platform-Browser",
  287. fn: function (aFrame,aString){
  288. var self=this,$self=this;
  289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  290. return $core.withContext(function($ctx1) {
  291. //>>excludeEnd("ctx");
  292. return aFrame.postMessage(self, aString);
  293. return self;
  294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  295. }, function($ctx1) {$ctx1.fill(self,"postMessageTo:origin:",{aFrame:aFrame,aString:aString})});
  296. //>>excludeEnd("ctx");
  297. },
  298. //>>excludeStart("ide", pragmas.excludeIdeData);
  299. args: ["aFrame", "aString"],
  300. source: "postMessageTo: aFrame origin: aString\x0a<inlineJS: 'return aFrame.postMessage(self, aString)'>",
  301. referencedClasses: [],
  302. //>>excludeEnd("ide");
  303. pragmas: [["inlineJS:", ["return aFrame.postMessage(self, aString)"]]],
  304. messageSends: []
  305. }),
  306. $globals.Object);
  307. });