Platform-Browser.js 13 KB

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