Commit graph

414 commits

Author SHA1 Message Date
Cheng Zhao
bcf6cd9f1b Drop support for cross-process callbacks.
Now it's forbidden for browser to store reference to objects (including
functions) in renderer, because when the renderer is destroyed, it's
extremely hard to clean all of corresponding objects in browser
correctly, which would cause very bad resources leak.
2013-04-30 22:37:54 +08:00
Cheng Zhao
74c519ac3f Enable getting window from routing id and process id. 2013-04-30 20:32:23 +08:00
Cheng Zhao
a06c9b806b Add API to get any global variable from browser. 2013-04-30 16:27:14 +08:00
Cheng Zhao
6c21121001 Avoid using destoryed native objects in js API. 2013-04-29 19:38:18 +08:00
Cheng Zhao
af57d3be08 Uniform message names.
Messages sent to browser should be prefixed with ATOM_BROWSER_, and
messages sent to renderer should be prefixed with ATOM_RENDERER_.
2013-04-29 18:59:34 +08:00
Cheng Zhao
f1e15b49a9 Support passing callbacks from renderer to browser. 2013-04-29 18:24:37 +08:00
Cheng Zhao
948e50285d Use camelCase not under_score, I forgot it's coffee script. 2013-04-27 19:13:24 +08:00
Cheng Zhao
99f6a5678a Add remote.getCurrentWindow() API in renderer. 2013-04-27 19:06:41 +08:00
Cheng Zhao
b35946381b Make the RPC stuff code more understandable. 2013-04-26 23:58:49 +08:00
Cheng Zhao
da3d4c8408 Allow renderer to get object in browser for arbitrary times.
Now, when creating a remote object in renderer, the browser will
reference the corresponding object by storing it in a strong map. And
when the remote object in renderer is GCed, the corresponding object
will be dereferenced in browser.
2013-04-26 23:26:41 +08:00
Cheng Zhao
536b523232 Keep an id for each object added to global weak map. 2013-04-26 22:33:31 +08:00
Cheng Zhao
cc921fed1e Add remote.getObject API to get object in browser by it's ID. 2013-04-26 22:25:30 +08:00
Cheng Zhao
dded164052 Separate stored objects by the render view.
When a render view is closed, it's not guarrenteed that all objects'
weak callback would be called. So we must clean up all objects manually
after the render view gets closed.
2013-04-26 21:14:29 +08:00
Cheng Zhao
bcfec7c8cd Notify creation and destruction of native objects. 2013-04-25 20:23:00 +08:00
Cheng Zhao
a513daae30 Enable idle GC in browser. 2013-04-25 19:41:23 +08:00
Cheng Zhao
3f6f2f4bea Tell browser to release remote object when the object is GCed. 2013-04-25 19:28:04 +08:00
Cheng Zhao
678a4953fa Better support of array type in RPC. 2013-04-25 16:03:29 +08:00
Cheng Zhao
2997eb9c77 Add renference links. 2013-04-25 15:12:56 +08:00
Cheng Zhao
0692776020 No more C++ RecordedObject and ObjectsRegistry code.
All RPC API will be implemented in pure javascript.
2013-04-25 15:02:58 +08:00
Cheng Zhao
d723173bc7 Initial RPC API implementation.
Basic usage is:
remote = require 'remote'
Window = remote.require 'window'
w = new Window { width: 800, height: 600 }

