Platform-Browser.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  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: "fetch:",
  17. protocol: "public API",
  18. fn: function (aStringOrObject){
  19. var self=this,$self=this;
  20. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21. return $core.withContext(function($ctx1) {
  22. //>>excludeEnd("ctx");
  23. var $early={};
  24. try {
  25. $recv($self._globals())._at_ifPresent_ifAbsent_("fetch",(function(fetch){
  26. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27. return $core.withContext(function($ctx2) {
  28. //>>excludeEnd("ctx");
  29. throw $early=[$recv(fetch)._value_(aStringOrObject)];
  30. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31. }, function($ctx2) {$ctx2.fillBlock({fetch:fetch},$ctx1,1)});
  32. //>>excludeEnd("ctx");
  33. }),(function(){
  34. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35. return $core.withContext(function($ctx2) {
  36. //>>excludeEnd("ctx");
  37. return $self._error_("fetch not available.");
  38. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  40. //>>excludeEnd("ctx");
  41. }));
  42. return self;
  43. }
  44. catch(e) {if(e===$early)return e[0]; throw e}
  45. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46. }, function($ctx1) {$ctx1.fill(self,"fetch:",{aStringOrObject:aStringOrObject})});
  47. //>>excludeEnd("ctx");
  48. },
  49. //>>excludeStart("ide", pragmas.excludeIdeData);
  50. args: ["aStringOrObject"],
  51. source: "fetch: aStringOrObject\x0a\x09self globals at: #fetch\x0a\x09\x09ifPresent: [ :fetch | ^ fetch value: aStringOrObject ]\x0a\x09\x09ifAbsent: [ self error: 'fetch not available.' ]",
  52. referencedClasses: [],
  53. //>>excludeEnd("ide");
  54. pragmas: [],
  55. messageSends: ["at:ifPresent:ifAbsent:", "globals", "value:", "error:"]
  56. }),
  57. $globals.BrowserPlatform);
  58. $core.addMethod(
  59. $core.method({
  60. selector: "fetchUrl:options:",
  61. protocol: "public API",
  62. fn: function (aString,anObject){
  63. var self=this,$self=this;
  64. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65. return $core.withContext(function($ctx1) {
  66. //>>excludeEnd("ctx");
  67. var $early={};
  68. try {
  69. $recv($self._globals())._at_ifPresent_ifAbsent_("fetch",(function(fetch){
  70. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71. return $core.withContext(function($ctx2) {
  72. //>>excludeEnd("ctx");
  73. throw $early=[$recv(fetch)._value_value_(aString,anObject)];
  74. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75. }, function($ctx2) {$ctx2.fillBlock({fetch:fetch},$ctx1,1)});
  76. //>>excludeEnd("ctx");
  77. }),(function(){
  78. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79. return $core.withContext(function($ctx2) {
  80. //>>excludeEnd("ctx");
  81. return $self._error_("fetch not available.");
  82. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  84. //>>excludeEnd("ctx");
  85. }));
  86. return self;
  87. }
  88. catch(e) {if(e===$early)return e[0]; throw e}
  89. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90. }, function($ctx1) {$ctx1.fill(self,"fetchUrl:options:",{aString:aString,anObject:anObject})});
  91. //>>excludeEnd("ctx");
  92. },
  93. //>>excludeStart("ide", pragmas.excludeIdeData);
  94. args: ["aString", "anObject"],
  95. source: "fetchUrl: aString options: anObject\x0a\x09self globals at: #fetch\x0a\x09\x09ifPresent: [ :fetch | ^ fetch value: aString value: anObject ]\x0a\x09\x09ifAbsent: [ self error: 'fetch not available.' ]",
  96. referencedClasses: [],
  97. //>>excludeEnd("ide");
  98. pragmas: [],
  99. messageSends: ["at:ifPresent:ifAbsent:", "globals", "value:value:", "error:"]
  100. }),
  101. $globals.BrowserPlatform);
  102. $core.addMethod(
  103. $core.method({
  104. selector: "globals",
  105. protocol: "accessing",
  106. fn: function (){
  107. var self=this,$self=this;
  108. return window;
  109. },
  110. //>>excludeStart("ide", pragmas.excludeIdeData);
  111. args: [],
  112. source: "globals\x0a\x09^ window",
  113. referencedClasses: [],
  114. //>>excludeEnd("ide");
  115. pragmas: [],
  116. messageSends: []
  117. }),
  118. $globals.BrowserPlatform);
  119. $core.addMethod(
  120. $core.method({
  121. selector: "newXhr",
  122. protocol: "public API",
  123. fn: function (){
  124. var self=this,$self=this;
  125. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  126. return $core.withContext(function($ctx1) {
  127. //>>excludeEnd("ctx");
  128. var $receiver;
  129. if(($receiver = $globals.XMLHttpRequest) == null || $receiver.a$nil){
  130. $self._error_("XMLHttpRequest not available.");
  131. } else {
  132. return $recv($globals.NativeFunction)._constructorOf_($globals.XMLHttpRequest);
  133. }
  134. return self;
  135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  136. }, function($ctx1) {$ctx1.fill(self,"newXhr",{})});
  137. //>>excludeEnd("ctx");
  138. },
  139. //>>excludeStart("ide", pragmas.excludeIdeData);
  140. args: [],
  141. source: "newXhr\x0a\x09XMLHttpRequest\x0a\x09\x09ifNotNil: [ ^ NativeFunction constructorOf: XMLHttpRequest ]\x0a\x09\x09ifNil: [ self error: 'XMLHttpRequest not available.' ]",
  142. referencedClasses: ["XMLHttpRequest", "NativeFunction"],
  143. //>>excludeEnd("ide");
  144. pragmas: [],
  145. messageSends: ["ifNotNil:ifNil:", "constructorOf:", "error:"]
  146. }),
  147. $globals.BrowserPlatform);
  148. $core.addMethod(
  149. $core.method({
  150. selector: "initialize",
  151. protocol: "testing",
  152. fn: function (){
  153. var self=this,$self=this;
  154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  155. return $core.withContext(function($ctx1) {
  156. //>>excludeEnd("ctx");
  157. var $1;
  158. $1=$self._isFeasible();
  159. if($core.assert($1)){
  160. $recv($globals.Platform)._registerIfNone_($self._new());
  161. }
  162. return self;
  163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  164. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  165. //>>excludeEnd("ctx");
  166. },
  167. //>>excludeStart("ide", pragmas.excludeIdeData);
  168. args: [],
  169. source: "initialize\x0a\x09self isFeasible ifTrue: [ Platform registerIfNone: self new ]",
  170. referencedClasses: ["Platform"],
  171. //>>excludeEnd("ide");
  172. pragmas: [],
  173. messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
  174. }),
  175. $globals.BrowserPlatform.a$cls);
  176. $core.addMethod(
  177. $core.method({
  178. selector: "isFeasible",
  179. protocol: "testing",
  180. fn: function (){
  181. var self=this,$self=this;
  182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  183. return $core.withContext(function($ctx1) {
  184. //>>excludeEnd("ctx");
  185. return typeof window !== "undefined";
  186. return self;
  187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  188. }, function($ctx1) {$ctx1.fill(self,"isFeasible",{})});
  189. //>>excludeEnd("ctx");
  190. },
  191. //>>excludeStart("ide", pragmas.excludeIdeData);
  192. args: [],
  193. source: "isFeasible\x0a<inlineJS: 'return typeof window !== \x22undefined\x22'>",
  194. referencedClasses: [],
  195. //>>excludeEnd("ide");
  196. pragmas: [["inlineJS:", ["return typeof window !== \x22undefined\x22"]]],
  197. messageSends: []
  198. }),
  199. $globals.BrowserPlatform.a$cls);
  200. $core.addClass("BrowserTerminal", $globals.Object, [], "Platform-Browser");
  201. //>>excludeStart("ide", pragmas.excludeIdeData);
  202. $globals.BrowserTerminal.comment="I am `Terminal` service implementation for browser.";
  203. //>>excludeEnd("ide");
  204. $core.addMethod(
  205. $core.method({
  206. selector: "alert:",
  207. protocol: "actions",
  208. fn: function (aString){
  209. var self=this,$self=this;
  210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  211. return $core.withContext(function($ctx1) {
  212. //>>excludeEnd("ctx");
  213. return $recv(window)._alert_(aString);
  214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  215. }, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString})});
  216. //>>excludeEnd("ctx");
  217. },
  218. //>>excludeStart("ide", pragmas.excludeIdeData);
  219. args: ["aString"],
  220. source: "alert: aString\x0a\x09^ window alert: aString",
  221. referencedClasses: [],
  222. //>>excludeEnd("ide");
  223. pragmas: [],
  224. messageSends: ["alert:"]
  225. }),
  226. $globals.BrowserTerminal);
  227. $core.addMethod(
  228. $core.method({
  229. selector: "confirm:",
  230. protocol: "actions",
  231. fn: function (aString){
  232. var self=this,$self=this;
  233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  234. return $core.withContext(function($ctx1) {
  235. //>>excludeEnd("ctx");
  236. return $recv(window)._confirm_(aString);
  237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  238. }, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString})});
  239. //>>excludeEnd("ctx");
  240. },
  241. //>>excludeStart("ide", pragmas.excludeIdeData);
  242. args: ["aString"],
  243. source: "confirm: aString\x0a\x09^ window confirm: aString",
  244. referencedClasses: [],
  245. //>>excludeEnd("ide");
  246. pragmas: [],
  247. messageSends: ["confirm:"]
  248. }),
  249. $globals.BrowserTerminal);
  250. $core.addMethod(
  251. $core.method({
  252. selector: "prompt:",
  253. protocol: "actions",
  254. fn: function (aString){
  255. var self=this,$self=this;
  256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  257. return $core.withContext(function($ctx1) {
  258. //>>excludeEnd("ctx");
  259. return $recv(window)._prompt_(aString);
  260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  261. }, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString})});
  262. //>>excludeEnd("ctx");
  263. },
  264. //>>excludeStart("ide", pragmas.excludeIdeData);
  265. args: ["aString"],
  266. source: "prompt: aString\x0a\x09^ window prompt: aString",
  267. referencedClasses: [],
  268. //>>excludeEnd("ide");
  269. pragmas: [],
  270. messageSends: ["prompt:"]
  271. }),
  272. $globals.BrowserTerminal);
  273. $core.addMethod(
  274. $core.method({
  275. selector: "prompt:default:",
  276. protocol: "actions",
  277. fn: function (aString,defaultString){
  278. var self=this,$self=this;
  279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  280. return $core.withContext(function($ctx1) {
  281. //>>excludeEnd("ctx");
  282. return $recv(window)._prompt_default_(aString,defaultString);
  283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  284. }, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString})});
  285. //>>excludeEnd("ctx");
  286. },
  287. //>>excludeStart("ide", pragmas.excludeIdeData);
  288. args: ["aString", "defaultString"],
  289. source: "prompt: aString default: defaultString\x0a\x09^ window prompt: aString default: defaultString",
  290. referencedClasses: [],
  291. //>>excludeEnd("ide");
  292. pragmas: [],
  293. messageSends: ["prompt:default:"]
  294. }),
  295. $globals.BrowserTerminal);
  296. $core.addMethod(
  297. $core.method({
  298. selector: "initialize",
  299. protocol: "testing",
  300. fn: function (){
  301. var self=this,$self=this;
  302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  303. return $core.withContext(function($ctx1) {
  304. //>>excludeEnd("ctx");
  305. var $1;
  306. $1=$self._isFeasible();
  307. if($core.assert($1)){
  308. $recv($globals.Terminal)._registerIfNone_($self._new());
  309. }
  310. return self;
  311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  312. }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
  313. //>>excludeEnd("ctx");
  314. },
  315. //>>excludeStart("ide", pragmas.excludeIdeData);
  316. args: [],
  317. source: "initialize\x0a\x09self isFeasible ifTrue: [ Terminal registerIfNone: self new ]",
  318. referencedClasses: ["Terminal"],
  319. //>>excludeEnd("ide");
  320. pragmas: [],
  321. messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
  322. }),
  323. $globals.BrowserTerminal.a$cls);
  324. $core.addMethod(
  325. $core.method({
  326. selector: "isFeasible",
  327. protocol: "testing",
  328. fn: function (){
  329. var self=this,$self=this;
  330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  331. return $core.withContext(function($ctx1) {
  332. //>>excludeEnd("ctx");
  333. return typeof window !== "undefined";
  334. return self;
  335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  336. }, function($ctx1) {$ctx1.fill(self,"isFeasible",{})});
  337. //>>excludeEnd("ctx");
  338. },
  339. //>>excludeStart("ide", pragmas.excludeIdeData);
  340. args: [],
  341. source: "isFeasible\x0a<inlineJS: 'return typeof window !== \x22undefined\x22'>",
  342. referencedClasses: [],
  343. //>>excludeEnd("ide");
  344. pragmas: [["inlineJS:", ["return typeof window !== \x22undefined\x22"]]],
  345. messageSends: []
  346. }),
  347. $globals.BrowserTerminal.a$cls);
  348. $core.addMethod(
  349. $core.method({
  350. selector: "postMessageTo:",
  351. protocol: "*Platform-Browser",
  352. fn: function (aFrame){
  353. var self=this,$self=this;
  354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  355. return $core.withContext(function($ctx1) {
  356. //>>excludeEnd("ctx");
  357. return $self._postMessageTo_origin_(aFrame,"*");
  358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  359. }, function($ctx1) {$ctx1.fill(self,"postMessageTo:",{aFrame:aFrame})});
  360. //>>excludeEnd("ctx");
  361. },
  362. //>>excludeStart("ide", pragmas.excludeIdeData);
  363. args: ["aFrame"],
  364. source: "postMessageTo: aFrame\x0a^ self postMessageTo: aFrame origin: '*'",
  365. referencedClasses: [],
  366. //>>excludeEnd("ide");
  367. pragmas: [],
  368. messageSends: ["postMessageTo:origin:"]
  369. }),
  370. $globals.Object);
  371. $core.addMethod(
  372. $core.method({
  373. selector: "postMessageTo:origin:",
  374. protocol: "*Platform-Browser",
  375. fn: function (aFrame,aString){
  376. var self=this,$self=this;
  377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  378. return $core.withContext(function($ctx1) {
  379. //>>excludeEnd("ctx");
  380. return aFrame.postMessage(self, aString);
  381. return self;
  382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  383. }, function($ctx1) {$ctx1.fill(self,"postMessageTo:origin:",{aFrame:aFrame,aString:aString})});
  384. //>>excludeEnd("ctx");
  385. },
  386. //>>excludeStart("ide", pragmas.excludeIdeData);
  387. args: ["aFrame", "aString"],
  388. source: "postMessageTo: aFrame origin: aString\x0a<inlineJS: 'return aFrame.postMessage(self, aString)'>",
  389. referencedClasses: [],
  390. //>>excludeEnd("ide");
  391. pragmas: [["inlineJS:", ["return aFrame.postMessage(self, aString)"]]],
  392. messageSends: []
  393. }),
  394. $globals.Object);
  395. });