Shelley Vohr
5a35c3a279
chore: fix promisify helper ( #16544 )
...
* chore: fix promise deprecation helper
* fix deprecations
* update deprecation tests
2019-01-25 14:23:24 -08:00
Milan Burda
713df08e3e
chore: remove deprecated modules internally using remote.require in sandboxed renderer context ( #15957 )
2019-01-24 10:53:52 -08:00
Milan Burda
cc90919384
refactor: pass internal flag via IPC message struct for consistency ( #16490 )
2019-01-23 08:24:57 -08:00
Milan Burda
6cba2c50a2
feat: make ipc-message
and ipc-message-sync
events public ( #16468 )
2019-01-22 08:47:58 -08:00
Shelley Vohr
441c9ce376
feat: promisify desktopCapturer.getSources ( #16427 )
...
* feat: promisify desktopCapturer.getSources
* fix doc
* fix docs lint error
2019-01-18 15:29:32 -08:00
Milan Burda
547097b036
security: allow to block desktopCapturer.getSources() calls ( #15964 )
...
* security: allow to block desktopCapturer.getSources() calls
* return empty instead of error
* fix: release resources of DesktopCapturer on exit
2018-12-20 11:44:30 +09:00
Milan Burda
c65a0d90b8
chore: misc cleanup ( #16037 )
2018-12-12 15:31:16 -06:00
Milan Burda
ab2a061b59
refactor: use helpers when using the remote module in sandboxed renderers ( #15960 )
2018-12-05 10:07:32 -08:00
Milan Burda
d561c5531b
feat: deprecate modules internally using remote.require in sandboxed renderer context ( #15145 )
2018-12-05 10:34:09 +01:00
Julien Isorce
1f55f1635f
feat: add support for DesktopCapturerSource.appIcon
...
Useful to get the icon of the application owning the source.
Only available for sources of type window, i.e. not for screen.
https://github.com/electron/electron/issues/14845
2018-12-04 15:42:49 +09:00
Cheng Zhao
a8f2646ba6
Fix missing remote object error when calling remote function created in preload script ( #15444 )
...
* fix: report wrong context error based on contextId
* fix: destroyed remote renderer warning is now async
2018-10-31 11:26:57 -04:00
Milan Burda
d3efc52745
feat: add webPreferences.enableRemoteModule option ( #13028 )
2018-10-13 20:50:07 +03:00
Milan Burda
b50f86ef43
refactor: use separate ipc-renderer-internal / ipc-main-internal APIs for Electron internals ( #13940 )
2018-10-07 00:48:00 +13:00
Milan Burda
3ad3ade828
refactor: add prefer-const to .eslintrc + fix errors ( #14880 )
2018-10-02 11:56:31 +10:00
Milan Burda
b499d57cfd
refactor: use error-utils for remote exception serialization / deserialization ( #14788 )
...
* refactor: use error-utils for remote exception serialization / deserialization
* fix internal process.type in sandboxed renderer
2018-09-26 15:44:55 +10:00
Samuel Attard
176a76217c
chore: have 'use strict' consistently across our lib files ( #14721 )
2018-09-23 00:28:50 +12:00
Samuel Attard
54ef906832
[RFC] perf: use an internal module resolver to improve require performance ( #14633 )
...
* perf: use an internal module resolver instead of relative requires
* perf: memoize the results of getting exported Electron properties
* perf: make internal module changes consistent across sandboxed / bundled files
2018-09-20 13:43:26 +10:00
Samuel Attard
558fff69e7
chore: update to standard 12
2018-09-14 14:57:01 +10:00
Milan Burda
3a79eacb6f
refactor: don't expose CallbacksRegistry as an internal module ( #14389 )
2018-08-31 11:29:00 -07:00
Milan Burda
28e4fcea3b
refactor: move common logic to handleRemoteCommand
2018-08-27 21:06:03 +02:00
Milan Burda
c23e7fa101
refactor: implement ipcRenderer.sendTo in native code for better performance ( #14285 )
2018-08-24 14:14:39 -07:00
Cheng Zhao
e2029435c4
fix: use context counter as contextId
...
For sandboxed renderer it may not have a node::Environment in the context,
using a increasing counter as contextId works for all cases.
2018-07-19 11:00:10 -07:00
Cheng Zhao
4cdb1b8fc3
fix double-freeing remote references
...
After the page does navigations, garbage collection can still happen in
the old context. This commit changes to store references to remote objects
by _pages_, instead of by _WebContents_.
2018-07-12 10:44:26 +09:00
Alexey Kuzmin
dee9aef975
Add "enable_desktop_capturer" build flag ( #13133 )
...
* Make it possible to disable a module for a renderer
* Put DesktopCapturer API under a build flag
The name is "enable_desktop_capturer".
Enabled by default.
2018-06-13 11:15:34 -05:00
Thiago de Arruda
6ff111a141
perf: don't use JSON to send the result of ipcRenderer.sendSync
. ( #8953 )
...
* Don't use JSON to send the result of `ipcRenderer.sendSync`.
- Change the return type of AtomViewHostMsg_Message_Sync from `base::string16`
to `base::ListValue`
- Adjust lib/browser/api/web-contents.js and /lib/renderer/api/ipc-renderer.js
to wrap/unwrap return values to/from array, instead of
serializing/deserializing JSON.
This change can greatly improve `ipcRenderer.sendSync` calls where the return
value contains Buffer instances, because those are converted to Array before
being serialized to JSON(which has no efficient way of representing byte
arrays).
A simple benchmark where remote.require('fs') was used to read a 16mb file got
at least 5x faster, not to mention it used a lot less memory. This difference
tends increases with larger buffers.
* Don't base64 encode Buffers
* Don't allocate V8ValueConverter on the heap
* Replace hidden global.sandbox with NodeBindings::IsInitialized()
* Refactoring: check NodeBindings::IsInitialized() in V8ValueConverter
* Refactor problematic test to make it more reliable
* Add tests for NaN and Infinity
2018-06-13 17:38:31 +10:00
Milan Burda
4cfe5ecaa4
add proper support for typed arrays in remote ( #13055 )
2018-05-24 21:05:46 +09:00
Thiago de Arruda
6f076f7433
Refactor sandbox preload initialization. ( #12877 )
...
Use a single synchronous IPC call to retrieve data required by early
sandbox scripts. This has two purposes:
- Optimize preload script initialization by:
- Using one synchronous IPC call to retrieve preload script,
webContentsId (more on that later), process.{platform,execPath,env}
- Lazy loading as many modules as possible.
- Fix #12316 for sandbox. @MarshallOfSound addressed the issue in
#12342 , but it was still present in sandbox mode. By loading
webContentsId very early and skipping remote module at early
startup, we fix it for sandbox.
2018-05-21 22:56:05 +10:00
Tatsuya Hiroishi
9c65abd746
handle remote exception ( #12694 )
...
* add cause property to exception in callFunction
* update exceptionToMeta function
* add sender argument
* and cause property to return value
* update exception convert in metaToValue function
* add from and cause properties to the exception error
* unit test for remote exception
2018-04-24 08:40:19 -04:00
Andrew MacDonald
6bfb122cd1
Add a display_id parameter to the desktopCapturer API. ( #12417 )
...
* Add a screen_api_id parameter to the desktopCapturer API.
When using the DirectX capturer on Windows, there was previously no way
to associate desktopCapturer/getUserMedia and electron.screen API
screens. This new parameter provides the association.
* Fix non-Windows build.
* Fix Mac.
* Fix Mac harder.
* JS lint
* clang-format C++ code.
* IWYU
* display_id, Linux comment, better test
* lint
* Fix tests on Linux.
* Add display_id documentation.
2018-04-09 14:43:35 +09:00
Samuel Attard
0ac883c6d4
Remove the race condition between new process creation and context release ( #12342 )
...
* Remove the race condition between new process creation and old process releasing remote context
Previously there was a race condition where the getId() method would return the new context ID even
though the release was for the old context. This changes it to send the "initial" context ID with
the release message to ensure there is no race.
* fetch context ID from remote in sandbox mode
2018-03-20 15:54:47 +11:00
Shelley Vohr
8736a41cfb
Merge pull request #10909 from electron/update_remote
...
Simplify and remove excess code from remote module
2017-11-03 09:16:28 -04:00
Shelley Vohr
803fa35484
fix null value check
2017-11-03 08:47:21 -04:00
Shelley Vohr
2b2c7d7f9f
fix object serialization test issue
2017-11-02 21:29:17 -04:00
Shelley Vohr
5c318932c2
add some structural changes
2017-11-02 21:07:40 -04:00
Charles Kerr
1c09dede1a
singletons that are retroactively turned into EventEmitters should call the EventEmitter ctor
2017-11-01 23:05:27 -05:00
Shelley Vohr
5f6f117bad
changes from review
2017-10-25 23:41:11 -04:00
Shelley Vohr
d4880b135a
revert ipc lookup table
2017-10-25 15:36:16 -04:00
Shelley Vohr
c0f2a7b44a
fix standard issues
2017-10-25 09:56:02 -04:00
Shelley Vohr
f129622446
clean up remote
2017-10-25 09:51:21 -04:00
Shelley Vohr
7593bec687
update reviewed items
2017-10-24 19:36:06 -04:00
Shelley Vohr
b58ceae69c
appease linter gods
2017-10-24 12:28:15 -04:00
Shelley Vohr
43e118fe45
update desktop capturer and remove unnessary vars
2017-10-24 12:01:51 -04:00
Thiago de Arruda
6b5bd3b6ce
Fix how rpc-server releases references after page reload
...
In addition to listening for "render-view-deleted", listen for
"ELECTRON_BROWSER_CONTEXT_RELEASE" synchronous message, which is sent by the
remote module when the page is about to be navigated.
This is required to allow child windows running in the same renderer to
correctly manage remote object references, since `render-view-deleted` is only
called when the renderer exits.
Close #9387
2017-05-16 09:05:52 -03:00
Kevin Sawicki
7065123266
Wrap remote value being set as an arg
2017-04-04 11:18:16 -07:00
Kevin Sawicki
e85e483c71
Parse setting response to surface thrown errors
2017-04-03 12:16:51 -07:00
Kevin Sawicki
286f529968
Merge pull request #8890 from twolfson/dev/proxy.to.string.sqwished
...
🐛 Add toString support to remote functions
2017-03-20 09:35:51 -07:00
Kevin Sawicki
c50b518493
Check toString after loading remote properties
2017-03-17 10:29:07 -07:00
Todd Wolfson
818738ce84
🐛 Add toString support to remote functions
2017-03-17 08:21:37 -07:00
Thiago de Arruda
f6befbe764
Expose lib/renderer/api/remote.js to sandboxed renderer
2017-03-16 14:21:23 -03:00
Thiago de Arruda
dda2288541
Remove lib/renderer/api/ipc-renderer-setup.js
...
This file is no longer required since sandboxed renderer directly imports
ipc-renderer.js.
2017-03-09 20:40:32 -03:00
Thiago de Arruda
44bd93589a
Refactor electron exports to keep module list in separate files
2017-03-09 19:08:01 -03:00
Kevin Sawicki
dbe9893d29
Assign Promise.resolve to constant
2017-03-07 12:10:09 -08:00
Kevin Sawicki
79b17c2cd9
Expose TouchBar on remote module
2017-03-03 14:00:39 -08:00
Kevin Sawicki
e8a79cb88d
Don't require browser process module from renderer
...
This can cause issues when it is accessed from the
require cache or module tree since the getters throw
errors when called.
2017-02-28 08:45:39 -08:00
Greg Nolle
e29b64a18a
modify CertVerifier Class
...
* respond to multiple similar verification requests.
* accept net error result as callback response.
2017-02-08 11:59:43 -08:00
Kevin Sawicki
f894da13b0
Pass args array instead of arguments object
2016-12-02 13:40:31 -08:00
Kevin Sawicki
af555bd879
Use spread syntax instead of apply
2016-12-01 14:56:00 -08:00
Samuel Attard
db729b5b52
Throw an error when users attempt to remove all listeners from the IPC modules
2016-11-22 18:30:58 +11:00
Kevin Sawicki
5167ccd147
Guard against missing members in setObjectMembers
2016-11-16 07:45:34 -08:00
Kevin Sawicki
e0afb814aa
Only call browserify when one of sandbox sources change
2016-11-07 08:19:59 -08:00
Thiago de Arruda
0f7652dc85
Move code that defines ipcRenderer methods into another file.
2016-09-27 06:01:46 -03:00
Kevin Sawicki
eef42770c6
Don't load remote properties until they are accessed
2016-09-14 13:29:49 -07:00
Kevin Sawicki
359ab2f9b3
Only set members when members exist
2016-09-14 10:54:23 -07:00
Kevin Sawicki
902bd0564e
Require Buffer explicitly instead of relying on global
2016-09-08 10:17:06 -07:00
Cheng Zhao
f854b27bfb
Merge pull request #6867 from electron/remote-function-properties
...
Allow accessing remote function properties
2016-08-31 17:28:09 +09:00
Kevin Sawicki
01e69353d5
Don't serialize ArrayBuffer as Array
2016-08-24 15:18:42 -07:00
Kevin Sawicki
ec44a5d198
Add tests for setting remote function properties
2016-08-22 17:07:18 -07:00
Kevin Sawicki
666a668d91
Support remote function keys and property descriptors
2016-08-22 17:07:18 -07:00
Kevin Sawicki
d226b7bc6c
Use Proxy for accessing properties of remote function
2016-08-22 17:07:18 -07:00
Kevin Sawicki
8b38018ab4
Add helper for including function properties
2016-08-22 17:07:17 -07:00
Kevin Sawicki
d333cc5e38
Support remote function properties
2016-08-22 17:07:17 -07:00
Cheng Zhao
8c0a033b6f
Fix lint errors of using __proto__
2016-08-02 21:02:28 +09:00
Cheng Zhao
6e0cde5b24
All native objects have prototype now
2016-08-02 17:12:17 +09:00
Cheng Zhao
9ddb62c42a
Use Buffer.from instead of deprecated new Buffer
2016-07-25 16:40:22 +09:00
Cheng Zhao
1c9421bc89
Use ArrayBuffer.isView to detect Buffer and ArrayBuffer
2016-07-25 16:39:09 +09:00
haad
fac330fb50
Fix TypedArray check, add check when instanceof doesn't work for TypedArrays.
2016-07-23 12:43:49 +01:00
haad
c717cd9192
🐛 Add support for TypedArrays in IPC.
...
Fixes https://github.com/electron/electron/issues/2104 .
2016-07-22 19:44:19 +01:00
Kevin Sawicki
00f82aaffe
Only check arrays and objects for cycles
2016-07-11 10:39:45 -07:00
Kevin Sawicki
564b0cace5
Maintain visted objects as a stack for cycle detection
2016-07-11 10:33:13 -07:00
Kevin Sawicki
5da0b856f9
Call includes directly on visited array
2016-07-11 10:33:13 -07:00
Kevin Sawicki
2cc2b8a146
Return empty array for circular references
2016-07-11 10:33:04 -07:00
Kevin Sawicki
a9b43a0fc9
Use empty string constructor name when missing
2016-07-06 13:06:48 -07:00
Kevin Sawicki
d67dfd09fd
Pass through empty constructor names
2016-07-06 09:18:20 -07:00
Maksim
b444b35215
Update remote.js
2016-07-06 09:11:04 -07:00
Cheng Zhao
f693b042b5
Fix js lint warnings
2016-05-28 22:46:15 +09:00
Cheng Zhao
ba315248e0
Use ipcRenderer.sendTo to get rid of routers in main process
2016-05-28 21:13:00 +09:00
Cheng Zhao
ae1f442b02
Add ipcRenderer.sendTo
2016-05-28 20:50:28 +09:00
cdaringe
32073fa079
🎨 Support non-native promises
2016-05-25 10:11:18 -06:00
Kevin Sawicki
7929daa48c
Pass both callback values to then
2016-05-23 15:07:01 -07:00
Kevin Sawicki
cc7395eea8
Remove returns from event listeners
2016-05-19 15:28:08 -07:00
Cheng Zhao
87c10b3ac2
Make non-public module accesible via remote
2016-05-18 13:57:48 +09:00
Cheng Zhao
49ac160ff7
Move createIDWeakMap to v8Util
2016-05-11 19:30:06 +09:00
Cheng Zhao
04d59991b0
Use create function instead of IDWeakMap constructor
2016-05-11 16:15:32 +09:00
Kevin Sawicki
d988cae16d
Remove deprecated ipc module
2016-05-06 10:12:53 -07:00
Kevin Sawicki
dae68be2ce
Remove deprecated APIs
2016-05-06 10:12:53 -07:00
Cheng Zhao
06cf0406fe
Dereference remote objects with native code
...
Previously we rely on the v8util.setDestructor to dereference the remote
objects in JavaScript, however as documented in V8, it is forbidden to
call V8 APIs in object's destructor (e.g. the weak callback), and doing
so would result in crashs.
This commit removes the JavaScript setDestructor method, and avoids
doing the dereference work with V8.
2016-04-26 16:16:22 +09:00
Cheng Zhao
ff1b7d18f6
Cleanup the code determining value's type
2016-04-20 14:26:49 +09:00
Kevin Sawicki
8d8d5878a3
Rename ATOM_ ipc event prefix to ELECTRON_
2016-04-07 09:04:55 -07:00
Cheng Zhao
39d2b95a33
Reference the remote object in its prototype chain's methods
2016-04-01 15:46:01 +09:00
Cheng Zhao
4ebb01f8c9
Remote object's members should reference itself
2016-04-01 15:26:30 +09:00
Zeke Sikelianos
4e2f1311e0
replace __proto__ with Object.setPrototype
2016-03-30 17:00:33 -07:00
Zeke Sikelianos
e6698102c9
standardize by hand
2016-03-30 17:00:33 -07:00
Zeke Sikelianos
3855a774ab
autoformat more easy files
2016-03-30 17:00:31 -07:00
Kevin Sawicki
2d32956903
Destructure objects
2016-03-22 13:11:42 -07:00
Kevin Sawicki
a53c7529c1
Remove unneeded slice call
2016-03-18 11:54:34 -07:00
Kevin Sawicki
8889c29866
Use rest parameters
2016-03-18 11:51:02 -07:00
Cheng Zhao
6aec1e6949
Merge pull request #4714 from atom/chrome49
...
Upgrade to Chrome 49
2016-03-11 21:39:52 +09:00
Arek Sredzki
ee61ab2d26
Cache browser visibility state & emit visibilitychange event on change
...
Fixes #3788
2016-03-10 13:51:31 -08:00
Cheng Zhao
6de9c4332f
Fix passing Promise with remote
...
Somehow using value.then.bind(value) would result in infinite loop,
could be bug of Chromium.
2016-03-10 17:06:22 +09:00
Kevin Sawicki
006c77a00f
Update requires paths
2016-03-08 11:14:22 -08:00
Kevin Sawicki
70aa9b06ee
Move JavaScript to root lib/ folder
2016-03-08 11:14:21 -08:00