Commit graph

28 commits

Author SHA1 Message Date
Milan Burda
80577a4f08
refactor: use native WeakRef instead of v8util.weaklyTrackValue() (#31153) 2021-09-27 16:50:42 -04:00
Samuel Attard
f01e35f4ea
feat: add support for Blob's going over the ctx bridge (#29247) 2021-05-26 10:34:29 -07:00
Shelley Vohr
9fecf8369f
fix: errors thrown in functions over the contextBridge (#28346)
* fix: errors thrown in functions over the contextBridge

* spec: add a test

* fix: ensure exception is a v8::Object
2021-03-30 00:26:49 -07:00
Samuel Attard
7918ddb026
perf: do not double-proxy methods being return over the contextBridge (#28285) 2021-03-24 11:43:02 -07:00
Nikita Kot
e99893df22
feat: add ContextBridgeMutability feature (#27348) 2021-03-22 10:16:35 -07:00
Samuel Attard
e406ba9558
fix: values return from the ctx bridge with dynamic property support should themselves support dynamic properties (#27899) 2021-02-25 13:09:00 -08:00
Milan Burda
79b3393768
chore: remove bunch of usages of any (#27512) 2021-01-29 12:41:59 -08:00
Samuel Attard
db08f08b88
feat: enable world safe JS by default (#26889)
* feat: enable world safe JS by default

* refactor: use the ctx bridge to send executeJavaScript results in a world safe way

* docs: add more info about the breaking change

* include default in IsEnabled check
2021-01-26 14:23:35 -08:00
Milan Burda
70190ec2b1
chore: update to latest TypeScript, which has built-in WeakRef declarations (#27425) 2021-01-22 11:25:47 -08:00
Samuel Attard
b9c9e7fc06
feat: add support for DOM elements going over the context bridge (#26776)
* feat: add support for DOM elements going over the context bridge

* Update context-bridge.md
2020-12-10 13:03:00 -08:00
Nikita Kot
7672aa9525
feat: exposeInMainWorld allow to expose non-object APIs (#26594) 2020-12-04 09:43:20 -08:00
Shelley Vohr
77038b7bda
chore: upgrade to Node.js v14.9.0 (#25249) 2020-09-17 16:08:57 -06:00
Samuel Attard
5cfe956fe1
fix: ensure that errors thrown in the context bridge are created in the correct context (#24534) 2020-07-23 14:32:38 -07:00
Samuel Attard
d4a4269989
perf: do not convert object keys in ctx bridge as they are always primitives (#24671)
* perf: do not convert object keys in ctx bridge as they are always primitives

* Update shell/renderer/api/electron_api_context_bridge.cc

Co-authored-by: Jeremy Rose <jeremya@chromium.org>

Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2020-07-21 15:26:16 -07:00
Samuel Attard
3f54f240bd
perf: pass primitives directly through the context bridge, avoids copying (#24531) 2020-07-14 18:38:54 -07:00
Shelley Vohr
659e79fc08
refactor: prevent consistent early exception (#24191)
* refactor: prevent consistent early exception

* Use _linkedBinding where possible

* Remove dead electronBinding
2020-06-22 20:32:45 -07:00
Jeremy Apthorp
3f3a760a01
test: bind to 127.0.0.1 in contextBridge spec (#23639) 2020-05-19 10:17:40 -07:00
Samuel Attard
9d7ba98209
refactor: remove the RenderFrameFunctionStore and use privates to memory manage (#23592) 2020-05-15 11:57:40 -07:00
Samuel Attard
7f9b7b2e95
chore: clean up context bridge scopes and add specs for internal bridge (#23334)
* chore: clean up context bridge context scopes

* spec: add specs for internalContextBridge
2020-05-11 13:41:42 -07:00
Samuel Attard
96bf9ce77f
refactor: port parts of window-setup to use ctx bridge instead of being run in the main world (#23194)
* refactor: port parts of window-setup to use ctx bridge instead of being run in the main world

* chore: update ctx bridge specs for new base numbers
2020-04-22 12:42:51 -07:00
Samuel Attard
0cbcee6740
fix: ensure that functions are not retained beyond their context being released (#23207) 2020-04-21 18:05:01 -07:00
Samuel Attard
e4c82fdf2d
Merge pull request from GHSA-h9jc-284h-533g 2020-04-16 14:10:18 -07:00
Samuel Attard
0d2e967960
feat: expose electron/{process} typed modules (#22937)
* feat: expose electron/{process} typed modules

* chore: update imports for common modules

* chore: update typescript generator

* chore: remap electron/* to the internal packages
2020-04-06 17:04:09 -07:00
Samuel Attard
5d657dece4
build: enable JS semicolons (#22783) 2020-03-20 13:28:31 -07:00
Samuel Attard
b87b501161
build: update eslint + eslint plugins (#22777)
* build: run eslint --fix

* chore: manually fix all hasOwnProperty errors

* chore: manually fix all void 0 vs undefined errors

* chore: manually fix all async-in-promise errors

* chore: manually fix lexical declaration in case block
2020-03-20 11:12:18 -04:00
Samuel Attard
2563681583
fix: disable contextBridge object identity caching (#21803)
* fix: disable contextBridge object identity caching

* cleanup

* chore: make non-const references raw pointers

* fix: zero-param constructors are not explicit

* refactor: use base::LinkedList

Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-03-03 23:18:22 -08:00
Jeremy Apthorp
ecd9e1f26e
chore: lint spec-main (#20835) 2019-11-01 13:37:02 -07:00
Samuel Attard
0090616f7b
feat: add a new contextBridge module (#20307)
* feat: add a new contextBridge module

* chore: fix docs linting

* feat: add support for function arguments being proxied

* chore: ensure that contextBridge can only be used when contextIsolation is enabled

* docs: getReverseBinding can be null

* docs: fix broken links in md file

* feat: add support for promises in function parameters

* fix: linting failure for explicit constructor

* Update atom_api_context_bridge.cc

* chore: update docs and API design as per feedback

* refactor: remove reverse bindings and handle GC'able functions across the bridge

* chore: only expose debugGC in testing builds

* fix: do not proxy promises as objects

* spec: add complete spec coverage for contextBridge

* spec: add tests for null/undefined and the anti-overwrite logic

* chore: fix linting

* spec: add complex nested back-and-forth function calling

* fix: expose contextBridge in sandboxed renderers

* refactor: improve security of default_app using the new contextBridge module

* s/bindAPIInMainWorld/exposeInMainWorld

* chore: sorry for this commit, its a big one, I fixed like everything and refactored a lot

* chore: remove PassedValueCache as it is unused now

Values transferred from context A to context B are now cachde in the RenderFramePersistenceStore

* chore: move to anonymous namespace

* refactor: remove PassValueToOtherContextWithCache

* chore: remove commented unused code blocks

* chore: remove .only

* chore: remote commented code

* refactor: extract RenderFramePersistenceStore

* spec: ensure it works with numbered keys

* fix: handle number keys correctly

* fix: sort out the linter

* spec: update default_app asar spec for removed file

* refactor: change signatures to return v8 objects directly rather than the mate dictionary handle

* refactor: use the v8 serializer to support cloneable buffers and other object types

* chore: fix linting

* fix: handle hash collisions with a linked list in the map

* fix: enforce a recursion limit on the context bridge

* chore: fix linting

* chore: remove TODO

* chore: adapt for PR feedback

* chore: remove .only

* chore: clean up docs and clean up the proxy map when objects are released

* chore: ensure we cache object values that are cloned through the V8 serializer
2019-10-18 12:57:09 -07:00