Platform-Browser.js 9.8 KB

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