Cheng Zhao
623e0f3ae4
Release render view's remote objects when it's deleted.
...
Privously we release them when the window is unloaded, which is not
correct since a render view can have multiple windows (or js contexts)
and when the unload event is emitted the render view could already have
gone.
This PR does the cleaning work purely in browser, so here is no need to
worry about renderer's life time.
2013-12-06 14:44:25 +08:00
Cheng Zhao
284160bf2d
Set application's name and version from the package.json.
2013-12-05 11:30:06 +08:00
Cheng Zhao
caaab22841
Do not dereference remote callback if its renderer view is released.
2013-10-05 20:53:31 +08:00
Cheng Zhao
1e1fec15b6
Make objects registry code more structured.
2013-10-05 20:47:49 +08:00
Cheng Zhao
f4f42b30ee
💄 Fix warnings of coffeelint.
2013-09-27 11:03:23 +08:00
Cheng Zhao
14de58a6b7
Calling asynchronous functions in renderer now doesn't block browser.
2013-09-24 18:01:12 +08:00
Cheng Zhao
07b5039c64
Make sure all sync messages get a return value.
2013-09-20 21:39:07 +08:00
Cheng Zhao
a9c824eba1
Use event.returnValue instead of event.result in atom-shell's code.
...
event.result is still kept for backward compatible.
2013-09-20 21:37:47 +08:00
Cheng Zhao
3b7dd85d3f
Merge pull request #65 from atom/custom-protocol
...
Support custom protocols
2013-09-04 03:33:09 -07:00
Cheng Zhao
30c9cd4318
Use dummy stdin stream on Windows.
2013-08-31 12:13:08 +08:00
Cheng Zhao
9e16e41bb3
Enable creating object from remote object's member.
2013-08-25 20:44:52 +08:00
Cheng Zhao
c86acc4cd7
Add remote.createFunctionWithReturnValue API.
2013-08-25 17:22:36 +08:00
Cheng Zhao
2fd91e8c96
Enable passing objects and arrays when calling remote function.
2013-08-14 21:51:51 +08:00
Cheng Zhao
4acbbd1ad7
Discard the idle gc module.
2013-07-29 20:34:07 +08:00
Cheng Zhao
cd19666307
Remove the useless remote.getObject API.
2013-07-29 16:35:25 +08:00
Cheng Zhao
51a632d7d9
Don't make use of the 'id' property when sending objects.
...
Fixes #43 .
2013-07-26 16:40:29 +08:00
Cheng Zhao
2f2cbce9b9
[Win] Override node's console and output stream with chromium's logging.
...
On Window node doesn't outputing as GUI program, so we have to switch to
chromium's implementation. Hacking into node (like what we did before
this commit) would sometimes make the outputing blocked.
2013-07-25 20:06:23 +08:00
Cheng Zhao
3cd910abc6
Use process.resourcePath to locate js files.
2013-07-07 11:20:30 +08:00
Cheng Zhao
dbaf8860a6
Revert "Make BrowserWindow inheritable. Fixed #23."
...
This reverts commit 5a0aab2e4f
.
2013-06-18 21:40:03 +08:00
Cheng Zhao
3d267e2a9f
Since we support inheritance of native objects, use js to send messages.
2013-06-18 18:47:13 +08:00
Cheng Zhao
02c5ad16f3
Show uncaught exception in message dialog.
2013-06-02 14:55:47 +08:00
Cheng Zhao
bb69d99423
Use - as filename seperator for coffee script files. Fixes #15 .
...
Also clean unused files and wrong file names.
2013-05-30 20:21:07 +08:00
Cheng Zhao
d19e62d867
Erase window from weak map immediately after it's destroyed.
...
Otherwise it could happend that developers accessed the window after
it's destroyed but before it's GCed.
2013-05-20 14:55:46 +08:00
Cheng Zhao
66c35e4517
Add BrowserWindow.fromProcessIdAndRoutingId API.
2013-05-17 21:53:37 +08:00
Cheng Zhao
64a8664ffe
Fix places where Window should be BrowserWindow.
2013-05-15 22:17:27 +08:00
Cheng Zhao
1bace4abb6
Improve error reporting in RPC by printing stack trace.
2013-05-14 20:00:44 +08:00
Cheng Zhao
35441ad8fb
The unwrapArgs relies on the valueToMeta function.
2013-05-04 22:59:32 +08:00
Cheng Zhao
e7547363e2
Check whether id is valid when adding to weak map.
...
It's possible that the object has been added to weak map before and then
erased, so having an id property doesn't mean it's added in the weak map.
2013-05-04 22:57:17 +08:00
Cheng Zhao
6bf0d5d798
Modify funtion's names to make RPC code more easy to understand.
2013-05-04 21:38:25 +08:00
Cheng Zhao
36c260f4d5
Resupport cross-process callback.
...
It seems that it's avoidable to make callback cross-process when we
start to emitting events for GUI elements, without this feature our
implementation will be much more complicated. I will find a way to warn
about resources leak in browser.
2013-05-04 17:01:28 +08:00
Cheng Zhao
188bb5e225
Pass remote objects from renderer to browser by ID.
2013-05-03 21:51:06 +08:00
Cheng Zhao
42f10a15d5
URL => Url, ID => Id in coffee script.
2013-05-03 15:36:25 +08:00
Cheng Zhao
31d6be0e63
Release resources in browser when renderer view is gonna unloaded.
2013-05-01 10:59:29 +08:00
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
a06c9b806b
Add API to get any global variable from browser.
2013-04-30 16:27:14 +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
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
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
ef2056c3f5
Initial javascript startup code.
2013-04-15 15:39:54 +08:00