Still need to do:
* Beter support for Array type.
* Remote objects should cheat devtools.
* Support cross-process callbacks.
2013-04-24 16:43:01 +08:00
Cheng Zhao
1b87a31940 Add ipc.sendSync in renderer. 2013-04-23 21:52:19 +08:00
Cheng Zhao
8f0b2b6363 small tune of IPC interface. 2013-04-23 20:57:14 +08:00
Cheng Zhao
d28f51fb9c Add getRoutingID and getProcessID for window API. 2013-04-23 17:21:34 +08:00
Cheng Zhao
16244e42e0 Use require('ipc').send to communicate between browser and renderer. 2013-04-23 12:18:07 +08:00
Cheng Zhao
c22d927b6f Messages from renderer will be emitted to the process object in browser. 2013-04-22 22:24:02 +08:00
Cheng Zhao
66a0abe799 Renderer can now use process.send to send messages to browser. 2013-04-22 21:32:48 +08:00
Cheng Zhao
db0717851d Simpler way of inheriting EventEmitter. 2013-04-22 16:11:56 +08:00
Cheng Zhao
ebf5bf2d19 Remove recorded object from registry in desturctor. 2013-04-21 16:27:30 +08:00
Cheng Zhao
5948bff23f Share same native bindings code on both renderer and browser. 2013-04-21 14:53:26 +08:00
Cheng Zhao
993cf1cc61 Add API messages for IPC. 2013-04-21 11:01:04 +08:00
Cheng Zhao
683087fbc4 Record all objects created by API in browser. 2013-04-20 21:52:46 +08:00
Cheng Zhao
7f581973c3 Implement window.open. 2013-04-20 13:56:01 +08:00
Cheng Zhao
5fb5ce2251 Enable creating window with existing web contents. 2013-04-20 13:42:39 +08:00
Cheng Zhao
603ae8b62e Update to latest brightray. 2013-04-19 19:11:46 +08:00
Cheng Zhao
53dd742632 Add Window.url API. 2013-04-19 00:06:10 +08:00
Cheng Zhao
d3e4db7ba3 Emit 'page-title-updated' as javascript event for window. 2013-04-18 23:50:47 +08:00
Cheng Zhao
1309d04ca7 Emulate DOM's Event class. 2013-04-18 21:42:20 +08:00
Cheng Zhao
2d016785a7 Add observers list for NativeWindow. 2013-04-18 20:50:58 +08:00
Cheng Zhao
d508f711c6 Add convenient accessors for Window API. 2013-04-18 15:57:53 +08:00
Cheng Zhao
100c4a426b Complete a few APIs for getters. 2013-04-18 15:38:04 +08:00
Cheng Zhao
d06472b092 Add partial APIs for WebContents and NavigationController. 2013-04-18 15:09:53 +08:00
Cheng Zhao
257e439efb Add GetTitle for window API. 2013-04-18 14:30:05 +08:00
Cheng Zhao
df50cc08d6 Expose interface of NativeWindow in javascript. 2013-04-17 22:49:49 +08:00
Cheng Zhao
60528e53ee Use JavaScript to open the main window. 2013-04-17 20:05:43 +08:00
Cheng Zhao
7da34e65f7 Initial empty window javascript binding. 2013-04-16 00:25:08 +08:00
Cheng Zhao
488d72e41b Internal built-in module code should be wrapped under api namespace. 2013-04-15 23:01:12 +08:00
Cheng Zhao
ef2056c3f5 Initial javascript startup code. 2013-04-15 15:39:54 +08:00
Cheng Zhao
a7516f3da5 Copy the default_app to bundle. 2013-04-14 23:24:46 +08:00
Cheng Zhao
ee420b1590 Write js codes in coffee script. 2013-04-14 22:48:35 +08:00
Cheng Zhao
0d8c4dde97 💄 for cpplint. 2013-04-14 17:33:44 +08:00
Cheng Zhao
0f6ece2d27 Add our own built-in native module system. 2013-04-14 15:36:48 +08:00
Cheng Zhao
3c96007131 Don't quit browser when get fatal js error. 2013-04-13 23:38:29 +08:00
Cheng Zhao
409228207c Integrate libuv with browser's message loop. 2013-04-13 23:05:13 +08:00
Cheng Zhao
40307126d7 Load atom.js on startup. 2013-04-13 21:10:41 +08:00
Cheng Zhao
f853fc3df5 Initialize node in browser process. 2013-04-13 18:39:09 +08:00
Cheng Zhao
e49861b45b 💄 2013-04-12 23:20:09 +08:00
Cheng Zhao
44b3aa6a2f Set our WebKit preferences. 2013-04-12 20:48:02 +08:00
Cheng Zhao
26d6df7852 Handle keyboard events with AtomEventProcessingWindow.
Some system events like cmd+` will be handled by it automatically.
2013-04-12 20:31:15 +08:00
Cheng Zhao
f62b00eaac Fix devtools. 2013-04-12 16:41:15 +08:00
Cheng Zhao
f5e74e1b65 AtomBrowserMainParts is platform-independent now. 2013-04-12 15:57:17 +08:00
Cheng Zhao
af94c434ac use AtomEventProcessingWindow as native window. 2013-04-12 15:53:29 +08:00
Cheng Zhao
3391370857 Steal ChromeEventProcessingWindow from chrome.
Chromium has done quite a lot of low level works for us, steal them to
ease our lives.
2013-04-12 15:24:36 +08:00
Cheng Zhao
c27cbaaaf9 Implement generic native window class. 2013-04-12 15:04:46 +08:00
Cheng Zhao
a915cf2e81 Initial empty browser. 2013-04-12 10:14:23 +08:00