Compare commits

...

2480 Commits

Author SHA1 Message Date
Electron Bot
bfef6a54f0 Bump v8.2.0 2020-03-24 08:54:06 -07:00
Electron Bot
5fd403b571 Revert "Bump v8.2.0"
This reverts commit abe8c7168a.
2020-03-23 20:25:40 -07:00
Electron Bot
abe8c7168a Bump v8.2.0 2020-03-23 19:40:00 -07:00
Samuel Attard
5c32d18248 Revert "fix: better window hierarchy checks"
This reverts commit 7ba879711a.
2020-03-23 19:35:54 -07:00
Samuel Attard
c1da7b5238 Revert "Bump v8.2.0"
This reverts commit 5b75a4a4be.
2020-03-23 19:35:44 -07:00
Electron Bot
5b75a4a4be Bump v8.2.0 2020-03-23 14:47:36 -07:00
Electron Bot
57e36afc7e Revert "Bump v8.2.0"
This reverts commit a4ea27de36.
2020-03-23 14:46:14 -07:00
Electron Bot
a4ea27de36 Bump v8.2.0 2020-03-23 14:20:03 -07:00
Samuel Attard
7ba879711a fix: better window hierarchy checks 2020-03-23 14:12:48 -07:00
Samuel Attard
f057b0e494 feat: add support for net requests to use the session cookie store (#22807)
* chore: refactor all the net specs to be async with better error handling (#22731)

* chore: fix net specs when rerunning locally (#22745)

* feat: add support for net requests to use the session cookie store (#22704)

* fix: allow net requests to use Same-Site cookies (#22788)

* build: fix merge conflict

* Update extensions-spec.ts

* Update extensions-spec.ts
2020-03-23 13:38:46 -07:00
Samuel Attard
fa01a20f9b build: enable JS semicolons (#22786) 2020-03-23 09:18:39 -07:00
trop[bot]
579f7a1899 fix: prevent crash in ListValue v8 converter when conversion fails (#22758)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-03-19 10:48:26 -04:00
Electron Bot
920a82a4de chore: bump chromium in DEPS to 80.0.3987.158 (#22742) 2020-03-19 10:36:17 -04:00
trop[bot]
b501c40bd6 build: auto-generate the codesigning cert used for macOS CI testing runs (#22763)
* build: auto-generate the codesigning cert used for macOS CI testing runs

* build: give the cert ALL the trust values

* chore: also import public key

* idek

Co-authored-by: Samuel Attard <sattard@slack-corp.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-03-19 16:34:47 +09:00
trop[bot]
672aa1c67f test: no need to loadURL in menu test (#22766)
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2020-03-19 16:34:08 +09:00
Сковорода Никита Андреевич
b305784aa3 feat: add disableDialogs option to WebPreferences (#22665)
Allows to disable dialogs completely in a similar way of how safeDialogs option can be used. Overrides safeDialogs option.
2020-03-18 20:01:55 -04:00
trop[bot]
c4efeef92c fix: remove bad usages of for-in and guard against it (#22728)
* fix: remove bad usages of for-in and guard against it

* Apply suggestions from code review

Co-Authored-By: Samuel Maddock <samuel.maddock@gmail.com>

* Apply suggestions from code review

Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>

* Update remote.js

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Samuel Attard <sattard@slack-corp.com>
Co-authored-by: Samuel Maddock <samuel.maddock@gmail.com>
Co-authored-by: Jeremy Apthorp <jeremya@chromium.org>
2020-03-18 09:38:11 +09:00
Shelley Vohr
96b41d0930 fix: crash on invalid zoomFactor (#22709) 2020-03-18 09:32:19 +09:00
Electron Bot
1f652f08f8 chore: bump chromium in DEPS to 80.0.3987.156 (#22718) 2020-03-17 13:09:13 -04:00
Electron Bot
d12c157242 chore: bump chromium to 80.0.3987.148 (8-x-y) (#22680) 2020-03-16 23:19:00 -07:00
Electron Bot
68873fbadb chore: bump chromium in DEPS to 80.0.3987.144 (#22669) 2020-03-12 13:42:41 -04:00
Erick Zhao
526d748b7e fix: guard against duplicate TouchBarItem IDs (#22645) 2020-03-12 10:48:26 +09:00
Electron Bot
54109cb04d chore: bump chromium in DEPS to 80.0.3987.143 (#22648) 2020-03-11 17:20:28 -04:00
trop[bot]
542f30b54b test: test setPath for errors thrown (#22638)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2020-03-11 16:02:02 +09:00
Electron Bot
07ea340314 chore: bump chromium in DEPS to 80.0.3987.142 (#22635) 2020-03-10 21:51:34 -04:00
trop[bot]
524d6a5d79 chore: don't delete nightly tag after draft (#22623)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2020-03-10 17:04:11 +09:00
Alexey Kuzmin
a0431e1265 build: fix build without built-in spellchecker (#22608) 2020-03-10 16:59:51 +09:00
Electron Bot
647299fa9f Bump v8.1.1 2020-03-09 16:26:54 -07:00
trop[bot]
ee5d52440b build: upload sentry src bundles to symbol S3 bucket (#22619)
Co-authored-by: Samuel Attard <sattard@slack-corp.com>
2020-03-09 16:24:37 -07:00
Electron Bot
d4a79bc4c0 chore: bump chromium to 80.0.3987.141 (8-x-y) (#22593)
* chore: bump chromium in DEPS to 80.0.3987.139

* chore: bump chromium in DEPS to 80.0.3987.140

* chore: bump chromium in DEPS to 80.0.3987.141
2020-03-09 10:55:54 -07:00
Electron Bot
e37f69c467 chore: bump chromium in DEPS to 80.0.3987.138 (#22583) 2020-03-06 12:17:59 -05:00
Erick Zhao
df6faec72e fix: allow persistent media salts (#22386) (#22569) 2020-03-05 19:39:23 -08:00
Electron Bot
691ddb3f67 Bump v8.1.0 2020-03-05 17:09:17 -08:00
Samuel Attard
b4e1b840cd feat: programmatically modify traffic light positioning (#22533) (#22564)
* setter

* getter

* specs and docs

* fixup

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-03-05 17:07:51 -08:00
Samuel Attard
6f12b67582 feat: add events for spellcheck dictionary downloads (#22449) (#22558) 2020-03-05 17:07:44 -08:00
Samuel Attard
33f5fa3c56 feat: allow http-parser NODE_OPTION in packaged apps (#21694) (#22539) 2020-03-05 17:07:37 -08:00
Samuel Attard
6f88108132 fix: disable contextBridge object identity caching (#21803) (#22557)
* 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>

* Update electron_api_context_bridge.h

* Update electron_api_context_bridge.cc

Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-03-05 17:02:54 -08:00
Samuel Attard
05a7f5f492 docs: clean up dark mode related docs (#22563)
Backport of #22489

Electron 8 uses macOS 10.14 SDK, so we can remove paragraphs from the
systemPreferences API docs.
2020-03-05 14:02:58 -08:00
Samuel Attard
b878a5ea4c fix: reposition traffic lights on theme change (#22559)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-03-05 14:02:19 -08:00
Jeremy Apthorp
8756ff0349 chore: bump chromium to 80.0.3987.137 (8-x-y) (#22548) 2020-03-05 13:11:01 -08:00
Cheng Zhao
20c5a3b9e1 fix: destroy node platform after destroying wrappers (#22537)
Co-authored-by: Cheng Zhao <zcbenz@electronjs.org>
2020-03-05 13:07:58 +09:00
Samuel Attard
ddb62e8d7c fix: do not reposition traffic lights when fullscreened (#22508)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-03-04 16:52:25 -08:00
Electron Bot
077e35c576 chore: bump chromium in DEPS to 80.0.3987.136 (#22529) 2020-03-04 12:34:07 -05:00
trop[bot]
eb63062889 fix: properly forward properties to webview (#22510)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2020-03-04 16:22:27 +09:00
trop[bot]
cac6db76a0 fix: bail early if no printers on the network (#22518)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2020-03-04 16:19:05 +09:00
Electron Bot
9257c315ac chore: bump chromium in DEPS to 80.0.3987.135 (#22505) 2020-03-03 16:21:22 -08:00
Cheng Zhao
031480c3db fix: add patch to fix os_metrics_mac with 10.15 SDK (#22496) 2020-03-03 15:51:26 +09:00
trop[bot]
9f9d3e98bf docs: add documentation on case insensitive dictionary hosting (#22486)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-03-03 15:10:09 +09:00
trop[bot]
ae639186e3 fix: check WebContents in OnGetDefaultPrinter (#22475)
Co-authored-by: Cheng Zhao <zcbenz@electronjs.org>
2020-03-03 15:05:21 +09:00
Shelley Vohr
6e4690574d fix: prevent potential modal window close segfault (#22481) 2020-03-03 15:04:59 +09:00
trop[bot]
c83dc5be92 fix: Add ContentsView to AXChildren (#22470)
Co-authored-by: Felix Rieseberg <felix@felixrieseberg.com>
2020-03-02 22:02:20 +00:00
Electron Bot
63cb360df0 Bump v8.0.3 2020-03-02 11:30:38 -08:00
Samuel Attard
b311235165 Revert "Bump v8.0.3"
This reverts commit 6cd2623a87.
2020-03-02 11:26:00 -08:00
Electron Bot
6cd2623a87 Bump v8.0.3 2020-03-02 11:15:24 -08:00
Electron Bot
9aa81de83d Revert "Bump v8.0.3"
This reverts commit 0f246b6be7.
2020-03-02 11:10:57 -08:00
Electron Bot
0f246b6be7 Bump v8.0.3 2020-03-02 11:08:50 -08:00
Samuel Attard
5be76fd4ea Revert "Bump v8.0.3"
This reverts commit 7fe2cad354.
2020-03-02 11:03:36 -08:00
Samuel Attard
a315283f88 chore: update g_swizzle_imk_input_session for new SDK 2020-03-02 11:03:28 -08:00
Electron Bot
b741cbf3d7 chore: bump chromium to 80.0.3987.134 (8-x-y) (#22463) 2020-03-02 11:02:17 -08:00
loc
031c0d6951 fix: port CL that fixes ARIA tree impl for macOS (#22423) 2020-03-02 18:25:37 +00:00
Electron Bot
3639a82915 chore: bump chromium to 80.0.3987.132 (8-x-y) (#22441)
* chore: bump chromium in DEPS to 80.0.3987.129

* chore: bump chromium in DEPS to 80.0.3987.132
2020-02-29 13:37:12 -08:00
Electron Bot
7fe2cad354 Bump v8.0.3 2020-02-28 16:02:00 -08:00
trop[bot]
de2e12343e fix: dictionaries download path should be in userdata (#22448)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-02-28 15:58:33 -08:00
John Kleinschmidt
69598ae5c6 build: try using newer version of xcode/macOS sdk (#22104) 2020-02-28 15:54:30 -08:00
Samuel Attard
0f0a7e6b1e Revert "Bump v8.0.3"
This reverts commit a0dcb55d6c.
2020-02-28 15:48:57 -08:00
Electron Bot
a0dcb55d6c Bump v8.0.3 2020-02-27 20:30:36 -08:00
Samuel Attard
ee35482d97 Revert "fix: backport v8 patch for type inference issue (#22434)"
This reverts commit cfe350a534.
2020-02-27 16:44:49 -08:00
Electron Bot
8317553cd4 Revert "Bump v8.0.3"
This reverts commit ebf98e8af4.
2020-02-27 16:37:02 -08:00
Electron Bot
ebf98e8af4 Bump v8.0.3 2020-02-27 16:06:52 -08:00
trop[bot]
cfe350a534 fix: backport v8 patch for type inference issue (#22434)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-02-27 15:52:48 -08:00
Jeremy Apthorp
854dcb3247 chore: bump chromium to 80.0.3987.128 (#22419) 2020-02-27 14:42:39 -08:00
trop[bot]
882ce295ee docs: improve documentation on spellchecker download URL (#22403)
* docs: improve documentation on spellchecker download URL

* Update session.md

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-02-26 23:09:40 -08:00
trop[bot]
1ac31e18b7 test: disable clipboard tests for WOA (#22388)
Co-authored-by: Cheng Zhao <zcbenz@github.com>
2020-02-26 16:47:03 +09:00
Electron Bot
957717e483 Bump v8.0.2 2020-02-25 17:25:00 -08:00
trop[bot]
d1ccfea882 fix: add patch to set the base download URL rather than override it completely (#22384)
* fix: add patch to set the base download URL rather than override it completely

* test

* test

* test

* test

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-02-25 17:23:37 -08:00
trop[bot]
232ca04edd fix: pass safeDialogs preference properly (#22377)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2020-02-25 20:42:53 +00:00
trop[bot]
2888e46b7a chore: allow custom node-spec-runner options (#22332)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2020-02-25 11:09:51 +09:00
Jeremy Apthorp
4464a04f35 fix: emit will-navigate for sandboxed contents (#22188) (#22328) 2020-02-24 11:43:35 -08:00
trop[bot]
37baff1e31 fix: typo in crash reporter constructor (#22344)
Co-authored-by: Syed Umair <31096792+Syed-Umair@users.noreply.github.com>
2020-02-24 17:52:37 +09:00
Jeremy Apthorp
dde19b0583 fix: revert {Atom => Electron}Application rename (#22206) (#22326) 2020-02-24 12:29:35 +09:00
trop[bot]
e2b9cd7b7c docs: clean up protocol docs (#22309)
* docs: clean up protocol docs

* Fix capitalization

Co-authored-by: Mark Lee <malept@users.noreply.github.com>
2020-02-24 12:28:37 +09:00
Cheng Zhao
ecd398f8bd fix: disable remote layer APIs in MAS build (8-x-y) (#22298)
* fix: add patch to disable remote layer APIs

* fix: use --disable-gpu-memory-buffer-compositor-resources for MAS build
2020-02-24 12:09:12 +09:00
trop[bot]
21f544392b chore: remove libcc from release not generator (#22295)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2020-02-20 10:19:28 -05:00
John Kleinschmidt
5c93682a89 build: only strip binaries on linux (#22282) 2020-02-19 14:32:32 -05:00
trop[bot]
1db64c9e51 doc: remove accidental deprecation (#22265)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2020-02-19 13:44:36 +09:00
Samuel Attard
3a747eddbb fix: add patch to route mouse event navigations through the WebContentsDelegate (#22205) 2020-02-18 15:22:26 -08:00
John Kleinschmidt
51504aee64 build: preserve timestamps when stripping files (#22094) (#22257)
* build: preserve timestamps when stripping files

Resolves an issue where the binaries in mksnapshot.zip were not getting stripped.

Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
(cherry picked from commit 5e49aafe55)
2020-02-18 13:56:10 -05:00
trop[bot]
360e8a2eb8 fix: don't include breakpad_symbols dir in dsym.zip (#22218)
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
2020-02-18 12:00:16 -05:00
Electron Bot
4447a63f20 Bump v8.0.1 2020-02-14 06:02:51 -08:00
trop[bot]
ceb3b0cf54 fix: no-arg console.log is undefined (#22172)
Co-authored-by: Shelley Vohr <codebytere@github.com>
2020-02-14 15:32:13 +09:00
Shelley Vohr
89607e647d fix: crash on custom printing margins (#22186) 2020-02-13 21:03:23 +00:00
Shelley Vohr
c8e2a6261e refactor: use NSVisualEffectMaterial* constants directly (#22149) 2020-02-12 12:01:38 -05:00
trop[bot]
e9814e016b fix RTL bug when used with traffic light repositioning (#22162)
Co-authored-by: tonyfwoo <55114329+tonyfwoo@users.noreply.github.com>
2020-02-12 16:26:34 +00:00
Cheng Zhao
dc9654c03c fix: make webRequest work with WebSocket (#22134) 2020-02-12 11:44:39 +09:00
trop[bot]
fce3426675 build: fix spellchecker deps (#22154)
Co-authored-by: Alexey Kuzmin <alex.s.kuzmin@gmail.com>
2020-02-11 23:47:55 +00:00
Jeremy Apthorp
637cf8a02b fix: don't crash on invalid certs (#22124)
* test: add test for app.on('certificate-error') event (#21978)

* types

* fix: don't crash on invalid certs (#21976)
2020-02-11 23:46:40 +00:00
Alexey Kuzmin
daab432fb6 ci: strip mksnapshot binaries on Linux (#22145)
Related to #21086.
2020-02-11 13:13:10 -05:00
trop[bot]
50dac1d908 ci: fix build failure on doc only changes (#22088)
* ci: fix build failure on doc only changes

* ci: fix doc-only check when CI fires on branch before PR is created

Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
2020-02-10 17:10:07 +09:00
trop[bot]
d4f915e428 fix: flash plugin (#22110)
* fix: flash plugin

Fixes https://github.com/electron/electron/issues/20744

* cleanup

* fix linting issue

Co-authored-by: t57ser <seve@live.at>
2020-02-10 10:50:26 +09:00
trop[bot]
72bccd1305 fix: use a WeakPtr so we do not UAF the store in FunctionLifetimeMonitor (#22114)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-02-10 10:46:54 +09:00
Shelley Vohr
9439388b7b chore: wrap cb with default invocation (#22036) 2020-02-05 18:24:41 +00:00
Jeremy Apthorp
b0fee4b067 ci: fix ELECTRON_OUT_DIR (#21994) (#22019) 2020-02-05 10:30:47 +09:00
Jeremy Apthorp
7c33fc0c5c chore: rename atom -> electron (#21987) 2020-02-04 13:50:17 -08:00
Shelley Vohr
f263a3f755 fix: default printer if none is provided (#21956) (#22011) 2020-02-04 11:59:45 -05:00
Electron Bot
1af3a71fdb Bump v8.0.0 2020-02-03 13:17:36 -08:00
trop[bot]
9f2371fc4e fix: bind spellchecker receivers correctly in the renderer (#22015)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-02-03 11:48:01 -08:00
trop[bot]
f658c1aeb4 fix: use the new MediaPlayPause key listener for internal chrome logic (#21998)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-02-03 10:28:32 -08:00
Samuel Attard
c196121467 Revert "Bump v8.0.0-beta.10"
This reverts commit a326408bce.
2020-02-03 10:24:51 -08:00
Electron Bot
133ac9a323 chore: bump chromium to 80.0.3987.86 (8-x-y) (#22000)
* chore: bump chromium in DEPS to 80.0.3987.84

* chore: bump chromium in DEPS to 80.0.3987.85

* chore: bump chromium in DEPS to 80.0.3987.86
2020-02-03 11:20:30 -05:00
Electron Bot
a326408bce Bump v8.0.0-beta.10 2020-01-31 15:19:09 -08:00
Samuel Attard
2085111c43 Revert "Bump v8.0.0-beta.10"
This reverts commit 7ae8d54265.
2020-01-31 15:17:13 -08:00
Electron Bot
7ae8d54265 Bump v8.0.0-beta.10 2020-01-31 13:39:41 -08:00
Samuel Attard
c5574c8667 feat: custom positioning for traffic light buttons (#21990)
* feat: custom positioning for traffic light buttons (#21781)

* feat: custom positioning for traffic light buttons

* remove NSLog and unnecessary call-site in IsVisible()

* no longer need to check if entering fullscreen

* change API to take a point object

Co-authored-by: tonyfwoo <55114329+tonyfwoo@users.noreply.github.com>

* chore: add safety checks to RepositionTrafficLights

Co-authored-by: Tony <TonyWuu@users.noreply.github.com>
Co-authored-by: tonyfwoo <55114329+tonyfwoo@users.noreply.github.com>
2020-01-31 13:35:47 -08:00
trop[bot]
6cf8abc3b3 fix: return path from netLog.stopLogging (#21989)
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-01-31 11:22:14 -08:00
LuoJinghua
46a4864b08 feat: Exposing methods required by capturing a hidden webContents (#21895) 2020-01-31 11:21:42 -08:00
Electron Bot
7956b45323 chore: bump chromium in DEPS to 80.0.3987.82 (#21984) 2020-01-31 11:50:10 -05:00
trop[bot]
63bcbd4ff5 fix: prevent print crash on bad deviceName (#21982) 2020-01-31 16:26:19 +00:00
Electron Bot
3b5ca91a40 chore: bump chromium to 80.0.3987.79 (8-x-y) (#21953)
* chore: bump chromium in DEPS to 80.0.3987.78

* Update patches

* chore: bump chromium in DEPS to 80.0.3987.79

Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
2020-01-30 15:55:47 -05:00
Electron Bot
80282ba972 Bump v8.0.0-beta.9 2020-01-29 18:23:35 -08:00
Erick Zhao
7ddb3dd184 fix: add executable to ChromeDriver's rpath for electron 8+ (#21966) 2020-01-29 18:14:12 -08:00
trop[bot]
0cee5cc1c1 fix: ensure web_contents is not nullptr in UpdateDraggableRegions (#21965)
* fix: ensure web_contents is not nullptr in UpdateDraggableRegions

This is a speculative fix for a crash in `UpdateDraggableRegions` that we've noticed

* Update atom_api_browser_window_mac.mm

* Update atom_api_browser_window_mac.mm

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-01-29 17:43:55 -08:00
Jeremy Apthorp
048d770a0e fix: show module name in deprecation warning for context-aware modules (#21958) 2020-01-29 17:29:06 -08:00
Robo
b3fdb242f0 fix: compilation of native modules on windows with older msvc versions (#21950) (#21960) 2020-01-29 17:13:07 -08:00
Electron Bot
38d908ee6a Bump v8.0.0-beta.8 2020-01-29 11:22:54 -08:00
Alexey Kuzmin
416b850dd2 chore: fix linter errors in .mm files (#21933) 2020-01-29 17:04:14 +00:00
Erick Zhao
714e068cba refactor: try just using regular [Sync] for MessageSync (#20797) (#21948)
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-01-29 07:11:32 -05:00
trop[bot]
0a0689587a chore: update build_bring_back_node_with_ltcg_configuration.patch (#21947)
* chore: update build_bring_back_node_with_ltcg_configuration.patch

set default value for node_with_ltcg=true

* fix: move ltcg definition to Release configuration

Co-authored-by: Robo <hop2deep@gmail.com>
2020-01-28 22:42:53 -08:00
trop[bot]
83c4633b21 fix: use powerMonitor.on() only after app is ready (#21942) 2020-01-28 22:13:19 +00:00
Electron Bot
a33063c8a7 chore: bump chromium in DEPS to 80.0.3987.75 (#21932) 2020-01-28 15:15:07 -05:00
trop[bot]
c478d45713 fix: ensure tray icon is the proper size on linux (#21936) 2020-01-28 18:15:22 +00:00
trop[bot]
74686a9cb3 fix: About Panel credits should be dark mode aware (#21926)
* fix: about panel credits should be dark mode aware

* use textColor for automatic adaptability

Co-authored-by: Shelley Vohr <codebytere@github.com>
2020-01-28 17:05:04 +09:00
Shelley Vohr
473a90f99f fix: window.print() only working once (#21908) 2020-01-28 02:11:05 +00:00
trop[bot]
15e9f22fda docs: clean up context bridge API docs (#21917) 2020-01-28 02:01:44 +00:00
Electron Bot
ee44155f7a chore: bump chromium to 80.0.3987.74 (8-x-y) (#21886) 2020-01-27 23:08:46 +00:00
Shelley Vohr
bf64b34475 fix: recursive printing crash (#21905) 2020-01-27 21:18:02 +00:00
trop[bot]
26dbd2218e fix: menu not updating with Tray.setContextMenu (#21902)
Co-authored-by: Cheng Zhao <zcbenz@github.com>
2020-01-27 15:48:02 +09:00
trop[bot]
38e46abf0b Update browser-window.md (#21901)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-01-27 14:56:03 +09:00
Electron Bot
67f7bf4a23 chore: bump chromium to 80.0.3987.69 (8-x-y) (#21863)
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-01-23 10:38:06 -08:00
trop[bot]
02f040c765 docs: added info on bookmark return values for securityScopedBookmarks (#21874) 2020-01-22 18:37:32 -08:00
trop[bot]
9b841e4594 fix: Windows checkboxChecked edge case (#21861) 2020-01-22 18:36:03 -08:00
trop[bot]
a40957f2bc fix: some websites using WebComponents V0 not loading (#21866)
Co-authored-by: Shelley Vohr <codebytere@github.com>
2020-01-23 09:38:21 +09:00
trop[bot]
a6121f527c fix: call SetCanActivate in setFocusable (#21854)
Co-authored-by: Cheng Zhao <zcbenz@github.com>
2020-01-22 14:45:27 +09:00
Cheng Zhao
71a31d553f fix: crash when doing redirect navigation with webRequest listener (8-x-y) (#21841)
* fix: pass navigation_ui_data to proxying factory

* fix: clone response instead of move in redirect
2020-01-22 10:31:19 +09:00
Electron Bot
1a309fd55f chore: bump chromium in DEPS to 80.0.3987.64 (#21848) 2020-01-21 11:41:13 -08:00
Electron Bot
73527e54c5 chore: bump chromium to 80.0.3987.63 (8-x-y) (#21832) 2020-01-20 19:09:53 +00:00
trop[bot]
2ef0827767 fix: crash when restoring minimized hidden window (#21821)
Co-authored-by: Cheng Zhao <zcbenz@github.com>
2020-01-20 15:43:32 +09:00
Electron Bot
76bcab07e6 chore: bump chromium in DEPS to 80.0.3987.61 (#21826) 2020-01-18 17:45:23 +00:00
Electron Bot
5a5b6abd2c chore: bump chromium in DEPS to 80.0.3987.60 (#21817) 2020-01-17 10:27:43 -08:00
Electron Bot
4ce5a48076 Bump v8.0.0-beta.7 2020-01-16 09:55:43 -08:00
Electron Bot
7b61e6044a chore: bump chromium in DEPS to 80.0.3987.59 (#21800) 2020-01-16 12:08:28 -05:00
trop[bot]
048f06c7f5 feat: add session.addWordToSpellCheckerDictionary to allow custom words in the dictionary (#21297)
* feat: add session.addWordToSpellCheckerDictionary to allow custom words in the dictionary

* Update session.md

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-01-16 09:47:58 -05:00
trop[bot]
06868c938f fix: printToPDF failing to generate PDF (#21797)
Co-authored-by: Shelley Vohr <codebytere@github.com>
2020-01-16 09:39:26 -05:00
Electron Bot
22e8fc6379 chore: bump chromium in DEPS to 80.0.3987.58 (#21789) 2020-01-15 19:04:45 -05:00
trop[bot]
427c139eff fix: pass full response headers in net module (#21769)
* fix: pass full response headers in net module

* chore: put helper classes in annoymouse namespace

* fix: use hasOwnProperty to test key

* chore: shorter class name

Co-authored-by: Cheng Zhao <zcbenz@github.com>
2020-01-15 13:38:09 +09:00
Electron Bot
6a881520ee chore: bump chromium in DEPS to 80.0.3987.55 (#21765) 2020-01-14 06:56:22 -08:00
trop[bot]
5a2c451c0b fix: stream protocols not completing (#21759)
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-01-14 16:09:46 +09:00
Robo
f47fbccf1a Fix memory leak in generator functions (#21760)
Backports https://chromium-review.googlesource.com/c/v8/v8/+/1967317
2020-01-14 16:08:41 +09:00
Electron Bot
eb419946ad Bump v8.0.0-beta.6 2020-01-13 10:25:18 -08:00
Electron Bot
1b204a4369 chore: bump chromium to 80.0.3987.51 (8-x-y) (#21738)
* chore: bump chromium in DEPS to 80.0.3987.49

* chore: bump chromium in DEPS to 80.0.3987.50

* chore: bump chromium in DEPS to 80.0.3987.51
2020-01-13 13:13:02 -05:00
Cheng Zhao
ee2de310f5 fix: disable private macOS APIs in MAS build except for CAContext/CALayerHost (8-x-y) (#21574)
* fix: add patch to disable remote accessibility APIs

* fix: add patch to disable private window frame APIs
2020-01-13 09:06:13 -05:00
trop[bot]
e81aa83a14 fix: don't fallback to OpenFolderViaShell (#21748)
Co-authored-by: Shelley Vohr <codebytere@github.com>
2020-01-13 14:56:19 +09:00
trop[bot]
96cae44f32 fix: prefer occluded rather than unloading layout info (#21751)
Co-authored-by: loc <andy@slack-corp.com>
2020-01-13 14:55:05 +09:00
Milan Burda
757e7a91a9 fix: load window-setup in sandboxed renderer (#21416) (#21431) 2020-01-13 11:04:10 +09:00
trop[bot]
6faef05095 docs: responseHeaders should be Record<string, string[]> (#21743)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2020-01-13 09:51:59 +09:00
Shelley Vohr
ee65a190fa chore: deprecate visibleOnFullScreen option (#21732) 2020-01-13 09:48:16 +09:00
trop[bot]
da45f0341a fix: avoid contextBridge double free on garbage collection (#21735)
* fix: reset next/prev pointers for life-monitored nodes

* fix: don't double-delete nodes in a linked list

Co-authored-by: loc <andy@slack-corp.com>
2020-01-10 16:56:40 -08:00
Electron Bot
c6517c0b7f chore: bump chromium in DEPS to 80.0.3987.48 (#21728) 2020-01-10 11:47:38 -08:00
trop[bot]
2c92573978 fix: don't unnecessarily copy draggable regions (#21722) 2020-01-10 09:09:26 -08:00
trop[bot]
fa7326af64 fix: Notification crash in before-quit (#21720) 2020-01-10 09:08:24 -08:00
Electron Bot
aca96553fc chore: bump chromium to 80.0.3987.47 (8-x-y) (#21651)
* chore: bump chromium in DEPS to 80.0.3987.32

* chore: bump chromium in DEPS to 80.0.3987.33

* chore: bump chromium in DEPS to 80.0.3987.34

* chore: bump chromium in DEPS to 80.0.3987.36

* chore: bump chromium in DEPS to 80.0.3987.37

* chore: bump chromium in DEPS to 80.0.3987.38

* chore: bump chromium in DEPS to 80.0.3987.39

* chore: bump chromium in DEPS to 80.0.3987.40

* chore: bump chromium in DEPS to 80.0.3987.43

* chore: bump chromium in DEPS to 80.0.3987.47
2020-01-09 08:22:19 -08:00
trop[bot]
37592cdaee refactor: throw error for getLastCrashReport if crashReporter not started (#21685) 2020-01-07 09:15:50 -05:00
trop[bot]
64e48ad0e6 fix: SimpleURLLoaderWrapper redirects (#21566) (#21644) 2020-01-01 09:31:38 +09:00
trop[bot]
68566583f0 fix: highlight defaulted button correctly (#21653) 2019-12-31 08:42:07 -08:00
Electron Bot
6a56aa2240 chore: bump chromium to 80.0.3987.31 (8-x-y) (#21557)
* chore: bump chromium in DEPS to 80.0.3987.16

* chore: bump chromium in DEPS to 80.0.3987.18

* chore: bump chromium in DEPS to 80.0.3987.20

* chore: bump chromium in DEPS to 80.0.3987.21

* chore: bump chromium in DEPS to 80.0.3987.22

* chore: bump chromium in DEPS to 80.0.3987.23

* chore: bump chromium in DEPS to 80.0.3987.24

* chore: bump chromium in DEPS to 80.0.3987.25

* chore: bump chromium in DEPS to 80.0.3987.26

* chore: bump chromium in DEPS to 80.0.3987.27

* chore: bump chromium in DEPS to 80.0.3987.28

* chore: bump chromium in DEPS to 80.0.3987.29

* chore: bump chromium in DEPS to 80.0.3987.30

* chore: bump chromium in DEPS to 80.0.3987.31
2019-12-30 08:53:24 -08:00
trop[bot]
7e8c1108e0 fix: set enable_negotiate_port to false in allowNTLMCredentialsForDomains (#21580)
* fix: set enable_negotiate_port to false in allowNTLMCredentialsForDomains

* read commandline switch

Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2019-12-19 19:26:46 -08:00
trop[bot]
f5ce5f8218 build: free up macos disk space on Mac publish (#21570) 2019-12-18 16:40:09 -08:00
Electron Bot
28e44b31ca Bump very far --> this is electron bot fixing the release 2019-12-18 14:04:34 -08:00
Samuel Attard
606ca98df0 build: handle origin/X branch formats 2019-12-18 14:02:38 -08:00
Electron Bot
acd2eabdfd Bump v8.0.0-beta.5 2019-12-17 16:05:21 -08:00
Shelley Vohr
07972c2892 Revert "Bump v8.0.0-beta.6"
This reverts commit 70079d1c8a.
2019-12-17 15:47:28 -08:00
Electron Bot
70079d1c8a Bump v8.0.0-beta.6 2019-12-17 15:16:32 -08:00
trop[bot]
4def69876f fix: enforce parent-child relationship in custom postMessage() handler (#21512) 2019-12-17 15:08:36 -08:00
John Kleinschmidt
61a2c7bd16 Revert "Bump v8.0.0-beta.5"
This reverts commit 6c1eb46f68.
2019-12-17 13:52:56 -08:00
Shelley Vohr
f53262d58f fix: MediaKey globalShortcuts not working on macOS (#21547) 2019-12-17 13:36:47 -08:00
trop[bot]
8c15619905 docs: update webContents.printToPDF() example for promisified API (#21549) 2019-12-16 21:29:03 -08:00
trop[bot]
4a66bed930 refactor: export internalWindowOpen from guest-window-manager (#21530) 2019-12-16 13:55:17 -08:00
trop[bot]
8dabb3fe33 docs: update installation docs to reflect latest @electron/get changes (#21540) 2019-12-16 13:53:43 -08:00
Electron Bot
3f88934025 chore: bump chromium to 80.0.3987.14 (8-x-y) (#21520)
* chore: bump chromium in DEPS to 80.0.3987.12

* chore: bump chromium in DEPS to 80.0.3987.13

* chore: bump chromium in DEPS to 80.0.3987.14
2019-12-16 12:43:29 -05:00
trop[bot]
296dcc3405 fix: avoid contextBridge crash when RenderFrame address is reused (#21513)
* fix: avoid contextBridge crash when RenderFrame address is reused

Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net>

* make routing_id_ const
2019-12-16 11:01:20 +09:00
trop[bot]
5f6de7053a fix: quit after Chromium is fully started (#21507)
* fix: quit when chromium is fully started

* test: remove hacks on app.quit

* chore: RunUntilIdle is unnecessary
2019-12-16 09:45:45 +09:00
Electron Bot
6c1eb46f68 Bump v8.0.0-beta.5 2019-12-14 08:10:53 -08:00
Electron Bot
05cde0d945 chore: bump chromium to 80.0.3987.6 (8-x-y) (#21061) 2019-12-13 12:13:29 -08:00
trop[bot]
696c94c08a fix: sourcemaps not loading with network service (#21493)
Backports https://chromium-review.googlesource.com/c/chromium/src/+/1525270
Backports https://chromium-review.googlesource.com/c/chromium/src/+/1852212
2019-12-12 18:55:44 -08:00
trop[bot]
4284691cb3 fix: avoid Electron.dsym files in the main app bundle (#21484)
* ci: CHECK_DIST_MANIFEST in release builds

* fix: skip Electron.dSYM on macOS app zip
2019-12-11 13:16:56 -08:00
trop[bot]
2ab56802cb fix: restore POST forms that open a new window with target=_blank (#21474)
* fix: restore parts of original ResourceRequestBody V8 conversion

Restore some of the original conversion logic in order to fix target=_blank post form submissions.

* test: add test for POST form submission
2019-12-11 19:36:01 +09:00
Cheng Zhao
353d12b231 fix: name and expirationDate should be optional when setting cookie (#21454) (#21477)
* fix: correctly set cookie date

* fix: name is not required for setting cookie

* test: clear cookie after each cookie test

* test: should test session property

* chore: style fixes
2019-12-11 19:34:23 +09:00
trop[bot]
cbd734faf9 fix: restore accessibility window title on macOS (#21467)
Electron's `AtomNSWindow` implements `accessibilityAttributeValue` to
provide various accessibility info to the OS, including window titles.

Chromium 75 changed to Apple's newer accessibility API for window titles
in the super class that `AtomNSWindow` inherits from. macOS still
supports both the old and new style APIs, but it will prefer the new
style if it is implemented.  This means the Electron window title is
being ignored because the newer API at the Chromium level has taken
precedence.

By implementing the newer accessibility API in `AtomNSWindow`, this
restores correct accessibility window titles in macOS Electron apps.

This is a regression has been present since Electron 6.0.0 (the first
release including the Chromium change above).
2019-12-10 18:45:18 -08:00
trop[bot]
cf282c177f fix: window menu should handle keys correctly (#21452) 2019-12-10 10:08:15 -08:00
trop[bot]
e8c8afb1b4 fix: Fix compositor recycling when creating new BrowserView (#21399)
In #20829, we fixed compositor recycling when switching between
BrowserViews, but it turns out that there is one additional case that we
need to handle. When we create a completely new BrowserView instance, it
starts of as visible (even when it hasn't been added to the window),
which means that it will need its own compositor instead of using the
recycled compositor.

To fix this, lets make BrowserViews hidden by default until they're
added to the window. See also #19988. This is a potentially breaking
change given that the initial value of `document.visibilityState` will
now be `hidden`, but given the experimental status of BrowserViews, I
think this is a fine change to make. The old behavior can be restored
with `webPreferences: { show: true }`.

Notes: Fix compositor recycling when creating new BrowserView
2019-12-10 10:05:10 +09:00
trop[bot]
dd0d06448c fix: hiding window menu should work on startup (#21443)
* fix: menu visibility should not be overwritten on startup

* fix: removing menu for window without global menubar

* test: setMenu tests are not for mac
2019-12-10 09:29:00 +09:00
trop[bot]
3527fdc291 chore: workflows and pipeline state were split in the circle API (#21444) 2019-12-09 11:32:55 -08:00
trop[bot]
a6b9d68897 fix: fix ClientRequest.getUploadProgress (#21424) 2019-12-09 11:18:39 -08:00
trop[bot]
e1e7ec737f fix: pass noLink correctly on Windows (#21405) 2019-12-08 10:39:35 -08:00
trop[bot]
4fd03f59f4 docs: fix return type of getPrinters (#21421) 2019-12-08 10:38:17 -08:00
trop[bot]
e64e0f00ca fix: do not use messages after move (#21420) 2019-12-06 14:41:29 -08:00
trop[bot]
1bfead2f6b fix: ensure persistence store still exists when GC runs (#21418)
Fix a bad access crash that happens when a render frame is deleted (window closed) and garbage collection runs afterward.
2019-12-06 12:35:32 -08:00
Jacob
c79f1ee720 fix: prevent silent failure when DOM storage quota exceeded (#20899) (#21380)
* test: update DOM storage quota limits test

* fix: update dom_storage_limits.patch (fixes #13465)

The previous version of this patch did not include
changes required to circumvent the quota enforcement
performed by StorageAreaImpl. Consequently when
the quota was exceeded, things still "appeared to
work" at first but then would later fail silently.
That is, the cache would be updated but the backing
store would not.

This could be fixed by disabling the code below
(from `content/browser/dom_storage/storage_area_impl.cc`)
```
  // Only check quota if the size is increasing, this allows
  // shrinking changes to pre-existing maps that are over budget.
  if (new_item_size > old_item_size && new_storage_used > max_size_) {
    if (map_state_ == MapState::LOADED_KEYS_ONLY) {
      receivers_.ReportBadMessage(
          "The quota in browser cannot exceed when there is only one "
          "renderer.");
    } else {
      std::move(callback).Run(false);
    }
    return;
  }
```

However, since this seems to have some unintended side-effects
(see updated notes in dom_storage_limits.patch) it seems
more prudent to simply increase the quota to a larger
yet still reasonable size rather than attempt to circumvent
the storage quota altogether.
2019-12-04 12:27:43 -08:00
trop[bot]
e18c369e4a fix: deprecate setLayoutZoomLevelLimits (#21360) 2019-12-04 08:46:15 -08:00
trop[bot]
1953ab3bf2 chore: remove unused shell/common/crash_reporter/win/crash_service.cc (#21376) 2019-12-04 16:40:40 +09:00
Electron Bot
d998bf9fed Bump v8.0.0-beta.4 2019-12-03 16:37:39 -08:00
Electron Bot
40eff3a778 Revert "Bump v8.0.0-beta.4"
This reverts commit 9dd089fc56.
2019-12-03 16:17:17 -08:00
Electron Bot
9dd089fc56 Bump v8.0.0-beta.4 2019-12-03 16:11:22 -08:00
Electron Bot
5e2bd0e55f Revert "Bump v8.0.0-beta.4"
This reverts commit 95b8be4cc4.
2019-12-03 13:31:30 -08:00
Electron Bot
95b8be4cc4 Bump v8.0.0-beta.4 2019-12-03 13:28:04 -08:00
Jeremy Apthorp
d48f99fd6e ci: generate debug symbols on Linux (#21278)
* ci: generate debug symbols on Linux (#18676)

* kick ci
2019-12-03 11:03:51 -05:00
trop[bot]
3a9b934cc5 fix: backgroundThrottling rwh assignment (#21358)
* fix: backgroundThrottling rwh assignment

* fix: disable DOM timer throttling

* chore: fix typo
2019-12-02 15:42:44 -08:00
Electron Bot
768f372675 Revert "Bump v8.0.0-beta.4"
This reverts commit 9e3f0d5190.
2019-12-02 13:55:49 -08:00
Electron Bot
9e3f0d5190 Bump v8.0.0-beta.4 2019-12-02 13:53:37 -08:00
Electron Bot
5a297f409f Revert "Bump v8.0.0-beta.4"
This reverts commit 57335cea69.
2019-12-02 12:32:55 -08:00
Electron Bot
57335cea69 Bump v8.0.0-beta.4 2019-12-02 12:30:44 -08:00
trop[bot]
3331f51571 fix: ensure no node globals passively leak when nodeIntegration is disabled (#21355) 2019-12-02 12:27:51 -08:00
Robo
f122268ca8 fix: focus with OOPIF embedded inside <webview> (#21343)
Backports https://chromium-review.googlesource.com/c/chromium/src/+/1922650
2019-12-02 10:26:35 -08:00
Robo
bfc817fd28 build: fix building with enable_builtin_spellchecker = false (#21334) (#21341) 2019-11-30 16:22:50 -08:00
trop[bot]
2bd83d0e89 fix: correctly plumb checkboxChecked on win (#21312)
* fix: correctly plumb checkboxChecked on win

* address final style comment
2019-11-29 17:23:43 +09:00
Jeremy Apthorp
f29f3418ed refactor: rewrite the net module to simplify state tracking (#21303)
* refactor: rewrite the net module to simplify state tracking (#21244)

* fix build

* Update atom_api_net.cc
2019-11-29 17:22:45 +09:00
trop[bot]
c87a0077dd build: disable strip_absolute_paths_from_debug_symbols on debug.gn (#21316) 2019-11-29 17:22:17 +09:00
Jeremy Apthorp
23c1dcea46 fix: restore --ignore-connections-limit functionality (#21286) (#21298) 2019-11-27 16:41:44 +09:00
Samuel Attard
41e64d2469 chore: add deprecation warning for the default of allowRendererProcessReuse (#21287)
* chore: add deprecation warning for the default of allowRendererProcessReuse

* Update web-contents.js
2019-11-26 15:48:35 -08:00
Jeremy Apthorp
5fdc24d3bf fix: record cpu_profiler data for main process (#21187) (#21276)
* fix: record cpu_profiler data for main process

* kick ci
2019-11-26 13:20:15 -08:00
Samuel Attard
64dc86c8c2 fix: allow reading body from non-2xx responses in net.request (#21055) (#21285)
* fix(urlrequest): allow non-2xx repsponse results

- closes #21046

* test(net): add test cases to verify non-2xx body

* test(session): update spec to match clientrequest behavior

* test(net): update test cases to match clientrequest behavior

* spec: clean up async net spec
2019-11-26 13:10:07 -08:00
Jeremy Apthorp
9d1ec6b0eb fix: implement 'login' event for net.ClientRequest (#21133)
* fix: implement 'login' event for net.ClientRequest (#21096)

* lint

* more lint

* whoops forgot patch

* fix compile

* fix ts

* i swear to god i already fixed this

* ugh

* asfdsafd

* disambiguate callback converter (i hope)

* Update atom_api_url_request_ns.cc

* use gin, not mate
2019-11-26 11:32:28 -08:00
trop[bot]
8919480ebc fix: reloadIgnoringCache() should ignore the cache (#21283) 2019-11-25 12:51:02 -08:00
trop[bot]
bb9e68beee fix: add missing early return (#21282) 2019-11-25 12:50:52 -08:00
trop[bot]
88c1f2caf7 feat: expose executeJavaScriptInIsolatedWorld on webContents (#21267)
* feat: expose executeJavaScriptInIsolatedWorld on webContents

* Apply suggestions from code review

Co-Authored-By: loc <andy@slack-corp.com>
2019-11-22 20:44:39 -08:00
Shelley Vohr
88375be2b2 fix: conversion of NativeImage from path (#21241) 2019-11-22 10:26:13 -08:00
trop[bot]
2aa69505f9 docs: remove string literal type from window events (#21245) 2019-11-21 14:50:02 -08:00
Electron Bot
e78fe7c8da Bump v8.0.0-beta.3 2019-11-20 11:24:28 -08:00
trop[bot]
7a7b944c74 build: update release build endpoint from /jobs to /job (#21233) 2019-11-20 14:23:13 -05:00
Electron Bot
09f5a2b741 Revert "Bump v8.0.0-beta.3"
This reverts commit cbf50eabd9.
2019-11-20 11:16:26 -08:00
Electron Bot
cbf50eabd9 Bump v8.0.0-beta.3 2019-11-20 11:14:52 -08:00
trop[bot]
90a74139c1 build: delete unneeded files when running a release (#21230)
* build: delete unneeded files when running a release

Needed to free up disk space on MacOS.

* Delete all the .git directories

* Update comment

* Run gn gen after deleting .git dirs
2019-11-20 14:04:25 -05:00
Cheng Zhao
3a6cc1b786 fix: menu should not be garbage-collected when popuping (8-x-y) (#21224)
* fix: retain menu when popuping

* test: menu should not be garbage-collected when popuping
2019-11-20 11:19:21 -05:00
trop[bot]
f5fde13b14 spec: skip flaky <webview>.capturePage() test on Windows (#21212) 2019-11-20 11:00:52 -05:00
John Kleinschmidt
c6d429d533 Revert "Bump v8.0.0-beta.3"
This reverts commit 269f4ba2bb.
2019-11-19 16:53:29 -05:00
Charles Kerr
73df925241 docs: document webkitdirectory breaking change (#21209) 2019-11-19 15:31:06 -05:00
Electron Bot
269f4ba2bb Bump v8.0.0-beta.3 2019-11-19 11:41:06 -08:00
Electron Bot
9b304beb54 Revert "Bump v8.0.0-beta.3"
This reverts commit 5ffad09e91.
2019-11-19 11:34:24 -08:00
Electron Bot
5ffad09e91 Bump v8.0.0-beta.3 2019-11-19 11:32:01 -08:00
John Kleinschmidt
b694315cd3 Revert "Bump v8.0.0-beta.3" (#21207)
This reverts commit 7fe2f25341.
2019-11-19 14:21:25 -05:00
trop[bot]
8566315902 fix: allow chromium to handle WM_NCCALCSIZE for frameless windows (#21201) 2019-11-19 14:18:50 -05:00
trop[bot]
cd94ab9de3 build: use python3 to download external binaries (#21202)
* build: use python3 to download external binaries

* Update config.py
2019-11-19 08:40:51 -08:00
trop[bot]
09ebadaf5b build: use symbol_level 1 for 32bit linux releases (#21204)
* build: use symbol_level 1 for 32bit linux releases

* Add comment
2019-11-19 08:14:34 -08:00
trop[bot]
990189ab35 fix: stream protocols sometimes flake out (#21180) 2019-11-19 06:31:07 -08:00
trop[bot]
049e536c5f docs: fix isMactemplateImage type definition (#21182) 2019-11-18 21:04:01 -08:00
Electron Bot
7fe2f25341 Bump v8.0.0-beta.3 2019-11-18 10:41:07 -08:00
Charles Kerr
c79809ddb9 build: missing include in windows release builds (#21132)
* fix: add missing `#include <algorithm>` as needed

Manual backport of #21045

* fix: add missing `#include <algorithm>` as needed

Manual backport of #21045

* chore: add patch to include missing `#include <memory>`

* chore: add another `#include <memory>` needed

* chore: regenerate patches w/correct breakpad root

* chore: regenerate breakpad include failure patches

* refactor: use --keep-cr in the git am patch script

We need something like this to patch files that have crlf endings. See
https://stackoverflow.com/questions/6289001/git-am-format-patch-control-format-of-line-endings

* chore: regenerate node patches

The udpated crlf support in git-{import,export}-patches caused a new
warning when applying patches from `electron/patches/nodes`, so refresh
the patches.

* chore: no need to regenerate node patches

* chore: silence whitespace warnings

* chore: fix FTBFS from stl features used but not included

* fixup! refactor: use --keep-cr in the git am patch script
2019-11-18 10:39:59 -08:00
Robo
b3edf86914 fix: incorrect size of windows on differently scaled monitors (#21139)
* Revert "fix: handle WM_GETMINMAXINFO instead of letting chromium do it (#19928)"

This reverts commit 27ce6a9cd3.

* fix: don't reset the width and height when correcting window placement
2019-11-15 09:28:47 -08:00
John Kleinschmidt
7044122f5d chore: Reset version for 8-x-y (#21134)
* Revert "Bump v8.0.0-beta.4"

This reverts commit 2560776888.

* Revert "Bump v8.0.0-beta.3"

This reverts commit d5d5fef931.
2019-11-14 16:34:57 -08:00
Jeremy Apthorp
b7bcce9576 fix: implement login event for WebContents (#21098)
* fix: implement login event for WebContents

* fix gin header path

* use mate

* correct path to native_mate/dictionary.h

* use BindRepeating bc apparently no BindOnce converter...?
2019-11-14 16:18:28 -08:00
Electron Bot
2560776888 Bump v8.0.0-beta.4 2019-11-14 10:20:46 -08:00
Electron Bot
d5d5fef931 Bump v8.0.0-beta.3 2019-11-14 09:50:16 -08:00
Cheng Zhao
6b158872fc fix: webRequest should be able to modify CORS headers (#21099) (#21122) 2019-11-14 12:45:25 -05:00
Andrew MacDonald
a4ef2d4356 feat: add app.getApplicationNameForProtocol API (#20399) (#21117)
* Add GetApplicationNameForProtocol.

* Fix Windows implementation.

* Fix up test.

* Add documentation.

* Implement for real on Linux using xdg-mime.

Also ensure we allow blocking calls here to avoid errant DCHECKing.

* Improve docs for Linux.

* Clean up tests.

* Add a note about not relying on the precise format.

* Update docs/api/app.md

Co-Authored-By: Shelley Vohr <codebytere@github.com>

* Remove needless `done()`s from tests.

* Use vector list initialization.

* Add a simple test for isDefaultProtocolClient.

* Remove unneeded include and skip a test on Linux CI.

* We no longer differentiate between CI and non-CI test runs.
2019-11-14 12:38:54 -05:00
Milan Burda
14cc902ad8 feat: add 'screen' to systemPreferences.getMediaAccessStatus() (#21116) 2019-11-14 15:15:24 +00:00
Milan Burda
a62a367b9f fix: NativeImage serialization of <webview>.capturePage() result (#21103)
* refactor: add Error to isSerializableObject() (#20886)

* fix: NativeImage serialization of <webview>.capturePage() result (#20825)
2019-11-14 10:36:22 +00:00
Shelley Vohr
8d67f16512 fix: refactor printing for mojo (#21059) 2019-11-13 17:43:38 +00:00
loc
59cb78e9aa fix: allow iframe-initiated HTML fullscreen to exit while in macOS fullscreen (8-x-y) (#21042)
* fix: explicitly resize the contents when exiting html fullscreen while in OS fullscreen

* test: ensure HTML fullscreen toggles while in OS fullscreen
2019-11-13 14:33:31 +09:00
Samuel Attard
032552df57 build: depend on chromium version not SHA (#20839) 2019-11-08 16:35:10 -08:00
trop[bot]
1913926ebc feat: deprecate <webview>.getWebContents() (#21039) 2019-11-07 15:31:54 -05:00
trop[bot]
dc979388ba fix: check for validity of guest webcontents (#21035) 2019-11-07 13:37:14 -05:00
trop[bot]
bcabc25b93 fix: Fix broken globalShortcuts.registerAll() on non-macOS platforms (#20984)
This was a regression in #16125, which unintentionally put
`GlobalShortcutListener::RegisterAccelerator` into a
`#if defined(OS_MACOSX)` block.

Notes: Fix broken `globalShortcut.registerAll()` on Windows and Linux
2019-11-06 23:01:51 -08:00
trop[bot]
ab6d22c958 docs: fix win.setIcon ts type (#20981)
* docs: fix win.setIcon ts type

* test: update smoke tests
2019-11-06 16:25:26 -08:00
trop[bot]
806925ee79 fix: proper i18n of recentDocuments item (#20956) 2019-11-06 13:57:42 -08:00
Samuel Attard
a46b50fc7b fix: correctly emplace optional values in the value converter (#20985)
* fix: correctly emplace optional values in the value converter

* chore: replace optional with nullopt when the conversion failed
2019-11-06 10:34:29 -08:00
trop[bot]
517a5915d7 chore: emit the document-start and document-end events in a sandboxed renderer (#20992) 2019-11-05 19:25:10 -08:00
trop[bot]
1de38af8cc chore: upgrade ts generator for better type safety (#20976)
* chore: upgrade ts generator for better type safety

* spec: fix tests
2019-11-05 15:20:08 -08:00
trop[bot]
66a95db3df docs: update installation instructions for proxies (#20979) 2019-11-05 13:45:14 -08:00
trop[bot]
7b779c6e6a fix: cannot access nativeTheme via electron.remote (#20953) 2019-11-04 16:00:28 -08:00
trop[bot]
429dfd7054 fix: don't export __esModule = true by electron.ts (#20952) 2019-11-04 16:00:03 -08:00
Samuel Attard
03f7a85cfb fix: capture the promise global to avoid userland mutation (#20925) (#20946) 2019-11-04 15:58:28 -08:00
trop[bot]
2d2a753dd9 fix: don't copy tray image when it's set (#20936) 2019-11-04 14:17:18 -08:00
trop[bot]
028e3889f0 fix: use Unicode version of ShellExecute() in OpenExternalOnWorkerThread() (#20906) 2019-11-01 18:25:29 -07:00
trop[bot]
47eb123649 build: lengthen wait times and retries for CircleCI releases (#20894)
* build: lengthen wait times and retries for CircleCI releases

* Review suggestions

* build: allow CircleCI timeout and retry to be set via env variables (#20896)

* build: allow circleci timeout and retry to be set via env variables

* check for more statuses and run indefinitely

(cherry picked from commit 4240017cb6)
2019-11-01 14:17:24 -04:00
trop[bot]
45ab098079 build: enable sccache on windows (#20898)
* build: enable sccache on windows

* chore: temporarily disable the docs only check

* build: fix escaping in sccache path on windows

* Update appveyor.yml

* Update appveyor.yml

* Use sccache settings from CI

* Use Azure enabled sccache for Windows
2019-11-01 11:46:10 -04:00
Electron Bot
6cfc05ded2 Bump v8.0.0-beta.2 2019-10-31 14:37:20 -07:00
Samuel Attard
40e0e8e499 feat: enable builtin spellchecker (#20897)
* feat: enable builtin spellchecker (#20692)

* chore: add code required to use chromes spellchecker

* chore: fix linting

* chore: manifests needs buildflags now

* chore: add dictionarySuggestions to the context menu event when the spellchecker is active

* chore: enable by default for windows builds

* chore: add patch to remove incognito usage in the spellchecker

* chore: add dependencies on spellcheck common and flags

* chore: conditionally include spell check panel impl

* chore: fix deps for spellcheck feature flags

* chore: add patch for electron resources

* chore: add dependency on //components/language/core/browser

* chore: patches to make hunspell work on windows

* build: collect hunspell dictionaries into a zip file and publish

* chore: clean up patches

* chore: add docs and set spell checker url method

* chore: fix error handling

* chore: fix hash logic

* build: update hunspell filename generator

* fix: default spellchecker list to the current system locale if we can

* docs: document the language getter

* chore: patch IDS_ resources for linux builds

* feat: add spellcheck webpref flag to disable the builtin spellchecker

* chore: fix docs typo

* chore: clean up spellchecker impl as per feedback

* remove unneeded deps

* chore: disable spellcheck by default in web prefs
2019-10-31 14:35:38 -07:00
trop[bot]
beff8b8b51 docs: clean up performance checklist formatting (#20888)
* docs: fix list formatting in performance checklist

* docs: remove unused link ref
2019-10-31 09:52:36 -07:00
trop[bot]
311723396a fix: swapped labels on open/save gtkdialog (#20883) 2019-10-31 08:42:37 -07:00
trop[bot]
d39d75321a build: do not try to run non existent VSTS release builds (#20878) 2019-10-31 10:53:44 -04:00
Birunthan Mohanathas
55201d7db6 fix: Disable compositor recycling only for attached views (8-x-y) (#20847)
Backport of #20829

Notes: Fix flicker when switching between `BrowserView`s
2019-10-30 16:52:33 -04:00
trop[bot]
ac46d5b16e fix: devtools extensions not loading (#20842) 2019-10-30 09:16:32 -07:00
Milan Burda
a1fb069624 fix: pass frameId to v8Util.setRemoteCallbackFreer() (#20732) (#20813) 2019-10-30 14:35:18 +09:00
trop[bot]
3aa33dd220 fix: do not DCHECK production-necessary methods (#20836) 2019-10-29 14:49:12 -07:00
trop[bot]
9b74d0d54a fix: properly generate requestID in webContents.printToPDF() (#20802) 2019-10-29 15:39:41 +09:00
trop[bot]
018fc2ca46 fix: deprecation warnings in Electron code (#20805) 2019-10-29 15:38:25 +09:00
trop[bot]
e286b78df7 docs: the ipc main listener being removed can have args (#20807) 2019-10-29 15:34:44 +09:00
Shelley Vohr
f77bd19a70 fix: prevent menu gc during popup (#20785) 2019-10-29 13:21:08 +09:00
trop[bot]
cff63d32a0 chore: fix formatting of a few Python files (#20778) 2019-10-28 15:36:53 -04:00
trop[bot]
a8e7696674 ci: skip build on doc only changes (#20717)
* ci: skip build on doc only changes

* Try using exit codes on doc-only-change

* Fixup

* Fixup circleci doc-only check

* Update appveyor.yml

Co-Authored-By: Samuel Attard <sattard@slack-corp.com>

* Properly detect doc only change on Windows

* Flip exit code per review

* build: fix doc only change when there isn't a PR (#20749)

* build: fix doc only change when there isn't a PR

Fixes issue where CI was mistakenly marking a PR as a doc only change because the CI was kicked off before the PR was created.

(cherry picked from commit 73da4b7215)
2019-10-28 11:14:50 -04:00
trop[bot]
5fc689dc4e docs: fix process.getSystemVersion() type (#20767) 2019-10-27 11:21:00 -07:00
Electron Bot
895bdc0ee0 Bump v8.0.0-beta.1 2019-10-24 12:05:38 -07:00
Electron Bot
c99f1d317e Revert "Bump v8.0.0-beta.1"
This reverts commit 315e3e325d.
2019-10-23 16:07:43 -07:00
Electron Bot
315e3e325d Bump v8.0.0-beta.1 2019-10-23 16:04:33 -07:00
Samuel Attard
8acce4279b Revert "Bump v8.0.0-beta.1"
This reverts commit c8943cdc3c.
2019-10-23 16:03:04 -07:00
Electron Bot
c8943cdc3c Bump v8.0.0-beta.1 2019-10-23 13:15:01 -07:00
trop[bot]
f74f009648 build: handle -x-y format for getCurrentBranch (#20711) 2019-10-23 13:03:50 -07:00
John Kleinschmidt
467409458e build: add support for automated minor releases (#20620)
* build: add support for automated minor releases

* Add test for minor bump
2019-10-23 11:07:09 -07:00
Sofia Nguy
f5e5bcd943 [WIP] docs: update electron 8.0 dates (#20621) 2019-10-23 12:39:47 -04:00
Shelley Vohr
db4d01c517 refactor: move CompileAndCall to a helper (#20675) 2019-10-23 09:26:32 -07:00
Shelley Vohr
5abce7ec08 fix: call InitializeContextRuntime in InitializeContext (#20684) 2019-10-23 09:25:14 -07:00
Electron Bot
18907389da Bump v8.0.0-nightly.20191023 2019-10-23 08:32:02 -07:00
Milan Burda
ba8f80267c fix: send ELECTRON_BROWSER_CONTEXT_RELEASE asynchronously (#20632)
* fix: send ELECTRON_BROWSER_CONTEXT_RELEASE asynchronously

* test: remote references should be able to be cleared for all cases
2019-10-23 13:44:21 +09:00
Jeremy Apthorp
2abea22b4b fix: explicitly cancel redirects when mode is 'error' (#20686) 2019-10-23 09:10:37 +09:00
Jeremy Apthorp
cde2aae6b5 fix: properly free remote objects (#20671) 2019-10-22 16:54:38 -07:00
Sofia Nguy
97fa8c824c docs: update currently supported versions for 7.0.0 release (#20622)
* [WIP] docs: update currently supported versions for 7.0.0 release

* oops
2019-10-22 15:26:07 -07:00
Electron Bot
2658cae3ea Bump v8.0.0-nightly.20191022 2019-10-22 08:31:48 -07:00
Shelley Vohr
e3b30a825c chore: remove unnecessary crypto patch (#20669) 2019-10-22 09:14:21 +09:00
Shelley Vohr
aa26e8b946 fix: macOS getColor inconsistencies (#20611) 2019-10-21 14:31:03 -07:00
Shelley Vohr
9a5cd4c8d2 fix: use xib file to construct macOS Menu (#20615) 2019-10-21 14:11:09 -07:00
Electron Bot
138af75ff8 chore: bump node in DEPS to v12.13.0 (#20657)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2019-10-21 13:45:14 -07:00
Felix Rieseberg
13cb21a684 docs: Performance checklist (#20230)
* docs: First draft of perf checklist

* docs: More words

* docs: Use standard in code example

* docs: fix broken link

* Update docs/tutorial/performance.md

Co-Authored-By: Charles Kerr <ckerr@github.com>

* Update docs/tutorial/performance.md

Co-Authored-By: Charles Kerr <ckerr@github.com>

* Update docs/tutorial/performance.md

Co-Authored-By: loc <andy@slack-corp.com>

* Update docs/tutorial/performance.md

Co-Authored-By: loc <andy@slack-corp.com>

* docs: Implement suggestions

* docs: Include VSCode talk

* chore: Pass linter

* Update docs/tutorial/performance.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/performance.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/performance.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/performance.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/performance.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/performance.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Apply suggestions from code review

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update performance.md

* fix: The process link
2019-10-21 13:39:54 -07:00
Arjit Chauhan
620ac9c2b4 docs: update README.md (#20644) 2019-10-21 12:14:42 -07:00
Electron Bot
417f9e27e1 Bump v8.0.0-nightly.20191021 2019-10-21 08:32:10 -07:00
Shelley Vohr
0abbb35c4e chore: reduce crypto patch surface (#20646)
* reduce oaeplabel_option patch

* remove now-compatible patch

* note upstream
2019-10-21 08:02:23 -07:00
Kristof Kalocsai
7b28cd33cb docs: Added Native User Interface -> Open path in file manager Fiddle example (#20589)
* docs: Added Native User Interface -> Open path in file manager Fiddle example from electron-api-demos

* removed classname from button
2019-10-21 16:16:11 +09:00
Yaser
4e88633d89 docs: Added Drag and drop files Fiddle example (#20472) 2019-10-21 16:14:35 +09:00
Cheng Zhao
eb0e55c514 chore: remove native_mate (Part 9) (#20645)
* refactor: remove a few uses of native_mate/gfx_converter.h

* refactor: deprecate mate::EventEmitter

* refactor: add gin_helper::EventEmitter

* refactor: convert a few classes to use gin_helper::EventEmitter

* refactor: get rid of native_mate_converters/gfx_converter.h

* fix: follow native_mate on reporting errors

* fix: gin is weak at guessing parameter types

* fix: incorrect full class name

* fix: gin::Handle does not accept null
2019-10-21 16:05:40 +09:00
Jeremy Apthorp
b155ebeeb3 fix: don't overwrite global constructor names in remote (#20637)
* fix: don't overwrite global constructor names in remote

* fake constructor names better, and improve error serialization
2019-10-21 15:48:03 +09:00
Electron Bot
820dab295f Bump v8.0.0-nightly.20191020 2019-10-20 08:31:06 -07:00
Electron Bot
956127ee5e Bump v8.0.0-nightly.20191019 2019-10-19 08:31:24 -07:00
Electron Bot
43fa9166c9 chore: bump node to v12.12.0 (master) (#20584)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2019-10-18 16:52:15 -07:00
Jeremy Apthorp
9f23bb581e test: fix BrowserWindow spec to await its result (#20612) 2019-10-18 16:23:33 -07:00
Samuel Attard
2b890827ef docs: mark contextBridge as experimental (#20638)
* docs: mark contextBridge as experimental

This commit didn't make it to the original PR, quick addition here

* Update context-bridge.md
2019-10-18 13:46:03 -07:00
Electron Bot
3ac3fbdbfb chore: bump chromium to e049d599a8332b9b2785b0178be74 (master) (#20314) 2019-10-18 12:57:34 -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
Shelley Vohr
8099e6137d chore: remove some trop permissions (#20636) 2019-10-18 11:24:52 -07:00
Electron Bot
e74b21bff5 Bump v8.0.0-nightly.20191018 2019-10-18 08:31:50 -07:00
Alecyrus
825e67140e feat: support fitToPageEnabled and scaleFactor (#20436)
* fix: support fitToPageEnabled and scaleFactor

Support fitToPageEnabled and scaleFactor in  `WebContents.printToPDF()`

* fix: change default value of scaleFactor
2019-10-18 09:40:19 +09:00
Cheng Zhao
19223952a8 chore: remove native_mate (Part 8) (#20598)
* refactor: convert methods of AutoUpdater to gin

* refactor: converter in map_converter.h is no more needed

* refactor: use gin in crash_reporter

* refactor: remove native_mate_converters/map_converter.h

* refactor: implement gfx_converter with gin

* refactor: convert methods of NativeImage to gin

* refactor: add gin_helper::Arguments

* fix: use gin_helper::Arguments to parse multi-type parameters
2019-10-18 09:31:29 +09:00
Robo
58115c1cae fix: add patch to node for native module size issue on windows (#20614) 2019-10-17 17:10:42 -04:00
Electron Bot
86258c6cff Bump v8.0.0-nightly.20191017 2019-10-17 08:33:48 -07:00
Milan Burda
b29f0b9348 refactor: use Map for windowProxies in window-setup.ts (#20600) 2019-10-17 15:07:27 +02:00
Electron Bot
e06b0aa73b Bump v8.0.0-nightly.20191016 2019-10-16 08:31:19 -07:00
Harendra Singh
db91673f23 docs: add example for taking screenshot (#20531) 2019-10-16 08:17:50 -07:00
Vlad Hashimoto
c73e34fb9e docs: remove class names from fiddle examples (#20596)
* docs: remove original class names in customize menus example

* docs: remove original class names in shortcuts example

* lint: run standard
2019-10-16 08:17:09 -07:00
Jeremy Apthorp
221ce70699 test: remove remote usage from chromium spec (#20568)
* test: move & expand webview -> window.open() opener tests

* remove remaining usage of 'protocol' from chromium-spec.js

* remove final usages of remote from chromium-spec

* remove import of window-helpers
2019-10-16 11:12:31 -04:00
Jeremy Apthorp
9055b5cf6d test: simplify node setInterval test (#20594) 2019-10-15 17:10:28 -07:00
Harendra Singh
93788e76e0 docs: add notification examples (#20528)
Refs #20442

Adds the basic notification and notification with custom image examples from electron-api-demos into runnable Fiddle examples.

Gist links to Fiddles (same as code submitted in this PR):
Basic Notification: https://gist.github.com/102945f83f559e7944797175d8fd8af4
Notification with image: https://gist.github.com/2688bf4bfc27ce02f5d74224828eb928

Co-Authored-By: Erick Zhao <erick@hotmail.ca>
2019-10-15 14:06:58 -07:00
Rik Theunis
16d4ace800 docs: add system get version info Fiddle example (#20536) 2019-10-15 11:17:04 -07:00
Milan Burda
5273930f76 refactor: use Map for callbacks in CallbacksRegistry (#20565) 2019-10-15 09:14:41 -07:00
Electron Bot
dceabf231b Bump v8.0.0-nightly.20191015 2019-10-15 08:31:28 -07:00
Cheng Zhao
1ecfcc8c70 chore: remove native_mate (Part 7) (#20561)
* refactor: use gin converters in api::Protocol

* refactor: convert JS constructor impl to gin

* refactor: use InitWithArgs helper

* fix: gin_helper::Dictionary should behave the same with mate

* fix cpplint warnings

* refactor: no more need to patch gin/dictionary.h
2019-10-15 10:15:23 +09:00
Electron Bot
6c6bff81ac chore: bump node to v12.10.0 (master) (#20129)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2019-10-14 15:46:10 -07:00
Jeremy Apthorp
8dad0c7aaa test: move crashReporter specs to the main process (#20417) 2019-10-14 14:38:54 -07:00
Milan Burda
eb100cdf9e test: skip desktopCapturer / remote module tests when the features are disabled (#20566) 2019-10-14 13:49:21 -07:00
Alexey Kuzmin
b085dac15b spec: allow "Yu Gothic" as a Japanese sans-serif font on Windows (#20564) 2019-10-14 14:30:18 -04:00
Erick Zhao
a7e26fdc61 docs: Update Issue Closure in CONTRIBUTING.md (#20545) 2019-10-14 09:40:01 -07:00
Jeremy Apthorp
d67f25ce43 test: expand window.opener test and move to main process (#20549) 2019-10-14 09:00:34 -07:00
Electron Bot
dfac05805d Bump v8.0.0-nightly.20191014 2019-10-14 08:30:58 -07:00
Jeremy Apthorp
6025ae7b12 fix: generate breakpad symbols before stripping (#20530)
* fix: generate breakpad symbols before stripping

* store symbols as circleci artifacts
2019-10-14 10:58:05 -04:00
Kerollos Magdy
8efa45d12d docs: fix minor grammar mistakes (#20521) 2019-10-14 14:35:52 +09:00
Jeremy Apthorp
1f44f47de1 test: move debugger spec to main process (#20514) 2019-10-14 14:32:11 +09:00
Robo
5c2c30142c fix: append network switches to network service process (#20546) 2019-10-13 18:21:41 -07:00
Electron Bot
5bd7b6ad50 Bump v8.0.0-nightly.20191013 2019-10-13 08:31:09 -07:00
Electron Bot
2cf64d0200 Bump v8.0.0-nightly.20191012 2019-10-12 08:32:39 -07:00
Jeremy Apthorp
2aa7ab821c test: remove some remote usage from chromium specs (#20121)
* test: remove remote usage from chromium specs

* disable tts test

* port navigator.mediaDevices tests

* fake camera and microphone

* Update spec-main/chromium-spec.ts

Co-Authored-By: John Kleinschmidt <jkleinsc@github.com>
2019-10-11 13:55:50 -07:00
Cheng Zhao
1b2c6a33b3 fix: do not manually parse content-type (#20538) 2019-10-11 14:54:50 -04:00
Jeremy Apthorp
67642312f4 test: remove remote usage from webFrame test (#20512) 2019-10-11 10:20:08 -07:00
Jeremy Apthorp
032353b14f test: remove remote usage from asar spec (#20513) 2019-10-11 09:56:51 -07:00
Electron Bot
d21519ed2e Bump v8.0.0-nightly.20191011 2019-10-11 08:31:51 -07:00
Jeremy Apthorp
50178d4836 test: remove more unused files (#20529) 2019-10-10 15:20:04 -07:00
Jeremy Apthorp
5d696c5c69 fix: return type of webview.printToPDF is now Uint8Array (#20505) 2019-10-10 11:25:11 -07:00
Jeremy Apthorp
01448e1235 chore: delete some unreferenced test files (#20511) 2019-10-10 11:24:06 -07:00
Shelley Vohr
812de5d3bf fix: properly register custom url evt handling (#20518) 2019-10-10 08:54:03 -07:00
Electron Bot
ec2c1db0e4 Bump v8.0.0-nightly.20191010 2019-10-10 08:31:27 -07:00
Milan Burda
b92163d226 refactor: take advantage of structured clone algorithm in the remote module (#20427) 2019-10-10 09:59:08 -04:00
Erick Zhao
c2e77e4429 docs: add Asynchronous Messages Fiddle example (#20441)
* docs: add Asynchronous Messages Fiddle example

* Update docs/fiddles/communication/two-processes/asynchronous-messages/main.js

Co-Authored-By: John Kleinschmidt <jkleinsc@github.com>

* Update docs/fiddles/communication/two-processes/asynchronous-messages/index.html

Co-Authored-By: John Kleinschmidt <jkleinsc@github.com>
2019-10-10 09:49:07 -04:00
Rik Theunis
ec87917f58 docs: add clipboard Fiddle examples (#20445)
* docs: add clipboard paste Fiddle example

* docs: add clipboard copy Fiddle example

* docs: add appropriate title to Fiddles

Co-Authored-By: John Kleinschmidt <jkleinsc@github.com>
2019-10-10 09:48:33 -04:00
Yaser
d1c5c760d0 docs: add Menu Shortcuts Fiddle example (#20466) 2019-10-10 09:47:50 -04:00
Yaser
9b4ba7993c docs: Adds Customize Menu section Fiddle example (#20468) 2019-10-10 09:47:34 -04:00
Jeremy Apthorp
1dc1ef6091 test: ensure cleanup of net requests in tests (#20510)
ref #19389
2019-10-10 14:14:41 +02:00
Jeremy Apthorp
8de925c4c2 test: move module tests to main process (#20419) 2019-10-09 16:33:15 -07:00
Jeremy Apthorp
df1d3156a0 docs: remove outdated document about updating chromium (#20490) 2019-10-09 16:07:15 -07:00
Jeremy Apthorp
c75c3ef616 docs: add a dev doc describing the patch system (#20489) 2019-10-09 14:48:09 -07:00
Milan Burda
bb2ab01f99 fix: when building with enable_plugins=false (#20354)
* fix: when building with enable_plugins=false

* build: exclude printing service to avoid patch

* build: update plugins patch from upstream
2019-10-09 19:59:37 +02:00
Jeremy Apthorp
2fad53e66b refactor: use v8 serialization for ipc (#20214)
* refactor: use v8 serialization for ipc

* cloning process.env doesn't work

* serialize host objects by enumerating key/values

* new serialization can handle NaN, Infinity, and undefined correctly

* can't allocate v8 objects during GC

* backport microtasks fix

* fix compile

* fix node_stream_loader reentrancy

* update subframe spec to expect undefined instead of null

* write undefined instead of crashing when serializing host objects

* fix webview spec

* fix download spec

* buffers are transformed into uint8arrays

* can't serialize promises

* fix chrome.i18n.getMessage

* fix devtools tests

* fix zoom test

* fix debug build

* fix lint

* update ipcRenderer tests

* fix printToPDF test

* update patch

* remove accidentally re-added remote-side spec

* wip

* don't attempt to serialize host objects

* jump through different hoops to set options.webContents sometimes

* whoops

* fix lint

* clean up error-handling logic

* fix memory leak

* fix lint

* convert host objects using old base::Value serialization

* fix lint more

* fall back to base::Value-based serialization

* remove commented-out code

* add docs to breaking-changes.md

* Update breaking-changes.md

* update ipcRenderer and WebContents docs

* lint

* use named values for format tag

* save a memcpy for ~30% speedup

* get rid of calls to ShallowClone

* extra debugging for paranoia

* d'oh, use the correct named tags

* apparently msstl doesn't like this DCHECK

* funny story about that DCHECK

* disable remote-related functions when enable_remote_module = false

* nits

* use EnableIf to disable remote methods in mojom

* fix include

* review comments
2019-10-09 13:59:08 -04:00
Electron Bot
c250cd6e7c Bump v8.0.0-nightly.20191009 2019-10-09 08:33:39 -07:00
Shelley Vohr
f80a17c5be feat: allow Linux/Windows users to set notification timeout (#20153)
* feat: allow Linux users to set notification timeout

* implement on windows
2019-10-09 11:22:21 -04:00
Cheng Zhao
5e11be6898 fix: cookies.get should be able to filter domain (#20471)
* fix: use GetAllCookies when url is empty

* test: get cookie without url
2019-10-09 15:57:40 +09:00
Jeremy Apthorp
ebd55c1147 fix: fix crash in crashReporter.getUploadedReports (#20428) 2019-10-08 16:35:28 -07:00
Richard Townsend
2ce90f8806 docs: add WoA cross-compilation instructions (#20244)
* docs: add WoA cross-compilation instructions

* docs: fixing lint issues

* docs: minor corrections

* style: Ssubstitute -> Substitute
2019-10-08 14:54:03 -07:00
Felix Rieseberg
b3e7657159 docs: Update the sccache name (#20462) 2019-10-08 17:46:01 -04:00
John Kleinschmidt
23066f8cce ci: verify CircleCI job number before returning job url (#20483) 2019-10-08 17:45:07 -04:00
Jaime Bernardo
de3c1fae7f build: fix build with Visual Studio 2019 (#20465) 2019-10-08 12:49:38 -07:00
Electron Bot
94ec4ecabe Bump v8.0.0-nightly.20191008 2019-10-08 08:32:37 -07:00
Shelley Vohr
c16a186de0 feat: improve TouchBarButton accessibility (#20454) 2019-10-08 11:13:57 -04:00
dependabot[bot]
8da9a3c416 build(deps): bump eslint-utils from 1.3.1 to 1.4.2 (#20481)
Bumps [eslint-utils](https://github.com/mysticatea/eslint-utils) from 1.3.1 to 1.4.2.
- [Release notes](https://github.com/mysticatea/eslint-utils/releases)
- [Commits](https://github.com/mysticatea/eslint-utils/compare/v1.3.1...v1.4.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-10-08 11:06:52 -04:00
Shelley Vohr
8d9ba87e05 fix: properly free IsolateData in node_main (#20446) 2019-10-08 09:03:04 +02:00
Robo
c85648a8a1 fix: fs.watch() behavior change in node >= 10.16.0 (#20408)
This reverts the patch from https://github.com/electron/node/pull/100
which never got merged due to reasons outlined in https://github.com/libuv/libuv/pull/2313

* Adds new patches that backports https://github.com/libuv/libuv/pull/2459
  and https://github.com/libuv/libuv/pull/2460

Based on https://github.com/nodejs/node/issues/29460
2019-10-07 13:04:15 -07:00
ryanomor
0c87471c12 Fix typo (#20450) 2019-10-07 12:26:38 -04:00
Electron Bot
f3cf2566c1 Bump v8.0.0-nightly.20191007 2019-10-07 08:32:42 -07:00
Shelley Vohr
9b534e9aab fix: enable worker threads (#20416) 2019-10-07 11:30:10 +02:00
John Kleinschmidt
3f72f07a7f test: remove unneeded console.log (#20424)
(cherry picked from commit 4945a9fce9)
2019-10-06 22:00:38 +02:00
Electron Bot
e26fa9090d Bump v8.0.0-nightly.20191006 2019-10-06 08:33:20 -07:00
Stian Jørgensrud
39d19d23d1 Add unsafe-inline (#20414)
Versions didn't show and I was getting errors in the Developer Tools: `Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self'"`. The cause is probably that Chrome has implemented extra security since this tutorial was created. Added 'unsafe-inline' and it works.
2019-10-06 12:24:24 +02:00
Erick Zhao
0a09f27735 chore: empty folder structure (#20439) 2019-10-05 12:46:01 -05:00
Electron Bot
8dae38639a Bump v8.0.0-nightly.20191005 2019-10-05 08:31:32 -07:00
Jeremy Apthorp
87bd0501c4 test: remove 'remote' usage from process tests (#20418) 2019-10-04 13:58:44 -07:00
Milan Burda
ccff140046 feat: add --enable-api-filtering-logging commandline switch (#20335) 2019-10-04 10:49:09 -07:00
Electron Bot
e1eb9519f5 Bump v8.0.0-nightly.20191004 2019-10-04 08:31:45 -07:00
John Kleinschmidt
ad34d7fc32 Revert "test: remove unneeded console.log"
This reverts commit 4945a9fce9.
2019-10-04 11:17:58 -04:00
John Kleinschmidt
4945a9fce9 test: remove unneeded console.log 2019-10-04 11:05:49 -04:00
Andrew MacDonald
7f320eef0e docs: Minor fixes to build instructions (#20338)
* Minor fixes to build instructions

* Direct folks to the unit testing page.
2019-10-04 10:11:51 -04:00
Shelley Vohr
513c8536c0 refactor: implement sublabel fns in MenuModel (#20150) 2019-10-04 08:58:54 +02:00
Shelley Vohr
82ff142f9c chore: remove unused l10n_util includes (#20412) 2019-10-04 09:31:38 +09:00
Cheng Zhao
509587eb81 test: close window before destroying browserView (#20411) 2019-10-04 09:30:44 +09:00
Shelley Vohr
80af35e0cd chore: enable native unittesting (#20293) 2019-10-03 22:21:30 +02:00
Shelley Vohr
f054d5862c chore: remove upstreamed node_crypto CHECK patch (#20406) 2019-10-03 21:11:04 +02:00
Electron Bot
8a2ba597bb Bump v8.0.0-nightly.20191003 2019-10-03 08:32:50 -07:00
Shelley Vohr
e543fe702c fix: recentDocuments menu role on macOS (#20398) 2019-10-03 14:25:14 +09:00
Jeremy Apthorp
2470ef2e91 ci: enable crashReporter tests on mac (#19582) 2019-10-02 17:53:51 -07:00
Jeremy Apthorp
fe956f87ec ci: save pdb files for testing builds (#20407) 2019-10-02 14:52:55 -07:00
Electron Bot
1c0a21a8bc Bump v8.0.0-nightly.20191002 2019-10-02 08:32:04 -07:00
Milan Burda
2f03d393c3 feat: allow inspection of specific shared workers (#20389) 2019-10-02 14:38:27 +02:00
CezaryKulakowski
712d77dc8b fix: remove unnecessary patch (#20390)
Patch which this pr removes adds new version of
BrowserCompositorMac::GetCompositor. There is this function in
BrowserCompositorMac with specifier const. Chromium's function
returns parent's compositor if parent is set. Electron's version
doesn't and - as a result - constrained dialogs won't be displayed
correctly if they don't have its own compositor.
2019-10-02 13:59:42 +02:00
Milan Burda
bf978e09e4 fix: allow paths to asar archives to contain the .asar extension in directories (#20342) 2019-10-02 13:33:07 +09:00
Cheng Zhao
4ac4b34ae9 chore: remove native_mate (Part 6) (#20391) 2019-10-02 09:30:55 +09:00
bughit
01ed55ff02 docs: WebContents console-message event is emitted for offscreen windows (#20386)
since c3d11a51cc
2019-10-01 14:32:59 -04:00
Cheng Zhao
ef690c035d fix: correctly crash when there is no crashReporter (#20388)
* fix: correctly crash when there is no crashReporter

* test: correctly crash when there is crashReporter
2019-10-01 13:20:21 -04:00
Electron Bot
969b4d1dd3 Bump v8.0.0-nightly.20191001 2019-10-01 08:31:25 -07:00
Jeremy Apthorp
a9e695d05f test: move more web contents specs (#20099) 2019-09-30 15:00:47 -07:00
Jeremy Apthorp
b7b0992768 refactor: convert some more remote stuff to typescript (#20324) 2019-09-30 15:00:22 -07:00
Birunthan Mohanathas
d3922f95e6 fix: Make the --disable-color-correct-rendering switch work again (#20356)
This broke in Electron 6 due to some Chromium changes.

Test Plan:

- Confirm that test case from
  https://github.com/electron/electron/pull/15898#issuecomment-443191770
  now works

Notes: Fix disabling color correct rendering with `--disable-color-correct-rendering`
2019-09-30 10:46:03 -07:00
Chris Hawkes
9457c796b1 Update application-architecture.md (#20370)
Updated the period to a comma.   Appears to be a number typo.
2019-09-30 13:41:58 -04:00
Electron Bot
37e34395de Bump v8.0.0-nightly.20190930 2019-09-30 08:32:02 -07:00
Electron Bot
4f815d8469 Bump v8.0.0-nightly.20190929 2019-09-29 08:31:20 -07:00
Electron Bot
e099edc2c2 Bump v8.0.0-nightly.20190928 2019-09-28 08:31:51 -07:00
Electron Bot
5e942cea8d Bump v8.0.0-nightly.20190927 2019-09-27 08:33:09 -07:00
Milan Burda
ead8f2bbcd fix: BrowserWindow.fromWebContents() can return null (#19983) 2019-09-27 13:07:55 +02:00
Electron Bot
efe6e7b04d Bump v8.0.0-nightly.20190926 2019-09-26 08:33:14 -07:00
Jeremy Apthorp
cc0312567e chore: update strip-binaries for moved swiftshader.so (#20341) 2019-09-26 10:48:53 -04:00
Jeremy Apthorp
593f1774e9 fix: backport Node nested microtask fix (#20303) 2019-09-25 17:38:50 -04:00
Electron Bot
0653e31767 Revert "Bump v8.0.0-nightly.20190925"
This reverts commit b18fb96ecf.
2019-09-25 08:37:31 -07:00
Electron Bot
b18fb96ecf Bump v8.0.0-nightly.20190925 2019-09-25 08:32:11 -07:00
Daniel Zwelling
26d9ef9403 docs: update selenium docs (#20336) 2019-09-24 13:36:09 -07:00
Samuel Attard
c32bea5ae0 build: run publish jobs in the secure context and enable sccache (#20326) 2019-09-24 13:52:06 -04:00
Mike Pelley
7f0ec3091e Replace workspaceRoot with workspaceFolder. (#20306)
workspaceRoot has been deprecated as per https://code.visualstudio.com/docs/editor/variables-reference#_why-isnt-workspaceroot-documented
2019-09-24 13:49:04 -04:00
Electron Bot
597a8b5ec7 Bump v8.0.0-nightly.20190924 2019-09-24 08:31:12 -07:00
Electron Bot
c25f0a1779 Bump v8.0.0-nightly.20190923 2019-09-23 08:31:45 -07:00
Electron Bot
bac15ef86f Bump v8.0.0-nightly.20190922 2019-09-22 08:32:05 -07:00
Electron Bot
297b81fa1d Bump v8.0.0-nightly.20190921 2019-09-21 08:31:38 -07:00
Electron Bot
913ec1e0d0 chore: bump chromium to 0239d631f03d0111f77b0b98c7765 (master) (#20285) 2019-09-21 10:51:28 -04:00
Milan Burda
d090b0cd2d perf: only access remote module when <webview>.getWebContents() is called (#20272) 2019-09-20 08:54:16 -07:00
Electron Bot
1e0b87732f Bump v8.0.0-nightly.20190920 2019-09-20 08:32:01 -07:00
Jeremy Apthorp
9abdfc11a9 test: remove usage of remote module from node tests (#20103)
* test: remove usage of remote module from node tests

* isTTY is undefined in the renderer process on all platforms

* Update spec/node-spec.js

* Update node-spec.js
2019-09-20 10:41:40 -04:00
Shelley Vohr
ae6f08d56e fix: correct 'Entire screen' to ' Entire Screen' (#20276) 2019-09-20 10:16:47 -04:00
Felix Rieseberg
26014d19e1 docs: Add Notification API to docs (#20290) 2019-09-19 23:30:01 -07:00
Jeremy Apthorp
e83c299454 test: move ipcRenderer spec to main runner (#20093) 2019-09-19 16:35:05 -04:00
Milan Burda
b136819371 refactor: move GetCursorBlinkInterval() to a helper function (#20060) 2019-09-19 11:43:21 -07:00
John Kleinschmidt
c46a386970 ci: Fix build failures on linux nightly release tests (#20287) 2019-09-19 12:37:54 -04:00
John Kleinschmidt
6f2fe7560a ci: actually kill leftover processes on WOA testing (#20286) 2019-09-19 11:35:31 -04:00
Electron Bot
e459114149 Bump v8.0.0-nightly.20190919 2019-09-19 08:31:13 -07:00
Cheng Zhao
624ba4f642 chore: remove native_mate (Part 5) (#20264)
* deprecate native_mate/native_mate/object_template_builder.h

* add gin_helper/object_template_builder.h

* add patch to avoid ambiguous error

* remove usage of object_template_builder_deprecated.h in a few files

* add note we should remove gin_helper/object_template_builder.h in future
2019-09-19 08:09:15 -07:00
Charles Kerr
63f08fcdb0 fix: use coordinate offsets in ShowAutofillPopup (#20232)
* fix: use coordinate offsets in ShowAutofillPopup

* fix: silence coord int->float narrowing conversion

Minor fix to silence clang-tidy warning about implicit range narrowing.
Not a huge deal but the revision is also easier to read.

clang-tidy: bugprone-narrowing-conversions
2019-09-19 08:05:57 -07:00
Gellert Hegyi
3f5833ce5d fixes widget host fetching from render view host (#20239) 2019-09-19 05:47:12 -04:00
Shelley Vohr
ffe2182883 feat: set urgency on linux notifications (#20152) 2019-09-18 22:35:20 -07:00
Shelley Vohr
e510af77b2 docs: improve and add examples for clipboard (#20224)
* docs: improve and add examples for clipboard

* address feedback from jkleinsc review
2019-09-18 16:00:43 -07:00
John Kleinschmidt
afc59aefb7 ci: only kill WOA processes if they are running (#20274) 2019-09-18 16:44:48 -04:00
Shelley Vohr
b0fe3e20e6 fix: reset capturers at the very end (#20270) 2019-09-18 16:20:41 -04:00
Electron Bot
eb2d2264d0 chore: bump chromium to 63be48daea281d4f8c834c2e707a7 (master) (#19923) 2019-09-18 15:58:00 -04:00
John Kleinschmidt
104088b86b ci: Fix triggering CircleCI release builds (#20275)
* ci: fix circleCI handling of booleans

* Explicitly specify 2.1
2019-09-18 15:53:54 -04:00
Milan Burda
11cd0db86b build: add enable_remote_module build flag (#19821) 2019-09-18 09:52:06 -07:00
Electron Bot
8bf74164e2 Bump v8.0.0-nightly.20190918 2019-09-18 08:31:27 -07:00
John Kleinschmidt
eaa18041e1 ci: use CircleCI 2.1 config and v2 APIs (#20245)
* ci: use circleci 2.1

* Check for pipeline status and add comments
2019-09-17 14:48:02 -04:00
loc
d2a94e6b13 fix: free screen and window capturers immediately after we're finished with them (#20156)
fix #17937, #19908
2019-09-17 09:48:31 -07:00
John Kleinschmidt
42999f42f2 build: add WOA node headers to checksum file (#20255) 2019-09-17 12:38:36 -04:00
Electron Bot
dfd2135647 Bump v8.0.0-nightly.20190917 2019-09-17 08:32:25 -07:00
Tony Stark
7c45c2fdef fix: strip chrome-sandbox typo (#20227) 2019-09-17 10:51:25 -04:00
Erick Zhao
2cac40444b docs: clarify VS installation instructions for Windows builds (#20236)
* docs: note required step for VS in Windows build

* docs: add instructions for custom VS location

* lint?

* link chromium docs
2019-09-17 10:23:56 -04:00
Samuel Attard
f566e562a3 build: remove .only 2019-09-16 16:08:41 -07:00
Samuel Attard
0e61709fa7 fix: emit updated on NativeTheme on the UI thread to avoid DCHECK (#20137)
* fix: emit updated on NativeTheme on the UI thread to avoid DCHECK

* Update atom_api_native_theme.cc

* spec: wait a few ticks for async events to emit so that test events do not leak into each other
2019-09-16 16:08:01 -07:00
Charles Kerr
2b316f3843 refactor: run clang-tidy (#20231)
* refactor: clang-tidy modernize-use-nullptr

* refactor: clang-tidy modernize-use-equals-default

* refactor: clang-tidy modernize-make-unique

* refactor: omit nullptr arg from unique_ptr.reset()

As per comment by @miniak
2019-09-16 18:12:00 -04:00
Samuel Attard
660e566201 fix: don't expose nativeTheme in the renderer process (#20139)
Exposing these in the renderer didn't make sense as they weren't backed
by the same instance / value store.  This API should be browser only
especially now that we have nativeTheme.themeSource.  Exposing in
//common was a mistake from the beginning.
2019-09-16 14:23:13 -07:00
Samuel Attard
999f7df158 build: speed up linux CI even more (#20241)
* build: yolo a theoretical speed improvement

* chore: persist src/electron and friends for testing purposes

* build: do not generate dist.zip on debug builds

* chore: ensure licenses and version file exist for zip-symbols script
2019-09-16 09:31:08 -07:00
Electron Bot
816bc5c8a7 Bump v8.0.0-nightly.20190915 2019-09-15 08:31:55 -07:00
Electron Bot
99f1b96c4f Bump v8.0.0-nightly.20190914 2019-09-14 08:31:07 -07:00
Felix Rieseberg
334ea36f38 docs: Add recent Electron version to security checklist (#20206)
* docs: Add recent Electron version to security checklist

* Update docs/tutorial/security.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/security.md

Co-Authored-By: Pedro Pontes <pepontes@microsoft.com>

* Update docs/tutorial/security.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>
2019-09-13 21:12:14 -04:00
Electron Bot
c485c1e4b0 Bump v8.0.0-nightly.20190913 2019-09-13 08:31:01 -07:00
Charles Kerr
b2652beceb refactor: apply some 'clang-tidy -fix' changes (#20172)
* refactor: fix clang-tidy vector operation warnings

Fix vector population performance-inefficient-vector-operation warnings
generated by clang-tidy

* refactor: fix clang-tidy emplace_back warnings

In cases where a temporary is created to be passed
to push_back(), replace it with emplace_back().

Warning: modernize-use-emplace

* refactor: fix clang-tidy loop iteration warnings

When practical, use range-based for loops instead of C-style for loops.

clang-tiny check: modernize-loop-convert

* refactor: fix clang-tidy string initialize warning

Remove redundant empty string initialization.

clang-tidy check: readability-redundant-string-init
2019-09-13 10:26:59 -04:00
Shelley Vohr
3ec17a88ba fix: crash when exiting simple fullscreen on macOS (#20144) 2019-09-12 13:38:16 -04:00
Electron Bot
5dee8a5717 Bump v8.0.0-nightly.20190912 2019-09-12 08:32:04 -07:00
Electron Bot
ace0284eef Bump v8.0.0-nightly.20190911 2019-09-11 08:31:12 -07:00
John Kleinschmidt
5ccc043d86 build: handle arm64 node headers (#20192)
* build: handle arm64 node headers

(cherry picked from commit ff1f224d96)

* node.lib for arm64 needs to go to specific dir
2019-09-10 14:14:58 -07:00
John Kleinschmidt
fd31a99ef0 Revert "build: handle arm64 node headers"
This reverts commit ff1f224d96.
2019-09-10 15:18:55 -04:00
John Kleinschmidt
ff1f224d96 build: handle arm64 node headers 2019-09-10 15:15:20 -04:00
Electron Bot
0b26d7a0e2 Bump v8.0.0-nightly.20190910 2019-09-10 08:31:47 -07:00
Electron Bot
5f59c6ddfe Bump v8.0.0-nightly.20190909 2019-09-09 08:32:20 -07:00
Shelley Vohr
a9f2a52ce0 build: specific line with trailing whitespace (#20155) 2019-09-09 06:15:24 -07:00
Electron Bot
d84e2e3972 Bump v8.0.0-nightly.20190908 2019-09-08 08:31:31 -07:00
Cheng Zhao
49bd74ff0e chore: remove native_mate (Part 4) (#20146)
* avoid patching gin::Dictionary by using our wrapper

* remove SetHidden from mate::Dictionary
2019-09-09 00:10:18 +09:00
Samuel Attard
d395799917 build: get all the release assets when looking for one to delete (#20157)
* build: get all the release assets when looking for one to delete

yeah we totally have more than 30....

* Update upload-to-github.js
2019-09-07 14:48:35 -07:00
Electron Bot
6e9a23a884 Bump v8.0.0-nightly.20190907 2019-09-07 08:33:10 -07:00
Electron Bot
0979fb7eee Bump v8.0.0-nightly.20190906 2019-09-06 13:07:01 -07:00
Samuel Attard
9ab06af786 Revert "Bump v8.0.0-nightly.20190906"
This reverts commit 432ae81823.
2019-09-06 13:05:43 -07:00
Shelley Vohr
6087f89aac refactor: use base::StringPiece over std::string (#20119) 2019-09-06 09:05:12 -07:00
Electron Bot
432ae81823 Bump v8.0.0-nightly.20190906 2019-09-06 08:31:28 -07:00
Cheng Zhao
2c23e44ed9 chore: remove native_mate (Part 3) (#20131)
* use gin converter in atom_api_menu

* please only put necessary includes in header

Having include in header means they have dependency relationship,
putting arbitrary includes really really really really really makes
refacoring much harder.

* remove some simple uses of callback_converter_deprecated.h

* use gin callback converter in file_dialog code

* use gin in ErrorThrower

* use gin in atom_bundle_mover

* fix mistake in node stream

* deprecate native_mate version of event_emitter_caller

* use gin in node_bindings

* remove usages of native_mate event_emitter_caller.h except for EventEmitter

* fix compilation on Windows

* gin::Arguments behaves differently on GetNext

* just use StringToV8
2019-09-06 14:52:54 +09:00
John Kleinschmidt
7be1905023 fix: resolve crash loading file based serviceworkers (#20132) 2019-09-06 10:01:22 +09:00
Shelley Vohr
20e3c519dd fix: ensure popup and closepopup are posted in order (#20114) 2019-09-05 16:37:09 -04:00
Charles Kerr
8a0a41b9ef docs: fix BrowserWindow options.hasShadow platform (#20038)
The docs claimed this is only available on macOS; however, Linux and Win
got this feature in 239bfe970c
2019-09-05 16:04:07 -04:00
Steven Barbaro
93da8e2b3d fix: Debug builds on Windows. (#20117) 2019-09-05 12:38:56 -07:00
John Kleinschmidt
196fceabdb build: don't wait until job requests return in case some jobs fail to return (#20133) 2019-09-05 13:57:47 -04:00
Samuel Attard
0d16be9560 feat: add nativeTheme.themeSource to allow apps to override Chromiums theme choice (#19960)
* feat: add nativeTheme.shouldUseDarkColorsOverride to allow apps to override Chromiums theme choice

* spec: add tests for shouldUseDarkColorsOverride

* chore: add missing forward declarations

* refactor: rename overrideShouldUseDarkColors to themeSource

* chore: only run appLevelAppearance specs on Mojave and up

* chore: update patch with more info and no define

* Update spec-main/api-native-theme-spec.ts

Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>

* Update api-native-theme-spec.ts

* Update api-native-theme-spec.ts

* Update api-native-theme-spec.ts
2019-09-05 10:57:04 -07:00
Samuel Attard
137622931b fix: ensure document.visibilityState aligns with the visibility of the TopLevelWindow (#19988)
* fix: ensure document.visibilityState aligns with the visibility of the
TopLevelWindow

* chore: disable the specs on linux on CI
2019-09-05 10:56:06 -07:00
Electron Bot
cd096289e9 Bump v8.0.0-nightly.20190905 2019-09-05 08:37:04 -07:00
Jeremy Apthorp
88e32ef231 test: move robotjs-based devtools paste test to main runner (#20095) 2019-09-04 14:44:13 -07:00
Cem Schemel
bff16e027a docs: Improve wording of setBrowserView and getBrowserView (#20065)
* Improve wording of setBrowserView and getBrowserView

* Update wording based on feedback
2019-09-04 14:19:49 -07:00
Jeremy Apthorp
a453f2ae6c test: fix test for desktopCapturer preventDefault (#20100) 2019-09-04 13:54:40 -07:00
Samuel Attard
8b523cf88a fix: ensure modeL_ exists before calling delegate methods (#20111)
This is a speculative fix for a crash we are seeing in `menuDidClose`.  We
can't repro the crash but the traces have it happening in this method
and just by reading through the impl the only part that jumps out as
Might Crash is this `model_` call.  Other methods in the menu controller
check `model_` before using it so it probably makes sense to do that here
as well.
2019-09-04 13:42:23 -07:00
John Kleinschmidt
65ebb6e547 build: add WOA release to list of releases (#20094)
* build: add WOA release to list of releases

* Add job count info for sudowoodo

* Add verification of all assets

* Fix linting and add logic to wait before printing out results
2019-09-04 14:24:46 -04:00
Jeremy Apthorp
c29e4b096d test: tsify deprecate spec (#20089) 2019-09-04 11:13:37 -07:00
Jeremy Apthorp
8cdfd30ba5 test: remove usage of remote in shell.openExternal test (#20101) 2019-09-04 11:12:31 -07:00
Cheng Zhao
81ae154714 chore: remove native_mate (Part 2) (#20106)
* add notice to files being removed

* add gin version of function_template.h

* rename callback.h to avoid confliction

* add gin version of callback_converter

* add gin converter for OnceCallback

* remove callback_converter_gin_adapter.h

* remove gin_util.h and gin_utils.h

* fix lint warning

* add helper for setting methods
2019-09-04 08:45:25 -07:00
Electron Bot
504cdb13f0 Bump v8.0.0-nightly.20190904 2019-09-04 08:32:24 -07:00
Cheng Zhao
b601f3a031 chore: remove native_mate (Part 1) (#20085)
* move Destroyable utilities out of native_mate

* do not set "destroy" in ObjectTemplateBuilder

* remove ObjectTemplateBuilder::MakeDestroyable

* do not pollute gin namespace

* add more comments

* remove hack of Arguments
2019-09-04 11:14:16 +09:00
Cheng Zhao
96b42bddb8 fix: implement ses.getBlobData() for NetworkService (#20041)
* pass data pipe to JS

* implement reading buffer

* re-enable ses.getBlobData test

* remove AtomBlobReader
2019-09-04 07:54:14 +09:00
Samuel Attard
cc9436f288 chore: add SetGTKDarkThemeEnabled(enabled) internal helper to allow dynamic theme selection on linux (#19964)
This is just a after-creation setter for the `darkTheme` constructor option.  This is delibrately
a method and not a property as there is no getter.
2019-09-03 12:59:48 -07:00
John Kleinschmidt
bedc5f7da9 ci: run tests on WOA hardware (#20031)
* ci: run tests on WOA hardware

* Temporarily disable test until #20008 is resolved

* deterministically run tests in sorted order
2019-09-03 13:13:06 -04:00
Jeremy Apthorp
96c3fec855 test: remove usage of 'remote' module from webview spec (#20048) 2019-09-03 10:10:58 -07:00
Jeremy Apthorp
cad73732c0 test: move chrome extensions spec to main runner (#20030) 2019-09-03 10:10:33 -07:00
Electron Bot
39475f9404 Bump v8.0.0-nightly.20190903 2019-09-03 08:32:24 -07:00
Jeremy Apthorp
8589ab27a4 fix: strip chrome_sandbox executable (#20049) 2019-09-03 16:17:18 +09:00
Jeremy Apthorp
f537366387 test: move security warnings spec to main runner (#20055) 2019-09-03 16:02:22 +09:00
Jeremy Apthorp
d7161742d2 test: move content-script tests to main runner (#20056) 2019-09-03 16:01:42 +09:00
Jeremy Apthorp
6e88b6b445 test: move desktopCapturer spec to main runner (#20057) 2019-09-03 15:59:54 +09:00
Electron Bot
614079654c Bump v8.0.0-nightly.20190902 2019-09-02 08:34:32 -07:00
Electron Bot
51015c5b48 Bump v8.0.0-nightly.20190901 2019-09-01 08:31:00 -07:00
Samuel Attard
c621a36320 fix: ensure that the "top" coordinate of the inner frame is correct (#20051)
On multi-monitor setups where the monitors are not all origined at 0 on
the Y coordinate (E.g. vertical stacked monitors) the maximize
calculation was incorrect as it assumed top was "0".  This instead
adjusts the math to calculate the correct top value.
2019-08-30 15:45:59 -07:00
ipoint-pgerhard
e37ad09330 docs: Update boilerplates-and-clis.md (#19975)
Updated boilerplates-and-clis.md in order to more accuratly represent the current availability of templates in electron forge
2019-08-30 15:40:37 -05:00
Shelley Vohr
bfe256891c build: add gn-check to precommit linting (#19850) 2019-08-30 10:37:02 -07:00
Dave Jeffery
0f5ff1f5bb docs: clarify app.setName() effects (#19893)
* Document that `app.setName()` has no effect in Mac environments

* docs: add note to clarify `app.setName()` functionality

* Update app.md
2019-08-30 10:30:38 -07:00
Electron Bot
e96a042223 Bump v8.0.0-nightly.20190830 2019-08-30 08:32:04 -07:00
Shelley Vohr
5cbbd489d5 fix: honor cursor blink rate (#20020)
* fix: honor cursor blink rate on macOS

* fix: honor cursor blink rate on Linux

* fix: honor cursor blink rate on Windows

* refactor: clean up os_win cursor blink logic

* remove unneeded include
2019-08-30 09:39:46 -05:00
Jeremy Apthorp
805a55099b test: tsify more web contents specs (#19969)
* test: tsify more WebContents specs

* getFocusedWebContents

* setDevToolsWebContents, isFocused, isCurrentlyAudible

* getWebPreferences, openDevTools

* before-input-event

* zoom-changed

* sendInputEvent

* insertCSS

* startDrag

* focus, getOSProcessId

* zoom api

* more closeAllWindows

* fix detached dev tools test

* fix zoom-changed test

* compare the correct kind of id 🤦‍♂️

* 'fix' openDevTools test to wait for multiple focus events

* fix tests? 🤞

* use request instead of blur to detect openExternal success

* try not timing out the keychain for testing

* use blur event on mac, sigh

* oh, right, still gotta open an actual url
2019-08-29 19:45:41 -05:00
Samuel Attard
654338693f fix: Revert "fix: make sure that menu bar gets focus even when you click an item to focus it first (#19710)" (#20019)
This reverts commit 27b2747b61.
2019-08-29 15:06:39 -07:00
Shelley Vohr
a9e3dabc8a build: accidentally inverted a bool (#20029) 2019-08-29 11:11:10 -07:00
Jeremy Apthorp
609403fba6 test: tsify affinity spec (#19961) 2019-08-29 09:59:27 -07:00
Electron Bot
6b55584923 Bump v8.0.0-nightly.20190829 2019-08-29 08:31:27 -07:00
Shelley Vohr
81e6f317c9 chore: improve smoke test for tray (#19991) 2019-08-29 08:07:02 -07:00
Shelley Vohr
7d4e0ad7b0 build: simplify unicode console output (#20017) 2019-08-29 10:46:54 -04:00
Tomáš Hübelbauer
35ebbb5f6e docs: add a CSP meta tag to make the tutorial compliant with the security checklist (#19819)
I've asked #19775 because I was frustrated with how hard it was to find a way to fix (instead of hide) the CSP warning in Electron and I complained that even the official quick start guide wasn't compliant with the security checklist at https://electronjs.org/docs/tutorial/security. Someone helped me out with a CSP meta tag which I have later noticed is indeed mentioned in the checklist, too: https://electronjs.org/docs/tutorial/security#csp-meta-tag. I have not used the checklist one verbatim because it prevents a `script` tag from working when serving `index.html` through the `file:` protocol as the quick start does. I instead used the one the person in my issue recommended which seems to work well to me. I am not that well versed in CSP so there might be a better policy to include with the quick start, but this is what I've got for now.
2019-08-29 17:06:51 +09:00
Jeremy Apthorp
c819fbe852 test: move WebContentsView spec (#19990) 2019-08-29 16:17:44 +09:00
Alexey Kuzmin
c03288f458 chore: add missing includes (#20003) 2019-08-29 15:57:11 +09:00
Jeremy Apthorp
90d62e5b98 fix: nws13n: make ses.setUserAgent work (#20014)
* refactor tests to better control window creation

* fix: nws13n: make ses.setUserAgent work
2019-08-29 15:50:14 +09:00
Cheng Zhao
b3947d6a83 chore: cache URLLoaderFactory per-session (#19998)
* cache the URLLoaderFactory in AtomBrowserContext

* use cached loader factory in AtomURLLoaderFactory
2019-08-29 15:07:46 +09:00
Milan Burda
eed72c35d7 feat: add session.downloadURL() (#19889) 2019-08-28 20:27:20 -07:00
Jeremy Apthorp
79e936aea8 test: fix clearAuthCache test (#20015) 2019-08-28 17:43:12 -07:00
Milan Burda
01fdb80f7c refactor: implement isRemoteModuleEnabled via getLastWebPreferences() (#19220) 2019-08-28 15:57:03 -07:00
Shelley Vohr
04debd5890 build: add test runner parameter checks (#19994) 2019-08-28 15:19:52 -07:00
Jeremy Apthorp
af138dab55 test: move webRequest spec to main runner (#19992) 2019-08-28 13:56:15 -07:00
Jeremy Apthorp
f212ed85dd test: tsify sub-frames spec (#19965) 2019-08-28 13:55:01 -07:00
Jeremy Apthorp
99de0975c3 test: tsify powerMonitor spec (#19963) 2019-08-28 13:54:50 -07:00
Jeremy Apthorp
41d8247ffc test: tsify internal-spec (#19962) 2019-08-28 13:54:42 -07:00
Charles Kerr
217ed9aabc fix: gtk_init() called 2x in AtomBrowserMainParts (#19986)
Fixes #19984.
2019-08-28 12:36:03 -05:00
Shelley Vohr
538c4763cf chore: remove unused config files (#19997) 2019-08-28 09:18:49 -07:00
Electron Bot
3bc5302d78 Bump v8.0.0-nightly.20190828 2019-08-28 08:31:11 -07:00
Charles Kerr
987300c97a refactor: omit redundant map searches (#19929)
* refactor: don't walk maps twice to remove elements

* refactor: don't walk maps twice to read elements

* refactor: don't walk maps twice to insert elements

* refactor: don't walk map 3x on UvTaskRunner timeout

* refactor: more don't-walk-maps-twice cleanup

* fixup! refactor: don't walk maps twice to insert elements

* refactor: don't walk containers twice when erasing

* refactor: omit excess lookups in RemoteObjectFreer
2019-08-28 09:39:21 -05:00
Heilig Benedek
27ce6a9cd3 fix: handle WM_GETMINMAXINFO instead of letting chromium do it (#19928)
* fix: remove WM_GETMINMAXINFO workaround since it's no longer needed

* fix: handle WM_GETMINMAXINFO ourselves

* fix: remove part of the chromium WM_GETMINMAXINFO handler
2019-08-28 09:34:34 +09:00
Jeremy Apthorp
832c926712 fix: allow unsandboxed renderers to request new privileges (#19953)
* fix: allow unsandboxed renderers to request new privileges

* add test
2019-08-27 18:35:46 -04:00
Marat Abdullin
ae9424d93a feat: add "accessibleTitle" property to a BrowserWindow instance (#19698)
Sometimes it's necessary to convey more information about the window to screen reader users only (simply putting everything to the window title might be unnecessarily noisy).

For example, Chromium uses that technique to tell screen reader users that the window is in incognito mode (the incognito window looks differently and doesn't have «incognito» in the title, but for blind users the screen reader will announce that it's incognito).
2019-08-28 00:35:34 +02:00
Jeremy Apthorp
1dcda7b809 chore: DCHECK for correct thread in EventEmitter::EmitWithSender (#19959) 2019-08-27 15:15:52 -07:00
Jeremy Apthorp
bdc84d0bfb test: tsify session spec (#19604) 2019-08-27 14:55:19 -07:00
Jeremy Apthorp
4b8e1588b4 fix: remove unused header from extensions-only file (#19947) 2019-08-27 10:59:22 -07:00
Cheng Zhao
4eee71ffbf feat: migrate webRequest module to NetworkService (Part 9) (#19976)
* no need to get WebContents for URLLoaderFactory

* consult embedder for network_factory created in net module

* set disable_web_security to false

* re-enable webRequest tests in net module
2019-08-27 09:12:33 -07:00
Electron Bot
bdb20d53cb Bump v8.0.0-nightly.20190827 2019-08-27 08:31:13 -07:00
Charles Kerr
7e61cd0dfb fix: i18n of gtk msgbox buttons (#19904)
* fix: i18n of gtk msgbox buttons

similar to #19756 (12df0e8) but for messageboxes

* refactor: DRY the gtk+ button mnemonics

* fix: don't compile gtk_util on non-Linux platforms

rename from `gtk_util.[cc,h]` to `util_gtk.[cc,h]` so that it gets
picked up by the `extra_source_filters` rule in `BUILD.gn`.

* fix: make linter happy

It really shows that I cannot build locally atm... :P
2019-08-27 09:57:12 -05:00
Electron Bot
2542c51c48 chore: bump node in DEPS to v12.9.1 (#19980) 2019-08-27 07:51:28 -07:00
Jeremy Apthorp
92c3a4e4c2 test: tsify spec for experimental views api (#19966) 2019-08-27 16:37:30 +09:00
Samuel Attard
4e809f0048 fix: ensure that reloads retain modified window background colors (#19967) 2019-08-26 23:14:23 -07:00
Heilig Benedek
d04072d1eb fix: don't call SetBounds on restore (#19886) 2019-08-26 14:04:20 -07:00
Kuts Alexey
cddbddc543 feat: HTTP preconnect feature minimal for electronjs (#18671) 2019-08-26 09:47:32 -07:00
Electron Bot
c57db7f163 Bump v8.0.0-nightly.20190826 2019-08-26 08:32:02 -07:00
Milan Burda
94c6b256de refactor: simplify ShowSaveDialog, make consistent with ShowOpenDialog (#19924) 2019-08-26 13:12:09 +02:00
Heilig Benedek
f6c523db13 fix: adjust window size in NCCALCSIZE instead of adding insets (#19883) 2019-08-26 10:03:57 +09:00
Charles Kerr
080fdb3817 fix: command-line scheme switch values' spillover (#19912)
* fix: command-line scheme switch values' spillover

The value of one of the scheme command-line switches
shouldn't spill over into other switches.

Fixes #19911

* chore: make linter happy
2019-08-26 09:40:44 +09:00
Milan Burda
181f663cf1 refactor: use C++11 member initializers in native_mate (#19925) 2019-08-26 09:16:28 +09:00
Electron Bot
1eda92859f Bump v8.0.0-nightly.20190825 2019-08-25 08:31:03 -07:00
Electron Bot
f54bc1cb2e Bump v8.0.0-nightly.20190824 2019-08-24 08:31:28 -07:00
Electron Bot
b7d25ccb77 chore: bump chromium to 62327c655093c821aa0fcfc6db53f5fd943e08c7 (master) (#19792)
* chore: bump chromium in DEPS to f3bf493731e868e1f5f48e7e1adc02ea5eccfbbd

* chore: bump chromium in DEPS to 4db0c87d4aa6f27ffa0b5fc77d20e10047962484

* chore: bump chromium in DEPS to d933a504c264dc8fe85267f47aef3588531875b5

* chore: bump chromium in DEPS to 34afdb68980f581ae911b85b727bc17e126cf5f9

* update disable-redraw-lock.patch

https://chromium-review.googlesource.com/c/chromium/src/+/1600387

* update desktop_media_list.patch

https://chromium-review.googlesource.com/c/chromium/src/+/1729156

* update notification_provenance.patch

https://chromium-review.googlesource.com/c/chromium/src/+/1742779

* update printing.patch

https://chromium-review.googlesource.com/c/chromium/src/+/1646772

* update verbose_generate_bpad_syms.patch

https://chromium-review.googlesource.com/c/chromium/src/+/1745986

* update patch metadata

* remove printing_compositor manifests

https://chromium-review.googlesource.com/c/chromium/src/+/1742734

* update for URLLoaderFactoryType enum

https://chromium-review.googlesource.com/c/chromium/src/+/1754716

* remove gin string16 converter

https://chromium-review.googlesource.com/c/chromium/src/+/1750093

* ClearCompositorFrame() has been removed

https://chromium-review.googlesource.com/c/chromium/src/+/1746301

* message_loop -> message_loop_current

https://chromium-review.googlesource.com/c/chromium/src/+/1738552

* include resource_response header

* pdf compositor no longer uses service manager

https://chromium-review.googlesource.com/c/chromium/src/+/1742734

* chore: bump chromium in DEPS to 00d5933101d8d8dc9546eadbe7ee1b41077e6db1

* pane focus fns aren't pure virtual anymore

https://chromium-review.googlesource.com/c/chromium/src/+/1708767

* fix: make std::hash value-non-const

broken by https://chromium-review.googlesource.com/c/chromium/src/+/1711202

* update swiftshader in zip_manifests

https://swiftshader-review.googlesource.com/c/SwiftShader/+/34911

* address feedback from @deepak1556

* don't enable kLegacyWindowsDWriteFontFallback

https://chromium-review.googlesource.com/c/chromium/src/+/1753006

* chore: bump chromium in DEPS to 84497314005e1968da06804f8fde539d9872310e

* update printing.patch

remove bottom diff owing to https://chromium-review.googlesource.com/c/chromium/src/+/1678182 and update for https://chromium-review.googlesource.com/c/chromium/src/+/1678182

* convert CookieChangeListener to new Mojo types

https://chromium-review.googlesource.com/c/chromium/src/+/1753371

* rename ui::ClipboardType -> ui::ClipboardBuffer

https://chromium-review.googlesource.com/c/chromium/src/+/1758730

* logging::LoggingSettings log_file -> log_file_path

https://chromium-review.googlesource.com/c/chromium/src/+/1699477

* roll DEPS to latest lkgr

* fix: override GetFontLookupTableCacheDir()

When Chromium goes to use its fallback font table creation code paths,
it creates the cache directory it uses by calling
GetFontLookupTableCacheDir() with a path that doesn't exist in Electron.
To ensure that a legitimate file path is created, we need to override it
with Electron's DIR_USER_DATA so it doesn't use chrome::DIR_USER_DATA.

* chore: bump chromium in DEPS to 6758a0879931bc4df630a80a36c82d7855ae3155

* update pthread_fchdir patch

https://chromium-review.googlesource.com/c/chromium/src/+/1759149

* update printing patch

* update cookie usage and fn signatures

https://chromium-review.googlesource.com/c/chromium/src/+/1758437

* chore: bump chromium in DEPS to bdaca97e1cc27fb977e56f30f74cdb906da9527e

* remove fix_make_std_hash_value-non-const.patch

https://chromium-review.googlesource.com/c/chromium/src/+/1762335

* Convert enum to enum class for FocusManager::FocusChangeReason

https://chromium-review.googlesource.com/c/chromium/src/+/1767281

* roll DEPS to latest lkgr

* update dom_storage_limits.patch

https://chromium-review.googlesource.com/c/chromium/src/+/1767556
2019-08-23 18:14:23 -07:00
Shelley Vohr
c89debd19a refactor: use Error util when only throwing errors (#19837) 2019-08-23 15:49:54 -07:00
Charles Kerr
ef6d4a46c2 chore: make apply_all_patches.py work in both python2 and python3 (#19872) 2019-08-23 15:48:27 -07:00
Milan Burda
81e9dab52f refactor: replace ipcRendererUtils.invoke() with ipcRendererInternal.invoke() (#19574) 2019-08-23 15:45:50 -07:00
Shelley Vohr
698120daf0 fix: crash on input file handler dialog (#19897)
* fix: crash on input file handler dialog

* invert cancellation logic
2019-08-23 14:18:30 -07:00
Samuel Attard
c61020e9d3 build: use a lower process count for publish builds with no sccache (#19913) 2019-08-23 14:01:12 -07:00
Electron Bot
6144408f3a Bump v8.0.0-nightly.20190823 2019-08-23 08:31:55 -07:00
Milan Burda
7825d043f2 refactor: unify module-list format and exports/electron (#19697) 2019-08-23 11:18:58 +02:00
Shelley Vohr
c6a8b7f959 docs: clarify dock.bounce usage (#19894) 2019-08-23 01:16:18 -07:00
Samuel Attard
6a3922d330 refactor: make util::Promise type safe when chaining in native (#19809)
* refactor: make util::Promise type safe when chaining in native

* fixup! refactor: make util::Promise type safe when chaining in native

* chore: remove spare brackets
2019-08-22 17:03:28 -07:00
loc
f7e3e1f97a fix: mitigate white screen flash after occlusion by disabling compositor recycling (#19873)
* fix: remove white screen flicker by disabling compositor recycling

* chore: disable spec whose flakiness was made obvious by this patch
2019-08-22 15:16:06 -07:00
Cheng Zhao
ab0bf6d238 fix: notify views of content view size change (#19878) 2019-08-22 14:16:56 -07:00
Electron Bot
6667969887 chore: bump node to v12.9.0 (master) (#19863)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2019-08-22 14:12:11 -07:00
Jaime Bernardo
12b00ca942 fix: extern Parse impl for Windows debug builds (#19876)
* fix: extern Parse impl for Windows debug builds

Applies a patch to node.
Externs node::options_parser::Parse implementation for
node::DebugOptions to fix the Windows Debug build.

* fixup: merge extern parse impl patch
2019-08-22 13:16:38 -07:00
Robert Nagy
1f43af5cea feat: add openbsd support in the node module (#19860) 2019-08-22 12:09:15 -07:00
Electron Bot
268094e0ef Bump v8.0.0-nightly.20190822 2019-08-22 08:31:04 -07:00
Heilig Benedek
9ccd6aa0dd feat: enable picture-in-picture mode for video tags (#17686)
* feat: enable picture in picture mode for video tags

* test: add test to verify picture in picture support

* lint: fix indent

* fix: clean up after rebase

* test: update test with 16:9 test video

* fix: .paches after rebase
2019-08-22 19:17:50 +09:00
John Kleinschmidt
46b6bcd99b chore: Update comment for desktop_capturer (#19848)
* chore: Update comment for desktop_capturer

* Guard TopLevelWindow::MoveAbove with ENABLE_DESKTOP_CAPTURER

* Fix lint errors
2019-08-21 15:16:43 -07:00
John Kleinschmidt
4bc7b3b1a4 build: start building Windows on Arm builds (#19780)
* build: add zip manifest for Windows on Arm

* ci: add Windows On Arm testing

(cherry picked from commit 4064e1f4874ff7a37c52c2ad974f92418c7e71c4)

* Fix path to invoke CI on WOA hardware

* Explicitly call 7z.exe to unzip files

* Make sure GCLIENT_EXTRA_ARGS set for WOA builds get prepended on release build

* set proper arch for npm

* Try using Compress-Archive/Expand-Archive

* Revert "Try using Compress-Archive/Expand-Archive"

* disable woa hardware test for now
2019-08-21 17:37:30 -04:00
Shelley Vohr
5e525b3e0f fix: add default media usage strings to info.plist (#19871) 2019-08-21 13:14:25 -07:00
Samuel Attard
612e3f7ff7 build: optimize the CI path where we update the patch files (#19851)
Currently the happy checkout takes 7 minutes and the sad checkout takes
30 minutes.  This updates our CI to run checkout twice for every job to
make the sad checkout take nearer 10 minutes instead.
2019-08-21 14:52:17 -04:00
Shelley Vohr
991a56135d build: dynamically calculate out dir (#19857) 2019-08-21 10:41:35 -07:00
Electron Bot
3bd829aee0 Bump v8.0.0-nightly.20190821 2019-08-21 08:31:24 -07:00
Samuel Attard
674779899e build: ninja count should be 2*cores + 2 (#19852) 2019-08-21 10:25:23 -04:00
Heilig Benedek
3f49f984e6 fix: race condition in NodeStreamLoader (#19811)
* fix: race condition in NodeStreamLoader

* nit: add comments
2019-08-21 12:23:46 +09:00
Cheng Zhao
b7defaaf6a feat: migrate webRequest module to NetworkService (Part 8) (#19841)
* fix: fill uploadData property

* fix: requestHeaders in onBeforeSendHeaders

* fix: responseHeaders in onHeadersReceived

* fix: header keys should not be lowercased

* fix: gin::Dictionary::Get succeeds even though key does not exist...

* fix: throw for invalid filters

* test: re-enable api-web-request-spec

* chore: do not use deprecated base::Value API
2019-08-21 11:14:21 +09:00
Samuel Attard
f10f44acf5 fix: trim branch name before comparing to master (#19853) 2019-08-20 18:10:44 -07:00
John Kleinschmidt
d258797d05 ci: add macOS debug builds (#19831)
* ci: add macOS debug builds

* Fix mac debug builds
2019-08-20 16:11:29 -04:00
Carlos
fb214a599e docs: update documentation under tutorials (#19804) 2019-08-20 09:45:25 -07:00
Electron Bot
a4c0f26f06 Bump v8.0.0-nightly.20190820 2019-08-20 08:32:09 -07:00
Erick Zhao
145b4fae94 feat: implement will-move event on macOS (#19641) 2019-08-20 07:53:43 -07:00
Cheng Zhao
cd1b15a155 feat: migrate webRequest module to NetworkService (Part 7) (#19820)
* fix: gin treats Function as Dictionary when doing convertions

* fix: check if listener exists

* fix: listener callback should be executed in next tick

* feat: make InProgressRequest work

* test: re-enable protocol test that relies on webRequest

* chore: merge conditions
2019-08-20 20:46:20 +09:00
Shelley Vohr
1dc02e6dbc fix: fall back to default logs path in getPath('logs') (#19653) 2019-08-19 15:16:00 -07:00
pi1024e
0851697cb7 docs: fix punctuation errors in native-image.m (#19620)
* Added correct punctuation to sentences in documentation as well as changed lets to consts to pass the docs linter

* Fixed inconsistent indentation
2019-08-19 15:15:13 -07:00
Electron Bot
bd11be98aa chore: bump node to v12.8.1 (master) (#19790)
* chore: bump node in DEPS to v12.8.1

* test: disable parallel/test-http2-reset-flood

Disabled new Worker test owing to a threading issue where the Worker
segfaults on worker.on('message', () => {}). We've disabled failing
worker tests previously as we don't offer first-class support for them
in Electron.
2019-08-19 14:15:04 -07:00
Shelley Vohr
a54d438e18 chore: upgrades-wg owns DEPS (#19830) 2019-08-19 13:56:20 -07:00
Heilig Benedek
b33558d822 refactor: mojofy autofill renderer->browser (#18760)
* re-implement renderer->browser calls with mojo

* lint

* fix: clean up after rebase

* lint

* fix: lazy load autofill drivers
2019-08-19 13:13:24 -07:00
Shelley Vohr
43e6d7fe88 chore: add error throwing utility (#19803)
* chore: add error throwing utility

* feedback from review

* DRY out repeated isolate calls
2019-08-19 09:10:18 -07:00
Electron Bot
8f1c51eaea Bump v8.0.0-nightly.20190819 2019-08-19 08:32:31 -07:00
Electron Bot
090786b037 Bump v8.0.0-nightly.20190818 2019-08-18 08:31:14 -07:00
Electron Bot
dba3927b4e Bump v8.0.0-nightly.20190817 2019-08-17 08:31:36 -07:00
Micha Hanselmann
56d10aeef7 docs: add mising return desc (#19778) 2019-08-16 09:24:17 -07:00
Shelley Vohr
6a76540cb6 fix: return type in open/save dialogs (#19781) 2019-08-16 08:55:01 -07:00
Electron Bot
2c002a3342 Bump v8.0.0-nightly.20190816 2019-08-16 08:32:35 -07:00
Jean-Philippe Morin
42ac64284f docs: MessageBoxOptions.icon should allow type string (#19782)
In the `dialog` documentation (and the generated typings in `electron.d.ts`), it is mentionned that the `icon` property only supports `NativeImage`, but the `nativeImage` documentation says that:

```
In Electron, for the APIs that take images, you can pass either file paths or NativeImage
```
2019-08-16 17:06:02 +02:00
Cheng Zhao
2595cb5698 fix: compilation failure after chromium upgrade (#19787) 2019-08-16 07:55:34 -07:00
Cheng Zhao
c3bb73a711 feat: migrate webRequest module to NetworkService (Part 6) (#19752)
* Implement OnBeforeSendHeaders

* Pass the request

* Handle simple listeners

* Handle response listeners

* Read responses from listener
2019-08-16 10:19:05 +09:00
Micha Hanselmann
e59095423e docs: add exemplary fiddle for launch in fiddle feat (#19759)
* add fit-screen

* new url format

* nit
2019-08-15 15:37:37 -07:00
Electron Bot
db21391156 chore: bump chromium to cbeb16cf544f79c1990f1eae4d4fe (master) (#19610)
Co-authored-by: Erick Zhao <erickzhao@github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by Micha Hanselmann <DeerMichel@github.com>
2019-08-15 13:50:58 -07:00
Shelley Vohr
12df0e8994 fix: use GTK3 stock i18n strings (#19756) 2019-08-15 10:31:07 -07:00
Electron Bot
ca0cf5415e Bump v8.0.0-nightly.20190815 2019-08-15 08:31:20 -07:00
Shelley Vohr
33f2ec6355 fix: ensure child_process.fork() doesn't modify main (#19742) 2019-08-15 08:01:58 -07:00
Julien Isorce
680399f476 feat: Implement BrowserWindow.getMediaSourceId() and BrowserWindow.moveAbove(mediaSourceId) (#18926)
* feat: Implement BrowserWindow.moveAbove(mediaSourceId)

BrowserWindow.{focus,blur,moveTop}() are not enough in some
situations. For example when implementing an overlay that
follows another window that can lose focus. In that case
it is useful to move the overlay above the tracked window.

sourceId is a string in the format of DesktopCapturerSource.id,
for example "window:1869:0".

Notes: Added BrowserWindow.moveAbove(mediaSourceId)

https://github.com/electron/electron/issues/18922

* feat: Implement BrowserWindow.getMediaSourceId

Return the Window id in the format of DesktopCapturerSource's id.
For example "window:1234:0".

https://github.com/electron/electron/issues/16460

Notes: Added BrowserWindow.getMediaSourceId
2019-08-15 15:51:15 +09:00
Micha Hanselmann
d0c7a91a50 move image converter to gin (#19655) 2019-08-15 11:18:34 +09:00
Heilig Benedek
27b2747b61 fix: make sure that menu bar gets focus even when you click an item to focus it first (#19710) 2019-08-14 18:11:41 -07:00
Micha Hanselmann
9b1f698770 docs: mention QuickEdit in Windows troubleshooting (#19701)
* shot a trouble

* change title
2019-08-14 14:23:12 -07:00
Samuel Attard
efa1818cb4 feat: add new nativeTheme API (#19656)
* feat: add new nativeTheme API

* chore: deprecate and clean up old systemPreferences theme APIs in favor of new nativeTheme module

* chore: clean up and deprecate things per feedback

* chore: add tests for deprecate and clean up invert impl

* build: when is a boolean not a boolean???
2019-08-14 13:42:55 -07:00
Electron Bot
246187a20f Bump v8.0.0-nightly.20190814 2019-08-14 08:31:05 -07:00
Micha Hanselmann
4c54cfc692 move net converter to gin (#19734) 2019-08-14 14:15:34 +09:00
Erick Zhao
5d892a557f fix: proper l10n on Linux dialog buttons (#19725)
* fix: proper l10n on linux dialog

* switch string
2019-08-13 20:22:25 -07:00
Cheng Zhao
49fe2604b3 Revert "fix: activate the uv_loop on incoming IPC messages (#19449)" (#19727)
This reverts commit 8028c57b42.
2019-08-13 14:03:25 -07:00
Shelley Vohr
28466a39d8 feat: add property customization to save dialogs (#19672) 2019-08-13 13:40:07 -07:00
Shelley Vohr
e1824c00a9 feat: macOS removal fallback when moveItemToTrash fails (#19700)
* feat: macOS removal fallback when moveItemToTrash fails

* platform_util shouldn't know about mate::Arguments

* pull full_path from args as well
2019-08-13 12:31:53 -07:00
Shelley Vohr
b5798326e8 feat: add dontAddToRecent to windows showOpenDialog (#19669) 2019-08-13 08:48:22 -07:00
Electron Bot
fee84de782 Bump v8.0.0-nightly.20190813 2019-08-13 08:33:27 -07:00
Shelley Vohr
e8fa248571 fix: crash in window.print() (#19690)
* fix: crash in window.print()

* add preliminary tests
2019-08-12 23:44:14 -07:00
Micha Hanselmann
ba5ee79af8 move file dialog converter to gin (#19709) 2019-08-13 14:49:48 +09:00
Cheng Zhao
69eac0d9d2 feat: migrate webRequest module to NetworkService (Part 5) (#19714)
* Pass WebRequest to ProxyingURLLoaderFactory

* Call WebRequestAPI in InProgressRequest

* Store the listeners

* Pass the request and response

* Add stub to handle the events

* Use extensions::WebRequestInfo

* Make sure webRequest is managed by Session

* chore: make creation of WebRequestNS more clear

* fix: check WebContents for service workers
2019-08-13 14:47:35 +09:00
Electron Bot
9713fa09e7 chore: bump node to v12.8.0 (master) (#19521)
* chore: bump node in DEPS to v12.7.0

* chore: update node patches v12.6 to v12.7

Removed patches that are no longer necessary because we've upstreamed few changes already, and 3 way merge others

* fix: update build gn patch

* chore: bump node in DEPS to v12.8.0

* chore: update node patches v12.7 to v12.8

Removed patches that are no longer necessary because we've upstreamed few changes already, and 3 way merge others

* fix: Add patch to revert crypto createhash changes

The original node commit contains changes/calls to functions that are not supported in boringssl.

* disable node tests

* Remove outdated patch, already merged upstream
2019-08-12 17:29:34 -07:00
Erick Zhao
f654da9f56 feat: add about panel customization on Windows (#19420) 2019-08-12 16:32:51 -07:00
Сковорода Никита Андреевич
ef03c4b7bb docs: fix app.on('session-created' example (#19713)
It does not have the 'event' argument.

Refs: https://github.com/electron/electron/pull/12123
Refs: https://github.com/electron/electron/pull/15236
Refs: https://github.com/electron/electron/issues/15203
2019-08-12 14:46:42 -07:00
Samuel Attard
13df748f02 build: fix nightly install command in release notes (#19711) 2019-08-12 13:01:52 -07:00
Cheng Zhao
04dbd5c53f fix: don't handle browser messages before document element is created (#19718)
* fix: don't handle browser messages before document element is created

* fix: bind ElectronApiServiceImpl later

DidCreateDocumentElement is called before the ElectronApiServiceImpl
gets bound.

* chore: add comment
2019-08-12 10:38:41 -07:00
Electron Bot
398c5d553d Bump v8.0.0-nightly.20190812 2019-08-12 08:32:19 -07:00
Electron Bot
39f0bd3e82 Bump v8.0.0-nightly.20190811 2019-08-11 08:31:23 -07:00
Cheng Zhao
2dffc9f6eb feat: migrate webRequest module to NetworkService (Part 4) (#19679)
* chore: use gin in WebRequest

* Add stubs for APIs
2019-08-11 13:24:51 +09:00
Electron Bot
bc0a2d1b28 Bump v8.0.0-nightly.20190810 2019-08-10 08:31:20 -07:00
Erick Zhao
1749af9707 fix: avoid losing focus on inputs when opening menu (Windows/Linux) (#19657)
* remove cause of issue

* remove comment
2019-08-09 14:10:11 -07:00
Micha Hanselmann
57507ca37c refactor: move native window gin converter (#19577)
* move native window gin converter

* extract to new file
2019-08-09 13:43:18 -07:00
Shelley Vohr
7861e9f728 feat: allow customization of print page header and footer (#19688)
* feat: allow customization of more print settings

* address feedback from @jkleinsc

* header and footer are optional
2019-08-09 13:16:25 -07:00
Electron Bot
84cbc1d6c0 Bump v8.0.0-nightly.20190809 2019-08-09 08:32:09 -07:00
Milan Burda
03debb4ef9 feat: add tray.focus() (#19548) 2019-08-09 07:43:48 -07:00
Shelley Vohr
ed3b69ffb1 docs: update hasShadow for win and linux (#19675) 2019-08-08 15:49:43 -07:00
Milan Burda
0fb3c8cb7c feat: add new options to tray.displayBalloon() (#19544) 2019-08-08 14:43:33 -07:00
Richard Townsend
58840f39bb docs: document device scaling issue (#19387) 2019-08-08 13:59:44 -07:00
Pedro Pontes
da29ce355f fix: always use new site instance for a new navigation. (#18860) 2019-08-08 11:48:33 -07:00
Electron Bot
7a9e6659f0 Bump v8.0.0-nightly.20190808 2019-08-08 08:32:04 -07:00
Micha Hanselmann
9eb89b4ac7 fix: return correct bounds on will-resize (#19639) 2019-08-07 19:58:56 -07:00
Shelley Vohr
fec54c9c5d test: remove ffi specs (#19661) 2019-08-07 11:41:56 -07:00
Electron Bot
67169a5d0c Bump v8.0.0-nightly.20190807 2019-08-07 08:31:14 -07:00
Robo
eebea63bed chore: remove pre network service classes from shell/browser/net (#19644)
* refactor: rm IOThread class

* chore: rm expose-net-observer-api.patch

* chore: rm unused shell/browser/net/ classes

* chore: mv CertVerifierClient to separate header

* chore: rm url_request_context_getter references
2019-08-07 11:04:09 -04:00
Shelley Vohr
9c7a216814 fix: crash on print cancellation and silent print settings (#19598)
* fix: crash on print cancellation

* fix: update printing patch for new options

* refactor: use DictionaryValue for printBackground
2019-08-07 10:47:24 -04:00
Micha Hanselmann
a8861e6a66 move gurl converter to gin (#19578) 2019-08-07 16:18:26 +09:00
Erick Zhao
8a9a5d69b6 fix: normalize behavior of win.setOpacity() for invalid number values across operating systems (#19535)
* fix: define behavior for out-of-bounds setOpacity

* fix linux issue

* fix getOpacity behaviour

* wrong variable

* normalize more stuff

* docs

* test: use ifdescribe helper

* Update spec-main/api-browser-window-spec.ts

Co-Authored-By: Charles Kerr <ckerr@github.com>

* fixes

* more tests!!!

* Update shell/browser/native_window_views.cc

Co-Authored-By: Charles Kerr <ckerr@github.com>

* Update shell/browser/native_window_mac.mm

Co-Authored-By: Charles Kerr <ckerr@github.com>
2019-08-07 16:17:32 +09:00
Cheng Zhao
761a4deab3 feat: associate InProgressRequest with requests (#19648) 2019-08-07 09:21:53 +09:00
CezaryKulakowski
50cc54e50b fix: keep references to active menus created by api Menu (#19427)
Without this such menus would be destroyed by js garbage collector even
when they are still displayed.
2019-08-06 14:55:00 -07:00
Shelley Vohr
da2401ff39 spec: fix dirtyChai spec failures (#19652) 2019-08-06 10:27:33 -07:00
Electron Bot
c3d0fed9ed Bump v8.0.0-nightly.20190806 2019-08-06 08:31:49 -07:00
András Polgár
c0982d7316 docs: update link to webContents.send (#19608) 2019-08-05 20:58:06 -07:00
Shelley Vohr
f0396c19be fix: clearRecentDocuments role on Windows (#19599)
* fix: clear recent documents on windows

* chore: don't check for version < win 7
2019-08-05 15:11:43 -07:00
Samuel Attard
33a9d898a6 fix: make child windows not crash when ipc messages are received (#19553) 2019-08-05 12:50:51 -07:00
Samuel Attard
cfd230d7f1 docs: remove implicit 'any' and 'Object' types from the docs (#19585)
* docs: remove implicit 'any' and 'Object' types from the docs

* docs: more docs improvements, remove all remaining empty interfaces

* chore: update tests for better types
2019-08-05 10:45:58 -07:00
Milan Burda
ee674acca4 feat: add tray.removeBalloon() (#19547) 2019-08-05 08:52:47 -07:00
Electron Bot
8f043bbdaa Bump v8.0.0-nightly.20190805 2019-08-05 08:32:11 -07:00
Erick Zhao
750005f02b fix: handle edge behavior for about panel on Linux (#19586)
* fix: graceful About dialog fail/exit (Linux)

* Allow current to travel along path with no electrical impedance
2019-08-05 07:53:40 -07:00
Shelley Vohr
0bb227f8a4 fix: crash on window.print() (#19601) 2019-08-05 09:19:01 -04:00
Zach Bloomquist
40d9f828d4 docs: Fix process.enablePromiseAPI typo in promisification.md (#19576)
* Fix `process.enablePromiseAPI` typo in promisification.md

* Update promisification.md
2019-08-05 10:19:48 +09:00
Jeremy Apthorp
49f2071e22 test: tsify netlog spec (#19605) 2019-08-05 09:47:42 +09:00
Jeremy Apthorp
f08be2162a test: tsify callbacks-registry spec (#19606) 2019-08-05 09:46:58 +09:00
Electron Bot
45e452557b Bump v8.0.0-nightly.20190804 2019-08-04 08:32:25 -07:00
Electron Bot
df94cc1b13 Bump v8.0.0-nightly.20190803 2019-08-03 08:31:26 -07:00
Jeremy Apthorp
bd28b876a0 fix: disable 'reopen windows?' dialog after crash (#19584) 2019-08-02 17:04:41 -07:00
Electron Bot
e959137a4b chore: bump chromium to 32e0bab929213da1019992bf31d29 (master) (#19488) 2019-08-02 16:56:46 -07:00
Jeremy Apthorp
d0800aa200 test: report hexadecimal status codes on windows (#19597) 2019-08-02 14:23:11 -07:00
Milan Burda
3011a0f14f refactor: convert ipc-renderer.ts to TypeScript (#19556)
* refactor: convert ipc-renderer.ts to TypeScript

* Update typings/internal-ambient.d.ts

Co-Authored-By: Samuel Attard <sattard@slack-corp.com>
2019-08-02 14:35:04 -05:00
Micha Hanselmann
ee64c6ab86 refactor: move file path gin converter to new file (#19575)
* move file path gin converter to new file

* move string16 gin conv to new file
2019-08-02 14:34:30 -05:00
Electron Bot
79277cc383 Bump v8.0.0-nightly.20190802 2019-08-02 08:31:00 -07:00
Andy Dill
e78b902a7d fix: expose setMenuBarVisibility again (#19557) 2019-08-01 14:01:05 -07:00
Milan Burda
e8c4e6f0b3 fix: use correct constants for tray icon messages (#19549) 2019-08-01 14:00:37 -07:00
Electron Bot
2e785899dd Bump v8.0.0-nightly.20190801 2019-08-01 08:31:16 -07:00
Milan Burda
115b57649e docs: fix TouchBar related documentation (#19444) 2019-08-01 10:59:26 -04:00
Micha Hanselmann
b80429ab7f refactor: migrate dialog API to //gin (#19482)
* get ShowMessageBoxSync working with gin

* move more dialog methods

* all methods moved

* cleanup

* add util func for template creation
2019-08-01 10:57:41 -04:00
Samuel Attard
c190e64012 build: update the ABI version for electron 8 nightlies (#19551) 2019-08-01 10:54:26 -04:00
John Kleinschmidt
3a6cafaf0a fix: use WeakPtr to detect deletion (#19257) 2019-07-31 19:48:40 -04:00
Milan Burda
c76b0b70c1 refactor: remove content::WebContentsObserver from Event (#19251) 2019-07-31 15:20:28 -07:00
Jeremy Apthorp
c71cdce0b7 chore: disable JS impl when //extensions support is on (#19512) 2019-07-31 14:25:41 -07:00
Shelley Vohr
a5f87cee6b doc: add missing MenuItem roles (#19329) 2019-07-31 14:13:56 -07:00
Samuel Attard
bf66fe51f6 build: fix first beta version choosing logic 2019-07-31 11:04:19 -07:00
Micha Hanselmann
47a38daee2 feat: migrate custom macOS tray view to native one (#18981)
* restore stash

revert

some things work others dont

tracking area for rescue

manual popup

restore drag n drop

cleanup

* fix: make tray not block main process (#18880)

* fix: make tray not block main process

* make AtomMenuModel refcounted

* add support for ansi codes in title

add remove TODOs

* chore: use ScopedPumpMessagesInPrivateModes in tray (#18977)

* chore: use ScopedPumpMessagesInPrivateModes in tray

* revert refcounting of AtomMenuModel

* Prefer WeakPtr for posting tasks to handle unexpected destruction

* cleanup .h

* cleanup .mm

* add imports

add missing include

* fix: crash when tray popup called twice (#18999)

* remove highlightMode and TODOs

* remove unnecessary copy
2019-07-31 10:52:50 -07:00
Electron Bot
cde79501e3 Bump v7.0.0-nightly.20190731 2019-07-31 08:31:25 -07:00
Shelley Vohr
51ce3e5a83 fix: set default dock bounce type (#19523) 2019-07-31 08:20:45 -07:00
Milan Burda
d6605193a1 build: fix with ENABLE_OSR disabled (#19533) 2019-07-31 14:34:04 +02:00
Shelley Vohr
69646f4258 fix: throw better error on getPath('logs') (#19514) 2019-07-30 13:55:04 -07:00
Erick Zhao
e74daf2d19 refactor: move gfx::ImageSkia functions to their own util file (#19460)
* initial refactor

* fix lint

* 🚚🚚🚚🚚🚚

* change year in copyright?

* lint more

* remove bad code

* add missing header

* fix: add missing ifdef guard

* fix variable call
2019-07-30 13:49:24 -07:00
Micha Hanselmann
af3316707f fix invalid lang tags (#19513) 2019-07-30 13:11:56 -07:00
Micha Hanselmann
6e367dab9a patch electron_node (#19436) 2019-07-30 14:08:27 -04:00
Electron Bot
38c918ed5c Bump v7.0.0-nightly.20190730 2019-07-30 08:32:38 -07:00
Milan Burda
9ab3ec080f fix: tray.displayBalloon() does not work with custom icon on Windows (#19330) 2019-07-30 14:06:16 +02:00
Micha Hanselmann
42a483ad27 feat: add getBounds() method for BrowserView (#19370)
* implement getBounds on mac

* add Linux/Win impl

* add test

* add docs
2019-07-29 19:43:05 -07:00
Micha Hanselmann
c06007175f docs: update supported versions section (#19461)
* update support docs

* Update support.md
2019-07-29 15:38:04 -07:00
Shelley Vohr
aaca9011ae fix: [wc|bw]-created events do not emit an event object (#19465)
* fix: emit real Event instead of empty object in [wc|bw]

* chore: add ability to emit empty events
2019-07-29 13:54:37 -07:00
Jeremy Apthorp
33d1e87163 chore: simplify intentional-crash code (#19464) 2019-07-29 11:36:16 -07:00
Jeremy Apthorp
71b1b69339 fix: [extensions] remove InitForIncognitoProfile (#19477)
https://chromium-review.googlesource.com/c/chromium/src/+/1699223
2019-07-29 11:34:57 -07:00
Erick Zhao
ceb64b3b1b docs: BrowserWindow transparency limitation on Windows (#19399)
* docs: BrowserWindow transparency limitation on Win

* fix md link
2019-07-29 11:22:31 -07:00
Micha Hanselmann
9da1251dbc add desc (#19417) 2019-07-29 11:21:56 -07:00
Erick Zhao
c1d7d60ca2 docs: specify macOS-only about panel option (#19439) 2019-07-29 11:21:29 -07:00
Milan Burda
8a33118e36 fix: refactoring regression in LocationProxy (#19495) 2019-07-29 11:20:19 -07:00
Samuel Attard
4838bd7834 fix: use GetAuraColor to get theme dependant menu bg color (#19469) 2019-07-29 10:33:43 -05:00
Electron Bot
5e930bf940 Bump v7.0.0-nightly.20190729 2019-07-29 08:31:07 -07:00
Jeremy Apthorp
2983701c75 fix: remove .pdb from symbol file names (#19483)
* fix: remove .pdb from symbol file names

* Update dump_syms.py
2019-07-29 09:41:58 -04:00
Valentin Hăloiu
0732da1b4a build: remove GConf and dconf dependencies on linux (#19498) 2019-07-29 08:33:47 -04:00
foo bar code
4e0e615406 fix: Expose missing Add/RemoveExtraParameter methods to macOS node child processes (#15790)
* Expose missing crash reporter methods in mac node processes

* Crashpad migration
2019-07-29 09:46:35 +09:00
Electron Bot
c9a455ea49 Bump v7.0.0-nightly.20190728 2019-07-28 08:32:16 -07:00
Electron Bot
00a1f4395b Bump v7.0.0-nightly.20190727 2019-07-27 08:32:00 -07:00
Shelley Vohr
6c9d40ec33 feat: emit always-on-top-changed on macOS (#19462)
* feat: emit always-on-top-changed on macOS

* update event emission test for macos
2019-07-26 22:25:51 -07:00
Milan Burda
50c7eb58a1 refactor: don't use NSClassFromString in TouchBar code (#19445) 2019-07-27 01:20:25 +02:00
Shelley Vohr
c6bcf49acc chore: clean up BrowserView/TopLevelWindow New impl (#19375)
* chore: clean up BrowserView::New impl

* also default TL win options dict
2019-07-26 16:18:13 -07:00
Shelley Vohr
5aa1385cfc doc: fix GPU infoType typings (#19470) 2019-07-26 16:16:38 -07:00
Samuel Attard
db3cf52add docs: add support for readonly,deprecated and platform doc annotations (#19478) 2019-07-26 16:12:59 -07:00
Samuel Attard
12bbbef688 docs: fix type information for contents.sendInputEvent (#19479)
The `event` type and keyword is reserved by the typescript generator, in the future we should throw an error from the generator if someone uses a reserved interface like that.

This also splits and documents the InputEvent type way better so that TS
users get strong type safety.

Fixes electron/typescript-definitions#36
2019-07-26 16:11:50 -07:00
Samuel Attard
48f2807473 docs: fix app.getPath types so that "name" is a string enum (#19480)
* docs: fix app.getPath types so that "name" is a string enum

Fixes https://github.com/electron/typescript-definitions/issues/140

* Update app.md
2019-07-26 16:11:22 -07:00
Shelley Vohr
504407c5df fix: correctly emit BrowserWindow alwaysOnTop status in change event (#19463)
* fix: correctly emit alwaysOnTop in change event

* add a test for emitted alwaysOnTop value
2019-07-26 15:53:31 -07:00
Electron Bot
4d23b9e031 chore: bump chromium to 2bbf84f6437b49c70922b65b38bf3 (master) (#19451)
* chore: bump chromium in DEPS to 644eb098aeffb5e799ab3571eac0d35fa24ef641

* chore: update chromium patches

* chore: update v8 patches

* chore: bump chromium in DEPS to 9eecb7a9f652bbf84f6437b49c70922b65b38bf3

* chore: update patches
2019-07-26 12:18:32 -07:00
Jeremy Apthorp
dc5574cbde test: move autoUpdater specs to main process (#19440) 2019-07-26 10:52:57 -07:00
Electron Bot
636dd38164 Bump v7.0.0-nightly.20190726 2019-07-26 08:31:42 -07:00
Jeremy Apthorp
d50298ed96 test: move menu spec to main process (#19412) 2019-07-26 10:17:14 -04:00
Jeremy Apthorp
2a5d40617a test: move the last of the browser window specs (#19295)
* move devtools extensions tests

* move executeJavaScript tests

* move previewFile test

* move contextIsolation tests

* move OSR tests

* RIP api-browser-window-spec.js

          .--. .-,       .-..-.__
        .'(`.-` \_.-'-./`  |\_( "\__
     __.>\ ';  _;---,._|   / __/`'--)
    /.--.  : |/' _.--.<|  /  | |
_..-'    `\     /' /`  /_/ _/_/
 >_.-``-. `Y  /' _;---.`|/))))
'` .-''. \|:  .'   __, .-'"`
 .'--._ `-:  \/:  /'  '.\             _|_
     /.'`\ :;   /'      `-           `-|-`
    -`    |     |                      |
          :.; : |                  .-'~^~`-.
          |:    |                .' _     _ `.
          |:.   |                | |_) | |_) |
          :. :  |                | | \ | |   |
          : ;   |                |           |
          : ;   |                | Here lies |
          : ;   |                |   1000    |
          : ;   |                |   flaky   |
          : ;   |                |   tests   |
        .jgs. : ;                |           |
-."-/\\\/:::.    `\."-._'."-"_\\-|           |///."-
" -."-.\\"-."//.-".`-."_\\-.".-\\`=.........=`//-".

* remove unused ipcMain listeners

* remove debugging logs

* close windows in offscreen test

* more closeAllWindows

* remove extra logs

* refactor webContents main spec using closeAllWindows
2019-07-26 10:09:33 -04:00
Jeremy Apthorp
16011cacef test: move dialog spec to main process (#19231)
* test: move dialog spec to main process

* skip tests on windows to avoid crash

* more disabling on windows
2019-07-26 09:37:59 -04:00
Milan Burda
4639c68a7b chore: remove no longer needed macOS SDK forward declarations (#19446) 2019-07-26 14:11:37 +02:00
Milan Burda
44efaea6d5 fix: clearing of the backgroundColor property on TouchBarButton (#19437) 2019-07-26 11:52:42 +02:00
Shelley Vohr
bdd626f57a doc: fix types for traceConfig recording_mode (#19448) 2019-07-25 21:42:28 -07:00
Jeremy Apthorp
477661d0e4 feat: allow setting capture mode and max file size in netLog API (#19215) 2019-07-25 16:06:39 -07:00
Samuel Attard
8028c57b42 fix: activate the uv_loop on incoming IPC messages (#19449) 2019-07-25 13:10:14 -07:00
Jeremy Apthorp
0f5cb7995f ci: report test results to appveyor (#19434) 2019-07-25 11:30:56 -07:00
Jeremy Apthorp
e58f8a79ee test: move the TouchBar specs to the main process (#19413) 2019-07-25 11:30:42 -07:00
Shelley Vohr
6b7c66aa04 revert: use circleci v2.1 (#19456)
This reverts commit d45694dcb0.
2019-07-25 10:44:28 -07:00
Shelley Vohr
49096c2359 fix: throw on invalid webRequest filters (#19337)
Closes #11371.

Previously, we didn't consider the return value of the webRequest URLPattern mate converter, which meant that when the pattern wasn't correctly parsed owing to invalid filter specification users would not be made aware of that fact and would just think that the filtering itself had failed. This corrects that error by moving the business logic of url pattern parsing out of the converter and into the function itself so that granular and specific errors can be thrown.

There's also no real reason that i'm aware of not to allow wider breadth of filters by letting users use a wildcard for effective TLD, so I also overrode that (default for the 1-arg Parse is not to allow that).

Finally, I added some examples of url filter types for users to reference.
2019-07-25 10:20:02 -07:00
Electron Bot
65648756b5 Bump v7.0.0-nightly.20190725 2019-07-25 08:31:39 -07:00
Charles Kerr
f6fb877de9 chore: pass base::StringPiece args by value (#19432)
https://cs.chromium.org/chromium/src/base/strings/string_piece.h?l=14
discusses this, saying "Prefer passing StringPieces by value" because
"[p]assing by value generates slightly smaller code."
2019-07-25 10:19:04 -05:00
Shelley Vohr
539078f281 test: clean up and augment Tray module spec (#19410)
* spec: clean and add a new tray spec

* address feedback from @nornagon

* destroy tray after every test consistently
2019-07-24 21:22:08 -07:00
Jeremy Apthorp
86c2ea1cb8 test: move Notification spec to main process (#19414) 2019-07-24 17:18:11 -07:00
Samuel Maddock
95977291f7 feat: preliminary support for //extensions (#17440) 2019-07-24 16:01:08 -07:00
Electron Bot
bd526f97a5 chore: bump chromium to 79eae5b7b2d9dac441ac0182ee160 (master) (#19166) 2019-07-24 15:58:51 -07:00
Samuel Attard
6d83eaaf4b build: use a large machine for node tests as they run on N cores 2019-07-24 14:43:49 -07:00
Samuel Attard
a46e459595 build: disable flaky node tests that fail on linux 2019-07-24 14:43:49 -07:00
Samuel Attard
2132fdfa28 fix: ensure we wait for the inspect to disconnect
This re-orders our node clean up so that we free the environment before
the task runner is cleaned up as node uses the task runner during clean
up.  It also calls WaitForDisconnect() to ensure that inspector agents
are notified that the context is going down.
2019-07-24 14:43:49 -07:00
Samuel Attard
60821c8ab0 build: convert nodejs tap output to junit and store in circleci as test results 2019-07-24 14:43:49 -07:00
Samuel Attard
cf2103d6e9 fix: ensure that the node env is not bootstrapped before running inspector 2019-07-24 14:43:49 -07:00
Samuel Attard
1d06f67672 build: run node tests 2019-07-24 14:43:49 -07:00
Micha Hanselmann
637cfdd9a0 docs: fix broken link in ipcMain docs (#19401) 2019-07-24 11:39:39 -07:00
Shelley Vohr
62e6957f68 spec: don't run codesigning spec on forks (#19418) 2019-07-24 10:55:16 -07:00
Shelley Vohr
9dfc4eb2ff test: add tests for systemPreferences apis (#19419) 2019-07-24 10:40:12 -07:00
Charles Kerr
898adbce5c fix: "TypeError: fn is not a function" crash in release notes generator (#19394)
* fix: fix cache filename of issue comments

* fix: update octokit deprecated API use

* fix: "TypeError: fn is not a function" in notes.js

* chore: retryableFunc does not need to be async

* chore: simplify checkCache() operation param
2019-07-24 13:23:40 -04:00
Caesar Schinas
a25b15bc2a docs: fix instructions for opting out of dark mode (#19358)
4d8a055 (#19226) introduced incorrect instructions for 'opting out' of dark mode in Electron 7.0.0 and for enabling it on older versions. The boolean values for the `NSRequiresAquaSystemAppearance` key were inverted.
2019-07-24 10:20:25 -07:00
Jeremy Apthorp
d11d222da2 test: move version-bump spec to main process (#19415) 2019-07-24 10:16:28 -07:00
Jeremy Apthorp
9910507bc4 test: move BrowserView specs to main process (#19409) 2019-07-24 08:44:24 -07:00
Electron Bot
358f4eebae Bump v7.0.0-nightly.20190724 2019-07-24 08:33:49 -07:00
Richard Townsend
9a7276dffc fix: remove TLS destruction (#19365)
Building with dchecks_always_on=true in release configuration seems to
introduce flakiness because the TLS is double-freed. Amending the check
seems to fix the flakiness.
2019-07-24 11:16:53 -04:00
Samuel Attard
b7f554f1dc docs: make setBounds take a Partial<Rectangle> (#19416) 2019-07-23 23:51:22 -07:00
Samuel Attard
bb90a36701 build: update NMV for Electron 7 (#19369)
Refs: https://github.com/nodejs/node/pull/28774
2019-07-23 23:51:01 -07:00
Jeremy Apthorp
ad6fb20486 test: disable flaky webview.clearHistory test (#19398) 2019-07-23 16:54:41 -07:00
Charles Kerr
b3fb7497c2 chore: omit superceded Chromium updates from notes (#19400)
* feat: omit superceded Chromium updates from notes

* chore: simplify changed code
2019-07-23 13:50:18 -07:00
Milan Burda
103b38650f feat: add memory to app.getAppMetrics() (#18831) 2019-07-23 13:41:58 -07:00
Erick Zhao
2c383b51c1 feat: add rotate gesture for macOS (#19294)
* feat: add rotate gesture for macOS

* docs: document change

* refactor: rename 'rotate' -> 'rotate-gesture'

* refactor: const float -> float

* forgot one 🤦‍♂️
2019-07-23 14:42:26 -05:00
CezaryKulakowski
2e3d757f46 Changed line endings from crlf to lf in manifests.cc/h (#19382) 2019-07-23 11:17:34 -07:00
Charles Kerr
38507974d6 chore: use base::Environment in Linux MoveItemToTrash() (#19367)
* chore: use base::Environment in MoveItemToTrash() Linux impl

* chore: remove unnecessary local function XDGUtil()

* chore: tweak code comment

* fix: remove errant reference
2019-07-23 10:25:58 -07:00
Jeremy Apthorp
5dcac23aea build: make //electron:electron_lib a source_set (#19372) 2019-07-23 09:57:40 -07:00
Sofia Nguy
384ba8da64 docs: update public electron timeline (#19371) 2019-07-23 09:52:17 -07:00
Electron Bot
13c152717f Bump v7.0.0-nightly.20190723 2019-07-23 08:31:46 -07:00
Cheng Zhao
eb6660f534 feat: migrate webRequest module to NetworkService (Part 2) (#19338)
* handlers => intercepted_handlers

* Add stub for InProgressRequest

* Add stub for webRequest.onBeforeRequest/onBeforeSendHeaders/onSendHeaders

* Add stub for webRequest.onCompleted/onHeadersReceived

* Add stub for webRequest.onResponseStarted

* Add comment for the class
2019-07-22 15:01:45 -07:00
Samuel Attard
d45694dcb0 chore: use circleci v2.1 (#19346)
This allows us to have a workflow for release-builds that only runs when
we trigger it via API.  This will be used to implement a /ci command to
allow folks to trigger release-style builds on their PRs.
2019-07-22 13:31:32 -07:00
Electron Bot
6ff2d69842 Bump v7.0.0-nightly.20190722 2019-07-22 08:31:37 -07:00
Shelley Vohr
3395a1d4db doc: improve EventEmitter md formatting (#19345) 2019-07-22 08:20:43 -07:00
Shelley Vohr
0490189531 fix: correctly convert MessageBoxType (#19349) 2019-07-22 08:19:24 -07:00
Electron Bot
526f9d442d Bump v7.0.0-nightly.20190721 2019-07-21 08:31:02 -07:00
Electron Bot
6e55b81c56 Bump v7.0.0-nightly.20190720 2019-07-20 08:31:16 -07:00
Mark Lee
0c0197a0ef docs: update Electron Packager links (#19333) 2019-07-19 18:52:11 -07:00
Shelley Vohr
1f2f1fb82d fix: emit swipe event on macOS (#19319) 2019-07-19 16:21:07 -07:00
Micha Hanselmann
42d4c579c3 fix zoom button when alwaysOnTop set (#19314) 2019-07-19 16:17:59 -07:00
John Kleinschmidt
e389fa75ea test: run all tests on arm linux platforms (#19318)
* test: run all tests on arm platforms

* Use Ubuntu 18.04 for arm64 CI
2019-07-19 16:15:47 -07:00
Micha Hanselmann
dc30b86377 feat: support isHighContrastColorScheme() on macOS (#19331)
* change docs

* use NativeTheme to check high contrast scheme
2019-07-19 16:04:42 -07:00
Electron Bot
1edbd30987 Bump v7.0.0-nightly.20190719 2019-07-19 08:32:01 -07:00
Samuel Attard
8fc38ed549 build: update symbol generation logic for all helpers (#19336) 2019-07-19 08:02:43 -07:00
Samuel Attard
6fc648cd25 fix: bootstrap the node environment after we setup the InspectorAgent (#19317) 2019-07-18 16:54:23 -07:00
Micha Hanselmann
2467350180 feat: support mouse-move event of Tray API on Windows (#19265)
* add Tray.mouse-move on win

* change docs
2019-07-18 10:52:15 -07:00
Richard Townsend
9711fc895e docs: describe how to install Meiryo (#19308)
Fixes #19201
2019-07-18 10:51:34 -07:00
Samuel Attard
d82e7af9be chore: upgrade transitive lodash dependency (#19297) 2019-07-18 09:59:09 -07:00
Electron Bot
90684bd5b1 Bump v7.0.0-nightly.20190718 2019-07-18 08:33:13 -07:00
Shelley Vohr
3ee95cf0e8 feat: support css origin in frame.insertCSS (#19268)
* feat: support css origin in frame.insertCSS

* move cssOrigin to an options object
2019-07-17 14:34:05 -07:00
Shelley Vohr
e510816cf6 test: robustify MenuItem label/accel tests (#19287)
* test: robustify MenuItem label/accel tests

* correct truthy assertion checks

* ensure message correctly set for boolean asserts
2019-07-17 14:32:47 -07:00
Samuel Attard
afa5266c7e chore: upgrade node to 12.6.0 (#19312) 2019-07-17 14:22:27 -07:00
Samuel Attard
fbcbdb051b build: remove unused node patches (#19296) 2019-07-17 12:33:41 -07:00
Cheng Zhao
478360f317 chore: use dummy WebRequestNS when NetworkService is enabled (#19300) 2019-07-17 11:55:55 -07:00
Milan Burda
c79613b037 chore: convert more files to TypeScript (#18820) 2019-07-17 10:23:52 -07:00
Electron Bot
134d76dcdd Revert "Bump v7.0.0-nightly.20190717"
This reverts commit 7b69730e82.
2019-07-17 09:18:38 -07:00
Electron Bot
7b69730e82 Bump v7.0.0-nightly.20190717 2019-07-17 08:31:14 -07:00
Jeremy Apthorp
8452a7ffa5 test: move systemPreferences spec to main process (#19237)
* test: move systemPreferences spec to main process

* Update api-system-preferences-spec.ts

* Update api-system-preferences-spec.ts
2019-07-17 09:14:32 +09:00
Milan Burda
d1c9f5e309 fix: don't execute preload scripts for internal <iframe> in <webview> (#19260) 2019-07-17 09:13:05 +09:00
Micha Hanselmann
b57e623c11 refactor: use NativeTheme dark mode detection on macOS 10.14+ 2019-07-16 17:06:31 -07:00
Jeremy Apthorp
70857e9a5d test: move more BrowserWindow specs (#19290)
* test: move more BrowserWindow specs

* use async instead of setTimeout for cleaner code
2019-07-16 16:37:17 -07:00
Jeremy Apthorp
42f283c281 test: re-add accidentally deleted test (#19282)
this was lost due to a tragic merge incident in #19182
2019-07-16 15:45:35 -07:00
Samuel Attard
3ded946686 build: simplify node patches (#19286)
* build: collapse all BUILD.gn modifications into the original GN file patch

* build: collapse all the js2c.py changes into a single patch with a good explanation
2019-07-16 14:38:17 -07:00
Jeremy Apthorp
c5e249b85c test: actually test sandbox events in the test that says 'test sandbox events' (#19284) 2019-07-16 13:43:23 -07:00
Jeremy Apthorp
b5f69e0b9f test: disable security warnings in main runner (#19283) 2019-07-16 13:43:00 -07:00
Jeremy Apthorp
355b307618 test: move MenuItem spec to main process (#19235)
* test: move MenuItem spec to main process

* spec: fix errant default accel test

* Update menu-item-roles.js

* Update api-menu-item-spec.ts
2019-07-16 12:54:18 -07:00
Shelley Vohr
3d2eb8360a chore: remove tls check script (#19280) 2019-07-16 12:04:02 -07:00
Samuel Attard
9a7426dc25 build: use our patch system to apply patches to upstream node (#19270)
This points our node repo at upstream (nodejs/node) and uses the base node tag as the target ref.  We then use our existing patch system and patch files to apply our changes on top of node.  This unifies how we patch upstream repos and makes our node patches easier to reason, view, understand and most importantly reduce.
2019-07-16 10:23:04 -07:00
Erick Zhao
4d547bdd3a docs: mention fiddle in bug report template (#19248)
* chore: mention fiddle in bug report template

* add words
2019-07-15 22:16:02 -07:00
Jeremy Apthorp
27599a851f test: move some BrowserWindow specs to the main process (#19182)
* test: move some BrowserWindow specs to the main process

* uncomment cross-site test

* move more tests

* re-enable, refactor and move visibilitychange specs

* move new-window event tests and re-enable them on mac

* move max/minimize event tests

* move modal tests

* move beginFrameSubscription tests

* move savePage test

* move BrowserWindow options argument is optional test

* move restore, unmaximize, fullscreen tests

* move parent window tests

* don't wait for show event on windows (#8664)

* add debugging logs to fullscreen tests

* more debugging on windows

* explicitly destroy browserviews to prevent crash during gc

* only await show on darwin

* more event timing fixes

* disable max/minimize event tests on linux, since they're broken on CI
2019-07-15 21:13:32 -07:00
Milan Burda
7249b25868 refactor: replace SetHiddenValue() with mate::Dictionary::SetHidden() (#19263) 2019-07-16 11:50:38 +09:00
Shelley Vohr
aa211c6c50 chore: update to Node.js v12.4.0 (#18924)
* chore: update to node 12.4.0

* chore: fix js2c compilation and usage

* update branch reference

* chore: roll node

* refactor: use the new node::options_parser::Parse method

* fix: make node create our context for us so that everything is initialized correctly

* fix: let node do it's thing to the all contexts

We need to let node know about all the contexts that Chromium creates for the renderer processes so that it does not crash when trying to access primordials.  Similar to node::NewContext but with an existing context

* chore: roll node

* chore: roll node

* chore: roll node

* chore: roll node

* fix: ensure that _noBrowserGlobals is set before the node bootstrapper runs

Co-authored-by: Jeremy Apthorp <jeremya@chromium.org>
2019-07-15 18:58:39 -07:00
Micha Hanselmann
da672a3b5c feat: support systemPreferences.isDarkMode() on Windows (#19217)
* add support for isDarkMode on Windows

* use NativeTheme for darkmode detection
2019-07-15 14:37:33 -07:00
Jeremy Apthorp
4439249617 refactor: simplify RemoveFromLoginItems (#19179) 2019-07-15 14:36:23 -07:00
Shelley Vohr
50f4977048 docs: differentiate static/instance class props (#19196) 2019-07-15 10:15:32 -07:00
Shelley Vohr
f6a29707b6 feat: app.moveToApplicationsFolder conflict handling (#18916)
Resolves #18805.

We want to keep default move conflict handling behavior in that it's still what most users would expect, but there exist edge cases in which users may not want to be forced into that behavior.

This thus introduces an optional conflict handler that allows developers access to more granular move actions. They could now allow the user to choose whether to delete an existing app in favor of the current one being moved, or whether to quit the current app and focus on the existing one should it both exist and be running. I added a fair amount of new documentation outlining this behavior, but if there are things users may benefit from seeing examples of or nuances that should be added please leave feedback!
2019-07-15 09:34:20 -07:00
Electron Bot
0db6789210 Revert "Bump v7.0.0-nightly.20190715"
This reverts commit bd50115bfe.
2019-07-15 09:16:09 -07:00
Electron Bot
bd50115bfe Bump v7.0.0-nightly.20190715 2019-07-15 08:31:35 -07:00
Micha Hanselmann
b49ca7ba2e check for sandbox param on root (#19216) 2019-07-15 09:38:41 -05:00
Samuel Attard
6d5e494782 fix: serialize messages being sent over chrome message ports (#19104)
Chrome appears to serialize these messages (see #19070) so we should as
well to be consistent and to avoid bugs with Uint8/16 arrays

Fixes #19070
2019-07-15 19:05:09 +09:00
Thiago de Arruda
d0ece2bc93 docs: Add command to quickly fix the SMBv2 cache (#19210)
Running this command is more convenient than manually editing regedit.
2019-07-15 17:57:33 +09:00
Felix Rieseberg
2ce68df27a docs: Update incorrect author name (#19247) 2019-07-15 17:51:06 +09:00
Charles Kerr
c9bc4aeb90 docs: remove redundant 'set origin' section (#19243)
* docs: fix remote push origin docs

* docs: remove redundant section

the 'git remote' text in the 'Getting the Code' section is better
2019-07-15 17:42:11 +09:00
Jeremy Apthorp
f101c72cbe spec: move powerSaveBlocker spec to main process (#19236) 2019-07-15 17:38:01 +09:00
Jeremy Apthorp
a4cffd29b7 test: move globalShortcut spec (#19233) 2019-07-15 17:29:29 +09:00
Jeremy Apthorp
1ff2704445 test: move inAppPurchase spec (#19232) 2019-07-15 17:28:55 +09:00
Jeremy Apthorp
8a57fe5466 test: move ipcMain spec (#19230) 2019-07-15 17:23:59 +09:00
Jeremy Apthorp
3957a791b7 test: move contentTracing specs to main process (#19229) 2019-07-15 17:23:35 +09:00
Samuel Attard
4d8a05568b feat: enable dark mode support by default on macOS (#19226)
This adds the NSRequiresAquaSystemAppearance key to our default Info.plist file which will tell macOS to auto-switch our effectiveAppearance in sync with the OS.  The dark mode documentation has been updated to reflect how to opt *out* of this but it is also noted that certain dark mode APIs will not work on Catalina if you opt out.
2019-07-15 17:23:12 +09:00
Samuel Attard
ab8b940151 fix: add support for prefers-color-scheme CSS query (#19228)
The wiring to update prefs when you toggle between dark mode and light mode exists in the content layer but the actual value setting is done in either //chrome or in shell.  We need to set the preferred_color_scheme pref value in order for the CSS query to work correctly.  The DarkModeObserver in content will automatically regenerate prefs when dark mode is toggled.

Fixes #15540
2019-07-15 17:22:25 +09:00
Ian Sanders
079a173a72 feat: add stack trace log to preload script error handling (#18905)
* Add console.trace to preload script error handling

* Log error directly instead of error string + trace

* Log full error object instead of error message
2019-07-14 21:54:33 -07:00
Electron Bot
e6e94fc59d Bump v7.0.0-nightly.20190714 2019-07-14 08:31:41 -07:00
Electron Bot
32fec3e8f9 Bump v7.0.0-nightly.20190713 2019-07-13 08:32:19 -07:00
Electron Bot
150a92d093 Bump v7.0.0-nightly.20190712 2019-07-12 08:31:51 -07:00
Milan Burda
beb996b847 docs: specify possible values for ProcessMetric.type (#19203) 2019-07-12 14:10:18 +03:00
Erick Zhao
9a42ddd2b8 chore: revert key -> main change in window delegate listener (#19213)
* chore: revert key -> main

* chore: comment out test that will fail

* more context on commented out test

* remove commented test
2019-07-12 17:46:35 +09:00
Milan Burda
35294891ae fix: <webview> not working in scriptable popups (#19198) 2019-07-11 20:56:04 -05:00
Alexandre Lacheze
e26f366405 Revert: electron/electron#14487 (#19011) 2019-07-11 17:25:26 -05:00
Shelley Vohr
75a020e0ac feat: expose new vibrancy types (#19073) 2019-07-11 14:10:45 -05:00
Milan Burda
c756b955b3 fix: revert use of IPC helpers for history due to failing test (#19189) 2019-07-11 20:25:07 +03:00
Louis Rose
79114ff40a feat: add object to subscribe notification callback (#19110) 2019-07-11 10:06:31 -07:00
lvs
6d34314457 Remind user the executeJavaScript will not run their code immediately (#19129)
Remind user the contents.executeJavaScript will not run their code immediately if the web page still in running.  Without the knowledge, user would think their code not function properly and it's hard to debug because different page have different loading time.

According to  [web-contents.js](731edbe2b6/lib/browser/api/web-contents.js (L199))
2019-07-11 10:55:30 -05:00
Electron Bot
0dbeb49ee0 Bump v7.0.0-nightly.20190711 2019-07-11 08:31:15 -07:00
Micha Hanselmann
1f70dfbffd chore: deprecate setHighlightMode (#19202) 2019-07-11 10:11:46 -05:00
Micha Hanselmann
06d48514c6 add toolTip property for MenuItem (#19099) 2019-07-11 17:56:22 +09:00
Electron Bot
692df804cf Bump v7.0.0-nightly.20190710 2019-07-10 08:31:51 -07:00
Julien Isorce
8b31953d40 feat: Can a window always on top but behind the taskbar on Win32 (#18982)
For now it only adds the ability to place the window below
the task bar while still being always on top.
Previous behaviour was always showing the window above the task
bar when top is true. We keep this default behaviour, i.e. when
the 'level' parameter is omitted.

https://github.com/electron/electron/issues/18933

Notes: Can set a window always on top but behind the taskbar on Windows
2019-07-10 09:40:11 -05:00
Cheng Zhao
faa2710485 fix: do not wait on promise returned by remote APIs (#18990)
* fix: make <webview>.loadURL async

* docs: webview.loadURL returns Promise
2019-07-10 08:20:28 -05:00
Alexey Kuzmin
015e1348e0 ci: do not use the MOCHA_FILE env variable (#19171)
It is not used in a expected way anyway.
2019-07-09 15:56:46 -05:00
Electron Bot
e3440f1975 Bump v7.0.0-nightly.20190709 2019-07-09 08:31:45 -07:00
Micha Hanselmann
62a3666773 remove non-existent event (#19126) 2019-07-09 17:45:18 +03:00
Milan Burda
fdbb97e876 chore: update to latest TypeScript 3.5.2 (#19133) 2019-07-09 14:44:46 +03:00
Milan Burda
b32bee5d84 refactor: implement GetResourcesPath using MainApplicationBundlePath on Mac (#19135) 2019-07-09 12:56:40 +03:00
Cheng Zhao
436d5c9ac1 fix: use gn/clang-format from src (#19145)
* fix: use gn/clang-format from src

* fix: download clang-format in lint job

* chore: fix linting warning

* chore: get_path_in_buildtools => get_buildtools_executable

* chore: the clang-format npm package is not used
2019-07-09 17:40:26 +09:00
Micha Hanselmann
d79e6bbffe refactor: improve function deprecation module (#19012)
* add removeFunction to deprecation module

* clarify deprecate api

* throw error

* change error msg
2019-07-09 10:01:35 +09:00
Electron Bot
a90306876e chore: bump chromium to b8ae827f4fead0b527079194b9899 (master) (#19112)
* chore: bump chromium in DEPS to c87ad34dfd48610959977db9b6eeeb86f5feafe9

* chore: rebase patches

* chore: bump chromium in DEPS to ad29fca14d77b2a1752f24d9425278c6737c0f70

* chore: bump chromium in DEPS to 22c21a9cc728e7958e3ac1033cfdc6ed0f0a8b10

* chore: bump chromium in DEPS to 8c86dd7f76abf4ad1ab41796d2da6172b1b10866

* chore: update patches

* chore: bump chromium in DEPS to 5a48e127c8cb8ae827f4fead0b527079194b9899

* remove TransformPointToLocalCoordSpaceLegacy

https://chromium-review.googlesource.com/c/chromium/src/+/1637525
2019-07-09 10:00:24 +09:00
Milan Burda
419ce494e9 refactor: use IPC helpers in window-setup (#17948) 2019-07-09 02:43:49 +03:00
Jeremy Apthorp
c3ae476deb test: move some browser window specs to the main process (#19089) 2019-07-08 15:44:37 -07:00
Electron Bot
a04a458156 Bump v7.0.0-nightly.20190708 2019-07-08 08:32:08 -07:00
Milan Burda
550b2269be build: strip recently added swiftshader/libvulkan.so (#19141) 2019-07-08 15:21:04 +03:00
Milan Burda
69369cf365 refactor: don't expose isPromise as an internal module (#19139) 2019-07-08 15:17:50 +09:00
Adam Leskis
949f8685d2 docs: fix simple typo in api for webview-tag (#19028) 2019-07-07 20:58:55 -07:00
Julien Isorce
09c3277b42 feat: Implement BrowserWindow.setFocusable on macOS (#19033)
It was not implemented on Mac despite being available as a constructor
option. Implementation already exists on Windows. Linux case can be
separately.

https://github.com/electron/electron/issues/19032

Notes: Implemented BrowserWindow.setFocusable on macOS.
2019-07-08 11:34:18 +09:00
John Kleinschmidt
e6a7a84834 build: fix ffmpeg gn gen (#19127)
* revert #18993

* build: fix ffmpeg GN gen
2019-07-08 10:30:57 +09:00
Electron Bot
106cc6189c Bump v7.0.0-nightly.20190707 2019-07-07 08:31:09 -07:00
Electron Bot
269a93177d Bump v7.0.0-nightly.20190706 2019-07-06 08:31:06 -07:00
Jeremy Apthorp
731edbe2b6 fix: dump correct breakpad symbols on macOS (#19042)
* fix: dump correct symbols on macOS

* refactor symbol dumping

* .exe/.dll on windows

* dump .exe.pdb/.dll.pdb; also add path for msdia140.dll

* undo breakpad_symbols.zip rename

* dump_syms.exe doesn't support -i on windows

* remove unused windows symbol generation script

* win fix 🤞🤞

* import errno

* use out_dir

* i tender my resignation
2019-07-05 10:38:30 -07:00
Electron Bot
acdb290469 Bump v7.0.0-nightly.20190705 2019-07-05 08:31:30 -07:00
Milan Burda
87b1dab497 fix: check parent-child relationship in canAccessWindow (#19077) 2019-07-04 18:22:08 +02:00
Electron Bot
c933d19a1b Bump v7.0.0-nightly.20190704 2019-07-04 08:32:21 -07:00
Cheng Zhao
2a3793485f feat: implement net module with NetworkService (#19094)
* Stub class for NetworkService-based URLRequest

* Create SimpleURLLoader

* Implement downloading

* Implement response event

* Only write data afte previous one finished

* Use DataPipeGetter for uploading data

* Support chunked upload data

* Call size callback at last

* Simplify UploadDataPipeGetter

* Implement cancelling and closing

* Handle redirection

* Fix uploading large data

* Emit error when request fails

* Emit error for redirection error

* Simplify emitting error

* "follow" should also emit "redirect" event

* SetLoadFlags is not really used

* Implement GetUploadProgress

* Implement FollowRedirect

* Fix exception with multiple redirections

* Reduce number of EmitEvent methods

* Emit response errors

* FetchRedirectMode => RedirectMode
2019-07-04 10:56:19 +09:00
Samuel Attard
4b674c1daf build: ensure that we bundle the correct version of @types/node (#19102) 2019-07-03 16:36:59 -07:00
Samuel Attard
5a1b661f42 fix: use bidning.ipc instead of binding.sendTo which is undefined (#19103) 2019-07-03 16:36:44 -07:00
Samuel Attard
e6108740c0 fix: handle no env in externsion world set up (#19101)
Previously when GetEnvironment returned null this extension setup
crashed.
2019-07-03 15:42:06 -07:00
Jeremy Apthorp
da64fae690 test: disable IAP tests that hit Apple servers (#19100) 2019-07-03 15:41:37 -07:00
Shelley Vohr
43b4a3ae6a chore: deprecate some NSVisualEffectMaterial types (#19072) 2019-07-03 14:56:03 -07:00
Electron Bot
d362be5cd9 chore: bump chromium to f156cb7658ec5382f5623a05841c6 (master) (#19096)
* chore: bump chromium in DEPS to 37cd06a295cf156cb7658ec5382f5623a05841c6

* update patches

* fix: replace NO_TRAFFIC_ANNOTATION_YET with MISSING_TRAFFIC_ANNOTATION

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1653256
2019-07-03 14:48:55 -07:00
Jeremy Apthorp
ae01a48fca chore: fix node ref to point to the ref that was merged (#19098) 2019-07-03 14:08:21 -07:00
Jeremy Apthorp
d1292833e9 chore: remove unused BrowserWindow.fromDevToolsWebContents (#19090) 2019-07-03 12:07:47 -07:00
Shelley Vohr
8782d06ed6 feat: convert webContents primitives to properties (#18998)
* feat: convert webContents primitives to properties

* address feedback from review
2019-07-03 08:57:10 -07:00
Electron Bot
de072c6ef5 Bump v7.0.0-nightly.20190703 2019-07-03 08:31:34 -07:00
Milan Burda
69ea0b4ebf fix: ignore non-absolute session preload script paths when sandboxed (#19066) 2019-07-03 08:05:45 -07:00
Electron Bot
50b9c7051e chore: bump chromium to f1d9522c04ca8fa0a906f88ababe9 (master) (#18648)
* chore: bump chromium in DEPS to 675d7dc9f3334b15c3ec28c27db3dc19b26bd12e

* chore: update patches

* chore: bump chromium in DEPS to dce3562696f165a324273fcb6893f0e1fef42ab1

* chore: const interfaces are being removed from //content

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1631749
Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=908139

* chore: update patches

* chore: blink::MediaStreamType is now consistent and deduplicated

* chore: update patches and printing code for ref -> uniq

* chore: bridge_impl() --> GetInProcessNSWindowBridge

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1642988

* fixme: TotalMarkedObjectSize has been removed

* chore: fix linting

* chore: bump chromium in DEPS to 9503e1a2fcbf17db08094d8caae3e1407e918af3

* chore: fix slightly broken printing patch

* chore: update patches for SiteInstanceImpl changes

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1612025

* chore: update patches for SiteInstanceImpl changes

* chore: bump chromium in DEPS to 6801e6c1ddd1b7b73e594e97157ddd539ca335d7

* chore: update patches

* chore: bump chromium in DEPS to 27e198912d7c1767052ec785c22e2e88b2cb4d8b

* chore: remove system_request_context

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1647172

* chore: creation of FtpProtocolHandler needs an auth cache

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1639683

* fixme: disable marked spec

* chore: bump chromium in DEPS to 3dcd7fe453ad13a22b114b95f05590eba74c5471

* chore: bump chromium in DEPS to bdc24128b75008743d819e298557a53205706e7c

* chore: bump chromium in DEPS to 7da330b58fbe0ba94b9b94abbb8085bead220228

* update patches

* remove TotalMarkedObjectSize

https://chromium-review.googlesource.com/c/chromium/src/+/1631708

* add libvulkan.so to dist zip manifest on linux

* chore: bump chromium in DEPS to 1e85d0f45b52649efd0010cc9dab6d2804f24443

* update patches

* add angle features to gpuinfo

https://chromium-review.googlesource.com/c/chromium/src/+/1638658

* mark 'marked' property as deprecated

* disable webview resize test

* FIXME: disable vulkan on 32-bit arm

* chore: bump chromium in DEPS to cd0297c6a83fdd2b1f6bc312e7d5acca736a3c56

* Revert "FIXME: disable vulkan on 32-bit arm"

This reverts commit 5c1e0ef302a6db1e72231d4e823f91bb08e281af.

* backport from upstream: fix swiftshader build on arm

https://swiftshader-review.googlesource.com/c/SwiftShader/+/32768/

* update patches

* viz: update OutputDeviceWin to new shared memory api

https://chromium-review.googlesource.com/c/chromium/src/+/1649574

* base::Contains{Key,Value} => base::Contains

https://chromium-review.googlesource.com/c/chromium/src/+/1649478

* fixup! viz: update OutputDeviceWin to new shared memory api

* stub out StatusIconLinuxDbus-related delegate methods

https://chromium-review.googlesource.com/c/chromium/src/+/1638180

* chore: bump chromium in DEPS to 964ea3fd4bdc006d62533f5755043076220181f1

* Remove the BrowserContext methods to create URLRequestContexts for main/media partitions when a partition_domain is specified

https://chromium-review.googlesource.com/c/chromium/src/+/1655087

* fixup! stub out StatusIconLinuxDbus-related delegate methods

* add remote_cocoa to chromium_src deps

https://chromium-review.googlesource.com/c/chromium/src/+/1657068

* fixup! stub out StatusIconLinuxDbus-related delegate methods

* attempt at fix linux-debug build

* add swiftshader/libvulkan.so to arm manifest

* chore: bump chromium in DEPS to 28688f76afef27c36631aa274691e333ddecdc22

* update patches

* chore: bump chromium in DEPS to fe7450e1578a9584189f87d59d0d1a8548bf6b90

* chore: bump chromium in DEPS to f304dfd682dc86a755a6c49a16ee6876e0db45fb

* chore: bump chromium in DEPS to f0fd4d6c365aad9edd83bdfff9954c47d271b75c

* Update patches

* Remove no longer needed WOA patch

* Put back IOThread in BrowserProcess

We need this until we enable the network service.

* move atom.ico to inputs

* Update to latest LKGR to fix no template named 'bitset' in namespace 'std'

* fixup! Put back IOThread in BrowserProcess

* chore: bump chromium in DEPS to dcf9662dc9a896a175d791001350324167b1cad3

* Update patches

content_allow_embedder_to_prevent_locking_scheme_registry.patch is no longer necessary as it was upstreamed via https://chromium-review.googlesource.com/c/chromium/src/+/1637040

* Fix renamed enum

* Use newer docker container

Contains updated dependencies

* Try to track down arm test failures

* Fix arm tests

* chore: bump chromium in DEPS to 8cbceef57b37ee14b9c4c3405a3f7663922c5b5d

* Update patches

* Add needed dependencies for testing 32-bit linux

* Remove arm debugging.

* Remove additional debugging

* Fix compiler errors

* Handle new macOS helper

* Fix compile error on Linux

* chore: bump chromium in DEPS to 66a93991ddaff6a9f1b13d110959947cb03a1860

* Add new helper files to manifests

* fix BUILD.gn for macOS

* Fix compile errors

* Add patch to put back colors needed for autofill/datalist

* chore: bump chromium in DEPS to e89617079f11e33f33cdb3924f719a579c73704b

* Updated patches

* Remove no longer needed patch

* Remove no longer needed patch

* Fix compile error with patch

* Really fix the patch

* chore: bump chromium in DEPS to c70f12476a45840408f1d5ff5968e7f7ceaad9d4

* chore: bump chromium in DEPS to 06d2dd7a8933b41545a7c26349c802f570563fd5

* chore: bump chromium in DEPS to b0b9ff8f727deb519ccbec7cf1c8d9ed543d88ab

* Update patches

* Fix compiler errors

* Fix removed ChromeNetLog

* Revert "Fix removed ChromeNetLog"

This reverts commit 426dfd90b5ab0a9c1df415d71c88e8aed2bd5bbe.

* Remove ChromeNetLog.

https://chromium-review.googlesource.com/c/chromium/src/+/1663846

* chore: bump chromium in DEPS to fefcc4926d58dccd59ac95be65eab3a4ebfe2f29

* Update patches

* Update v8 patches

* Fix lint error

* Fix compile errors

* chore: bump chromium in DEPS to 4de815ef92ef2eef515506fe09bdc466526a8fd9

* Use custom protocol to test baseURLForDataURL

* Use newer SDK (10.0.18362) for Windows

* Update patches

* Update arm manifest since swiftshader reenabled.

* Don't delete dir that isn't ever there.

* Fix compile errors.

* Need src dir created

* Update for removed InspectorFrontendAPI.addExtensions

* Revert "Use newer SDK (10.0.18362) for Windows"

This reverts commit 68763a0c88cdc44b971462e49662aecc167d3d99.

* Revert "Need src dir created"

This reverts commit 7daedc29d0844316d4097648dde7f40f1a3848fb.

* Revert "Don't delete dir that isn't ever there."

This reverts commit bf424bc30ffcb23b1d9a634d4df410342536640e.

* chore: bump chromium in DEPS to 97dab6b0124ea53244caf123921b5d14893bcca7

* chore: bump chromium in DEPS to c87d16d49a85dc7122781f6c979d354c20f7f78b

* chore: bump chromium in DEPS to 004bcee2ea336687cedfda8f8a151806ac757d15

* chore: bump chromium in DEPS to 24428b26a9d15a013b2a253e1084ec3cb54b660b

* chore: bump chromium in DEPS to fd25914e875237df88035a6abf89a70bf1360b57

* Update patches

* Update node to fix build error

* Fix compile errors

* chore: bump chromium in DEPS to 3062b7cf090f1d9522c04ca8fa0a906f88ababe9

* chore: update node ref for pushed tags

* chore: update patches for new chromium

* chore: fix printing patches

* Use new (10.0.18362) Windows SDK

* roll node to fix v8 build issues in debug build

* Add support for plugin helper

* fix: add patch to fix gpu info enumeration

Can be removed once CL lands upstream.

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1685993

* spec: navigator.requestMIDIAccess now requires a secure origin

This test requires a secure origin so we fake one.

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1657952

* FIXME: temporarily disable SharedWorker tests

* use released version of node-abstractsocket

* fix abstract-socket
2019-07-02 18:22:09 -07:00
Samuel Attard
9bef48216f build: update our nan reference to point at the upstream (#19084)
The required fix has landed, let's target upstream
2019-07-02 13:54:22 -07:00
Jeremy Apthorp
616856552f test: fix flaky onbeforeunload tests (#19085) 2019-07-02 13:48:58 -07:00
Jeremy Apthorp
c2d78deeca test: attempt to fix flaky webview.clearHistory test (#19083) 2019-07-02 13:48:26 -07:00
Electron Bot
39c4a5411d Bump v7.0.0-nightly.20190702 2019-07-02 08:32:51 -07:00
Chase Colman
9a4e551c8b docs: fix undefined isMac in menu example (#19071)
* docs: fix undefined isMac in menu example

* docs: remove ; in example
2019-07-02 10:09:10 -05:00
Jerry Wu
dee331519c fix: disable nodeIntegration & insecure resource warnings for localhost (#18814)
* fix: disable remote host nodeIntegration warning for localhost

In warnAboutNodeWithRemoteContent(), add a check to see if the hostname
is "localhost" and prevent the warning message if it is.

* fix: disable loading insecure resources warning for localhost

In warnAboutInsecureResources(), filter out resources from localhost
since they are most likely not a threat.

* test: add tests for ignoring security warnings when using localhost

Add tests for ignoring warning messages for the following scenarios:
  1. node integration with remote content from localhost
  2. loading insecure resources from localhost

* test: fix insecure resource test

* test: pass nodeIntegration with remote test on did-finish-load

* test: maybe fix node integration test (error w/ conv circular struct)

* test: update test description

* test: use "load" event to check when nodeIntegration test has finished

Instead of relying on the "did-finish-load" event, which may result in
a race condition, add an "onload" handler that logs "loaded" to the
console. This will execute _after_ the nodeIntegration check, so it
can be safely used as a signal to indicate that the test is done.

* test: rename base-page-security-load-message.html

* fix: ignore enabled remote module warning for localhost

* refactor: add isLocalhost()
2019-07-02 19:36:50 +09:00
Samuel Attard
4e2990d3aa docs: make the dialog example work out of the box on all 3 platforms (#19055) 2019-07-01 16:53:07 -07:00
Shelley Vohr
21d04ed3f4 feat: improve callback value for webContents.print() (#19000)
Resolves #18980.

Adds granularity to the optional callback in webContents.print() by adding a failureType value in addition to the success boolean that differentiates between cancelled and failed print jobs.
2019-07-01 14:03:19 -07:00
Shelley Vohr
5154b95447 chore: update @types/node and @primer/octicons (#19025) 2019-07-01 11:25:45 -07:00
Heilig Benedek
5a3073128c fix: add shell=True to make run-gn-format run properly on Windows (#18993) 2019-07-01 10:47:16 -07:00
Erick Zhao
c7da54e82a fix: Correct modal focus behavior on macOS (#18995)
Fixes #18502

This PR changes the focus and blur events that we emit in Electron to listen to changes in key window rather than main window. It swaps out windowDidBecomeMain and windowDidResignMain for windowDidBecomeKey and windowDidResignKey, respectively.
2019-07-01 10:07:26 -07:00
Electron Bot
3173b66d00 Bump v7.0.0-nightly.20190701 2019-07-01 08:31:22 -07:00
Shelley Vohr
3038846f5d chore: DirectoryLister memory management improvement (#18634)
* chore: small memory management improvement

Co-authored-by: Charles Kerr <ckerr@github.com>

* chore: fix code style

* use start-from-one ref count, check ref_counted.h for motivations
* reuse list_base_dir_
* net::DirectorLister offloads directory enumeration to a different
  task sequence in its implementation, use of sequence runner on
  our end is unnecessary
* Don't manually `Release` in `WebContentsDestroyed`, content::FileSelectListener
  already handles this case.
2019-07-01 07:58:06 -07:00
Milan Burda
3859244a79 chore: remove unused switches::kDisableHtmlFullscreenWindowResize (#19041) 2019-07-01 11:58:39 +09:00
Erick Zhao
cc223d7cd2 fix: fire close event upon closing modal BrowserWindow in macOS (#19014)
* fix: emit close event from modal on macOS

* fix: Move fn call to correct spot

* refactor: call notify fn directly
2019-07-01 11:57:31 +09:00
Electron Bot
f62d9f1411 Bump v7.0.0-nightly.20190630 2019-06-30 08:31:45 -07:00
Shelley Vohr
0348b60a34 feat: add a series of new printing options (#18984) 2019-06-29 22:12:00 -07:00
Electron Bot
684d1838f9 Bump v7.0.0-nightly.20190629 2019-06-29 08:31:55 -07:00
Jeremy Apthorp
6ece477779 refactor: nws13n: setCertificateVerifyProc (#18221) 2019-06-28 15:22:23 -07:00
Erick Zhao
e03a40026a fix: correct triggeredByAccelerator Event property behavior (#18865)
Fixes #18808

Previously, the triggeredByAccelerator flag would be entirely coupled with whether or not the modifier keys were being used or not.

This PR swaps out the ui::EventFlagsFromModifiers([event modifierFlags])) call in the macOS code to ui::EventFlagsFromNSEventWithModifiers(event, [event modifierFlags])). The latter outputs flags that take into account mouse click events on top of modifier flags (see Chromium documentation).

The business logic to detect triggeredByAccelerator is then changed to exclude any mouse click flags.
2019-06-28 14:38:17 -07:00
Samuel Attard
6eed4a98ce fix: do not remove node globals when context isolation is enabled (#18967) 2019-06-28 14:37:00 -07:00
Cheng Zhao
1d8e16bc6e docs: UploadData does not have contentType (#19026) 2019-06-28 11:19:01 -07:00
Electron Bot
23b8c9c917 Revert "Bump v7.0.0-nightly.20190628"
This reverts commit 769dcce9d7.
2019-06-28 09:07:12 -07:00
Electron Bot
769dcce9d7 Bump v7.0.0-nightly.20190628 2019-06-28 08:31:15 -07:00
Shelley Vohr
a4f61565c3 fix: crash when tray popup called twice (#18999) 2019-06-28 08:24:54 -07:00
Micha Hanselmann
e44bb8474b test: move tray api tests to main process (#18986) 2019-06-28 07:43:04 -07:00
Cheng Zhao
0a9438dbba docs: documentation of NetworkService-based protocol module (#18952)
* docs: NetworkService-based protocol module

* docs: separate ProtocolRequest

* docs: separate ProtocolResponse

* docs: fix lint warning

* docs: fix electron.d.ts

* fix: print deprecation warnings for protocol module

* docs: fix links

* Apply suggestions from code review

Co-Authored-By: Felix Rieseberg <felix@felixrieseberg.com>

* Apply suggestions from code review

Co-Authored-By: Samuel Attard <samuel.r.attard@gmail.com>

* Do not publish NetworkService changes draft

* Apply suggestions from code review

Co-Authored-By: Samuel Attard <samuel.r.attard@gmail.com>

* docs: filePath must be absolute
2019-06-28 16:25:30 +09:00
Samuel Attard
127d617db5 fix: delay emitting screen events by a tick to avoid re-entrancy crash (#19016) 2019-06-27 19:01:28 -07:00
Shelley Vohr
1a6a16e346 docs: fix platform location for params (#18987) 2019-06-27 14:51:18 -07:00
Jeremy Apthorp
ec8697bcdc test: move protocol specs to main process (#18923) 2019-06-27 14:20:29 -07:00
Electron Bot
fdb2502a19 Bump v7.0.0-nightly.20190627 2019-06-27 08:31:59 -07:00
Shelley Vohr
e8e360a902 fix: silent printing mode (#18979) 2019-06-26 20:53:17 -07:00
Micha Hanselmann
819cebff5d change menu item docs (#18985) 2019-06-26 20:20:04 -07:00
Samuel Attard
c1ad0725d8 build: fix include paths so that __file__ is absolute not relative (#18997) 2019-06-26 11:32:42 -07:00
Shelley Vohr
6243dba068 chore: use ScopedPumpMessagesInPrivateModes in tray (#18977)
* chore: use ScopedPumpMessagesInPrivateModes in tray

* revert refcounting of AtomMenuModel

* Prefer WeakPtr for posting tasks to handle unexpected destruction
2019-06-26 10:18:53 -07:00
Electron Bot
d643921313 Bump v7.0.0-nightly.20190626 2019-06-26 08:31:57 -07:00
Shelley Vohr
5298358b72 fix: set size of GTK about panel icon (#18957) 2019-06-25 22:17:30 -07:00
Alexandre Lacheze
2b3a256647 docs: precise that node integration is enabled in natively opened window if nodeIntegrationInSubFrames is true (#18156) 2019-06-25 21:03:23 -07:00
Shelley Vohr
c87394ee25 feat: show optional authors in gtk about panel (#18964)
* feat: show optional authors in gtk about panel

* chore: use a base::Value for about dialog options on Linux

* docs: mark 'version' as supported on Linux too
2019-06-25 11:31:14 -07:00
Electron Bot
ab5ec0af33 Bump v7.0.0-nightly.20190625 2019-06-25 08:32:04 -07:00
Shelley Vohr
dc2cd8e780 fix: make tray not block main process (#18880)
* fix: make tray not block main process

* make AtomMenuModel refcounted
2019-06-24 19:30:26 -07:00
Shelley Vohr
24ffc3cfb0 docs: update badges (#18955) 2019-06-24 14:09:17 -07:00
Julien Isorce
99e3de56df spec: fix flakiness of test BrowserWindow.moveTop (#18962)
Wait for the focus event because checking focus status.
BrowserWindow.show gives focus to the window but there is
a moment where the window is shown but does not have the
focus yet. And the test was failing at this moment.
2019-06-24 13:41:42 -07:00
Milan Burda
1304f259cc spec: remove unused variables (#18947) 2019-06-24 13:41:20 -05:00
Micha Hanselmann
ed5c624b08 move screen api test to main process (#18956) 2019-06-24 11:30:47 -07:00
Samuel Attard
764be844ec fix: override the timers module impls to activate the uv loop (#18948) 2019-06-24 10:18:29 -07:00
Samuel Attard
fb01c94511 build: clean up scripts folder, move release scripts, move zip manifest logic (#18945)
* build: move zip manifest logic in zip_manifests dir

* build: remove unused get-version.py script

* chore: move all release/sudowoodo related scripts into script/releases

* chore: update paths to zip manifests in CI configs

* build: fix path to ci release build script for arm tests
2019-06-24 10:18:04 -07:00
Samuel Attard
5686a0713e fix: make isDarkMode correctly detect dark mode in the auto setting on catalina (#18949) 2019-06-24 10:17:38 -07:00
Electron Bot
1cd7c21f38 Bump v7.0.0-nightly.20190624 2019-06-24 08:31:27 -07:00
Electron Bot
a084093d73 Bump v7.0.0-nightly.20190623 2019-06-23 08:31:00 -07:00
Samuel Attard
79ac99c09b build: remove scripts in the tools dir that are unused (#18944) 2019-06-22 22:29:22 -07:00
Electron Bot
e8c8328081 Bump v7.0.0-nightly.20190622 2019-06-22 08:31:58 -07:00
Charles Kerr
792f6b246c docs: fix spelling and grammar errors (#18910) 2019-06-21 16:19:21 -05:00
Shelley Vohr
bef9610f6a chore: account for remotes in branch parsing (#18930) 2019-06-21 13:58:59 -07:00
Micha Hanselmann
81497c7f2e fix: sanitize invalid custom protocol headers (#18854) 2019-06-21 09:23:57 -07:00
Electron Bot
236d552d6a Bump v7.0.0-nightly.20190621 2019-06-21 08:31:04 -07:00
Shelley Vohr
57c099d8b8 chore: fix branch trimming for blast-off releases (#18907) 2019-06-20 13:12:05 -07:00
Shelley Vohr
7e5ea179a1 chore: remove unneeded require (#18863)
* chore: remove unneeded require

* chore: update lockfile
2019-06-20 12:28:13 -07:00
Shelley Vohr
536327151d refactor: make savePath a property on DownloadItem (#18677) 2019-06-20 10:04:57 -07:00
Jeremy Apthorp
e95d2129be spec: de-flake ses.protocol test (#18884) 2019-06-20 09:54:33 -07:00
Electron Bot
c27231ce5c Bump v7.0.0-nightly.20190620 2019-06-20 08:31:49 -07:00
David Sanders
6251a6d307 fix: typo in comment (#18899) 2019-06-20 10:11:38 -05:00
Milan Burda
f3f2990b9e feat: sandbox renderer processes for cross-origin frames (#18650) 2019-06-20 12:10:56 +02:00
Jeremy Apthorp
23286fe557 fix: bundle swiftshader and ANGLE libraries on mac (#18870)
Fixes #18639. Not sure what exactly caused this to start breaking now, but these libraries appeared in https://chromium-review.googlesource.com/c/chromium/src/+/955949/ and got enabled by default on mac here https://chromium-review.googlesource.com/c/chromium/src/+/1005017/. The call during gpu process startup that was causing this crash was added here https://chromium-review.googlesource.com/c/chromium/src/+/1599993.
2019-06-19 18:14:51 -07:00
Samuel Attard
dca583a77f build: add an FYI job for building with RUN_AS_NODE disabled (#18890) 2019-06-19 18:10:04 -07:00
Samuel Attard
34c4c8d508 refactor: rename the atom namespace to electron 2019-06-19 17:33:28 -07:00
Samuel Attard
8c4496a9c9 chore: replace atom path with shell in scripts 2019-06-19 17:33:28 -07:00
Samuel Attard
56930338e8 chore: fix linting after shell rename 2019-06-19 17:33:28 -07:00
Samuel Attard
2160c1fcc9 refactor: replace includes for atom with shell 2019-06-19 17:33:28 -07:00
Samuel Attard
d7f07e8a80 refactor: rename the atom directory to shell 2019-06-19 17:33:28 -07:00
Milan Burda
4575a4aae3 Revert "feat: only allow bundled preload scripts (#17308)" (#18091)
This reverts commit 8cf15cc931.
2019-06-20 08:39:12 +09:00
Jeremy Apthorp
257fd2c0df spec: move more BrowserWindow specs to main runner (#18610)
* test: move more BrowserWindow specs to main runner

* more movey

* maximized/minimized events don't work on linux?

* try for better printing of non-equal bounds

* add a timeout when checking window bounds after resize

* add a timeout when reading content size

* setTimeout...?

* try a smaller window size
2019-06-20 08:38:21 +09:00
Milan Burda
aa522731a2 fix: building with enable_run_as_node disabled (#18887) 2019-06-19 16:15:14 -07:00
Jacob Groundwater
5247fe6038 Merge pull request #18891 from electron/groundwater-patch-1
docs: Document our existing language policy
2019-06-19 15:57:43 -07:00
Jacob Groundwater
5cb25c27b0 Update CONTRIBUTING.md
Co-Authored-By: Lee Dohm <1038121+lee-dohm@users.noreply.github.com>
2019-06-19 15:52:11 -07:00
Jacob Groundwater
f8f0540487 Update CONTRIBUTING.md
Co-Authored-By: Lee Dohm <1038121+lee-dohm@users.noreply.github.com>
2019-06-19 15:45:33 -07:00
Jacob Groundwater
ee01810395 Document our existing language policy 2019-06-19 15:41:32 -07:00
Milan Burda
79f0c444fd fix: app.getAppPath() returning default-app path for files or directories without package.json (#18763) 2019-06-19 23:34:22 +02:00
Samuel Attard
7201845894 refactor: auto generate electron_version.h from the version file (#18866)
* refactor: auto generate electron_version.h from the version file

* Update BUILD.gn

Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net>
2019-06-19 14:31:55 -07:00
Micha Hanselmann
504edf2cf6 test: correct fake tests in api-protocol-spec (#18869)
* fix protocol 404 fake tests

* fix another fake test

* fix last fake test (hopefully)
2019-06-19 13:40:49 -07:00
Samuel Attard
0146cc0eb5 fix: delay handling occlusion events to avoid flicker on macOS (#18661)
* chore: add debounce on the updateWebContentsVisibility method to ensure quick changes in occlusion do not result in flickering

* chore: update old patch headers
2019-06-19 12:51:25 -07:00
Samuel Attard
00d18917d0 build: add basic linting for the patches folder to ensure that .patches match the state on disk (#18615) 2019-06-19 10:48:15 -07:00
Samuel Attard
ae49aa4a03 chore: roll node to fix http2 memory leak (#18868) 2019-06-19 10:47:23 -07:00
Electron Bot
98bc0ae7ee Bump v7.0.0-nightly.20190619 2019-06-19 08:31:49 -07:00
Milan Burda
edb56500c7 refactor: piggy-back on ELECTRON_BROWSER_SANDBOX_LOAD to get content scripts (#18823) 2019-06-19 17:23:44 +02:00
Jeremy Apthorp
450aa33775 ci: add a space at the end of NINJA_STATUS (#18871) 2019-06-19 10:03:05 -04:00
Shelley Vohr
a0b2810640 chore: add ability to log native deprecation warnings (#18681)
* chore: add ability to log native deprecation warnings

* take std::string, handle conversion later

* address feedback from @ckerr's review

* simplify with feedback from zcbenz
2019-06-19 08:46:36 +09:00
Samuel Attard
a42ed950ca build: add env var to allow easily triggering a 3way patch (#18448) 2019-06-18 15:15:06 -07:00
Samuel Attard
c720803413 build: enforce frozen lockfile on the lint stage (#18867) 2019-06-18 16:42:42 -05:00
Shelley Vohr
b98c1d0472 chore: remove unused enum (#18848) 2019-06-18 11:27:48 -07:00
Jerry Wu
d5811607eb fix: extra space in security warning message causing list misalignment (#18815) 2019-06-18 09:59:02 -07:00
Electron Bot
3f7cce6d8c Bump v7.0.0-nightly.20190618 2019-06-18 08:31:47 -07:00
Shelley Vohr
1aac7ac9d0 chore: fix current branch fetch on master (#18844) 2019-06-18 07:54:32 -07:00
Samuel Attard
ccd15fc12e refactor: auto generate Info.plist to avoid bumping during releases (#18849) 2019-06-17 15:56:15 -07:00
Milan Burda
0af3548b55 feat: add security warning for remote module with remote content (#18822) 2019-06-17 14:21:30 -07:00
Samuel Attard
4dc38d39e9 refactor: replace atom_version and friends with electron_version (#18847) 2019-06-17 13:37:55 -07:00
Milan Burda
c9bca78a7a refactor: use async invoke to get webPreferences in security-warnings.ts (#18821) 2019-06-17 10:57:09 -07:00
Heilig Benedek
5a08522b98 feat: add removeInsertedCSS (#16579) 2019-06-17 11:39:35 -04:00
Milan Burda
deebde66f9 feat: make async webContents / <webview> methods return a Promise (#18792) 2019-06-17 12:10:02 +03:00
Shelley Vohr
632bbf948d build: get current release branch from commit (#18810)
When we blast off again, we check out a commit so the current branch ends up being incorrect and is HEAD rather than X-Y-Z. This therefore no longer just runs git rev-parse --abbrev-ref HEAD; it instead checks to ensure that the result of that call matches the release branch pattern. If it doesn't, it fetches the containing branch for the commit.

Since we only ever blast off from bump commits, we can safely assume that only one release branch will ever contain the bump commit and therefore be the one we want to use when tagging the release on npm.
2019-06-16 20:56:43 -07:00
Shelley Vohr
77d5e0c1ef docs: better explain supported release line levels (#18800) 2019-06-17 09:15:37 +09:00
Electron Bot
8959c98251 Bump v7.0.0-nightly.20190616 2019-06-16 08:31:00 -07:00
cclauss
1d6e5e6e70 fix: use print() function in both Python 2 and Python 3 (#18395)
Legacy print statements are syntax errors in Python 3 but print() function works as expected in both Python 2 and Python 3.

Old style exceptions are syntax errors in Python 3 but new style exceptions work as expected in both Python 2 and Python 3.
2019-06-15 10:26:09 -07:00
Electron Bot
7d0a93858d Bump v7.0.0-nightly.20190615 2019-06-15 08:31:45 -07:00
Nicolas Ramz
d59689b170 UPDATED: electron-windows-store command line (#18499)
The `flatten` option has been removed from electron-windows-store dcc654df2e so running the command would produce an error:

> error: unknwon option --flatten
2019-06-15 20:39:19 +09:00
Kilian Valkhof
d77159a19e docs: add information about persistence and removal of DevTools Extensions (#18519)
* docs: add information about persistence and removal of DevTools Extensions

* Update devtools-extension.md

* Remove trailing space
2019-06-15 20:38:55 +09:00
Milan Burda
370e9522b4 refactor: re-implement desktop-capturer in TypeScript (#18580) 2019-06-15 19:44:18 +09:00
John Kleinschmidt
4ef8de69ef build: show ninja stats for testing/debug builds (#18653)
* build: show ninja stats for testing/debug builds

* Update .circleci/config.yml

Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net>

* Use regular depot tools instead of third party one

* I forget where depot tools lives

* Fix depot tools path
2019-06-15 17:48:58 +09:00
Shelley Vohr
3309005325 chore: convert callbacks-registry to ts (#18682)
* chore: convert callbacks-registry to ts

* fix class import syntax

* move cb reg specs to spec-main
2019-06-15 17:18:25 +09:00
Mark Lee
441857c6e7 docs: reorganize application distribution links in table of contents (#18744)
* docs: fix link to supported platforms in TOC

* docs: move code signing under the distribution heading
2019-06-15 17:13:52 +09:00
Jeremy Apthorp
0a9df1e37d spec: deflake focus handling test (#18809) 2019-06-15 16:15:15 +09:00
Jeremy Apthorp
7b26048d9e test: unflake some net specs (#18782) 2019-06-14 16:26:07 -07:00
evelyn masso
45f5f2ba1a docs: add specific options for MenuItem.role (#18783) 2019-06-14 14:13:42 -07:00
Milan Burda
d9215dd4ce feat: add creationTime / sandboxed / integrityLevel to app.getAppMetrics() (#18718)
This is useful for checking which processes are sandboxed on OS level.

Regarding creationTime, since the pid can be reused after a process dies, it is useful to use both the pid and the creationTime to uniquely identify a process.
2019-06-14 12:39:55 -07:00
Samuel Attard
0bdc05bf24 build: use yarn to install arm modules (#18779) 2019-06-14 11:24:40 -07:00
Micha Hanselmann
83c3f71980 fix: use is_valid for cookie url validation (#18770)
Use is_valid instead of is_empty to validate url on cookies.set().
2019-06-14 10:56:21 -07:00
Electron Bot
44ea7ab093 Bump v7.0.0-nightly.20190614 2019-06-14 08:31:24 -07:00
Shelley Vohr
bfcce8aa27 refactor: pass MessageBox params as a struct (#18732)
Historically, we've been passing in all MessageBox parameters individually, which makes augmenting or improving MessageBox functionality challenging because to change or add even one argument requires a huge cascade of argument changes that leaves room for errors.

For other file dialog related APIs, we use a struct (DialogSettings), and so this PR takes a similar approach and refactors MessageBox parameters into a struct (MessageBoxSettings) which we then use to simplify argument passing and which will enable us to more quickly iterate and improve upon functionality in the future.
2019-06-14 08:26:25 -07:00
Shelley Vohr
ffb53405fb chore: convert extension apis to TypeScript (#18688)
Converts extensions-related files to TS
2019-06-14 07:52:24 -07:00
Milan Burda
6e327184bd fix: crash in BrowserWindow destructor after win.webContents.destroy() (#18686) 2019-06-14 11:44:36 +09:00
Milan Burda
da58ac7c20 refactor: use app.commandLine.getSwitchValue() for parsing user-data-dir (#18764) 2019-06-13 16:03:02 -07:00
Jeremy Apthorp
29decbdd4d ci: make console.warn work in tests (#18771) 2019-06-13 15:56:58 -07:00
Samuel Attard
390e7f5719 docs: fix invalid optional declaration (#18780) 2019-06-13 15:56:03 -07:00
Robo
5e320291b4 fix: HTML fullscreen request for sub frames (#18736)
Don't re-enter fullscreen if there is a pending operation,
for subframe fullscreen request `EnterFullScreenModeForTab`
will be called for both the frame in question as well as
the outer webContents hosting it.
2019-06-13 14:02:56 -07:00
Jeremy Apthorp
9856e5df3b chore: upgrade docs-parser to fix nondeterminism (#18750) 2019-06-13 13:45:08 -07:00
Samuel Attard
ac02ab9fde feat: provide the frame URL with permission requests and checks (#18757)
* feat: provide the frame URL with permission requests and checks

Also provides a handy isMainFrame property to determine if it is an
iframe making the request

* chore: refactor to use base::Value

* chore: use Set<Type>Key over SetPath
2019-06-13 11:11:43 -07:00
Electron Bot
7c76d0e34a Bump v7.0.0-nightly.20190613 2019-06-13 08:32:58 -07:00
Nitish Sakhawalkar
f98454e5dd fix: use crashpad on Windows (#18483)
* Initial changes to use crashpad for windows

* Remove crashpad patch

* Report error when failed to connect pipe

* Allow crashpad to communicate with named pipe

* Add patch to make crashpad named pipe work

* Windows also needs crashReporter on main process

* Call SetUnhandledExceptionFilter in node process

Node can also use crash reporter.

* Do not treat node process as browser process

* No more need to manually start crash service

* Use base::StringPrintf for better readbility

* Print error when pipe name not available

* Make sure pipe name is updated

Note that the crashpad may be started after renderer process gets
created.

* Fix some tests

* Update node

* Exclude crashpad files on Linux and MAS

* Fix lint warning

* Remove unused checks

* kCrashpadPipeName is only available on Windows

* Fix uploadToServer tests

* Fix extra params tests

* Fix getCrashesDirectory tests

* Run crashReporter tests on CI

* Style fixes

* Update crashreporter docs

* Rename InitBreakpad to Init

* Add comment for process_type_.empty() and UTF16ToASCII to UTF16ToUTF8.

* Update build.gn include crashpad headers

* Address comment https://github.com/electron/electron/pull/18483#discussion_r290887898

* Avoid using api::WebContents

* Put kRunAsNode in atom_constants

* Remove duplicate settings on upload params

* Fix building on macOS

* Update description for crashpad_pid_check.patch
2019-06-13 15:42:21 +09:00
Micha Hanselmann
ddec3c0e78 test: add test for invalid cookie url (#18751)
Co-Authored-By: Erick Zhao <erick@hotmail.ca>
2019-06-12 19:49:36 -07:00
Jeremy Apthorp
ba96cdb7dc refactor: mojofy autofill (#18723) 2019-06-12 15:08:22 -07:00
Shelley Vohr
ec10fd3044 fix: callback values for printing cancellation and success (#17400)
Callback false when disconnecting from the print job if the current printing job has not completed, and true if printing is triggered successfully.
2019-06-12 12:34:07 -07:00
Shelley Vohr
292a240e1b fix: correct isDownloadable docs to match impl (#18720) 2019-06-12 10:54:14 -07:00
Electron Bot
5317211b0b Bump v7.0.0-nightly.20190612 2019-06-12 08:32:19 -07:00
Robert Säll
0bf83b7183 fix: remove lingering data when notifications autodismiss on Windows 7 (#18401) 2019-06-12 08:39:25 +09:00
Cheng Zhao
0e3ab7c128 feat: migrate protocol module to NetworkService (Part 12) (#18726)
* Support "uploadData" in "request" argument

* Support "uploadData" option in http handler

* Fix building on win32
2019-06-12 08:37:06 +09:00
Jeremy Apthorp
e5d1e7b4da fix: move window.open postMessage test to main runner to fix flake (#18735) 2019-06-12 08:35:58 +09:00
Electron Bot
81ad355355 Bump v7.0.0-nightly.20190611 2019-06-11 08:31:46 -07:00
Cheng Zhao
3a1d6d2ce1 feat: migrate protocol module to NetworkService (Part 11) (#18706)
* Pipe data into HTTP protocol handlers

* Remove unused parameters

* Remove "sending request of http protocol urls" test

Sending request to "http://" in "file://" violates CORS rules and always
fail, before NetworkService somehow Chromium still sent a request even
though the request failed with CORS error, so the test passes while the
test is not valid. With NetworkService no request is sent at all and the
test jsut fails.

So this is an ancient invalid test, as sending http requests have been
fully covered in other tests, I am removing this test.
2019-06-11 14:07:58 +09:00
Shelley Vohr
c6dc7d5b79 chore: fix duplicate error string (#18713) 2019-06-10 17:14:58 -07:00
Shelley Vohr
af108764c7 chore: revert promisified systemPreferences notification methods
This reverts commit eec12b399a.
2019-06-10 09:34:21 -07:00
Electron Bot
4321df13f2 Bump v7.0.0-nightly.20190610 2019-06-10 08:32:07 -07:00
Jeremy Spiegel
64f7974252 fix: properly pass openExternal activate option (#18657)
* fix: properly pass openExternal activate option

A reference to an OpenExternalOptions structure was being captured by an Objective-C block that
outlived the object that was being referenced.

* Fix test in CI

* Don't check for activate on linux

* Close BrowserWindow
2019-06-10 07:40:05 -07:00
Electron Bot
605cd9bec9 Bump v7.0.0-nightly.20190609 2019-06-09 08:31:23 -07:00
Electron Bot
54449d044d Bump v7.0.0-nightly.20190608 2019-06-08 08:31:51 -07:00
Samuel Attard
ad54d38678 fix: use effectiveAppearance to check dark mode on mojave and above (#18666)
* fix: use effectiveAppearance to check dark mode on mojave and above

* chore: add forward declarations for dark appearance
2019-06-07 12:01:04 -07:00
Jeremy Apthorp
bb19142389 test: move some remote specs to the main runner (#18636) 2019-06-07 10:43:32 -07:00
Samuel Attard
a9f601612f fix: use isEqual instead of pointer equality to convert NSAppearance (#18665) 2019-06-07 09:55:29 -07:00
Electron Bot
b10c946564 Bump v7.0.0-nightly.20190607 2019-06-07 08:31:20 -07:00
Shelley Vohr
abab90f563 feat: allow resigning current NSUserActivity (#18659)
* feat: allow resigning current NSUserActivity

* wrap in @available check
2019-06-06 22:16:03 -07:00
Shelley Vohr
b30484d3a9 ci: allow use of .only in ci testing mode (#18678) 2019-06-06 17:12:22 -07:00
Felix Rieseberg
8da17ffe37 docs: Add missing document links to docs/readme (#18578)
* docs: Update Guides & Tutorials section

* docs: Update the list of docs

* Update docs/README.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update docs/README.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update docs/README.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update docs/README.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* docs: Implement feedback
2019-06-06 11:39:21 -07:00
Electron Bot
8330507efd Bump v7.0.0-nightly.20190606 2019-06-06 08:31:44 -07:00
Shelley Vohr
eec12b399a feat: promisify systemPreferences notification methods (#18631)
* feat: promisify systemPreferences notification methods

* correct userInfo typedef
2019-06-06 07:47:18 -07:00
Jeremy Apthorp
4b9da4dd0e chore: remove mips64el patches as they've largely been upstreamed (#18628) 2019-06-05 16:36:17 -07:00
Samuel Attard
a45afddb75 build: unify YARN_VERSION variable usage and ensure CI uses yarn not npm (#18607)
* build: unify YARN_VERSION variable usage and ensure CI uses yarn not npm

* chore: use a JS helper so that it can work on windows

* chore: make script/yarn without node_modules installed
2019-06-05 16:30:39 -07:00
Samuel Attard
0fc172fcaf fix: reject the executeJavaScript promise when it fails to execute the script (#18635)
* fix: reject the executeJavaScript promise when it fails to execute the script

Closes #9102

* Update atom/renderer/api/atom_api_web_frame.cc

Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net>

* Update atom/renderer/api/atom_api_web_frame.cc

Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net>

* fix: missing semicolon
2019-06-05 15:43:02 -07:00
Robo
7d326f6bc5 chore: Remove AtomResourceDispatcherHostDelegate (#18623)
It is no longer used, follow up for
https://chromium-review.googlesource.com/c/chromium/src/+/1610892
2019-06-05 12:49:05 -07:00
Jeremy Apthorp
291ee2dafc refactor: use the URL api to resolve urls in window setup (#18611) 2019-06-05 10:21:06 -07:00
John Kleinschmidt
bd80e68698 ci: fix issues downloading from CircleCI (#18652)
Make sure we pass along token to download from CircleCI
Also, add back off period for retries on downloads.
2019-06-05 12:21:57 -04:00
Jeremy Apthorp
796d2636e6 ci: add windows zip manifest checking (#18629)
* ci: add windows zip manifest checking

* fix manifests
2019-06-05 11:58:11 -04:00
Electron Bot
aa030f9fd5 Bump v7.0.0-nightly.20190605 2019-06-05 08:31:31 -07:00
Shelley Vohr
a0b1f4fe0b refactor: convert browser window state fns to props (#18618) 2019-06-04 22:44:16 -07:00
Electron Bot
164cc43440 chore: bump chromium to bd6aad6a4b37dad7aae42fec349e9 (master) (#18626)
* chore: bump chromium in DEPS to f200986dfaabd6aad6a4b37dad7aae42fec349e9

* chore: BridgedNativeWidgetImpl was renamed to NativeWidgetMacNSWindowHost

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1640804

* refactor: remove MainMenu.xib as Chromium has removed its dependency on xcode and therefore all xibs

As we set default menus in JS land the default native menu is tiny, just
has a Quit button

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1627242

* chore: update zip manifests
2019-06-04 17:27:07 -07:00
Jeremy Apthorp
9e8bd433df fix: ensure correct ordering of sendSync w.r.t. send (#18630) 2019-06-04 17:10:31 -07:00
Jeremy Apthorp
ed5fb4a720 refactor: simplify content script injection (#18532) 2019-06-04 16:07:34 -07:00
Samuel Attard
f80601da16 docs: ensure that optionality matches between documented params and signatures (#18613)
* docs: ensure that optionality matches between documented params and signatures

* docs: ensure that all optional declarations are lower case

* chore: fix broken link
2019-06-04 14:03:24 -07:00
Milan Burda
69e32ad9ce refactor: use ipcRenderer.invoke / ipcMain.handle in default-app (#18581) 2019-06-04 18:13:35 +02:00
Electron Bot
74825e4df7 Bump v7.0.0-nightly.20190604 2019-06-04 08:31:17 -07:00
Electron Bot
d008d217f9 chore: bump chromium to 2a7aff41ce73adc0eeee67d364989 (master) (#18505)
* chore: bump chromium in DEPS to 07463d3cd628b037c11f36022cb4c788db4628e3

* chore: update patches

* fix: Don't leak system network context when nw service is disabled

https://chromium-review.googlesource.com/c/chromium/src/+/1632494
NetworkService is now deleted by using SequnceLocalStorageSlot
on the IO thread when the service is disabled, which expects
all associated NetworkContexts on that sequence to be destroyed.

* chore: bump chromium in DEPS to 7c16850e7e40990e141f47101b737ec1092175a1

* fix: Destroy all network contexts before primary network context

* Simplify out-of-process service registration

https://chromium-review.googlesource.com/c/chromium/src/+/1615882

* [ThreadPool] Rename base::ThreadPool to base::ThreadPoolInstance

https://chromium-review.googlesource.com/c/chromium/src/+/1634851

* chore: update patches

* fix: -Winconsistent-missing-override warnings

* chore: bump chromium in DEPS to 93ebfaccc12715df1d5426797998eed0932f7ae1

* Change CreateBrowserMainParts to return unique_ptrs

https://chromium-review.googlesource.com/c/chromium/src/+/1632532

* chore: update patches

* chore: bump chromium in DEPS to e656555ffb87bdd05e248d0a3ef9dd9d3433e17b

* chore: bump chromium in DEPS to 111e7a8d2e3ae9d70e535009d6afb066ac906063

* chore: bump chromium in DEPS to 9b6b84670d32a7aff41ce73adc0eeee67d364989

* chore: update patches

* chore: remove ShouldInterceptResourceAsStream as it is removed upstream

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1639597

* chore: remove ResourceDispatcherHostCreated as it is removed upstream

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1610892

* chore: CreateWithStrongBinding --> CreateWithSelfOwnedReceiver

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1636722

* chore: rename all blink media enums

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1639237

* chore: add accidentally removed patch content back
2019-06-03 20:44:12 -07:00
小菜
641e1d6587 doc: change pyobjc link in macos build instruction (#18471) 2019-06-03 18:57:13 -07:00
Jeremy Apthorp
d1371c5dd0 refactor: mojofy zoom api (#18608)
* refactor: mojofy zoom api

* remove unneeded #includes

* remove outdated comment
2019-06-04 10:18:22 +09:00
Samuel Attard
24b3d66767 refactor: remove electron.asar and embed JS in binary (#18577)
* refactor: remove electron.asar and embed JS in binary

* chore: update DEPS to merged node sha

* chore: remove unneeded eslint ignore
2019-06-03 17:03:59 -07:00
Jeremy Apthorp
901cdb22e3 test: move some BrowserWindow specs to the main runner (#18551) 2019-06-03 15:10:58 -07:00
Milan Burda
cf628d9287 refactor: remove menu-will-close / setTimeout workaround (#18582) 2019-06-03 16:48:01 -05:00
Richard Townsend
3c8acf3687 build: bring in a later compiler for Windows on Arm (#18591)
* build: allow pulling in a later version of Clang

Due to a code-generation defect related to virtual method thunks in the
official compiler used for Chromium M76, it's necessary to build for WoA
with a later version of Clang. When running gclient sync, setting
ELECTRON_BUILD_WOA=1 in the environment will download a corrected
compiler which doesn't have this defect.

* docs: add a note about building for Windows on Arm
2019-06-03 17:29:25 -04:00
Alexandre Lacheze
b4276835d8 fix: lost window.opener after cross-origin navigation (#18173)
* Get a site instance related to current one instead of creation a new one

Using `GetRelatedSiteInstance` will keep the relation (same browsing instance) between the current and the new site instance.

* Some relies on preloads in opened window

The fact that, now, we always have an opener for opened windows diables note integration in opened windows, except if `nodeIntegrationInSubFrames` is enabled.

* Add a test on window.opener after cross-orgin navigation

* Make sure to unregisterProtocol in tests

* Introduc and use a NetworkSandbox for tests

* Modify tests about zoom persistence to properly simulate cross-origin navigation

* Revert "Modify tests about zoom persistence to properly simulate cross-origin navigation"

This reverts commit 0a7537f2eb7f183ddec16637e8a2e92a0d600321.
2019-06-03 13:23:15 -07:00
Samuel Attard
cec61d010b refactor: lazily hook into child_process in asar_init (#18576)
Previously we loaded both fs and child_process and then hooked into
the returned value, relying on the module cache to keep our modifications
and give them to everyone.

Loading child_process took in excess of 20ms though so instead of loading
it and then hooking in.  We intercept all Module load requests, and when
the first one for `child_process` comes in, we wrap the appropriate methods
and then never touch it again.
2019-06-03 13:19:52 -07:00
Felix Rieseberg
cb4579fe28 docs: Fix incorrect dialog docs (#18227)
* docs: Fix incorrect dialog docs

We had multiple definitions for `showSaveDialog`.

* docs: Update, take two
2019-06-03 12:54:47 -07:00
Milan Burda
8b5473c170 build: strip swiftshader binaries (#18588) 2019-06-03 15:24:46 -04:00
Dana Woodman
4feb769378 docs: update community Slack URL to point to Discourse invite thread (#18222) 2019-06-03 12:06:06 -07:00
Joël Charles
fd9e031f0d docs: Update breaking changes on webFrame.setSpellCheckProvider (#17915)
* doc: Update breaking changes on webFrame.setSpellCheckProvider

* doc: fix example

* doc: lint: extra semicolon

* Update docs/api/breaking-changes.md

Co-Authored-By: magne4000 <joel.charles91@gmail.com>
2019-06-03 13:56:46 -05:00
Samuel Attard
0ee2f8a64a refactor: lazy load child_process in the crash-reporter module (#18574)
This module is on the hot load path and we don't need cp till later
2019-06-03 11:48:23 -07:00
Tomas Rycl
477b09db3e fix: don't export private V8 symbols that can cause native node modules to crash (#18281) 2019-06-03 11:45:30 -07:00
Nitish Sakhawalkar
911cdd809a Update gen-filenames.js to generate posix paths (#18488) 2019-06-03 11:43:55 -07:00
Alexey Kuzmin
7f369c3292 build: install python-dbusmock via pip for a Docker container (#18589)
* build: use python-dbusmock v0.18.1 on Linux

To prevent timeout errors with some other python-dbusmock versions.

* Don't use a fixed version of python-dbusmock

Co-Authored-By: John Kleinschmidt <jkleinsc@github.com>
2019-06-03 14:36:58 -04:00
Milan Burda
eedbdedef9 build: remove Vulkan mock ICD (#18546) 2019-06-03 20:17:57 +02:00
Jeremy Apthorp
0b25176893 refactor: mojofy draggable regions (#18536) 2019-06-03 10:43:04 -07:00
Shelley Vohr
52c76d737a refactor: make autoHideMenuBar a property on BrowserWindows (#18555) 2019-06-03 09:09:47 -07:00
Electron Bot
4cb6be453a Bump v7.0.0-nightly.20190603 2019-06-03 08:32:00 -07:00
Samuel Attard
18acda7888 perf: lazily create the anchor tag used for URL resolving (#18571) 2019-06-03 01:04:21 -07:00
Samuel Attard
449d2752f2 refactor: lazy load V8 module in browser/init (#18575) 2019-06-03 01:03:33 -07:00
Samuel Attard
bc527f6b51 refactor: bundle the browser and renderer process electron code (#18553)
* refactor: bundle the browser and renderer process electron code

* Bundles browser/init and renderer/init
  * Improves load performance of main process by ~40%
  * Improves load performance of renderer process by ~30%
* Prevents users from importing our "requiring" our internal logic such
as ipc-main-internal.  This makes those message buses safer as they are
less accessible, there is still some more work to be done though to lock
down those buses completely.
* The electron.asar file now only contains 2 files, as a future
improvement maybe we can use atom_natives to ship these two files
embedded in the binary
* This also removes our dependency on browserify which had some strange
edge cases that caused us to have to hack around require-order and
stopped us using certain ES6/7 features we should have been able to use
(async / await in some files in the sandboxed renderer init script)

TLDR: Things are faster and better :)

* fix: I really do not want to talk about it

* chore: add performance improvements from debugging

* fix: resolve the provided path so webpack thinks it is absolute

* chore: fixup per PR review

* fix: use webpacks ProvidePlugin to keep global, process and Buffer alive after deletion from global scope for use in internal code

* fix: bundle worker/init as well to make node-in-workers work

* chore: update wording as per feedback

* chore: make the timers hack work when yarn is not used
2019-06-02 13:03:03 -07:00
Electron Bot
a19e55a902 Bump v7.0.0-nightly.20190602 2019-06-02 08:31:21 -07:00
Shelley Vohr
9187759460 chore: fix logging to stderr (#18537) 2019-06-01 09:21:13 -07:00
Electron Bot
04dd52e4dc Bump v7.0.0-nightly.20190601 2019-06-01 08:31:36 -07:00
Jeremy Apthorp
90caedb552 chore: re-enable disabled time ticks dcheck (#18525) 2019-05-31 16:56:10 -07:00
Samuel Attard
87ae9324ac feat: Add option to conditionally disable site instance patches (#18396)
* chore: allow conditional disable of the site instance override patches at runtime

* feat: add app.allowRendererProcessReuse property to allow runtime disable of site instance overrides

spec: add tests for the new allowRendererProcessReuse property

feat: add console warnings / errors for loading non context-aware native modules
  * Only error if the patch is disabled
  * Warn all the time, this will ship in Electron 7
2019-05-31 15:47:18 -07:00
Samuel Attard
26155c8a00 fix: handle gzipped chrome WebUI resources (#18531)
Fixes: #18503
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1576232

For whatever reason Chromium made this change and then made the default
//content behavior to return false for all IsDataResourceGzipped
requests.  This PR updates our ContentClient impl to return the correct
values.

Notes: Fixed issues where some `chrome://*` URLs would not render
correctly
2019-05-31 13:05:35 -07:00
Jeremy Apthorp
81366b5bfb chore: remove upstreamed ffmpeg patch (#18524) 2019-05-31 14:08:11 -04:00
Jeremy Apthorp
c436997840 feat: add ipcRenderer.invoke() (#18449) 2019-05-31 10:25:19 -07:00
Electron Bot
b180fb376c Bump v7.0.0-nightly.20190531 2019-05-31 08:32:10 -07:00
Maya Wolf
ab70e854f8 fix: contractions handling in spellchecker (#18506)
This fixes #18459 by improving the handling of contractions in the spellcheck API. Specifically, it now accepts contraction words where the spellchecker recognizes the whole word, and not, as previously, just if it recognizes all of its parts.
2019-05-30 21:19:10 -07:00
John Kleinschmidt
a31faaae61 ci: add retries to downloads for arm testing (#18526) 2019-05-30 17:22:34 -07:00
Shelley Vohr
1e3e5a6619 refactor: set appLevelAppearance prop on systemPreferences (#18477)
* refactor: set appLevelAppearance prop on systemPreferences

* ensure backwards compat is tested
2019-05-30 17:12:46 -07:00
Jeremy Apthorp
ac35f41e8d test: move download-related session specs to main runner (#18508) 2019-05-30 15:05:02 -07:00
Shelley Vohr
554ee92b39 docs: specify use case for the 'services' role (#18484)
* docs: specify use case for the 'services' role

* update based on @caesar's recommendation

Co-Authored-By: Caesar Schinas <caesar@caesarschinas.com>
2019-05-30 14:33:48 -07:00
Samuel Attard
02dc1b266c docs: use | instead of 'or' for docs (#18512) 2019-05-30 10:32:46 -07:00
Electron Bot
81ba491e53 Bump v7.0.0-nightly.20190530 2019-05-30 08:32:32 -07:00
Milan Burda
09d544f6ad docs: remove obsolete callback argument from dialog.showOpenDialog() (#18496) 2019-05-30 12:00:22 +02:00
Milan Burda
a1226d75ff feat: add process.getBlinkMemoryInfo() (#17762) 2019-05-30 11:50:35 +02:00
Jeremy Apthorp
2dbd2c07e4 refactor: nws13n: session.allowNTLMCredentialsForDomains (#18129) 2019-05-29 16:43:06 -07:00
Jeremy Apthorp
f4c792d014 feat: enable reporting api (#18255) 2019-05-29 16:33:19 -07:00
Jeremy Apthorp
babe2b68fb test: move beforeunload tests to main runner and fix flake (#18432) 2019-05-29 13:38:14 -07:00
Shelley Vohr
9af5072115 chore: remove last instances of base::Bind (#18178)
* chore: remove last instances of base::Bind

* MessageBoxCallback is a OnceCallback

* convert permission helepr cbs to Once

* convert ResponseCallback to Once
2019-05-29 13:02:15 -07:00
Samuel Attard
96371b6d75 spec: run nan tests to ensure v8 compat has not broken (#18489) 2019-05-29 12:38:17 -07:00
Shelley Vohr
3d8db573d9 fix: reverse dialog cancel bool for openDialog (#18492) 2019-05-29 12:37:58 -07:00
Jeremy Apthorp
f5b3d00b47 ci: add check for dist zip file changes (#18446) 2019-05-29 09:40:02 -07:00
Electron Bot
471d457576 Bump v7.0.0-nightly.20190529 2019-05-29 08:31:37 -07:00
Shelley Vohr
03a02b8d6c fix: breakpad symbol generation on linux arm (#18490) 2019-05-28 20:15:17 -07:00
Samuel Attard
93b8dc2362 fix: ensure the webContents is not destroyed before communicating (#18467) 2019-05-28 14:22:35 -07:00
Jeremy Apthorp
815b9d7707 feat: [contentTracing] allow calling stopTracing() with no arguments (#18411) 2019-05-28 14:15:42 -07:00
Jeremy Apthorp
1a609f0caf test: move several session specs to the main runner (#18433) 2019-05-28 14:12:59 -07:00
Jeremy Apthorp
2923ae8b03 fix: don't package mojom{,-lite}.js files in dist.zip (#18444) 2019-05-28 14:11:02 -07:00
Jeremy Apthorp
0e2dedaf4e test: narrow scope of afterEach in remote to tests that need it (#18447) 2019-05-28 14:07:48 -07:00
Electron Bot
96b32a814c chore: bump chromium to 964c4bca8de5c320534d95606c861 (master) (#18440)
* chore: bump chromium in DEPS to 2930eb12d56988c2c80bad2797ab036fe493d4e1

* chore: update patches

* Revert "disable robotjs-based tests"

This reverts commit e56adafc1f.

* Revert "skip dbus tests (#18409)"

This reverts commit aea042cc83.

* Revert "skip more dbus tests"

This reverts commit 68dbef48da.

* chore: bump chromium in DEPS to fd62da5601399b92effaa32a943fcd96143c8605

* chore: bump chromium in DEPS to 99f87ca22ee6e7ec953defe694771cb68f47a596

* chore: bump chromium in DEPS to d88778435b4cd9a510a63385b6d4ba24674b9774

* chore: update patches

* chore: update ssl_security_state_tab_helper.patch

* Remove content_packaged_services

https://chromium-review.googlesource.com/c/chromium/src/+/1604203

* chore: fix false positive lint error

* views: wireup widget name to crash data

https://chromium-review.googlesource.com/c/chromium/src/+/1626640

* chore: bump chromium in DEPS to ab588d36191964c4bca8de5c320534d95606c861

* roll patches
2019-05-28 13:18:10 -07:00
Shelley Vohr
c621615112 fix: create missing directories with app.setPath (#18244) 2019-05-28 10:37:54 -07:00
Shelley Vohr
1688ebdd40 fix: respect minimizable/closable for customButtonsOnHover (#18425)
This PR ameliorates an issue whereby minimizable and closable weren't respected in customButtonsOnHover mode. maximizable isn't addressable here, since it's been blanket disabled in newer versions of macOS owing to an issue with the NSWindowStyleMaskFullSizeContentView style mask.
2019-05-28 10:23:16 -07:00
Shelley Vohr
01cd6e7a06 docs: clarify crash report extra param length (#18386)
Resolves #17746.

Clarifies that the extra field of the crashReporter options object only needs to be < 64 characters on Windows.
2019-05-28 10:17:01 -07:00
Electron Bot
43f8a7ef00 Revert "Bump v7.0.0-nightly.20190528"
This reverts commit af8d4e1bc5.
2019-05-28 08:40:13 -07:00
Electron Bot
af8d4e1bc5 Bump v7.0.0-nightly.20190528 2019-05-28 08:33:44 -07:00
Cheng Zhao
00964b98b9 feat: migrate protocol module to NetworkService (Part 10) (#18464)
* Explicitly call OnReceiveRedirect for redirections

* Better way for detecting redirection

* Create new loader for redirections
2019-05-28 15:08:50 +09:00
Electron Bot
c0c5ebb271 Bump v7.0.0-nightly.20190527 2019-05-27 08:31:45 -07:00
Milan Burda
ac002b3c3c fix: set nativeWindowOpen when sandboxed (#18273) 2019-05-27 02:44:54 +02:00
Electron Bot
4ed989587b Bump v7.0.0-nightly.20190526 2019-05-26 08:31:32 -07:00
Electron Bot
cfd4eace42 Bump v7.0.0-nightly.20190525 2019-05-25 08:31:48 -07:00
Electron Bot
723625c065 Bump v7.0.0-nightly.20190524 2019-05-24 13:47:20 -07:00
Samuel Attard
a6637fbce9 chore: update the npm package to use @electron/get (#18413)
* chore: update the npm package to use @electron/get

* chore: update node requirement for got
2019-05-24 13:40:53 -07:00
Jeremy Apthorp
cbc177708e fix: compile error in netlog (#18443) 2019-05-24 10:54:32 -07:00
Cheng Zhao
54cbe5f749 feat: migrate protocol module to NetworkService (Part 9) (#18374)
* Compare final data instead of url

The behavior of did-finish-load and getURL has changed for redirects when
using NetworkService, so the test fails for NetworkService.

Comparing the finally received data makes the test more reliable.

* Implement intercept APIs

* Setting mimeType should set "content-type" header

* Passing no argument should not throw JS error

* Don't access api namespace in ProxyingURLLoaderFactory

* No need to create AtomURLLoaderFactory every time

* No use of weak factory
2019-05-24 11:28:00 +09:00
Jeremy Apthorp
646f572b77 refactor: netLog directly uses network service (#18289) 2019-05-23 15:31:38 -07:00
Electron Bot
d57df5a4a1 Bump v7.0.0-nightly.20190523 2019-05-23 14:06:05 -07:00
Electron Bot
c4147aed3f Revert "Bump v7.0.0-nightly.20190523"
This reverts commit 4604985b2e.
2019-05-23 14:03:19 -07:00
Electron Bot
4604985b2e Bump v7.0.0-nightly.20190523 2019-05-23 13:58:31 -07:00
John Kleinschmidt
842830d709 build: move Windows release builds to AppVeyor cloud (#18337)
* build: move Windows release builds to AppVeyor cloud

* Use new env variable for AppVeyor cloud server
2019-05-23 16:54:34 -04:00
Jeremy Apthorp
53954494a9 chore: bump chromium to 54af93edd956a53c786668bc0e253 (master) 2019-05-23 13:35:41 -07:00
Milan Burda
e32cf5c418 chore: remove leftover docs/api/structures/memory-info.md (#18421) 2019-05-23 15:25:52 -04:00
Jeremy Apthorp
f8ab48adac roll patches 2019-05-23 10:39:06 -07:00
Jeremy Apthorp
68dbef48da skip more dbus tests 2019-05-23 10:28:51 -07:00
Shelley Vohr
b48dd6a11c test: add spec for contentTracing.stopRecording (#18391) 2019-05-23 10:15:08 -07:00
Electron Bot
05e986816e chore: bump chromium in DEPS to 6a008993a2e54af93edd956a53c786668bc0e253 2019-05-23 06:00:22 -07:00
Lucas Gabriel Schneider
72b1c01836 fix: docs/api/dialog.md: fix typo (#18392) 2019-05-22 20:22:51 -07:00
Adam Harley
8f200595ba correct reference chrome://plugins to components (#18237) 2019-05-22 15:58:53 -07:00
Jeremy Apthorp
aea042cc83 skip dbus tests (#18409) 2019-05-22 14:34:36 -07:00
Naoki Maeda
87a337a536 refactor: update husky ver 2.2.0 (#18300) 2019-05-22 14:03:06 -07:00
Jeremy Apthorp
9e9d0c3435 replace revert of metal support for gl::ProgressReporter with cherry-pick of fix 2019-05-22 13:15:32 -07:00
Jeremy Apthorp
2fcb785d3e Replace views_bridge_mac with remote_cocoa
https://chromium-review.googlesource.com/c/chromium/src/+/1623573
2019-05-22 12:56:21 -07:00
Jeremy Apthorp
4f6d24026d Update function signatures for focused element change notifications
https://chromium-review.googlesource.com/c/chromium/src/+/1609749
2019-05-22 12:55:37 -07:00
Jeremy Apthorp
7d212b17f8 v8/snapshot_toolchain.gni moved
https://chromium-review.googlesource.com/c/v8/v8/+/1612903
2019-05-22 11:45:48 -07:00
Jeremy Apthorp
e56adafc1f disable robotjs-based tests
See #18409
2019-05-22 11:42:24 -07:00
Jeremy Apthorp
ec3a4cea6a update patches 2019-05-22 11:18:44 -07:00
Electron Bot
da98beac54 chore: bump chromium in DEPS to c4cd49fdba21ffb5fd53d1e6d508bb285a4ff9a6 2019-05-22 06:00:51 -07:00
Cheng Zhao
e1a2cc7f36 feat: migrate protocol module to NetworkService (Part 8) (#18361)
* Add ProxyingURLLoaderFactory

* Intercept file:// protocol to support asar archives
2019-05-22 10:43:37 +09:00
Sofia Nguy
287345c778 docs: explicit rule for features in the beta cycle (#18393) 2019-05-21 18:42:02 -05:00
Jeremy Apthorp
12f95429bf use unique_ptr instead of shared_ptr for SpellcheckRequest 2019-05-21 12:22:15 -07:00
Jeremy Apthorp
a5e6e957cf FIXME: temporarily revert metal support for gl::progressreporter due to build errors 2019-05-21 12:11:15 -07:00
Jeremy Apthorp
5b507cc562 storage::IsolatedContext API changed
https://chromium-review.googlesource.com/c/chromium/src/+/1603486
2019-05-21 12:11:15 -07:00
Jeremy Apthorp
e96f9c06f0 GetNetCaptureModeFromCommandLine moved to net
https://chromium-review.googlesource.com/c/chromium/src/+/1614697
2019-05-21 12:11:15 -07:00
Jeremy Apthorp
79f62cc1aa DelegatedFrameHost API changed
https://chromium-review.googlesource.com/c/chromium/src/+/1594924
2019-05-21 12:11:15 -07:00
Jeremy Apthorp
ca283c74c9 Merge remote-tracking branch 'origin/master' into roller/chromium-ad1b791122c04bd91b825fbfbdf1ff4da82a0edb-1558011686736 2019-05-21 10:07:17 -07:00
Jeremy Apthorp
446944c677 rebase patches 2019-05-21 10:05:21 -07:00
Electron Bot
75609f784c Bump v7.0.0-nightly.20190521 2019-05-21 09:39:02 -07:00
Samuel Attard
a8ff6899d4 fix: correctly support the webkitdirectory input attr (#18343)
Fixes #839

The implementation here was loosely inspired by the implentation in
//chrome found in their FileSelectHelper.  I.e. That's where the usage
of net::DirectoryLister comes frome.

Refs: https://cs.chromium.org/chromium/src/chrome/browser/file_select_helper.cc
2019-05-21 11:18:22 -05:00
Milan Burda
1941a46825 docs: clarify that 'second-instance' is only emitted when the second instance calls app.requestSingleInstanceLock() (#18272) 2019-05-21 10:56:36 -05:00
Shelley Vohr
e39c76bfe1 fix: reverse saveDialog cancellation bool (#18366) 2019-05-21 10:51:59 -05:00
Shelley Vohr
1a2ab11c90 fix: set window to null when no window is passed (#18240)
* fix: set window to null when no window is passed

* add new specs for dialog

* fix process blocking for showMessageBox
2019-05-21 09:08:22 -05:00
Electron Bot
c832533f5f chore: bump chromium in DEPS to a351866f81b645d8c593132b664d5e74b1eb15f0 2019-05-21 09:01:22 -04:00
Samuel Attard
e73a0e6cc6 docs: replace the atom.io headers URL with electronjs.org (#18328) 2019-05-21 16:17:07 +09:00
Charles Kerr
d1207e9d8f docs: use "Breaking Changes" as the changes doc's title (#18326)
* Use "Breaking Changes" as the changes doc's title.

Multiple people have commented that this important page is difficult
to find, in part because people search for "Breaking" or "Changes" or
"Breaking Changes" rather than "API Contract".

This PR changes the name to "Breaking Changes" so that it'll show up
on electronjs.org/docs/.

It also adds a backwards-friendly link so people still searching for
"API Contract" will get a redirect. I'm not sure if this is necessary --
the actual URL of https://electronjs.org/docs/api/breaking-changes is
unchanged -- would especially welcome feedback on this part.

* fixup! Use "Breaking Changes" as the changes doc's title.

* fixup! Use "Breaking Changes" as the changes doc's title.
2019-05-21 16:15:57 +09:00
John Kleinschmidt
b7357d5750 refactor: remove no longer needed dependency (#18340)
* refactor: remove no longer needed dependency

* Updated yarn.lock
2019-05-21 15:53:40 +09:00
mscdex
f106ea0029 chore: remove extra colon in Issue Details (#18359) 2019-05-21 15:45:03 +09:00
Lucas Gabriel Schneider
286fdaa53c fix: docs/api/browser-window.md: fix typo (#18367) 2019-05-21 15:42:27 +09:00
Andrey
204e3808d2 docs: add parentheses + change lower case to upper case in some places (#18368)
* fix: add parentheses

Add parentheses to the end `app.showAboutPanel`, because this is method.

* fix: change 'Promise<string>' to 'Promise<String>'

Change `Promise<string>` to `Promise<String>`, because this is class name.

* docs: change lower case to upper case

Change lower case in word `menu` to upper case - `Menu`, because it's method.
2019-05-21 15:41:41 +09:00
Milan Burda
e81afed66d chore: remove dead code (#18370) 2019-05-21 15:36:22 +09:00
Charles Kerr
cac50608d6 Fix atom::PATH_END so it's greater than PATH_START. (#18339)
Previously the enum list ended with entries copied values
from base::PATH_ entries, so the subsequent entry (PATH_END)
had a value in (base::PATH_START..base::PATH_END].

This only a correctness patch. atom::PATH_END doesn't appear
to be used anywhere and it was the only atom::PATH_ enum
bitten by this.
2019-05-21 15:35:01 +09:00
Cheng Zhao
340014a9d3 fix: leave space for autohide taskbar for frameless maximized window (#18321) 2019-05-20 19:50:03 -05:00
Milan Burda
c1cccfc082 chore: remove duplicate internal deprecations module (just use deprecate) (#18352) 2019-05-21 00:40:49 +02:00
Nitish Sakhawalkar
9c21c66b97 fix: Windows logger path (#18199)
Windows debug isn't logging because of a DCHECK failure during startup. This changes the logger initialization to use the absolute path, so that logging works again.
2019-05-20 10:41:30 -07:00
Milan Burda
5a7b56b042 chore: finish replacing assert with expect in tests (#18215)
* spec: replace assert with expect in api-browser-view-spec.js

* spec: replace assert with expect in api-touch-bar-spec.js

* spec: replace assert with expect in api-web-frame-spec.js

* spec: replace assert with expect in api-web-contents-view-spec.js

* spec: replace assert with expect in security-warnings-spec.js

* spec: replace assert with expect in api-menu-item-spec.js

* spec: replace assert with expect in api-web-request-spec.js

* spec: replace assert with expect in api-remote-spec.js

* spec: replace assert with expect in api-session-spec.js

* spec: replace assert with expect in api-system-preferences-spec.js

* spec: replace assert with expect in api-browser-window-spec.js

* spec: replace assert with expect in webview-spec.js

* spec: replace assert with expect in api-net-spec.js

* spec: replace assert with expect in api-protocol-spec.js

* spec: replace assert with expect api-web-contents-spec.js

* spec: replace assert with expect in api-shell-spec.js

* spec: replace assert with expect in modules-spec.js

* spec: replace assert with expect in chromium-spec.js

* spec: replace assert with expect in api-crash-reporter-spec.js

* spec: replace assert with expect in asar-spec.js

* spec: rename assert-helpers to expect-helpers

* address PR feedback
2019-05-20 12:04:18 -05:00
Milan Burda
dbb8617214 docs: update sandbox-option.md (#18275)
Co-Authored-By: Mark Lee <malept@users.noreply.github.com>
2019-05-20 17:34:57 +02:00
Electron Bot
623ea9b0f1 chore: bump chromium in DEPS to 1027f1782fffa09d3278e857b66d721b861df385 2019-05-20 09:00:26 -04:00
Milan Burda
89105e7e57 refactor: address TODO for WebContents type parsing (#18158) 2019-05-20 12:55:46 +02:00
Electron Bot
24d06c4725 chore: bump chromium in DEPS to 655370a87309cf880a091b6b8477012b0718fe12 2019-05-19 09:01:22 -04:00
Milan Burda
7e2cbf528e docs: link to better list of icons for nativeImage.createFromNamedImage() (#18336) 2019-05-18 22:00:08 +02:00
Milan Burda
af0ad4454e refactor: add invoke helpers in window-setup (#18233) 2019-05-18 20:52:29 +02:00
Electron Bot
0af06a3136 chore: bump chromium in DEPS to 810a86086f5fd70dd42ad025cf73ecc26f979fcf 2019-05-18 09:00:29 -04:00
Milan Burda
2b4ad2cb09 feat: add 'gpu-info-update' event to app (#18250) 2019-05-18 10:06:48 +09:00
Nitish Sakhawalkar
cf5224140b Chrome changed the devtools url
chrome-devtools:// to devtools://
28b21a67f0
2019-05-17 16:16:25 -07:00
Nitish Sakhawalkar
aa00b19c92 Update views visible API
visible() -> GetVisible() as per c9ecec130e
2019-05-17 16:16:25 -07:00
Nitish Sakhawalkar
e38127323f Update gpuinfo enumerator api
Related chromium change is here => 4178e190e9
2019-05-17 16:16:25 -07:00
Electron Bot
7a0058fbdb chore: bump chromium in DEPS to 93f138f28f33aa9cd14a3624f9eef0a2167c8ffb 2019-05-17 16:16:25 -07:00
Nitish Sakhawalkar
8a7de89b97 Update Spellcheck API
Update WebTexhCheckingCompletion as per chromium 0e8c828e02
2019-05-17 16:16:25 -07:00
Nitish Sakhawalkar
2d14a0e90d Update changed APIs/deps
Use brotli by default (36d58dd325)

Update Mac ui headers (897636c9f8)

Update AtomBrowserClient::HandleExternalProtocol API (cb656e1fd1)
2019-05-16 18:47:42 -07:00
Jeremy Apthorp
18d70e6e57 pin user32 on startup
https://chromium-review.googlesource.com/c/chromium/src/+/1551709

Loading it later causes a blocking call where blocking calls aren't allowed.
2019-05-16 18:47:42 -07:00
Nitish Sakhawalkar
03ee12d13e Update linux/win menu_bar.h
Chromium Commit 6a2f2686a9
2019-05-16 18:47:42 -07:00
Nitish Sakhawalkar
cae2f1f537 Disable custom libcxx patch 2019-05-16 18:47:42 -07:00
Nitish Sakhawalkar
0580a2fb3e fix lint 2019-05-16 18:47:42 -07:00
Nitish Sakhawalkar
941851b3eb Update for changed APIs
Update AllowCertificateError API (c5b8df91d1)
2019-05-16 18:47:42 -07:00
Jeremy Apthorp
1fa5bf0140 //ui/views_bridge_mac => //components/remote_cocoa/app_shim
https://chromium-review.googlesource.com/c/chromium/src/+/1590958
2019-05-16 18:47:42 -07:00
Jeremy Apthorp
19550bd444 Manual follow-up rename in comments and variable names.
https://chromium-review.googlesource.com/c/chromium/src/+/1591429
2019-05-16 18:47:42 -07:00
Jeremy Apthorp
6f0524d87f use base::Owned instead of base::Passed for repeating handler 2019-05-16 18:47:42 -07:00
Jeremy Apthorp
6c6555c13c Convert Callbacks to OnceCallbacks in permissions APIs.
https://chromium-review.googlesource.com/c/chromium/src/+/1592356
2019-05-16 18:47:42 -07:00
Nitish Sakhawalkar
e794260d89 Update chromium patches 2019-05-16 18:47:42 -07:00
Electron Bot
f14eb32758 chore: bump chromium in DEPS to 4807e00d8504db501eb7a9d8ab66789e53fb7349 2019-05-16 16:58:32 -04:00
Shelley Vohr
111baba29c chore: update codeowners for release scripts (#18246) 2019-05-16 09:39:01 -04:00
Electron Bot
c7d93c7579 chore: bump chromium in DEPS to ad1b791122c04bd91b825fbfbdf1ff4da82a0edb 2019-05-16 09:01:28 -04:00
Milan Burda
76783e2a90 fix: 'page-title-updated' event forwarding + documentation (#18270) 2019-05-16 12:33:16 +03:00
Samuel Attard
2a08bfbcc6 docs: update type for responseHeaders in the webRequest module (#18302)
Fixes #18298
2019-05-15 18:20:37 -07:00
Cheng Zhao
2ad62cedc3 feat: migrate protocol module to NetworkService (Part 7) (#18290)
* fix: make IsProtocolHandled return true for builtin schemes

* fix: return ERR_NOT_IMPLEMENTED for wrong arg

* Initial work of AsarURLLoader

* Put normal file logics in AsarURLLoader

* Implement asar file reading

* Don't change URL for unpacked file

* Fix cpplint warning
2019-05-15 08:29:58 +09:00
Samuel Attard
fde3137b90 fix: update the FileSelectHelper to support the new promise API (#18288)
* fix: update the FileSelectHelper to support the new promise API

Fixes #18254

So it turns out we've successfully introduced a way to write
non-typesafe C++.

This fixes two things:
* Uses the object the promise resolves
* Ensures we attach the Then handler before moving the promise

* fix: also fix misuse of Promise::Then in the download manager
2019-05-14 15:46:53 -07:00
Milan Burda
d027be05a6 refactor: combine bitmask flags property (replace '+' with '|' operator) (#18271) 2019-05-14 18:49:46 +03:00
Milan Burda
6609138959 feat: add webContents 'zoom-changed' event (#17747) 2019-05-14 09:40:40 +03:00
John Kleinschmidt
23b0487e9b docs: add missing image (#18235) 2019-05-13 16:55:41 -04:00
Jeremy Apthorp
367868613f docs: explicitly list supported versions (#18243) 2019-05-13 12:17:47 -07:00
Jeremy Apthorp
78d45a17c8 fix: default enable_negotiate_port to false (#18251) 2019-05-13 11:28:01 -07:00
Milan Burda
3a5e6f2551 feat: allow setting working directory in app.setUserTasks() / app.setJumpList() (#18148) 2019-05-13 19:17:12 +03:00
Cheng Zhao
326215e1f1 feat: migrate protocol module to NetworkService (Part 6) (#18223)
* fix: start node strem asyncly

* fix: headers value may be a list

* fix: simply destruct on finish/error

* fix: class may destruct immediately after subscribing "data"

* fix: send meaningful error

* fix: must always provide a response body

* fix: handle the case when one write can not write all data

* fix: handle connection error
2019-05-11 15:15:01 +09:00
Nitish Sakhawalkar
85c24c0b47 chore: Add patch to partially revert chromium crashpad change (#17978)
This adds a patch to support functionality that we were using but chromium changed it. Electron uses breakpad on windows, chromium uses crashpad (which is newer). So this patch is needed until we update electron to use crashpad for windows.
2019-05-10 10:35:17 -07:00
Cheng Zhao
8de9ba6df6 chore: run protocol tests in separate WebContents (#18202) 2019-05-10 09:51:44 +09:00
Milan Burda
019b31d084 chore: remove deprecated APIs (#18159) 2019-05-09 14:48:10 -04:00
Jeremy Apthorp
96e19f1cc4 docs: fix name of Backtrace in crash reporter docs (#18180) 2019-05-09 10:30:37 -07:00
Jeremy Apthorp
be484ee8a4 docs: note session.clearAuthCache planned change for 7.0 (#18185)
* docs: note session.clearAuthCache planned change for 7.0

* Update breaking-changes.md
2019-05-09 10:58:01 -04:00
Shelley Vohr
b3fcc080d5 fix: destroy tray on current tick (#18196)
This code was originally added in #6448 to handle an edge case crash in 10.9, and we no longer support 10.9 and therefore no longer need to account for this case.

It addressed the crash, but also created a race condition whereby when a new tray is created the old tray's destroy wouldn't have been fully completed and therefore a new one would be spawned. This fixes that by destroying the tray on the current tick once more.
2019-05-08 15:40:30 -07:00
Shelley Vohr
8759e30f04 build: linux needs java on GN (#18211)
The linux builds fails with ./bin/sh java not found unless this is installed.
2019-05-08 15:28:55 -07:00
Shelley Vohr
6e29611788 build: fix linux release builds on CircleCI (#18201) 2019-05-08 07:27:03 -07:00
Shelley Vohr
6770a8c64a build: remove deprecated octokit auth calls (#18205) 2019-05-07 18:48:40 -07:00
John Kleinschmidt
e63f527e76 docs: add FAQ entry about subpixel anti-aliased text (#18101)
* docs: add FAQ entry about subpixel anti-aliased text

Co-Authored-By: Nils-Hero Lindemann <nilsherolindemann@gmail.com>

* Fix linting errors

Co-Authored-By: Nils-Hero Lindemann <nilsherolindemann@gmail.com>

* Fix image link

Co-Authored-By: Nils-Hero Lindemann <nilsherolindemann@gmail.com>
2019-05-07 12:49:08 -07:00
Shelley Vohr
0ab3d7a0be fix: crash on systemPreferences.getAccentColor() (#18144) 2019-05-07 08:26:34 -07:00
Milan Burda
d79dc056bc refactor: eliminate duplicate code in asar.js (#18146) 2019-05-07 06:54:35 -07:00
Shelley Vohr
02710ef574 refactor: make templateImage a property on nativeImage (#18124)
* refactor: make templateImage a property on nativeImage

* Update docs/api/native-image.md

Co-Authored-By: codebytere <codebytere@github.com>

* fix nativeImage prototype deprecation

* update for new property name

* Update docs/api/native-image.md

Co-Authored-By: codebytere <codebytere@github.com>
2019-05-07 06:52:07 -07:00
Shelley Vohr
cfb6e847a0 refactor: allow embedder overriding of internal FS calls (#17906) (#18183) 2019-05-07 06:44:32 -07:00
Milan Burda
91e3421525 refactor: use base::size() for array sizes (#18155) 2019-05-07 09:19:14 -04:00
Bobby Galli
175fae722a docs: added BugSplat to list of hosted solutions (#18162) 2019-05-06 19:37:24 -07:00
Cheng Zhao
237f74a01f feat: migrate protocol module to NetworkService (Part 5) (#18170)
* fix: always have head.headers available

* fix: use StringDataPipeProducer to write string

It can handle large strings correctly.

* fix: override RegisterNonNetworkSubresourceURLLoaderFactories

* fix: add dummy uninterceptProtocol implementation

* fix: jquery error handler can pass empty string

For some errors jquery would pass empty string in the error handler,
which makes tests pass when they should fail.

* chore: fix cpplint warnings

* fix: guard RegisterNonNetworkSubresourceURLLoaderFactories call

It may be called even when NetworkService is not enabled.

* test: disable protocol.interceptHttpProtocol test
2019-05-07 11:33:05 +09:00
Samuel Attard
a96b6e2c96 build: move to the new docs parser (#18103)
* build: move to the new docs parser

* chore: remove the bad getTitle param doc

* build: update parser/ts gen deps + fix some docs issues highlighted by GH desktop

* chore: apply suggestions from code review

Co-Authored-By: MarshallOfSound <samuel.r.attard@gmail.com>

* chore: update docs for accidentally removed things

* chore: update docs/api/command-line.md

Co-Authored-By: MarshallOfSound <samuel.r.attard@gmail.com>
2019-05-06 08:29:01 -07:00
Shelley Vohr
9ec59cbc6c docs: clarify clipboard type options (#18107) 2019-05-06 08:11:47 -07:00
Samuel Attard
636273b6cb fix: do not mark navigations interupted with same-document navigations as aborted (#18109)
* fix: do not mark navigations interupted with same-document navigations as aborted

* spec: add tests for the loadURL promise
2019-05-03 16:19:50 -07:00
Samuel Attard
99d4537075 chore: remove v8 reverts now that nan is updated (#18130) 2019-05-03 14:41:23 -07:00
Jeremy Apthorp
cb13d7a0a8 refactor: session.clearAuthCache nws13n (#17970) 2019-05-03 14:30:25 -07:00
Shelley Vohr
6d96f30ed3 refactor: make shell.OpenExternal async (#17135) 2019-05-03 13:53:45 -07:00
Shelley Vohr
0755857a0c chore: convert more files away from base::Bind (#18121)
* chore: convert more files away from base::Bind

* use BindOnce for JsAsker
2019-05-03 12:08:41 -07:00
Milan Burda
c25c31e018 refactor: convert C++ enums to C++11 enum classes (#18087) 2019-05-03 14:11:41 -04:00
Joshua Westerheide
a59dc56fa6 feat: add env variable to skip binary download on npm install (#17627)
* feat: add env variable to skip binary download on npm install

* docs: add "Skip binary download" section to install tutorial
2019-05-03 10:17:15 -07:00
Cheng Zhao
0a6eb8afca feat: migrate protocol module to NetworkService (Part 4) (#18084)
* Parse stream protocol handler

* Pipe node stream to mojo

* Merge the parser for headers

* Add ToDict helper to simplify code

* Simplify dispatching logic

* Add an experimental API for returning any type of response

* Fix subscribing event

* URL loaders' lifetime is independent of the factory

* HandleError helper is no longer needed

* Rename "SendResponse" => "StartLoading" to follow naming conventions

* Delete when connection error happens

* Fix cpplint warning
2019-05-03 09:48:51 +09:00
Shelley Vohr
cc00fa8874 chore: convert base::Bind instances across some files (#18112) 2019-05-03 08:49:26 +09:00
Michelle Tilley
4808f30538 fix: revert to previous documentation folder structure (#18127) 2019-05-02 15:17:17 -07:00
Shelley Vohr
c278043511 chore: retry octokit calls several times on fail (#18085) 2019-05-02 15:08:45 -07:00
Electron Bot
5f28f89c9c chore: bump chromium in DEPS to 84c40395c741fa24ccbd9fc2c5828e2e97472952 (#18117) 2019-05-02 12:49:54 -07:00
Shelley Vohr
55a7f92297 chore: convert more module and helper files from bind (#18069) 2019-05-02 08:32:33 -07:00
Milan Burda
2dd108e9c9 fix: fs.promises does not work with asar paths (#18092) 2019-05-02 21:06:01 +09:00
Milan Burda
9585818a90 chore: add clang-format and limited linting for Objective-C sources (#18104) 2019-05-02 21:05:37 +09:00
Milan Burda
8785e9007c chore: add native_mate to lint:cpp (#18100) 2019-05-02 11:45:23 +09:00
Stewart Lord
d507ba68a7 fix: honor extensionId arg in chrome.runtime.connect (#16998)
The first argument to chrome.runtime.connect is extensionId, not connectInfo.
2019-05-02 11:42:04 +09:00
Samuel Attard
d4f5ebefe6 feat: allow setting of global fallback user agent (#18016)
* feat: allow setting of global fallback user agent

* spec: add tests for app.set/getUserAgentFallback
2019-05-01 16:34:42 -07:00
Sofia Nguy
649d7c0d9e docs: update 6.0.0 release dates (#17923) 2019-05-01 16:11:46 -07:00
Jeremy Apthorp
3949f0bd50 refactor: convert crash reporter to gin (#17952) 2019-05-01 15:19:11 -07:00
bughit
493af7f84c document the loadURL promise pre-attached rejection handler (#18043) 2019-05-01 14:04:21 -07:00
John Kleinschmidt
e736d04e7f build: use https to download from GitHub for external binaries (#17928)
fixes #17926
2019-05-01 13:49:29 -07:00
Shelley Vohr
f316c8470c chore: convert session base::Bind instances (#18038)
Convert instances of base::Bind to base::BindOnce and base::BindRepeating as applicable in the session module as well as in Autofill popups.
2019-05-01 13:45:08 -07:00
Electron Bot
61effac72a chore: bump chromium to c75fbfd03652 (master) (#18090)
https://chromium-review.googlesource.com/c/chromium/src/+/1532361
2019-05-01 13:42:49 -07:00
Jeremy Apthorp
dd3913fada refactor: convert powerSaveBlocker to gin (#18073) 2019-05-01 13:24:01 -07:00
Samuel Attard
913bd4c832 fix: correctly parse default_app path on windows (#18086) 2019-05-01 13:00:09 -07:00
Samuel Attard
496d796833 build: free up space before running macos ci (#18083)
* build: free up space before running macos ci

* build: also delete 14GB of src/.git for bonus space
2019-05-01 12:31:01 -07:00
Milan Burda
1abe658ef4 chore: clang-format (#18088)
* chore: clang-format

* chore: remove obsolete native_mate_files.gypi
2019-05-01 12:27:55 -07:00
Milan Burda
d2cebc62d1 docs: fix webContents 'new-window' event handler sample (#18067) 2019-05-01 10:49:42 -07:00
Milan Burda
b333ce2628 docs: remove incorrectly added let for the win variable (#18052) 2019-05-01 10:45:58 -07:00
Shelley Vohr
5ed11aa1f3 docs: remove obsolete releasing document (#18072) 2019-05-01 09:14:14 -07:00
Milan Burda
6f5c850d60 refactor: add emitCustomEvent() helper (#17960) 2019-05-01 09:07:57 -04:00
Samuel Attard
aebad6fd21 test: remove stray console.log for test suite (#18078) 2019-04-30 17:56:20 -07:00
Electron Bot
2616911f7a chore: bump chromium to 7dff37844cb3 (master) (#18059) 2019-04-30 17:18:22 -07:00
Shelley Vohr
00358545a9 fix: explicitly focus window on win.show() (#18046) 2019-04-30 16:43:45 -07:00
Samuel Attard
67b3fbca89 fix: ensure the inspector agent is shutdown before cleaning up the node env (#18028)
* fix: ensure the inspector agent is shutdown before cleaning up the node env

* spec: add tests to ensure clean shutdown with connected inspector agent

* Update node_debugger.cc
2019-04-30 15:44:40 -07:00
Samuel Attard
4e5a0946c7 build: fix master build by updating the yarn.lock after race merge (#18074) 2019-04-30 15:42:09 -07:00
Jeremy Apthorp
24bf2c29e4 refactor: session.{clearCache,getCacheSize} nws13n (#17969) 2019-04-30 15:09:17 -07:00
Samuel Attard
98c51dd660 build: ensure consistent lock files across multiple machines (#17955)
* build: ensure consistent package-lock across multiple machines

* build: fix linting errors and use npm ci instead of npm install

* build: use a yarn.lock and yarn instead of package-lock and npm

* chore: replace package-lock.json files with yarn.lock

* chore: replace last instance of `npm install`
2019-04-30 13:59:47 -07:00
Shelley Vohr
8d83518f9a refactor: make name a prop on app (#17701)
Update app.name to be a property on app.
2019-04-30 13:55:33 -07:00
Samuel Attard
f2d41b7812 build: fix issues for stable release we fixed in 5-0-x (#18064)
* build: fix release notes generation

* build: fix bump-version script for stable releases
2019-04-30 11:36:39 -07:00
Milan Burda
fcf0af15de feat: support ELECTRON_DEFAULT_ERROR_MODE in the GPU process (#17728) 2019-04-30 12:45:48 -04:00
Shelley Vohr
d87b3ead76 chore: remove promisification deprecation callbacks (#17907)
* chore: remove promisification deprecation callbacks

* update docs

* fix smoke test

* fix executejs issue

* cleanup leftovers

* fix webContents.executeJavaScript tests

* cleanup WebContents.prototype.takeHeapSnapshot

* fix "sets arbitrary webContents as devtools" test

* fix executeJavaScriptInFrame related tests
2019-04-30 07:08:32 -07:00
Jeremy Apthorp
fdf5f838f4 refactor: native_mate => gin (cookies API) (#18036)
* convert cookie converters to gin

* event_emitter GetWrapper
2019-04-30 06:45:05 -07:00
Milan Burda
e9d88e965e chore: disable Vulkan validation layers (#17985) 2019-04-30 06:41:59 -07:00
Cheng Zhao
277f93653e feat: migrate protocol module to NetworkService (Part 3) (#18030)
* Implement http protocol handler

* File protocol handler also accepts options

* Http protocol should inherit headers by default

* Only inherit necessary headers

* Slightly reorder logics
2019-04-30 09:47:04 +09:00
Shelley Vohr
7b55ee9d36 refactor: allow requiring modules with no side effects (#17496) 2019-04-30 09:46:08 +09:00
Shelley Vohr
4ee201c56e chore: convert View APIs away from base::Bind (#18035) 2019-04-30 09:40:39 +09:00
Samuel Attard
4a3771ff7f build: add support for Electron trace events (#17920) 2019-04-29 15:28:30 -07:00
pathim
cc1e8ecef6 docs: Correct doc for registerFileProtocol (#18022)
In the registerFileProtocol docs the "headers" argument of the callback was described as being a list. In fact is has to be an Object mapping header-entries to values. This can be seen in Line 326 of `/spec/api-protocol-spec.js` [fe618631f1/spec/api-protocol-spec.js (L326)].
2019-04-29 15:26:55 -07:00
Milan Burda
2fd3029040 docs: update nodeIntegration section for new defaults (#17715) 2019-04-29 14:29:27 -07:00
Samuel Attard
77a4946069 refactor: rewire the desktop capturer API to remove race conditions (#18029)
We now create a new instance of atom::api::DesktopCapturer for every
request instead of weirdly re-using the same instance and queuing
requests.  This means there is now a 1:1 relationship between request
and DesktopCapturer so there isn't a race condition between the observer
for one request calling back before the observer of another.  This is an
issue ever since the backing APIs moved to worker threads.

This also does a few things to ensure memory management
* Only ever listen to one event per-request, after that we wipe the emit
function to ignore all future events
* Ensures we clean up the window_capturer_, screen_capturer_ and
captured_sources_ in native land once the request is over.

This _in theory_ fixes a flake we've been seeing on CI where we try to
resolve the promise for a request that no longerr exists.
2019-04-29 13:21:28 -07:00
Shelley Vohr
8b79776b5e chore: disable release notes GH Action (#18039) 2019-04-29 13:03:59 -07:00
Milan Burda
9714a91392 refactor: use fs.promises API, which is stable since Node 12 (#17999) 2019-04-29 11:18:03 -07:00
Milan Burda
7574f91f31 refactor: natively promisify WebContents.prototype.takeHeapSnapshot (#18000) 2019-04-29 10:11:11 -07:00
Milan Burda
18b77a4de6 chore: rename atom-binding-setup.ts to electron-binding-setup.ts (#17949) 2019-04-29 10:57:32 -04:00
Cheng Zhao
6f83977f47 feat: migrate protocol module to NetworkService (Part 2) (#17965)
* Pass protocol type and handler to factory

* Add converter for network::ResourceRequest

* Implement Buffer and String protocol handler

* Implement file protocol
2019-04-29 11:37:45 +09:00
Shelley Vohr
fe618631f1 chore: convert some more files from base::Bind (#17968) 2019-04-28 10:03:06 +09:00
Shelley Vohr
72baff1c88 chore: add base workflow file (#18006) 2019-04-27 17:53:08 -07:00
Shelley Vohr
e7ef374899 chore: update base::Bind in app module (#17925)
* chore: update base::Bind in app module

* fix lint
2019-04-26 21:42:56 -07:00
Samuel Attard
68f448ee73 build: rebase patches to fix master build (#17991) 2019-04-26 13:44:08 -07:00
Samuel Attard
84212b8e8b docs: add example on handling the webPrefs change (#17971)
* docs: add example on handling the webPrefs change

Fixes #17967

* Update breaking-changes.md
2019-04-26 13:30:45 -07:00
Samuel Attard
d673865881 build: notify MC of failures to allow easy reruns (#17981) 2019-04-26 12:35:43 -07:00
Xin Tan
2e7ad1a527 docs: add information about contributing (#17961)
Add information about contributing and link CONTRIBUTING.md to this page.
2019-04-26 08:12:21 -07:00
Cheng Zhao
a4fcc32799 feat: upgrade to Node 12 (#17838)
* fix: add boringssl backport to support node upgrade

* fix: Update node_includes.h, add DCHECK macros

* fix: Update node Debug Options parser usage

* fix: Fix asar setup

* fix: using v8Util in isolated context

* fix: make "process" available in preload scripts

* fix: use proper options parser and remove setting of _breakFirstLine

_breakFirstLine was being set on the process, but that has changed in node 12 and so is no longer needed. Node will handle it properly when --inspect-brk is provided

* chore: update node dep sha

* fix: process.binding => _linkedBinding in sandboxed isolated preload

* fix: make original-fs work with streams

* build: override node module version

* fix: use _linkedBinding in content_script/init.js

* chore: update node ref in DEPS

* build: node_module_version should be 73
2019-04-26 18:55:12 +09:00
Shelley Vohr
e1acfffaf8 docs: remove outdated refs to protocol.registerStandardSchemes (#17959) 2019-04-25 15:56:59 -07:00
Shelley Vohr
075b818a8e fixes (#17363) 2019-04-25 15:44:54 -07:00
Shelley Vohr
6530c99cfa docs: add azure vm spinup tutorial (#17958) 2019-04-25 15:42:45 -07:00
Shelley Vohr
2108044bdb docs: move organizational info docs to new directory (#17865)
* docs: move organizational info docs to new directory

* fix some markdown lint issues
2019-04-25 15:14:19 -07:00
Shelley Vohr
c2c3a04628 fix: crash when failed to get devices in desktopCapturer (#17557)
* fix: crash when failed to get devices in desktopCapturer

* return after emit
2019-04-25 15:12:38 -07:00
Robo
2ad942323c refactor: session.clearHostResolverCache with network service (#17935) 2019-04-25 10:51:48 -07:00
Richard Townsend
a2e5cb82fc build: fix a symbol linkage error for WoA (#17947)
When dcheck_always_on=true, electron's unusual configuration creates
some problems, which this patch works around.
2019-04-25 08:21:39 -07:00
Cheng Zhao
3142d5ca00 chore: support converting OnceCallback to V8 (#17941) 2019-04-25 09:40:27 +09:00
Jeremy Apthorp
93d9dafacc refactor: migrate cookie api to network service (#17932) 2019-04-24 12:49:30 -07:00
Shelley Vohr
02c7b92095 chore: Bind=>BindRepeating for constructors (#17924) 2019-04-24 11:29:59 -07:00
Mark Lee
aed0b1ee54 docs: clean up the native module tutorial (#17624) 2019-04-24 10:32:37 -07:00
Samuel Attard
4588fc2232 build: update ts generator (#17929) 2019-04-24 09:57:09 -07:00
Milan Burda
f7a38ec72a fix: permission handler regression in default app (#17927) 2019-04-24 09:54:53 -07:00
nixxquality
4556433f3b docs: fully document MenuItem instance properties (#17479)
* document menuItem instance properties

* correct some types

* add correct click documentation
2019-04-24 09:53:15 -07:00
Milan Burda
253d049ac9 chore: remove deprecated app.enableMixedSandbox() (#17894) 2019-04-23 21:07:40 -07:00
Robo
9b779657fb fix: allow access to the profile dir in mac network sandbox (nws13n) (#17931) 2019-04-24 09:31:36 +09:00
Robo
e1e055a837 fix: allow creating service for temporary partitions (nws13n) (#17930) 2019-04-24 09:30:53 +09:00
Jeremy Apthorp
53c453567f refactor: initialize feature list earlier (#17922) 2019-04-23 15:18:12 -07:00
Cheng Zhao
132137081a feat: migrate protocol module to NetworkService (Part 1) (#17899) 2019-04-23 14:39:20 -07:00
Jeremy Apthorp
341592119f build: actually run import-patches on gclient sync (#17885) 2019-04-23 10:28:26 -07:00
Milan Burda
bb9e92a5d9 refactor: add missing constants for options (#17897) 2019-04-23 09:14:18 -07:00
Milan Burda
0b0f677432 docs: make gclient config command Windows friendly (#17900) 2019-04-23 05:11:35 -04:00
Shelley Vohr
316abe21f9 fix: crash when run from SMB network share (#17886) 2019-04-22 19:28:48 -07:00
Samuel Attard
e9114b3c00 build: optimize the happy path when syncing on CI (#17827)
* build: optimize the happy path when syncing on CI

This adds a new cache for the "src" directory that is only ever used if
the cache key matches exactly.  If there is no exact match we fall back
to the old strategy of using the git cache.

On the happy path this can make the checkout on linux/macOS take around
5-6 minutes which is **significantly** faster than the original 15-18
minutes.

* build: sort readdir result to ensure stability

* build: increment cache key

* Update config.yml

* build: ensure that the cleanly checked out Electron has had hooks run on it

* build: do not remove deps/v8

* build: ensure clean git directory when generating deps hash

* chore: add comments to caching logic

* Update .circleci/config.yml

Co-Authored-By: MarshallOfSound <samuel.r.attard@gmail.com>
2019-04-22 15:36:59 -07:00
Sofia Nguy
df269ecb24 docs: edit Release Timelines doc format and add title (#17903)
* docs: edit title and doc format

* lint error - trailing spaces

* trailing s p a c e
2019-04-22 17:53:51 -04:00
Sofia Nguy
0c24ac9ae7 docs: Update AFP info (#17904) 2019-04-22 17:53:03 -04:00
Electron Bot
716cb28430 chore: bump chromium to 1e9f9a24aa12 (master) (#17880)
* chore: bump chromium in DEPS to 1e9f9a24aa12bea9cf194a82a7e249bd1242ec4f

* chore: update patches

* Make WebContents' theme color a base::Optional<SkColor>

https://chromium-review.googlesource.com/c/chromium/src/+/1540022

* update autofill patch for incorrect header includes

* Move Shell messages to web_test and rename to BlinkTest.

https://chromium-review.googlesource.com/c/chromium/src/+/1525181

* Make PlatformNotificationServiceImpl a KeyedService.

https://chromium-review.googlesource.com/c/chromium/src/+/1336150

* Move MediaPlayerId to its own file.

https://chromium-review.googlesource.com/c/chromium/src/+/1547057

* Remove net/base/completion_callback.h, which is no longer used

https://chromium-review.googlesource.com/c/chromium/src/+/1552821

* AW NS: support file scheme cookies

https://chromium-review.googlesource.com/c/chromium/src/+/1533486

* Remove SecurityInfo and adapt remaining consumers

https://chromium-review.googlesource.com/c/chromium/src/+/1509455

* Remove deprecated type-specific number to string conversion functions

https://chromium-review.googlesource.com/c/chromium/src/+/1545881

* DevTools: Adding new performance histograms for launch of top 4 tools

https://chromium-review.googlesource.com/c/chromium/src/+/1506388

* Update include paths for //base/hash/hash.h

https://chromium-review.googlesource.com/c/chromium/src/+/1544630

* build: Disable ensure_gn_version gclient hook for mac CI checkout

* update patches

* use maybe version of v8::String::NewFromTwoByte

* bump appveyor image version

* fix mac ci hopefully

* Convert enum to enum class for MenuAnchorPosition

https://chromium-review.googlesource.com/c/chromium/src/+/1530508

* use maybe version of ToObject

* RenderViewHost::GetProcess is no longer const

* Unrefcount AuthChallengeInfo

https://chromium-review.googlesource.com/c/chromium/src/+/1550631

* MenuButtonController takes Button rather than MenuButton

https://chromium-review.googlesource.com/c/chromium/src/+/1500935

* add //ui/views_bridge_mac to deps to fix link error

* forward declare views::Button in atom::MenuDelegate

* more v8 patches

* base/{=> hash}/md5.h

https://chromium-review.googlesource.com/c/chromium/src/+/1535124

* gfx::{PlatformFontWin => win}::*

https://chromium-review.googlesource.com/c/chromium/src/+/1534178

* fix v8 patches

* [base] Rename TaskScheduler to ThreadPool

https://chromium-review.googlesource.com/c/chromium/src/+/1561552

* use internal_config_base for bytecode_builtins_list_generator

avoids windows link errors

* FIXME: temporarily disable v8/breakpad integration

* FIXME: temporarily disable prevent-will-redirect test

* FIXME: disable neon on aarch64 pending crbug.com/953815

* update to account for WebCursor refactor

https://chromium-review.googlesource.com/c/chromium/src/+/1562755

* enable stack dumping on appveyor

* Revert "FIXME: disable neon on aarch64 pending crbug.com/953815"

This reverts commit 57f082026b.

* fix: remove const qualifiers to match upstream

* fix: remove const qualifiers to match upstream in cc files as well

* don't throw an error when testing if an object is an object

* use non-deprecated Buffer constructor

* Remove net::CookieSameSite::DEFAULT_MODE enum value

https://chromium-review.googlesource.com/c/chromium/src/+/1567955

* depend on modded dbus-native to work around buffer deprecation

https://github.com/sidorares/dbus-native/pull/262

* revert clang roll to fix arm build on linux

* fixup! depend on modded dbus-native to work around buffer deprecation

need more coffee

* update coffee-script

* robustify verify-mksnapshot w.r.t. command-line parameters

* Revert "robustify verify-mksnapshot w.r.t. command-line parameters"

This reverts commit a49af01411.

* fix mksnapshot by matching args

* update patches

* TMP: enable rdp on appveyor

* Changed ContentBrowserClient::CreateQuotaPermissionContext() to return scoped_refptr.

https://chromium-review.googlesource.com/c/chromium/src/+/1569376

* Make content::ResourceType an enum class.

https://chromium-review.googlesource.com/c/chromium/src/+/1569345

* fixup! Make content::ResourceType an enum class.

* turn off rdp

* use net::CompletionRepeatingCallback instead of base::Callback<void(int)>

* remove disable_ensure_gn_version_gclient_hook.patch

* copy repeating callback instead of std::move

* fix lint

* add completion_repeating_callback.h include
2019-04-20 10:20:37 -07:00
Jeremy Apthorp
ab009bba26 refactor: turn OnOffscreen message into a command-line flag (#17687)
This turns the AtomViewMsg_Offscreen message, which only called the global setter blink::WebView::SetUseExternalPopupMenus(false) to get Chrome to render popup menus in the renderer instead of externally on macOS, into a command-line renderer flag --offscreen which does the same thing, except at render thread startup time, which is where Chromium sets the flag: https://chromium.googlesource.com/chromium/src/+/refs/tags/75.0.3755.3/content/renderer/render_thread_impl.cc#728.

This was the last usage of RenderViewObserver in our codebase, so this PR also removes that class.
2019-04-19 12:55:20 -07:00
Matheus Rocha Vieira
1249c6ebf4 fix: Comparison using is when operands support __eq__ (#17864)
* Comparison using is when operands support __eq__

Comparison using 'is' when equivalence is not the same as identity

When you compare two values using the is or is not operator, it is the object identities of the two values that is tested rather than their equality. If the class of either of the values in the comparison redefines equality then the is operator may return False even though the objects compare as equal. Equality is defined by the __eq__ or, in Python2, __cmp__ method. To compare two objects for equality, use the == or != operator instead.

Recommendation
When you want to compare the value of two literals, use the comparison operator == or != in place of is or is not.

If the uniqueness property or performance are important then use an object that does not redefine equality.

* fix: Comparison using is when operands support __eq__

Comparison using 'is' when equivalence is not the same as identity

When you compare two values using the is or is not operator, it is the object identities of the two values that is tested rather than their equality. If the class of either of the values in the comparison redefines equality then the is operator may return False even though the objects compare as equal. Equality is defined by the __eq__ or, in Python2, __cmp__ method. To compare two objects for equality, use the == or != operator instead.

Recommendation
When you want to compare the value of two literals, use the comparison operator == or != in place of is or is not.

If the uniqueness property or performance are important then use an object that does not redefine equality.
2019-04-19 12:24:41 -07:00
Sofia Nguy
eb9c4e3643 docs: Add Electron v6.0.0 Timeline (#17866) 2019-04-19 12:23:01 -07:00
Cheng Zhao
344197083e fix: drain tasks before shutting down isolate (#17879) 2019-04-19 11:01:45 -07:00
Shelley Vohr
0749dc4cc1 refactor: make app logs dir creation opt-in (#17841)
Previously, we were creating the app logs folder at a predefined location during initial electron startup, which meant that it had to be manually removed and prevented clean app portability. This refactors that implementation such that it's now an opt-in feature and developers must call app.setAppLogsPath(path) with an optional custom path in order to set this directory.
2019-04-18 22:04:58 -07:00
Jeremy Apthorp
841e31b7e6 feat: show underlying stack in errors in remote module (#17851) 2019-04-18 17:38:19 -07:00
Kilian Valkhof
ea6641afe5 docs: explanation on using protocols with partitions (#17759)
* docs: explanation on using protocols with partitions

* linting fixes

* Update docs/api/protocol.md

Co-Authored-By: Kilian <kilian@kilianvalkhof.com>

* Update docs/api/protocol.md

Co-Authored-By: Kilian <kilian@kilianvalkhof.com>

* Update docs/api/protocol.md

Co-Authored-By: Kilian <kilian@kilianvalkhof.com>

* be more explicit about there being a default session.
2019-04-18 12:40:04 -07:00
Kapil Patel
11ac6800cc docs: added fee hint (#17563)
* Update code-signing.md

* Update code-signing.md

* Update docs/tutorial/code-signing.md

Co-Authored-By: kapilepatel <kapilepatel@gmail.com>

* Update code-signing.md
2019-04-18 08:50:14 -07:00
Milan Burda
5e7c828c9e fix: copy pixels in AddImageSkiaRepFromBuffer (#17843) 2019-04-18 09:16:34 +09:00
Milan Burda
3c2ff97a16 fix: copy pixels in NativeImage::CreateFromBitmap (#17844) 2019-04-18 09:16:06 +09:00
Shelley Vohr
f1ee35e281 doc: document occasional mismatch between NSImageName and string (#17826) 2019-04-17 15:06:51 -07:00
Samuel Attard
829050daab build: rename sandbox bundle (#17831) 2019-04-17 17:18:03 -04:00
Heilig Benedek
81bf15877f fix: port OSR code to new viz compositor codepath (#17538)
* fix: make OSR work with viz compositor

* fix: update OSR patch

* fix: update patch again

* fix: update viz_osr.patch for macOS

* fix: gn check warnings

* chore: no need to change SoftwareOutputDeviceWinProxy

* chore: add check in case we missed something

* fix: consider scale factor when compare size

* fix: make GPU OSR work

* fix: autofill popups with OSR

* chore: use UNIX line ending for osr_video_consumer

* chore: code is already in defined(OS_MACOSX)

* fix: share same OSR implementation on macOS

This should also fix the crash when there is navigation on macOS.

* test: osr window should not crash after navigation

* fix: make osr work on Mac properly

* fix: software osr on windows

* fix: software osr on Linux

* fix: compilation error introduced with rebase

* fix: split local surface id allocation into two

* Update osr_host_display_client_mac.mm

* chore: update copyright year

* fix: update patch
2019-04-17 14:10:04 -07:00
Shelley Vohr
1478bd36fd refactor: remove superfluous ScopedAllowBaseSync in desktopCapturer (#17842) 2019-04-17 14:32:24 -04:00
Jeremy Apthorp
fdaa75354a chore: save HEAD when git-import-patches runs (#17824) 2019-04-17 11:16:03 -07:00
Samuel Attard
f901170a4f docs: fix doc linter warnings (#17818) 2019-04-16 19:03:17 -04:00
Jeremy Apthorp
33fd20047c fix: skip zygote for unsandboxed ppapi processes (#17823) 2019-04-16 18:32:37 -04:00
Samuel Attard
78411db4b5 fix: maintain a ref count for objects sent over remote (#17464)
* spec: clean up after a failed window count assertion

Previously when this assertion failed all tests that ran after the
failed assertion also failed.  This ensure that the assertion fails for
the test that actually caused the issue but cleans up the left-over
windows so that future tests do not fail.

* fix: maintain a ref count for objects sent over remote

Previously there was a race condition where a GC could occur in the
renderer process between the main process sending a meta.id and the
renderer pulling the proxy out its weakmap to stop it being GC'ed.

This fixes that race condition by maintaining a "sent" ref count in the
object registry and a "received" ref count in the object cache on the
renderer side.  The deref request now sends the number of refs the
renderer thinks it owns, if the number does not match the value in the
object registry it is assumed that there is an IPC message containing a
new reference in flight and this race condition was hit.

The browser side ref count is then reduced and we wait for the new deref
message.  This guaruntees that an object will only be removed from the
registry if every reference we sent has been guarunteed to be unreffed.
2019-04-16 16:08:11 -04:00
Samuel Attard
9c3315c416 fix: reset the NSUserNotication handle on dismiss (#17796) 2019-04-16 14:38:41 -04:00
Samuel Attard
b7b9efa875 fix: handle remote-debugging-port=0 correctly (#17800)
By default the Chromedriver will send remote-debugging-port=0 to let the
browser choose a free port to listen on.  The chosen port is written to
a known file in the user data dir that is passed to the app through the
CLI.

This PR does two things.

1. Correctly passes the USER_DATA_DIR to the remote debugging server so
it knows where to write the file
2. Adds support for --user-data-dir as we did not support that CLI
argument and Chromedriver relies on being able to tell the "browser"
where to write this file.

Fixes #17354
2019-04-16 14:22:51 -04:00
Samuel Attard
be6fb7cb12 fix: ensure the sandboxed preloads globals do not leak (#17712) 2019-04-16 10:57:02 -07:00
Shelley Vohr
b3d8db6996 docs: note desktop audio limitation on macOS (#17738)
Closes #10515. Notes fundamental limitation in `navigator.mediaDevices.getUserMedia` for audio capture on some platforms so that users are aware of the ongoing issue and provides a potential workaround.
2019-04-16 10:49:31 -07:00
Pedro Pontes
a7e22c78cf fix: populate phase of WebMouseWheelEvents generated in webContents.sendInputEvent. (#17757) 2019-04-16 12:23:38 -04:00
Samuel Meuli
3bf71a363a docs: update guide on MAS entitlements and export compliance (#17695)
* docs: Convert MAS app groups entitlement value to array

* docs: Update info on MAS encryption export compliance
2019-04-15 20:02:06 -04:00
Shelley Vohr
82a076855b fix: incorrect default path setting for dl items (#17773) 2019-04-15 14:11:20 -04:00
Vlad Hashimoto
258d337cf8 fix: crash when alt key pressed with falsy menu bar visiblity (#17766) 2019-04-15 13:54:27 -04:00
Cheng Zhao
748632d655 chore: make it possible to turn on NetworkService with cmd flag (#17729) 2019-04-11 08:51:17 +09:00
Cheng Zhao
e7c48922e7 fix: FrameSubscriber should not scale frame down (#17444) 2019-04-08 11:35:33 +09:00
Milan Burda
235eea6669 docs: add remote module to docs/tutorial/security.md (#17480) 2019-04-05 20:41:05 +02:00
Shelley Vohr
2b9bd0f56f fix crash when passing empty string to recording (#17698) 2019-04-05 11:19:06 -07:00
Shelley Vohr
c4020308c9 test: remove non-applicable processMemoryInfo specs (#17679) 2019-04-05 07:53:25 -07:00
Shelley Vohr
9c3cb55ef2 refactor: make accessibilitySupportEnabled a property on app (#17362)
* refactor: make accessibilitySupport a prop on app

* fix docs

* update spec
2019-04-04 19:49:04 -07:00
Electron Bot
11699d8611 Bump v6.0.0-nightly.20190404 2019-04-04 11:42:14 -07:00
Cheng Zhao
ac30185a04 fix: the callback of beginFrameSubscription should pass NativeImage instead of Buffer (#17548)
* Revert "revert: frame subscriber deprecation and re-enable tests"

This reverts commit f643ce4f66.

* fix: make sure SkBitmap's pixels are copied
2019-04-04 11:36:12 -07:00
Milan Burda
77d59e99b6 feat: emit process 'loaded' event in sandboxed renderers (#17680) 2019-04-04 11:35:06 -07:00
Jeremy Apthorp
127b87c713 refactor: mojofy MessageTo and MessageHost (#17613) 2019-04-03 14:22:23 -07:00
Samuel Attard
5d45b59f7f Merge pull request #17507 from electron/chromium-upgrade/75
chore: update to chromium 75.0.3740.3
2019-04-03 13:17:37 -07:00
Alexey Kuzmin
cd8402fc9f build: optionally exclude some parts of patches from being applied (#17625) 2019-04-03 12:42:49 -07:00
Samuel Attard
a65f242dbd chore: fixup ismediakey patch for lost changes 2019-04-03 11:36:32 -07:00
Shelley Vohr
8c8eac88a4 build: fix spec-main linting for 'only' (#17666) 2019-04-03 11:19:39 -07:00
Samuel Attard
59e3164206 build: ensure runner is defined inside the spec callback (#17664) 2019-04-02 18:25:45 -07:00
Samuel Attard
76d584c81d build: force a windows CI run 2019-04-02 17:19:36 -07:00
Samuel Attard
dc4fe537ee build: auto-generate the browserify step GN inputs (#17626) 2019-04-02 17:12:10 -07:00
Jeremy Apthorp
53f6cbccbf refactor: use mojo for electron internal IPC (#17406)
* refactor: use mojo for electron internal IPC

* add sender_id, drop MessageSync

* remove usages of AtomFrameMsg_Message

* iwyu

* first draft of renderer->browser direction

* refactor to reuse a single ipc interface

* implement TakeHeapSnapshot through mojo

* the rest of the owl^WtakeHeapSnapshot mojofication

* remove no-op overrides in AtomRendererClient

* delete renderer-side ElectronApiServiceImpl when its pipe is destroyed

* looks like we don't need to overlay the renderer manifest after all

* don't try to send 2 replies to a sync rpc

* undo changes to manifests.cc

* unify sandboxed + unsandboxed ipc events

* lint

* register ElectronBrowser mojo service on devtools WebContents

* fix takeHeapSnapshopt failure paths

* {electron_api => atom}::mojom

* add send_to_all to ElectronRenderer::Message

* keep interface alive until callback is called

* review comments

* use GetContext from RendererClientBase

* robustify a test that uses window.open

* MessageSync posts a task to put sync messages in the same queue as async ones

* add v8::MicrotasksScope and node::CallbackScope

* iwyu

* use weakptr to api::WebContents instead of Unretained

* make MessageSync an asynchronous message & use non-associated interface

* iwyu + comments

* remove unused WeakPtrFactory

* inline OnRendererMessage[Sync]

* cleanups & comments

* use helper methods instead of inline lambdas

* remove unneeded async in test

* add mojo to manifests deps

* add gn check for //electron/manifests and mojo

* don't register renderer side service until preload has been run

* update gn check targets list

* move interface registration back to RenderFrameCreated
2019-04-02 15:38:16 -07:00
Samuel Attard
63d6be0480 chore: add patch to fix MSVC++ incompatibilty on Windows 2019-04-02 14:43:06 -07:00
Samuel Attard
d1a7b42906 chore: disable custom libcxx on windows 2019-04-02 14:43:06 -07:00
Samuel Attard
2fda0bdc89 chore: enable_data_url_support does not exist anymore 2019-04-02 14:43:06 -07:00
Samuel Attard
a34c47b542 build: do not use custom libcxx on windows 2019-04-02 14:43:06 -07:00
Samuel Attard
fe06784a3b build: disable the custom libcxx on Windows 2019-04-02 14:43:06 -07:00
Jeremy Apthorp
7e9a271852 don't copy in make_shared in win32_desktop_notifications 2019-04-02 14:43:05 -07:00
Samuel Attard
e352d735f6 fix: use default constructor for NotificationData struct 2019-04-02 14:43:05 -07:00
Samuel Attard
43dc4e8a13 chore: include what we use, cmath in toast.cc 2019-04-02 14:43:05 -07:00
Samuel Attard
0fd0b3fb4b chore: make DCHECK available in win7 toast impl 2019-04-02 14:43:05 -07:00
Samuel Attard
30448bb1b8 build: allow zip files to be created larger than 2GB 2019-04-02 14:43:05 -07:00
deepak1556
515c927b14 fixup! enable_file_url_support and enable_data_url_support have been removed 2019-04-02 14:43:05 -07:00
Samuel Attard
b965abfda8 chore: replace DCHECK(a > b) with DCHECK_GT 2019-04-02 14:43:05 -07:00
Samuel Attard
90a738a4d4 fix: _ASSERT is not defined anymore, the appropriate replacement is DCHECK 2019-04-02 14:43:05 -07:00
Samuel Attard
ab66c4b7f9 fixme: IsNearDeath has been removed upstream
Adds a patch that reverts https://chromium-review.googlesource.com/c/v8/v8/+/1526195
in order to let native modules build.  nan has a strong dependency on
the IsNearDeath method.  This needs to be solved upstream in nan or V8.
2019-04-02 14:43:05 -07:00
Samuel Attard
04a8b9fe5c fix: base::LaunchOptions environ is now environment
Just a rename

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1509795
2019-04-02 14:43:05 -07:00
Samuel Attard
b429e6e2df chore: disable clang-format and cpplint for impl of HandleExternalProtocol
NOLINT disables the linting error that we can't fix because its just
implementing a content API.

We also disable clang-format because it tries to format the // NOLINT
onto a new line which doesn't exactly work
2019-04-02 14:43:04 -07:00
Samuel Attard
126639875d Revert "device/fido/mac: add more specific check for TouchID availability"
This reverts commit 457ff0687c.

The change in Chromium that required this removal was itself reverted.

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1504308
2019-04-02 14:43:04 -07:00
Samuel Attard
158e41e578 chore: add missing content:: namespace for BrowserContext in PlatformNotificationService 2019-04-02 14:43:04 -07:00
Samuel Attard
7382c519c9 fix: Add stub implementations for ScheduleTrigger and
ReadNextTriggerTimestamp

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1479330
2019-04-02 14:43:04 -07:00
Samuel Attard
866cbb0147 fix: SetCanonicalCookieAsync now takes the full CookieOptions
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1471244
2019-04-02 14:43:04 -07:00
Samuel Attard
7467e91880 fix: RFH->ExecuteJavascriptForTesting now requires a callback
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1492042
2019-04-02 14:43:04 -07:00
Samuel Attard
74ac80e218 fix: ViewHierarchyChangedDetails moved to the views namespace
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1531481
2019-04-02 14:43:04 -07:00
Samuel Attard
ab92cfd174 fix: enable_file_url_support and enable_data_url_support have been
removed

Unsure how the change in default of file_url_support affects us

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1512337
2019-04-02 14:43:04 -07:00
Samuel Attard
f95de3d6f3 fix: RFH->ExecuteJavascript now requires a callback
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1492042
2019-04-02 14:43:04 -07:00
Samuel Attard
2bf740d2fe fix: remove enable_data_url_support from OnNetworkServiceCreated
data URLs are _always_ enabled in the network service now and this is
enforced in the Content layer.

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1512337
2019-04-02 14:43:04 -07:00
Samuel Attard
406ceaabd1 chore: update permission_status.h include for new path 2019-04-02 14:43:03 -07:00
Samuel Attard
50b9933705 build: update circle base image and mac docs for 10.13 SDK 2019-04-02 14:43:03 -07:00
Jeremy Apthorp
e44b5263a1 add extra arguments to HandleExternalProtocol
https://chromium-review.googlesource.com/c/chromium/src/+/1491812
2019-04-02 14:43:03 -07:00
Jeremy Apthorp
47d5f9f901 add //ui/base/idle dep 2019-04-02 14:43:03 -07:00
Jeremy Apthorp
9819433e88 fixup! download gn from cipd instead of GCS 2019-04-02 14:43:03 -07:00
Jeremy Apthorp
e2f0852c30 fixup! download gn from cipd instead of GCS 2019-04-02 14:43:03 -07:00
Jeremy Apthorp
9cc4cb2934 download gn from cipd instead of GCS
https://chromium-review.googlesource.com/c/chromium/src/+/1519726
2019-04-02 14:43:03 -07:00
Jeremy Apthorp
2dc422234a update chromium patches 2019-04-02 14:43:03 -07:00
Jeremy Apthorp
0f990c3bdd update boringssl patches 2019-04-02 14:43:03 -07:00
Jeremy Apthorp
7116c108d7 chore: update to chromium 75.0.3740.3 2019-04-02 14:43:02 -07:00
Tyler Dennis
5b696491db docs: remove webaudio doc from browserwindow options (#17633) 2019-04-02 13:46:45 -07:00
Kilian Valkhof
57dd192dcd docs: Lead with packaging tools on distribution page (#17639)
* Lead with packaging tools on distribution page

* fix trailing whitespace
2019-04-02 13:45:35 -07:00
Shelley Vohr
0431997c8d refactor: make applicationMenu a property on app (#17361) 2019-04-02 13:36:57 -07:00
Shelley Vohr
d412582f72 docs: clarify cookie domain normalization (#17590) 2019-04-02 13:04:20 -07:00
Roller Bot
d50e8a5c4c chore: bump chromium in DEPS to 74.0.3729.58 (#17657) 2019-04-02 10:26:42 -07:00
Mark Lee
66473e19cb Fix typos in feature request template instructions (#17651) 2019-04-02 11:20:36 -05:00
Shelley Vohr
8ea33d69ac fix: match net module headers & http.IncomingMessage headers (#17517)
* fix: match net module headers & http.IncomingMessage headers

* update net doc for cleanliness

* address feedback from review

* Update spec/api-net-spec.js

Co-Authored-By: codebytere <codebytere@github.com>

* add special cookie case
2019-04-02 07:41:19 -07:00
Jeremy Apthorp
7c6cedb119 test: de-flake getAllWebContents test by moving it to spec-main (#17610) 2019-04-01 18:28:11 -07:00
Jeremy Apthorp
eb27e9b055 refactor: move //electron/manifests:manifests target into main BUILD.gn (#17611) 2019-04-01 18:25:19 -07:00
Samuel Attard
75442b794f fix: make devtools extensions load correctly (#17614) 2019-03-30 17:36:13 -07:00
Milan Burda
d597a0e8b0 refactor: expose ipcRendererInternal to the main world for window-setup using the content script world pattern (#17591) 2019-03-29 18:10:21 -07:00
Samuel Attard
b8dbe4bc15 spec: add tests for the autoUpdater on macOS that actually test if it works (#17442)
* spec: add tests for the autoUpdater on macOS that actually test if it works

* spec: add express as dep

* spec: add logic to auto-trust self-signed certificate and not run autoupdate specs on MAS

* build: fix the step name for importing the codesign cert

* chore: update updater spec PR as per feedback

* fix: s/atomBinding/electronBinding

* build: use spawn instead of exec
2019-03-29 17:32:52 -07:00
Roller Bot
5045b0a962 chore: bump chromium in DEPS to 74.0.3729.48 (#17606) 2019-03-29 13:44:19 -07:00
Samuel Attard
953d1ea635 fix: ensure dots in content script patterns aren't used as wildcards (#17593)
* fix: ensure dots in content script patterns aren't used as wildcards

* chore: sanitise all regexp special chars

* chore: extract to helper

* chore: fixup helper
2019-03-28 14:03:37 -07:00
Samuel Attard
32c9597cbc build: ensure we use objc regexps for export-patches (#17598)
* build: ensure we use objc regexps for export-patches

* build: also use objc for *.m

Co-Authored-By: MarshallOfSound <samuel.r.attard@gmail.com>
2019-03-28 14:01:43 -07:00
Shelley Vohr
808783a5e4 fix: crashReporter.getParameters() takes no params (#17459) 2019-03-28 15:04:16 -04:00
Roller Bot
69d4c91895 chore: bump chromium in DEPS to 74.0.3729.45 (#17589) 2019-03-28 11:16:45 -07:00
Heilig Benedek
7a47e64e65 fix: update patch to make Windows key work with global shortcuts (#17565) 2019-03-28 11:15:22 -07:00
Samuel Attard
3475cd168e fix: handle a race condition between preload scripts executing and (#17577)
navigations

There is a race condition between DidCreateScriptContext and another
navigation occuring in the main process. If the navigation occurs while
the preload script is running, the same process is re-used.  This
ensures that any pending navigations are completely removed / ignored
when we trigger a new navigation.

Fixes #17576
2019-03-28 11:13:05 -07:00
John Kleinschmidt
7eaa57b116 build: remove native mksnapshot for arm/arm64 (#17561)
* build: remove native mksnapshot for arm/arm64
2019-03-28 11:05:43 -04:00
Milan Burda
8cf15cc931 feat: only allow bundled preload scripts (#17308) 2019-03-28 11:38:51 +01:00
Richard Townsend
3d307e5610 fix: correct crash reporter for Windows on Arm (#17533)
ARM64 cleans up and moves around RUNTIME_FUNCTION structure fields.
With this patch applied, electron should build cleanly for Windows on Arm.
2019-03-27 11:30:11 -07:00
Samuel Attard
f4434763fe fix: use file path as key for safeDialogs on filesystem (#17546) 2019-03-27 11:21:10 -07:00
Samuel Attard
2188a6ea99 fix: set default_id and cancel_id correctly on confirm dialogs (#17547) 2019-03-27 11:15:58 -07:00
Shelley Vohr
4e57a732a8 feat: allow windows to be excluded from the windows menu (#17404)
* feat: allow windows to be excluded from the windows menu

* excludedfromWindowsMenu => excludedFromShownWindowsMenu

* implement no-op for win & linux
2019-03-27 08:10:23 -04:00
Samuel Attard
ec5e0ef06e build: speed up windows download of external binaries (#17559) 2019-03-26 20:22:54 -05:00
Roller Bot
75b4db60cf chore: bump chromium in DEPS to 74.0.3729.38 (#17555) 2019-03-26 13:26:36 -07:00
Shelley Vohr
34eb5d0815 fix: correctly return properties on the netLog module (#17525) 2019-03-25 22:40:38 -04:00
Milan Burda
336db33d18 refactor: use ipcMainUtils.invokeInWebContents / ipcRendererUtils.handle helpers for Chrome APIs (#17417) 2019-03-26 11:38:35 +09:00
Milan Burda
546466b209 feat: add <webview>.getWebContentsId() (#17407) 2019-03-26 10:57:27 +09:00
Samuel Attard
9e26dfaa06 build: use async remove method to handle errors better (#16917)
On windows removeSync randomly seems to fail with DIRNOTEMPTY. By using
the async version fs-extra will do some back-off-retry logic to
hopefully get this dir deleted
2019-03-26 10:34:03 +09:00
Milan Burda
cbd884060e fix: validate sender for replies in ipcMainInternalUtils.invokeInWebContents() (#17416) 2019-03-26 10:15:51 +09:00
Milan Burda
95df531b33 fix: add missing buffer size check in nativeImage (#17465) 2019-03-26 10:13:39 +09:00
Robo
6c20c6e668 refactor: Enable network service (Part 1) (#17431)
* Convert InspectableWebContentsImpl::LoadNetworkResource to SimpleURLLoader

https://bugs.chromium.org/p/chromium/issues/detail?id=721408

* Plumb creation of network context with the service
2019-03-26 10:10:48 +09:00
Shelley Vohr
4ec2f8b67b chore: remove some bot config options (#17506) 2019-03-22 19:29:23 -05:00
Shelley Vohr
a5febe392c chore: update issue templates with guidelines (#17505) 2019-03-22 16:56:52 -07:00
Cheng Zhao
49f13e38f9 fix: close context menu before popup (#17474) 2019-03-21 21:56:22 -07:00
Samuel Attard
d2ad8efef4 build: pass through value of unknown flag as well as the flag to make --grep work again (#17485) 2019-03-21 12:24:07 -07:00
Nitish Sakhawalkar
a16dc13f85 chore: Update node commit sha (#17486)
No changes made to node canary, just rebased with fixups.
This change updates to the new commit of `electron-node-canary`.
2019-03-21 14:19:49 -05:00
Samuel Attard
784f9742bc build: auto-fix whitespace in docs in pre-commit hook (#17490) 2019-03-21 12:15:55 -07:00
Jeremy Apthorp
6555be2636 chore: bump chromium to 74.0.3729.27 (master) (#17345)
* chore: bump chromium to 74.0.3729.5 (master)

* Remove ScopedBlockingCall constructor without location

https://chromium-review.googlesource.com/c/chromium/src/+/1496560

* Use XCode 9.4.1 for Mac SDK 10.13

* chore: roll chromium 74.0.3729.27
2019-03-21 11:45:22 -04:00
Milan Burda
07b02653ba docs: update sandbox-option.md (#17468)
* docs: update sandbox-option.md

* Update docs/api/sandbox-option.md

Co-Authored-By: miniak <milan.burda@gmail.com>
2019-03-21 14:41:53 +01:00
Shelley Vohr
b25279df89 docs: clarify documentation for getLastCrashReport (#17458)
* docs: clarify documentation for getLastCrashReport

* address feedback
2019-03-20 15:34:21 -07:00
Shelley Vohr
b140a82fe8 fix: take foreground visibility into account for isVisible on macOS (#17463) 2019-03-20 15:33:59 -07:00
Milan Burda
a82bbd010e build: strip trailing whitespace in docs (#17488) 2019-03-20 13:12:47 -07:00
Klaus Sinani
1c7b3026a6 docs: Use correct image URL on docs/tutorial/windows-taskbar.md (#17467) 2019-03-20 10:01:28 -07:00
Samuel Attard
45d90e77b7 fix: use a more unique identifier for NSUserNotification instances (#17469)
So although apple has it documented that notifications with duplicate identifiers in the same session won't be presented.  They apparently forgot to mention that macOS also non-deterministically and without any errors, logs or warnings will also not present some notifications in future sessions if they have a previously used identifier.

As such, we're going to truly randomize these identifiers so they are
unique between apps and sessions.  The identifier now consists of a
randomly generated UUID and the app bundle id.
2019-03-20 09:53:20 -07:00
Milan Burda
de1bacddd9 docs: process.getProcessMemoryInfo() returns a Promise (#16593)
* docs: process.getProcessMemoryInfo() returns a Promise
* chore: bump electron-typescript-definitions to get Promise<T> fix
2019-03-20 17:26:57 +01:00
Cheng Zhao
671533f7d2 fix: check the result when calling js function (#17443)
* fix: check the result when calling js function

* test: should not crash when callback returns nothing
2019-03-20 08:27:06 -07:00
Samuel Attard
1571461bae build: add a workaround for circleci known_hosts issue (#17471) 2019-03-19 19:37:52 -07:00
Shelley Vohr
1d93bc76cd feat: expose colorSpace to display object (#17405)
* feat: expose colorSpace to display object

* update doc

* add a spec
2019-03-19 15:12:03 -07:00
Milan Burda
4c51fa93f5 feat: add systemPreferences.getAnimationSettings() (#17382) 2019-03-19 12:15:40 -07:00
Milan Burda
4d8e024b6d spec: fix isEmpty() checks in nativeImage tests (#17441) 2019-03-19 12:13:15 -07:00
Zachary
9b359c6a75 docs: correction to ipc-main-event.md 'frane' to 'frame' (#17424) 2019-03-19 12:07:30 -07:00
Milan Burda
7389dfca59 fix: report module name when require fails in sandboxed renderers (#17413) 2019-03-19 12:00:41 -07:00
Milan Burda
06a4594435 chore: remove special handling for dialog methods in remote module (#17412)
* chore: remove special handling for dialog methods in remote module

* refactor: remove callFunction helper
2019-03-19 11:59:33 -07:00
Benny Neugebauer
f4c3151815 docs: fix typo in webview.md (#17454) 2019-03-19 11:43:19 -07:00
Milan Burda
ddd51525f1 refactor: make ELECTRON_INSPECTOR_CONTEXT_MENU handler async (#17411) 2019-03-19 10:37:43 -07:00
Shelley Vohr
879462af4b docs: document modernization initiative more clearly (#17376)
* docs: document modernization initiative more clearly
2019-03-19 10:31:45 -07:00
Milan Burda
53f4af7722 fix: regressions introduced by adding world isolation to Chrome extension content scripts (#17422) 2019-03-19 14:45:48 +01:00
Shelley Vohr
2fb9085e5b feat: add tray.getTitle() (#17385)
* feat: add tray.getTitle

* fix spec
2019-03-18 12:40:34 -07:00
Shelley Vohr
38d75010c7 chore: rename atomBinding to electronBinding (#17419) 2019-03-18 12:37:06 -07:00
Samuel Attard
5025c991ee fix: pass the correct HostPort into the node inspector (#17380)
Fixes #17348
2019-03-18 09:19:33 -07:00
Shelley Vohr
db29978fe0 fix: throw error when inserting menu items out-of-range (#17401)
* fix: throw error when inserting menu items out-of-range

* also check pos < 0
2019-03-18 07:58:42 -07:00
Shelley Vohr
f09f43a4a9 chore: remove unused arg parsing code in dialog (#17420) 2019-03-18 07:58:03 -07:00
Samuel Attard
108545e416 spec: add new test runner for main-process based tests (#17325) 2019-03-17 14:49:00 -07:00
Milan Burda
3a091cdea4 refactor: implement clipboard APIs without the remote module (#17200) 2019-03-15 17:32:04 -07:00
Samuel Attard
b502c62111 spec: fix fixtures path for second instance test 2019-03-15 12:29:25 -07:00
Samuel Attard
984e77e470 fix: spec runner not parsing correctly 2019-03-15 10:57:12 -07:00
Heilig Benedek
43ef561d48 feat: enable NodeIntegrationInSubFrames for webview (#17226)
* feat: enable nodeIntegrationInSubFrames for webview

* test: add tests

* docs: document webview's nodeintegrationinsubframes

* lint: fix indent

* fix: resolve some merge bloopers
2019-03-15 10:39:20 -07:00
Samuel Attard
4b6b59cc82 chore: update PR as per feedback 2019-03-14 17:22:42 -07:00
Shelley Vohr
961c9a88a8 feat: promisify dialog.showCertificateTrustDialog() (#17181)
* feat: promisify dialog.showCertificateTrustDialog()

* update promisification doc
2019-03-15 09:02:50 +09:00
Samuel Attard
6b326f7924 build: spread runner args onto the runner 2019-03-14 16:15:23 -07:00
Milan Burda
f15d0b1ed7 refactor: make ELECTRON_INSPECTOR_CONFIRM handler async (#17378) 2019-03-14 15:29:40 -07:00
Samuel Attard
df57ac4ce7 chore: steal all unknown args for use by the spec runners 2019-03-14 15:23:21 -07:00
Shelley Vohr
cb4ede453f chore: add deprecation helper for fnToProperty (#17377)
* chore: add deprecation helper for fnToProperty

* add a test
2019-03-14 15:19:19 -07:00
Samuel Attard
be60f93bd0 fix: we can not use ts-node apaprently 2019-03-14 13:39:53 -07:00
Shelley Vohr
12b6a0f5b2 feat: add native emoji picker (#17359) 2019-03-14 13:39:52 -07:00
Samuel Attard
46e5767527 update for PR feedback 2019-03-14 13:18:16 -07:00
Samuel Attard
259bc3a918 build: remove log from the spec runner 2019-03-14 12:50:06 -07:00
Samuel Attard
a55d1ef305 spec: chai is funky 2019-03-14 12:50:06 -07:00
Samuel Attard
6b65e3523e wut 2019-03-14 12:50:06 -07:00
Samuel Attard
b967ae4c51 build: downgrade chai to work around nested adssertion bug 2019-03-14 12:50:06 -07:00
Samuel Attard
2023e32130 spec: push electron/spec into the spec runner args before the linux dbus wrapper 2019-03-14 12:50:06 -07:00
Samuel Attard
3656d12cba build: auto generate electron.d.ts in the spec runner if it is missing 2019-03-14 12:50:06 -07:00
Samuel Attard
ca701bb9af spec: initial spike of main-process based tests 2019-03-14 12:50:06 -07:00
Milan Burda
2e89348541 feat: promisify executeJavaScript (#17312) 2019-03-14 12:08:54 -07:00
Milan Burda
878538f2e8 feat: add safer nativeImage.createFromBitmap(), which does not decode PNG/JPEG (#17337) 2019-03-14 11:00:38 -07:00
Shelley Vohr
aa8b66aae1 feat: promisify session.getBlobData() (#17303) 2019-03-14 08:11:01 -07:00
d1g1t4ld1n4
c082b3964c docs: clarification of requestSingleInstanceLock() docs (#17304)
* docs: upstream doc links added to default window

Added the link to the Node docs and Chromium docs to the default window (not sure if I linked the chromium docs correctly, please let me know/feel free to suggest changes if you know the correct way to do so)

* docs: clarify what requestSingleInstanceLock() does

* Revert "docs: upstream doc links added to default window"

This reverts commit 829417cf29.

* docs: clarify what requestSingleInstanceLock() does
2019-03-13 19:42:16 -07:00
Shelley Vohr
d9234798d3 chore: clean up promise resoution with helpers (#17268) 2019-03-13 14:30:21 -07:00
Shelley Vohr
3e5a98b5f4 feat: promisify In-App Purchase (#17355)
* feat: promisify In-App Purchase

* use mate::Arguments in GetProducts
2019-03-13 13:56:01 -07:00
Milan Burda
faabd0cc8b refactor: add ipcMainUtils.invokeInWebContents / ipcRendererUtils.handle helpers (#17313) 2019-03-13 12:03:17 -07:00
Milan Burda
df7dc9396e fix: don't crash when nativeImage.createFromBuffer() called with invalid buffer (#17344) 2019-03-13 08:26:11 -07:00
Jeremy Apthorp
90fcc574f4 chore: add description to accelerator.patch (#17346) 2019-03-13 10:11:07 +05:30
Jeremy Apthorp
86291236a0 spec: robustify some webview tests (#17301) 2019-03-12 15:50:28 -07:00
Heilig Benedek
14cc8a1808 fix: improve focused menu bar item visibility (#17291) 2019-03-12 15:29:45 -07:00
Shelley Vohr
5eb75e91b9 chore: fix default_app showMessageBox (#17357) 2019-03-12 14:10:18 -07:00
Shelley Vohr
8991c0056e feat: promisify dialog.showMessageBox() (#17298)
* feat: promisify dialog.showMessageBox()

* address feedback from review
2019-03-12 11:06:59 -07:00
Jeremy Apthorp
ea6a926494 test: add test for second-instance event parameter (#16798)
* test: add test for second-instance event parameter

* robustify getting data from child process

* fix test on windows

* fix lint

* Update api-app-spec.js

* fix package-lock.json
2019-03-12 11:56:28 -04:00
Milan Burda
48a95f9677 fix: remove non-existent gpu-crashed event on <webview> (#17317) 2019-03-11 17:25:46 -07:00
Nitish Sakhawalkar
e77d065875 chore: node_includes header no longer needs to be at the end of the list (#17090)
Until one of the latest version of node, the definition of the DISALLOW_COPY_AND_ASSIGN macro in node was different than in chromium. That is no longer the case, so just undefining the macro in node_includes.h works.
2019-03-11 17:13:43 -07:00
Samuel Maddock
f943db7ad5 feat: Add content script world isolation (#17032)
* Execute content script in isolated world

* Inject script into newly created extension worlds

* Create new content_script_bundle for extension scripts

* Initialize chrome API in content script bundle

* Define Chrome extension isolated world ID range

1 << 20 was chosen as it provides a sufficiently large range of IDs for extensions, but also provides a large enough buffer for any user worlds in [1000, 1 << 20).

Ultimately this range can be changed if any user application raises it as an issue.

* Insert content script CSS into document

This now avoids a script wrapper to inject the style sheet. This closely matches the code used by chromium in `ScriptInjection::InjectCss`.

* Pass extension ID to isolated world via v8 private
2019-03-11 16:27:57 -07:00
Milan Burda
6072da239d feat: add global renderer-process-crashed event (#17315) 2019-03-11 16:17:24 -07:00
Milan Burda
a8698d092b chore: increase security of default_app (#17318) 2019-03-11 16:13:46 -07:00
Jeremy Apthorp
188d31132b spec: robustify sendInputEvent beforeEach hook (#17300) 2019-03-11 13:35:44 -07:00
Samuel Attard
c7a453226d fix: remove label/image from segment if they are mutated to undefined/null (#17323) 2019-03-11 11:13:36 -07:00
Electron Bot
b43e4b8e0e Bump v6.0.0-nightly.20190311 2019-03-11 10:56:01 -07:00
Electron Bot
a958eb9c44 Bump v6.0.0-nightly.20190308 2019-03-08 19:38:21 -08:00
Electron Bot
7343a2f232 Revert "Bump v6.0.0-nightly.20190308"
This reverts commit 40af881844.
2019-03-08 19:36:24 -08:00
Electron Bot
40af881844 Bump v6.0.0-nightly.20190308 2019-03-08 19:36:08 -08:00
Samuel Attard
a968f4f999 build: remove strip_debug_info gn arg declaration as it is android only and causing release build failures on windows (#17306) 2019-03-08 19:34:39 -08:00
Shelley Vohr
9ea6c01e02 feat: promisify session.clearAuthCache() (#17259)
* feat: promisify session.clearAuthCache()

* remove unused callback runner helpers
2019-03-08 18:41:42 -08:00
Electron Bot
58a9a81895 Revert "Bump v6.0.0-nightly.20190308"
This reverts commit 4728cebd9e.
2019-03-08 17:46:53 -08:00
Electron Bot
4728cebd9e Bump v6.0.0-nightly.20190308 2019-03-08 17:13:26 -08:00
Samuel Attard
699ef08e84 Merge pull request #17088 from electron/chromium-upgrade/74
feat: upgrade to Chromium 74.0.3724.8
2019-03-08 17:08:59 -08:00
Samuel Attard
5c42f57197 test: skip failing win32 devtools keyboard spec 2019-03-08 17:07:10 -08:00
Samuel Maddock
8ee153dae1 feat: add support for content scripts 'all_frames' option (#17258)
* feat: add support for content scripts 'all_frames' option

* merged content script tests

'all_frames' test now runs on all variants of sandbox/contentIsolation configurations :D
2019-03-08 15:53:25 -08:00
Seba Kerckhof
b7fc50b7ca docs: Add information on packaging a build (#17086)
* docs: Add information on packaging a build

* Stripping only applies to linux
2019-03-08 15:24:00 -08:00
Samuel Attard
e185057ef9 chore: fix linting issues in atom_api_cookies.cc 2019-03-08 15:13:22 -08:00
Jeremy Apthorp
a46b8efc8a temporarily disable verify-mksnapshot on arm 2019-03-08 15:13:22 -08:00
Jeremy Apthorp
d548c8c692 fix: build on arm 2019-03-08 15:13:21 -08:00
deepak1556
457ff0687c device/fido/mac: add more specific check for TouchID availability
https://chromium-review.googlesource.com/c/chromium/src/+/1487811
2019-03-08 15:13:12 -08:00
Jeremy Apthorp
bf6fea3b59 AttachToOuterWebContentsFrame => AttachInnerWebContents
https://chromium-review.googlesource.com/c/1492653
2019-03-08 15:13:12 -08:00
Jeremy Apthorp
0d534b3c52 fix: compile error in frame_subscriber.h
https://chromium-review.googlesource.com/c/1460096
2019-03-08 15:13:12 -08:00
deepak1556
47b92b6413 chore: roll 74.0.3724.8 2019-03-08 15:13:12 -08:00
Jeremy Apthorp
9c76ce38e3 appveyor workaround for appveyor/ci#2420 2019-03-08 15:10:52 -08:00
Jeremy Apthorp
2840e45920 use patched robotjs to fix compile failure 2019-03-08 15:10:52 -08:00
Jeremy Apthorp
38304be688 force abstract-socket version to fix compile error 2019-03-08 15:10:52 -08:00
Jeremy Apthorp
990ba15157 update nan in spec deps 2019-03-08 15:10:52 -08:00
Jeremy Apthorp
69bf9aa605 fix extra-semi warnings 2019-03-08 15:10:52 -08:00
deepak1556
8043e2e278 build: only download gn binary for lint step 2019-03-08 15:06:16 -08:00
deepak1556
e8f6f31fe4 Disable network service
https://github.com/electron/electron/issues/15791
2019-03-08 15:06:16 -08:00
deepak1556
0243b0ffc1 Change base::JSONReader::ReadToValue() to return Optional.
https://chromium-review.googlesource.com/c/chromium/src/+/1476186
2019-03-08 15:06:16 -08:00
deepak1556
fb9d1bd83c Change net::CookieStore::SetCookiesCallback to return CookieInclusionStatus
https://chromium-review.googlesource.com/c/chromium/src/+/1470931
2019-03-08 15:06:16 -08:00
deepak1556
c735116cc3 Take scheme in CookieStore::SetCanonicalCookieAsync, not just whether it's secure.
https://chromium-review.googlesource.com/c/chromium/src/+/1450420
2019-03-08 15:06:16 -08:00
deepak1556
457abecad6 Remove obsolete WebVector::IsEmpty().
https://chromium-review.googlesource.com/c/chromium/src/+/1482145
2019-03-08 15:06:16 -08:00
deepak1556
bfe876afcd Use IPEndPoint instead of HostPortPair
https://chromium-review.googlesource.com/c/chromium/src/+/1473094
2019-03-08 15:06:16 -08:00
deepak1556
3f4f774838 Remove const interfaces from content::ResourceRequestInfo.
https://chromium-review.googlesource.com/c/chromium/src/+/1474632
2019-03-08 15:06:16 -08:00
deepak1556
66128a7152 Add RenderFrameHost as parameter to WebContentsDelegate::HandleContextMenu
https://chromium-review.googlesource.com/c/chromium/src/+/1472696
2019-03-08 15:06:16 -08:00
Jeremy Apthorp
0bae707995 fix extra-semi warning in frame_host_manager.patch 2019-03-08 15:06:16 -08:00
Jeremy Apthorp
7245546274 update chromium patches 2019-03-08 15:06:16 -08:00
Jeremy Apthorp
1650ca3699 update v8 patches
array_buffer patch upstreamed at https://chromium-review.googlesource.com/c/v8/v8/+/1462003
2019-03-08 15:06:16 -08:00
Jeremy Apthorp
36abc0e547 chore: roll to 74.0.3718.2 2019-03-08 15:06:16 -08:00
deepak1556
ffc32d8130 Move buildtools into src
https://chromium-review.googlesource.com/c/chromium/src/+/1450459
2019-03-08 15:06:16 -08:00
deepak1556
43f909a9a3 chore: update is-valid-window 2019-03-08 15:06:15 -08:00
deepak1556
8f15dc4ff9 chore: roll 74.0.3711.0 2019-03-08 15:06:15 -08:00
Jeremy Apthorp
38c3891337 fix: initialize field trial list
https://chromium-review.googlesource.com/c/1402880
2019-03-08 15:06:15 -08:00
Jeremy Apthorp
d47ed72d17 FIXME: disable field-trial descriptor DCHECK 2019-03-08 15:05:54 -08:00
Jeremy Apthorp
014654e794 [OnionSoup] Replace content::RendererPreferences with the mojom one.
https://chromium-review.googlesource.com/c/1426522
2019-03-08 15:04:32 -08:00
deepak1556
d04d11cfb5 [mojo] include mojo header
https://chromium-review.googlesource.com/c/chromium/src/+/1447145
2019-03-08 15:04:32 -08:00
deepak1556
03f9d40635 Expand GpuInfo to include image decode acceleration support.
https://chromium-review.googlesource.com/c/chromium/src/+/1471913
2019-03-08 15:04:32 -08:00
deepak1556
527e8f3a31 IWYU: add missing headers 2019-03-08 15:04:32 -08:00
deepak1556
49f414b439 [Mac] Remove GC calls from Chromium.
https://chromium-review.googlesource.com/c/chromium/src/+/1471382
2019-03-08 15:04:32 -08:00
deepak1556
43361164e8 Change signature of GetCookieListCallback to include list of excluded cookies
https://chromium-review.googlesource.com/c/chromium/src/+/1416151
2019-03-08 15:04:32 -08:00
deepak1556
ccd4a3c80c CookieStore::DeleteCookieAsync appears unused (outside a few tests), so remove it
https://chromium-review.googlesource.com/c/chromium/src/+/1456677
2019-03-08 15:04:32 -08:00
deepak1556
a7e2856bf0 //components/spellcheck: Fix 64-bit truncation issues
https://chromium-review.googlesource.com/c/chromium/src/+/1450592
2019-03-08 15:04:32 -08:00
deepak1556
ac609a3d78 Remove deprecated override of RegisterDictionaryPref
https://chromium-review.googlesource.com/c/chromium/src/+/1459538
2019-03-08 15:04:32 -08:00
deepak1556
611b36719b Remove channel_id_path from NetworkContextParams (and other related places)
https://chromium-review.googlesource.com/c/chromium/src/+/1435678
2019-03-08 15:04:32 -08:00
deepak1556
59cb0ac32e Copy base::JSONReader::Read() to ReadDeprecated().
https://chromium-review.googlesource.com/c/chromium/src/+/1435715
2019-03-08 15:04:32 -08:00
deepak1556
6f14df039e [DevTools] Stop passing base::Value to DevToolsManagerDelegate
https://chromium-review.googlesource.com/c/chromium/src/+/1459807
2019-03-08 15:04:32 -08:00
deepak1556
4450c26206 [v8] Advance deprecation for Value::BooleanValue
https://chromium-review.googlesource.com/c/v8/v8/+/1458245
2019-03-08 15:04:32 -08:00
deepak1556
7270a08f9c WebSQL: Don't pass name/metadata around, use content::StorageUsageInfo
https://chromium-review.googlesource.com/c/chromium/src/+/1432375
2019-03-08 15:04:32 -08:00
deepak1556
b99ff3448e Use base::BindOnce in notifications code
https://chromium-review.googlesource.com/c/chromium/src/+/1418170
2019-03-08 15:04:32 -08:00
deepak1556
00aeb8e5c5 Revert "Disable precompiled headers"
This reverts commit 2556d86c8a.
Required clang update is now available.
2019-03-08 15:04:32 -08:00
deepak1556
59703c60ac Convert remaining JSON service manifests
https://bugs.chromium.org/p/chromium/issues/detail?id=895616
2019-03-08 15:04:32 -08:00
deepak1556
04ad579e8f chore: update patches/common/chromium 2019-03-08 15:04:32 -08:00
deepak1556
a3deae4491 chore: update patches/common/v8 2019-03-08 15:04:31 -08:00
deepak1556
9bc3888378 chore: update patches/common/boringssl 2019-03-08 15:04:31 -08:00
deepak1556
c13bf5692a chore: roll 74.0.3710.0 2019-03-08 15:03:15 -08:00
Shelley Vohr
fc10620082 feat: promisify session cache methods (#17185) 2019-03-08 14:42:03 -08:00
Jeremy Apthorp
652e232813 feat: enable setuid sandbox on linux (#17269) 2019-03-08 13:10:26 -08:00
Samuel Attard
890f38e8fa build: use shx instead of raw cp to support windows (#17299) 2019-03-08 12:52:28 -08:00
Shelley Vohr
2769e75b49 feat: promisify session proxy methods (#17222) 2019-03-08 12:51:12 -08:00
Jeremy Apthorp
34fb6c2f35 fix: crash in ECDH.setPrivateKey (#17219) 2019-03-08 10:50:04 -08:00
Robo
5afb7dc715 refactor: load electron builtin modules with process._linkedBinding (#17247)
* refactor: load electron builtin modules with process._linkedBinding

NODE_BUILTING_MODULE_CONTEXT_AWARE and process.binding are
removed in https://github.com/nodejs/node/pull/25829. This changes
uses the alternative available without any functionality change.

* chore: roll node
2019-03-08 10:29:52 -08:00
Shelley Vohr
e5e6aa207c feat: promisify ses.clearHostResolverCache() (#17229) 2019-03-08 10:26:17 -08:00
Samuel Attard
9d8619f305 fix: remove usage of private APIs in the MAS build (#17224)
* fix: remove usage of abort_report_np in MAS builds

* fix: remove usage of pthread_chdir in MAS builds

* fix: remove usage of setapplicationisdaemon in MAS builds

* chore: update patch manifest
2019-03-08 10:08:56 -08:00
Shelley Vohr
bbfa63fd9d feat: promisify session.clearStorageData() (#17249) 2019-03-08 09:02:30 -08:00
Milan Burda
d34f81972d refactor: make ELECTRON_BROWSER_SANDBOX_LOAD handler async (#17107) 2019-03-08 11:21:41 +01:00
Shelley Vohr
17dab8f239 build: turn gpg signing off for bootstrap (#17282) 2019-03-07 18:11:31 -08:00
Shelley Vohr
a4418a9014 chore: add static promise resolution helpers (#17223)
* chore: add static promise resolution helpers

* address feedback

* address feedback from review
2019-03-07 18:07:04 -08:00
Samuel Attard
61fc95417b build: fix new TS linting errors (#17279)
* remove unused _args var
* handle type/variable shadowing
2019-03-07 17:18:10 -08:00
John Kleinschmidt
2be62b1c33 test: fix incorrect reference to skip (#17278) 2019-03-07 16:03:10 -08:00
Samuel Maddock
42b7b25ac3 feat: support chrome extensions in sandboxed renderer (#16218)
* Add content script injector to sandboxed renderer

* Fix 'getRenderProcessPreferences' binding to the wrong object

* Pass getRenderProcessPreferences to content-scripts-injector

* Emit document-start and document-end  events in sandboxed renderer

* Use GetContext from RendererClientBase

* Prevent script context crash caused by lazily initialization

* Remove frame filtering logic for onExit callback

Since we're keeping track of which frames we've injected the bundle into, this logic is redundant.

* Add initial content script tests

* Add contextIsolation variants to content script tests

* Add set include

* Fix already loaded extension error

* Add tests for content scripts 'run_at' options

* Catch script injection eval error when CSP forbids it

This can occur in a rendered sandbox when a CSP is enabled. We'll need to switch to using isolated worlds to fix this.

* Fix content script tests not properly cleaning up extensions

* Fix lint and type errors
2019-03-07 16:00:28 -08:00
Jeremy Apthorp
825e526456 build: minor fixes to git-export-patches (#17276)
* fix: make export-patches robust to tags with dashes

* fix: --output is a required parameter of export-patches
2019-03-07 15:59:17 -08:00
Jeremy Apthorp
ca2c345997 chore: update package-lock.json with npm@latest (#17146)
* chore: update package-lock.json with npm@latest

* also for spec/
2019-03-07 15:34:33 -08:00
Milan Burda
5791a2a9ec refactor: use ipcRendererUtils.invoke / ipcMainUtils.handle for desktopCapturer.getSources() (#16619) 2019-03-07 15:31:25 -08:00
Samuel Maddock
ac88b3ead5 feat: add 'disableHtmlFullscreenWindowResize' option to webPreferences (#17203)
This option allows users to prevent the window from resizing when the HTML5 FullScreen API is used.
2019-03-07 15:29:37 -08:00
Felix Rieseberg
f3fc4023cf refactor: Port renderer/web-view to TypeScript (#17250) 2019-03-07 15:26:23 -08:00
Roller Bot
8c6bf9c848 chore: bump chromium in DEPS to 73.0.3683.68 (#17262) 2019-03-07 14:52:02 -08:00
Robo
bb88a07a94 fix: gn check errors in release build (#17274) 2019-03-07 14:48:22 -08:00
Samuel Maddock
8ec304f32f fix: run subframe preload bundles in isolated context (#17165)
* fix: run subframe preload bundles in isolated context

* test subframe contextIsolation when disabled
2019-03-07 14:46:57 -08:00
Felix Rieseberg
5581990d78 build: Update TypeScript, use @typescript-eslint (#17251)
* build: Update TypeScript to v3.3

* build: Update TypeScript, use @typescript-eslint
2019-03-07 12:56:02 -08:00
Electron Bot
8c4d6438de Bump v6.0.0-nightly.20190307 2019-03-07 12:51:33 -08:00
Electron Bot
229934ec66 Revert "Bump v6.0.0-nightly.20190307"
This reverts commit ab785e73ac.
2019-03-07 12:47:33 -08:00
Electron Bot
ab785e73ac Bump v6.0.0-nightly.20190307 2019-03-07 12:34:10 -08:00
Robo
d4d6b9862f fix: make StreamSubscriber ref counted (#17221)
It is owned by URLRequestStreamJob on the IO thread once request starts,
but if the ownership was abondoned while transfering it to IO thread
which is possible when a request is aborted, then we need to make sure
its destroyed on the right thread to avoid lock in v8.
2019-03-07 20:50:03 +05:30
Jeremy Apthorp
b575631bb0 fix: bad assertion in crypto functions that use BN_bn2bin_padded (#17220)
* chore: roll node

in particular, this picks up electron/node#70a78f07b, which fixes an issue with incorrect usage of the BN_bn2bin_padded API in boringssl

* fix tests
2019-03-07 07:29:53 +05:30
Heilig Benedek
5422fd9941 fix: backport upstream fixes for color chooser dialogs (#17227)
* fix: backport upstream fixes for color chooser dialogs

* chore: fix patches, Windows bad, linux good

* Update color_chooser_mac.patch

* Update color_chooser_win.patch
2019-03-07 07:25:15 +05:30
Milan Burda
2733697819 refactor: make ELECTRON_INSPECTOR_SELECT_FILE handler async (#17235) 2019-03-06 22:22:45 +01:00
Shelley Vohr
6cb7b8d3a4 feat: promisify dialog.showSaveDialog() (#17054)
* feat: promisify dialog.showSaveDialog()

* address some feedback from review

* filename => filePath

* fix last filename => filePath
2019-03-05 13:48:20 -08:00
Roller Bot
92c9dbc179 chore: bump chromium in DEPS to 73.0.3683.65 (#17234) 2019-03-05 11:01:38 -08:00
Jeremy Apthorp
5a88d9e6fc docs: add troubleshooting note about pywin32 (#17216) 2019-03-05 10:40:52 -08:00
Koen [XII]
aa863f3246 Fix typo in registerSchemesAsPrivileged reference (#17214) 2019-03-05 09:20:52 -08:00
Shelley Vohr
e05985145b feat: promisify dialog.showOpenDialog() (#16973)
* feat: promisify dialog.showOpenDialog()

* address feedback from review

* address feedback from review
2019-03-05 05:54:48 -08:00
Robo
7936237677 build: enable gn check for //electron:electron_lib (#17100)
* build: enable gn check for //electron:electron_lib

* ci: add gn check step

* ci: set depot_tools path

* chrome_key_systems_provider.h nogncheck

* chore: fix gn check errors on windows

* chore: gn check //electron:electron_app
2019-03-05 10:38:55 +05:30
Charles Kerr
ed31cfebc9 fix: check for pane focus before removing it. (#17164)
Fixes #16883. This bug seems to have been introduced in the #15302's
menu a11y refactor and is new in 5-0-x.
2019-03-04 09:47:59 -06:00
Samuel Attard
8dcb5662e3 refactor: remove chromium/net_url_request_job.patch (#17174)
Does not appear to be used any more
2019-03-02 15:23:47 +05:30
Jeremy Apthorp
f4169f3491 chore: bump chromium to 73.0.3683.61 (master) (#17191)
also backport https://chromium-review.googlesource.com/c/chromium/src/+/1496448
2019-03-01 12:35:27 -08:00
Milan Burda
bbd1ae315a refactor: use invoke/invokeSync helpers for <webview> implementation (#16784) 2019-03-01 13:33:03 -05:00
Jeremy Apthorp
2adbc7836b refactor: prevent node macros from overriding base (#17178) 2019-03-01 10:04:30 -08:00
Felix Rieseberg
59a7fa6927 refactor: Port api/web-frame to TypeScript (#17053) 2019-03-01 08:39:04 +00:00
Milan Burda
676c02611d spec: add missing checks to "validates process APIs access in sandboxed renderer" (#17129) 2019-02-28 22:24:18 -08:00
Jeremy Apthorp
67f04c0370 docs: remove dead link to chromiumdev slack (#17161)
* docs: remove dead link to chromiumdev slack

Closes #17154

* Update chromium-development.md
2019-02-28 16:43:55 -05:00
Shelley Vohr
544d8a423c feat: allow MenuItems to work optionally when hidden (#16853)
* feat: allow MenuItems to work optionally when hidden

* fix: actually include forward_declaration
2019-02-28 17:00:54 +00:00
Linda_pp
6d55498cc7 docs: Fix types and missing property in WebRequest APIs (#17046)
* docs: Fixed hook methods of WebRequest accepts null as listener

* docs: Added missing `referrer` property in OnBeforeRequestDetails

* docs: Add `referrer` to each webRequest responses
2019-02-28 09:30:38 +00:00
Milan Burda
64078324bf refactor: make CHROME_GET_MESSAGES handler async (#17148) 2019-02-27 21:30:35 -06:00
Nitish Sakhawalkar
bfa07ec4be feat: Add new powerMonitor synchronous API (#17144)
`powerMonitor.querySystemIdleState` and `powerMonitor.querySystemIdleTime` had async backing APIs in chromium (https://chromium-review.googlesource.com/c/chromium/src/+/1379183). However, that has changed in ch73. So, this PR deprecates the old async APIs and adds new sync APIs.
2019-02-27 15:54:01 -05:00
Jeremy Apthorp
29ab74688d chore: update CODEOWNERS to reflect governance (#17143)
* chore: update CODEOWNERS to reflect governance

* Add /patches/ @electron/wg-upgrades

* Update CODEOWNERS
2019-02-27 15:17:35 -05:00
qwabra
d4cfaaf047 Update debugging-main-process-vscode.md (#16363)
[console.log() not printing to terminal when debugging Electron apps. #49](https://github.com/Microsoft/vscode-recipes/issues/49#issuecomment-354367330)
2019-02-27 15:03:15 -05:00
Nitish Sakhawalkar
5da89c3a2b chore:Remove transparency hack (#17128)
This change undoes the hack that was put in because of a bug in chromium. That has since been fixed in chromium, so this is no longer need, hence removing.
The 'BrowserWindow' > 'preserves transparency' test, validates this working.
2019-02-27 14:51:30 -05:00
Samuel Attard
e01c3615c4 chore: replace usage of deprecated beginSheetModalForWindow API (#16994) 2019-02-27 10:23:17 -08:00
Luca Carettoni
1bbb47be5b docs: Improved security doc, particularly around isolation and tool (#16703)
* Improved security doc, particularly around isolation and tool

* Fixes as suggested by @ckerr

* libcc update

* fixing lint stuff
2019-02-27 10:09:38 -08:00
Electron Bot
a07cb2afd7 Bump v6.0.0-nightly.20190227 2019-02-27 09:55:19 -08:00
Roller Bot
4e25dc3c3c chore: bump chromium in DEPS to 73.0.3683.58 (#17156) 2019-02-27 09:48:08 -08:00
Shelley Vohr
5ecda17c7a refactor: make shell.ShowItemInFolder asynchronous (#17121)
* fix: add scoped_blocking_calls to platform_win

https://chromium-review.googlesource.com/c/chromium/src/+/1191582

* feat: make ShowItemInFolder async

* address feedback from review

* fix build
2019-02-27 12:58:23 +00:00
Samuel Attard
08066581b0 fix: set cancelId to 1 when defaultId == 0 and no 'cancel' button (#17123) 2019-02-27 08:24:13 +00:00
Johann Fuechsl
42aa375497 fix: access of out-of-scope reference in ShowOpenDialog and ShowSaveDialog (#17126)
In the mac file dialog implementation of show*OpenDialog, a settings
object is passed down to the dialog completion handler.
However at the time the completion handler is invoked, the settings
object is already out-of-scope, resulting in an invalid access to
the security_scoped_bookmarks flag.
The fix is to capture the value of the flag and passing that directly
to the completion handler.

fixes issue #16664
2019-02-27 08:14:04 +00:00
Milan Burda
5a99ea4c46 refactor: merge ipcMainUtils.handle / handleSync (#17062) 2019-02-26 15:48:26 -08:00
Electron Bot
848d16525f Revert "Bump v6.0.0-nightly.20190226"
This reverts commit 7c78f11b82.
2019-02-26 15:20:32 -08:00
Electron Bot
7c78f11b82 Bump v6.0.0-nightly.20190226 2019-02-26 14:56:19 -08:00
Robo
28899c3885 chore: roll chromium 73.0.3683.54 (#17124)
* chore: roll chromium 73.0.3683.52

* chore: roll 73.0.3683.54
2019-02-26 21:35:27 +00:00
Shelley Vohr
be8f9bd597 chore: clean up issue templates (#17085)
* chore: clean up issue templates

* address feedback from review

* cleanup
2019-02-26 17:51:29 +09:00
Shelley Vohr
d9c7735a04 chore: augment promisifyMultiArg deprecation (#17066) 2019-02-25 18:25:25 -08:00
Mark Lee
7a7389ab1c build: upgrade to asar@^1.0.0 (#17061)
* build: upgrade asar to ^1.0.0

This is to remove a transitive security vulnerability.
The API changed from callbacks to Promises, so `script/gn-asar.js`
needed to be changed.

* build: add klaw to package.json

`klaw` is used in `script/lint.js`, but it was a transitive dependency.

* build: add fs-extra to package.json

`fs-extra` is used in `script/gn-asar.js`, but it was a transitive
dependency.
2019-02-25 18:25:00 -08:00
Vlad Hashimoto
30213089ae docs: allow webRequest listener to passing null (#17006) 2019-02-25 18:13:00 -08:00
Gavin Wang
391f6dd663 docs: add sample code for contents.insertCSS() (#16959)
it not work before Event: 'did-finish-load', so add this sample code to show it.
2019-02-25 18:10:56 -08:00
Felix Rieseberg
7f007109c3 refactor: Port inspector to TypeScript (#16943)
* refactor: Port inspector to TypeScript

* refactor: Add another type to inspector

* refactor: Use correct paths

* Update lib/renderer/inspector.ts

Co-Authored-By: felixrieseberg <felix@felixrieseberg.com>

* refactor: Implement feedback <3

* refactor: Don't define blob at all

* fix: Correct type
2019-02-25 18:10:25 -08:00
Robo
ddcebb096f fix: use frame tree api to remove <webview> frame (#16501)
Replaces the usage of testing api added in
03d499bf34
2019-02-25 17:47:29 -08:00
Shazron Abdullah
6da939629b fix: respect the user's active app focus (#16400)
* Respect the user's active app

Apple recommends not setting this to true. https://developer.apple.com/documentation/appkit/nsapplication/1428468-activateignoringotherapps?language=objc

* Remove atom_bundle_mover.mm change for [NSApp activateIgnoringOtherApps:]
2019-02-25 17:44:38 -08:00
Milan Burda
5e762d6a47 chore: finalize dropping support for OS X Mavericks (version 10.9) (#17102) 2019-02-25 17:21:57 +00:00
Sindre Sorhus
df5305d6a7 docs: fix MenuItem windowMenu role description (#17065)
It was changed in https://github.com/electron/electron/pull/15930
2019-02-25 13:34:32 +00:00
Thomas Beverley
1674388028 Fix webContents.print() (#17052) 2019-02-25 13:30:21 +00:00
Roller Bot
944cdb4430 chore: bump chromium in DEPS to 73.0.3683.49 (#17095) 2019-02-22 17:17:02 -08:00
Jeremy Apthorp
28b150f6dc test: fix race condition in debugger spec (#17091) 2019-02-22 16:45:48 -08:00
Roller Bot
5be93566ee chore: bump chromium in DEPS to 73.0.3683.48 (#17083) 2019-02-21 09:52:08 -08:00
Cheng Zhao
32a4de4a68 chore: make util::Promise a move-only type (#17071) 2019-02-21 12:32:44 +00:00
ZYSzys
a40d826b11 chore: remove unused catch bindings (#16121) 2019-02-21 09:26:07 +00:00
Roller Bot
08f7d60da4 chore: bump chromium in DEPS to 73.0.3683.47 (#17068) 2019-02-20 10:18:43 -08:00
Shelley Vohr
3edc497d3d feat: show user gesture type in click event (#16954) 2019-02-20 12:20:24 +00:00
Shelley Vohr
cc5ed24e23 chore: properly template the Then promise helper (#17050) 2019-02-19 21:46:59 +00:00
Roller Bot
0a730e61f5 chore: bump chromium in DEPS to 73.0.3683.45 (#17048) 2019-02-19 13:42:32 -08:00
Felix Rieseberg
91f81b4b72 refactor: Port renderer/init to TypeScript (#17027)
* refactor: Port renderer/init to TypeScript

* Update lib/renderer/init.ts

Co-Authored-By: felixrieseberg <felix@felixrieseberg.com>

* refactor: Type this a bit more loosely

* refactor: Type parseOption strictly
2019-02-19 17:05:14 +00:00
Felix Rieseberg
2223114f20 refactor: Port chrome-api to TypeScript (#17014) 2019-02-19 13:09:44 +00:00
Milan Burda
7e7abc28f5 feat: promisify netLog.stopLogging (#16862) 2019-02-19 10:48:27 +00:00
Samuel Attard
3b74837020 refactor: Split 'Event' docs/types into more specific Event types (#17038)
* Event = Base event type (with preventDefault)
* IpcMainEvent = Event that ipcMain emits (with sender, reply, etc.)
* IpcRendererEvent = Event that ipcRenderer emits (with sender,
senderId, etc.)
* KeyboardEvent = Event that we emit with keyboard flags (ctrlKey,
altKey, etc.)

This will dramatically improve peoples TS experience with IPC events
2019-02-19 09:24:19 +00:00
Shelley Vohr
ef2e7d95fe chore: add Then helper for native promises (#16978) 2019-02-18 14:25:28 +00:00
Milan Burda
a04d9ef35b feat: add process.getSystemVersion() (#16599) 2019-02-18 12:59:48 +00:00
Felix Rieseberg
eaa0e28396 refactor: Port content-scripts-injector to TypeScript (#17012) 2019-02-18 12:47:07 +00:00
John Kleinschmidt
35c3a7e130 build: make torque patch more specific for native arm builds (#16992)
* build: make torque patch more specific

the v8_generator_toolchain should only be overriden if the snapshot toolchain is a native arm or arm64 toolchain

* Only test native mksnapshot on arm64

* Put environment variable in container
2019-02-18 10:02:50 +00:00
Felix Rieseberg
596acdcb91 refactor: Port web-frame-init to TypeScript (#16934)
* refactor: Port web-frame-init to TypeScript

* refactor: Use ipcRendererInternal
2019-02-18 00:24:18 +00:00
Felix Rieseberg
6b3ff4f1f7 refactor: Port security warnings to TypeScript (#16937)
* refactor: Port security-warnings to TypeScript

* chore: make aliasify work on .ts files as well

* refactor: Implement feedback <3

* refactor: Correctly call executeJavaScript
2019-02-16 17:06:30 -08:00
Mark Lee
0a84c61074 docs: update chromium version in 5.0.0 release schedule (#17001) 2019-02-16 08:25:25 -08:00
Samuel Attard
71366e2a0d chore: auto add filenames.auto.gni when md files are changed (#16995) 2019-02-15 17:03:50 -08:00
Shelley Vohr
1e8ac79e6f docs: document the Event interface (#16966)
* docs: document the Event interface

* update docs deps

* pull new VoidFunction update
2019-02-15 12:08:45 -08:00
Roller Bot
31ff160431 chore: bump chromium in DEPS to 73.0.3683.41 (#16981) 2019-02-15 10:37:19 -08:00
Aayush Chhabra
6d005ff137 docs: Remove redundant 'Instance Events' Headline (#16865) 2019-02-15 08:29:33 -10:00
Milan Burda
975a035d34 chore: re-enable devtools renderer sandbox (#16864)
* chore: re-enable devtools renderer sandbox

* chore: enable sandbox for chrome extension background script host renderers
2019-02-15 15:10:32 +05:30
Felix Rieseberg
2498e8d1c2 refactor: Port renderer-internal to TypeScript (#16939)
* chore: make aliasify work on .ts files as well

* refactor: Port ipc-renderer-internal to TypeScript

* refactor: Correctly import internal ipcRenderer

* refactor: One more rename

* refactor: Fix one more lint issue

* refactor: Correctly reference ipcRendererInternal
2019-02-14 17:24:25 -08:00
Samuel Attard
5790869a3f chore: refactor browser IPC into TS and app API into TS (#16921)
* chore: refactor browser IPC into typescript

* chore: refactor app.ts into Typescript

* Refactors app.dock into cpp
* Removes app.launcher which has not existed for 3 years
* Removes 2 deprecated APIs (that have been deprecated for more than one
major)
* Refactors deprecate.ts as well
2019-02-14 14:29:20 -08:00
Samuel Attard
4ccd6d5900 build: add a pre-flight check to all NPM steps in GN to ensure that we have the right NPM deps installed (#16974) 2019-02-14 14:28:41 -08:00
Samuel Attard
28638b0a6b docs: update dialog documentation for "undefined" ret vals (#16970) 2019-02-14 14:28:17 -08:00
Samuel Attard
5904544235 Merge pull request #16494 from electron/chromium-upgrade/73
feat: upgrade to Chromium 73.0.3683.27
2019-02-14 12:28:41 -08:00
John Kleinschmidt
46a49b74a6 Run electron tests first 2019-02-14 23:59:27 +05:30
deepak1556
b927be9982 chore: roll 73.0.3683.27 2019-02-14 23:59:27 +05:30
deepak1556
95386ef56f Disable swiftshader for arm32 2019-02-14 23:59:27 +05:30
deepak1556
1d9170f1bb FIXME: disable OSR 2019-02-14 23:59:27 +05:30
deepak1556
b6f7157910 fix compilation error for windows testing builds 2019-02-14 23:59:27 +05:30
deepak1556
2556d86c8a Disable precompiled headers
Workaround for https://crbug.com/924225
2019-02-14 23:59:26 +05:30
deepak1556
d7fea1b484 REVIEW: fix possible -Wdeprecated-declarations warnings 2019-02-14 23:59:26 +05:30
Heilig Benedek
2ccf5904e0 chore: fix linking errors on Windows 2019-02-14 23:59:26 +05:30
Heilig Benedek
d7557cb66a chore: use c++ manifests instead of json 2019-02-14 23:59:26 +05:30
Heilig Benedek
cece8bce0b chore: make OSR compile on Windows 2019-02-14 23:59:26 +05:30
deepak1556
66db627913 Remove "layouttest" or "layout test" in //content
https://chromium-review.googlesource.com/c/chromium/src/+/1367391
2019-02-14 23:59:26 +05:30
deepak1556
76fde58e27 REVIEW: ui::Compositor: Simplify how ExternalBeginFrameClient is used.
https://chromium-review.googlesource.com/c/chromium/src/+/1388384
2019-02-14 23:59:26 +05:30
deepak1556
8a51c9c2f6 REVIEW: Have MouseWheelPhaseHandler agree on whether to route its wheel event
https://chromium-review.googlesource.com/c/chromium/src/+/1401664
2019-02-14 23:59:26 +05:30
deepak1556
e11589b5be ui/base: move clipboard to own folder.
https://chromium-review.googlesource.com/c/chromium/src/+/1369933
2019-02-14 23:59:25 +05:30
deepak1556
3727982217 Delete tab pulsing feature.
https://chromium-review.googlesource.com/c/chromium/src/+/1407958
2019-02-14 23:59:25 +05:30
deepak1556
70bbbb84bb Rename BlendTowardOppositeLuma() to BlendTowardContrastingEndpoint().
https://chromium-review.googlesource.com/c/chromium/src/+/1400060
2019-02-14 23:59:25 +05:30
Jeremy Apthorp
34d7e019ce gfx::Path -> SkPath
https://chromium-review.googlesource.com/c/1392181
2019-02-14 23:59:25 +05:30
deepak1556
a9ab4c5039 chore: roll 73.0.3683.10 2019-02-14 23:59:25 +05:30
deepak1556
005b7d8099 Print Preview: Add validity check for kSettingPagesPerSheet.
https://chromium-review.googlesource.com/c/chromium/src/+/1381133
2019-02-14 23:59:25 +05:30
deepak1556
510ca79ddd Enable DCHECK for renderer-initiated navigations requiring initiator.
https://chromium-review.googlesource.com/c/chromium/src/+/1385495
2019-02-14 23:59:24 +05:30
deepak1556
0545d47ca7 chore: roll node 2019-02-14 23:59:24 +05:30
deepak1556
86a94126fb Convert ProxyResolutionServiceProvider to use Network Service.
https://chromium-review.googlesource.com/c/chromium/src/+/1419264
2019-02-14 23:59:24 +05:30
deepak1556
035eee5c03 [OnionSoup] replace network::DataElement::Type with DataElementType
https://chromium-review.googlesource.com/c/chromium/src/+/1393106
2019-02-14 23:59:24 +05:30
deepak1556
1b982e200a Autoplay: remove cross-origin autoplay policy from //chrome and //content.
https://chromium-review.googlesource.com/c/chromium/src/+/1362225
2019-02-14 23:59:24 +05:30
deepak1556
10850808e9 chore: roll 73.0.3679.0 2019-02-14 23:59:24 +05:30
deepak1556
c2be0846c2 chore: rm fix_test_compilation_error.patch 2019-02-14 23:59:24 +05:30
deepak1556
1d21e9c35d Move client hints to content
https://chromium-review.googlesource.com/c/chromium/src/+/1376709
2019-02-14 23:59:23 +05:30
deepak1556
315f8c0cc7 DevToolsFrontendHost::Create to return unique_ptr instead of raw pointer
https://chromium-review.googlesource.com/c/chromium/src/+/1396614
2019-02-14 23:59:23 +05:30
deepak1556
9b82e7d27b Change DevToolsEmbedderMessageDispatcher to use unique_ptr instead of raw pointers.
https://chromium-review.googlesource.com/c/chromium/src/+/1382701
2019-02-14 23:59:23 +05:30
deepak1556
61c46c6313 Replace SiteInstance::IsSameWebSite() with a new non-static method.
https://chromium-review.googlesource.com/c/chromium/src/+/1352856
2019-02-14 23:59:23 +05:30
deepak1556
e4cfc52c29 Remove const interfaces from content::RenderProcessHost.
https://chromium-review.googlesource.com/c/chromium/src/+/1356004
2019-02-14 23:59:23 +05:30
deepak1556
3898a44e88 Increase scope of URLLoader::FollowRedirect() API implementation.
https://chromium-review.googlesource.com/c/chromium/src/+/1369856
2019-02-14 23:59:23 +05:30
deepak1556
547add94d0 Make //ui/base/idle API synchronous
https://chromium-review.googlesource.com/c/chromium/src/+/1379183
2019-02-14 23:59:23 +05:30
deepak1556
dd4a31633f split out color chooser browser dialog header
https://chromium-review.googlesource.com/c/chromium/src/+/1395146
2019-02-14 23:59:23 +05:30
deepak1556
52ef6d9ae4 [Printing] Stop using GetUserAgent from non-browser process
https://chromium-review.googlesource.com/c/chromium/src/+/1353052
2019-02-14 23:59:23 +05:30
deepak1556
0e39ec688a More migration of ServiceContext to ServiceBinding
https://chromium-review.googlesource.com/c/chromium/src/+/1357534
2019-02-14 23:59:22 +05:30
deepak1556
606c84b302 Blink: Plumb correct security origin for isolated world CSPs.
https://chromium-review.googlesource.com/c/chromium/src/+/1395190
2019-02-14 23:59:22 +05:30
deepak1556
2c282203b5 v8: Remove obsolete V8 extras flag
https://chromium-review.googlesource.com/c/chromium/src/+/1404554
2019-02-14 23:59:22 +05:30
deepak1556
1c4241bff5 Move BackgroundColor from widgets and child frames to the WebView.
https://chromium-review.googlesource.com/c/chromium/src/+/1382861
2019-02-14 23:59:22 +05:30
deepak1556
b2bd9ffd70 Downloads : Adding metered network info and retry count to download item
https://chromium-review.googlesource.com/c/chromium/src/+/1352628
2019-02-14 23:59:22 +05:30
deepak1556
e1502f6953 Move GetUserAgent from ContentClient to ContentBrowserClient
https://chromium-review.googlesource.com/c/chromium/src/+/1352086
2019-02-14 23:59:22 +05:30
deepak1556
abec938b0a Use base::size rather than arraysize
https://bugs.chromium.org/p/chromium/issues/detail?id=837308
2019-02-14 23:59:22 +05:30
deepak1556
a913e396d5 [SM] Use C++ Manifests for SM embedders
https://chromium-review.googlesource.com/c/chromium/src/+/1383530
2019-02-14 23:59:21 +05:30
deepak1556
79040e348a Change the source origin parameter type for CanCreateWindow from GURL to url::Origin.
https://chromium-review.googlesource.com/c/chromium/src/+/1395066
2019-02-14 23:59:21 +05:30
deepak1556
9439ac108d content: Fix WebContentsUserData for usage across components.
https://chromium-review.googlesource.com/c/chromium/src/+/1354402
2019-02-14 23:59:21 +05:30
deepak1556
a864167d46 Move MediaStream Mojo and public interfaces to Blink.
https://chromium-review.googlesource.com/c/chromium/src/+/1389998
2019-02-14 23:59:21 +05:30
deepak1556
92cfc4a62d fix: update deprecated v8 api usage 2019-02-14 23:59:21 +05:30
deepak1556
f09cb56f19 Refactors TtsPlatform and most platform implementations to content.
https://chromium-review.googlesource.com/c/chromium/src/+/1352055
2019-02-14 23:57:59 +05:30
deepak1556
fbefab4227 chore: update patches/common/ffmpeg 2019-02-14 23:57:59 +05:30
deepak1556
e517139e3c chore: update patches/common/v8 2019-02-14 23:57:58 +05:30
deepak1556
3f75724a31 chore: update patches/common/chromium 2019-02-14 23:57:58 +05:30
deepak1556
2752ae4ae8 chore: roll 73.0.3673.0 2019-02-14 23:57:58 +05:30
Milan Burda
e769b867f0 fix: disable Chromium v2 sandbox in MAS builds (#16920) 2019-02-14 09:48:17 -08:00
Shelley Vohr
de27911661 feat: promisify webContents.savePage() (#16742)
* feat: promisify webContents.savePage()

* no need to make compatible w callbacks, we're breaking it

* fix promise resolve type

* address feedback from review

* fix promise return text

* update smoke test
2019-02-14 09:03:28 -08:00
Jeremy Apthorp
6e7dca9082 chore: restore WTF::StringImpl dchecks (#15635) 2019-02-14 08:59:04 -08:00
Stewart Lord
84ef9cae6c fix: send chrome.runtime/tabs.sendMessage result to correct sender (#16945)
Additionally, use `.once` instead of `.on` for result specific listeners.
2019-02-14 06:07:55 -10:00
Samuel Attard
8497bb1327 fix: potential flake/race in webview specs (#16950) 2019-02-14 05:49:12 -10:00
Felix Rieseberg
31494dfade refactor: Port getRemote to TypeScript (#16938)
* chore: make aliasify work on .ts files as well

* refactor: Port getRemote to TypeScript

* refactor: Implement feedback <3
2019-02-14 04:04:53 -10:00
Felix Rieseberg
6cd75744ef refactor: Port window-setup to TS (#16894)
* refactor: Port window-setup to TS

* refactor: Make the linter happy

* refactor: Sneaky little TS error

* refactor: Correctly import window-setup

* refactor: Implement feedback <3

* refactor: Allow decorators in TS

* refactor: Use named windowSetup in isolatedRenderer

* refactor: Help TS understand

* refactor: Welp, use createEvent again

* refactor: Use the correct target in the decorator
2019-02-14 03:52:38 -10:00
Milan Burda
2492f0bcac refactor: promisify prototype methods (#16935) 2019-02-14 03:40:24 -10:00
Felix Rieseberg
9112ad01be refactor: Port renderer-internal-utils to TypeScript (#16942)
* chore: make aliasify work on .ts files as well

* refactor: Port renderer-internal-utils to TypeScript

* refactor: Implement feedback <3
2019-02-13 23:05:49 -08:00
Shelley Vohr
46a24c82ff feat: add Touch ID authentication support for macOS (#16707)
This PR adds Touch ID authentication support for macOS with two new `SystemPreferences` methods.

1. `systemPreferences.promptForTouchID()` returns a Promise that resolves with `true` if successful and rejects with an error message if authentication could not be completed.
2. `systemPreferences.isTouchIDAvailable()` returns a Boolean that's `true` if this device is a Mac running a supported OS that has the necessary hardware for Touch ID and `false` otherwise.
2019-02-13 18:36:28 -08:00
Stewart Lord
228805353f fix: pass result to chrome.tabs.executeScript callback (#16941)
* fix: pass result to chrome.tabs.executeScript callback

Additionally, remove `nextId` counter in favor of `originResultID` counter which is more widely used in this file.

* fix: remove need for eslint override and better match style
2019-02-13 17:00:36 -08:00
Shelley Vohr
319c2853df chore: move ts-smoke tests to core (#16930)
* chore: move ts smoke tests to core

* fix: fix paths for tsconfig / ts-smoke runner

* update ts-defs version

* do not lintr
2019-02-13 15:24:28 -08:00
Electron Bot
95214fcd4b Bump v6.0.0-nightly.20190213 2019-02-13 13:44:57 -08:00
Shelley Vohr
fed5b99a9f feat: promisify contentTracing.getTraceBufferUsage() (#16600)
* feat: promsify contentTracing.getTraceBufferUsage()

* deprecate getTraceBufferUsage

* address feedback from review

* properly deprecate
2019-02-13 13:24:57 -08:00
Julien Isorce
9b29befdc8 feat: disable fetching thumbnails if thumbnailSize is 0 (#14906)
Capturing window thmubnails is expensive as it actually uses the
window capturer and it records one full frame per window and then
downscale to the default size 150x150. When only interested in the
window names or the app icons we do not need all of this.

Underlying change is merged in chromium72 so this patch only modifies
the doc, see:
  https://chromium.googlesource.com/chromium/src.git/+log/72.0.3626.52/chrome/browser/media/webrtc/native_desktop_media_list.cc

Example: desktopCapturer.getSources({thumbnailSize: {width: 0, height: 0}}, ...)

Also added a unit test in spec/api-desktop-capturer-spec.js that verifies
that the returned thumbails are of type NativeImage and empty,
when the user disable fetching thumbnails.

notes: Can disable fetching the thumbnails for the DesktopCapturer.

https://github.com/electron/electron/issues/14872
2019-02-13 10:27:42 -08:00
Nitish Sakhawalkar
3dfef4a376 chore: Add new webFrame IsolatedWorldInfo API and deprecate (#16801)
* chore: Add new webFrame IsolatedWorldInfo API and deprecate

* Flag deprecated methods in documentation

* address comments

* Address review comments

* remove unused variable

* Update based on review
2019-02-13 08:05:28 -10:00
Milan Burda
1f458eb177 feat: promisify debugger.sendCommand() (#16861)
* remove duplicate entry for desktopCapturer.getSources

* feat: promisify debugger.sendCommand
2019-02-13 07:23:53 -10:00
Roller Bot
ee4c9aa3d0 chore: bump chromium in DEPS to 72.0.3626.110 (#16924) 2019-02-13 07:20:26 -10:00
Samuel Maddock
8f6a543398 feat: add chrome.runtime.getManifest (#16891)
* feat: add chrome.runtime.getManifest

* Add test for chrome.runtime.getManifest

* Use IPC utils for getManifest internals
2019-02-13 07:16:12 -10:00
John Kleinschmidt
46f818b0c3 feat: add file preview for GTK file picker (#16447) 2019-02-13 06:52:14 -10:00
Samuel Attard
c363eed543 chore: suppress output of npm_action unless it fails (#16888) 2019-02-12 21:32:47 -08:00
Roller Bot
6385608f7f chore: bump chromium in DEPS to 72.0.3626.108 (#16899) 2019-02-12 21:31:52 -08:00
Robo
1ed7b1c76d chore: remove obsolete v8 patches (#16910)
* patches/common/v8/disable-warning-win.patch
  added in https://github.com/electron/libchromiumcontent/pull/483
* patches/common/v8/ostreams.patch
  added in https://github.com/electron/libchromiumcontent/pull/258
2019-02-12 21:31:08 -08:00
Jeremy Apthorp
8d09219533 chore: 'breaking change' in PR body overrides commit type in relnotes (#16911) 2019-02-12 21:30:39 -08:00
Shelley Vohr
ca83d36426 feat: promisify app.dock.show() (#16904)
* feat: promisify app.dock.show

* add a spec
2019-02-12 21:06:33 -08:00
Samuel Attard
cd9bf72ee8 build: ensure that the uploaded symbol path is correct for our symbol (#16908)
server
2019-02-12 14:10:24 -08:00
Shelley Vohr
cfba59929a fix: backport patch to sync exposed crypto (#16822)
* fix: backport patch to sync exposed crypto

* add two new specs

* fix iv length

* fix formatting
2019-02-12 11:57:11 -08:00
Robo
5478cc7e8e chore: fix lint errors (#16906) 2019-02-13 00:19:47 +05:30
Electron Bot
98b05b8428 Bump v6.0.0-nightly.20190212 2019-02-12 10:09:30 -08:00
Shelley Vohr
bf276ecc69 feat: add new components to Display structure (#16870)
* feat: add new components to Display structure

* add internal property

* expose colorDepth

* add specs
2019-02-12 05:34:42 -10:00
Jeremy Apthorp
5a44cc50cf docs: migration guide for register{StandardSchemes => SchemesAsPrivileged} (#16762)
* docs: migration guide for register{StandardSchemes => SchemesAsPrivileged}

cc @nitsakh

* Update docs/api/protocol.md

Co-Authored-By: nornagon <nornagon@nornagon.net>

* Update docs/api/protocol.md

Co-Authored-By: nornagon <nornagon@nornagon.net>

* Update protocol.md

* Update docs/api/protocol.md

Co-Authored-By: nornagon <nornagon@nornagon.net>
2019-02-12 04:31:53 -10:00
Samuel Attard
01c442de64 refactor: convert more files to typescript (#16820) 2019-02-12 04:22:33 -10:00
Charles Kerr
cfbdc40814 fix: release-notes plays more nicely with clerk (#16887)
Explicitly look not just for Clerk's "notes persisted"
message but also its "no release notes" message.
2019-02-12 04:21:20 -10:00
Robo
83894dc5db ci: fix binaries for chromedriver build on macOS (#16893) 2019-02-12 16:14:52 +05:30
Roller Bot
deb36d5008 chore: bump chromium in DEPS to 72.0.3626.107 (#16869) 2019-02-11 17:56:03 -08:00
Electron Bot
8141a26ba9 Bump v6.0.0-nightly.20190211 2019-02-11 17:40:41 -08:00
Samuel Attard
9deaacb454 Revert "Bump v6.0.0-nightly.20190211"
This reverts commit c92233cbc8.
2019-02-11 14:23:46 -08:00
John Kleinschmidt
6a47089c78 ci: Refactor mksnapshot test so that it doesn't stall. (#16875) 2019-02-11 12:21:00 -10:00
Samuel Attard
7baa218ca9 docs: remove removed autosize attribute (#16884)
Closes #16199

Notes: no-notes
2019-02-11 14:15:15 -08:00
Electron Bot
c92233cbc8 Bump v6.0.0-nightly.20190211 2019-02-11 14:08:24 -08:00
Samuel Attard
20d9f4b2b5 Revert "Bump v6.0.0-nightly.20190211"
This reverts commit dc0be294dd.
2019-02-11 14:05:22 -08:00
Electron Bot
dc0be294dd Bump v6.0.0-nightly.20190211 2019-02-11 13:32:01 -08:00
Shelley Vohr
9dd3338ede chore: revert "Bump v6.0.0-nightly.20190208"
This reverts commit 70042d2597.
2019-02-11 13:22:44 -08:00
Milan Burda
d8ba1278d1 chore: disable the remote module in devtools / chrome extension background scripts (#16866)
* cache isRemoteModuleEnabled

* chore: disable the remote module in devtools / chrome extension background scripts
2019-02-11 10:42:37 -10:00
robertgrzonka
a3cdf46fb6 docs: change of previously wrong added Polish emoji into proper one (#16700)
* Change Polish flag

* Change of previously setuped flag of Monaco to Polish flag

* fix: change flags

* add Indonesian flag at former place
* append Polish flag at the end
2019-02-11 10:41:06 -10:00
Samuel Attard
5301808926 docs: reference the webviewTag option in the webview docs (#16879)
Closes #16773

Notes: Add a reference to the "webviewTag" option in the webview docs
2019-02-11 10:38:36 -10:00
Heilig Benedek
ccc60a1f33 fix: enable autofill popups on mac (#16308)
* feat: enable autofill popups on mac

* fix: make popup positioning better

* fix: don't try to show popup when widget is closing or not visible

* fix: unify conditions

* refactor: use PopupViewCommon from chrome directly

* lint: mark constructor explicit

* fix: use a patch instead of dummy functions to make things compile on Windows

* chore: address review suggestions

* Update atom/browser/ui/cocoa/views_delegate_mac.mm

Co-Authored-By: brenca <benecene@gmail.com>
2019-02-11 09:38:58 -10:00
Milan Burda
36ce3e9546 feat: promisify webContents.printToPDF() (#16795) 2019-02-11 09:20:04 -10:00
Shelley Vohr
3effa6f20c feat: add support for scroll lock accelerator (#16873) 2019-02-11 09:13:13 -10:00
Charles Kerr
d57b9cb47f chore: bump spec dependencies (#16872)
* bump dbus-native dependency

* semver/patch and semver/minor bumps

patch bumps for basic-auth, bluebird, graceful-fs.
minor bumps for chai, mocha-junit-reporter, multiparty, temp, walkdir.

* major bumps: ws, yargs

* sync spec/package-lock.json
2019-02-11 09:12:13 -10:00
Samuel Attard
90ebd8eb12 docs: document how setAsDefaultProtocolClient works in Windows Store (#16874)
Closes #16852
2019-02-11 10:51:46 -08:00
Milan Burda
c77e187742 chore: fix "creates offscreen window with correct size" spec on Mac with Retina display (#16867) 2019-02-11 10:35:46 -08:00
Milan Burda
7a3d220347 refactor: implement Chrome Extension APIs without the remote module (#16686)
* refactor: implement Chrome Extension APIs without the remote module

* remove unused potentiallyRemoteRequire
2019-02-10 10:38:14 -08:00
Shelley Vohr
1898f91620 fix: enable property having no effect on submenus (#16835) 2019-02-08 18:07:08 -08:00
Cheng Zhao
d16b581140 fix: remove memory leak when using webFrame and spell checker (#16770)
* fix: do not create native api::WebFrame in webFrame

When reloading a page without restarting renderer process (for example
sandbox mode), the blink::WebFrame is not destroyed, but api::WebFrame
is always recreated for the new page context. This leaves a leak of
api::WebFrame.

* fix: remove spell checker when page context is released
2019-02-08 13:38:31 -08:00
Milan Burda
3f52e18a38 chore: add menu-will-close comment explaining setTimeout (#16794) 2019-02-08 13:38:03 -08:00
Electron Bot
70042d2597 Bump v6.0.0-nightly.20190208 2019-02-08 13:28:42 -08:00
Jeremy Apthorp
72f3a22ecc docs: reorder crashReporter notes to make more sense (#16825)
the note about reports from child processes on Windows should be next to the code snippet.

Side note: is that code even still necessary?
2019-02-08 13:26:59 -08:00
Shelley Vohr
c80c3c18dc Revert "Bump v6.0.0-nightly.20190207"
This reverts commit c8282efb75.
2019-02-08 13:26:18 -08:00
Samuel Attard
10607f7e86 chore: make crash-reporter specs not use URL module (#16840) 2019-02-08 13:22:07 -08:00
Shelley Vohr
ccf46a57bc fix: display empty menu item for non-visible submenus (#16832)
* fix: display empty menu item for nonvisible submenus

* use Chromium UI string ID
2019-02-08 13:19:01 -08:00
Shelley Vohr
062778c031 fix: don't construct submenu if it's invisible (#16834) 2019-02-08 12:54:39 -08:00
Samuel Attard
833daaa2b2 chore: add helper to wait for a window to load in a remote-safe way (#16837) 2019-02-08 12:26:03 -08:00
Milan Burda
1632c4b837 refactor: implement chrome.i18n.getMessage() without the remote module (#16739)
* refactor: implement chrome.i18n.getMessage() without the remote module

* replace navigator.language with app.getLocale()
2019-02-08 12:07:09 -08:00
Roller Bot
b97f6bd7d4 chore: bump chromium in DEPS to 72.0.3626.102 (#16830) 2019-02-08 10:36:37 -08:00
Samuel Attard
23b84917e0 ci: set MAS_BUILD=true on mas builds (#16824) 2019-02-08 10:12:18 -08:00
Shelley Vohr
e790dbd737 chore: add standalone function deprecation helper (#16782) 2019-02-08 09:50:11 -08:00
Electron Bot
c8282efb75 Bump v6.0.0-nightly.20190207 2019-02-07 14:13:50 -08:00
Julien Isorce
27bd47a333 feat: implement BrowserWindow.moveTop on X11 (#16629)
It was implemented on Mac and Win but not on X11.
Tested on Ubuntu 16.04 and 18.04.

Also added a unit test in spec/api-browser-window-spec.js.
This test BrowserWindow.moveTop verifies that calling moveTop
on a window does not give the focus to this window.

notes: BrowserWindow.moveTop is now available on Linux/x11

https://github.com/electron/electron/issues/12516
2019-02-07 12:48:19 -08:00
Samuel Attard
db11b9b13b fix: restore accidentally removed chrome-extension require (#16819) 2019-02-07 12:38:57 -08:00
Jeremy Apthorp
4989ecc5e0 chore: re-export chromium patches (#16818)
this is the changeset from running import-patches && export-patches. should be idempotent now.
2019-02-07 12:03:25 -08:00
Shelley Vohr
9ebba76c03 chore: improve existing error preservation in promisify (#16815)
This PR better preserves existing behavior in `deprecate.promisify()` in the cases where the promise fails. Previously, if a callback was only called with `data` instead of `err, data` and the promise was rejected, `data` would be populated with `err`, which could be confusing to users. This makes it such that `err` is called back on promise rejection if a callback is called with `err, data` a la Node.js.
2019-02-07 10:25:20 -08:00
Samuel Attard
4f8ebafa97 chore: dont log 100000000 chars of URL (#16800) 2019-02-07 08:50:47 -08:00
Shelley Vohr
29501dbd01 Revert "Bump v6.0.0-nightly.20190206"
This reverts commit e8608c2dbd.
2019-02-06 18:23:14 -08:00
Electron Bot
acabf6f5ab Bump v6.0.0-nightly.20190206 2019-02-06 16:52:57 -08:00
Shelley Vohr
c6fc5a23fc Revert "build: hack around GitHub upload API failure / flake (#16663)" (#16802)
This reverts commit ab503c7e43.
2019-02-06 16:51:45 -08:00
Shelley Vohr
c8a1231ad7 Revert "Bump v6.0.0-nightly.20190206"
This reverts commit 2d1438456b.
2019-02-06 16:23:08 -08:00
Jeremy Apthorp
6d68026c6c chore: fix ts config to not complain about extraneous files (#16790) 2019-02-06 15:46:10 -08:00
Electron Bot
2d1438456b Bump v6.0.0-nightly.20190206 2019-02-06 15:11:34 -08:00
Roller Bot
dd5264b4d1 chore: bump chromium in DEPS to 72.0.3626.99 (#16779) 2019-02-06 14:50:58 -08:00
Electron Bot
e8608c2dbd Bump v6.0.0-nightly.20190206 2019-02-06 14:43:32 -08:00
Shelley Vohr
a569dad8c5 build: remove non-arm vstsJobs (#16793) 2019-02-06 13:36:17 -08:00
Samuel Attard
17c240a639 ci: make macOS CI faster (#16766)
* ci: cache brew update result

* ci: checkout and sync the macOS build on a linux machine for speed
2019-02-06 13:16:11 -08:00
Samuel Attard
fc06458038 ci: run lint on CircleCI (#16791) 2019-02-06 12:53:25 -08:00
Shelley Vohr
84eef16755 chore: depend on mojo audio and video in BUILD.gn (#16785) 2019-02-06 11:03:39 -08:00
pol
c76459738e docs: fix security doc url check (#16775) 2019-02-06 10:43:58 -08:00
Gilbert Emerson
76d919fff5 docs: added webContents.getType() method (#16767)
* docs: added webContents.getType() method

* docs: add enumeration of return value for webContents.getType()

* docs: getType() in WebContents should be class method not module method
2019-02-06 10:42:34 -08:00
Samuel Attard
26df9992cf build: use typescript for internal Electron JS code (#16441) 2019-02-06 10:27:20 -08:00
Shelley Vohr
858781ba83 feat: allow Menu.buildFromTemplate() to accept MenuItems (#16697)
* feat: allow Menu.buildFromTemplate to accept MenuItems

* add another spec

* fix linter error

* add submenu spec
2019-02-06 10:04:40 -08:00
Milan Burda
4211a9c69f refactor: use ipcRendererUtils.invokeSync / ipcMainUtils.handleSync (#16759) 2019-02-06 09:53:28 -08:00
Jeremy Apthorp
b7d8234a86 docs: add some troubleshooting info related to win_delay_load_hook (#16764)
* docs: add some troubleshooting info related to win_delay_load_hook

* appease lint
2019-02-06 08:29:58 -08:00
Cheng Zhao
d53b51607c fix: do not increase ref-counting in wrong thread (#16738) 2019-02-06 18:22:02 +09:00
Heilig Benedek
ff461d9d26 fix: make getUserMedia APIs work again on C72+ (#16763)
* fix: resolve macos check for video and audio capture devices

* fix: resolve a minor compilation error
2019-02-05 21:25:42 -08:00
Jeremy Apthorp
b7afec0743 docs: improve app.commandLine documentation (#16757) 2019-02-05 16:22:25 -08:00
Shelley Vohr
8946cfd4f1 chore: fix dependency vulnerabilities (#16756) 2019-02-05 15:19:55 -08:00
Shelley Vohr
793d6c3691 chore: remove release notes semantic PR map (#16758) 2019-02-05 15:19:26 -08:00
Samuel Attard
b29e8d18a8 chore: auto-format GN and python files in our precommit (#16722)
* chore: auto-format GN files in our precommit

* chore: update python linting errors and auto-lint python files

* chore: add trick for CHROMIUM_BUILDTOOLS_PATH

* chore: apply suggestions from code review

Co-Authored-By: MarshallOfSound <samuel.r.attard@gmail.com>
2019-02-05 13:54:45 -08:00
Milan Burda
6d674eebb1 refactor: crashReporterInit (#16729) 2019-02-05 12:56:44 -08:00
Roller Bot
c486ab207a chore: bump chromium in DEPS to 72.0.3626.94 (#16745) 2019-02-05 12:17:12 -08:00
Samuel Attard
b202ad1e24 refactor: remove js2asar.py and port logic to JS in more readable / GN-style way (#16718)
* refactor: remove js2asar.py and port logic to JS in more readable / GN-style way

* refactor: further clean up ASAR impl, add new node_action GN template
2019-02-05 12:10:15 -08:00
Samuel Attard
8582325e85 build: ensure index.json is actually valid JSON before uploading (#16518)
* build: ensure index.json is actually valid JSON before uploading

* chore: fix py linting for validation of index.json
2019-02-05 11:36:31 -08:00
Jeremy Apthorp
9b7eb0eecb chore: update issue template, comment out instructions (#16721) 2019-02-05 10:10:24 -08:00
Shelley Vohr
e098d08728 docs: we shouldn't promisify net apis (#16736) 2019-02-04 22:25:59 -08:00
Shelley Vohr
f303caa87c refactor: remove ServiceWorker APIs from WebContents (#16717) 2019-02-04 22:22:46 -08:00
Roller Bot
3aa8ec0818 chore: bump chromium in DEPS to 72.0.3626.90 (#16710) 2019-02-04 16:25:53 -08:00
Cheng Zhao
758d709c7a fix: crash when calling setProgressBar on macOS (#16374)
* fix: correctly check whether dock has progress bar

* fix: do not leak memory when setting dockTile
2019-02-04 15:59:06 -08:00
Shelley Vohr
698d348168 feat: support capslock and numlock as accelerators (#16719)
* feat: support capslock as accelerator

* also add numlock
2019-02-04 15:54:59 -08:00
Shelley Vohr
f142aae9eb chore: remove unused variable in removeWindow (#16715) 2019-02-04 15:00:39 -08:00
Shelley Vohr
a9991f5451 chore: fix falsy comments edge case in release notes (#16720) 2019-02-04 14:57:38 -08:00
Samuel Attard
af64140100 refactor: enforce naming of ipcMainInternal (#16689) 2019-02-04 14:49:53 -08:00
JohanG2012
cacb56b103 Add missing let (#15746) 2019-02-04 11:02:01 -08:00
Birunthan Mohanathas
24f1eac84f docs: Recommend use of callback with dialog.showSaveDialog (#16649)
See #14606.

Notes: no-notes
2019-02-03 23:56:51 -08:00
John Kleinschmidt
0a047194b6 ci: move mac release tests to nightly cron job (#16685) 2019-02-01 15:07:23 -05:00
Milan Burda
7dc565fc2e refactor: implement inspector APIs without the remote module (#16607) 2019-02-01 19:56:46 +01:00
michtsu
392458b252 Add devtools API to inspect shared worker. (#16615) 2019-02-01 10:44:24 -08:00
Charles Kerr
efe52f66e4 fix: show proper clerk notes in release notes script (#16659)
* fix: Note detection in PR

* fix: 'BREAKING CHANGE' detection in PR body

* fix: when to include PRs that landed in other branches too

* fix: when available, use clerk's notes
2019-02-01 10:31:03 -06:00
Xinayu
52952f7d51 Update menu.md (#16670) 2019-02-01 08:28:28 -08:00
Shelley Vohr
bae09643c1 docs: fix referrer typedef in OnCompletedDetails (#16661) 2019-02-01 07:54:31 -08:00
Cheng Zhao
31c7ed9b8c fix: shutdown after message loop is ready (#16671) 2019-02-01 10:21:49 -05:00
Samuel Attard
ab503c7e43 build: hack around GitHub upload API failure / flake (#16663) 2019-01-31 15:21:41 -08:00
Shelley Vohr
c8c1be7ae5 feat: add window removeMenu() method (#16570)
* feat: add window removeMenu() method

* chore: remove original method from docs and code

* retain backwards compatibility
2019-01-31 10:58:23 -08:00
John Kleinschmidt
2f35c98e76 ci: build mac on CircleCI (#16552) 2019-01-31 12:59:32 -05:00
John Kleinschmidt
d71f1fb30c ci: Run Windows Electron tests first to show those failures first (#16610)
* Run electron tests first to show those failures first

Enable logging on CI

* disable failing tests on Windows 32 bit

* Temporarily disable testing mksnapshot as that seems to hang
2019-01-31 12:39:05 -05:00
Birunthan Mohanathas
6c77c220f7 chore: Fix typo in AtomDownloadManagerDelegate::OnDownloadSaveDialogDone (#16646)
I believe the existing code was fine, but better be safe than sorry.
This typo was introduced in #16612.
2019-01-31 20:18:20 +09:00
Charles Kerr
76dcbcd6ea chore: fix 'browserView' typo (#16621) 2019-01-30 21:07:08 -08:00
Shelley Vohr
ba57e1d991 feat: promisify contentTracing recording APIs (#16584)
* feat: promisify contentTracing.startRecording()

* feat: promisify contentTracing.stopRecording()

* test: convert specs for new promisified apis

* chore: deprecate and ensure legacy tests work
2019-01-30 18:53:55 -08:00
Heilig Benedek
cbb5164cc8 fix: improve the way frameless windows are handled on Windows (#16596)
* fix: improve the way frameless windows are handled on Windows

* tidy up code

* fix: return nullAcceleratedWidget instead of nullptr

* fix: format, use reinterpret cast
2019-01-31 11:19:47 +09:00
Vladimir
49ec7e1582 feat: flexible autoresize for BrowserViews (#16184)
* feat: flexible autoresize for BrowserViews

* fix: change to static_cast

* Slight format code
2019-01-31 11:07:19 +09:00
Birunthan Mohanathas
927aac306f fix: use async save dialog for anchor download attribute (#16612) 2019-01-31 11:06:55 +09:00
Nitish Sakhawalkar
bd4e14dcee fix: update docs for protocol API (#16601)
* fix: update docs for protocol API

* upddate source for new attribute name

* update electron-typescript-definitions package
2019-01-30 12:54:18 -08:00
Shelley Vohr
641b47f384 feat: promisify contentTracing.getCategories() (#16583)
* feat: promisify contentTracing.getCategories()

* deprecate contentTracing/getCategories
2019-01-30 12:39:55 -08:00
Jeremy Apthorp
9ed89ace97 fix: expose aes-cfb ciphers from boringssl (#16573)
Ref #16195
2019-01-30 10:34:14 -08:00
Shelley Vohr
c7677b23e6 fix: enable and update osr (#16517)
* fix: enable OSR

* fix some macos errors

* fix client reset not in guard

* fix things not rendering on mac
2019-01-30 09:33:32 -08:00
Shelley Vohr
6e131f2121 docs: remove nonexistent contentTracing methods (#16597) 2019-01-30 08:33:56 -08:00
Milan Burda
dfcee48f81 fix: don't forward IPC filtering events to app for dev-tools and extensions (#16565) 2019-01-30 08:20:03 -08:00
Milan Burda
56c6a51cd2 chore: add miniak to troppers (#16590) 2019-01-29 22:21:38 -08:00
SamvelRaja
8af532ba98 feat: added process.electron to get the electron version in forked process (#16450) 2019-01-29 22:13:18 -08:00
Michael Hamilton
8da91523d0 Fixed a little typo (#16550) 2019-01-29 15:58:01 -08:00
Cheng Zhao
323b688ab8 fix: check the root window in MenuBar::SetPanelFocus (#16581) 2019-01-29 13:21:32 -08:00
Nitish Sakhawalkar
940c4c0787 feat: move webFrame scheme privilege methods to main process (#16416)
* chore: deprecate webFrame.registerURLSchemeAsPrivileged

* Add register schemes protocol api

* update branch to enable browser process API

* Revert deprecation changes

* Fetch API support

* Updated api to take an array, still working on tests

* Update tests

* Remove web frame API

* Minor changes

* update scheme registrations on browser and renderer process

* fix: enable ses.getBlobData spec

* Update breaking changes doc
2019-01-29 16:11:01 +09:00
Jeremy Apthorp
257de6a963 feat: add ELECTRON_DISABLE_SANDBOX env var (#16576) 2019-01-29 15:30:17 +09:00
Milan Burda
fa5442f211 fix: execute session preload scripts in sandboxed renderers (#16538) 2019-01-29 10:16:46 +09:00
Shelley Vohr
a25f82c91f fix: reject with error when url not loaded (#16571)
* fix: reject with error when url not loaded

* improve descriptive spec naming
2019-01-28 14:42:36 -08:00
Jeremy Apthorp
138ba53511 fix: expose ripemd160 hash from boringssl (#16454)
Ref #16195
2019-01-28 13:36:51 -08:00
Shelley Vohr
d105dcc0d3 feat: promisify webContents.hasServiceWorker() (#16535)
* feat: promisify contents.hasServiceWorker()

* spec: add initial test for hasServiceWorker()
2019-01-26 10:23:16 -08:00
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
Jeremy Apthorp
63bf370cc0 fix: registerStreamProtocol callback with large chunks (#16532) 2019-01-25 10:57:26 -08:00
Charles Kerr
8396a2d504 feat: promisify cookies api (#16464)
* feat: promisify the Cookie API

* chore: update specs to test promisified cookies

* chore: add deprecate wrapper for cookie callback API

* docs: update docs to cookie promise changes

* chore: remove redundant namespace use

* docs: improve cookie example

* docs: restore docs for cookie callback API

* chore: restore cookie callback tests

* fix: syntax of cookie promise return types
2019-01-25 12:11:35 -06:00
Milan Burda
e2516dc808 docs: cancel is optional in OnHeadersReceivedResponse (#16506) 2019-01-25 09:41:21 -05:00
Shahzad Lone
74c29fb610 perf: and refactor: Code Scope + Minor Performance Improvement. (#16467)
* We know result's size will be same as app_metrics_'s size so optimize the vector.

Reserving a vector to save on reallocation cost.

* Narrow scopes of variables to avoid error and optimize them.

Made two vectors scope narrower and reserved them because we know the size in advance. This helps save on allocation costs.

* fix spacing
2019-01-25 09:39:32 -05:00
Sofia Nguy
b66b5561ee Electron timelines (#16496) 2019-01-24 16:40:44 -06: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
fef262f829 fix: check process.isMainFrame in sandboxed_renderer/init.js (#16500) 2019-01-24 10:53:16 -08:00
Nitish Sakhawalkar
e6952e2a16 fix: correctly destroy spellcheck client (#16448)
* fix: Destroy spellcheck client

* Address review comments
2019-01-24 08:18:54 -08:00
Tomas Rycl
1db4dd68a7 Troubleshooting for Windows Driver Kit (#16405) 2019-01-23 12:34:18 -08:00
Electron Bot
90151879cc Bump v6.0.0-nightly.20190123 2019-01-23 11:49:22 -08:00
Shelley Vohr
f431ce4971 build: fix individual asset downloading in release script (#16493)
* Revert "build: fix release asset download for now (#16486)"

This reverts commit 7df531bc4e.

* build: clean up asset downloading
2019-01-23 11:47:36 -08:00
Jeremy Apthorp
ad3ea6ec53 ci: re-enable logging on CI (#16257) 2019-01-23 11:28:34 -08:00
Milan Burda
cc90919384 refactor: pass internal flag via IPC message struct for consistency (#16490) 2019-01-23 08:24:57 -08:00
Alexey Kuzmin
0a5adfe365 build: fail a build if some hooks don't succeed (#16369) 2019-01-23 11:31:14 +01:00
Jeremy Apthorp
fd8b9450ee test: untangle a chromium-spec test (#16456) 2019-01-22 13:26:32 -08:00
John Kleinschmidt
34ac68c4a8 ci: Update build timeouts (#16492)
* Update timeout for native_mksnapshot and use bigger machines

* Revert "build: temporarily disable arm to unblock nightlies (#16479)"

This reverts commit 51961fccfa.
2019-01-22 16:14:01 -05:00
Samuel Attard
f3e30c7ae3 Merge remote-tracking branch 'origin/chromium-upgrade/72' 2019-01-22 12:01:18 -08:00
Samuel Attard
0b85fb7ea2 Revert "feat: upgrade to Chromium 72.0.3626.52 (#16334)"
This reverts commit 1918e76913.
2019-01-22 12:01:04 -08:00
Samuel Attard
58a6fe13d6 feat: preloads and nodeIntegration in iframes (#16425)
* feat: add support for node / preloads in subframes

This feature has delibrately been built / implemented in such a way
that it has minimum impact on existing apps / code-paths.
Without enabling the new "nodeSupportInSubFrames" option basically none of this
new code will be hit.

The things that I believe need extra scrutiny are:

* Introduction of `event.reply` for IPC events and usage of `event.reply` instead of `event.sender.send()`
* Usage of `node::FreeEnvironment(env)` when the new option is enabled in order to avoid memory leaks.  I have tested this quite a bit and haven't managed to cause a crash but it is still feature flagged behind the "nodeSupportInSubFrames" flag to avoid potential impact.

Closes #10569
Closes #10401
Closes #11868
Closes #12505
Closes #14035

* feat: add support preloads in subframes for sandboxed renderers

* spec: add tests for new nodeSupportInSubFrames option

* spec: fix specs for .reply and ._replyInternal for internal messages

* chore: revert change to use flag instead of environment set size

* chore: clean up subframe impl

* chore: apply suggestions from code review

Co-Authored-By: MarshallOfSound <samuel.r.attard@gmail.com>

* chore: clean up reply usage

* chore: fix TS docs generation

* chore: cleanup after rebase

* chore: rename wrap to add in event fns
2019-01-22 11:24:46 -08:00
Jeremy Apthorp
92b9525cfd feat: enable mixed-sandbox mode by default (#15894) 2019-01-22 10:44:28 -08:00
Jeremy Apthorp
1918e76913 feat: upgrade to Chromium 72.0.3626.52 (#16334) 2019-01-22 10:39:32 -08:00
Samuel Attard
ff9b23ebe5 fix: dont run window-setup on chrome:// protocol, introduced in b965e54efc (#16489) 2019-01-22 10:32:18 -08:00
John Kleinschmidt
c0f6a44e39 Try longer timeout on electron build 2019-01-22 10:32:07 -08:00
Cheng Zhao
3828e2a53a backport patch to fix arm64 build of swiftshader 2019-01-22 10:32:07 -08:00
Cheng Zhao
be69192a61 backport patch to fix compilation error in test 2019-01-22 10:32:07 -08:00
Jeremy Apthorp
8c1b5311fd robustify async webview test 2019-01-22 10:32:06 -08:00
Jeremy Apthorp
6d4480ea6b feat: allow setting autoplayPolicy in webPreferences (#16396) 2019-01-22 10:32:06 -08:00
Cheng Zhao
1fe4b3fa28 fix: add patch to disable dcheck in inter_process_time_ticks_converter.cc
I'm seeing crashes on Windows when runnings tests for serviceWorker, the
reason why the dcheck failed is unclear.
2019-01-22 10:32:06 -08:00
Jeremy Apthorp
f115376595 fix: remove pretarget handler before window destruction 2019-01-22 10:32:06 -08:00
deepak1556
8122dd2c33 backport v8 patch for linker issue in windows testing builds 2019-01-22 10:32:06 -08:00
deepak1556
d2c0f9f754 Implicitly bypass localhost when proxying requests.
https://chromium-review.googlesource.com/c/chromium/src/+/1303626
2019-01-22 10:32:06 -08:00
Cheng Zhao
03d499bf34 fix: detach webview instead of destroying it
Chromium no longer cleans up everything when a guest webcontents is
destroyed, we have to force detaching it and let Chromium destroy everything.
2019-01-22 10:32:06 -08:00
Jeremy Apthorp
5e043812ef fix HandleKeyboardEvent merge failure 2019-01-22 10:32:06 -08:00
Jeremy Apthorp
7764ca7209 add missing include for l10n_util.h on win 2019-01-22 10:32:06 -08:00
Jeremy Apthorp
ded316cd5e wait for window to be focused in openDevTools test 2019-01-22 10:32:06 -08:00
Jeremy Apthorp
4b45a5fc6d roll node
to pick up libuv compile fix on windows
2019-01-22 10:32:06 -08:00
Jeremy Apthorp
078d518e36 add missing //components/feature_engagement dep needed for color_chooser_aura 2019-01-22 10:32:06 -08:00
Jeremy Apthorp
212d858bf4 set autoplay policy to no-user-gesture-required by default 2019-01-22 10:32:06 -08:00
Jeremy Apthorp
3faf2480e0 update dom storage quota patch
https://chromium-review.googlesource.com/c/chromium/src/+/1166218/
2019-01-22 10:32:06 -08:00
Jeremy Apthorp
55d5b02f87 include glib.h in atom_main_delegate
it was complaining about 'undeclared identifier 'TRUE''
2019-01-22 10:32:06 -08:00
Jeremy Apthorp
8fa33ba120 disable visibilitychange tests as the functionality is broken upstream
https://crbug.com/920839
2019-01-22 10:32:06 -08:00
deepak1556
826f1cb90c Move the base/sys_info* files to base/system/
https://chromium-review.googlesource.com/c/chromium/src/+/1327441
2019-01-22 10:32:05 -08:00
deepak1556
ed5a865efb Update GetAccessibleName() in view::ImageView and view::Button
https://chromium-review.googlesource.com/c/chromium/src/+/1256308
2019-01-22 10:32:05 -08:00
deepak1556
90b6d13714 Remove menu_marker from MenuButton.
https://chromium-review.googlesource.com/c/chromium/src/+/1324375
2019-01-22 10:32:05 -08:00
deepak1556
85333a5974 Move ViewsDelegate::NotifyAccessibilityEvent to an observer pattern
https://chromium-review.googlesource.com/c/chromium/src/+/1352265
2019-01-22 10:32:05 -08:00
deepak1556
5f941c5180 Remove CR_DEFINE_STATIC_LOCAL
https://bugs.chromium.org/p/chromium/issues/detail?id=893317
2019-01-22 10:32:05 -08:00
deepak1556
06a5ade3c6 fixup! Use strong ownership for attached inner WebContents 2019-01-22 10:32:05 -08:00
deepak1556
374406375b Add interface and Mac implementation for responsiveness::NativeEventObserver.
https://chromium-review.googlesource.com/c/chromium/src/+/1157235/
2019-01-22 10:32:05 -08:00
deepak1556
4089620729 fix: Initialize resource bundle for the browser process earlier 2019-01-22 10:32:05 -08:00
deepak1556
1de0152b6b chore: fix gn format error 2019-01-22 10:32:05 -08:00
Jeremy Apthorp
94246d428b resource_coordinator_parts stub in BrowserProcessImpl
https://chromium-review.googlesource.com/c/1324134
2019-01-22 10:32:05 -08:00
Jeremy Apthorp
3b88dd6ef7 tts was migrated to content
https://chromium-review.googlesource.com/c/1341154

https://chromium-review.googlesource.com/c/1351806

https://chromium-review.googlesource.com/c/1352055
2019-01-22 10:32:05 -08:00
Jeremy Apthorp
2cbf3080d0 Make webkitRelativePath interoperable
https://chromium-review.googlesource.com/c/1325579
2019-01-22 10:32:05 -08:00
Jeremy Apthorp
d0621db8fd Remove ResourceContext::GetRequestContext since it's no longer used.
https://chromium-review.googlesource.com/c/1352035
2019-01-22 10:32:05 -08:00
Jeremy Apthorp
6f9ff39728 CORS -> Cors
https://chromium-review.googlesource.com/c/1333018
2019-01-22 10:32:05 -08:00
Jeremy Apthorp
a64cf5514f move pdf_compositor off ServiceContext/ServiceTest
https://chromium-review.googlesource.com/c/1343506
2019-01-22 10:32:05 -08:00
Jeremy Apthorp
93fbb6c092 remove name parameter from AllowIndexedDB
https://chromium-review.googlesource.com/c/1306914
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
600c3f2c2f StoragePartition::ClearData no longer takes an OriginMatcher
https://chromium-review.googlesource.com/c/1162172
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
deff96a1b0 NativeWidgetMac::CreateNSWindow params changed
https://chromium-review.googlesource.com/c/1295251
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
b03daaebe4 ChildProcessData.{GetHandle() => GetProcess().GetHandle()}
https://chromium-review.googlesource.com/c/1298345
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
4ddd337a64 CurrentProcessInfo::CreationTime -> Process::Current().CreationTime()
https://chromium-review.googlesource.com/c/1280642
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
a64a0fa88e remove ipc/struct_destructor_macros.h
https://chromium-review.googlesource.com/c/1261082
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
c0cf065c1a REVIEW: Use strong ownership for attached inner WebContents
https://chromium-review.googlesource.com/c/1301843
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
96b2623887 replace base::AssertBlockingAllowed with base::ScopedBlockingCall
https://chromium-review.googlesource.com/c/1278540
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
e0d277e667 CopyNSImage was removed
https://chromium-review.googlesource.com/c/1333876
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
485bbd9ccb ContentRulesetService -> RulesetService
https://chromium-review.googlesource.com/c/1294299
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
d228bdfb9e gfx::NativeView is no longer NSView on mac
https://chromium-review.googlesource.com/c/1270343
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
70887ae21a extra parameters to BrowserClient::HandleExternalProtocol
https://chromium-review.googlesource.com/c/1318976
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
96f9611cf4 GetCachePath replaced with GetGeneratedCodeCacheSettings
https://chromium-review.googlesource.com/c/1301973

https://chromium-review.googlesource.com/c/chromium/src/+/1213093
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
ef80cc3d56 base/sys_info.h -> base/system/sys_info.h
https://chromium-review.googlesource.com/c/1327441
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
0d9de7deaf blink::WebReferrerPolicy -> network::mojom::ReferrerPolicy
https://chromium-review.googlesource.com/c/chromium/src/+/1212345
2019-01-22 10:32:04 -08:00
Jeremy Apthorp
96ca070c3a less const in WebContents
https://chromium-review.googlesource.com/c/1349466
2019-01-22 10:32:03 -08:00
Jeremy Apthorp
8948e27ced ScopedNestableTaskAllower in MessageLoopCurrent
https://chromium-review.googlesource.com/c/chromium/src/+/1020288
2019-01-22 10:32:03 -08:00
Jeremy Apthorp
30e5e993c1 HandleKeyboardEvent returns bool
https://chromium-review.googlesource.com/c/chromium/src/+/1262404
2019-01-22 10:32:03 -08:00
Jeremy Apthorp
fd7b49b32b remove OnAreExperimentalCookieFeaturesEnabled
https://chromium-review.googlesource.com/c/1287209
2019-01-22 10:32:03 -08:00
Jeremy Apthorp
d36a6de25c OnCanEnablePrivacyMode -> OnForcePrivacyMode
https://chromium-review.googlesource.com/c/1343051
2019-01-22 10:32:03 -08:00
Jeremy Apthorp
d01db5a656 migrate to non-deprecated v8 functions
https://bugs.chromium.org/p/v8/issues/detail?id=8238

https://bugs.chromium.org/p/v8/issues/detail?id=7295

https://chromium-review.googlesource.com/c/v8/v8/+/1352273
2019-01-22 10:32:03 -08:00
Jeremy Apthorp
7d5cd2051a update boringssl patches 2019-01-22 10:32:03 -08:00
Jeremy Apthorp
95ed3238be update v8 patches 2019-01-22 10:32:03 -08:00
Jeremy Apthorp
02e41b41b2 roll Chrome to 72.0.3626.52 and update patches 2019-01-22 10:32:03 -08:00
Electron Bot
cd25ddeb06 Bump v5.0.0-nightly.20190122 2019-01-22 08:55:08 -08:00
Shelley Vohr
7df531bc4e build: fix release asset download for now (#16486) 2019-01-22 08:53:52 -08:00
Milan Burda
6cba2c50a2 feat: make ipc-message and ipc-message-sync events public (#16468) 2019-01-22 08:47:58 -08:00
Milan Burda
dbc5f67dca docs: fix web-request.md listener signatures in electron.d.ts (#16485) 2019-01-22 08:46:40 -08:00
Milan Burda
7d71ad6f91 fix: takeHeapSnapshot() using public IPC channel for internal implementation (#16480) 2019-01-22 17:32:24 +09:00
Milan Burda
0e27f133d7 refactor: delete atom_api_renderer_ipc.h (#16481) 2019-01-21 22:31:37 -08:00
Milan Burda
b965e54efc fix: <webview> not working with contextIsolation + sandbox (#16469) 2019-01-22 10:08:16 +09:00
Matthew Leffler
a9ac75c1f9 docs: Fix TouchBar API example (#16482) 2019-01-21 17:07:47 -08:00
Electron Bot
033efdcaa1 Bump v5.0.0-nightly.20190121 2019-01-21 15:28:16 -08:00
Shelley Vohr
51961fccfa build: temporarily disable arm to unblock nightlies (#16479) 2019-01-21 15:22:56 -08:00
Cheng Zhao
ac65f38842 fix: prevent double-destroy of window (#16472) 2019-01-21 14:56:30 -08:00
Samuel Attard
0b0679e065 build: auto-fix linting issues on commit (#16466)
* build: auto-fix formatting during commit

* use lint-staged as precommit hook to autofix issues
2019-01-21 14:46:32 -08:00
Shelley Vohr
3ca87d205f feat: make zoomLevel/zoomFactor sync (#16410)
* feat: make zoomLevel/zoomFactor sync

* update ts defs dep
2019-01-20 23:40:27 -08:00
Electron Bot
dacf7f8bdc Revert "Bump v5.0.0-nightly.20190119"
This reverts commit 2cca0f9bb7.
2019-01-19 21:14:06 -08:00
Electron Bot
2cca0f9bb7 Bump v5.0.0-nightly.20190119 2019-01-19 19:52:39 -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
Electron Bot
902c239fdf Revert "Bump v5.0.0-nightly.20190118"
This reverts commit 9e6726f304.
2019-01-18 15:21:39 -08:00
Electron Bot
9e6726f304 Bump v5.0.0-nightly.20190118 2019-01-18 15:21:39 -08:00
Electron Bot
329d45562b Revert "Bump v5.0.0-nightly.20190118"
This reverts commit 83b44b735f.
2019-01-18 14:12:13 -08:00
Electron Bot
83b44b735f Bump v5.0.0-nightly.20190118 2019-01-18 14:12:01 -08:00
Shelley Vohr
3417c42bfd chore: always try to nuke tags (#16451) 2019-01-18 14:00:15 -08:00
Electron Bot
7f4064af16 Revert "Bump v5.0.0-nightly.20190118"
This reverts commit ace11f9bc8.
2019-01-18 13:42:51 -08:00
Electron Bot
ace11f9bc8 Bump v5.0.0-nightly.20190118 2019-01-18 13:42:51 -08:00
Electron Bot
cd91440e47 Revert "Bump v5.0.0-nightly.20190118"
This reverts commit 5e5c71e1d7.
2019-01-18 12:46:16 -08:00
Electron Bot
5e5c71e1d7 Bump v5.0.0-nightly.20190118 2019-01-18 12:32:29 -08:00
Milan Burda
7d4a1223fd feat: add preload-error event to webContents (#16411) 2019-01-18 12:03:43 +01:00
Jeremy Apthorp
98d0daa2fd chore: remove unused osfhandle hack (#16305) 2019-01-17 15:58:47 -08:00
Shelley Vohr
f105c84349 test: ensure legacy callback functions work (#16436)
* test: test legacy callback functions

* add TODO removal comments

* fix callback spec
2019-01-17 14:17:16 -08:00
Shelley Vohr
720197f9c8 fix: correctly handle IPC for promise-based methods (#16433) 2019-01-17 12:08:54 -08:00
Milan Burda
4d0b2ac9be docs: fix promisification.md formatting (#16434) 2019-01-17 09:30:32 -08:00
Shelley Vohr
1f2b02c18f feat: promisify protocol.isProtocolHandled() (#16423)
* feat: promisify protocol

* fix base::Bind and specs

* update documentation

* make callback-compatible

* async awaitify tests
2019-01-17 09:05:10 -08:00
Electron Bot
32d98851bc Revert "Bump v5.0.0-nightly.20190116"
This reverts commit 82fc099602.
2019-01-16 11:28:09 -08:00
Electron Bot
82fc099602 Bump v5.0.0-nightly.20190116 2019-01-16 11:04:22 -08:00
SamvelRaja
34c1727cb3 docs: fix typo in build instructions for windows (#16414) 2019-01-15 21:58:39 -08:00
Milan Burda
23d44e322d feat: use default-app behavior in packaged apps (#16310)
Unify the behavior between default app and packaged apps:
- create default application menu unless the app has one
- default window-all-closed handling unless the app handles the event
2019-01-15 21:35:53 +01:00
Shelley Vohr
8e2ab8b20b refactor: promise_util promise creation (#16401)
* refactor: promise_util creation

* enter correct contexts on resolve/reject

* return Local in helper

* set context correctly

* forgot one
2019-01-15 09:54:59 -08:00
Mosh Feu
05755ba202 docs: show the code of adding devtools extension (#16186) 2019-01-15 17:48:21 +09:00
Shelley Vohr
0881fd6397 feat: split openExternal into sync and async (#16176)
* feat: split openExternal into sync and async

* v8::Locker => mate::Locker

* fix: enter js env when resolving promise
2019-01-14 20:35:21 -08:00
Milan Burda
52e257668d fix: windowmenu did not show the window list on macOS (#16387) 2019-01-14 17:27:52 +01:00
Shelley Vohr
df62e78b71 chore: remove unused deps (#16373) 2019-01-12 16:47:09 +01:00
Alex Garbutt
dcb670fa46 fix: emit IPC event in correct context if isolation and sandbox enabled (#16352)
* fix: emit IPC event in correct context if isolation and sandbox enabled

IPC events were not being delivered to renderer processes when both
`contextIsolation` and `sandbox` were enabled. This is because the
`AtomSandboxedRenderFrameObserver` class was incorrectly using the
`MainWorldScriptContext`, rather than conditionally selecting the
context based on if isolation was enabled.

Fixes #11922
2019-01-12 14:19:20 +01:00
Electron Bot
134792a594 Revert "Bump v5.0.0-nightly.20190111"
This reverts commit 71f542d8f6.
2019-01-11 21:40:55 -08:00
Electron Bot
71f542d8f6 Bump v5.0.0-nightly.20190111 2019-01-11 21:18:40 -08:00
Robo
52fe92d02e feat: Upgrade to Chromium 71.0.3578.98 (#15966) 2019-01-11 17:00:43 -08:00
Electron Bot
92ddfd0d4c Revert "Bump v5.0.0-nightly.20190111"
This reverts commit c81c9ee2b4.
2019-01-11 12:35:25 -08:00
Electron Bot
c81c9ee2b4 Bump v5.0.0-nightly.20190111 2019-01-11 11:40:15 -08:00
Shelley Vohr
fc169221be Revert "Bump v5.0.0-nightly.20190111"
This reverts commit c43a61c576.
2019-01-11 11:38:26 -08:00
Electron Bot
c43a61c576 Bump v5.0.0-nightly.20190111 2019-01-11 10:01:46 -08:00
Electron Bot
c4e4f085dd Revert "Bump v5.0.0-nightly.20190111"
This reverts commit 088f936dab.
2019-01-11 09:55:58 -08:00
Electron Bot
088f936dab Bump v5.0.0-nightly.20190111 2019-01-11 09:54:46 -08:00
Shelley Vohr
e2b1394ad1 redo: size -> length (#16370) 2019-01-11 09:53:13 -08:00
Alexey Kuzmin
3cb9aadb80 build: fix the build with enable_run_as_node disabled (#15711) 2019-01-11 08:02:06 -08:00
Shelley Vohr
ca218b6395 test: allow retries for flaky mas loginitem specs (#16347) 2019-01-10 14:15:47 -08:00
Charles Kerr
52852b963a fix: beep on Ubuntu (#16350)
beeps on Linux are made by writing BEL to /dev/console,
which requires elevated permissions on Ubuntu. So if
opening /dev/console fails, fall back to /dev/tty.
2019-01-10 13:43:07 -08:00
Shelley Vohr
d0ae89befa chore: fix tag cleanup (#16353) 2019-01-10 13:42:42 -08:00
Charles Kerr
2acf9ac72f fix: improve release notes (#16343)
* fix: use version name in release notes

* fix: omit previously-released notes

* fix: sniff semantic commit types from PR subjects

instead of only from commit messages

* fix: do not use unrecognized semantic commit types

* chore: do not hardcode Release-Notes comment text

It used to be '<!-- One-line Change Summary Here-->',
it's currently a link to a best-practices page, and
it'll probably change again in the future. Let's just
match on <!--.*--> instead.

* chore: copyedit the help page

* chore: use clerk's OMIT_FROM_RELEASE_NOTES_KEYS

* chore: tweak comments

* chore: rename 'breaks' property as 'breaking'
2019-01-10 14:01:38 -06:00
Milan Burda
102d8fe506 chore: add 'use strict' to default app sources (#16346) 2019-01-10 20:54:34 +01:00
Electron Bot
2ee59cc82c Revert "chore: s/size/length (#16351)"
This reverts commit 03e16ffa57.
2019-01-10 11:04:31 -08:00
Shelley Vohr
03e16ffa57 chore: s/size/length (#16351) 2019-01-10 10:58:23 -08:00
Jeremy Apthorp
782825fc29 fix: return after handling Esc for fullscreen in WebContentsDelegate (#16342) 2019-01-10 11:03:48 -05:00
Electron Bot
0299328521 Bump v5.0.0-nightly.20190110 2019-01-10 07:59:58 -08:00
Milan Burda
eb02a422de feat: add fileMenu / viewMenu / appMenu roles (#16328) 2019-01-10 14:32:03 +01:00
Electron Bot
72af4941f8 Bump v5.0.0-nightly.20190109 2019-01-09 21:43:29 -08:00
Michelle Tilley
744f737cba fix: properly determine if WebContents is offscreen in WebContentsDelegate (#16329) 2019-01-09 09:55:45 -08:00
Shelley Vohr
f72d5a4184 chore: fix electron.d.ts file upload (#16335) 2019-01-08 22:51:49 -08:00
Electron Bot
17d2467932 Revert "Bump v5.0.0-nightly.20190108"
This reverts commit 241baf77f1.
2019-01-08 20:46:56 -08:00
Electron Bot
241baf77f1 Bump v5.0.0-nightly.20190108 2019-01-08 18:11:20 -08:00
Shelley Vohr
b4299a2872 chore: pass dryRun arg correctly (#16333)
* chore: pass dryRun arg correctly

* no log
2019-01-08 18:09:42 -08:00
Electron Bot
45baaeaf2c Revert "Bump v5.0.0-nightly.20190108"
This reverts commit 1fd7a4bfab.
2019-01-08 16:30:25 -08:00
Electron Bot
1fd7a4bfab Bump v5.0.0-nightly.20190108 2019-01-08 16:22:33 -08:00
Shelley Vohr
826063a2f7 chore: github => octokit in release notes (#16332) 2019-01-08 16:20:54 -08:00
Milan Burda
349a3c20ae feat: add additional remote APIs filtering (#16293) 2019-01-08 14:27:56 -08:00
Mark Lee
6436a12d7f docs: fix app.setAppUserModelId link (#16322) 2019-01-08 16:40:57 -05:00
Shelley Vohr
000be5d1d4 chore: refactor scripts for octokit update (#16284)
* chore: refactor scripts for octokit

* update release script

* update more octokit scripts

* cleanup

* remove unecessary refactor

* fixup package lock
2019-01-08 12:05:58 -08:00
Shelley Vohr
434f1368a0 test: add specs to version bump utils (#16315) 2019-01-08 12:04:27 -08:00
Vik Ramanujam
668049a593 Add instructions to get Notifications working on Win 10 Update (#16320)
Fails silently and was frustratingly hard to know why. Hope this save a lot of people some time.
2019-01-08 08:16:30 -08:00
Milan Burda
5c250455ad refactor: pass isWebViewTagEnabled via ELECTRON_BROWSER_SANDBOX_LOAD (#16238) 2019-01-08 10:12:34 +01:00
Shelley Vohr
791d6de8b0 chore: fix json parsing for npm publish (#16318) 2019-01-07 20:37:44 -08:00
Jeremy Apthorp
a3e5173c47 Merge pull request #16203 from electron/alkuzmin/add-external-binaries-config
build: extract external binaries config
2019-01-07 17:37:53 -08:00
Shelley Vohr
b71a5a5955 fix: register accelerator if role has no registerAccelerator (#16309)
* fix: register accelerator if role has no registerAccelerator

* ensure roles[role].registerAccelerator  is defined
2019-01-07 16:01:03 -08:00
Shelley Vohr
30c670bd83 chore: release notes should be an object (#16313) 2019-01-07 16:00:36 -08:00
Electron Bot
596c0a8672 Bump v5.0.0-nightly.20190107 2019-01-07 13:47:13 -08:00
Shelley Vohr
2ac677228d chore: fix pre passing to atom.rc (#16311)
* chore: fix pre passing to versionH

* preTypes => preType
2019-01-07 13:41:07 -08:00
Electron Bot
ff1c90b638 Revert "Bump v5.0.0-nightly.20190107"
This reverts commit 90f23c187f.
2019-01-07 13:14:41 -08:00
Electron Bot
90f23c187f Bump v5.0.0-nightly.20190107 2019-01-07 12:26:08 -08:00
Shelley Vohr
854443a291 chore: trim output of branch correctly (#16307) 2019-01-07 12:24:18 -08:00
Shelley Vohr
9c7f6affc2 Revert "ci: use config version 2.1 on CircleCI (#15665)" (#16304)
This reverts commit 0c46a7a4d9.
2019-01-07 11:59:45 -08:00
Milan Burda
fade3eb679 chore: make "nodeIntegration" and "webviewTag" default to false (#16235) 2019-01-07 22:19:27 +03:00
Electron Bot
cdf4bfa68f Revert "Bump v4.0.0-nightly.20190107"
This reverts commit f8614ab019.
2019-01-07 09:17:17 -08:00
Electron Bot
f8614ab019 Bump v4.0.0-nightly.20190107 2019-01-07 09:17:04 -08:00
Milan Burda
6f117b8e0c feat: add app.commandLine.hasSwitch() / app.commandLine.getSwitchValue() (#16282)
* feat: add app.commandLine.hasSwitch() / app.commandLine.getSwitchValue()

* add more tests

* refactor: move appendSwitch / appendArgument to command_line module

* replace AppendSwitchASCII with AppendSwitchNative

* remove castArgs
2019-01-07 07:48:27 -08:00
Aleksei Kuzmin
dee964e0fe build: extract external binaries config 2019-01-07 10:44:08 +01:00
Keshal Desai
5957ede41a fix: update license year (#16287) 2019-01-05 12:53:20 -08:00
Jeremy Apthorp
959c7a76e9 Merge pull request #16252 from electron/miniak/guest-view-manager
fix: security: improve IPC validation in guest-view-manager
2019-01-04 16:47:27 -08:00
Milan Burda
a0cdcc5f8d security: improve IPC validation in guest-view-manager 2019-01-05 00:06:47 +01:00
Shelley Vohr
9cc3fbabf7 chore: @electron/nightly => electron-nightly (#16273) 2019-01-04 13:48:02 -08:00
Michelle Tilley
3db691d693 chore: add additional logging during asset upload (#16279) 2019-01-04 13:14:41 -08:00
Shelley Vohr
c1ca8476f8 chore: result => result.data (#16274)
* chore: result.draft => result.data.draft

* also result.id
2019-01-04 11:26:14 -08:00
Kilian Valkhof
21d1849723 Update browser-window.md with alpha hex formatting (#16269)
HEX with alpha can be #RRGGBBAA or #AARRGGBB. In Electron it's the latter. It's nice to explicitly state that, so others wont have to try twice like me :).
2019-01-04 10:33:12 -08:00
John Kleinschmidt
50010934d1 docs: Update reference to xcode 8.3.3 (#16267)
* Update reference to xcode

* Update to reflect use of 10.12 SDK
2019-01-04 13:05:12 -05:00
Jeremy Apthorp
849dd0db64 fix: correctly pass hidden-page argument to isolated renderers (#16258) 2019-01-04 08:25:47 -08:00
Shelley Vohr
de0e4735de fix: error if a11y support changed before ready (#16261) 2019-01-04 10:20:06 -05:00
Tyler Saballus
2117524102 Fix typos in app.md (#16260)
Mostly added commas to prepositions that occur in the predicate. There was a misspelling and a few run-on sentences as well though.
2019-01-04 10:18:15 -05:00
Shelley Vohr
876064036d fix: don't register some shortcuts without accessibility (#16125)
Fixed crash on macOS when using globalShortcut for media keys when accessibility access is not granted.
2019-01-03 20:40:17 -08:00
Shelley Vohr
b57046e67d feat: add mac support to systemPrefs.getColor() (#16249) 2019-01-03 16:17:07 -08:00
Shelley Vohr
03892153de feat: expose systemPreferences.getSystemColor() (#16248) 2019-01-03 14:30:38 -08:00
Shelley Vohr
439ba5116f feat: add mac support to systemPrefs.getAccentColor() (#16251)
* feat: add mac support to systemPrefs.getAccentColor()

* note 10.14 retriction
2019-01-03 13:24:55 -08:00
Michelle Tilley
5c378de22f chore: add link to clerk readme to PR checklist (#16253) 2019-01-03 10:59:07 -08:00
Milan Burda
3f1d22759a refactor: use helpers for command-line parsing in renderer/init.js (#16239) 2019-01-03 11:22:34 -05:00
Shelley Vohr
baaeb7cece chore: update deprecated LSGetApplicationForURL (#16180)
* chore: update deprecated LSGetApplicationForURL

* wrap with @available
2019-01-02 15:20:32 -08:00
Samuel Attard
eb8dc6b675 chore: publish nightlies to electron-nightly (#15938)
* chore: publish nightlies to electron-nightly

* electron-nightly => @electron/nightly
2019-01-02 11:04:56 -08:00
Cheng Zhao
a5e63dc5fd fix: don't expose isolatedWorld to global (#16208) 2018-12-28 10:54:32 +09:00
Vladimir
5ae3d1a1b2 feat: add multi BrowserView support to BrowserWindow (#16148)
* feat: add multi BrowserView support to BrowserWindow

Add functions addBrowserView, removeBroserView, getBrowserViews to
BrowserWindow class. Existing API as setBrowserView and
getBrowserView code replaced to use new api inside.

* fix: for lint and osx compile errors

* fix: lint error in test code

* feat: add multi BrowserView support to BrowserWindow

Add functions addBrowserView, removeBroserView, getBrowserViews to
BrowserWindow class. Existing API as setBrowserView and
getBrowserView code replaced to use new api inside.

* fix: for lint and osx compile errors

* fix: lint error in test code

* fix: method to be accessible on mac api impl

* fix: missed function declarations for mac impl

* fix: use base class reset function
2018-12-22 10:49:26 +09:00
Shelley Vohr
18ca4b6a3a chore: update @types/node dep (#16174) 2018-12-21 12:59:42 -05:00
Zac Walker
51cfb5cff1 fix: extend tracing startRecording API to take a full tracing config (#13914)
This allows memory-infra to be traced correctly.
Fixes #12506.
2018-12-20 15:11:17 +03:00
Cheng Zhao
4ff7976060 fix: add missing require in chromium-spec (#16153) 2018-12-20 16:58:46 +09:00
Shelley Vohr
90d314cc3b chore: make nugget quiet by default (#16147)
* chore: make nugget quiet by default

* chore: allow nugget quiet to be passed via cli
2018-12-19 20:36:01 -07: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
Charles Kerr
df0381e76c feat: add option to generate explicit URLs in the release notes (#16126) 2018-12-19 08:48:01 -07:00
Mosh Feu
ddc38eda26 docs: specify "role" types for "menu-item" (#16129) 2018-12-19 09:39:35 -05:00
Pedro Pontes
9c783f53ba fix: do not allow the window to grab focus when tabbing / shift+tabbing (#16042)
* fix: do not allow the window to grab focus when tabbing / shift+tabbing

* test: add tests.
2018-12-18 23:44:51 -07:00
Jeremy Apthorp
ed3e5739dc test: promisify a bunch of tests (#16051)
* test: promisify a bunch of tests

* fix lint

* fix affinity tests

* more cowbell^Wawait

* less done
2018-12-18 23:44:03 -07:00
David Baker
cc85946f55 feat: Support response headers in File protocol handler (#16098)
* feat: Support response headers in File protocol handler

* bugfix: Null check headers value & fix tests

* refactor: Use non-deprecated FindKeyOfType
2018-12-18 23:17:02 -07:00
Jeremy Apthorp
03f876470e docs: note that visual zoom is disabled by default (#16130) 2018-12-18 20:40:42 -07:00
Shelley Vohr
5cc4a30207 chore: release.id => release.data.id (#16132) 2018-12-18 19:51:38 -07:00
Shelley Vohr
a58d989b60 feat: expose app accessibility status api (#16119)
* feat: expose app accessibility status api

* fix prompt
2018-12-18 11:15:22 -05:00
Alex Greenland
dc93d94bc8 fix: support async child process methods without callback in asar (#15927)
* fix: support async child process methods without callback in asar

* fix: support async child process methods without callback in asar (improved)
2018-12-18 16:27:39 +09:00
Samuel Attard
6c998aa4f2 fix: fix Electron not starting in development from the CLI (#16116) 2018-12-17 19:26:22 -08:00
Milan Burda
1c7a47239b chore: remove chrome_process_finder.patch (#16113) 2018-12-18 10:00:34 +09:00
Michelle Tilley
7fc8afa3e5 chore: update PR template to request better release notes (#16080) 2018-12-17 16:10:34 -08:00
Milan Burda
7ec4e7b0d8 chore: fix chrome_process_finder.patch description (#15577) 2018-12-17 14:15:35 -08:00
Milan Burda
41a3f123f1 docs: move require related breaking changes to Electron 6.0 (#16109) 2018-12-17 14:01:00 -08:00
popod
f6081b18b6 docs: Improve the doc about BrowserWindow title property (#16086)
* Improve the doc about BrowserWindow title property

* Update docs/api/browser-window.md

Co-Authored-By: popod <popod@me.com>
2018-12-17 13:16:24 -07:00
Milan Burda
7a6fe00f49 chore: simplify code for modules internally using remote.require in sandbox (#16104) 2018-12-17 22:47:41 +03:00
Gearóid
c64b4a3926 docs: more natural language in Mac app store guide (#16095) 2018-12-17 10:27:37 -05:00
Shelley Vohr
0431833866 chore: correctly capitalize releaseID (#16079) 2018-12-14 15:15:16 -08:00
Shelley Vohr
280f9bf49c feat: allow immediate MacOS notifications (#16060)
* feat: allow immediate MacOS notifications

* fix args->GetNext

* update docs/api/system-preferences.md

Co-Authored-By: codebytere <codebytere@github.com>

* address feedback from @ckerr's review
2018-12-14 13:46:46 -08:00
Cheng Zhao
c7aa747891 chore: no need to expose Initialize of ipc module (#16066) 2018-12-14 08:01:29 -08:00
Cheng Zhao
8584c2f14b fix: register webview in main world when using contextIsolation (#16067) 2018-12-14 15:38:35 +09:00
Shelley Vohr
dbda1a1b05 chore: add BinaryMuse to troppers (#16062) 2018-12-13 16:56:31 -08:00
Cheng Zhao
897c6e93cb chore: simplify main world setup of contextIsolation (#16046) 2018-12-13 16:25:12 -05:00
Michelle Tilley
d6d245d0c3 docs: contextIsolation is no longer experimental (#16043) 2018-12-13 11:21:16 -05:00
John Kleinschmidt
0e6db8fd56 ci: Cleanup build dirs on Azure Devops (#16047)
* ci: Cleanup directories after build

* Use rm to cleanup source directory

* Update vsts.yml

* Check if files actually deleted

* Get rid of hidden files too
2018-12-13 11:11:09 -05:00
Simone Cattaneo
649633bbb7 fix: make 'setParentWindow' compatible under Windows (#15775) 2018-12-12 16:05:16 -08:00
Jeremy Apthorp
4250f84272 chore: enable v2 sandbox on mac (#15647) 2018-12-12 16:01:10 -08:00
Charles Kerr
f7528a0204 fix: fix an original-fs regression introduced in 4.0 betas (#16028)
* fix: fix an original-fs regression introduced in 4.0 betas

* chore: remove cruft from earlier draft
2018-12-12 15:32:53 -06:00
Milan Burda
c65a0d90b8 chore: misc cleanup (#16037) 2018-12-12 15:31:16 -06:00
Jeremy Apthorp
1152fecb75 test: fix flaky before-input-event test (#16027) 2018-12-11 17:01:48 -08:00
Alexey Kuzmin
48abef27d8 build: make it possible to pass a "--directory" arg to "git am" (#16024) 2018-12-11 22:49:01 +01:00
Cheng Zhao
624ade2c25 fix: return pointer instead of pointer's content (#16014) 2018-12-11 12:45:55 -05:00
Jeremy Apthorp
f3c64ea9d8 chore: add webui_resources to pak (#16009)
fixes #16006
2018-12-11 09:07:32 -08:00
Birunthan Mohanathas
e383aa31c8 fix: restore ability to disable color correct rendering (#15898)
In Electron 2.0, `--disable-features=ColorCorrectRendering` could be
used to make the app use the display color space (e.g. P3 on Macs)
instead of color correcting to sRGB. Because color correct rendering is
always enabled on Chromium 62 and later and because
`--force-color-profile` has no effect on macOS, apps that need e.g. P3
colors are currently stuck on Electron 2.0.

This restores the functionality removed in
https://chromium-review.googlesource.com/698347 in the form of the
`--disable-color-correct-rendering` switch.

This can be removed once web content (including WebGL) learn how
to deal with color spaces. That is being tracked at
https://crbug.com/634542 and https://crbug.com/711107.

As an example of a widely used app using
`--disable-features=ColorCorrectRendering`, see VSCode:
3f33ef2593/src/main.js (L138-L139)

Notes: Add `--disable-color-correct-rendering` switch
2018-12-11 21:36:14 +05:30
Milan Burda
607b53c883 security: block chrome.tabs.executeScript() for non chrome-extension: URLs (#15929) 2018-12-11 10:45:46 +01:00
bughit
e044ada65c fix: allow 2 threads for CreateIoCompletionPort on single-core to prevent busy looping (#15975)
* allow 2 threads for CreateIoCompletionPort on single-core

* use base::SysInfo::NumberOfProcessors instead of env var

* CHECK that uv_loop_ has not been used before replacing its iocp
2018-12-11 11:07:35 +09:00
Benjamin Pasero
c74ae107f1 fix: do not print an error for an expected condition (#15991) (#15992) 2018-12-10 12:06:26 -08:00
Shelley Vohr
45a937df0a fix: incorrect view ordering for customButtonsOnHover (#15564) 2018-12-10 11:05:30 -08:00
Shelley Vohr
163361ee6a chore: disable bump-version on arm32 (#15994) 2018-12-10 10:57:44 -08:00
Shelley Vohr
4b18a38e9f chore: simplify promisify helper (#15952)
chore: simplify promisify helper
2018-12-10 08:13:09 -08:00
Cheng Zhao
db2fda1b6f chore: make rpc-server reply to sender frame instead of the main frame (#15973)
* chore: make rpc-server reply to frame

* fix: check IsRenderFrameLive
2018-12-10 09:37:42 +09:00
Samuel Attard
eb8fcf833c chore: warn when people attempt to use the Electron module to do Electron things but from node (#15916)
* chore: warn when people attempt to use the Electron module to do Electron things but from node

* update node env console warning
2018-12-07 12:00:24 -08:00
Milan Burda
177091ca6f chore: rename nativeRequire to potentiallyRemoteRequire (#15971) 2018-12-06 18:12:50 -08:00
Jeremy Apthorp
442c1b22e3 feat: webContents.loadURL returns a promise (#15855) 2018-12-06 12:16:19 -08:00
Shelley Vohr
1b8c11121f chore: convert bump script to js (#15820) 2018-12-06 11:00:10 -08:00
Jeremy Apthorp
2845267c18 feat: support mixed-sandbox mode on linux (#15870) 2018-12-05 17:42:12 -08:00
Milan Burda
764a10f7c7 refactor: simplify isRemoteModuleEnabled handling in sandboxed renderers (#15961) 2018-12-05 10:07:56 -08:00
Milan Burda
ab2a061b59 refactor: use helpers when using the remote module in sandboxed renderers (#15960) 2018-12-05 10:07:32 -08:00
Saswat Bhattacharya
d243a45173 feat: implement 'app-command' events for browser history navigation keys on Linux (#15441)
* Added mouse forward/back button support on Linux

* Added browser history navigation action bindings for Windows, Mac, and Linux keyboard

* Removed new `history-action` event and modified `app-command` to execute on such events

* Removed attempt at macOS support and added constants

* Clarified app-command documentation

* Reverted 'app-command' description change

* Format code
2018-12-05 09:35:59 -08:00
Shelley Vohr
3f15f51615 feat: promisify app.getFileIcon() (#15742) 2018-12-05 08:50:12 -08:00
Moisés Neto
cfbea4a0e3 docs: es6ify 'Breaking Changes' and 'File' API pages (#15507)
* docs: apply arrow functions to app.makeSingleInstance example

* docs: apply arrow functions to session docs

* docs: change normal to arrow functions in File object docs
2018-12-05 23:14:52 +11:00
Milan Burda
d561c5531b feat: deprecate modules internally using remote.require in sandboxed renderer context (#15145) 2018-12-05 10:34:09 +01:00
Pedro Pontes
d5d1fa8290 fix: use appropriate site instance for cross-site nav's (#15821)
* fix: use Chromium's determined new site instance as candidate when navigating.

When navigating to a new address, consider using Chromium's determined site instance
for the new page as it should belong to an existing browsing instance when the
navigation was triggered by window.open().

fixes 8100.

* Revert "fix: use Chromium's determined new site instance as candidate when navigating."

This reverts commit eb95f935654a2c4d4457821297670836c10fdfd5.

* fix: delegate site instance creation back to content when sandboxed.

* fix: ensure site isolation is on

* test: adapt ut for cross-site navigation

* fix: register pending processes during a navigation.

* refactor: dont call loadURL for a window constructed from an existing webContents.

* test: add sandboxed affinity UT's.

* fix: check affinity before deciding if to force a new site instance.

* chore: adapt subsequent patch.

* refactor: constify logically const methods.

* fix: do not reuse site instances when navigation redirects cross-site.

* test: ensure localStorage accessible after x-site redirect.

* test: adapt localStorage acess denied UT for site isolation.

* fix: do not send render-view-deleted for speculative frames.

* chore: amend tests after rebase.

* test: add ut for webContents' render-view-deleted emission

* fix: introduce current-render-view-deleted for current RVH's deletions.

Revert render-view-deleted to being emitted with any RVH's deletion.
current-render-view-deleted is emitted only when the RVH being deleted
is the current one.

* refactor: style and comments fixed.
2018-12-05 17:03:39 +09:00
Shelley Vohr
46e7214974 chore: remove electabul (#15954) 2018-12-04 20:50:37 -08:00
Milan Burda
cfb2812cea docs: remove methods invoking the callback repeatedly from promisification.md (#15951) 2018-12-04 13:45:55 -08:00
Jeremy Apthorp
8d1d842185 chore: restore ppapi_host DCHECK (#15788) 2018-12-04 11:05:23 -08:00
Shelley Vohr
c31629ad98 feat: add media access APIs for macOS Mojave (#15624) 2018-12-04 07:54:13 -08:00
Milan Burda
aa2b2f7c8f fix: security: don't allow arbitrary methods to be invoked on webContents via IPC (#15919) 2018-12-04 16:12:21 +01:00
Jeremy Apthorp
0a23c0b032 chore: remove old patch for fixing ffmpeg on 32-bit linux (#15226)
It's no longer necessary, per the comment
2018-12-04 20:11:24 +09:00
Cheng Zhao
5bc86eaf9c Merge pull request #15019 from Anrock/child-window-location
fix: Introduce LocationProxy for BrowserWindowProxy
2018-12-04 20:11:00 +09:00
Cheng Zhao
ca7dec2082 fix: default prop of location should be empty str 2018-12-04 17:11:26 +09:00
Cheng Zhao
fc4e10b6c0 fix: set setter of window.location 2018-12-04 16:23:52 +09:00
Anrock
e80e3a53e9 feat: introduce LocationProxy for BrowserWindowProxy 2018-12-04 16:23:52 +09: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
John Kleinschmidt
77f73830e8 build: Enable arm embedded builtins (#15939)
* Revert "FIXME: disable v8 embedded builtins feature for arm flavor"

This reverts commit 8ec3bc0272.

* build: don't enable embedded builtins for arm/arm64 native mksnapshot
2018-12-04 11:17:12 +09:00
Shelley Vohr
d3c58ea48c chore: move getCurrentBranch to a util file (#15921)
* chore: move getCurrentBranch to a util file

* fix import
2018-12-03 13:28:10 -08:00
Shelley Vohr
a1a431eb87 fix: make windowMenu role correct on MacOS (#15930) 2018-12-03 11:52:46 -08:00
Samuel Attard
3ddd917ff4 Merge pull request #15405 from electron/chromium-upgrade/70
feat: upgrade to Chromium 70.0.3538.110
2018-12-04 03:26:49 +11:00
Milan Burda
a33eeda4f7 refactor: don't expose NavigationController as an internal module (#15920) 2018-12-03 17:13:09 +01:00
deepak1556
8ec3bc0272 FIXME: disable v8 embedded builtins feature for arm flavor 2018-12-03 20:07:44 +05:30
deepak1556
982649bab7 chore: update libgtkui_export.patch 2018-12-03 20:07:44 +05:30
Cheng Zhao
a7ee737226 chore: backport_958b761_from_upstream_v8.patch is not needed for Ch70 2018-12-03 20:07:44 +05:30
Cheng Zhao
e842482ec8 chore: bit_hash_seed_commits.patch is not needed for Ch70 2018-12-03 20:07:44 +05:30
Cheng Zhao
f00b0a3485 chore: pick_b0af309_from_upstream_v8.patch is not needed for Ch70 2018-12-03 20:07:44 +05:30
Cheng Zhao
fe943f560b chore: fix_font_thickness.patch is not needed for Ch70 2018-12-03 20:07:44 +05:30
Cheng Zhao
975f85ea56 chore: ensure_cookie_store.patch is not needed for Ch70 2018-12-03 20:07:44 +05:30
deepak1556
e734536815 chore: roll DEPS 70.0.3538.110 2018-12-03 20:07:44 +05:30
deepak1556
3dfc0098ec chore: move node specific build config out of //electron 2018-12-03 20:07:44 +05:30
deepak1556
06a501d4a2 chore: use base::JoinString to concatenate vector 2018-12-03 20:07:44 +05:30
deepak1556
e1336d8453 chore: fix v8 deprecation warnings 2018-12-03 20:07:43 +05:30
deepak1556
f8418554a3 chore: update fix_trackpad_scrolling.patch 2018-12-03 20:07:43 +05:30
deepak1556
65b7924528 chore: update frame_host_manager.patch 2018-12-03 20:07:43 +05:30
deepak1556
5017db855c fix: remove explicitly enabled SharedArrayBuffer feature flag
It is enabled by default now.
2018-12-03 20:07:43 +05:30
deepak1556
c6313b3d2d chore: roll DEPS 70.0.3538.102 2018-12-03 20:07:43 +05:30
deepak1556
4eb0d497ab chore: update printing.patch 2018-12-03 20:07:43 +05:30
deepak1556
2ebea5501e chore: update customizable_app_indicator_id_prefix.patch 2018-12-03 20:07:43 +05:30
deepak1556
2d68d60e00 chore: rm fix_zoom_display.patch 2018-12-03 20:07:43 +05:30
Heilig Benedek
6deb7afb82 fix: reimplement FrameSubscriber with mojo, re-enable tests 2018-12-03 20:07:43 +05:30
Heilig Benedek
8727636fcc fix: update and re-enable OSR 2018-12-03 20:07:42 +05:30
deepak1556
00294a5b25 FIXME: disable some specs 2018-12-03 20:07:42 +05:30
deepak1556
c491fa59df spec: update inspector-binding.js
* https://github.com/nodejs/node/pull/22251
* https://github.com/nodejs/node/pull/20137
2018-12-03 20:07:42 +05:30
deepak1556
d97cf8c438 spec: force create network context for proxy tests 2018-12-03 20:07:42 +05:30
deepak1556
7a68d632e6 fix: use proxy lookup api of network context to resolve proxies 2018-12-03 20:07:42 +05:30
deepak1556
28cff4644e fix: disable kSpareRendererForSitePerProcess feature 2018-12-03 20:07:42 +05:30
Samuel Attard
9d72bd4de4 chore: update CreateSkBitmapFromHICON usage for new API (no pointer)
refs: https://chromium-review.googlesource.com/c/chromium/src/+/1234372
2018-12-03 20:07:42 +05:30
Samuel Attard
c1b9ca14e7 build: disable microsoft include warning
this error is being thrown on windows due a #include inside node
2018-12-03 20:07:42 +05:30
Samuel Attard
32a957c455 build: explicitly depend on //dbus for the linux build
refs: https://chromium-review.googlesource.com/c/chromium/src/+/1273525
2018-12-03 20:07:42 +05:30
Samuel Attard
85fdacbc49 chore: replace ShowWithWindowState with Show inside native_window_views
The functionality was merged in as a parameter to the core Show method, default
for restore_bounds is an empty gfx::Rect()

refs: https://chromium-review.googlesource.com/c/chromium/src/+/1174910
2018-12-03 20:07:42 +05:30
Samuel Attard
f8f091c250 chore: update GetLabelFrontList to be GetLabelStyle in menu model
refs: https://chromium-review.googlesource.com/c/chromium/src/+/1186702
2018-12-03 20:07:41 +05:30
Shelley Vohr
c51fef1568 fix: use url::AddCORSEnabledScheme 2018-12-03 20:07:41 +05:30
Shelley Vohr
1523a82bab fixup! add missing newlines to patches 2018-12-03 20:07:41 +05:30
Samuel Attard
92f50664d0 chore: fix linting 2018-12-03 20:07:41 +05:30
Samuel Attard
5798b152a6 chore: check GetAgent as GetTracingController() crashes if no agent is set 2018-12-03 20:07:41 +05:30
Samuel Attard
b1e69e1357 chore: update asar injection for new node internal module loader 2018-12-03 20:07:41 +05:30
Samuel Attard
9c36576ddd chore: SetTracingController becomes SetAgent and corresponing contructions updated 2018-12-03 20:07:41 +05:30
deepak1556
f7f09b028b Introduce explicit configuration to CertVerifier
https://chromium-review.googlesource.com/c/chromium/src/+/1122709
2018-12-03 20:07:41 +05:30
deepak1556
089001bd92 fix: update node inspector api usage 2018-12-03 20:07:41 +05:30
deepak1556
97aa7b8e68 Use CompletionOnceCallback in URLFetcherResponseWriter.
https://chromium-review.googlesource.com/c/chromium/src/+/1155087
2018-12-03 20:07:41 +05:30
deepak1556
366ca47136 Change Value::BlobStorage to std::vector<uint8_t>
https://chromium-review.googlesource.com/c/chromium/src/+/1137819
2018-12-03 20:07:40 +05:30
deepak1556
d21e30f57b Reorganize MediaStreamType enums
https://chromium-review.googlesource.com/c/chromium/src/+/1160000
2018-12-03 20:07:40 +05:30
deepak1556
d1da0aad7f Make IsolateHolder aware of the isolate type.
https://chromium-review.googlesource.com/c/chromium/src/+/1183194
2018-12-03 20:07:40 +05:30
deepak1556
321f87fe61 Complete TaskPriority::BACKGROUND->BEST_EFFORT mass rename
https://chromium-review.googlesource.com/c/chromium/src/+/1153461
2018-12-03 20:07:40 +05:30
deepak1556
6743b83786 Add notifications to UKM.xml.
https://chromium-review.googlesource.com/c/chromium/src/+/1071649
2018-12-03 20:07:40 +05:30
deepak1556
f464b8c4c5 Respond for handling protocol commands async
https://chromium-review.googlesource.com/c/chromium/src/+/1139575
2018-12-03 20:07:40 +05:30
deepak1556
25d0a7b62a Create a CodeCache per each storage_partition to store generated code
https://chromium-review.googlesource.com/c/chromium/src/+/1120179
2018-12-03 20:07:40 +05:30
deepak1556
b5b49c9ed0 FIXME: Remove SchemeRegistry::RegisterURLSchemeAsCORSEnabled
https://chromium-review.googlesource.com/c/chromium/src/+/1157364
2018-12-03 20:07:40 +05:30
deepak1556
ffeab383b5 Move NetworkConnectionTracker getter to network_service_instance.h
https://chromium-review.googlesource.com/1162888
2018-12-03 20:07:40 +05:30
deepak1556
0bd006a8eb ProxyConfigDictionary: Use base::Value
https://chromium-review.googlesource.com/c/chromium/src/+/1150846
2018-12-03 20:07:40 +05:30
deepak1556
0f9dd3736c Move CRLSets to being part of CertVerifier::Config
https://chromium-review.googlesource.com/c/chromium/src/+/1132706
2018-12-03 20:07:39 +05:30
deepak1556
6310d6c699 Flatten ResourceRequestBody data
https://chromium-review.googlesource.com/c/chromium/src/+/1114258
2018-12-03 20:07:39 +05:30
deepak1556
b2d53f1e1e FIXME: word_start and medial_capital_as_word_start are removed from WebFindOptions
https://chromium-review.googlesource.com/c/chromium/src/+/1175645
2018-12-03 20:07:39 +05:30
deepak1556
4179cedf37 Change SubscribePermissionStatusChange to use a RFH to query permissions
https://chromium-review.googlesource.com/c/chromium/src/+/979735
2018-12-03 20:07:39 +05:30
deepak1556
66349261a5 fix: update to per context v8::Script::Compile api 2018-12-03 20:07:39 +05:30
deepak1556
c1f32afeeb Use CompletionOnceCallback in URLRequestSimpleJob.
https://chromium-review.googlesource.com/c/chromium/src/+/1155089
2018-12-03 20:07:39 +05:30
deepak1556
8f1fa4177e Fix invalid handle errors found with App Verifier
https://chromium-review.googlesource.com/c/chromium/src/+/1145767
2018-12-03 20:07:39 +05:30
deepak1556
535d264497 fix: [UI] Resolve method conflict between MenuModel, SimpleMenuModel::Delegate
https://chromium-review.googlesource.com/c/chromium/src/+/1230581
2018-12-03 20:07:39 +05:30
deepak1556
2eedcde914 fix: Remove DEFINE_WEB_CONTENTS_USER_DATA_KEY in //electron.
https://bugs.chromium.org/p/chromium/issues/detail?id=589840
2018-12-03 20:07:39 +05:30
Samuel Attard
6b4b7c9831 chore: make BrowserObserver a CheckedObserver
refs: https://chromium-review.googlesource.com/c/chromium/src/+/1053338
2018-12-03 20:07:38 +05:30
Samuel Attard
b6aae790cf fixme: C70 removed DidReceiveCompositorFrame
(OSR relatied)

refs: 1de1ca906a

cc @brenca
2018-12-03 20:07:38 +05:30
Samuel Attard
74d1685523 chore: fix ShouldFork impl, referrer stripping has been removed
refs: https://chromium-review.googlesource.com/c/chromium/src/+/1124329
2018-12-03 20:07:38 +05:30
Samuel Attard
c9007557e5 chore: post_task and friends now live under base/task
refs: https://chromium-review.googlesource.com/c/chromium/src/+/1161088
2018-12-03 20:07:38 +05:30
Samuel Attard
c4cb90ab85 chore: replace PreContentInitialization with PreCreateMainMessageLoop 2018-12-03 20:07:38 +05:30
Samuel Attard
0adbcfd806 chore: bump node 2018-12-03 20:07:38 +05:30
Samuel Attard
fd442df851 chore: update v8 patches for Chromium 70 2018-12-03 20:07:38 +05:30
Samuel Attard
f927398b53 chore: update package-lock.json 2018-12-03 20:07:38 +05:30
Jeremy Apthorp
6414cb05f0 update DEPS 2018-12-03 20:07:37 +05:30
Jeremy Apthorp
3b4e706758 rebase chromium patches on M70 2018-12-03 20:07:37 +05:30
Milan Burda
559fd5cb31 chore: remove unused module (#15917) 2018-12-02 14:43:04 -08:00
Jakub Biesiada
1672cffe96 docs: update mojave-dark-mode-guide.md (#15888)
* Update mojave-dark-mode-guide.md

Add info about dark mode support in electron-builder

* Update mojave-dark-mode-guide.md

* Update mojave-dark-mode-guide.md
2018-12-01 12:02:36 +11:00
Shelley Vohr
b8ec886609 chore: allow bumping stable => beta (#15906) 2018-11-30 11:01:57 -08:00
Shelley Vohr
728be219a4 chore: improve granular release cleanup (#15900)
* chore: improve granular release cleanup

* make releaseId optional
2018-11-30 09:58:09 -08:00
Sylvester Keil
2e91bf1e15 Fix GTK menubar item color (#15878)
Use menubar item color (not menu item color).
Closes #15194
2018-11-30 09:28:45 -08:00
John Kleinschmidt
515525cfc6 ci: Renable ffmpeg and mksnapshot tests on Azure Devops (#15800)
* ci: Renable ffmpeg and mksnapshot tests on VSTS

Also, add testing of ffmpeg and mksnapshot to arm tests
2018-11-30 11:17:01 -05:00
Jeremy Apthorp
83d951db7e chore: DCHECK that events are only emitted on the UI thread (#15873)
* chore: DCHECK that events are only emitted on the UI thread

* move dcheck to EmitWithEvent
2018-11-30 18:48:27 +09:00
Milan Burda
8483cb4aa7 security: only handle related IPCs when <webview> tag is enabled (#15859)
* refactor: move guest-view-manager related IPC handling out of rpc-server

* feat: only handle related IPCs when <webview> tag is enabled
2018-11-30 18:44:38 +09:00
Andy Dill
8cca1c987b fix: move NativeWindow tracking to OSR WCV (#15585)
* fix: move NativeWindow tracking to OSR WCV

* fix oops
2018-11-29 21:25:02 -08:00
Heilig Benedek
78b88a70bb fix: backport patch that ensures that cookie store is always created (#15836)
* fix: backport patch that ensures that cookie store is always created

* fix: disable cookie encryption

* fix: flush the cookie store when NetworkContext shuts down

* test: add test for cookie store persistance

* Update patches/common/chromium/ensure_cookie_store.patch

Co-Authored-By: brenca <benecene@gmail.com>

* Update patches/common/chromium/ensure_cookie_store.patch

Co-Authored-By: brenca <benecene@gmail.com>
2018-11-29 10:51:13 -08:00
Shelley Vohr
165d168ee5 fix: ignore unused freopen result (#15884) 2018-11-29 09:36:08 -08:00
Jeremy Apthorp
753fb31c54 test: fix flaky takeHeapSnapshot test (#15853)
ref #15095
2018-11-29 16:51:03 +01:00
Jeremy Apthorp
62eb077f29 refactor: simplify logic for enabling stack dumping (#15872)
ref #15785
2018-11-28 22:23:41 -08:00
Ho Wing Yip
cd8099d336 Fixed typo in dialog.md (#15861)
Changed "masOS" to "macOS"
2018-11-28 20:41:27 -08:00
Jeremy Apthorp
30109d64f2 test: fix a bunch of flaky tests related to emittedOnce (#15871) 2018-11-28 17:52:19 -08:00
Jeremy Apthorp
ae266e2e03 chore: remove browser_plugin_wheel.patch (#15787)
according to https://crbug.com/725970#c9, chromium should have fixed this upstream
2018-11-28 13:45:37 -08:00
Shelley Vohr
c366525370 fix: form control rendering on 10.14 Mojave (#14865) 2018-11-28 13:06:20 -08:00
Michelle Tilley
8f04def7b2 fix: prevent bluetooth device list from growing without bound (#15805)
* fix: include bluetooth strings in build

* fix: prevent bluetooth device list from growing without bound
2018-11-28 11:36:00 -05:00
Andy Dill
55808dffcd fix: osr windows respect display scale factor (#15733) 2018-11-28 11:16:03 -05:00
Milan Burda
07f8f5f95a refactor: eliminate duplicate code exposing process APIs (#15824) 2018-11-28 11:08:17 -05:00
Slapbox
d7d4b8638d docs: makes note of HTTP header CSP usage with file:// (#14768) 2018-11-28 17:58:18 +09:00
Nitish Sakhawalkar
9890d1e251 feat: Implement process.getProcessMemoryInfo to get the process memory usage (#14847)
* feat: Implement process.getMemoryFootprint to get the process memory usage

* Add spec

* fix: must enter node env in callback

* Update function call

* Update spec

* Update API data

* update spec

* Update include

* update test for shared bytes

* Update atom/common/api/atom_bindings.cc

Co-Authored-By: nitsakh <nitsakh@icloud.com>

* Update atom/common/api/atom_bindings.cc

Co-Authored-By: nitsakh <nitsakh@icloud.com>

* Update API

* Update the callback isolate

* Update to work after app ready

* Update docs

* Update docs/api/process.md

Co-Authored-By: nitsakh <nitsakh@icloud.com>

* Update docs/api/process.md

Co-Authored-By: nitsakh <nitsakh@icloud.com>

* Fix crash
2018-11-28 17:57:53 +09:00
Alexander Turinske
f563fc9d5e docs: add new widevine requirements (#14024) 2018-11-28 17:53:42 +09:00
Shelley Vohr
41c2685204 feat: promisify win.capturePage() (#15743)
* feat: promisify win.capturePage

* mark optional arg correctly

* Add to breaking changes doc

* properly deprecate win.capturePage

* remove change from api-contract

* document both callback and promise versions

* address docs feedback

* update promisification progress doc
2018-11-27 23:50:53 -05:00
Shelley Vohr
73fbb69c50 chore: change return type of platform_util::SetLoginItemEnabled (#15854) 2018-11-27 23:16:53 -05:00
Shelley Vohr
5f9c857eb0 chore: expose release id for use in cleanup (#15845) 2018-11-27 23:12:01 -05:00
Jeremy Apthorp
5d54d42953 test: fix remote-debugging-port test calling done twice (#15857) 2018-11-28 10:59:05 +09:00
Milan Burda
81e00d8e56 chore: fix V8 deprecation warnings (#15842) 2018-11-27 16:42:02 -05:00
Jeremy Apthorp
455f0669e7 fix: add missing shell_resources.pak to repack target (#15844) 2018-11-27 11:18:18 -08:00
Cheng Zhao
5bb35bbdaf fix: backport patch to fix scrolling problem (#15830) 2018-11-27 23:26:34 +09:00
Milan Burda
d63a848011 feat: add activate option to webContents.openDevTools (#13852) 2018-11-27 18:34:44 +09:00
Cheng Zhao
aafbd865bf Merge pull request #12686 from Anrock/browserview-handle-window-open
fix: handle window.open events in BrowserView
2018-11-27 15:59:17 +09:00
Cheng Zhao
63874da087 test: add test for window.open in BrowserView 2018-11-27 11:10:07 +09:00
Cheng Zhao
d1f0d6c184 fix: remove event monitor before destroying window 2018-11-27 11:10:07 +09:00
Anrock
9ff7807be8 fix: move window.open handlers from BrowserWindow to WebContents 2018-11-27 10:59:01 +09:00
Jeremy Apthorp
23de301955 chore: remove scoped_clipboard_writer.patch (#15843)
replace with already-exposed APIs
2018-11-27 09:51:26 +09:00
Shelley Vohr
0a5f8611e8 chore: add promise api runtime flag (#15841)
* chore: add promise api runtime flag

* add promisification plan document

* fix process.md typo
2018-11-26 16:00:46 -05:00
Simone Cattaneo
6f116eeaa4 fix: improved event flow management related to 'will-resize' event on Windows (#15695) 2018-11-26 12:26:48 -08:00
Heilig Benedek
0242818f39 feat: add registerAccelerator flag to allow menu items to optionally skip accelerator registration (#15723)
* feat: add registerAccelerator flag to allow menu items to skip registration

* docs: add docs for registerAccelerator

* docs: re-add accidentally removed line
2018-11-26 10:43:55 -08:00
Shelley Vohr
3748ee49ea chore: remove unused test.py (#15822) 2018-11-24 20:01:30 -05:00
Jeremy Apthorp
a8a881c8db chore: restore //url dchecks (#15637) 2018-11-22 09:02:52 -08:00
Jeremy Apthorp
fb52fdc592 chore: remove browser_plugin_guest.patch (#15786) 2018-11-21 15:53:09 -05:00
John Kleinschmidt
bb7c63c052 build: fix native_mksnapshot build (#15770)
* build: fix native_mksnapshot build

When we changed our electron_mksnapshot_zip target to include the v8_context_snapshot_generator, this dependency made the `run_mksnapshot` target run which was trying to run an arm/arm64 binary on x64 hardware.

Don't use custom build args for native_mksnapshot as they are not needed

* Added comment on why snapshot_blob.bin is skipped on arm/arm64
2018-11-21 15:19:19 -05:00
Robo
9e8b26cc4e fix: bypass CORB when web security is disabled (#15737)
* fix: extend content layer hook to bypass corb when web security is disabled.

* chore: add patch to disable CORB
2018-11-21 14:10:05 -06:00
Heilig Benedek
5db8197a5d fix: schedule a paint after browserview's background is set (#15784) 2018-11-21 13:04:10 -06:00
Samuel Attard
0b0a17ff91 fix: load the chrome.* API on chrome-extension pages in sandbox mode (#15563)
With mixed sandbox enabled we need to load the chrome.* APIs in the
sandbox init.js so that chrome extensions load correctly.

This mirrors the equivilant impl in `atom_renderer_client.cc`

Fixes #15561
2018-11-21 12:56:58 -05:00
malern
a68e3371f3 fix: remove duplicated status code (#15707)
Removed the hardcoded status code from the protocol response as the real status code is appended immediately after.
2018-11-21 10:47:05 -06:00
Cheng Zhao
47bf8e1bb3 view: add ResizeArea class (#15752) 2018-11-21 22:39:59 +09:00
Jeremy Apthorp
65099ab489 chore: remove no_stack_dumping.patch (#15785)
we build with IS_OFFICIAL_BUILD now so this should be OK
2018-11-20 23:32:43 -05:00
Charles Kerr
40619efb3b chore: remove FileChooser AddExtensionForFilename (#15510) 2018-11-20 16:24:39 -05:00
Samuel Attard
f02f9ba9fb chore: add spec for --inspect after a -- (#15237) 2018-11-20 16:23:50 -05:00
Ondřej Záruba
de05ff894b feat: Add app.getLocaleCountryCode() method for region detection (#15035)
* Add method to get system´s user region

* Fix linter

* Remove auto types

* Improved detection for POSIX

* Change name, add specs, minor fixes

* Remove left overs

* Fix locale test

* Fix Linux test

* Coding style fixes

* Fix docs

* Add test excaption for Linux

* fix spelling

* Polishing
2018-11-20 15:33:23 -05:00
Pedro Pontes
57d2ae1aec revert: "fix: window.open site instance should belong to same browsing instance (#15216)" (#15757)
This reverts commit 8f35198bfb.
2018-11-20 21:28:26 +01:00
Michelle Tilley
46c2953edb doc: Update Windows build instructions to include debugging tools (#15765) 2018-11-20 01:08:25 -05:00
Simone Cattaneo
f2d3d55e95 docs: changed German link with English one for Windows SDK Archive (#15764) 2018-11-20 01:03:03 -05:00
Daniel Turcich
a59b53c7e6 Update webview-tag.md (#15741)
Added Mouse and Scroll to list of events that webview can't have event listeners for
2018-11-20 01:01:57 -05:00
Jeremy Apthorp
08b56b7675 docs: add note about win_delay_load_hook (#15766) 2018-11-19 16:13:50 -08:00
Jeremy Apthorp
90795c4fa4 build: make make_locale_dirs idempotent (#15768) 2018-11-19 15:55:13 -08:00
Jeremy Apthorp
90d1c0b2b6 chore: don't explicitly destroy asar archives (#15734) 2018-11-19 13:12:41 -08:00
Jeremy Apthorp
ec4212cce1 docs: add troubleshooting section for win toolchain prompt (#15761) 2018-11-19 11:53:28 -08:00
Shelley Vohr
a45d5960d7 chore: allow for callback => promise deprecation (#15758)
* chore: allow for callback => promise deprecation

* cb type check is sufficient

* migrate warn to always trigger
2018-11-19 12:56:26 -05:00
Andrzej Szombierski
51cb36fa9b fix: ensure that file descriptors 0/1/2 are opened at startup (#15555)
* fix: ensure that file descriptors 0/1/2 are opened at startup

This fixes an issue where the gpu subprocess was writing messages to a
random pipe or socket. The standard file desciptors are closed in
chromium's subprocesses because of an unfortunate interaction with
libuv's tty handling code leaving them with the FD_CLOEXEC flag.

* style: fix lint warnings
2018-11-19 11:53:55 -05:00
Simone Cattaneo
b97d7e7ecd fix: On close trying to remove observer from an empty collection leads to an access violation (#15739) 2018-11-19 11:47:04 -05:00
Cheng Zhao
e12c0dcf66 Merge pull request #15618 from electron/system_netwok_context
fix: create system network context for global requests
2018-11-19 11:25:34 +09:00
Andy Dill
4f45b72381 fix: package swiftshader binaries (#15380) 2018-11-17 19:24:29 +11:00
Jeremy Apthorp
81843f0dfb ci: temporarily disable verify ffmpeg & mksnapshot tests on vsts (#15732)
* ci: temporarily disable verify ffmpeg test on vsts

* also disable verify-mksnapshot
2018-11-15 16:35:31 -08:00
Jeremy Apthorp
20116d7f05 fix: always disable setuid sandbox on linux (#15722) 2018-11-15 13:27:56 -08:00
Jeremy Apthorp
0642be296d fix: crash in sandbox on linux when getting execPath (#15701) 2018-11-15 12:59:01 -08:00
Jeremy Apthorp
c8860d006b fix: restore missing .lproj directories (#15721)
the empty lproj directories help macOS to understand what locales the app supports
2018-11-15 09:30:45 -08:00
John Kleinschmidt
b53a858400 build: use different directory for generated breakpad symbols (#15716) 2018-11-14 12:47:01 -08:00
Shelley Vohr
511dc9a80b feat: add numpad accelerator strings (#15689) 2018-11-14 14:02:18 -05:00
deepak1556
7e1168c518 fix: return system shared url loader for content layer 2018-11-14 12:42:24 +05:30
deepak1556
57356036db fix: initialize system network context from IOThread 2018-11-14 12:42:24 +05:30
deepak1556
666a106fa8 refactor: move IOThread and NetLog ownership to g_browser_process 2018-11-14 12:42:24 +05:30
deepak1556
414dcfcd07 fix: create system network context for global requests
Global requests currently includes DNS over HTTPS requests,
certain cert validation requests (OCSP, AIA, etc) on some platforms
and geolocation requests.
2018-11-14 12:42:24 +05:30
Shelley Vohr
787dbbe610 feat: add about panel customization on linux (#15658) 2018-11-13 17:12:24 -05:00
Jeremy Apthorp
bc9a7806a5 chore: remove add_atomic_lib_to_dependencies_even_for_sysroot_builds.patch (#15692) 2018-11-13 10:00:25 -08:00
Shelley Vohr
565e4c5910 chore: fix window width in spec for win (#15693) 2018-11-13 11:31:03 -05:00
Pedro Pontes
8f35198bfb fix: window.open site instance should belong to same browsing instance (#15216) 2018-11-12 22:01:43 +01:00
Shelley Vohr
c06f023313 feat: allow partial setting of window bounds (#15677)
Extend the existing win.setBounds functionality by allowing developers to partially update bounds without being forced to pass in all four bounds values. No existing functionality is altere
2018-11-12 15:31:14 -05:00
Alexey Kuzmin
0c46a7a4d9 ci: use config version 2.1 on CircleCI (#15665) 2018-11-12 11:22:21 -08:00
Jacob
b21dbdb20d fix: bypass DOM storage quota (#15596) 2018-11-12 18:19:01 +01:00
Shelley Vohr
c9d0960f47 docs: remove unsafe eval section of security tutorial (#15675)
* docs: remove unsafe eval section of security tutorial

* lintfix
2018-11-12 11:13:48 -05:00
Shelley Vohr
a54dd1085a feat: expose showAboutPanel for MacOS (#15674) 2018-11-11 22:52:27 -05:00
Samuel Attard
1cf28e8b75 build: auto-gen libnotify_loader.cc (#15648) 2018-11-10 14:21:40 -05:00
Shelley Vohr
9fd98bb27b refactor: no longer require submenu for services menuitem (#15656) 2018-11-10 12:47:55 -05:00
Nitish Sakhawalkar
025aa49f67 fix: NSWindow crash happening on macos 10.9 (#15660) 2018-11-10 14:53:35 +01:00
Nitish Sakhawalkar
5994bf6745 fix: Menu accelerators not working (#15094)
This change fixes the regression in the menu accelerators working in linux, on some environments.
2018-11-09 13:54:16 -08:00
John Kleinschmidt
9e2b7dbea5 ci: add testing for mksnapshot (#15627)
* ci: add testing for mksnapshot
2018-11-09 10:54:17 -04:00
Samuel Attard
edf063bae3 chore: remove deprecated touch-bar API (#15650) 2018-11-09 17:00:19 +11:00
Samuel Attard
e7b2b93cee chore: re-enable DCHECK in node_debugger (#15649) 2018-11-09 14:44:31 +11:00
Robo
82322968a3 refactor: printing implementation (#15143)
* refactor: basic printing

* move build files to chromium_src/BUILD.gn
* remove dependency on chrome prerender sources

* spec: move printing specs behind feature flag

* build: register pdf compositor service
2018-11-09 14:42:34 +11:00
Jeremy Apthorp
53642b2b17 chore: restore process_metrics_win.cc dcheck (#15631) 2018-11-09 00:51:53 +01:00
Jeremy Apthorp
fb9cf86836 chore: restore node.cc IsPseudoElement dcheck (#15634) 2018-11-08 13:20:20 -08:00
Jeremy Apthorp
faf6c5ad29 chore: restore blink loader dchecks (#15638) 2018-11-08 16:38:01 -04:00
Jeremy Apthorp
4649d1c73b chore: restore webui-related bindings DCHECK (#15633) 2018-11-08 11:37:00 -08:00
Jeremy Apthorp
703cb6deea chore: restore WeakReference dcheck (#15629) 2018-11-08 11:36:37 -08:00
Samuel Attard
9aed2a465f fix: send NSView* as the response to getNativeWindowHandle() instead of a null handle (#15521) 2018-11-08 09:03:19 -08:00
Cheng Zhao
746beb0d8b fix: destroy WebContents synchronously on shutdown (#15541) 2018-11-08 07:57:28 -08:00
Alexey Kuzmin
6162d9090d chore: remove the 'get-patch' script (#15586)
It is obsolete now, "script/git-export-patches"
should be used instead.
2018-11-08 16:37:00 +01:00
Jeremy Apthorp
11223cbc9b chore: restore viz dcheck (#15632) 2018-11-08 11:16:47 -04:00
Jeremy Apthorp
7e0e12b8a3 fix: match Chrome's font fallback behavior (#15486)
* fix: match Chrome's font fallback behavior

Fixes #15481

* add a cache

* add test

* another test

* fix tests

* arial -> dejavu sans on linux apparently?
2018-11-08 10:51:51 -04:00
Heilig Benedek
ca2d74e118 feat: add methods to allow customization of save dialog during will-download event (#15497)
* feat: add method to DownloadItem that allows customization of dialog options

* docs: add docs for get/setSaveDialogOptions

* add missing copy constructor for DialogSettings on mac and linux

* fix: don't filter dialog options for mas build, don't return properties

* test: add test for get/setSaveDialogOptions

* fix: remove openDevtools added for debugging

* test: fix failing test because of new event parameter

* docs: use SaveDialogOptions instead of Object
2018-11-08 10:51:06 -04:00
Jeremy Apthorp
673004b878 chore: restore kill_win.cc dcheck (#15630) 2018-11-08 10:40:34 -04:00
Michelle Tilley
2a8e8a0603 fix: make certain values on process read-only (#15628)
* docs: Add 'worker' as a possible value for `process.type`

* fix: make certain properties on `process` read only:

* `mas`
* `windowsStore`
* `versions.electron`
* `versions.chrome`
* `type`
* `pid`
* `sandboxed`
2018-11-08 10:28:06 -04:00
Samuel Attard
4e53019b75 docs: add a mojave dark mode guide (#15267) 2018-11-07 18:16:47 -06:00
Shelley Vohr
833269ffde fix: correctly display zoom in accelerator on mac (#15502)
* fix: correctly display zoom in accelerator on mac

* add release to patch info
2018-11-07 13:42:30 -08:00
Shelley Vohr
e9ba26f50e feat: allow registering multiple shortcuts (#15542)
This PR allows for multiple global shortcuts to be registered such that triggering any of them calls the same callback.
2018-11-07 09:40:38 -08:00
Jeremy Apthorp
20a540e680 chore: add explanation to resource_file_conflict.patch (#15612)
* chore: add explanation to resource_file_conflict.patch

* Update resource_file_conflict.patch
2018-11-07 11:11:01 -04:00
Jeremy Apthorp
bf3edf8f87 fix: correctly package Login Helper in mas builds (#15610) 2018-11-06 20:15:01 -08:00
Jeremy Apthorp
10969b8c3c fix: make feature strings more robust to whitespace (#15602)
Fixes #15594
2018-11-06 15:52:06 -08:00
John Kleinschmidt
c52cf01a3c build: add v8_context_snapshot_generator to mksnapshot zip (#15606)
v8_context_snapshot_generator is needed when creating custom snapshots with mksnapshot
2018-11-06 18:57:52 -04:00
Charles Kerr
1672c95de3 better release notes (#15169)
* fix: use PR 'Notes' comment in release notes

* fix: follow links in roller-bot PRs

* refactor: better reference point version selection

* if we're a stable release, use the current brnach's previous stable
* if we're a beta release, use the current branch's previous beta
* if no match found, use the newest stable that precedes this branch

* refactor: dedup the caching functions' code

* refactor: partially rewrite release note generator

* parse release notes comments from PRs
* do not display no-notes PRs
* handle roller-bot commits by following cross-repo commits/PRs
* minor tweaks to note rendering, e.g. capitalization

* fix: fix lint:js script typo

* fix: copy originalPr value to rollerbot PR chains

* fix: handle more cases in release notes generator

* handle force-pushes where no PR
* better type guessing on pre-semantic commits

* fix: handle more edge cases in the note generator

* better removal of commits that landed before the reference point
* ensure '<!-- One-line Change Summary Here-->' is removed from notes
* handle more legacy commit body notes e.g. "Chore(docs)"
* check for fix markdown in PR body e.g. a link to the issue page

* chore: tweak code comments

* refactor: easier note generator command-line args

* refactor: group related notes together

* feat: query commits locally for gyp and gn deps

* chore: slightly better filtering of old commits

* feat: omit submodule commits for .0.0 releases

More specifically, only include them if generating release
notes relative to another release on the same branch.

Before that first release, there's just too much churn.

* refactor: make release-notes usable as a module

Calling it from the command line and from require()() now
do pretty much the same thing.

* refactor: passing command-line args means use HEAD

* chore: plug in the release note generator

* feat: support multiline 'Notes:' messages.

xref: https://github.com/electron/trop/pull/56
xref: https://github.com/electron/clerk/pull/16

* remove accidental change in package.json

* simplify an overcomplicated require() call

* Don't use PascalCase on releaseNotesGenerator()

* Remove code duplication in release notes warnings

* remove commented-out code.

* don't use single-character variable names.

For example, use 'tag' instead of 't'. The latter was being
used for map/filter arrow function args.

* Look for 'backport' rather than 'ackport'.

* Wrap all block statements in curly braces.

* fix tyop

* fix oops

* Check semver validity before calling semver.sort()
2018-11-06 16:06:11 -04:00
Shelley Vohr
649f04b7bc chore: add simple set/unset loginitem spec (#15595) 2018-11-06 11:31:32 -08:00
Jeremy Apthorp
934a7fc118 refactor: don't use AppIndicatorIcon directly (#15536) 2018-11-06 11:00:37 -08:00
Alexey Kuzmin
3a3b197327 fix: update the "SSL_get_tlsext_status_type" patch (#15587)
It has been upstreamed by @nornagon
c0c9001440
2018-11-06 08:07:09 -08:00
Shelley Vohr
ece4c81c1a fix: hiddenInset titleBar console spam (#15576) 2018-11-05 21:02:46 -08:00
Shelley Vohr
dcd2bf451d refactor: remove 10.9 specific menu code (#15578) 2018-11-05 20:42:19 -08:00
Jeremy Apthorp
87565ec667 docs: add more links to the devtools protocol docs (#15581)
I missed the link at the top when I was skimming this documentation
2018-11-05 16:53:18 -08:00
Jeremy Apthorp
2e1c50c891 chore: fix missing \n at end of exported patches (#15579) 2018-11-05 13:50:35 -08:00
Jeremy Apthorp
77f69cbe08 chore: remove unused use_transparent_window.patch (#15534)
Unneeded since 6f2f761df3 (diff-0bbbec38254ebb1146b15c15277c6aa1)
2018-11-05 13:19:21 -08:00
Shelley Vohr
c60745b8a3 fix: use NSURL path for receipt url (#15355) 2018-11-05 09:49:51 -08:00
Alexey Kuzmin
32ea2b67f0 build: store the patches config in a json file (#15395) 2018-11-05 17:31:28 +01:00
Alexey Kuzmin
9b05381acc build: make pyyaml an optional dependency (#15565) 2018-11-05 11:19:00 -04:00
Milan Burda
a19d20cfb8 refactor: more cleanup of chromium_src (#15424) 2018-11-05 10:29:33 -04:00
trop[bot]
c422011d58 docs: fix the "second-instance" event handler signature in the docs (#15551) 2018-11-03 11:37:59 +11:00
Heilig Benedek
1f5e0c42f3 style: no need for done call in sync tests (#15550) 2018-11-02 10:50:17 -04:00
nixxquality
6e6ab9b907 Fix callback info for showSaveDialog and showOpenDialog (#15549) 2018-11-02 10:47:19 -04:00
Samuel Attard
7f73240fd5 chore: use chromes auto generated definition of CHROME_VERSION_STRING (#15275) 2018-11-02 23:32:33 +11:00
Jeremy Apthorp
932ffdc1e1 test: fix a possible race condition in sendInputEvent test (#15530) 2018-11-01 10:25:46 -07:00
Samuel Attard
fe8965efa2 fix: use sendToAll method correctly in chrome-api (#15518) 2018-11-01 07:16:49 -07:00
Samuel Attard
bdef033459 docs: add Size as an option for pageSize in docs for printToPDF (#15519) 2018-11-01 09:00:33 -04:00
Samuel Attard
6ed70327f5 chore: publish to the latest tag correctly when releasing old versions (#15274) 2018-11-01 12:27:35 +11:00
Samuel Attard
e9fab747ec fix: explicitly set windowsHide to the old node default (#15469)
fixes #15467
2018-11-01 10:53:11 +11:00
Charles Kerr
feb31d088b fix: honor properties.showHiddenFiles on Linux (#15503)
Previously the code only set the GtkFileChooser's property if `properties.showHiddenFiles` was set. 

This PR unconditionally sets the GtkFileChooser's property so that hidden files will be hidden if `properties.showHiddenFiles` was not set.
2018-10-31 16:13:01 -05: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
Shelley Vohr
b2e1a93177 refactor: remove hardcoded google api key (#15478)
* refactor: remove hardcoded Google API key

* address changes from review
2018-10-31 07:49:44 -07:00
Samuel Attard
86064a7bd8 docs: add return type for subscribeNotification (#15490) 2018-10-31 10:24:50 -04:00
Heilig Benedek
6d2a088be9 feat: detect high contrast color mode (#15493)
* feat: add event and method to detect high contrast color mode

* docs: add docs for isHighContrastColorScheme and high-contrast-color-scheme-changed

* refactor: correct type of contrast
2018-10-31 10:22:18 -04:00
Heilig Benedek
aa6f7a5d9f fix: don't append Shift modifier text twice to accelerators (#15400)
* fix: don't append Shift modifier text twice to accelerators

* style: use the new way of creating patches

* test: add menu item accelerator display tests

* fix: allocate accelerator on the stack

* fix: adjust tests to match expected behavior on mac
2018-10-31 10:13:44 -04:00
Shelley Vohr
1d81d1a706 chore: re-enable protocol partition request spec (#15483) 2018-10-31 07:12:32 -05:00
Jeremy Apthorp
e345209f91 chore: remove webui_in_subframes patch (#15475) 2018-10-30 18:19:30 -05:00
Shelley Vohr
29964079ae chore: re-enable failing netlog spec (#15484) 2018-10-30 17:45:05 -05:00
Shelley Vohr
94f853c654 chore: re-enable execFileSync binary exec spec (#15476) 2018-10-30 15:45:46 -04:00
David Sanders
bae652f46d docs: http protocol handlers can access headers (#15431)
* test: check http protocol handlers can access headers

* docs: http protocol handlers can access headers
2018-10-30 11:37:49 -07:00
Samuel Attard
59ee2859a7 chore: update versioning doc for nightlies (#15468) 2018-10-30 10:33:50 -07:00
Shelley Vohr
2bd94293e0 doc: clarify menu item properties not available top-level (#15458) 2018-10-29 15:04:25 -05:00
David Sanders
c93973ab7a docs: fix protocol.isProtocolHandled documentation (#15430) 2018-10-29 15:23:23 -04:00
Heilig Benedek
894ae1b3f5 refactor: Improve accessibility of menus (#15302)
* refactor: improve menubar keyboard accessibility

* fix: create a temporary widget for tray icon context menu

* fix: focus menu bar with Alt when autohide is off

* fix: make menu bar focus work more like the native menus

* fix: only focus menu bar if it's not already focused

* fix: track accelerator registration to avoid duplicates

* docs: add docs for & notation in app menu item names

* fix: only try to activate accelerator if it's registered

* fix: add friend to monitor window focus change

* style: add <memory> include
2018-10-29 13:08:46 -05:00
John Kleinschmidt
00daff6ac8 docs: add Azure Pipelines status (#15455) 2018-10-29 12:18:34 -04:00
Milan Burda
f921df7ad1 chore: move spellcheck out of chromium_src (#15407) 2018-10-26 10:34:57 -07:00
Shelley Vohr
bea4de9262 fix: use gio as default linux trash impl (#15399)
* fix: use gio as default linux trash impl

* doc: add ELECTRON_TRASH env var
2018-10-26 08:36:56 -07:00
Shelley Vohr
7a03e5f0b2 doc: correct ipcRenderer sendTo windowId param (#15403) 2018-10-26 10:18:47 -05:00
Milan Burda
405edebc51 chore: remove unused chrome_notification_types.h (#15409)
* chore: remove unused chrome_notification_types.h

* chore: remove dummy simple_message_box.h
2018-10-26 10:16:24 -05:00
Milan Burda
d56617e5d0 chore: avoid appending git version to the exported patches (#15389)
* chore: avoid appending git version to the exported patches

* fix no-eol at end of v8 patch
2018-10-26 12:52:59 +05:30
Alexey Kuzmin
ec4a0e096f ci: run more Chromium unit tests (#15363)
* test: add an option to native tests runner to run also disabled tests

* ci: run all native tests on clean Chromium

* ci: update the disabled tests list for native unittests
2018-10-25 14:28:50 -04:00
Shelley Vohr
d21d83cfc8 fix: folder open not working in devtools (#15387) 2018-10-25 08:36:48 -07:00
Milan Burda
1f3a89197c chore: bump minimum supported macOS version to 10.10 (#15357) 2018-10-25 10:59:42 +02:00
Cheng Zhao
2f3a8ecd42 fix: child window with nativeWindowOpen should disable node integration (#15213)
* fix: child window with nativeWindowOpen should disable node integration

* Revert "fix: do not enable node integration in child window if not enabled (#15076)"

This reverts commit 0252d7686c.

This patch is not needed anymore since we are force disabling node integration
for child windows.
2018-10-25 15:31:07 +09:00
Andy Dill
7a23980f4b fix: set NSResizableWindowMask at init time (#15106) 2018-10-25 10:34:11 +09:00
John Kleinschmidt
9086b8067b ci: make sure brew installed node is available in path (#15377) 2018-10-25 11:40:23 +11:00
Islam Sharabash
3b6f0d83e1 fix: allow stream protocols to return headers with multiple values (#14887)
* fix: allow stream protocols to return headers with multiple values

This allows stream protocols to return headers with multiple values as
an array of values.

Fixes https://github.com/electron/electron/issues/14778

* Prefer ConvertFromV8

* Cleanup header conversion

1. Deduplicate the code by using a lambda
2. Remove duplicate calls to headers->Get(key)

* Fix broken test

Headers with multiple values are now being converted correctly, this
test asserted the wrong behavior.
2018-10-25 11:34:20 +11:00
Cheng Zhao
6fa940f2c1 chore: set env when invoking gn (#15354) 2018-10-24 11:25:13 -07:00
Jeremy Apthorp
335e9f68b7 chore: deprecate apply-patches in favour of git-{import,export}-patches (#15300) 2018-10-24 11:24:11 -07:00
Alexey Kuzmin
4185efa08f build: add conditions to check out Chromium and Node.js (#15319) 2018-10-24 13:50:36 -04:00
Milan Burda
8ba271efba refactor: eliminate brightray (#15240) 2018-10-24 12:49:10 +02:00
Jeremy Apthorp
1d8ab03146 refactor: use public WakeLock interface (#15351)
* refactor: use public WakeLock interface

* remove power_save_blocker visibility patch
2018-10-23 22:12:58 -07:00
Shelley Vohr
1f246229b1 test: convert node spec to expect (#15345) 2018-10-24 11:23:12 +11:00
Jeremy Apthorp
9474fc0082 chore: electron alias should be defined with public_deps (#15349) 2018-10-23 17:22:41 -07:00
Jeremy Apthorp
af339f44f4 chore: remove disable_scroll_begin_dcheck.patch (#15233) 2018-10-23 17:21:47 -07:00
Jeremy Apthorp
d03527ae47 build: skip pyproto/ resources in zip.py (#15348) 2018-10-23 17:19:02 -07:00
Shelley Vohr
40874ddec6 fix: update fs methods for options param (#15323)
* fix: update fs methods for options param

* fix: update rest of fs methods with changes
2018-10-23 15:14:05 -07:00
Milan Burda
465dee2c33 refactor: eliminate brightray::BrowserMainParts (#15336) 2018-10-23 13:15:55 -07:00
Charles Kerr
869e0ab14d fix: honor dialog.showMessageBox()'s Icon argument on Linux (#15326)
* Don't call gtk_widget_show_all() on popup dialog.

Fixes #15317.

Notes: Fixed incorrect display of some GtkMessageDialog icons.

The issue is caused because GtkMessageDialog contains an icon widget
which is not shown when there's no associated icon. Our call to
`gtk_widget_show_all()` overrides this, showing the uninitialized
icon widget.

This PR fixes the issue by calling `gtk_widget_show()` where needed
and removing use of `gtk_widget_show_all()` in the message dialog.

* use gtk_dialog_set_default_response() for default

* fix: support icons on gtk+ messageboxes.
2018-10-23 12:44:47 -05:00
Cheng Zhao
260778e0fb feat: add MdTextButton to View APIs (#15328)
* view: make button focusable by default

* view: add MdTextButton

* view: add common methods to LabelButton
2018-10-23 10:57:13 -04:00
Masato Kinugawa
43a8b6039e docs: Fix CSP header setting of sample code (#15313)
* Fix CSP header setting of sample code

Patch for #15310

* Update docs/tutorial/security.md

Co-Authored-By: masatokinugawa <masatokinugawa+github@gmail.com>
2018-10-23 10:38:48 -04:00
Nitish Sakhawalkar
ca4b4709e5 fix: Native window close crash (#15327) 2018-10-23 10:35:00 -04:00
Milan Burda
809bd3757b refactor: eliminate brightray::MainDelegate (#15333) 2018-10-23 14:16:13 +02:00
Milan Burda
fbbb704146 refactor: eliminate brightray::BrowserClient (#15320) 2018-10-23 10:45:41 +02:00
Martin Mädler
a4fefbe836 docs: update Windows build instructions (#14797) 2018-10-22 16:40:39 -04:00
Alexey Kuzmin
5e199152e2 ci: run unittests on clean Chromium (#15125)
* ci: run unittests on clean Chromium

* test: add '--run-only-disabled-tests' flag to "script/native-tests.py"

* ci: add a job to run only disabled unittests

* test: use a different GN config for the native tests

* test: enable blink_common_unittests

* test: disable WeakPtrDeathTest*
2018-10-22 16:12:19 -04:00
Michelle Tilley
13247e592b fix: correct reversed logic in NativeWindowMac::SetEnabled (#15257) 2018-10-22 13:01:45 -07:00
Jeremy Apthorp
044e43397f build: reenable -fwhole-program-vtables (#15228) 2018-10-22 12:07:46 -07:00
Cheng Zhao
cb9be091aa refactor: remove potential double free when managing WebContents (#15280)
* refactor: remove -new-contents-created event

Chromium expects us to take ownership of WebContents in AddNewContents,
we should not create V8 wrapper in WebContentsCreated, otherwise we
would have WebContents being managed by 2 unique_ptr at the same time.

* refactor: make CreateAndTake take unique_ptr
2018-10-22 13:02:25 -05:00
Milan Burda
e8e7edf017 refactor: eliminate brightray::ContentClient (#15303) 2018-10-22 19:04:23 +02:00
Samuel Attard
9262731f2c docs: we don't emit an event object for session-created (#15236) 2018-10-20 19:46:21 -07:00
Alexey Kuzmin
ba7ce7225b build: document env vars expected to be set for the CI configs (#15129)
* ci: add a var for a full path to an Electron build config
* ci: document external environment variables used by the CI build configs
2018-10-20 01:44:36 +02:00
Shelley Vohr
939ee94e67 spec: increase MAS timeout for login items (#15291) 2018-10-19 13:11:11 -07:00
Shelley Vohr
f9f34fd628 fix: ability to fetch separators by id (#15290) 2018-10-19 13:09:40 -07:00
Milan Burda
6d844a0b67 refactor: move media/net from brightray to atom (#15288) 2018-10-19 14:51:43 -04:00
Milan Burda
6f3c46cc7e refactor: move devtools from brightray to atom (#15234) 2018-10-19 15:50:30 +02:00
Samuel Attard
122017e6fa fix: trim app name and productName (#15269)
Fixes #15245
2018-10-19 23:57:55 +11:00
Samuel Attard
16dcc464cf chore: make macOS release builds higher priority to skip the queue (#15276)
Release builds should be run before branch builds on our limited macOS
infra.

Refs: https://docs.microsoft.com/en-us/rest/api/vsts/build/builds/queue?view=vsts-rest-4.1#queuepriority
2018-10-19 23:56:40 +11:00
Cheng Zhao
94aa0762f0 refactor: remove WebContents::CreateFrom (#15241) 2018-10-19 17:52:07 +09:00
Alexey Kuzmin
b3f134de06 test: asyncawaitify one of sandbox related tests (#15252) 2018-10-19 14:28:23 +11:00
Charles Kerr
363712d057 fix: make release-artifact-cleanup executable (#15225)
* fix: make release-artifact-cleanup executable

* fix misc issues in cleanup script
2018-10-18 20:20:43 -07:00
Samuel Attard
8bc0c343fa fix: convert wstring to string on windows in node_bindings (#15266) 2018-10-19 13:11:43 +11:00
Andy Dill
37f2113032 feat: expose setBackgroundThrottling api (#15104) 2018-10-19 11:32:22 +11:00
Eric
10db2bce4e fix: loading of devtools extensions on startup (#13844)
* Fix loading of devtools extensions on startup

The persisted DevTools Extensions were not being loaded correctly at startup. The `addDevToolsExtension` function was not defined when it was being called. An error was being thrown and ignored, so the whole thing would fail silently. I moved the code to load the extensions to the end of the event handler, so now it works.

* fixup: remove trailing spaces to unblock CI

* fixup: add logging when the Electron Enable Logging env var is set

* Fix linter error on undefined srcDirectory

* fixup: catch exception when loading extension

* Revert "fixup: catch exception when loading extension"

This reverts commit 42c2cf95bc.
2018-10-19 11:22:42 +11:00
Nitish Sakhawalkar
c0db0011ec fix: Convert to lower case in upload symbols script (#15258)
* fix: Convert to lower case in upload symbols script

* fix: Convert to lower case in upload symbols script
2018-10-19 11:18:35 +11:00
Jeremy Apthorp
4de502252b chore: roll node (#15177)
* chore: roll node

brings in electron/node#76 and electron/node#77

* chore: roll node
2018-10-19 10:58:46 +11:00
Shelley Vohr
a0b9d47d5e fix: enable NODE_OPTIONS env var (#15158) 2018-10-19 10:57:28 +11:00
Michelle Tilley
51f3fb9bde fix: correctly enable and disable windows on Windows and Linux (#15184) 2018-10-18 14:23:40 -07:00
Jeremy Apthorp
7cab7b6c7e chore: don't set allow_new_privs in new processes (#15229) 2018-10-18 11:53:26 -07:00
Jeremy Apthorp
993c2413e8 chore: add documentation for blink_file_path.patch (#15235) 2018-10-18 11:40:16 -07:00
Nitish Sakhawalkar
a9ca152069 feat: Spellchecker Async Implementation (#14032)
* feat:Spellchecker Async Implementation

* Adhere to chromium style

* Updating dependency to use gh branch

* Update docs and electron-typescript-definitions module

* Fix lint

* Update electron typescript definitions version

* Update spec

* Address review
2018-10-18 11:11:53 -05:00
John Kleinschmidt
4bbb70de74 ci: make sure git directories don't have unneeded files in them (#15247) 2018-10-18 11:35:40 -04:00
Milan Burda
db37ab1039 feat: add remote.require() / remote.getGlobal() filtering (#15014) 2018-10-18 14:36:45 +11:00
Jeremy Apthorp
dffe4fdd4f chore: remove disabling of ANGLE dchecks (#15227) 2018-10-17 17:00:47 -07:00
Jeremy Apthorp
ac6d815c0e chore: remove desktop_screen_win.patch (#15232)
that function is never called with a null argument (all call-sites are guarded)
2018-10-17 16:59:46 -07:00
Jeremy Apthorp
af9cbb4514 chore: remove unnecessary build_toolchain_win_patch.patch (#15231)
it fixed an issue in the GYP build that is no longer present in the GN build
2018-10-17 16:23:00 -07:00
Jeremy Apthorp
04b7f0d2d6 chore: remove skia/dcheck.patch (#15223) 2018-10-17 13:46:10 -07:00
Jeremy Apthorp
65fa9d2883 chore: remove webrtc patch to disable a warning (#15218) 2018-10-17 12:56:08 -07:00
Milan Burda
508551b81b fix: small refactoring regressions (#15206)
* fix: require('@electron/internal/browser/guest-view-manager')

* fix: add missing crashServicePid used by tests
2018-10-17 12:18:18 -07:00
Milan Burda
a369a4172b refactor: move notifications from brightray to atom (#15209) 2018-10-17 20:01:11 +02:00
Heilig Benedek
4d085c4aae fix: don't call ReadRawDataComplete if it's not necessary (#15185) 2018-10-16 21:57:26 -07:00
Adam Meyer
d43ef97a7b add width to webview iframe (#15195) 2018-10-17 09:33:31 +09:00
AbhilashJN
de1d24b616 docs: change examples in docs to use for..of and async/await (#15196) 2018-10-16 10:41:42 -07:00
Cheng Zhao
0252d7686c fix: do not enable node integration in child window if not enabled (#15076) 2018-10-16 18:10:03 +09:00
Jeremy Apthorp
2a4f5c3284 chore: add --fix option to lint:cpp (#14977)
* chore: add --fix option to lint:cpp

* fix lint errors
2018-10-15 22:59:45 -07:00
Heilig Benedek
af0ac9b95c chore: remove ColorChooser file that's no longer used (#15186) 2018-10-16 13:49:57 +11:00
John Kleinschmidt
90d6b91bf7 build: add temporary debugging to generate_breakpad_symbols.py (#15176) 2018-10-16 11:44:14 +11:00
Jeremy Apthorp
30ccb6aea5 fix: allow renaming electron.exe (#15173) 2018-10-15 17:26:34 -07:00
Nitish Sakhawalkar
0c711f690e fix: add microtask runner and fix promise test (#15071)
* fix: Promise resolution and unit test

* Update to use microtask runner

* Address review
2018-10-16 02:26:47 +11:00
Andy Dill
89bf71e580 fix: preserve background color through reload (#15105)
* fix: preserve background color through reload

* fix: only set backgroundColor on top-level frames
2018-10-14 10:59:47 -07:00
Milan Burda
70c49b78ae fix: Memory > Profiles > Load in DevTools (#15151) 2018-10-14 17:30:49 +11:00
Milan Burda
d3efc52745 feat: add webPreferences.enableRemoteModule option (#13028) 2018-10-13 20:50:07 +03:00
Shelley Vohr
72db5ed7cb fix: split out login item tests (#15135) 2018-10-13 18:52:19 +11:00
Samuel Attard
8907053a9d Revert "fix: export zlib symbols (#15103)" (#15138)
This reverts commit 47b12eee57.
2018-10-13 18:51:18 +11:00
Shelley Vohr
05b7c2bf80 chore: update pr template for no-notes (#15137) 2018-10-12 19:24:19 -07:00
John Kleinschmidt
047cad1a4d ci: Fix timeout when generating breakpad symbols (#15126)
* ci: breakup dump symbols into multiple steps.

* Update step-zip-symbols
2018-10-13 13:02:52 +11:00
Heilig Benedek
a82bcc7e3c refactor: move printing out of chromium_src (#15023)
* remove printing related things from chromium_src

* chore: add printing build flag and patch

* fix: include PrintingService on other platforms too

* fix: printing_handler is only needed on Windows

* fix: format BUILD.gn properly

* fix: rename printing build flag to avoid conflict with chromium

* fix: place previously missed printing calls behind build flag

* fix: accidentally renamed flag in patch file

* fix: don't include all printing strings

* fix: allow ShowItemInFolder and OpenItem to block, fixing a DCHECK crash

* fix: make things compile, some changes got lost while rebasing

* fix: remove rogue line from BUILD.gn

* chore: update patch description

* style: lint fix

* chore: use chromium printing buildflag, move node related stuff out of patch

* revert: remove ScopedAllowBlockingForTesting call

* fix: fix my rebase blooper

* fix: re-add header lost during rebase, update patch

* fix: add <map> include, tweak the patch a bit

* revert: remove rogue diff from patch

* fix: clean up after rebase
2018-10-13 12:57:04 +11:00
Samuel Attard
c806c465fa chore: mark browserview api as not-experimental (#15117)
I think it's safe to say this API has been around long enough to be considered past the experimental phase 👍
2018-10-13 12:31:58 +11:00
Shelley Vohr
6fc2a2a051 fix: natively implement LoginItem functions (#15010) 2018-10-12 15:19:27 -07:00
Jeremy Apthorp
e61b88fc2a build: add v8_embedder_string to build args (#15039) 2018-10-12 08:26:35 -07:00
Andy Dill
47b12eee57 fix: export zlib symbols (#15103) 2018-10-12 10:17:06 -04:00
Jeremy Apthorp
783ee3e315 chore: roll node (#15097)
picks up:
- electron/node#73: fix: export libuv symbols
- electron/node#74: fix: include names.h in zlib header package
2018-10-12 09:39:11 -04:00
Sitong Peng
9e7bbcd8f6 docs: app.getLoginItemStatus -> app.getLoginItemSettings (#15093) 2018-10-12 09:23:37 -04:00
Felix Rieseberg
d1b2d1a10e fix: Remove statSyncNoException for good (#15092)
* fix: Small JS assignment error

* fix: Call the right og method

* fix: Goodbye, statSyncNoException
2018-10-12 19:43:19 +11:00
Heilig Benedek
5ef5d60f77 refactor: move color_chooser out of chromium_src (#15091)
* chore: move color_chooser out of chromium_src

* fix: remove deleted source files

* fix: add build flag, patch and build instructions for ColorChooser
2018-10-12 10:53:46 +11:00
Heilig Benedek
95696c9456 refactor: move text-to-speech out of chromium_src (#15024)
* chore: add tts patch and buildflag, makes tts work again

* chore: add tts patch and buildflag, makes tts work again

* fix: make things compile

* build: add relevant tts files for linux

* fix: update patch and patch description, should now compile on mac

* build: move chrome specific sources under chromium_src:chrome target

* build: enable_extensions again

We are depending on them, check `//electron/chromium_src:chrome` target
for more info.

* fix: update tts.patch to receive notifications about browser context destruction

* fix: extend browser process from chrome layer

The global state g_browser_process is shared between //chrome
and //electron.

* spec: add basic speech synthesis test

* spec: skip speech tests on ci

* build: fix compilation on windows
2018-10-11 08:52:12 -05:00
Alexey Kuzmin
5788600c46 Revert "FIXME: disable isCurrentlyAudible test to unblock merge" (#15078)
This reverts commit c8a9a3f63c.
2018-10-11 08:26:37 -05:00
Shelley Vohr
ba9a55c391 fix: update and enable osr (#15046)
* fix: update and enable osr

* fix: update MacHelper view to call GetNativeView

* style: move stuff around to make more sense

* chore: move OSR related things in SetOwnerWindow to CommonWebContentsDelegate

* fix: avoid crashing when GetOffscreenRenderWidgetHostView is called

* fix: specify default for current_device_scale_factor_
2018-10-11 09:14:01 -04:00
Samuel Attard
d46834265f chore: make FILEVERSION 4th component 0 on nightly builds (#15074)
Fixes #14900
2018-10-11 09:11:20 -04:00
Alexey Kuzmin
99f5f17a8d build: add "apply_patches" flag to gclient (#15079) 2018-10-11 15:10:26 +02:00
Alexey Kuzmin
6c3d29712f test: update notification_provenance.patch to fix unittests compilation (#15060) 2018-10-11 10:38:48 +02:00
Jeremy Apthorp
ce26687577 refactor: remove global_shortcut_listener from chromium_src/ (#15070) 2018-10-11 16:02:58 +11:00
2159 changed files with 121467 additions and 177022 deletions

File diff suppressed because it is too large Load Diff

7
.circleci/fix-known-hosts.sh Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
set -e
mkdir -p ~/.ssh
echo "|1|B3r+7aO0/x90IdefihIjxIoJrrk=|OJddGDfhbuLFc1bUyy84hhIw57M= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
|1|rGlEvW55DtzNZp+pzw9gvyOyKi4=|LLWr+7qlkAlw3YGGVfLHHxB/kR0= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" >> ~/.ssh/known_hosts

View File

@@ -1,4 +1,3 @@
*
!tools/xvfb-init.sh
!tools/run-electron.sh
!build/install-build-deps.sh

View File

@@ -1,7 +1,7 @@
# These env vars are only necessary for creating Electron releases.
# See docs/development/releasing.md
APPVEYOR_TOKEN=
APPVEYOR_CLOUD_TOKEN=
CIRCLE_TOKEN=
ELECTRON_GITHUB_TOKEN=
VSTS_TOKEN=

View File

@@ -1,12 +1,36 @@
{
"extends": "standard",
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
"env": {
"browser": true
},
"rules": {
"semi": ["error", "always"],
"no-var": "error",
"no-unused-vars": 0,
"no-global-assign": 0,
"guard-for-in": 2,
"@typescript-eslint/no-unused-vars": ["error", {
"vars": "all",
"args": "after-used",
"ignoreRestSiblings": false
}],
"prefer-const": ["error", {
"destructuring": "all"
}]
}
}],
"node/no-deprecated-api": 0
},
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module"
},
"overrides": [
{
"files": "*.js",
"rules": {
"@typescript-eslint/no-unused-vars": "off"
}
}
]
}

29
.github/CODEOWNERS vendored
View File

@@ -3,19 +3,20 @@
# https://help.github.com/articles/about-codeowners
# https://git-scm.com/docs/gitignore
# Everything that falls through the cracks:
* @electron/reviewers
# Most stuff in here is owned by the Community & Safety WG...
/.github/* @electron/wg-community
# filename patterns
*browser_view* @electron/browserview
*notification* @electron/notifications
*pdf* @electron/printing
*printing* @electron/printing
*updater* @electron/updater
# ...except the Admin WG maintains this file.
/.github/CODEOWNERS @electron/wg-admin
# directories
/.github/ @electron/electrocats
/default_app/ @electron/docs
/docs/ @electron/docs
/docs-translations/ @electron/i18n
/npm/ @electron/electrocats
# Upgrades WG
/patches/ @electron/wg-upgrades
DEPS @electron/wg-upgrades
# Docs & Tooling WG
/default_app/ @electron/wg-docs-tools
/docs/ @electron/wg-docs-tools
# Releases WG
/npm/ @electron/wg-releases
/script/release @electron/wg-releases

View File

@@ -1,38 +0,0 @@
<!--
Thanks for opening an issue! A few things to keep in mind:
- The issue tracker is only for bugs and feature requests.
- Before reporting a bug, please try reproducing your issue against
the latest version of Electron.
- If you need general advice, join our Slack: http://atom-slack.herokuapp.com
-->
* Output of `node_modules/.bin/electron --version`:
* Operating System (Platform and Version):
<!-- If this used to work -->
* Output of `node_modules/.bin/electron --version` on last known working Electron version (if applicable):
### Expected behavior
<!-- What do you think should happen? -->
### Actual behavior
<!-- What actually happens? -->
### How to reproduce
<!--
Your best chance of getting this bug looked at quickly is to provide a REPOSITORY that can be cloned and run.
You can fork https://github.com/electron/electron-quick-start and include a link to the branch with your changes.
If you provide a URL, please list the commands required to clone/setup/run your repo e.g.
$ git clone $YOUR_URL -b $BRANCH
$ npm install
$ npm start || electron .
-->

View File

@@ -4,29 +4,55 @@ about: Create a report to help us improve Electron
---
* Output of `node_modules/.bin/electron --version`:
* Operating System (Platform and Version):
* Output of `node_modules/.bin/electron --version` on last known working Electron version (if applicable):
<!-- As an open source project with a dedicated but small maintainer team, it can sometimes take a long time for issues to be addressed so please be patient and we will get back to you as soon as we can.
-->
**Expected Behavior**
A clear and concise description of what you expected to happen.
### Preflight Checklist
<!-- Please ensure you've completed the following steps by replacing [ ] with [x]-->
**Actual behavior**
A clear and concise description of what actually happened.
* [ ] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [ ] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
* [ ] I have searched the issue tracker for an issue that matches the one I want to file, without success.
**To Reproduce**
Your best chance of getting this bug looked at quickly is to provide a REPOSITORY that can be cloned and run.
### Issue Details
You can fork [electron-quick-start](https://github.com/electron/electron-quick-start) and include a link to the branch with your changes.
* **Electron Version:**
* <!-- (output of `node_modules/.bin/electron --version`) e.g. 4.0.3 -->
* **Operating System:**
* <!-- (Platform and Version) e.g. macOS 10.13.6 / Windows 10 (1803) / Ubuntu 18.04 x64 -->
* **Last Known Working Electron version:**
* <!-- (if applicable) e.g. 3.1.0 -->
### Expected Behavior
<!-- A clear and concise description of what you expected to happen. -->
### Actual Behavior
<!-- A clear and concise description of what actually happened. -->
### To Reproduce
<!--
Your best chance of getting this bug looked at quickly is to provide an example.
-->
<!--
For bugs that can be encapsulated in a small experiment, you can use Electron Fiddle (https://github.com/electron/fiddle) to publish your example to a GitHub Gist and link it your bug report.
-->
<!--
If Fiddle is insufficient to produce an example, please provide an example REPOSITORY that can be cloned and run. You can fork electron-quick-start (https://github.com/electron/electron-quick-start) and include a link to the branch with your changes.
-->
<!--
If you provide a URL, please list the commands required to clone/setup/run your repo e.g.
```sh
$ git clone $YOUR_URL -b $BRANCH
$ npm install
$ npm start || electron .
```
**Screenshots**
If applicable, add screenshots to help explain your problem.
-->
**Additional Information**
Add any other context about the problem here.
### Screenshots
<!-- If applicable, add screenshots to help explain your problem. -->
### Additional Information
<!-- Add any other context about the problem here. -->

View File

@@ -4,14 +4,24 @@ about: Suggest an idea for Electron
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is.
<!-- As an open source project with a dedicated but small maintainer team, it can sometimes take a long time for issues to be addressed so please be patient and we will get back to you as soon as we can.
-->
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
### Preflight Checklist
<!-- Please ensure you've completed the following steps by replacing [ ] with [x]-->
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
* [ ] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [ ] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
* [ ] I have searched the issue tracker for a feature request that matches the one I want to file, without success.
**Additional context**
Add any other context or screenshots about the feature request here.
### Problem Description
<!-- Is your feature request related to a problem? Please add a clear and concise description of what the problem is. -->
### Proposed Solution
<!-- Describe the solution you'd like in a clear and concise manner -->
### Alternatives Considered
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
### Additional Information
<!-- Add any other context about the problem here. -->

View File

@@ -1,13 +0,0 @@
---
name: Mac App Store Private API Rejection
about: Your app was rejected from the Mac App Store for using private API's
---
* Electron Version:
**Rejection Email**
Paste the contents of your rejection email here, censoring any private information such as app names.
**Additional Information**
Add any other context about the problem here.

View File

@@ -0,0 +1,25 @@
---
name: Mac App Store Private API Rejection
about: Your app was rejected from the Mac App Store for using private API's
---
<!-- As an open source project with a dedicated but small maintainer team, it can sometimes take a long time for issues to be addressed so please be patient and we will get back to you as soon as we can.
-->
### Preflight Checklist
<!-- Please ensure you've completed the following steps by replacing [ ] with [x]-->
* [ ] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [ ] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
### Issue Details
* **Electron Version:**
* <!-- (output of `node_modules/.bin/electron --version`) e.g. 4.0.3 -->
### Rejection Email
<!-- Paste the contents of your rejection email here, censoring any private information such as app names.-->
### Additional Information
<!-- Add any other context about the problem here. -->

View File

@@ -4,6 +4,7 @@ about: Do not create an issue for security reports, send an email to security@el
---
Do not create an issue for security reports, send an email to:
### Notice
security@electronjs.org
**DO NOT** create an issue for security reports.
Send an email to: **security@electronjs.org**.

View File

@@ -1,4 +1,4 @@
##### Description of Change
#### Description of Change
<!--
Thank you for your Pull Request. Please provide a description above and review
the requirements below.
@@ -6,7 +6,7 @@ the requirements below.
Contributors guide: https://github.com/electron/electron/blob/master/CONTRIBUTING.md
-->
##### Checklist
#### Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [ ] PR description included and stakeholders cc'd
@@ -14,9 +14,8 @@ Contributors guide: https://github.com/electron/electron/blob/master/CONTRIBUTIN
- [ ] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)
- [ ] relevant documentation is changed or added
- [ ] PR title follows semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)
- [ ] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).
#### Release Notes
##### Release Notes
<!-- Used to describe release notes for future release versions. See https://github.com/electron/clerk/blob/master/README.md for details. -->
Notes: <!-- One-line Change Summary Here-->
Notes: <!-- Please add a one-line description for app developers to read in the release notes, or `no-notes` if no notes relevant to app developers. Examples and help on special cases: https://github.com/electron/clerk/blob/master/README.md#examples -->

18
.github/config.yml vendored
View File

@@ -1,13 +1,3 @@
# Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome
# Comment to be posted to on first time issues
newIssueWelcomeComment: |
👋 Thanks for opening your first issue here! If you're reporting a 🐞 bug, please make sure you include steps to reproduce it. We get a lot of issues on this repo, so please be patient and we will get back to you as soon as we can.
To help make it easier for us to investigate your issue, please follow the [contributing guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md).
# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome
# Comment to be posted to on PRs from first time contributors in your repository
newPRWelcomeComment: |
💖 Thanks for opening this pull request! 💖
@@ -36,11 +26,7 @@ newPRWelcomeComment: |
firstPRMergeComment: >
Congrats on merging your first pull request! 🎉🎉🎉
# Configuration for trop - https://github.com/codebytere/trop
watchedProject:
name: Backports
# Users authorized to run manual trop backports
authorizedUsers:
- alexeykuzmin
- ckerr
@@ -48,6 +34,6 @@ authorizedUsers:
- deepak1556
- jkleinsc
- MarshallOfSound
- nitsakh
- miniak
- nornagon
- zcbenz

25
.github/stale.yml vendored
View File

@@ -1,25 +0,0 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 45
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- fixme/bug
- fixme/crash
- fixme/regression
- fixme/security
- blocked
- blocking-stable
- needs-review
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity and is not currently prioritized. It will be closed
in a week if no further activity occurs :)
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: >
If you still think this issue is relevant, please ping a maintainer or
leave a comment!

18
.gitignore vendored
View File

@@ -16,13 +16,6 @@
*.vcxproj.user
*.xcodeproj
/.idea/
/brightray/brightray.opensdf
/brightray/brightray.sdf
/brightray/brightray.sln
/brightray/brightray.suo
/brightray/brightray.v12.suo
/brightray/brightray.vcxproj*
/brightray/brightray.xcodeproj/
/dist/
/external_binaries/
/out/
@@ -44,7 +37,7 @@
/vendor/pyyaml
node_modules/
SHASUMS256.txt
**/yarn.lock
**/package-lock.json
compile_commands.json
.envrc
@@ -63,3 +56,12 @@ spec/.hash
# Eslint Cache
.eslintcache
# Generated native addon files
/spec-main/fixtures/native-addon/echo/build/
# If someone runs tsc this is where stuff will end up
ts-gen
# Used to accelerate CI builds
.depshash

View File

@@ -1,31 +0,0 @@
pool:
vmImage: 'Ubuntu 16.04'
steps:
- bash: |
# "depot_tools" has to be checkout into "//third_party/depot_tools" so pylint.py can a "pylintrc" file.
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git "${AGENT_BUILDDIRECTORY}/third_party/depot_tools"
echo "##vso[task.setvariable variable=PATH]$PATH:${AGENT_BUILDDIRECTORY}/third_party/depot_tools"
displayName: Setup Depot Tools
- bash: |
chromium_revision="$(grep -A1 chromium_version DEPS | tr -d '\n' | cut -d\' -f4)"
buildtools_revision="$(curl -sL "https://chromium.googlesource.com/chromium/src/+/${chromium_revision}/DEPS?format=TEXT" | base64 -d | grep buildtools_revision -A1 | tr -d '\n' | cut -d\' -f4)"
git clone https://chromium.googlesource.com/chromium/buildtools "${AGENT_TEMPDIRECTORY}/buildtools"
(cd "${AGENT_TEMPDIRECTORY}/buildtools" && git checkout "$buildtools_revision")
echo "##vso[task.setvariable variable=CHROMIUM_BUILDTOOLS_PATH]$AGENT_TEMPDIRECTORY/buildtools"
download_from_google_storage --bucket chromium-gn -s "${AGENT_TEMPDIRECTORY}/buildtools/linux64/gn.sha1"
displayName: Download gn binary
- bash: |
# gn.py tries to find a gclient root folder starting from the current dir.
# When it fails and returns "None" path, the whole script fails. Let's "fix" it.
touch .gclient
# Another option would be to checkout "buildtools" inside the Electron checkout,
# but then we would lint its contents (at least gn format), and it doesn't pass it.
npm install
npm run lint
displayName: Run Lint

1063
BUILD.gn

File diff suppressed because it is too large Load Diff

View File

@@ -20,13 +20,23 @@ Issues are created [here](https://github.com/electron/electron/issues/new).
* [Triaging a Bug Report](https://electronjs.org/docs/development/issues#triaging-a-bug-report)
* [Resolving a Bug Report](https://electronjs.org/docs/development/issues#resolving-a-bug-report)
### Issue Maintenance and Closure
* If an issue is inactive for 45 days (no activity of any kind), it will be
marked for closure with `stale`.
* If after this label is applied, no further activity occurs in the next 7 days,
the issue will be closed.
* If an issue has been closed and you still feel it's relevant, feel free to
ping a maintainer or add a comment!
### Issue Closure
Bug reports will be closed if the issue has been inactive and the latest affected version no longer receives support. At the moment, Electron maintains its three latest major versions, with a new major version being released every 12 weeks. (For more information on Electron's release cadence, see [this blog post](https://electronjs.org/blog/12-week-cadence).)
_If an issue has been closed and you still feel it's relevant, feel free to ping a maintainer or add a comment!_
### Languages
We accept issues in *any* language.
When an issue is posted in a language besides English, it is acceptable and encouraged to post an English-translated copy as a reply.
Anyone may post the translated reply.
In most cases, a quick pass through translation software is sufficient.
Having the original text _as well as_ the translation can help mitigate translation errors.
Responses to posted issues may or may not be in the original language.
**Please note** that using non-English as an attempt to circumvent our [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) will be an immediate, and possibly indefinite, ban from the project.
## [Pull Requests](https://electronjs.org/docs/development/pull-requests)
@@ -57,4 +67,4 @@ See [Coding Style](https://electronjs.org/docs/development/coding-style) for inf
## Further Reading
For more in-depth guides on developing Electron, see
[/docs/development](/docs/development/README.md)
[/docs/development](/docs/development/README.md)

77
DEPS
View File

@@ -5,14 +5,17 @@ gclient_gn_args = [
'checkout_android_native_support',
'checkout_libaom',
'checkout_nacl',
'checkout_oculus_sdk'
'checkout_oculus_sdk',
'checkout_openxr'
]
vars = {
'chromium_version':
'69.0.3497.106',
'80.0.3987.158',
'node_version':
'5654c276d0497ff9a0bb0d7550b9073b2e2e7d3f',
'v12.13.0',
'nan_version':
'2ee313aaca52e2b478965ac50eb5082520380d1b',
'boto_version': 'f7574aa6cc2c819430c1f05e9a1a1a666ef8169b',
'pyyaml_version': '3.12',
@@ -21,15 +24,33 @@ vars = {
'boto_git': 'https://github.com/boto',
'chromium_git': 'https://chromium.googlesource.com',
'electron_git': 'https://github.com/electron',
'nodejs_git': 'https://github.com/nodejs',
'requests_git': 'https://github.com/kennethreitz',
'yaml_git': 'https://github.com/yaml',
# KEEP IN SYNC WITH utils.js FILE
'yarn_version': '1.15.2',
# To be able to build clean Chromium from sources.
'apply_patches': True,
# Python interface to Amazon Web Services. Is used for releases only.
'checkout_boto': False,
# To allow in-house builds to checkout those manually.
'checkout_chromium': True,
'checkout_node': True,
'checkout_nan': True,
# It's only needed to parse the native tests configurations.
'checkout_pyyaml': False,
# Python "requests" module is used for releases only.
'checkout_requests': False,
# To allow running hooks without parsing the DEPS tree
'process_deps': True,
# It is always needed for normal Electron builds,
# but might be impossible for custom in-house builds.
'download_external_binaries': True,
@@ -40,6 +61,8 @@ vars = {
True,
'checkout_oculus_sdk':
False,
'checkout_openxr':
False,
'build_with_chromium':
True,
'checkout_android':
@@ -49,31 +72,41 @@ vars = {
}
deps = {
'src':
(Var("chromium_git")) + '/chromium/src.git@' + (Var("chromium_version")),
'src/third_party/electron_node':
(Var("electron_git")) + '/node.git@' + (Var("node_version")),
'src/electron/vendor/pyyaml':
(Var("yaml_git")) + '/pyyaml.git@' + (Var("pyyaml_version")),
'src': {
'url': (Var("chromium_git")) + '/chromium/src.git@' + (Var("chromium_version")),
'condition': 'checkout_chromium and process_deps',
},
'src/third_party/nan': {
'url': (Var("nodejs_git")) + '/nan.git@' + (Var("nan_version")),
'condition': 'checkout_nan and process_deps',
},
'src/third_party/electron_node': {
'url': (Var("nodejs_git")) + '/node.git@' + (Var("node_version")),
'condition': 'checkout_node and process_deps',
},
'src/electron/vendor/pyyaml': {
'url': (Var("yaml_git")) + '/pyyaml.git@' + (Var("pyyaml_version")),
'condition': 'checkout_pyyaml and process_deps',
},
'src/electron/vendor/boto': {
'url': Var('boto_git') + '/boto.git' + '@' + Var('boto_version'),
'condition': 'checkout_boto',
'condition': 'checkout_boto and process_deps',
},
'src/electron/vendor/requests': {
'url': Var('requests_git') + '/requests.git' + '@' + Var('requests_version'),
'condition': 'checkout_requests',
'condition': 'checkout_requests and process_deps',
},
}
hooks = [
{
'name': 'patch_chromium',
'condition': '(checkout_chromium and apply_patches) and process_deps',
'pattern': 'src/electron',
'action': [
'python',
'src/electron/script/apply-patches',
'--project-root=.',
'--commit',
'src/electron/script/apply_all_patches.py',
'src/electron/patches/config.json',
],
},
{
@@ -81,10 +114,8 @@ hooks = [
'pattern': 'src/electron/script/update-external-binaries.py',
'condition': 'download_external_binaries',
'action': [
'python',
'python3',
'src/electron/script/update-external-binaries.py',
'--root-url=http://github.com/electron/electron-frameworks/releases/download',
'--version=v1.4.0',
],
},
{
@@ -93,29 +124,29 @@ hooks = [
'action': [
'python',
'-c',
'import os; os.chdir("src"); os.chdir("electron"); os.system("npm install")',
'import os, subprocess; os.chdir(os.path.join("src", "electron")); subprocess.check_call(["python", "script/lib/npx.py", "yarn@' + (Var("yarn_version")) + '", "install", "--frozen-lockfile"]);',
],
},
{
'name': 'setup_boto',
'pattern': 'src/electron',
'condition': 'checkout_boto',
'condition': 'checkout_boto and process_deps',
'action': [
'python',
'-c',
'import os; os.chdir("src"); os.chdir("electron"); os.chdir("vendor"); os.chdir("boto"); os.system("python setup.py build");',
'import os, subprocess; os.chdir(os.path.join("src", "electron", "vendor", "boto")); subprocess.check_call(["python", "setup.py", "build"]);',
],
},
{
'name': 'setup_requests',
'pattern': 'src/electron',
'condition': 'checkout_requests',
'condition': 'checkout_requests and process_deps',
'action': [
'python',
'-c',
'import os; os.chdir("src"); os.chdir("electron"); os.chdir("vendor"); os.chdir("requests"); os.system("python setup.py build");',
'import os, subprocess; os.chdir(os.path.join("src", "electron", "vendor", "requests")); subprocess.check_call(["python", "setup.py", "build"]);',
],
}
},
]
recursedeps = [

View File

@@ -10,18 +10,21 @@ RUN chmod a+rwx /tmp
# Install Linux packages
ADD build/install-build-deps.sh /setup/install-build-deps.sh
RUN echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections
RUN dpkg --add-architecture i386
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
curl \
libnotify-bin \
locales \
lsb-release \
nano \
python-dbusmock \
python-dbus \
python-pip \
python-setuptools \
sudo \
vim-nox \
wget \
g++-multilib \
libgl1:i386 \
&& /setup/install-build-deps.sh --syms --no-prompt --no-chromeos-fonts --lib32 --arm \
&& rm -rf /var/lib/apt/lists/*
@@ -33,6 +36,9 @@ RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
# crcmod is required by gsutil, which is used for filling the gclient git cache
RUN pip install -U crcmod
# dbusmock is needed for Electron tests
RUN pip install python-dbusmock
RUN mkdir /tmp/workspace
RUN chown builduser:builduser /tmp/workspace

View File

@@ -19,8 +19,6 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
libcap-dev \
libcups2-dev \
libdbus-1-dev \
libgconf-2-4 \
libgconf2-dev \
libgnome-keyring-dev \
libgtk2.0-0 \
libgtk2.0-dev \

View File

@@ -1,4 +1,4 @@
FROM arm64v8/ubuntu:16.04
FROM arm64v8/ubuntu:18.04
RUN groupadd --gid 1000 builduser \
&& useradd --uid 1000 --gid builduser --shell /bin/bash --create-home builduser
@@ -22,8 +22,6 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
libcap-dev \
libcups2-dev \
libdbus-1-dev \
libgconf-2-4 \
libgconf2-dev \
libgnome-keyring-dev \
libgtk2.0-0 \
libgtk2.0-dev \
@@ -41,7 +39,6 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
nano \
python-setuptools \
python-pip \
python-dbusmock \
sudo \
unzip \
wget \
@@ -56,6 +53,9 @@ RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
# crcmod is required by gsutil, which is used for filling the gclient git cache
RUN pip install -U crcmod
# dbusmock is needed for Electron tests
RUN pip install python-dbusmock
ADD tools/xvfb-init.sh /etc/init.d/xvfb
RUN chmod a+x /etc/init.d/xvfb

1
ELECTRON_VERSION Normal file
View File

@@ -0,0 +1 @@
8.2.0

View File

@@ -1,4 +1,4 @@
Copyright (c) 2013-2018 GitHub Inc.
Copyright (c) 2013-2019 GitHub Inc.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

View File

@@ -2,11 +2,10 @@
[![CircleCI Build Status](https://circleci.com/gh/electron/electron/tree/master.svg?style=shield)](https://circleci.com/gh/electron/electron/tree/master)
[![AppVeyor Build Status](https://windows-ci.electronjs.org/api/projects/status/nilyf07hcef14dvj/branch/master?svg=true)](https://windows-ci.electronjs.org/project/AppVeyor/electron/branch/master)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/4lggi9dpjc1qob7k/branch/master?svg=true)](https://ci.appveyor.com/project/electron-bot/electron-ljo26/branch/master)
[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron?type=dev)
[![Join the Electron Community on Slack](https://atom-slack.herokuapp.com/badge.svg)](https://atom-slack.herokuapp.com/)
:memo: Available Translations: 🇨🇳 🇹🇼 🇧🇷 🇪🇸 🇰🇷 🇯🇵 🇷🇺 🇫🇷 🇹🇭 🇳🇱 🇹🇷 🇮🇩 🇺🇦 🇨🇿 🇮🇹.
:memo: Available Translations: 🇨🇳 🇹🇼 🇧🇷 🇪🇸 🇰🇷 🇯🇵 🇷🇺 🇫🇷 🇹🇭 🇳🇱 🇹🇷 🇮🇩 🇺🇦 🇨🇿 🇮🇹 🇵🇱.
View these docs in other languages at [electron/i18n](https://github.com/electron/i18n/tree/master/content/).
The Electron framework lets you write cross-platform desktop applications
@@ -59,13 +58,13 @@ npm start
## Resources for learning Electron
- [electronjs.org/docs](https://electronjs.org/docs) - all of Electron's documentation
- [electronjs.org/docs](https://electronjs.org/docs) - All of Electron's documentation
- [electron/fiddle](https://github.com/electron/fiddle) - A tool to build, run, and package small Electron experiments
- [electron/electron-quick-start](https://github.com/electron/electron-quick-start) - a very basic starter Electron app
- [electronjs.org/community#boilerplates](https://electronjs.org/community#boilerplates) - sample starter apps created by the community
- [electron/simple-samples](https://github.com/electron/simple-samples) - small applications with ideas for taking them further
- [electron/electron-api-demos](https://github.com/electron/electron-api-demos) - an Electron app that teaches you how to use Electron
- [hokein/electron-sample-apps](https://github.com/hokein/electron-sample-apps) - small demo apps for the various Electron APIs
- [electron/electron-quick-start](https://github.com/electron/electron-quick-start) - A very basic starter Electron app
- [electronjs.org/community#boilerplates](https://electronjs.org/community#boilerplates) - Sample starter apps created by the community
- [electron/simple-samples](https://github.com/electron/simple-samples) - Small applications with ideas for taking them further
- [electron/electron-api-demos](https://github.com/electron/electron-api-demos) - An Electron app that teaches you how to use Electron
- [hokein/electron-sample-apps](https://github.com/hokein/electron-sample-apps) - Small demo apps for the various Electron APIs
## Programmatic usage
@@ -92,6 +91,10 @@ const child = proc.spawn(electron)
Find documentation translations in [electron/i18n](https://github.com/electron/i18n).
## Contributing
If you are interested in reporting/fixing issues and contributing directly to the code base, please see [CONTRIBUTING.md](CONTRIBUTING.md) for more information on what we're looking for and how to get started.
## Community
Info on reporting bugs, getting help, finding third-party tools and sample apps,

View File

@@ -1 +0,0 @@
4.0.0-nightly.20181010

View File

@@ -1,25 +1,74 @@
# The config expects the following environment variables to be set:
# - "GN_CONFIG" Build type. One of {'debug', 'testing', 'release'}.
# - "GN_EXTRA_ARGS" Additional gn arguments for a build config,
# e.g. 'target_cpu="x86"' to build for a 32bit platform.
# https://gn.googlesource.com/gn/+/master/docs/reference.md#target_cpu
# Don't forget to set up "NPM_CONFIG_ARCH" and "TARGET_ARCH" accordningly
# if you pass a custom value for 'target_cpu'.
# - "ELECTRON_RELEASE" Set it to '1' upload binaries on success.
# - "NPM_CONFIG_ARCH" E.g. 'x86'. Is used to build native Node.js modules.
# Must match 'target_cpu' passed to "GN_EXTRA_ARGS" and "TARGET_ARCH" value.
# - "TARGET_ARCH" Choose from {'ia32', 'x64', 'arm', 'arm64', 'mips64el'}.
# Is used in some publishing scripts, but does NOT affect the Electron binary.
# Must match 'target_cpu' passed to "GN_EXTRA_ARGS" and "NPM_CONFIG_ARCH" value.
# - "UPLOAD_TO_S3" Set it to '1' upload a release to the S3 bucket.
# Otherwise the release will be uploaded to the Github Releases.
# (The value is only checked if "ELECTRON_RELEASE" is defined.)
#
# The publishing scripts expect access tokens to be defined as env vars,
# but those are not covered here.
#
# AppVeyor docs on variables:
# https://www.appveyor.com/docs/environment-variables/
# https://www.appveyor.com/docs/build-configuration/#secure-variables
# https://www.appveyor.com/docs/build-configuration/#custom-environment-variables
# Uncomment these lines to enable RDP
#on_finish:
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
version: 1.0.{build}
build_cloud: libcc-20
image: libcc-20-vs2017-15.7.4
image: vs2019-16.3-10.0.18362
environment:
GIT_CACHE_PATH: C:\Users\electron\libcc_cache
DISABLE_CRASH_REPORTER_TESTS: true
ELECTRON_OUT_DIR: Default
ELECTRON_ENABLE_STACK_DUMPING: 1
MOCHA_REPORTER: mocha-multi-reporters
MOCHA_MULTI_REPORTERS: mocha-appveyor-reporter, tap
notifications:
- provider: Webhook
url: https://electron-mission-control.herokuapp.com/rest/appveyor-hook
method: POST
headers:
x-mission-control-secret:
secure: 90BLVPcqhJPG7d24v0q/RRray6W3wDQ8uVQlQjOHaBWkw1i8FoA1lsjr2C/v1dVok+tS2Pi6KxDctPUkwIb4T27u4RhvmcPzQhVpfwVJAG9oNtq+yKN7vzHfg7k/pojEzVdJpQLzeJGcSrZu7VY39Q==
on_build_success: false
on_build_failure: true
on_build_status_changed: false
build_script:
- ps: >-
if(($env:APPVEYOR_PULL_REQUEST_HEAD_REPO_NAME -split "/")[0] -eq ($env:APPVEYOR_REPO_NAME -split "/")[0]) {
Write-warning "Skipping PR build for branch"; Exit-AppveyorBuild
} else {
node script/yarn.js install --frozen-lockfile
if ($(node script/doc-only-change.js --prNumber=$env:APPVEYOR_PULL_REQUEST_NUMBER --prBranch=$env:APPVEYOR_REPO_BRANCH;$LASTEXITCODE -eq 0)) {
Write-warning "Skipping build for doc only change"; Exit-AppveyorBuild
}
}
- echo "Building $env:GN_CONFIG build"
- git config --global core.longpaths true
- cd ..
- md src
- mkdir src
- ps: Move-Item $env:APPVEYOR_BUILD_FOLDER -Destination src\electron
- ps: $env:CHROMIUM_BUILDTOOLS_PATH="$pwd\src\buildtools"
- ps: $env:SCCACHE_PATH="$pwd\src\electron\external_binaries\sccache.exe"
- ps: >-
if ($env:GN_CONFIG -eq 'release') {
$env:GCLIENT_EXTRA_ARGS="--custom-var=checkout_boto=True --custom-var=checkout_requests=True"
$env:GCLIENT_EXTRA_ARGS="$env:GCLIENT_EXTRA_ARGS --custom-var=checkout_boto=True --custom-var=checkout_requests=True"
} else {
$env:NINJA_STATUS="[%r processes, %f/%t @ %o/s : %es] "
}
- >-
gclient config
@@ -27,35 +76,58 @@ build_script:
--unmanaged
%GCLIENT_EXTRA_ARGS%
"https://github.com/electron/electron"
- gclient sync --with_branch_heads --with_tags
- gclient sync --with_branch_heads --with_tags --ignore_locks --break_repo_locks
- cd src
- gn gen out/Default "--args=import(\"//electron/build/args/%GN_CONFIG%.gn\") %GN_EXTRA_ARGS%"
- ps: $env:BUILD_CONFIG_PATH="//electron/build/args/%GN_CONFIG%.gn"
- gn gen out/Default "--args=import(\"%BUILD_CONFIG_PATH%\") %GN_EXTRA_ARGS% cc_wrapper=\"%SCCACHE_PATH%\""
- gn check out/Default //electron:electron_lib
- gn check out/Default //electron:electron_app
- gn check out/Default //electron:manifests
- gn check out/Default //electron/shell/common/api:mojo
- ninja -C out/Default electron:electron_app
- if "%GN_CONFIG%"=="testing" ( python C:\Users\electron\depot_tools\post_build_ninja_summary.py -C out\Default )
- gn gen out/ffmpeg "--args=import(\"//electron/build/args/ffmpeg.gn\") %GN_EXTRA_ARGS%"
- ninja -C out/ffmpeg electron:electron_ffmpeg_zip
- ninja -C out/Default electron:electron_dist_zip
- ninja -C out/Default shell_browser_ui_unittests
- ninja -C out/Default electron:electron_mksnapshot_zip
- ninja -C out/Default electron:hunspell_dictionaries_zip
- ninja -C out/Default electron:electron_chromedriver_zip
- ninja -C out/Default third_party/electron_node:headers
- cmd /C %SCCACHE_PATH% --show-stats
- appveyor PushArtifact out/Default/dist.zip
- appveyor PushArtifact out/Default/shell_browser_ui_unittests.exe
- appveyor PushArtifact out/Default/chromedriver.zip
- appveyor PushArtifact out/ffmpeg/ffmpeg.zip
- 7z a node_headers.zip out\Default\gen\node_headers
- appveyor PushArtifact node_headers.zip
- appveyor PushArtifact out/Default/mksnapshot.zip
- appveyor PushArtifact out/Default/hunspell_dictionaries.zip
- appveyor PushArtifact out/Default/electron.lib
- ps: >-
if ($env:GN_CONFIG -eq 'release') {
ninja -C out/Default third_party/breakpad:dump_syms
# Needed for msdia140.dll on 64-bit windows
$env:Path += ";$pwd\third_party\llvm-build\Release+Asserts\bin"
ninja -C out/Default electron:electron_symbols
}
- if "%GN_CONFIG%"=="release" ( python electron\script\dump-symbols.py -d %cd%\out\Default\electron.breakpad.syms -v)
- ps: >-
if ($env:GN_CONFIG -eq 'release') {
python electron\script\zip-symbols.py
appveyor PushArtifact out/Default/symbols.zip
} else {
# It's useful to have pdb files when debugging testing builds that are
# built on CI.
7z a pdb.zip out\Default\*.pdb
appveyor PushArtifact pdb.zip
}
- python electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.win.%TARGET_ARCH%.manifest
test_script:
# Workaround for https://github.com/appveyor/ci/issues/2420
- set "PATH=%PATH%;C:\Program Files\Git\mingw64\libexec\git-core"
- ps: >-
if ((-Not (Test-Path Env:\ELECTRON_RELEASE)) -And ($env:GN_CONFIG -in "testing", "release")) {
if ((-Not (Test-Path Env:\TEST_WOA)) -And (-Not (Test-Path Env:\ELECTRON_RELEASE)) -And ($env:GN_CONFIG -in "testing", "release")) {
$env:RUN_TESTS="true"
}
- if "%RUN_TESTS%"=="true" ( echo Verifying non proprietary ffmpeg & python electron\script\verify-ffmpeg.py --build-dir out\Default --source-root %cd% --ffmpeg-path out\ffmpeg )
- ps: >-
if ($env:RUN_TESTS -eq 'true') {
New-Item .\out\Default\gen\node_headers\Release -Type directory
@@ -64,17 +136,23 @@ test_script:
echo "Skipping tests for $env:GN_CONFIG build"
}
- cd electron
- if "%RUN_TESTS%"=="true" ( echo Running test suite & npm run test -- --ci )
- if "%RUN_TESTS%"=="true" ( echo Running test suite & node script/yarn test -- --ci --enable-logging)
- cd ..
- if "%RUN_TESTS%"=="true" ( echo Verifying non proprietary ffmpeg & python electron\script\verify-ffmpeg.py --build-dir out\Default --source-root %cd% --ffmpeg-path out\ffmpeg )
- echo "About to verify mksnapshot"
- if "%RUN_TESTS%"=="true" ( echo Verifying mksnapshot & python electron\script\verify-mksnapshot.py --build-dir out\Default --source-root %cd% )
- echo "Done verifying mksnapshot"
deploy_script:
- cd electron
- ps: >-
if (Test-Path Env:\ELECTRON_RELEASE) {
if (Test-Path Env:\UPLOAD_TO_S3) {
Write-Output "Uploading Electron release distribution to s3"
& python script\upload.py --upload_to_s3
& python script\release\uploaders\upload.py --upload_to_s3
} else {
Write-Output "Uploading Electron release distribution to github releases"
& python script\upload.py
& python script\release\uploaders\upload.py
}
} elseif (Test-Path Env:\TEST_WOA) {
node script/release/ci-release-build.js --job=electron-woa-testing --ci=VSTS --armTest --appveyorJobId=$env:APPVEYOR_JOB_ID $env:APPVEYOR_REPO_BRANCH
}

View File

@@ -1,39 +0,0 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_APP_ATOM_CONTENT_CLIENT_H_
#define ATOM_APP_ATOM_CONTENT_CLIENT_H_
#include <set>
#include <string>
#include <vector>
#include "brightray/common/content_client.h"
namespace atom {
class AtomContentClient : public brightray::ContentClient {
public:
AtomContentClient();
~AtomContentClient() override;
protected:
// content::ContentClient:
std::string GetProduct() const override;
std::string GetUserAgent() const override;
base::string16 GetLocalizedString(int message_id) const override;
void AddAdditionalSchemes(Schemes* schemes) override;
void AddPepperPlugins(
std::vector<content::PepperPluginInfo>* plugins) override;
void AddContentDecryptionModules(
std::vector<content::CdmInfo>* cdms,
std::vector<media::CdmHostFilePath>* cdm_host_file_paths) override;
private:
DISALLOW_COPY_AND_ASSIGN(AtomContentClient);
};
} // namespace atom
#endif // ATOM_APP_ATOM_CONTENT_CLIENT_H_

View File

@@ -1,186 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/app/atom_main.h"
#include <cstdlib>
#include <vector>
#if defined(OS_WIN)
#include <windows.h> // windows.h must be included first
#include <atlbase.h> // ensures that ATL statics like `_AtlWinModule` are initialized (it's an issue in static debug build)
#include <shellapi.h>
#include <shellscalingapi.h>
#include <tchar.h>
#include "atom/app/atom_main_delegate.h"
#include "atom/app/command_line_args.h"
#include "atom/common/crash_reporter/win/crash_service_main.h"
#include "base/environment.h"
#include "base/process/launch.h"
#include "base/strings/utf_string_conversions.h"
#include "base/win/windows_version.h"
#include "content/public/app/sandbox_helper_win.h"
#include "sandbox/win/src/sandbox_types.h"
#elif defined(OS_LINUX) // defined(OS_WIN)
#include "atom/app/atom_main_delegate.h" // NOLINT
#include "content/public/app/content_main.h"
#else // defined(OS_LINUX)
#include "atom/app/atom_library_main.h"
#endif // defined(OS_MACOSX)
#include "atom/app/node_main.h"
#include "atom/common/atom_command_line.h"
#include "base/at_exit.h"
#include "base/i18n/icu_util.h"
#include "electron/buildflags/buildflags.h"
namespace {
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
const char kRunAsNode[] = "ELECTRON_RUN_AS_NODE";
#endif
bool IsEnvSet(const char* name) {
#if defined(OS_WIN)
size_t required_size;
getenv_s(&required_size, nullptr, 0, name);
return required_size != 0;
#else
char* indicator = getenv(name);
return indicator && indicator[0] != '\0';
#endif
}
} // namespace
#if defined(OS_WIN)
int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd, int) {
struct Arguments {
int argc = 0;
wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
~Arguments() { LocalFree(argv); }
} arguments;
if (!arguments.argv)
return -1;
#ifdef _DEBUG
// Don't display assert dialog boxes in CI test runs
static const char* kCI = "ELECTRON_CI";
bool is_ci = IsEnvSet(kCI);
if (!is_ci) {
for (int i = 0; i < arguments.argc; ++i) {
if (!_wcsicmp(arguments.argv[i], L"--ci")) {
is_ci = true;
_putenv_s(kCI, "1"); // set flag for child processes
break;
}
}
}
if (is_ci) {
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_DEBUG | _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG | _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);
_set_error_mode(_OUT_TO_STDERR);
}
#endif
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
bool run_as_node = IsEnvSet(kRunAsNode);
#else
bool run_as_node = false;
#endif
// Make sure the output is printed to console.
if (run_as_node || !IsEnvSet("ELECTRON_NO_ATTACH_CONSOLE"))
base::RouteStdioToConsole(false);
#ifndef DEBUG
// Chromium has its own TLS subsystem which supports automatic destruction
// of thread-local data, and also depends on memory allocation routines
// provided by the CRT. The problem is that the auto-destruction mechanism
// uses a hidden feature of the OS loader which calls a callback on thread
// exit, but only after all loaded DLLs have been detached. Since the CRT is
// also a DLL, it happens that by the time Chromium's `OnThreadExit` function
// is called, the heap functions, though still in memory, no longer perform
// their duties, and when Chromium calls `free` on its buffer, it triggers
// an access violation error.
// We work around this problem by invoking Chromium's `OnThreadExit` in time
// from within the CRT's atexit facility, ensuring the heap functions are
// still active. The second invocation from the OS loader will be a no-op.
extern void NTAPI OnThreadExit(PVOID module, DWORD reason, PVOID reserved);
atexit([]() { OnThreadExit(nullptr, DLL_THREAD_DETACH, nullptr); });
#endif
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
if (run_as_node) {
std::vector<char*> argv(arguments.argc);
std::transform(
arguments.argv, arguments.argv + arguments.argc, argv.begin(),
[](auto& a) { return _strdup(base::WideToUTF8(a).c_str()); });
base::AtExitManager atexit_manager;
base::i18n::InitializeICU();
auto ret = atom::NodeMain(argv.size(), argv.data());
std::for_each(argv.begin(), argv.end(), free);
return ret;
}
#endif
if (IsEnvSet("ELECTRON_INTERNAL_CRASH_SERVICE")) {
return crash_service::Main(cmd);
}
if (!atom::CheckCommandLineArguments(arguments.argc, arguments.argv))
return -1;
sandbox::SandboxInterfaceInfo sandbox_info = {0};
content::InitializeSandboxInfo(&sandbox_info);
atom::AtomMainDelegate delegate;
content::ContentMainParams params(&delegate);
params.instance = instance;
params.sandbox_info = &sandbox_info;
atom::AtomCommandLine::Init(arguments.argc, arguments.argv);
return content::ContentMain(params);
}
#elif defined(OS_LINUX) // defined(OS_WIN)
int main(int argc, char* argv[]) {
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
if (IsEnvSet(kRunAsNode)) {
base::i18n::InitializeICU();
base::AtExitManager atexit_manager;
return atom::NodeMain(argc, argv);
}
#endif
atom::AtomMainDelegate delegate;
content::ContentMainParams params(&delegate);
params.argc = argc;
params.argv = const_cast<const char**>(argv);
atom::AtomCommandLine::Init(argc, argv);
return content::ContentMain(params);
}
#else // defined(OS_LINUX)
int main(int argc, char* argv[]) {
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
if (IsEnvSet(kRunAsNode)) {
return AtomInitializeICUandStartNode(argc, argv);
}
#endif
return AtomMain(argc, argv);
}
#endif // defined(OS_MACOSX)

View File

@@ -1,220 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/app/atom_main_delegate.h"
#include <iostream>
#include <memory>
#include <string>
#include "atom/app/atom_content_client.h"
#include "atom/browser/atom_browser_client.h"
#include "atom/browser/relauncher.h"
#include "atom/common/google_api_key.h"
#include "atom/common/options_switches.h"
#include "atom/renderer/atom_renderer_client.h"
#include "atom/renderer/atom_sandboxed_renderer_client.h"
#include "atom/utility/atom_content_utility_client.h"
#include "base/command_line.h"
#include "base/debug/stack_trace.h"
#include "base/environment.h"
#include "base/logging.h"
#include "chrome/common/chrome_paths.h"
#include "content/public/common/content_switches.h"
#include "ipc/ipc_buildflags.h"
#include "services/service_manager/sandbox/switches.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
#if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED)
#define IPC_MESSAGE_MACROS_LOG_ENABLED
#include "content/public/common/content_ipc_logging.h"
#define IPC_LOG_TABLE_ADD_ENTRY(msg_id, logger) \
content::RegisterIPCLogger(msg_id, logger)
#include "atom/common/common_message_generator.h"
#endif
#if defined(OS_MACOSX)
#include "atom/app/atom_main_delegate_mac.h"
#endif
namespace atom {
namespace {
const char* kRelauncherProcess = "relauncher";
bool IsBrowserProcess(base::CommandLine* cmd) {
std::string process_type = cmd->GetSwitchValueASCII(::switches::kProcessType);
return process_type.empty();
}
#if defined(OS_WIN)
void InvalidParameterHandler(const wchar_t*,
const wchar_t*,
const wchar_t*,
unsigned int,
uintptr_t) {
// noop.
}
#endif
} // namespace
AtomMainDelegate::AtomMainDelegate() {}
AtomMainDelegate::~AtomMainDelegate() {}
bool AtomMainDelegate::BasicStartupComplete(int* exit_code) {
auto* command_line = base::CommandLine::ForCurrentProcess();
logging::LoggingSettings settings;
#if defined(OS_WIN)
// On Windows the terminal returns immediately, so we add a new line to
// prevent output in the same line as the prompt.
if (IsBrowserProcess(command_line))
std::wcout << std::endl;
#if defined(DEBUG)
// Print logging to debug.log on Windows
settings.logging_dest = logging::LOG_TO_ALL;
settings.log_file = L"debug.log";
settings.lock_log = logging::LOCK_LOG_FILE;
settings.delete_old = logging::DELETE_OLD_LOG_FILE;
#else
settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
#endif // defined(DEBUG)
#else // defined(OS_WIN)
settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
#endif // !defined(OS_WIN)
// Only enable logging when --enable-logging is specified.
auto env = base::Environment::Create();
if (!command_line->HasSwitch(::switches::kEnableLogging) &&
!env->HasVar("ELECTRON_ENABLE_LOGGING")) {
settings.logging_dest = logging::LOG_NONE;
logging::SetMinLogLevel(logging::LOG_NUM_SEVERITIES);
}
logging::InitLogging(settings);
// Logging with pid and timestamp.
logging::SetLogItems(true, false, true, false);
// Enable convient stack printing.
#if defined(DEBUG) && defined(OS_LINUX)
bool enable_stack_dumping = true;
#else
bool enable_stack_dumping = env->HasVar("ELECTRON_ENABLE_STACK_DUMPING");
#endif
#if defined(ARCH_CPU_ARM_FAMILY) && defined(ARCH_CPU_32_BITS)
// For 32bit ARM enabling stack printing would end up crashing.
// https://github.com/electron/electron/pull/11230#issuecomment-363232482
enable_stack_dumping = false;
#endif
if (enable_stack_dumping)
base::debug::EnableInProcessStackDumping();
chrome::RegisterPathProvider();
#if defined(OS_MACOSX)
SetUpBundleOverrides();
#endif
#if defined(OS_WIN)
// Ignore invalid parameter errors.
_set_invalid_parameter_handler(InvalidParameterHandler);
// Disable the ActiveVerifier, which is used by Chrome to track possible
// bugs, but no use in Electron.
base::win::DisableHandleVerifier();
#endif
return brightray::MainDelegate::BasicStartupComplete(exit_code);
}
void AtomMainDelegate::PreSandboxStartup() {
brightray::MainDelegate::PreSandboxStartup();
auto* command_line = base::CommandLine::ForCurrentProcess();
// Only append arguments for browser process.
if (!IsBrowserProcess(command_line))
return;
if (!command_line->HasSwitch(switches::kEnableMixedSandbox)) {
if (command_line->HasSwitch(switches::kEnableSandbox)) {
// Disable setuid sandbox since it is not longer required on
// linux(namespace sandbox is available on most distros).
command_line->AppendSwitch(
service_manager::switches::kDisableSetuidSandbox);
} else {
// Disable renderer sandbox for most of node's functions.
command_line->AppendSwitch(service_manager::switches::kNoSandbox);
}
}
// Allow file:// URIs to read other file:// URIs by default.
command_line->AppendSwitch(::switches::kAllowFileAccessFromFiles);
#if defined(OS_MACOSX)
// Enable AVFoundation.
command_line->AppendSwitch("enable-avfoundation");
#endif
}
void AtomMainDelegate::PreContentInitialization() {
#if defined(OS_MACOSX)
RegisterAtomCrApp();
#endif
}
content::ContentBrowserClient* AtomMainDelegate::CreateContentBrowserClient() {
browser_client_.reset(new AtomBrowserClient);
return browser_client_.get();
}
content::ContentRendererClient*
AtomMainDelegate::CreateContentRendererClient() {
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableSandbox) ||
!base::CommandLine::ForCurrentProcess()->HasSwitch(
service_manager::switches::kNoSandbox)) {
renderer_client_.reset(new AtomSandboxedRendererClient);
} else {
renderer_client_.reset(new AtomRendererClient);
}
return renderer_client_.get();
}
content::ContentUtilityClient* AtomMainDelegate::CreateContentUtilityClient() {
utility_client_.reset(new AtomContentUtilityClient);
return utility_client_.get();
}
int AtomMainDelegate::RunProcess(
const std::string& process_type,
const content::MainFunctionParams& main_function_params) {
if (process_type == kRelauncherProcess)
return relauncher::RelauncherMain(main_function_params);
else
return -1;
}
#if defined(OS_MACOSX)
bool AtomMainDelegate::ShouldSendMachPort(const std::string& process_type) {
return process_type != kRelauncherProcess;
}
bool AtomMainDelegate::DelaySandboxInitialization(
const std::string& process_type) {
return process_type == kRelauncherProcess;
}
#endif
std::unique_ptr<brightray::ContentClient>
AtomMainDelegate::CreateContentClient() {
return std::make_unique<AtomContentClient>();
}
} // namespace atom

View File

@@ -1,58 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_APP_ATOM_MAIN_DELEGATE_H_
#define ATOM_APP_ATOM_MAIN_DELEGATE_H_
#include <memory>
#include <string>
#include "brightray/common/content_client.h"
#include "brightray/common/main_delegate.h"
namespace atom {
class AtomMainDelegate : public brightray::MainDelegate {
public:
AtomMainDelegate();
~AtomMainDelegate() override;
protected:
// content::ContentMainDelegate:
bool BasicStartupComplete(int* exit_code) override;
void PreSandboxStartup() override;
void PreContentInitialization() override;
content::ContentBrowserClient* CreateContentBrowserClient() override;
content::ContentRendererClient* CreateContentRendererClient() override;
content::ContentUtilityClient* CreateContentUtilityClient() override;
int RunProcess(
const std::string& process_type,
const content::MainFunctionParams& main_function_params) override;
#if defined(OS_MACOSX)
bool ShouldSendMachPort(const std::string& process_type) override;
bool DelaySandboxInitialization(const std::string& process_type) override;
#endif
// brightray::MainDelegate:
std::unique_ptr<brightray::ContentClient> CreateContentClient() override;
#if defined(OS_MACOSX)
void OverrideChildProcessPath() override;
void OverrideFrameworkBundlePath() override;
#endif
private:
#if defined(OS_MACOSX)
void SetUpBundleOverrides();
#endif
std::unique_ptr<content::ContentBrowserClient> browser_client_;
std::unique_ptr<content::ContentRendererClient> renderer_client_;
std::unique_ptr<content::ContentUtilityClient> utility_client_;
DISALLOW_COPY_AND_ASSIGN(AtomMainDelegate);
};
} // namespace atom
#endif // ATOM_APP_ATOM_MAIN_DELEGATE_H_

View File

@@ -1,72 +0,0 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/app/atom_main_delegate.h"
#include "atom/browser/mac/atom_application.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/mac/bundle_locations.h"
#include "base/mac/foundation_util.h"
#include "base/mac/scoped_nsautorelease_pool.h"
#include "base/path_service.h"
#include "base/strings/sys_string_conversions.h"
#include "brightray/common/application_info.h"
#include "brightray/common/mac/main_application_bundle.h"
#include "content/public/common/content_paths.h"
namespace atom {
namespace {
base::FilePath GetFrameworksPath() {
return brightray::MainApplicationBundlePath()
.Append("Contents")
.Append("Frameworks");
}
base::FilePath GetHelperAppPath(const base::FilePath& frameworks_path,
const std::string& name) {
return frameworks_path.Append(name + " Helper.app")
.Append("Contents")
.Append("MacOS")
.Append(name + " Helper");
}
} // namespace
void AtomMainDelegate::OverrideFrameworkBundlePath() {
base::mac::SetOverrideFrameworkBundlePath(
GetFrameworksPath().Append(ATOM_PRODUCT_NAME " Framework.framework"));
}
void AtomMainDelegate::OverrideChildProcessPath() {
base::FilePath frameworks_path = GetFrameworksPath();
base::FilePath helper_path =
GetHelperAppPath(frameworks_path, ATOM_PRODUCT_NAME);
if (!base::PathExists(helper_path))
helper_path =
GetHelperAppPath(frameworks_path, brightray::GetApplicationName());
if (!base::PathExists(helper_path))
LOG(FATAL) << "Unable to find helper app";
base::PathService::Override(content::CHILD_PROCESS_EXE, helper_path);
}
void AtomMainDelegate::SetUpBundleOverrides() {
base::mac::ScopedNSAutoreleasePool pool;
NSBundle* bundle = brightray::MainApplicationBundle();
std::string base_bundle_id =
base::SysNSStringToUTF8([bundle bundleIdentifier]);
NSString* team_id = [bundle objectForInfoDictionaryKey:@"ElectronTeamID"];
if (team_id)
base_bundle_id = base::SysNSStringToUTF8(team_id) + "." + base_bundle_id;
base::mac::SetBaseBundleID(base_bundle_id.c_str());
}
void RegisterAtomCrApp() {
// Force the NSApplication subclass to be used.
[AtomApplication sharedApplication];
}
} // namespace atom

View File

@@ -1,164 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_browser_view.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/browser.h"
#include "atom/browser/native_browser_view.h"
#include "atom/common/color_util.h"
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/node_includes.h"
#include "atom/common/options_switches.h"
#include "native_mate/constructor.h"
#include "native_mate/dictionary.h"
#include "ui/gfx/geometry/rect.h"
namespace mate {
template <>
struct Converter<atom::AutoResizeFlags> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
atom::AutoResizeFlags* auto_resize_flags) {
mate::Dictionary params;
if (!ConvertFromV8(isolate, val, &params)) {
return false;
}
uint8_t flags = 0;
bool width = false;
if (params.Get("width", &width) && width) {
flags |= atom::kAutoResizeWidth;
}
bool height = false;
if (params.Get("height", &height) && height) {
flags |= atom::kAutoResizeHeight;
}
*auto_resize_flags = static_cast<atom::AutoResizeFlags>(flags);
return true;
}
};
} // namespace mate
namespace atom {
namespace api {
BrowserView::BrowserView(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
const mate::Dictionary& options) {
Init(isolate, wrapper, options);
}
void BrowserView::Init(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
const mate::Dictionary& options) {
mate::Dictionary web_preferences = mate::Dictionary::CreateEmpty(isolate);
options.Get(options::kWebPreferences, &web_preferences);
web_preferences.Set("isBrowserView", true);
mate::Handle<class WebContents> web_contents =
WebContents::Create(isolate, web_preferences);
web_contents_.Reset(isolate, web_contents.ToV8());
api_web_contents_ = web_contents.get();
view_.reset(
NativeBrowserView::Create(api_web_contents_->managed_web_contents()));
InitWith(isolate, wrapper);
}
BrowserView::~BrowserView() {
api_web_contents_->DestroyWebContents(true /* async */);
}
// static
mate::WrappableBase* BrowserView::New(mate::Arguments* args) {
if (!Browser::Get()->is_ready()) {
args->ThrowError("Cannot create BrowserView before app is ready");
return nullptr;
}
if (args->Length() > 1) {
args->ThrowError("Too many arguments");
return nullptr;
}
mate::Dictionary options;
if (!(args->Length() == 1 && args->GetNext(&options))) {
options = mate::Dictionary::CreateEmpty(args->isolate());
}
return new BrowserView(args->isolate(), args->GetThis(), options);
}
int32_t BrowserView::ID() const {
return weak_map_id();
}
void BrowserView::SetAutoResize(AutoResizeFlags flags) {
view_->SetAutoResizeFlags(flags);
}
void BrowserView::SetBounds(const gfx::Rect& bounds) {
view_->SetBounds(bounds);
}
void BrowserView::SetBackgroundColor(const std::string& color_name) {
view_->SetBackgroundColor(ParseHexColor(color_name));
}
v8::Local<v8::Value> BrowserView::GetWebContents() {
if (web_contents_.IsEmpty()) {
return v8::Null(isolate());
}
return v8::Local<v8::Value>::New(isolate(), web_contents_);
}
// static
void BrowserView::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "BrowserView"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("setAutoResize", &BrowserView::SetAutoResize)
.SetMethod("setBounds", &BrowserView::SetBounds)
.SetMethod("setBackgroundColor", &BrowserView::SetBackgroundColor)
.SetProperty("webContents", &BrowserView::GetWebContents)
.SetProperty("id", &BrowserView::ID);
}
} // namespace api
} // namespace atom
namespace {
using atom::api::BrowserView;
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
v8::Isolate* isolate = context->GetIsolate();
BrowserView::SetConstructor(isolate, base::Bind(&BrowserView::New));
mate::Dictionary browser_view(
isolate, BrowserView::GetConstructor(isolate)->GetFunction());
browser_view.SetMethod("fromId",
&mate::TrackableObject<BrowserView>::FromWeakMapID);
browser_view.SetMethod("getAllViews",
&mate::TrackableObject<BrowserView>::GetAll);
mate::Dictionary dict(isolate, exports);
dict.Set("BrowserView", browser_view);
}
} // namespace
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_browser_view, Initialize)

View File

@@ -1,79 +0,0 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include <set>
#include <string>
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
#include "base/bind.h"
#include "base/files/file_util.h"
#include "content/public/browser/tracing_controller.h"
#include "native_mate/dictionary.h"
#include "atom/common/node_includes.h"
using content::TracingController;
namespace mate {
template <>
struct Converter<base::trace_event::TraceConfig> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
base::trace_event::TraceConfig* out) {
Dictionary options;
if (!ConvertFromV8(isolate, val, &options))
return false;
std::string category_filter, trace_options;
if (!options.Get("categoryFilter", &category_filter) ||
!options.Get("traceOptions", &trace_options))
return false;
*out = base::trace_event::TraceConfig(category_filter, trace_options);
return true;
}
};
} // namespace mate
namespace {
using CompletionCallback = base::Callback<void(const base::FilePath&)>;
scoped_refptr<TracingController::TraceDataEndpoint> GetTraceDataEndpoint(
const base::FilePath& path,
const CompletionCallback& callback) {
base::FilePath result_file_path = path;
if (result_file_path.empty() && !base::CreateTemporaryFile(&result_file_path))
LOG(ERROR) << "Creating temporary file failed";
return TracingController::CreateFileEndpoint(
result_file_path, base::Bind(callback, result_file_path));
}
void StopRecording(const base::FilePath& path,
const CompletionCallback& callback) {
TracingController::GetInstance()->StopTracing(
GetTraceDataEndpoint(path, callback));
}
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
auto controller = base::Unretained(TracingController::GetInstance());
mate::Dictionary dict(context->GetIsolate(), exports);
dict.SetMethod("getCategories",
base::Bind(&TracingController::GetCategories, controller));
dict.SetMethod("startRecording",
base::Bind(&TracingController::StartTracing, controller));
dict.SetMethod("stopRecording", &StopRecording);
dict.SetMethod(
"getTraceBufferUsage",
base::Bind(&TracingController::GetTraceBufferUsage, controller));
}
} // namespace
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_content_tracing, Initialize)

View File

@@ -1,331 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_cookies.h"
#include <memory>
#include <utility>
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/cookie_change_notifier.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "base/time/time.h"
#include "base/values.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "net/cookies/canonical_cookie.h"
#include "net/cookies/cookie_store.h"
#include "net/cookies/cookie_util.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
using content::BrowserThread;
namespace mate {
template <>
struct Converter<atom::api::Cookies::Error> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
atom::api::Cookies::Error val) {
if (val == atom::api::Cookies::SUCCESS)
return v8::Null(isolate);
else
return v8::Exception::Error(StringToV8(isolate, "Setting cookie failed"));
}
};
template <>
struct Converter<net::CanonicalCookie> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
const net::CanonicalCookie& val) {
mate::Dictionary dict(isolate, v8::Object::New(isolate));
dict.Set("name", val.Name());
dict.Set("value", val.Value());
dict.Set("domain", val.Domain());
dict.Set("hostOnly", net::cookie_util::DomainIsHostOnly(val.Domain()));
dict.Set("path", val.Path());
dict.Set("secure", val.IsSecure());
dict.Set("httpOnly", val.IsHttpOnly());
dict.Set("session", !val.IsPersistent());
if (val.IsPersistent())
dict.Set("expirationDate", val.ExpiryDate().ToDoubleT());
return dict.GetHandle();
}
};
template <>
struct Converter<network::mojom::CookieChangeCause> {
static v8::Local<v8::Value> ToV8(
v8::Isolate* isolate,
const network::mojom::CookieChangeCause& val) {
switch (val) {
case network::mojom::CookieChangeCause::INSERTED:
case network::mojom::CookieChangeCause::EXPLICIT:
return mate::StringToV8(isolate, "explicit");
case network::mojom::CookieChangeCause::OVERWRITE:
return mate::StringToV8(isolate, "overwrite");
case network::mojom::CookieChangeCause::EXPIRED:
return mate::StringToV8(isolate, "expired");
case network::mojom::CookieChangeCause::EVICTED:
return mate::StringToV8(isolate, "evicted");
case network::mojom::CookieChangeCause::EXPIRED_OVERWRITE:
return mate::StringToV8(isolate, "expired-overwrite");
default:
return mate::StringToV8(isolate, "unknown");
}
}
};
} // namespace mate
namespace atom {
namespace api {
namespace {
// Returns whether |domain| matches |filter|.
bool MatchesDomain(std::string filter, const std::string& domain) {
// Add a leading '.' character to the filter domain if it doesn't exist.
if (net::cookie_util::DomainIsHostOnly(filter))
filter.insert(0, ".");
std::string sub_domain(domain);
// Strip any leading '.' character from the input cookie domain.
if (!net::cookie_util::DomainIsHostOnly(sub_domain))
sub_domain = sub_domain.substr(1);
// Now check whether the domain argument is a subdomain of the filter domain.
for (sub_domain.insert(0, "."); sub_domain.length() >= filter.length();) {
if (sub_domain == filter)
return true;
const size_t next_dot = sub_domain.find('.', 1); // Skip over leading dot.
sub_domain.erase(0, next_dot);
}
return false;
}
// Returns whether |cookie| matches |filter|.
bool MatchesCookie(const base::DictionaryValue* filter,
const net::CanonicalCookie& cookie) {
std::string str;
bool b;
if (filter->GetString("name", &str) && str != cookie.Name())
return false;
if (filter->GetString("path", &str) && str != cookie.Path())
return false;
if (filter->GetString("domain", &str) && !MatchesDomain(str, cookie.Domain()))
return false;
if (filter->GetBoolean("secure", &b) && b != cookie.IsSecure())
return false;
if (filter->GetBoolean("session", &b) && b != !cookie.IsPersistent())
return false;
return true;
}
// Helper to returns the CookieStore.
inline net::CookieStore* GetCookieStore(
scoped_refptr<net::URLRequestContextGetter> getter) {
return getter->GetURLRequestContext()->cookie_store();
}
// Run |callback| on UI thread.
void RunCallbackInUI(const base::Closure& callback) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, callback);
}
// Remove cookies from |list| not matching |filter|, and pass it to |callback|.
void FilterCookies(std::unique_ptr<base::DictionaryValue> filter,
const Cookies::GetCallback& callback,
const net::CookieList& list) {
net::CookieList result;
for (const auto& cookie : list) {
if (MatchesCookie(filter.get(), cookie))
result.push_back(cookie);
}
RunCallbackInUI(base::Bind(callback, Cookies::SUCCESS, result));
}
// Receives cookies matching |filter| in IO thread.
void GetCookiesOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
std::unique_ptr<base::DictionaryValue> filter,
const Cookies::GetCallback& callback) {
std::string url;
filter->GetString("url", &url);
auto filtered_callback =
base::Bind(FilterCookies, base::Passed(&filter), callback);
// Empty url will match all url cookies.
if (url.empty())
GetCookieStore(getter)->GetAllCookiesAsync(filtered_callback);
else
GetCookieStore(getter)->GetAllCookiesForURLAsync(GURL(url),
filtered_callback);
}
// Removes cookie with |url| and |name| in IO thread.
void RemoveCookieOnIOThread(scoped_refptr<net::URLRequestContextGetter> getter,
const GURL& url,
const std::string& name,
const base::Closure& callback) {
GetCookieStore(getter)->DeleteCookieAsync(
url, name, base::BindOnce(RunCallbackInUI, callback));
}
// Callback of SetCookie.
void OnSetCookie(const Cookies::SetCallback& callback, bool success) {
RunCallbackInUI(
base::Bind(callback, success ? Cookies::SUCCESS : Cookies::FAILED));
}
// Flushes cookie store in IO thread.
void FlushCookieStoreOnIOThread(
scoped_refptr<net::URLRequestContextGetter> getter,
const base::Closure& callback) {
GetCookieStore(getter)->FlushStore(base::BindOnce(RunCallbackInUI, callback));
}
// Sets cookie with |details| in IO thread.
void SetCookieOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
std::unique_ptr<base::DictionaryValue> details,
const Cookies::SetCallback& callback) {
std::string url, name, value, domain, path;
bool secure = false;
bool http_only = false;
double creation_date;
double expiration_date;
double last_access_date;
details->GetString("url", &url);
details->GetString("name", &name);
details->GetString("value", &value);
details->GetString("domain", &domain);
details->GetString("path", &path);
details->GetBoolean("secure", &secure);
details->GetBoolean("httpOnly", &http_only);
base::Time creation_time;
if (details->GetDouble("creationDate", &creation_date)) {
creation_time = (creation_date == 0)
? base::Time::UnixEpoch()
: base::Time::FromDoubleT(creation_date);
}
base::Time expiration_time;
if (details->GetDouble("expirationDate", &expiration_date)) {
expiration_time = (expiration_date == 0)
? base::Time::UnixEpoch()
: base::Time::FromDoubleT(expiration_date);
}
base::Time last_access_time;
if (details->GetDouble("lastAccessDate", &last_access_date)) {
last_access_time = (last_access_date == 0)
? base::Time::UnixEpoch()
: base::Time::FromDoubleT(last_access_date);
}
std::unique_ptr<net::CanonicalCookie> canonical_cookie(
net::CanonicalCookie::CreateSanitizedCookie(
GURL(url), name, value, domain, path, creation_time, expiration_time,
last_access_time, secure, http_only,
net::CookieSameSite::DEFAULT_MODE, net::COOKIE_PRIORITY_DEFAULT));
auto completion_callback = base::BindOnce(OnSetCookie, callback);
if (!canonical_cookie || !canonical_cookie->IsCanonical()) {
std::move(completion_callback).Run(false);
return;
}
if (url.empty()) {
std::move(completion_callback).Run(false);
return;
}
if (name.empty()) {
std::move(completion_callback).Run(false);
return;
}
GetCookieStore(getter)->SetCanonicalCookieAsync(
std::move(canonical_cookie), secure, http_only,
std::move(completion_callback));
}
} // namespace
Cookies::Cookies(v8::Isolate* isolate, AtomBrowserContext* browser_context)
: browser_context_(browser_context) {
Init(isolate);
cookie_change_subscription_ =
browser_context_->cookie_change_notifier()->RegisterCookieChangeCallback(
base::Bind(&Cookies::OnCookieChanged, base::Unretained(this)));
}
Cookies::~Cookies() {}
void Cookies::Get(const base::DictionaryValue& filter,
const GetCallback& callback) {
auto copy = base::DictionaryValue::From(
base::Value::ToUniquePtrValue(filter.Clone()));
auto* getter = browser_context_->GetRequestContext();
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(GetCookiesOnIO, base::RetainedRef(getter), std::move(copy),
callback));
}
void Cookies::Remove(const GURL& url,
const std::string& name,
const base::Closure& callback) {
auto* getter = browser_context_->GetRequestContext();
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(RemoveCookieOnIOThread, base::RetainedRef(getter), url,
name, callback));
}
void Cookies::Set(const base::DictionaryValue& details,
const SetCallback& callback) {
auto copy = base::DictionaryValue::From(
base::Value::ToUniquePtrValue(details.Clone()));
auto* getter = browser_context_->GetRequestContext();
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(SetCookieOnIO, base::RetainedRef(getter), std::move(copy),
callback));
}
void Cookies::FlushStore(const base::Closure& callback) {
auto* getter = browser_context_->GetRequestContext();
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(FlushCookieStoreOnIOThread, base::RetainedRef(getter),
callback));
}
void Cookies::OnCookieChanged(const CookieDetails* details) {
Emit("changed", *(details->cookie), details->cause, details->removed);
}
// static
mate::Handle<Cookies> Cookies::Create(v8::Isolate* isolate,
AtomBrowserContext* browser_context) {
return mate::CreateHandle(isolate, new Cookies(isolate, browser_context));
}
// static
void Cookies::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Cookies"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("get", &Cookies::Get)
.SetMethod("remove", &Cookies::Remove)
.SetMethod("set", &Cookies::Set)
.SetMethod("flushStore", &Cookies::FlushStore);
}
} // namespace api
} // namespace atom

View File

@@ -1,74 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_COOKIES_H_
#define ATOM_BROWSER_API_ATOM_API_COOKIES_H_
#include <memory>
#include <string>
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/net/cookie_details.h"
#include "base/callback_list.h"
#include "native_mate/handle.h"
#include "net/cookies/canonical_cookie.h"
namespace base {
class DictionaryValue;
}
namespace net {
class URLRequestContextGetter;
}
namespace atom {
class AtomBrowserContext;
namespace api {
class Cookies : public mate::TrackableObject<Cookies> {
public:
enum Error {
SUCCESS,
FAILED,
};
using GetCallback = base::Callback<void(Error, const net::CookieList&)>;
using SetCallback = base::Callback<void(Error)>;
static mate::Handle<Cookies> Create(v8::Isolate* isolate,
AtomBrowserContext* browser_context);
// mate::TrackableObject:
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
protected:
Cookies(v8::Isolate* isolate, AtomBrowserContext* browser_context);
~Cookies() override;
void Get(const base::DictionaryValue& filter, const GetCallback& callback);
void Remove(const GURL& url,
const std::string& name,
const base::Closure& callback);
void Set(const base::DictionaryValue& details, const SetCallback& callback);
void FlushStore(const base::Closure& callback);
// CookieChangeNotifier subscription:
void OnCookieChanged(const CookieDetails*);
private:
std::unique_ptr<base::CallbackList<void(const CookieDetails*)>::Subscription>
cookie_change_subscription_;
scoped_refptr<AtomBrowserContext> browser_context_;
DISALLOW_COPY_AND_ASSIGN(Cookies);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_COOKIES_H_

View File

@@ -1,142 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include <string>
#include <utility>
#include <vector>
#include "atom/browser/api/atom_api_browser_window.h"
#include "atom/browser/native_window.h"
#include "atom/browser/ui/certificate_trust.h"
#include "atom/browser/ui/file_dialog.h"
#include "atom/browser/ui/message_box.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
#include "atom/common/native_mate_converters/image_converter.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "native_mate/dictionary.h"
#include "atom/common/node_includes.h"
namespace mate {
template <>
struct Converter<file_dialog::Filter> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
file_dialog::Filter* out) {
mate::Dictionary dict;
if (!ConvertFromV8(isolate, val, &dict))
return false;
if (!dict.Get("name", &(out->first)))
return false;
if (!dict.Get("extensions", &(out->second)))
return false;
return true;
}
};
template <>
struct Converter<file_dialog::DialogSettings> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
file_dialog::DialogSettings* out) {
mate::Dictionary dict;
if (!ConvertFromV8(isolate, val, &dict))
return false;
dict.Get("window", &(out->parent_window));
dict.Get("title", &(out->title));
dict.Get("message", &(out->message));
dict.Get("buttonLabel", &(out->button_label));
dict.Get("nameFieldLabel", &(out->name_field_label));
dict.Get("defaultPath", &(out->default_path));
dict.Get("filters", &(out->filters));
dict.Get("properties", &(out->properties));
dict.Get("showsTagField", &(out->shows_tag_field));
#if defined(MAS_BUILD)
dict.Get("securityScopedBookmarks", &(out->security_scoped_bookmarks));
#endif
return true;
}
};
} // namespace mate
namespace {
void ShowMessageBox(int type,
const std::vector<std::string>& buttons,
int default_id,
int cancel_id,
int options,
const std::string& title,
const std::string& message,
const std::string& detail,
const std::string& checkbox_label,
bool checkbox_checked,
const gfx::ImageSkia& icon,
atom::NativeWindow* window,
mate::Arguments* args) {
v8::Local<v8::Value> peek = args->PeekNext();
atom::MessageBoxCallback callback;
if (mate::Converter<atom::MessageBoxCallback>::FromV8(args->isolate(), peek,
&callback)) {
atom::ShowMessageBox(window, static_cast<atom::MessageBoxType>(type),
buttons, default_id, cancel_id, options, title,
message, detail, checkbox_label, checkbox_checked,
icon, callback);
} else {
int chosen = atom::ShowMessageBox(
window, static_cast<atom::MessageBoxType>(type), buttons, default_id,
cancel_id, options, title, message, detail, icon);
args->Return(chosen);
}
}
void ShowOpenDialog(const file_dialog::DialogSettings& settings,
mate::Arguments* args) {
v8::Local<v8::Value> peek = args->PeekNext();
file_dialog::OpenDialogCallback callback;
if (mate::Converter<file_dialog::OpenDialogCallback>::FromV8(
args->isolate(), peek, &callback)) {
file_dialog::ShowOpenDialog(settings, callback);
} else {
std::vector<base::FilePath> paths;
if (file_dialog::ShowOpenDialog(settings, &paths))
args->Return(paths);
}
}
void ShowSaveDialog(const file_dialog::DialogSettings& settings,
mate::Arguments* args) {
v8::Local<v8::Value> peek = args->PeekNext();
file_dialog::SaveDialogCallback callback;
if (mate::Converter<file_dialog::SaveDialogCallback>::FromV8(
args->isolate(), peek, &callback)) {
file_dialog::ShowSaveDialog(settings, callback);
} else {
base::FilePath path;
if (file_dialog::ShowSaveDialog(settings, &path))
args->Return(path);
}
}
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
mate::Dictionary dict(context->GetIsolate(), exports);
dict.SetMethod("showMessageBox", &ShowMessageBox);
dict.SetMethod("showErrorBox", &atom::ShowErrorBox);
dict.SetMethod("showOpenDialog", &ShowOpenDialog);
dict.SetMethod("showSaveDialog", &ShowSaveDialog);
#if defined(OS_MACOSX) || defined(OS_WIN)
dict.SetMethod("showCertificateTrustDialog",
&certificate_trust::ShowCertificateTrust);
#endif
}
} // namespace
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_dialog, Initialize)

View File

@@ -1,47 +0,0 @@
// Copyright (c) 2017 Amaplex Software, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_IN_APP_PURCHASE_H_
#define ATOM_BROWSER_API_ATOM_API_IN_APP_PURCHASE_H_
#include <string>
#include <vector>
#include "atom/browser/api/event_emitter.h"
#include "atom/browser/mac/in_app_purchase.h"
#include "atom/browser/mac/in_app_purchase_observer.h"
#include "atom/browser/mac/in_app_purchase_product.h"
#include "native_mate/handle.h"
namespace atom {
namespace api {
class InAppPurchase : public mate::EventEmitter<InAppPurchase>,
public in_app_purchase::TransactionObserver {
public:
static mate::Handle<InAppPurchase> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
protected:
explicit InAppPurchase(v8::Isolate* isolate);
~InAppPurchase() override;
void PurchaseProduct(const std::string& product_id, mate::Arguments* args);
// TransactionObserver:
void OnTransactionsUpdated(
const std::vector<in_app_purchase::Transaction>& transactions) override;
private:
DISALLOW_COPY_AND_ASSIGN(InAppPurchase);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_IN_APP_PURCHASE_H_

View File

@@ -1,61 +0,0 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_net.h"
#include "atom/browser/api/atom_api_url_request.h"
#include "atom/common/node_includes.h"
#include "native_mate/dictionary.h"
namespace atom {
namespace api {
Net::Net(v8::Isolate* isolate) {
Init(isolate);
}
Net::~Net() {}
// static
v8::Local<v8::Value> Net::Create(v8::Isolate* isolate) {
return mate::CreateHandle(isolate, new Net(isolate)).ToV8();
}
// static
void Net::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Net"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetProperty("URLRequest", &Net::URLRequest);
}
v8::Local<v8::Value> Net::URLRequest(v8::Isolate* isolate) {
return URLRequest::GetConstructor(isolate)->GetFunction();
}
} // namespace api
} // namespace atom
namespace {
using atom::api::Net;
using atom::api::URLRequest;
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
v8::Isolate* isolate = context->GetIsolate();
URLRequest::SetConstructor(isolate, base::Bind(URLRequest::New));
mate::Dictionary dict(isolate, exports);
dict.Set("net", Net::Create(isolate));
dict.Set("Net", Net::GetConstructor(isolate)->GetFunction());
}
} // namespace
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_net, Initialize)

View File

@@ -1,138 +0,0 @@
// Copyright (c) 2018 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_net_log.h"
#include <utility>
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
#include "base/command_line.h"
#include "components/net_log/chrome_net_log.h"
#include "content/public/browser/storage_partition.h"
#include "native_mate/dictionary.h"
#include "native_mate/handle.h"
#include "net/url_request/url_request_context_getter.h"
#include "atom/common/node_includes.h"
namespace atom {
namespace api {
NetLog::NetLog(v8::Isolate* isolate, AtomBrowserContext* browser_context)
: browser_context_(browser_context) {
Init(isolate);
net_log_writer_ =
atom::AtomBrowserMainParts::Get()->net_log()->net_export_file_writer();
net_log_writer_->AddObserver(this);
}
NetLog::~NetLog() {
net_log_writer_->RemoveObserver(this);
}
void NetLog::StartLogging(mate::Arguments* args) {
base::FilePath log_path;
if (!args->GetNext(&log_path) || log_path.empty()) {
args->ThrowError("The first parameter must be a valid string");
return;
}
auto* network_context =
content::BrowserContext::GetDefaultStoragePartition(browser_context_)
->GetNetworkContext();
// TODO(deepak1556): Provide more flexibility to this module
// by allowing customizations on the capturing options.
net_log_writer_->StartNetLog(
log_path, net::NetLogCaptureMode::Default(),
net_log::NetExportFileWriter::kNoLimit /* file size limit */,
base::CommandLine::ForCurrentProcess()->GetCommandLineString(),
std::string(), network_context);
}
std::string NetLog::GetLoggingState() const {
if (!net_log_state_)
return std::string();
const base::Value* current_log_state =
net_log_state_->FindKeyOfType("state", base::Value::Type::STRING);
if (!current_log_state)
return std::string();
return current_log_state->GetString();
}
bool NetLog::IsCurrentlyLogging() const {
const std::string log_state = GetLoggingState();
return (log_state == "STARTING_LOG") || (log_state == "LOGGING");
}
std::string NetLog::GetCurrentlyLoggingPath() const {
// Net log exporter has a default path which will be used
// when no log path is provided, but since we don't allow
// net log capture without user provided file path, this
// check is completely safe.
if (IsCurrentlyLogging()) {
const base::Value* current_log_path =
net_log_state_->FindKeyOfType("file", base::Value::Type::STRING);
if (current_log_path)
return current_log_path->GetString();
}
return std::string();
}
void NetLog::StopLogging(mate::Arguments* args) {
net_log::NetExportFileWriter::FilePathCallback callback;
if (!args->GetNext(&callback)) {
args->ThrowError("Invalid callback function");
return;
}
if (IsCurrentlyLogging()) {
stop_callback_queue_.emplace_back(callback);
net_log_writer_->StopNetLog(nullptr);
} else {
callback.Run(base::FilePath());
}
}
void NetLog::OnNewState(const base::DictionaryValue& state) {
net_log_state_ = state.CreateDeepCopy();
if (stop_callback_queue_.empty())
return;
if (GetLoggingState() == "NOT_LOGGING") {
for (auto& callback : stop_callback_queue_) {
if (!callback.is_null())
net_log_writer_->GetFilePathToCompletedLog(callback);
}
stop_callback_queue_.clear();
}
}
// static
mate::Handle<NetLog> NetLog::Create(v8::Isolate* isolate,
AtomBrowserContext* browser_context) {
return mate::CreateHandle(isolate, new NetLog(isolate, browser_context));
}
// static
void NetLog::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "NetLog"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetProperty("currentlyLogging", &NetLog::IsCurrentlyLogging)
.SetProperty("currentlyLoggingPath", &NetLog::GetCurrentlyLoggingPath)
.SetMethod("startLogging", &NetLog::StartLogging)
.SetMethod("stopLogging", &NetLog::StopLogging);
}
} // namespace api
} // namespace atom

View File

@@ -1,60 +0,0 @@
// Copyright (c) 2018 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_NET_LOG_H_
#define ATOM_BROWSER_API_ATOM_API_NET_LOG_H_
#include <list>
#include <memory>
#include <string>
#include "atom/browser/api/trackable_object.h"
#include "base/callback.h"
#include "base/values.h"
#include "components/net_log/net_export_file_writer.h"
#include "native_mate/handle.h"
namespace atom {
class AtomBrowserContext;
namespace api {
class NetLog : public mate::TrackableObject<NetLog>,
public net_log::NetExportFileWriter::StateObserver {
public:
static mate::Handle<NetLog> Create(v8::Isolate* isolate,
AtomBrowserContext* browser_context);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
void StartLogging(mate::Arguments* args);
std::string GetLoggingState() const;
bool IsCurrentlyLogging() const;
std::string GetCurrentlyLoggingPath() const;
void StopLogging(mate::Arguments* args);
protected:
explicit NetLog(v8::Isolate* isolate, AtomBrowserContext* browser_context);
~NetLog() override;
// net_log::NetExportFileWriter::StateObserver implementation
void OnNewState(const base::DictionaryValue& state) override;
private:
AtomBrowserContext* browser_context_;
net_log::NetExportFileWriter* net_log_writer_;
std::list<net_log::NetExportFileWriter::FilePathCallback>
stop_callback_queue_;
std::unique_ptr<base::DictionaryValue> net_log_state_;
DISALLOW_COPY_AND_ASSIGN(NetLog);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_NET_LOG_H_

View File

@@ -1,135 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_power_save_blocker.h"
#include <string>
#include "base/task_scheduler/post_task.h"
#include "base/threading/thread_task_runner_handle.h"
#include "native_mate/dictionary.h"
#include "atom/common/node_includes.h"
namespace mate {
template <>
struct Converter<device::mojom::WakeLockType> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
device::mojom::WakeLockType* out) {
std::string type;
if (!ConvertFromV8(isolate, val, &type))
return false;
if (type == "prevent-app-suspension")
*out = device::mojom::WakeLockType::kPreventAppSuspension;
else if (type == "prevent-display-sleep")
*out = device::mojom::WakeLockType::kPreventDisplaySleep;
else
return false;
return true;
}
};
} // namespace mate
namespace atom {
namespace api {
PowerSaveBlocker::PowerSaveBlocker(v8::Isolate* isolate)
: current_blocker_type_(
device::mojom::WakeLockType::kPreventAppSuspension) {
Init(isolate);
}
PowerSaveBlocker::~PowerSaveBlocker() {}
void PowerSaveBlocker::UpdatePowerSaveBlocker() {
if (power_save_blocker_types_.empty()) {
power_save_blocker_.reset();
return;
}
// |WakeLockType::kPreventAppSuspension| keeps system active, but allows
// screen to be turned off.
// |WakeLockType::kPreventDisplaySleep| keeps system and screen active, has a
// higher precedence level than |WakeLockType::kPreventAppSuspension|.
//
// Only the highest-precedence blocker type takes effect.
device::mojom::WakeLockType new_blocker_type =
device::mojom::WakeLockType::kPreventAppSuspension;
for (const auto& element : power_save_blocker_types_) {
if (element.second == device::mojom::WakeLockType::kPreventDisplaySleep) {
new_blocker_type = device::mojom::WakeLockType::kPreventDisplaySleep;
break;
}
}
if (!power_save_blocker_ || new_blocker_type != current_blocker_type_) {
auto new_blocker = std::make_unique<device::PowerSaveBlocker>(
new_blocker_type, device::mojom::WakeLockReason::kOther,
ATOM_PRODUCT_NAME, base::ThreadTaskRunnerHandle::Get(),
// This task runner may be used by some device service
// implementation bits to interface with dbus client code, which in
// turn imposes some subtle thread affinity on the clients. We
// therefore require a single-thread runner.
base::CreateSingleThreadTaskRunnerWithTraits(
{base::MayBlock(), base::TaskPriority::BACKGROUND}));
power_save_blocker_.swap(new_blocker);
current_blocker_type_ = new_blocker_type;
}
}
int PowerSaveBlocker::Start(device::mojom::WakeLockType type) {
static int count = 0;
power_save_blocker_types_[count] = type;
UpdatePowerSaveBlocker();
return count++;
}
bool PowerSaveBlocker::Stop(int id) {
bool success = power_save_blocker_types_.erase(id) > 0;
UpdatePowerSaveBlocker();
return success;
}
bool PowerSaveBlocker::IsStarted(int id) {
return power_save_blocker_types_.find(id) != power_save_blocker_types_.end();
}
// static
mate::Handle<PowerSaveBlocker> PowerSaveBlocker::Create(v8::Isolate* isolate) {
return mate::CreateHandle(isolate, new PowerSaveBlocker(isolate));
}
// static
void PowerSaveBlocker::BuildPrototype(
v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "PowerSaveBlocker"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("start", &PowerSaveBlocker::Start)
.SetMethod("stop", &PowerSaveBlocker::Stop)
.SetMethod("isStarted", &PowerSaveBlocker::IsStarted);
}
} // namespace api
} // namespace atom
namespace {
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
dict.Set("powerSaveBlocker", atom::api::PowerSaveBlocker::Create(isolate));
}
} // namespace
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_power_save_blocker, Initialize);

View File

@@ -1,56 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_POWER_SAVE_BLOCKER_H_
#define ATOM_BROWSER_API_ATOM_API_POWER_SAVE_BLOCKER_H_
#include <map>
#include <memory>
#include "atom/browser/api/trackable_object.h"
#include "native_mate/handle.h"
#include "services/device/wake_lock/power_save_blocker/power_save_blocker.h"
namespace mate {
class Dictionary;
}
namespace atom {
namespace api {
class PowerSaveBlocker : public mate::TrackableObject<PowerSaveBlocker> {
public:
static mate::Handle<PowerSaveBlocker> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
protected:
explicit PowerSaveBlocker(v8::Isolate* isolate);
~PowerSaveBlocker() override;
private:
void UpdatePowerSaveBlocker();
int Start(device::mojom::WakeLockType type);
bool Stop(int id);
bool IsStarted(int id);
std::unique_ptr<device::PowerSaveBlocker> power_save_blocker_;
// Current blocker type used by |power_save_blocker_|
device::mojom::WakeLockType current_blocker_type_;
// Map from id to the corresponding blocker type for each request.
using WakeLockTypeMap = std::map<int, device::mojom::WakeLockType>;
WakeLockTypeMap power_save_blocker_types_;
DISALLOW_COPY_AND_ASSIGN(PowerSaveBlocker);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_POWER_SAVE_BLOCKER_H_

View File

@@ -1,248 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_protocol.h"
#include "atom/browser/atom_browser_client.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/browser.h"
#include "atom/browser/net/url_request_async_asar_job.h"
#include "atom/browser/net/url_request_buffer_job.h"
#include "atom/browser/net/url_request_fetch_job.h"
#include "atom/browser/net/url_request_stream_job.h"
#include "atom/browser/net/url_request_string_job.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/node_includes.h"
#include "atom/common/options_switches.h"
#include "base/command_line.h"
#include "base/strings/string_util.h"
#include "content/public/browser/child_process_security_policy.h"
#include "native_mate/dictionary.h"
#include "url/url_util.h"
using content::BrowserThread;
namespace atom {
namespace api {
namespace {
// List of registered custom standard schemes.
std::vector<std::string> g_standard_schemes;
} // namespace
std::vector<std::string> GetStandardSchemes() {
return g_standard_schemes;
}
void RegisterStandardSchemes(const std::vector<std::string>& schemes,
mate::Arguments* args) {
g_standard_schemes = schemes;
mate::Dictionary opts;
bool secure = false;
args->GetNext(&opts) && opts.Get("secure", &secure);
// Dynamically register the schemes.
auto* policy = content::ChildProcessSecurityPolicy::GetInstance();
for (const std::string& scheme : schemes) {
url::AddStandardScheme(scheme.c_str(), url::SCHEME_WITH_HOST);
if (secure) {
url::AddSecureScheme(scheme.c_str());
}
policy->RegisterWebSafeScheme(scheme);
}
// Add the schemes to command line switches, so child processes can also
// register them.
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
atom::switches::kStandardSchemes, base::JoinString(schemes, ","));
if (secure) {
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
atom::switches::kSecureSchemes, base::JoinString(schemes, ","));
}
}
Protocol::Protocol(v8::Isolate* isolate, AtomBrowserContext* browser_context)
: browser_context_(browser_context), weak_factory_(this) {
Init(isolate);
}
Protocol::~Protocol() {}
void Protocol::RegisterServiceWorkerSchemes(
const std::vector<std::string>& schemes) {
atom::AtomBrowserClient::SetCustomServiceWorkerSchemes(schemes);
}
void Protocol::UnregisterProtocol(const std::string& scheme,
mate::Arguments* args) {
CompletionCallback callback;
args->GetNext(&callback);
auto* getter = static_cast<URLRequestContextGetter*>(
browser_context_->GetRequestContext());
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::BindOnce(&Protocol::UnregisterProtocolInIO,
base::RetainedRef(getter), scheme),
base::BindOnce(&Protocol::OnIOCompleted, GetWeakPtr(), callback));
}
// static
Protocol::ProtocolError Protocol::UnregisterProtocolInIO(
scoped_refptr<URLRequestContextGetter> request_context_getter,
const std::string& scheme) {
auto* job_factory = request_context_getter->job_factory();
if (!job_factory->HasProtocolHandler(scheme))
return PROTOCOL_NOT_REGISTERED;
job_factory->SetProtocolHandler(scheme, nullptr);
return PROTOCOL_OK;
}
void Protocol::IsProtocolHandled(const std::string& scheme,
const BooleanCallback& callback) {
auto* getter = static_cast<URLRequestContextGetter*>(
browser_context_->GetRequestContext());
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&Protocol::IsProtocolHandledInIO, base::RetainedRef(getter),
scheme),
callback);
}
// static
bool Protocol::IsProtocolHandledInIO(
scoped_refptr<URLRequestContextGetter> request_context_getter,
const std::string& scheme) {
return request_context_getter->job_factory()->IsHandledProtocol(scheme);
}
void Protocol::UninterceptProtocol(const std::string& scheme,
mate::Arguments* args) {
CompletionCallback callback;
args->GetNext(&callback);
auto* getter = static_cast<URLRequestContextGetter*>(
browser_context_->GetRequestContext());
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::BindOnce(&Protocol::UninterceptProtocolInIO,
base::RetainedRef(getter), scheme),
base::BindOnce(&Protocol::OnIOCompleted, GetWeakPtr(), callback));
}
// static
Protocol::ProtocolError Protocol::UninterceptProtocolInIO(
scoped_refptr<URLRequestContextGetter> request_context_getter,
const std::string& scheme) {
return request_context_getter->job_factory()->UninterceptProtocol(scheme)
? PROTOCOL_OK
: PROTOCOL_NOT_INTERCEPTED;
}
void Protocol::OnIOCompleted(const CompletionCallback& callback,
ProtocolError error) {
// The completion callback is optional.
if (callback.is_null())
return;
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
if (error == PROTOCOL_OK) {
callback.Run(v8::Null(isolate()));
} else {
std::string str = ErrorCodeToString(error);
callback.Run(v8::Exception::Error(mate::StringToV8(isolate(), str)));
}
}
std::string Protocol::ErrorCodeToString(ProtocolError error) {
switch (error) {
case PROTOCOL_FAIL:
return "Failed to manipulate protocol factory";
case PROTOCOL_REGISTERED:
return "The scheme has been registered";
case PROTOCOL_NOT_REGISTERED:
return "The scheme has not been registered";
case PROTOCOL_INTERCEPTED:
return "The scheme has been intercepted";
case PROTOCOL_NOT_INTERCEPTED:
return "The scheme has not been intercepted";
default:
return "Unexpected error";
}
}
// static
mate::Handle<Protocol> Protocol::Create(v8::Isolate* isolate,
AtomBrowserContext* browser_context) {
return mate::CreateHandle(isolate, new Protocol(isolate, browser_context));
}
// static
void Protocol::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Protocol"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("registerServiceWorkerSchemes",
&Protocol::RegisterServiceWorkerSchemes)
.SetMethod("registerStringProtocol",
&Protocol::RegisterProtocol<URLRequestStringJob>)
.SetMethod("registerBufferProtocol",
&Protocol::RegisterProtocol<URLRequestBufferJob>)
.SetMethod("registerFileProtocol",
&Protocol::RegisterProtocol<URLRequestAsyncAsarJob>)
.SetMethod("registerHttpProtocol",
&Protocol::RegisterProtocol<URLRequestFetchJob>)
.SetMethod("registerStreamProtocol",
&Protocol::RegisterProtocol<URLRequestStreamJob>)
.SetMethod("unregisterProtocol", &Protocol::UnregisterProtocol)
.SetMethod("isProtocolHandled", &Protocol::IsProtocolHandled)
.SetMethod("interceptStringProtocol",
&Protocol::InterceptProtocol<URLRequestStringJob>)
.SetMethod("interceptBufferProtocol",
&Protocol::InterceptProtocol<URLRequestBufferJob>)
.SetMethod("interceptFileProtocol",
&Protocol::InterceptProtocol<URLRequestAsyncAsarJob>)
.SetMethod("interceptHttpProtocol",
&Protocol::InterceptProtocol<URLRequestFetchJob>)
.SetMethod("interceptStreamProtocol",
&Protocol::InterceptProtocol<URLRequestStreamJob>)
.SetMethod("uninterceptProtocol", &Protocol::UninterceptProtocol);
}
} // namespace api
} // namespace atom
namespace {
void RegisterStandardSchemes(const std::vector<std::string>& schemes,
mate::Arguments* args) {
if (atom::Browser::Get()->is_ready()) {
args->ThrowError(
"protocol.registerStandardSchemes should be called before "
"app is ready");
return;
}
atom::api::RegisterStandardSchemes(schemes, args);
}
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
dict.SetMethod("registerStandardSchemes", &RegisterStandardSchemes);
dict.SetMethod("getStandardSchemes", &atom::api::GetStandardSchemes);
}
} // namespace
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_protocol, Initialize)

View File

@@ -1,201 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_PROTOCOL_H_
#define ATOM_BROWSER_API_ATOM_API_PROTOCOL_H_
#include <map>
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/net/atom_url_request_job_factory.h"
#include "base/callback.h"
#include "base/memory/weak_ptr.h"
#include "content/public/browser/browser_thread.h"
#include "native_mate/arguments.h"
#include "native_mate/dictionary.h"
#include "native_mate/handle.h"
#include "net/url_request/url_request_context.h"
namespace base {
class DictionaryValue;
}
namespace atom {
namespace api {
std::vector<std::string> GetStandardSchemes();
void RegisterStandardSchemes(const std::vector<std::string>& schemes,
mate::Arguments* args);
class Protocol : public mate::TrackableObject<Protocol> {
public:
using Handler =
base::Callback<void(const base::DictionaryValue&, v8::Local<v8::Value>)>;
using CompletionCallback = base::Callback<void(v8::Local<v8::Value>)>;
using BooleanCallback = base::Callback<void(bool)>;
static mate::Handle<Protocol> Create(v8::Isolate* isolate,
AtomBrowserContext* browser_context);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
protected:
Protocol(v8::Isolate* isolate, AtomBrowserContext* browser_context);
~Protocol() override;
private:
// Possible errors.
enum ProtocolError {
PROTOCOL_OK, // no error
PROTOCOL_FAIL, // operation failed, should never occur
PROTOCOL_REGISTERED,
PROTOCOL_NOT_REGISTERED,
PROTOCOL_INTERCEPTED,
PROTOCOL_NOT_INTERCEPTED,
};
// The protocol handler that will create a protocol handler for certain
// request job.
template <typename RequestJob>
class CustomProtocolHandler
: public net::URLRequestJobFactory::ProtocolHandler {
public:
CustomProtocolHandler(v8::Isolate* isolate,
net::URLRequestContextGetter* request_context,
const Handler& handler)
: isolate_(isolate),
request_context_(request_context),
handler_(handler) {}
~CustomProtocolHandler() override {}
net::URLRequestJob* MaybeCreateJob(
net::URLRequest* request,
net::NetworkDelegate* network_delegate) const override {
RequestJob* request_job = new RequestJob(request, network_delegate);
request_job->SetHandlerInfo(isolate_, request_context_, handler_);
return request_job;
}
private:
v8::Isolate* isolate_;
net::URLRequestContextGetter* request_context_;
Protocol::Handler handler_;
DISALLOW_COPY_AND_ASSIGN(CustomProtocolHandler);
};
// Register schemes that can handle service worker.
void RegisterServiceWorkerSchemes(const std::vector<std::string>& schemes);
// Register the protocol with certain request job.
template <typename RequestJob>
void RegisterProtocol(const std::string& scheme,
const Handler& handler,
mate::Arguments* args) {
CompletionCallback callback;
args->GetNext(&callback);
auto* getter = static_cast<URLRequestContextGetter*>(
browser_context_->GetRequestContext());
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::BindOnce(&Protocol::RegisterProtocolInIO<RequestJob>,
base::RetainedRef(getter), isolate(), scheme, handler),
base::BindOnce(&Protocol::OnIOCompleted, GetWeakPtr(), callback));
}
template <typename RequestJob>
static ProtocolError RegisterProtocolInIO(
scoped_refptr<URLRequestContextGetter> request_context_getter,
v8::Isolate* isolate,
const std::string& scheme,
const Handler& handler) {
auto* job_factory = request_context_getter->job_factory();
if (job_factory->IsHandledProtocol(scheme))
return PROTOCOL_REGISTERED;
auto protocol_handler = std::make_unique<CustomProtocolHandler<RequestJob>>(
isolate, request_context_getter.get(), handler);
if (job_factory->SetProtocolHandler(scheme, std::move(protocol_handler)))
return PROTOCOL_OK;
else
return PROTOCOL_FAIL;
}
// Unregister the protocol handler that handles |scheme|.
void UnregisterProtocol(const std::string& scheme, mate::Arguments* args);
static ProtocolError UnregisterProtocolInIO(
scoped_refptr<URLRequestContextGetter> request_context_getter,
const std::string& scheme);
// Whether the protocol has handler registered.
void IsProtocolHandled(const std::string& scheme,
const BooleanCallback& callback);
static bool IsProtocolHandledInIO(
scoped_refptr<URLRequestContextGetter> request_context_getter,
const std::string& scheme);
// Replace the protocol handler with a new one.
template <typename RequestJob>
void InterceptProtocol(const std::string& scheme,
const Handler& handler,
mate::Arguments* args) {
CompletionCallback callback;
args->GetNext(&callback);
auto* getter = static_cast<URLRequestContextGetter*>(
browser_context_->GetRequestContext());
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::IO, FROM_HERE,
base::BindOnce(&Protocol::InterceptProtocolInIO<RequestJob>,
base::RetainedRef(getter), isolate(), scheme, handler),
base::BindOnce(&Protocol::OnIOCompleted, GetWeakPtr(), callback));
}
template <typename RequestJob>
static ProtocolError InterceptProtocolInIO(
scoped_refptr<URLRequestContextGetter> request_context_getter,
v8::Isolate* isolate,
const std::string& scheme,
const Handler& handler) {
auto* job_factory = request_context_getter->job_factory();
if (!job_factory->IsHandledProtocol(scheme))
return PROTOCOL_NOT_REGISTERED;
// It is possible a protocol is handled but can not be intercepted.
if (!job_factory->HasProtocolHandler(scheme))
return PROTOCOL_FAIL;
auto protocol_handler = std::make_unique<CustomProtocolHandler<RequestJob>>(
isolate, request_context_getter.get(), handler);
if (!job_factory->InterceptProtocol(scheme, std::move(protocol_handler)))
return PROTOCOL_INTERCEPTED;
return PROTOCOL_OK;
}
// Restore the |scheme| to its original protocol handler.
void UninterceptProtocol(const std::string& scheme, mate::Arguments* args);
static ProtocolError UninterceptProtocolInIO(
scoped_refptr<URLRequestContextGetter> request_context_getter,
const std::string& scheme);
// Convert error code to JS exception and call the callback.
void OnIOCompleted(const CompletionCallback& callback, ProtocolError error);
// Convert error code to string.
std::string ErrorCodeToString(ProtocolError error);
base::WeakPtr<Protocol> GetWeakPtr() { return weak_factory_.GetWeakPtr(); }
scoped_refptr<AtomBrowserContext> browser_context_;
base::WeakPtrFactory<Protocol> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(Protocol);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_PROTOCOL_H_

View File

@@ -1,91 +0,0 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_render_process_preferences.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/atom_browser_client.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "content/public/browser/render_process_host.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "atom/common/node_includes.h"
namespace atom {
namespace api {
namespace {
bool IsWebContents(v8::Isolate* isolate, content::RenderProcessHost* process) {
content::WebContents* web_contents =
static_cast<AtomBrowserClient*>(AtomBrowserClient::Get())
->GetWebContentsFromProcessID(process->GetID());
if (!web_contents)
return false;
auto api_web_contents = WebContents::CreateFrom(isolate, web_contents);
auto type = api_web_contents->GetType();
return type == WebContents::Type::BROWSER_WINDOW ||
type == WebContents::Type::WEB_VIEW;
}
} // namespace
RenderProcessPreferences::RenderProcessPreferences(
v8::Isolate* isolate,
const atom::RenderProcessPreferences::Predicate& predicate)
: preferences_(predicate) {
Init(isolate);
}
RenderProcessPreferences::~RenderProcessPreferences() {}
int RenderProcessPreferences::AddEntry(const base::DictionaryValue& entry) {
return preferences_.AddEntry(entry);
}
void RenderProcessPreferences::RemoveEntry(int id) {
preferences_.RemoveEntry(id);
}
// static
void RenderProcessPreferences::BuildPrototype(
v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(
mate::StringToV8(isolate, "RenderProcessPreferences"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("addEntry", &RenderProcessPreferences::AddEntry)
.SetMethod("removeEntry", &RenderProcessPreferences::RemoveEntry);
}
// static
mate::Handle<RenderProcessPreferences>
RenderProcessPreferences::ForAllWebContents(v8::Isolate* isolate) {
return mate::CreateHandle(isolate,
new RenderProcessPreferences(
isolate, base::Bind(&IsWebContents, isolate)));
}
} // namespace api
} // namespace atom
namespace {
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
mate::Dictionary dict(context->GetIsolate(), exports);
dict.SetMethod("forAllWebContents",
&atom::api::RenderProcessPreferences::ForAllWebContents);
}
} // namespace
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_render_process_preferences,
Initialize)

View File

@@ -1,44 +0,0 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_RENDER_PROCESS_PREFERENCES_H_
#define ATOM_BROWSER_API_ATOM_API_RENDER_PROCESS_PREFERENCES_H_
#include "atom/browser/render_process_preferences.h"
#include "native_mate/handle.h"
#include "native_mate/wrappable.h"
namespace atom {
namespace api {
class RenderProcessPreferences
: public mate::Wrappable<RenderProcessPreferences> {
public:
static mate::Handle<RenderProcessPreferences> ForAllWebContents(
v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
int AddEntry(const base::DictionaryValue& entry);
void RemoveEntry(int id);
protected:
RenderProcessPreferences(
v8::Isolate* isolate,
const atom::RenderProcessPreferences::Predicate& predicate);
~RenderProcessPreferences() override;
private:
atom::RenderProcessPreferences preferences_;
DISALLOW_COPY_AND_ASSIGN(RenderProcessPreferences);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_RENDER_PROCESS_PREFERENCES_H_

View File

@@ -1,812 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_session.h"
#include <map>
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "atom/browser/api/atom_api_cookies.h"
#include "atom/browser/api/atom_api_download_item.h"
#include "atom/browser/api/atom_api_net_log.h"
#include "atom/browser/api/atom_api_protocol.h"
#include "atom/browser/api/atom_api_web_request.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/atom_permission_manager.h"
#include "atom/browser/browser.h"
#include "atom/browser/net/atom_cert_verifier.h"
#include "atom/browser/session_preferences.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/content_converter.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "base/files/file_path.h"
#include "base/guid.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "brightray/browser/media/media_device_id_salt.h"
#include "chrome/browser/browser_process.h"
#include "chrome/common/pref_names.h"
#include "components/download/public/common/download_danger_type.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/value_map_pref_store.h"
#include "components/proxy_config/proxy_config_dictionary.h"
#include "components/proxy_config/proxy_config_pref_names.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/download_item_utils.h"
#include "content/public/browser/download_manager_delegate.h"
#include "content/public/browser/storage_partition.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "net/base/load_flags.h"
#include "net/disk_cache/disk_cache.h"
#include "net/dns/host_cache.h"
#include "net/http/http_auth_handler_factory.h"
#include "net/http/http_auth_preferences.h"
#include "net/http/http_cache.h"
#include "net/http/http_transaction_factory.h"
#include "net/url_request/static_http_user_agent_settings.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
#include "ui/base/l10n/l10n_util.h"
#include "atom/common/node_includes.h"
using atom::api::Cookies;
using content::BrowserThread;
using content::StoragePartition;
namespace {
struct ClearStorageDataOptions {
GURL origin;
uint32_t storage_types = StoragePartition::REMOVE_DATA_MASK_ALL;
uint32_t quota_types = StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL;
};
struct ClearAuthCacheOptions {
std::string type;
GURL origin;
std::string realm;
base::string16 username;
base::string16 password;
net::HttpAuth::Scheme auth_scheme;
};
uint32_t GetStorageMask(const std::vector<std::string>& storage_types) {
uint32_t storage_mask = 0;
for (const auto& it : storage_types) {
auto type = base::ToLowerASCII(it);
if (type == "appcache")
storage_mask |= StoragePartition::REMOVE_DATA_MASK_APPCACHE;
else if (type == "cookies")
storage_mask |= StoragePartition::REMOVE_DATA_MASK_COOKIES;
else if (type == "filesystem")
storage_mask |= StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS;
else if (type == "indexdb")
storage_mask |= StoragePartition::REMOVE_DATA_MASK_INDEXEDDB;
else if (type == "localstorage")
storage_mask |= StoragePartition::REMOVE_DATA_MASK_LOCAL_STORAGE;
else if (type == "shadercache")
storage_mask |= StoragePartition::REMOVE_DATA_MASK_SHADER_CACHE;
else if (type == "websql")
storage_mask |= StoragePartition::REMOVE_DATA_MASK_WEBSQL;
else if (type == "serviceworkers")
storage_mask |= StoragePartition::REMOVE_DATA_MASK_SERVICE_WORKERS;
else if (type == "cachestorage")
storage_mask |= StoragePartition::REMOVE_DATA_MASK_CACHE_STORAGE;
}
return storage_mask;
}
uint32_t GetQuotaMask(const std::vector<std::string>& quota_types) {
uint32_t quota_mask = 0;
for (const auto& it : quota_types) {
auto type = base::ToLowerASCII(it);
if (type == "temporary")
quota_mask |= StoragePartition::QUOTA_MANAGED_STORAGE_MASK_TEMPORARY;
else if (type == "persistent")
quota_mask |= StoragePartition::QUOTA_MANAGED_STORAGE_MASK_PERSISTENT;
else if (type == "syncable")
quota_mask |= StoragePartition::QUOTA_MANAGED_STORAGE_MASK_SYNCABLE;
}
return quota_mask;
}
net::HttpAuth::Scheme GetAuthSchemeFromString(const std::string& scheme) {
if (scheme == "basic")
return net::HttpAuth::AUTH_SCHEME_BASIC;
if (scheme == "digest")
return net::HttpAuth::AUTH_SCHEME_DIGEST;
if (scheme == "ntlm")
return net::HttpAuth::AUTH_SCHEME_NTLM;
if (scheme == "negotiate")
return net::HttpAuth::AUTH_SCHEME_NEGOTIATE;
return net::HttpAuth::AUTH_SCHEME_MAX;
}
void SetUserAgentInIO(scoped_refptr<net::URLRequestContextGetter> getter,
const std::string& accept_lang,
const std::string& user_agent) {
getter->GetURLRequestContext()->set_http_user_agent_settings(
new net::StaticHttpUserAgentSettings(
net::HttpUtil::GenerateAcceptLanguageHeader(accept_lang),
user_agent));
}
} // namespace
namespace mate {
template <>
struct Converter<ClearStorageDataOptions> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
ClearStorageDataOptions* out) {
mate::Dictionary options;
if (!ConvertFromV8(isolate, val, &options))
return false;
options.Get("origin", &out->origin);
std::vector<std::string> types;
if (options.Get("storages", &types))
out->storage_types = GetStorageMask(types);
if (options.Get("quotas", &types))
out->quota_types = GetQuotaMask(types);
return true;
}
};
template <>
struct Converter<ClearAuthCacheOptions> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
ClearAuthCacheOptions* out) {
mate::Dictionary options;
if (!ConvertFromV8(isolate, val, &options))
return false;
options.Get("type", &out->type);
options.Get("origin", &out->origin);
options.Get("realm", &out->realm);
options.Get("username", &out->username);
options.Get("password", &out->password);
std::string scheme;
if (options.Get("scheme", &scheme))
out->auth_scheme = GetAuthSchemeFromString(scheme);
return true;
}
};
template <>
struct Converter<atom::VerifyRequestParams> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
atom::VerifyRequestParams val) {
mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
dict.Set("hostname", val.hostname);
dict.Set("certificate", val.certificate);
dict.Set("verificationResult", val.default_result);
dict.Set("errorCode", val.error_code);
return dict.GetHandle();
}
};
} // namespace mate
namespace atom {
namespace api {
namespace {
const char kPersistPrefix[] = "persist:";
// Referenced session objects.
std::map<uint32_t, v8::Global<v8::Object>> g_sessions;
// Runs the callback in UI thread.
void RunCallbackInUI(const base::Callback<void()>& callback) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, callback);
}
template <typename... T>
void RunCallbackInUI(const base::Callback<void(T...)>& callback, T... result) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::BindOnce(callback, result...));
}
// Callback of HttpCache::GetBackend.
void OnGetBackend(disk_cache::Backend** backend_ptr,
Session::CacheAction action,
const net::CompletionCallback& callback,
int result) {
if (result != net::OK) {
RunCallbackInUI(callback, result);
} else if (backend_ptr && *backend_ptr) {
if (action == Session::CacheAction::CLEAR) {
(*backend_ptr)
->DoomAllEntries(base::Bind(&RunCallbackInUI<int>, callback));
} else if (action == Session::CacheAction::STATS) {
base::StringPairs stats;
(*backend_ptr)->GetStats(&stats);
for (const auto& stat : stats) {
if (stat.first == "Current size") {
int current_size;
base::StringToInt(stat.second, &current_size);
RunCallbackInUI(callback, current_size);
break;
}
}
}
} else {
RunCallbackInUI<int>(callback, net::ERR_FAILED);
}
}
void DoCacheActionInIO(
const scoped_refptr<net::URLRequestContextGetter>& context_getter,
Session::CacheAction action,
const net::CompletionCallback& callback) {
auto* request_context = context_getter->GetURLRequestContext();
auto* http_cache = request_context->http_transaction_factory()->GetCache();
if (!http_cache)
RunCallbackInUI<int>(callback, net::ERR_FAILED);
// Call GetBackend and make the backend's ptr accessable in OnGetBackend.
using BackendPtr = disk_cache::Backend*;
auto** backend_ptr = new BackendPtr(nullptr);
net::CompletionCallback on_get_backend =
base::Bind(&OnGetBackend, base::Owned(backend_ptr), action, callback);
int rv = http_cache->GetBackend(backend_ptr, on_get_backend);
if (rv != net::ERR_IO_PENDING)
on_get_backend.Run(net::OK);
}
void SetCertVerifyProcInIO(
const scoped_refptr<net::URLRequestContextGetter>& context_getter,
const AtomCertVerifier::VerifyProc& proc) {
auto* request_context = context_getter->GetURLRequestContext();
static_cast<AtomCertVerifier*>(request_context->cert_verifier())
->SetVerifyProc(proc);
}
void ClearHostResolverCacheInIO(
const scoped_refptr<net::URLRequestContextGetter>& context_getter,
const base::Closure& callback) {
auto* request_context = context_getter->GetURLRequestContext();
auto* cache = request_context->host_resolver()->GetHostCache();
if (cache) {
cache->clear();
DCHECK_EQ(0u, cache->size());
if (!callback.is_null())
RunCallbackInUI(callback);
}
}
void ClearAuthCacheInIO(
const scoped_refptr<net::URLRequestContextGetter>& context_getter,
const ClearAuthCacheOptions& options,
const base::Closure& callback) {
auto* request_context = context_getter->GetURLRequestContext();
auto* network_session =
request_context->http_transaction_factory()->GetSession();
if (network_session) {
if (options.type == "password") {
auto* auth_cache = network_session->http_auth_cache();
if (!options.origin.is_empty()) {
auth_cache->Remove(
options.origin, options.realm, options.auth_scheme,
net::AuthCredentials(options.username, options.password));
} else {
auth_cache->ClearAllEntries();
}
} else if (options.type == "clientCertificate") {
auto* client_auth_cache = network_session->ssl_client_auth_cache();
client_auth_cache->Remove(net::HostPortPair::FromURL(options.origin));
}
network_session->CloseAllConnections();
}
if (!callback.is_null())
RunCallbackInUI(callback);
}
void AllowNTLMCredentialsForDomainsInIO(
const scoped_refptr<net::URLRequestContextGetter>& context_getter,
const std::string& domains) {
auto* request_context = context_getter->GetURLRequestContext();
auto* auth_handler = request_context->http_auth_handler_factory();
if (auth_handler) {
auto* auth_preferences = const_cast<net::HttpAuthPreferences*>(
auth_handler->http_auth_preferences());
if (auth_preferences)
auth_preferences->SetServerWhitelist(domains);
}
}
void OnClearStorageDataDone(const base::Closure& callback) {
if (!callback.is_null())
callback.Run();
}
void DownloadIdCallback(content::DownloadManager* download_manager,
const base::FilePath& path,
const std::vector<GURL>& url_chain,
const std::string& mime_type,
int64_t offset,
int64_t length,
const std::string& last_modified,
const std::string& etag,
const base::Time& start_time,
uint32_t id) {
download_manager->CreateDownloadItem(
base::GenerateGUID(), id, path, path, url_chain, GURL(), GURL(), GURL(),
GURL(), mime_type, mime_type, start_time, base::Time(), etag,
last_modified, offset, length, std::string(),
download::DownloadItem::INTERRUPTED,
download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
download::DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT, false, base::Time(),
false, std::vector<download::DownloadItem::ReceivedSlice>());
}
void DestroyGlobalHandle(v8::Isolate* isolate,
const v8::Global<v8::Value>& global_handle) {
v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
if (!global_handle.IsEmpty()) {
v8::Local<v8::Value> local_handle = global_handle.Get(isolate);
if (local_handle->IsObject()) {
v8::Local<v8::Object> object = local_handle->ToObject();
void* ptr = object->GetAlignedPointerFromInternalField(0);
if (!ptr)
return;
delete static_cast<mate::WrappableBase*>(ptr);
object->SetAlignedPointerInInternalField(0, nullptr);
}
}
}
} // namespace
Session::Session(v8::Isolate* isolate, AtomBrowserContext* browser_context)
: network_emulation_token_(base::UnguessableToken::Create()),
browser_context_(browser_context) {
// Observe DownloadManager to get download notifications.
content::BrowserContext::GetDownloadManager(browser_context)
->AddObserver(this);
new SessionPreferences(browser_context);
Init(isolate);
AttachAsUserData(browser_context);
}
Session::~Session() {
content::BrowserContext::GetDownloadManager(browser_context())
->RemoveObserver(this);
DestroyGlobalHandle(isolate(), cookies_);
DestroyGlobalHandle(isolate(), web_request_);
DestroyGlobalHandle(isolate(), protocol_);
DestroyGlobalHandle(isolate(), net_log_);
g_sessions.erase(weak_map_id());
}
void Session::OnDownloadCreated(content::DownloadManager* manager,
download::DownloadItem* item) {
if (item->IsSavePackageDownload())
return;
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
auto handle = DownloadItem::Create(isolate(), item);
if (item->GetState() == download::DownloadItem::INTERRUPTED)
handle->SetSavePath(item->GetTargetFilePath());
content::WebContents* web_contents =
content::DownloadItemUtils::GetWebContents(item);
bool prevent_default = Emit("will-download", handle, web_contents);
if (prevent_default) {
item->Cancel(true);
item->Remove();
}
}
void Session::ResolveProxy(
const GURL& url,
const ResolveProxyHelper::ResolveProxyCallback& callback) {
browser_context_->GetResolveProxyHelper()->ResolveProxy(url, callback);
}
template <Session::CacheAction action>
void Session::DoCacheAction(const net::CompletionCallback& callback) {
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&DoCacheActionInIO,
WrapRefCounted(browser_context_->GetRequestContext()),
action, callback));
}
void Session::ClearStorageData(mate::Arguments* args) {
// clearStorageData([options, callback])
ClearStorageDataOptions options;
base::Closure callback;
args->GetNext(&options);
args->GetNext(&callback);
auto* storage_partition =
content::BrowserContext::GetStoragePartition(browser_context(), nullptr);
if (options.storage_types & StoragePartition::REMOVE_DATA_MASK_COOKIES) {
// Reset media device id salt when cookies are cleared.
// https://w3c.github.io/mediacapture-main/#dom-mediadeviceinfo-deviceid
brightray::MediaDeviceIDSalt::Reset(browser_context()->prefs());
}
storage_partition->ClearData(
options.storage_types, options.quota_types, options.origin,
content::StoragePartition::OriginMatcherFunction(), base::Time(),
base::Time::Max(), base::Bind(&OnClearStorageDataDone, callback));
}
void Session::FlushStorageData() {
auto* storage_partition =
content::BrowserContext::GetStoragePartition(browser_context(), nullptr);
storage_partition->Flush();
}
void Session::SetProxy(const mate::Dictionary& options,
const base::Closure& callback) {
if (!browser_context_->in_memory_pref_store()) {
callback.Run();
return;
}
std::string proxy_rules, bypass_list, pac_url;
options.Get("pacScript", &pac_url);
options.Get("proxyRules", &proxy_rules);
options.Get("proxyBypassRules", &bypass_list);
// pacScript takes precedence over proxyRules.
if (!pac_url.empty()) {
browser_context_->in_memory_pref_store()->SetValue(
proxy_config::prefs::kProxy,
ProxyConfigDictionary::CreatePacScript(pac_url,
true /* pac_mandatory */),
WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
} else {
browser_context_->in_memory_pref_store()->SetValue(
proxy_config::prefs::kProxy,
ProxyConfigDictionary::CreateFixedServers(proxy_rules, bypass_list),
WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
}
base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback);
}
void Session::SetDownloadPath(const base::FilePath& path) {
browser_context_->prefs()->SetFilePath(prefs::kDownloadDefaultDirectory,
path);
}
void Session::EnableNetworkEmulation(const mate::Dictionary& options) {
auto conditions = network::mojom::NetworkConditions::New();
options.Get("offline", &conditions->offline);
options.Get("downloadThroughput", &conditions->download_throughput);
options.Get("uploadThroughput", &conditions->upload_throughput);
double latency = 0.0;
if (options.Get("latency", &latency) && latency) {
conditions->latency = base::TimeDelta::FromMillisecondsD(latency);
}
auto* network_context = content::BrowserContext::GetDefaultStoragePartition(
browser_context_.get())
->GetNetworkContext();
network_context->SetNetworkConditions(network_emulation_token_,
std::move(conditions));
}
void Session::DisableNetworkEmulation() {
auto* network_context = content::BrowserContext::GetDefaultStoragePartition(
browser_context_.get())
->GetNetworkContext();
network_context->SetNetworkConditions(
network_emulation_token_, network::mojom::NetworkConditions::New());
}
void WrapVerifyProc(base::Callback<void(const VerifyRequestParams& request,
base::Callback<void(int)>)> proc,
const VerifyRequestParams& request,
base::OnceCallback<void(int)> cb) {
proc.Run(request, base::AdaptCallbackForRepeating(std::move(cb)));
}
void Session::SetCertVerifyProc(v8::Local<v8::Value> val,
mate::Arguments* args) {
base::Callback<void(const VerifyRequestParams& request,
base::Callback<void(int)>)>
proc;
if (!(val->IsNull() || mate::ConvertFromV8(args->isolate(), val, &proc))) {
args->ThrowError("Must pass null or function");
return;
}
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&SetCertVerifyProcInIO,
WrapRefCounted(browser_context_->GetRequestContext()),
base::Bind(&WrapVerifyProc, proc)));
}
void Session::SetPermissionRequestHandler(v8::Local<v8::Value> val,
mate::Arguments* args) {
AtomPermissionManager::RequestHandler handler;
if (!(val->IsNull() || mate::ConvertFromV8(args->isolate(), val, &handler))) {
args->ThrowError("Must pass null or function");
return;
}
auto* permission_manager = static_cast<AtomPermissionManager*>(
browser_context()->GetPermissionControllerDelegate());
permission_manager->SetPermissionRequestHandler(handler);
}
void Session::SetPermissionCheckHandler(v8::Local<v8::Value> val,
mate::Arguments* args) {
AtomPermissionManager::CheckHandler handler;
if (!(val->IsNull() || mate::ConvertFromV8(args->isolate(), val, &handler))) {
args->ThrowError("Must pass null or function");
return;
}
auto* permission_manager = static_cast<AtomPermissionManager*>(
browser_context()->GetPermissionControllerDelegate());
permission_manager->SetPermissionCheckHandler(handler);
}
void Session::ClearHostResolverCache(mate::Arguments* args) {
base::Closure callback;
args->GetNext(&callback);
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&ClearHostResolverCacheInIO,
WrapRefCounted(browser_context_->GetRequestContext()),
callback));
}
void Session::ClearAuthCache(mate::Arguments* args) {
ClearAuthCacheOptions options;
if (!args->GetNext(&options)) {
args->ThrowError("Must specify options object");
return;
}
base::Closure callback;
args->GetNext(&callback);
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&ClearAuthCacheInIO,
WrapRefCounted(browser_context_->GetRequestContext()),
options, callback));
}
void Session::AllowNTLMCredentialsForDomains(const std::string& domains) {
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&AllowNTLMCredentialsForDomainsInIO,
WrapRefCounted(browser_context_->GetRequestContext()),
domains));
}
void Session::SetUserAgent(const std::string& user_agent,
mate::Arguments* args) {
browser_context_->SetUserAgent(user_agent);
std::string accept_lang = g_browser_process->GetApplicationLocale();
args->GetNext(&accept_lang);
scoped_refptr<net::URLRequestContextGetter> getter(
browser_context_->GetRequestContext());
getter->GetNetworkTaskRunner()->PostTask(
FROM_HERE,
base::BindOnce(&SetUserAgentInIO, getter, accept_lang, user_agent));
}
std::string Session::GetUserAgent() {
return browser_context_->GetUserAgent();
}
void Session::GetBlobData(const std::string& uuid,
const AtomBlobReader::CompletionCallback& callback) {
if (callback.is_null())
return;
AtomBlobReader* blob_reader = browser_context()->GetBlobReader();
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&AtomBlobReader::StartReading,
base::Unretained(blob_reader), uuid, callback));
}
void Session::CreateInterruptedDownload(const mate::Dictionary& options) {
int64_t offset = 0, length = 0;
double start_time = 0.0;
std::string mime_type, last_modified, etag;
base::FilePath path;
std::vector<GURL> url_chain;
options.Get("path", &path);
options.Get("urlChain", &url_chain);
options.Get("mimeType", &mime_type);
options.Get("offset", &offset);
options.Get("length", &length);
options.Get("lastModified", &last_modified);
options.Get("eTag", &etag);
options.Get("startTime", &start_time);
if (path.empty() || url_chain.empty() || length == 0) {
isolate()->ThrowException(v8::Exception::Error(mate::StringToV8(
isolate(), "Must pass non-empty path, urlChain and length.")));
return;
}
if (offset >= length) {
isolate()->ThrowException(v8::Exception::Error(mate::StringToV8(
isolate(), "Must pass an offset value less than length.")));
return;
}
auto* download_manager =
content::BrowserContext::GetDownloadManager(browser_context());
download_manager->GetDelegate()->GetNextId(base::Bind(
&DownloadIdCallback, download_manager, path, url_chain, mime_type, offset,
length, last_modified, etag, base::Time::FromDoubleT(start_time)));
}
void Session::SetPreloads(
const std::vector<base::FilePath::StringType>& preloads) {
auto* prefs = SessionPreferences::FromBrowserContext(browser_context());
DCHECK(prefs);
prefs->set_preloads(preloads);
}
std::vector<base::FilePath::StringType> Session::GetPreloads() const {
auto* prefs = SessionPreferences::FromBrowserContext(browser_context());
DCHECK(prefs);
return prefs->preloads();
}
v8::Local<v8::Value> Session::Cookies(v8::Isolate* isolate) {
if (cookies_.IsEmpty()) {
auto handle = Cookies::Create(isolate, browser_context());
cookies_.Reset(isolate, handle.ToV8());
}
return v8::Local<v8::Value>::New(isolate, cookies_);
}
v8::Local<v8::Value> Session::Protocol(v8::Isolate* isolate) {
if (protocol_.IsEmpty()) {
auto handle = atom::api::Protocol::Create(isolate, browser_context());
protocol_.Reset(isolate, handle.ToV8());
}
return v8::Local<v8::Value>::New(isolate, protocol_);
}
v8::Local<v8::Value> Session::WebRequest(v8::Isolate* isolate) {
if (web_request_.IsEmpty()) {
auto handle = atom::api::WebRequest::Create(isolate, browser_context());
web_request_.Reset(isolate, handle.ToV8());
}
return v8::Local<v8::Value>::New(isolate, web_request_);
}
v8::Local<v8::Value> Session::NetLog(v8::Isolate* isolate) {
if (net_log_.IsEmpty()) {
auto handle = atom::api::NetLog::Create(isolate, browser_context());
net_log_.Reset(isolate, handle.ToV8());
}
return v8::Local<v8::Value>::New(isolate, net_log_);
}
// static
mate::Handle<Session> Session::CreateFrom(v8::Isolate* isolate,
AtomBrowserContext* browser_context) {
auto* existing = TrackableObject::FromWrappedClass(isolate, browser_context);
if (existing)
return mate::CreateHandle(isolate, static_cast<Session*>(existing));
auto handle =
mate::CreateHandle(isolate, new Session(isolate, browser_context));
// The Sessions should never be garbage collected, since the common pattern is
// to use partition strings, instead of using the Session object directly.
g_sessions[handle->weak_map_id()] =
v8::Global<v8::Object>(isolate, handle.ToV8());
return handle;
}
// static
mate::Handle<Session> Session::FromPartition(
v8::Isolate* isolate,
const std::string& partition,
const base::DictionaryValue& options) {
scoped_refptr<AtomBrowserContext> browser_context;
if (partition.empty()) {
browser_context = AtomBrowserContext::From("", false, options);
} else if (base::StartsWith(partition, kPersistPrefix,
base::CompareCase::SENSITIVE)) {
std::string name = partition.substr(8);
browser_context = AtomBrowserContext::From(name, false, options);
} else {
browser_context = AtomBrowserContext::From(partition, true, options);
}
return CreateFrom(isolate, browser_context.get());
}
// static
void Session::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Session"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("resolveProxy", &Session::ResolveProxy)
.SetMethod("getCacheSize", &Session::DoCacheAction<CacheAction::STATS>)
.SetMethod("clearCache", &Session::DoCacheAction<CacheAction::CLEAR>)
.SetMethod("clearStorageData", &Session::ClearStorageData)
.SetMethod("flushStorageData", &Session::FlushStorageData)
.SetMethod("setProxy", &Session::SetProxy)
.SetMethod("setDownloadPath", &Session::SetDownloadPath)
.SetMethod("enableNetworkEmulation", &Session::EnableNetworkEmulation)
.SetMethod("disableNetworkEmulation", &Session::DisableNetworkEmulation)
.SetMethod("setCertificateVerifyProc", &Session::SetCertVerifyProc)
.SetMethod("setPermissionRequestHandler",
&Session::SetPermissionRequestHandler)
.SetMethod("setPermissionCheckHandler",
&Session::SetPermissionCheckHandler)
.SetMethod("clearHostResolverCache", &Session::ClearHostResolverCache)
.SetMethod("clearAuthCache", &Session::ClearAuthCache)
.SetMethod("allowNTLMCredentialsForDomains",
&Session::AllowNTLMCredentialsForDomains)
.SetMethod("setUserAgent", &Session::SetUserAgent)
.SetMethod("getUserAgent", &Session::GetUserAgent)
.SetMethod("getBlobData", &Session::GetBlobData)
.SetMethod("createInterruptedDownload",
&Session::CreateInterruptedDownload)
.SetMethod("setPreloads", &Session::SetPreloads)
.SetMethod("getPreloads", &Session::GetPreloads)
.SetProperty("cookies", &Session::Cookies)
.SetProperty("netLog", &Session::NetLog)
.SetProperty("protocol", &Session::Protocol)
.SetProperty("webRequest", &Session::WebRequest);
}
} // namespace api
} // namespace atom
namespace {
using atom::api::Session;
v8::Local<v8::Value> FromPartition(const std::string& partition,
mate::Arguments* args) {
if (!atom::Browser::Get()->is_ready()) {
args->ThrowError("Session can only be received when app is ready");
return v8::Null(args->isolate());
}
base::DictionaryValue options;
args->GetNext(&options);
return Session::FromPartition(args->isolate(), partition, options).ToV8();
}
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
v8::Isolate* isolate = context->GetIsolate();
mate::Dictionary dict(isolate, exports);
dict.Set("Session", Session::GetConstructor(isolate)->GetFunction());
dict.Set("Cookies", Cookies::GetConstructor(isolate)->GetFunction());
dict.SetMethod("fromPartition", &FromPartition);
}
} // namespace
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_session, Initialize)

View File

@@ -1,409 +0,0 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_system_preferences.h"
#include <map>
#import <Cocoa/Cocoa.h>
#include "atom/browser/mac/atom_application.h"
#include "atom/browser/mac/dict_util.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "base/strings/sys_string_conversions.h"
#include "base/values.h"
#include "native_mate/object_template_builder.h"
#include "net/base/mac/url_conversions.h"
namespace mate {
template <>
struct Converter<NSAppearance*> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
NSAppearance** out) {
if (val->IsNull()) {
*out = nil;
return true;
}
std::string name;
if (!mate::ConvertFromV8(isolate, val, &name)) {
return false;
}
if (name == "light") {
*out = [NSAppearance appearanceNamed:NSAppearanceNameAqua];
return true;
} else if (name == "dark") {
if (@available(macOS 10.14, *)) {
*out = [NSAppearance appearanceNamed:NSAppearanceNameDarkAqua];
} else {
*out = [NSAppearance appearanceNamed:NSAppearanceNameAqua];
}
return true;
}
return false;
}
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, NSAppearance* val) {
if (val == nil) {
return v8::Null(isolate);
}
if (val.name == NSAppearanceNameAqua) {
return mate::ConvertToV8(isolate, "light");
}
if (@available(macOS 10.14, *)) {
if (val.name == NSAppearanceNameDarkAqua) {
return mate::ConvertToV8(isolate, "dark");
}
}
return mate::ConvertToV8(isolate, "unknown");
}
};
} // namespace mate
namespace atom {
namespace api {
namespace {
int g_next_id = 0;
// The map to convert |id| to |int|.
std::map<int, id> g_id_map;
} // namespace
void SystemPreferences::PostNotification(
const std::string& name,
const base::DictionaryValue& user_info) {
DoPostNotification(name, user_info, kNSDistributedNotificationCenter);
}
int SystemPreferences::SubscribeNotification(
const std::string& name,
const NotificationCallback& callback) {
return DoSubscribeNotification(name, callback,
kNSDistributedNotificationCenter);
}
void SystemPreferences::UnsubscribeNotification(int request_id) {
DoUnsubscribeNotification(request_id, kNSDistributedNotificationCenter);
}
void SystemPreferences::PostLocalNotification(
const std::string& name,
const base::DictionaryValue& user_info) {
DoPostNotification(name, user_info, kNSNotificationCenter);
}
int SystemPreferences::SubscribeLocalNotification(
const std::string& name,
const NotificationCallback& callback) {
return DoSubscribeNotification(name, callback, kNSNotificationCenter);
}
void SystemPreferences::UnsubscribeLocalNotification(int request_id) {
DoUnsubscribeNotification(request_id, kNSNotificationCenter);
}
void SystemPreferences::PostWorkspaceNotification(
const std::string& name,
const base::DictionaryValue& user_info) {
DoPostNotification(name, user_info, kNSWorkspaceNotificationCenter);
}
int SystemPreferences::SubscribeWorkspaceNotification(
const std::string& name,
const NotificationCallback& callback) {
return DoSubscribeNotification(name, callback,
kNSWorkspaceNotificationCenter);
}
void SystemPreferences::UnsubscribeWorkspaceNotification(int request_id) {
DoUnsubscribeNotification(request_id, kNSWorkspaceNotificationCenter);
}
void SystemPreferences::DoPostNotification(
const std::string& name,
const base::DictionaryValue& user_info,
NotificationCenterKind kind) {
NSNotificationCenter* center;
switch (kind) {
case kNSDistributedNotificationCenter:
center = [NSDistributedNotificationCenter defaultCenter];
break;
case kNSNotificationCenter:
center = [NSNotificationCenter defaultCenter];
break;
case kNSWorkspaceNotificationCenter:
center = [[NSWorkspace sharedWorkspace] notificationCenter];
break;
default:
break;
}
[center postNotificationName:base::SysUTF8ToNSString(name)
object:nil
userInfo:DictionaryValueToNSDictionary(user_info)];
}
int SystemPreferences::DoSubscribeNotification(
const std::string& name,
const NotificationCallback& callback,
NotificationCenterKind kind) {
int request_id = g_next_id++;
__block NotificationCallback copied_callback = callback;
NSNotificationCenter* center;
switch (kind) {
case kNSDistributedNotificationCenter:
center = [NSDistributedNotificationCenter defaultCenter];
break;
case kNSNotificationCenter:
center = [NSNotificationCenter defaultCenter];
break;
case kNSWorkspaceNotificationCenter:
center = [[NSWorkspace sharedWorkspace] notificationCenter];
break;
default:
break;
}
g_id_map[request_id] = [center
addObserverForName:base::SysUTF8ToNSString(name)
object:nil
queue:nil
usingBlock:^(NSNotification* notification) {
std::unique_ptr<base::DictionaryValue> user_info =
NSDictionaryToDictionaryValue(notification.userInfo);
if (user_info) {
copied_callback.Run(
base::SysNSStringToUTF8(notification.name), *user_info);
} else {
copied_callback.Run(
base::SysNSStringToUTF8(notification.name),
base::DictionaryValue());
}
}];
return request_id;
}
void SystemPreferences::DoUnsubscribeNotification(int request_id,
NotificationCenterKind kind) {
auto iter = g_id_map.find(request_id);
if (iter != g_id_map.end()) {
id observer = iter->second;
NSNotificationCenter* center;
switch (kind) {
case kNSDistributedNotificationCenter:
center = [NSDistributedNotificationCenter defaultCenter];
break;
case kNSNotificationCenter:
center = [NSNotificationCenter defaultCenter];
break;
case kNSWorkspaceNotificationCenter:
center = [[NSWorkspace sharedWorkspace] notificationCenter];
break;
default:
break;
}
[center removeObserver:observer];
g_id_map.erase(iter);
}
}
v8::Local<v8::Value> SystemPreferences::GetUserDefault(
const std::string& name,
const std::string& type) {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSString* key = base::SysUTF8ToNSString(name);
if (type == "string") {
return mate::StringToV8(
isolate(), base::SysNSStringToUTF8([defaults stringForKey:key]));
} else if (type == "boolean") {
return v8::Boolean::New(isolate(), [defaults boolForKey:key]);
} else if (type == "float") {
return v8::Number::New(isolate(), [defaults floatForKey:key]);
} else if (type == "integer") {
return v8::Integer::New(isolate(), [defaults integerForKey:key]);
} else if (type == "double") {
return v8::Number::New(isolate(), [defaults doubleForKey:key]);
} else if (type == "url") {
return mate::ConvertToV8(isolate(),
net::GURLWithNSURL([defaults URLForKey:key]));
} else if (type == "array") {
std::unique_ptr<base::ListValue> list =
NSArrayToListValue([defaults arrayForKey:key]);
if (list == nullptr)
list.reset(new base::ListValue());
return mate::ConvertToV8(isolate(), *list);
} else if (type == "dictionary") {
std::unique_ptr<base::DictionaryValue> dictionary =
NSDictionaryToDictionaryValue([defaults dictionaryForKey:key]);
if (dictionary == nullptr)
dictionary.reset(new base::DictionaryValue());
return mate::ConvertToV8(isolate(), *dictionary);
} else {
return v8::Undefined(isolate());
}
}
void SystemPreferences::RegisterDefaults(mate::Arguments* args) {
base::DictionaryValue value;
if (!args->GetNext(&value)) {
args->ThrowError("Invalid userDefault data provided");
} else {
@try {
NSDictionary* dict = DictionaryValueToNSDictionary(value);
for (id key in dict) {
id value = [dict objectForKey:key];
if ([value isKindOfClass:[NSNull class]] || value == nil) {
args->ThrowError("Invalid userDefault data provided");
return;
}
}
[[NSUserDefaults standardUserDefaults] registerDefaults:dict];
} @catch (NSException* exception) {
args->ThrowError("Invalid userDefault data provided");
}
}
}
void SystemPreferences::SetUserDefault(const std::string& name,
const std::string& type,
mate::Arguments* args) {
const auto throwConversionError = [&] {
args->ThrowError("Unable to convert value to: " + type);
};
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSString* key = base::SysUTF8ToNSString(name);
if (type == "string") {
std::string value;
if (!args->GetNext(&value)) {
throwConversionError();
return;
}
[defaults setObject:base::SysUTF8ToNSString(value) forKey:key];
} else if (type == "boolean") {
bool value;
if (!args->GetNext(&value)) {
throwConversionError();
return;
}
[defaults setBool:value forKey:key];
} else if (type == "float") {
float value;
if (!args->GetNext(&value)) {
throwConversionError();
return;
}
[defaults setFloat:value forKey:key];
} else if (type == "integer") {
int value;
if (!args->GetNext(&value)) {
throwConversionError();
return;
}
[defaults setInteger:value forKey:key];
} else if (type == "double") {
double value;
if (!args->GetNext(&value)) {
throwConversionError();
return;
}
[defaults setDouble:value forKey:key];
} else if (type == "url") {
GURL value;
if (!args->GetNext(&value)) {
throwConversionError();
return;
}
if (NSURL* url = net::NSURLWithGURL(value)) {
[defaults setURL:url forKey:key];
}
} else if (type == "array") {
base::ListValue value;
if (!args->GetNext(&value)) {
throwConversionError();
return;
}
if (NSArray* array = ListValueToNSArray(value)) {
[defaults setObject:array forKey:key];
}
} else if (type == "dictionary") {
base::DictionaryValue value;
if (!args->GetNext(&value)) {
throwConversionError();
return;
}
if (NSDictionary* dict = DictionaryValueToNSDictionary(value)) {
[defaults setObject:dict forKey:key];
}
} else {
args->ThrowError("Invalid type: " + type);
return;
}
}
void SystemPreferences::RemoveUserDefault(const std::string& name) {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:base::SysUTF8ToNSString(name)];
}
bool SystemPreferences::IsDarkMode() {
NSString* mode = [[NSUserDefaults standardUserDefaults]
stringForKey:@"AppleInterfaceStyle"];
return [mode isEqualToString:@"Dark"];
}
bool SystemPreferences::IsSwipeTrackingFromScrollEventsEnabled() {
return [NSEvent isSwipeTrackingFromScrollEventsEnabled];
}
v8::Local<v8::Value> SystemPreferences::GetEffectiveAppearance(
v8::Isolate* isolate) {
if (@available(macOS 10.14, *)) {
return mate::ConvertToV8(
isolate, [NSApplication sharedApplication].effectiveAppearance);
}
return v8::Null(isolate);
}
v8::Local<v8::Value> SystemPreferences::GetAppLevelAppearance(
v8::Isolate* isolate) {
if (@available(macOS 10.14, *)) {
return mate::ConvertToV8(isolate,
[NSApplication sharedApplication].appearance);
}
return v8::Null(isolate);
}
void SystemPreferences::SetAppLevelAppearance(mate::Arguments* args) {
if (@available(macOS 10.14, *)) {
NSAppearance* appearance;
if (args->GetNext(&appearance)) {
[[NSApplication sharedApplication] setAppearance:appearance];
} else {
args->ThrowError("Invalid app appearance provided as first argument");
}
}
}
} // namespace api
} // namespace atom

View File

@@ -1,496 +0,0 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_url_request.h"
#include <string>
#include "atom/browser/api/atom_api_session.h"
#include "atom/browser/net/atom_url_request.h"
#include "atom/common/api/event_emitter_caller.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "atom/common/node_includes.h"
#include "native_mate/dictionary.h"
namespace mate {
template <>
struct Converter<scoped_refptr<const net::IOBufferWithSize>> {
static v8::Local<v8::Value> ToV8(
v8::Isolate* isolate,
scoped_refptr<const net::IOBufferWithSize> buffer) {
return node::Buffer::Copy(isolate, buffer->data(), buffer->size())
.ToLocalChecked();
}
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
scoped_refptr<const net::IOBufferWithSize>* out) {
auto size = node::Buffer::Length(val);
if (size == 0) {
// Support conversion from empty buffer. A use case is
// a GET request without body.
// Since zero-sized IOBuffer(s) are not supported, we set the
// out pointer to null.
*out = nullptr;
return true;
}
auto* data = node::Buffer::Data(val);
if (!data) {
// This is an error as size is positive but data is null.
return false;
}
*out = new net::IOBufferWithSize(size);
// We do a deep copy. We could have used Buffer's internal memory
// but that is much more complicated to be properly handled.
memcpy((*out)->data(), data, size);
return true;
}
};
} // namespace mate
namespace atom {
namespace api {
template <typename Flags>
URLRequest::StateBase<Flags>::StateBase(Flags initialState)
: state_(initialState) {}
template <typename Flags>
void URLRequest::StateBase<Flags>::SetFlag(Flags flag) {
state_ =
static_cast<Flags>(static_cast<int>(state_) | static_cast<int>(flag));
}
template <typename Flags>
bool URLRequest::StateBase<Flags>::operator==(Flags flag) const {
return state_ == flag;
}
template <typename Flags>
bool URLRequest::StateBase<Flags>::IsFlagSet(Flags flag) const {
return static_cast<int>(state_) & static_cast<int>(flag);
}
URLRequest::RequestState::RequestState()
: StateBase(RequestStateFlags::kNotStarted) {}
bool URLRequest::RequestState::NotStarted() const {
return *this == RequestStateFlags::kNotStarted;
}
bool URLRequest::RequestState::Started() const {
return IsFlagSet(RequestStateFlags::kStarted);
}
bool URLRequest::RequestState::Finished() const {
return IsFlagSet(RequestStateFlags::kFinished);
}
bool URLRequest::RequestState::Canceled() const {
return IsFlagSet(RequestStateFlags::kCanceled);
}
bool URLRequest::RequestState::Failed() const {
return IsFlagSet(RequestStateFlags::kFailed);
}
bool URLRequest::RequestState::Closed() const {
return IsFlagSet(RequestStateFlags::kClosed);
}
URLRequest::ResponseState::ResponseState()
: StateBase(ResponseStateFlags::kNotStarted) {}
bool URLRequest::ResponseState::NotStarted() const {
return *this == ResponseStateFlags::kNotStarted;
}
bool URLRequest::ResponseState::Started() const {
return IsFlagSet(ResponseStateFlags::kStarted);
}
bool URLRequest::ResponseState::Ended() const {
return IsFlagSet(ResponseStateFlags::kEnded);
}
bool URLRequest::ResponseState::Failed() const {
return IsFlagSet(ResponseStateFlags::kFailed);
}
mate::Dictionary URLRequest::GetUploadProgress(v8::Isolate* isolate) {
mate::Dictionary progress = mate::Dictionary::CreateEmpty(isolate);
if (atom_request_) {
progress.Set("active", true);
atom_request_->GetUploadProgress(&progress);
} else {
progress.Set("active", false);
}
return progress;
}
URLRequest::URLRequest(v8::Isolate* isolate, v8::Local<v8::Object> wrapper) {
InitWith(isolate, wrapper);
}
URLRequest::~URLRequest() {
// A request has been created in JS, it was not used and then
// it got collected, no close event to cleanup, only destructor
// is called.
if (atom_request_) {
atom_request_->Terminate();
}
}
// static
mate::WrappableBase* URLRequest::New(mate::Arguments* args) {
auto* isolate = args->isolate();
v8::Local<v8::Object> options;
args->GetNext(&options);
mate::Dictionary dict(isolate, options);
std::string method;
dict.Get("method", &method);
std::string url;
dict.Get("url", &url);
std::string redirect_policy;
dict.Get("redirect", &redirect_policy);
std::string partition;
mate::Handle<api::Session> session;
if (dict.Get("session", &session)) {
} else if (dict.Get("partition", &partition)) {
session = Session::FromPartition(isolate, partition);
} else {
// Use the default session if not specified.
session = Session::FromPartition(isolate, "");
}
auto* browser_context = session->browser_context();
auto* api_url_request = new URLRequest(args->isolate(), args->GetThis());
auto atom_url_request = AtomURLRequest::Create(
browser_context, method, url, redirect_policy, api_url_request);
api_url_request->atom_request_ = atom_url_request;
return api_url_request;
}
// static
void URLRequest::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "URLRequest"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
// Request API
.MakeDestroyable()
.SetMethod("write", &URLRequest::Write)
.SetMethod("cancel", &URLRequest::Cancel)
.SetMethod("setExtraHeader", &URLRequest::SetExtraHeader)
.SetMethod("removeExtraHeader", &URLRequest::RemoveExtraHeader)
.SetMethod("setChunkedUpload", &URLRequest::SetChunkedUpload)
.SetMethod("followRedirect", &URLRequest::FollowRedirect)
.SetMethod("_setLoadFlags", &URLRequest::SetLoadFlags)
.SetMethod("getUploadProgress", &URLRequest::GetUploadProgress)
.SetProperty("notStarted", &URLRequest::NotStarted)
.SetProperty("finished", &URLRequest::Finished)
// Response APi
.SetProperty("statusCode", &URLRequest::StatusCode)
.SetProperty("statusMessage", &URLRequest::StatusMessage)
.SetProperty("rawResponseHeaders", &URLRequest::RawResponseHeaders)
.SetProperty("httpVersionMajor", &URLRequest::ResponseHttpVersionMajor)
.SetProperty("httpVersionMinor", &URLRequest::ResponseHttpVersionMinor);
}
bool URLRequest::NotStarted() const {
return request_state_.NotStarted();
}
bool URLRequest::Finished() const {
return request_state_.Finished();
}
bool URLRequest::Canceled() const {
return request_state_.Canceled();
}
bool URLRequest::Write(scoped_refptr<const net::IOBufferWithSize> buffer,
bool is_last) {
if (request_state_.Canceled() || request_state_.Failed() ||
request_state_.Finished() || request_state_.Closed()) {
return false;
}
if (request_state_.NotStarted()) {
request_state_.SetFlag(RequestStateFlags::kStarted);
// Pin on first write.
Pin();
}
if (is_last) {
request_state_.SetFlag(RequestStateFlags::kFinished);
EmitRequestEvent(true, "finish");
}
DCHECK(atom_request_);
if (atom_request_) {
return atom_request_->Write(buffer, is_last);
}
return false;
}
void URLRequest::Cancel() {
if (request_state_.Canceled() || request_state_.Closed()) {
// Cancel only once.
return;
}
// Mark as canceled.
request_state_.SetFlag(RequestStateFlags::kCanceled);
DCHECK(atom_request_);
if (atom_request_ && request_state_.Started()) {
// Really cancel if it was started.
atom_request_->Cancel();
}
EmitRequestEvent(true, "abort");
if (response_state_.Started() && !response_state_.Ended()) {
EmitResponseEvent(true, "aborted");
}
Close();
}
void URLRequest::FollowRedirect() {
if (request_state_.Canceled() || request_state_.Closed()) {
return;
}
DCHECK(atom_request_);
if (atom_request_) {
atom_request_->FollowRedirect();
}
}
bool URLRequest::SetExtraHeader(const std::string& name,
const std::string& value) {
// Request state must be in the initial non started state.
if (!request_state_.NotStarted()) {
// Cannot change headers after send.
return false;
}
if (!net::HttpUtil::IsValidHeaderName(name)) {
return false;
}
if (!net::HttpUtil::IsValidHeaderValue(value)) {
return false;
}
DCHECK(atom_request_);
if (atom_request_) {
atom_request_->SetExtraHeader(name, value);
}
return true;
}
void URLRequest::RemoveExtraHeader(const std::string& name) {
// State must be equal to not started.
if (!request_state_.NotStarted()) {
// Cannot change headers after send.
return;
}
DCHECK(atom_request_);
if (atom_request_) {
atom_request_->RemoveExtraHeader(name);
}
}
void URLRequest::SetChunkedUpload(bool is_chunked_upload) {
// State must be equal to not started.
if (!request_state_.NotStarted()) {
// Cannot change headers after send.
return;
}
DCHECK(atom_request_);
if (atom_request_) {
atom_request_->SetChunkedUpload(is_chunked_upload);
}
}
void URLRequest::SetLoadFlags(int flags) {
// State must be equal to not started.
if (!request_state_.NotStarted()) {
// Cannot change load flags after start.
return;
}
DCHECK(atom_request_);
if (atom_request_) {
atom_request_->SetLoadFlags(flags);
}
}
void URLRequest::OnReceivedRedirect(
int status_code,
const std::string& method,
const GURL& url,
scoped_refptr<net::HttpResponseHeaders> response_headers) {
if (request_state_.Canceled() || request_state_.Closed()) {
return;
}
DCHECK(atom_request_);
if (!atom_request_) {
return;
}
EmitRequestEvent(false, "redirect", status_code, method, url,
response_headers.get());
}
void URLRequest::OnAuthenticationRequired(
scoped_refptr<const net::AuthChallengeInfo> auth_info) {
if (request_state_.Canceled() || request_state_.Closed()) {
return;
}
DCHECK(atom_request_);
if (!atom_request_) {
return;
}
Emit("login", auth_info.get(),
base::Bind(&AtomURLRequest::PassLoginInformation, atom_request_));
}
void URLRequest::OnResponseStarted(
scoped_refptr<net::HttpResponseHeaders> response_headers) {
if (request_state_.Canceled() || request_state_.Failed() ||
request_state_.Closed()) {
// Don't emit any event after request cancel.
return;
}
response_headers_ = response_headers;
response_state_.SetFlag(ResponseStateFlags::kStarted);
Emit("response");
}
void URLRequest::OnResponseData(
scoped_refptr<const net::IOBufferWithSize> buffer) {
if (request_state_.Canceled() || request_state_.Closed() ||
request_state_.Failed() || response_state_.Failed()) {
// In case we received an unexpected event from Chromium net,
// don't emit any data event after request cancel/error/close.
return;
}
if (!buffer || !buffer->data() || !buffer->size()) {
return;
}
Emit("data", buffer);
}
void URLRequest::OnResponseCompleted() {
if (request_state_.Canceled() || request_state_.Closed() ||
request_state_.Failed() || response_state_.Failed()) {
// In case we received an unexpected event from Chromium net,
// don't emit any data event after request cancel/error/close.
return;
}
response_state_.SetFlag(ResponseStateFlags::kEnded);
Emit("end");
Close();
}
void URLRequest::OnError(const std::string& error, bool isRequestError) {
auto error_object = v8::Exception::Error(mate::StringToV8(isolate(), error));
if (isRequestError) {
request_state_.SetFlag(RequestStateFlags::kFailed);
EmitRequestEvent(false, "error", error_object);
} else {
response_state_.SetFlag(ResponseStateFlags::kFailed);
EmitResponseEvent(false, "error", error_object);
}
Close();
}
int URLRequest::StatusCode() const {
if (response_headers_) {
return response_headers_->response_code();
}
return -1;
}
std::string URLRequest::StatusMessage() const {
std::string result;
if (response_headers_) {
result = response_headers_->GetStatusText();
}
return result;
}
net::HttpResponseHeaders* URLRequest::RawResponseHeaders() const {
return response_headers_.get();
}
uint32_t URLRequest::ResponseHttpVersionMajor() const {
if (response_headers_) {
return response_headers_->GetHttpVersion().major_value();
}
return 0;
}
uint32_t URLRequest::ResponseHttpVersionMinor() const {
if (response_headers_) {
return response_headers_->GetHttpVersion().minor_value();
}
return 0;
}
void URLRequest::Close() {
if (!request_state_.Closed()) {
request_state_.SetFlag(RequestStateFlags::kClosed);
if (response_state_.Started()) {
// Emit a close event if we really have a response object.
EmitResponseEvent(true, "close");
}
EmitRequestEvent(true, "close");
}
Unpin();
if (atom_request_) {
// A request has been created in JS, used and then it ended.
// We release unneeded net resources.
atom_request_->Terminate();
}
atom_request_ = nullptr;
}
void URLRequest::Pin() {
if (wrapper_.IsEmpty()) {
wrapper_.Reset(isolate(), GetWrapper());
}
}
void URLRequest::Unpin() {
wrapper_.Reset();
}
template <typename... Args>
void URLRequest::EmitRequestEvent(Args... args) {
v8::HandleScope handle_scope(isolate());
mate::CustomEmit(isolate(), GetWrapper(), "_emitRequestEvent", args...);
}
template <typename... Args>
void URLRequest::EmitResponseEvent(Args... args) {
v8::HandleScope handle_scope(isolate());
mate::CustomEmit(isolate(), GetWrapper(), "_emitResponseEvent", args...);
}
} // namespace api
} // namespace atom

View File

@@ -1,215 +0,0 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_URL_REQUEST_H_
#define ATOM_BROWSER_API_ATOM_API_URL_REQUEST_H_
#include <array>
#include <string>
#include "atom/browser/api/event_emitter.h"
#include "atom/browser/api/trackable_object.h"
#include "base/memory/weak_ptr.h"
#include "native_mate/dictionary.h"
#include "native_mate/handle.h"
#include "native_mate/wrappable_base.h"
#include "net/base/auth.h"
#include "net/base/io_buffer.h"
#include "net/http/http_response_headers.h"
#include "net/url_request/url_request_context.h"
namespace atom {
class AtomURLRequest;
namespace api {
//
// The URLRequest class implements the V8 binding between the JavaScript API
// and Chromium native net library. It is responsible for handling HTTP/HTTPS
// requests.
//
// The current class provides only the binding layer. Two other JavaScript
// classes (ClientRequest and IncomingMessage) in the net module provide the
// final API, including some state management and arguments validation.
//
// URLRequest's methods fall into two main categories: command and event
// methods. They are always executed on the Browser's UI thread.
// Command methods are called directly from JavaScript code via the API defined
// in BuildPrototype. A command method is generally implemented by forwarding
// the call to a corresponding method on AtomURLRequest which does the
// synchronization on the Browser IO thread. The latter then calls into Chromium
// net library. On the other hand, net library events originate on the IO
// thread in AtomURLRequest and are synchronized back on the UI thread, then
// forwarded to a corresponding event method in URLRequest and then to
// JavaScript via the EmitRequestEvent/EmitResponseEvent helpers.
//
// URLRequest lifetime management: we followed the Wrapper/Wrappable pattern
// defined in native_mate. However, we augment that pattern with a pin/unpin
// mechanism. The main reason is that we want the JS API to provide a similar
// lifetime guarantees as the XMLHttpRequest.
// https://xhr.spec.whatwg.org/#garbage-collection
//
// The primary motivation is to not garbage collect a URLInstance as long as the
// object is emitting network events. For instance, in the following JS code
//
// (function() {
// let request = new URLRequest(...);
// request.on('response', (response)=>{
// response.on('data', (data) = > {
// console.log(data.toString());
// });
// });
// })();
//
// we still want data to be logged even if the response/request objects are n
// more referenced in JavaScript.
//
// Binding by simply following the native_mate Wrapper/Wrappable pattern will
// delete the URLRequest object when the corresponding JS object is collected.
// The v8 handle is a private member in WrappableBase and it is always weak,
// there is no way to make it strong without changing native_mate.
// The solution we implement consists of maintaining some kind of state that
// prevents collection of JS wrappers as long as the request is emitting network
// events. At initialization, the object is unpinned. When the request starts,
// it is pinned. When no more events would be emitted, the object is unpinned
// and lifetime is again managed by the standard native mate Wrapper/Wrappable
// pattern.
//
// pin/unpin: are implemented by constructing/reseting a V8 strong persistent
// handle.
//
// The URLRequest/AtmURLRequest interaction could have been implemented in a
// single class. However, it implies that the resulting class lifetime will be
// managed by two conflicting mechanisms: JavaScript garbage collection and
// Chromium reference counting. Reasoning about lifetime issues become much
// more complex.
//
// We chose to split the implementation into two classes linked via a
// reference counted/raw pointers. A URLRequest instance is deleted if it is
// unpinned and the corresponding JS wrapper object is garbage collected. On the
// other hand, an AtmURLRequest instance lifetime is totally governed by
// reference counting.
//
class URLRequest : public mate::EventEmitter<URLRequest> {
public:
static mate::WrappableBase* New(mate::Arguments* args);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
// Methods for reporting events into JavaScript.
void OnReceivedRedirect(
int status_code,
const std::string& method,
const GURL& url,
scoped_refptr<net::HttpResponseHeaders> response_headers);
void OnAuthenticationRequired(
scoped_refptr<const net::AuthChallengeInfo> auth_info);
void OnResponseStarted(
scoped_refptr<net::HttpResponseHeaders> response_headers);
void OnResponseData(scoped_refptr<const net::IOBufferWithSize> data);
void OnResponseCompleted();
void OnError(const std::string& error, bool isRequestError);
mate::Dictionary GetUploadProgress(v8::Isolate* isolate);
protected:
explicit URLRequest(v8::Isolate* isolate, v8::Local<v8::Object> wrapper);
~URLRequest() override;
private:
template <typename Flags>
class StateBase {
public:
void SetFlag(Flags flag);
protected:
explicit StateBase(Flags initialState);
bool operator==(Flags flag) const;
bool IsFlagSet(Flags flag) const;
private:
Flags state_;
};
enum class RequestStateFlags {
kNotStarted = 0x0,
kStarted = 0x1,
kFinished = 0x2,
kCanceled = 0x4,
kFailed = 0x8,
kClosed = 0x10
};
class RequestState : public StateBase<RequestStateFlags> {
public:
RequestState();
bool NotStarted() const;
bool Started() const;
bool Finished() const;
bool Canceled() const;
bool Failed() const;
bool Closed() const;
};
enum class ResponseStateFlags {
kNotStarted = 0x0,
kStarted = 0x1,
kEnded = 0x2,
kFailed = 0x4
};
class ResponseState : public StateBase<ResponseStateFlags> {
public:
ResponseState();
bool NotStarted() const;
bool Started() const;
bool Ended() const;
bool Canceled() const;
bool Failed() const;
bool Closed() const;
};
bool NotStarted() const;
bool Finished() const;
bool Canceled() const;
bool Failed() const;
bool Write(scoped_refptr<const net::IOBufferWithSize> buffer, bool is_last);
void Cancel();
void FollowRedirect();
bool SetExtraHeader(const std::string& name, const std::string& value);
void RemoveExtraHeader(const std::string& name);
void SetChunkedUpload(bool is_chunked_upload);
void SetLoadFlags(int flags);
int StatusCode() const;
std::string StatusMessage() const;
net::HttpResponseHeaders* RawResponseHeaders() const;
uint32_t ResponseHttpVersionMajor() const;
uint32_t ResponseHttpVersionMinor() const;
void Close();
void Pin();
void Unpin();
template <typename... Args>
void EmitRequestEvent(Args... args);
template <typename... Args>
void EmitResponseEvent(Args... args);
scoped_refptr<AtomURLRequest> atom_request_;
RequestState request_state_;
ResponseState response_state_;
// Used to implement pin/unpin.
v8::Global<v8::Object> wrapper_;
scoped_refptr<net::HttpResponseHeaders> response_headers_;
DISALLOW_COPY_AND_ASSIGN(URLRequest);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_URL_REQUEST_H_

View File

@@ -1,33 +0,0 @@
// Copyright (c) 2018 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/osr/osr_render_widget_host_view.h"
#include "atom/browser/osr/osr_web_contents_view.h"
#include "content/browser/web_contents/web_contents_impl.h"
// Including both web_contents_impl.h and node.h would introduce a error, we
// have to isolate the usage of WebContentsImpl into a clean file to fix it:
// error C2371: 'ssize_t': redefinition; different basic types
namespace atom {
namespace api {
OffScreenWebContentsView* WebContents::GetOffScreenWebContentsView() const {
const auto* impl =
static_cast<const content::WebContentsImpl*>(web_contents());
return static_cast<OffScreenWebContentsView*>(impl->GetView());
}
OffScreenRenderWidgetHostView* WebContents::GetOffScreenRenderWidgetHostView()
const {
return static_cast<OffScreenRenderWidgetHostView*>(
web_contents()->GetRenderWidgetHostView());
}
} // namespace api
} // namespace atom

View File

@@ -1,145 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/atom_api_web_request.h"
#include <string>
#include <utility>
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/net/atom_network_delegate.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "content/public/browser/browser_thread.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
using content::BrowserThread;
namespace mate {
template <>
struct Converter<URLPattern> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
URLPattern* out) {
std::string pattern;
if (!ConvertFromV8(isolate, val, &pattern))
return false;
*out = URLPattern(URLPattern::SCHEME_ALL);
return out->Parse(pattern) == URLPattern::PARSE_SUCCESS;
}
};
} // namespace mate
namespace atom {
namespace api {
namespace {
template <typename Method, typename Event, typename Listener>
void CallNetworkDelegateMethod(
URLRequestContextGetter* url_request_context_getter,
Method method,
Event type,
URLPatterns patterns,
Listener listener) {
// Force creating network delegate.
url_request_context_getter->GetURLRequestContext();
// Then call the method.
auto* network_delegate = url_request_context_getter->network_delegate();
(network_delegate->*method)(type, std::move(patterns), std::move(listener));
}
} // namespace
WebRequest::WebRequest(v8::Isolate* isolate,
AtomBrowserContext* browser_context)
: browser_context_(browser_context) {
Init(isolate);
}
WebRequest::~WebRequest() {}
template <AtomNetworkDelegate::SimpleEvent type>
void WebRequest::SetSimpleListener(mate::Arguments* args) {
SetListener<AtomNetworkDelegate::SimpleListener>(
&AtomNetworkDelegate::SetSimpleListenerInIO, type, args);
}
template <AtomNetworkDelegate::ResponseEvent type>
void WebRequest::SetResponseListener(mate::Arguments* args) {
SetListener<AtomNetworkDelegate::ResponseListener>(
&AtomNetworkDelegate::SetResponseListenerInIO, type, args);
}
template <typename Listener, typename Method, typename Event>
void WebRequest::SetListener(Method method, Event type, mate::Arguments* args) {
// { urls }.
URLPatterns patterns;
mate::Dictionary dict;
args->GetNext(&dict) && dict.Get("urls", &patterns);
// Function or null.
v8::Local<v8::Value> value;
Listener listener;
if (!args->GetNext(&listener) &&
!(args->GetNext(&value) && value->IsNull())) {
args->ThrowError("Must pass null or a Function");
return;
}
auto* url_request_context_getter = static_cast<URLRequestContextGetter*>(
browser_context_->GetRequestContext());
if (!url_request_context_getter)
return;
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&CallNetworkDelegateMethod<Method, Event, Listener>,
base::RetainedRef(url_request_context_getter), method,
type, std::move(patterns), std::move(listener)));
}
// static
mate::Handle<WebRequest> WebRequest::Create(
v8::Isolate* isolate,
AtomBrowserContext* browser_context) {
return mate::CreateHandle(isolate, new WebRequest(isolate, browser_context));
}
// static
void WebRequest::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "WebRequest"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("onBeforeRequest", &WebRequest::SetResponseListener<
AtomNetworkDelegate::kOnBeforeRequest>)
.SetMethod("onBeforeSendHeaders",
&WebRequest::SetResponseListener<
AtomNetworkDelegate::kOnBeforeSendHeaders>)
.SetMethod("onHeadersReceived",
&WebRequest::SetResponseListener<
AtomNetworkDelegate::kOnHeadersReceived>)
.SetMethod(
"onSendHeaders",
&WebRequest::SetSimpleListener<AtomNetworkDelegate::kOnSendHeaders>)
.SetMethod("onBeforeRedirect",
&WebRequest::SetSimpleListener<
AtomNetworkDelegate::kOnBeforeRedirect>)
.SetMethod("onResponseStarted",
&WebRequest::SetSimpleListener<
AtomNetworkDelegate::kOnResponseStarted>)
.SetMethod(
"onCompleted",
&WebRequest::SetSimpleListener<AtomNetworkDelegate::kOnCompleted>)
.SetMethod("onErrorOccurred", &WebRequest::SetSimpleListener<
AtomNetworkDelegate::kOnErrorOccurred>);
}
} // namespace api
} // namespace atom

View File

@@ -1,49 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_WEB_REQUEST_H_
#define ATOM_BROWSER_API_ATOM_API_WEB_REQUEST_H_
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/net/atom_network_delegate.h"
#include "native_mate/arguments.h"
#include "native_mate/handle.h"
namespace atom {
class AtomBrowserContext;
namespace api {
class WebRequest : public mate::TrackableObject<WebRequest> {
public:
static mate::Handle<WebRequest> Create(v8::Isolate* isolate,
AtomBrowserContext* browser_context);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
protected:
WebRequest(v8::Isolate* isolate, AtomBrowserContext* browser_context);
~WebRequest() override;
// C++ can not distinguish overloaded member function.
template <AtomNetworkDelegate::SimpleEvent type>
void SetSimpleListener(mate::Arguments* args);
template <AtomNetworkDelegate::ResponseEvent type>
void SetResponseListener(mate::Arguments* args);
template <typename Listener, typename Method, typename Event>
void SetListener(Method method, Event type, mate::Arguments* args);
private:
scoped_refptr<AtomBrowserContext> browser_context_;
DISALLOW_COPY_AND_ASSIGN(WebRequest);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_WEB_REQUEST_H_

View File

@@ -1,81 +0,0 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/event.h"
#include "atom/common/api/api_messages.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "native_mate/object_template_builder.h"
namespace mate {
Event::Event(v8::Isolate* isolate) {
Init(isolate);
}
Event::~Event() {}
void Event::SetSenderAndMessage(content::RenderFrameHost* sender,
IPC::Message* message) {
DCHECK(!sender_);
DCHECK(!message_);
sender_ = sender;
message_ = message;
Observe(content::WebContents::FromRenderFrameHost(sender));
}
void Event::RenderFrameDeleted(content::RenderFrameHost* rfh) {
if (sender_ != rfh)
return;
sender_ = nullptr;
message_ = nullptr;
}
void Event::RenderFrameHostChanged(content::RenderFrameHost* old_rfh,
content::RenderFrameHost* new_rfh) {
if (sender_ && sender_ == old_rfh)
sender_ = new_rfh;
}
void Event::FrameDeleted(content::RenderFrameHost* rfh) {
if (sender_ != rfh)
return;
sender_ = nullptr;
message_ = nullptr;
}
void Event::PreventDefault(v8::Isolate* isolate) {
GetWrapper()->Set(StringToV8(isolate, "defaultPrevented"), v8::True(isolate));
}
bool Event::SendReply(const base::ListValue& result) {
if (message_ == nullptr || sender_ == nullptr)
return false;
AtomFrameHostMsg_Message_Sync::WriteReplyParams(message_, result);
bool success = sender_->Send(message_);
message_ = nullptr;
sender_ = nullptr;
return success;
}
// static
Handle<Event> Event::Create(v8::Isolate* isolate) {
return mate::CreateHandle(isolate, new Event(isolate));
}
// static
void Event::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Event"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("preventDefault", &Event::PreventDefault)
.SetMethod("sendReply", &Event::SendReply);
}
} // namespace mate

View File

@@ -1,55 +0,0 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_EVENT_H_
#define ATOM_BROWSER_API_EVENT_H_
#include "content/public/browser/web_contents_observer.h"
#include "native_mate/handle.h"
#include "native_mate/wrappable.h"
namespace IPC {
class Message;
}
namespace mate {
class Event : public Wrappable<Event>, public content::WebContentsObserver {
public:
static Handle<Event> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
// Pass the sender and message to be replied.
void SetSenderAndMessage(content::RenderFrameHost* sender,
IPC::Message* message);
// event.PreventDefault().
void PreventDefault(v8::Isolate* isolate);
// event.sendReply(array), used for replying synchronous message.
bool SendReply(const base::ListValue& result);
protected:
explicit Event(v8::Isolate* isolate);
~Event() override;
// content::WebContentsObserver implementations:
void RenderFrameDeleted(content::RenderFrameHost* rfh) override;
void RenderFrameHostChanged(content::RenderFrameHost* old_rfh,
content::RenderFrameHost* new_rfh) override;
void FrameDeleted(content::RenderFrameHost* rfh) override;
private:
// Replyer for the synchronous messages.
content::RenderFrameHost* sender_ = nullptr;
IPC::Message* message_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(Event);
};
} // namespace mate
#endif // ATOM_BROWSER_API_EVENT_H_

View File

@@ -1,112 +0,0 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_EVENT_EMITTER_H_
#define ATOM_BROWSER_API_EVENT_EMITTER_H_
#include <vector>
#include "atom/common/api/event_emitter_caller.h"
#include "native_mate/wrappable.h"
namespace content {
class RenderFrameHost;
}
namespace IPC {
class Message;
}
namespace mate {
namespace internal {
v8::Local<v8::Object> CreateJSEvent(v8::Isolate* isolate,
v8::Local<v8::Object> object,
content::RenderFrameHost* sender,
IPC::Message* message);
v8::Local<v8::Object> CreateCustomEvent(v8::Isolate* isolate,
v8::Local<v8::Object> object,
v8::Local<v8::Object> event);
v8::Local<v8::Object> CreateEventFromFlags(v8::Isolate* isolate, int flags);
} // namespace internal
// Provide helperers to emit event in JavaScript.
template <typename T>
class EventEmitter : public Wrappable<T> {
public:
typedef std::vector<v8::Local<v8::Value>> ValueArray;
// Make the convinient methods visible:
// https://isocpp.org/wiki/faq/templates#nondependent-name-lookup-members
v8::Isolate* isolate() const { return Wrappable<T>::isolate(); }
v8::Local<v8::Object> GetWrapper() const {
return Wrappable<T>::GetWrapper();
}
// this.emit(name, event, args...);
template <typename... Args>
bool EmitCustomEvent(const base::StringPiece& name,
v8::Local<v8::Object> event,
const Args&... args) {
return EmitWithEvent(
name, internal::CreateCustomEvent(isolate(), GetWrapper(), event),
args...);
}
// this.emit(name, new Event(flags), args...);
template <typename... Args>
bool EmitWithFlags(const base::StringPiece& name,
int flags,
const Args&... args) {
return EmitCustomEvent(
name, internal::CreateEventFromFlags(isolate(), flags), args...);
}
// this.emit(name, new Event(), args...);
template <typename... Args>
bool Emit(const base::StringPiece& name, const Args&... args) {
return EmitWithSender(name, nullptr, nullptr, args...);
}
// this.emit(name, new Event(sender, message), args...);
template <typename... Args>
bool EmitWithSender(const base::StringPiece& name,
content::RenderFrameHost* sender,
IPC::Message* message,
const Args&... args) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
v8::Local<v8::Object> wrapper = GetWrapper();
if (wrapper.IsEmpty()) {
return false;
}
v8::Local<v8::Object> event =
internal::CreateJSEvent(isolate(), wrapper, sender, message);
return EmitWithEvent(name, event, args...);
}
protected:
EventEmitter() {}
private:
// this.emit(name, event, args...);
template <typename... Args>
bool EmitWithEvent(const base::StringPiece& name,
v8::Local<v8::Object> event,
const Args&... args) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
EmitEvent(isolate(), GetWrapper(), name, event, args...);
return event->Get(StringToV8(isolate(), "defaultPrevented"))
->BooleanValue();
}
DISALLOW_COPY_AND_ASSIGN(EventEmitter);
};
} // namespace mate
#endif // ATOM_BROWSER_API_EVENT_EMITTER_H_

View File

@@ -1,100 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/frame_subscriber.h"
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "components/viz/common/frame_sinks/copy_output_request.h"
#include "components/viz/service/frame_sinks/frame_sink_manager_impl.h"
#include "components/viz/service/surfaces/surface_manager.h"
#include "content/browser/compositor/surface_utils.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "ui/gfx/geometry/rect_conversions.h"
#include "ui/gfx/skbitmap_operations.h"
#include "atom/common/node_includes.h"
namespace atom {
namespace api {
FrameSubscriber::FrameSubscriber(v8::Isolate* isolate,
content::WebContents* web_contents,
const FrameCaptureCallback& callback,
bool only_dirty)
: content::WebContentsObserver(web_contents),
isolate_(isolate),
callback_(callback),
only_dirty_(only_dirty),
weak_ptr_factory_(this) {}
FrameSubscriber::~FrameSubscriber() = default;
gfx::Rect FrameSubscriber::GetDamageRect() {
auto* view = web_contents()->GetRenderWidgetHostView();
if (view == nullptr)
return gfx::Rect();
auto* view_base = static_cast<content::RenderWidgetHostViewBase*>(view);
viz::SurfaceManager* surface_manager =
content::GetFrameSinkManager()->surface_manager();
viz::Surface* surface =
surface_manager->GetSurfaceForId(view_base->GetCurrentSurfaceId());
if (surface == nullptr)
return gfx::Rect();
if (surface->HasActiveFrame()) {
const viz::CompositorFrame& frame = surface->GetActiveFrame();
viz::RenderPass* root_pass = frame.render_pass_list.back().get();
gfx::Size frame_size = root_pass->output_rect.size();
gfx::Rect damage_rect =
gfx::ToEnclosingRect(gfx::RectF(root_pass->damage_rect));
damage_rect.Intersect(gfx::Rect(frame_size));
return gfx::ScaleToEnclosedRect(damage_rect,
1.0f / frame.device_scale_factor());
} else {
return gfx::Rect();
}
}
void FrameSubscriber::DidReceiveCompositorFrame() {
auto* view = web_contents()->GetRenderWidgetHostView();
if (view == nullptr)
return;
view->CopyFromSurface(
gfx::Rect(), view->GetViewBounds().size(),
base::BindOnce(&FrameSubscriber::Done, weak_ptr_factory_.GetWeakPtr(),
GetDamageRect()));
}
void FrameSubscriber::Done(const gfx::Rect& damage, const SkBitmap& frame) {
if (frame.drawsNothing())
return;
v8::Locker locker(isolate_);
v8::HandleScope handle_scope(isolate_);
const_cast<SkBitmap&>(frame).setAlphaType(kPremul_SkAlphaType);
const SkBitmap& bitmap = only_dirty_ ? SkBitmapOperations::CreateTiledBitmap(
frame, damage.x(), damage.y(),
damage.width(), damage.height())
: frame;
size_t rgb_row_size = bitmap.width() * bitmap.bytesPerPixel();
auto* source = static_cast<const char*>(bitmap.getPixels());
v8::MaybeLocal<v8::Object> buffer =
node::Buffer::Copy(isolate_, source, rgb_row_size * bitmap.height());
auto local_buffer = buffer.ToLocalChecked();
v8::Local<v8::Value> damage_rect =
mate::Converter<gfx::Rect>::ToV8(isolate_, damage);
callback_.Run(local_buffer, damage_rect);
}
} // namespace api
} // namespace atom

View File

@@ -1,52 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_FRAME_SUBSCRIBER_H_
#define ATOM_BROWSER_API_FRAME_SUBSCRIBER_H_
#include "content/public/browser/web_contents.h"
#include "base/callback.h"
#include "base/memory/weak_ptr.h"
#include "components/viz/common/frame_sinks/copy_output_result.h"
#include "content/public/browser/web_contents_observer.h"
#include "ui/gfx/image/image.h"
#include "v8/include/v8.h"
namespace atom {
namespace api {
class WebContents;
class FrameSubscriber : public content::WebContentsObserver {
public:
using FrameCaptureCallback =
base::Callback<void(v8::Local<v8::Value>, v8::Local<v8::Value>)>;
FrameSubscriber(v8::Isolate* isolate,
content::WebContents* web_contents,
const FrameCaptureCallback& callback,
bool only_dirty);
~FrameSubscriber() override;
private:
gfx::Rect GetDamageRect();
void DidReceiveCompositorFrame() override;
void Done(const gfx::Rect& damage, const SkBitmap& frame);
v8::Isolate* isolate_;
FrameCaptureCallback callback_;
bool only_dirty_;
base::WeakPtrFactory<FrameSubscriber> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(FrameSubscriber);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_FRAME_SUBSCRIBER_H_

View File

@@ -1,115 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/api/stream_subscriber.h"
#include <string>
#include "atom/browser/net/url_request_stream_job.h"
#include "atom/common/api/event_emitter_caller.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/node_includes.h"
namespace mate {
StreamSubscriber::StreamSubscriber(
v8::Isolate* isolate,
v8::Local<v8::Object> emitter,
base::WeakPtr<atom::URLRequestStreamJob> url_job)
: isolate_(isolate),
emitter_(isolate, emitter),
url_job_(url_job),
weak_factory_(this) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
auto weak_self = weak_factory_.GetWeakPtr();
On("data", base::Bind(&StreamSubscriber::OnData, weak_self));
On("end", base::Bind(&StreamSubscriber::OnEnd, weak_self));
On("error", base::Bind(&StreamSubscriber::OnError, weak_self));
}
StreamSubscriber::~StreamSubscriber() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
RemoveAllListeners();
}
void StreamSubscriber::On(const std::string& event,
EventCallback&& callback) { // NOLINT
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK(js_handlers_.find(event) == js_handlers_.end());
v8::Locker locker(isolate_);
v8::Isolate::Scope isolate_scope(isolate_);
v8::HandleScope handle_scope(isolate_);
// emitter.on(event, EventEmitted)
auto fn = CallbackToV8(isolate_, callback);
js_handlers_[event] = v8::Global<v8::Value>(isolate_, fn);
internal::ValueVector args = {StringToV8(isolate_, event), fn};
internal::CallMethodWithArgs(isolate_, emitter_.Get(isolate_), "on", &args);
}
void StreamSubscriber::Off(const std::string& event) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK(js_handlers_.find(event) != js_handlers_.end());
v8::Locker locker(isolate_);
v8::Isolate::Scope isolate_scope(isolate_);
v8::HandleScope handle_scope(isolate_);
auto js_handler = js_handlers_.find(event);
DCHECK(js_handler != js_handlers_.end());
RemoveListener(js_handler);
}
void StreamSubscriber::OnData(mate::Arguments* args) {
v8::Local<v8::Value> buf;
args->GetNext(&buf);
if (!node::Buffer::HasInstance(buf)) {
args->ThrowError("data must be Buffer");
return;
}
const char* data = node::Buffer::Data(buf);
size_t length = node::Buffer::Length(buf);
if (length == 0)
return;
// Pass the data to the URLJob in IO thread.
std::vector<char> buffer(data, data + length);
content::BrowserThread::PostTask(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&atom::URLRequestStreamJob::OnData, url_job_,
base::Passed(&buffer)));
}
void StreamSubscriber::OnEnd(mate::Arguments* args) {
content::BrowserThread::PostTask(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&atom::URLRequestStreamJob::OnEnd, url_job_));
}
void StreamSubscriber::OnError(mate::Arguments* args) {
content::BrowserThread::PostTask(
content::BrowserThread::IO, FROM_HERE,
base::Bind(&atom::URLRequestStreamJob::OnError, url_job_,
net::ERR_FAILED));
}
void StreamSubscriber::RemoveAllListeners() {
v8::Locker locker(isolate_);
v8::Isolate::Scope isolate_scope(isolate_);
v8::HandleScope handle_scope(isolate_);
while (!js_handlers_.empty()) {
RemoveListener(js_handlers_.begin());
}
}
void StreamSubscriber::RemoveListener(JSHandlersMap::iterator it) {
internal::ValueVector args = {StringToV8(isolate_, it->first),
it->second.Get(isolate_)};
internal::CallMethodWithArgs(isolate_, emitter_.Get(isolate_),
"removeListener", &args);
js_handlers_.erase(it);
}
} // namespace mate

View File

@@ -1,58 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_STREAM_SUBSCRIBER_H_
#define ATOM_BROWSER_API_STREAM_SUBSCRIBER_H_
#include <map>
#include <memory>
#include <string>
#include <vector>
#include "base/callback.h"
#include "base/memory/weak_ptr.h"
#include "content/public/browser/browser_thread.h"
#include "v8/include/v8.h"
namespace atom {
class URLRequestStreamJob;
}
namespace mate {
class Arguments;
class StreamSubscriber {
public:
StreamSubscriber(v8::Isolate* isolate,
v8::Local<v8::Object> emitter,
base::WeakPtr<atom::URLRequestStreamJob> url_job);
~StreamSubscriber();
private:
using JSHandlersMap = std::map<std::string, v8::Global<v8::Value>>;
using EventCallback = base::Callback<void(mate::Arguments* args)>;
void On(const std::string& event, EventCallback&& callback); // NOLINT
void Off(const std::string& event);
void OnData(mate::Arguments* args);
void OnEnd(mate::Arguments* args);
void OnError(mate::Arguments* args);
void RemoveAllListeners();
void RemoveListener(JSHandlersMap::iterator it);
v8::Isolate* isolate_;
v8::Global<v8::Object> emitter_;
base::WeakPtr<atom::URLRequestStreamJob> url_job_;
JSHandlersMap js_handlers_;
base::WeakPtrFactory<StreamSubscriber> weak_factory_;
};
} // namespace mate
#endif // ATOM_BROWSER_API_STREAM_SUBSCRIBER_H_

View File

@@ -1,36 +0,0 @@
// Copyright (c) 2018 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_VIEWS_ATOM_API_LABEL_BUTTON_H_
#define ATOM_BROWSER_API_VIEWS_ATOM_API_LABEL_BUTTON_H_
#include <string>
#include "atom/browser/api/views/atom_api_button.h"
namespace atom {
namespace api {
class LabelButton : public Button {
public:
static mate::WrappableBase* New(mate::Arguments* args,
const std::string& text);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
protected:
explicit LabelButton(const std::string& text);
~LabelButton() override;
private:
DISALLOW_COPY_AND_ASSIGN(LabelButton);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_VIEWS_ATOM_API_LABEL_BUTTON_H_

View File

@@ -1,124 +0,0 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/atom_blob_reader.h"
#include <utility>
#include "content/browser/blob_storage/chrome_blob_storage_context.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
#include "storage/browser/blob/blob_data_handle.h"
#include "storage/browser/blob/blob_reader.h"
#include "storage/browser/blob/blob_storage_context.h"
#include "atom/common/node_includes.h"
using content::BrowserThread;
namespace atom {
namespace {
void FreeNodeBufferData(char* data, void* hint) {
delete[] data;
}
void RunCallbackInUI(const AtomBlobReader::CompletionCallback& callback,
char* blob_data,
int size) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
v8::Isolate* isolate = v8::Isolate::GetCurrent();
v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
if (blob_data) {
v8::Local<v8::Value> buffer =
node::Buffer::New(isolate, blob_data, static_cast<size_t>(size),
&FreeNodeBufferData, nullptr)
.ToLocalChecked();
callback.Run(buffer);
} else {
callback.Run(v8::Null(isolate));
}
}
} // namespace
AtomBlobReader::AtomBlobReader(content::ChromeBlobStorageContext* blob_context)
: blob_context_(blob_context) {}
AtomBlobReader::~AtomBlobReader() {}
void AtomBlobReader::StartReading(
const std::string& uuid,
const AtomBlobReader::CompletionCallback& completion_callback) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
auto blob_data_handle = blob_context_->context()->GetBlobDataFromUUID(uuid);
auto callback = base::Bind(&RunCallbackInUI, completion_callback);
if (!blob_data_handle) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::BindOnce(callback, nullptr, 0));
return;
}
auto blob_reader = blob_data_handle->CreateReader();
BlobReadHelper* blob_read_helper =
new BlobReadHelper(std::move(blob_reader), callback);
blob_read_helper->Read();
}
AtomBlobReader::BlobReadHelper::BlobReadHelper(
std::unique_ptr<storage::BlobReader> blob_reader,
const BlobReadHelper::CompletionCallback& callback)
: blob_reader_(std::move(blob_reader)), completion_callback_(callback) {}
AtomBlobReader::BlobReadHelper::~BlobReadHelper() {}
void AtomBlobReader::BlobReadHelper::Read() {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
storage::BlobReader::Status size_status = blob_reader_->CalculateSize(
base::Bind(&AtomBlobReader::BlobReadHelper::DidCalculateSize,
base::Unretained(this)));
if (size_status != storage::BlobReader::Status::IO_PENDING)
DidCalculateSize(net::OK);
}
void AtomBlobReader::BlobReadHelper::DidCalculateSize(int result) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (result != net::OK) {
DidReadBlobData(nullptr, 0);
return;
}
uint64_t total_size = blob_reader_->total_size();
int bytes_read = 0;
scoped_refptr<net::IOBuffer> blob_data =
new net::IOBuffer(static_cast<size_t>(total_size));
auto callback =
base::Bind(&AtomBlobReader::BlobReadHelper::DidReadBlobData,
base::Unretained(this), base::RetainedRef(blob_data));
storage::BlobReader::Status read_status =
blob_reader_->Read(blob_data.get(), total_size, &bytes_read, callback);
if (read_status != storage::BlobReader::Status::IO_PENDING)
callback.Run(bytes_read);
}
void AtomBlobReader::BlobReadHelper::DidReadBlobData(
const scoped_refptr<net::IOBuffer>& blob_data,
int size) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
char* data = new char[size];
memcpy(data, blob_data->data(), size);
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::BindOnce(completion_callback_, data, size));
delete this;
}
} // namespace atom

View File

@@ -1,77 +0,0 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_ATOM_BLOB_READER_H_
#define ATOM_BROWSER_ATOM_BLOB_READER_H_
#include <memory>
#include <string>
#include "base/callback.h"
namespace content {
class ChromeBlobStorageContext;
}
namespace net {
class IOBuffer;
}
namespace storage {
class BlobDataHandle;
class BlobReader;
} // namespace storage
namespace v8 {
template <class T>
class Local;
class Value;
} // namespace v8
namespace atom {
// A class to keep track of the blob context. All methods,
// except Ctor are expected to be called on IO thread.
class AtomBlobReader {
public:
using CompletionCallback = base::Callback<void(v8::Local<v8::Value>)>;
explicit AtomBlobReader(content::ChromeBlobStorageContext* blob_context);
~AtomBlobReader();
void StartReading(const std::string& uuid,
const AtomBlobReader::CompletionCallback& callback);
private:
// A self-destroyed helper class to read the blob data.
// Must be accessed on IO thread.
class BlobReadHelper {
public:
using CompletionCallback = base::Callback<void(char*, int)>;
BlobReadHelper(std::unique_ptr<storage::BlobReader> blob_reader,
const BlobReadHelper::CompletionCallback& callback);
~BlobReadHelper();
void Read();
private:
void DidCalculateSize(int result);
void DidReadBlobData(const scoped_refptr<net::IOBuffer>& blob_data,
int bytes_read);
std::unique_ptr<storage::BlobReader> blob_reader_;
BlobReadHelper::CompletionCallback completion_callback_;
DISALLOW_COPY_AND_ASSIGN(BlobReadHelper);
};
scoped_refptr<content::ChromeBlobStorageContext> blob_context_;
DISALLOW_COPY_AND_ASSIGN(AtomBlobReader);
};
} // namespace atom
#endif // ATOM_BROWSER_ATOM_BLOB_READER_H_

View File

@@ -1,659 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/atom_browser_client.h"
#if defined(OS_WIN)
#include <shlobj.h>
#endif
#include <memory>
#include <utility>
#include "atom/browser/api/atom_api_app.h"
#include "atom/browser/api/atom_api_protocol.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/atom_navigation_throttle.h"
#include "atom/browser/atom_quota_permission_context.h"
#include "atom/browser/atom_resource_dispatcher_host_delegate.h"
#include "atom/browser/atom_speech_recognition_manager_delegate.h"
#include "atom/browser/child_web_contents_tracker.h"
#include "atom/browser/io_thread.h"
#include "atom/browser/native_window.h"
#include "atom/browser/session_preferences.h"
#include "atom/browser/web_contents_permission_helper.h"
#include "atom/browser/web_contents_preferences.h"
#include "atom/browser/window_list.h"
#include "atom/common/google_api_key.h"
#include "atom/common/options_switches.h"
#include "atom/common/platform_util.h"
#include "base/command_line.h"
#include "base/environment.h"
#include "base/files/file_util.h"
#include "base/json/json_reader.h"
#include "base/no_destructor.h"
#include "base/stl_util.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/printing/printing_message_filter.h"
#include "chrome/browser/speech/tts_message_filter.h"
#include "components/net_log/chrome_net_log.h"
#include "content/public/browser/browser_ppapi_host.h"
#include "content/public/browser/client_certificate_delegate.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/resource_dispatcher_host.h"
#include "content/public/browser/site_instance.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_paths.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/service_names.mojom.h"
#include "content/public/common/url_constants.h"
#include "content/public/common/web_preferences.h"
#include "electron/buildflags/buildflags.h"
#include "electron/grit/electron_resources.h"
#include "net/base/escape.h"
#include "net/ssl/ssl_cert_request_info.h"
#include "ppapi/host/ppapi_host.h"
#include "services/device/public/cpp/geolocation/location_provider.h"
#include "services/network/public/cpp/resource_request_body.h"
#include "services/proxy_resolver/public/mojom/proxy_resolver.mojom.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
#include "v8/include/v8.h"
#if defined(USE_NSS_CERTS)
#include "net/ssl/client_cert_store_nss.h"
#elif defined(OS_WIN)
#include "net/ssl/client_cert_store_win.h"
#elif defined(OS_MACOSX)
#include "net/ssl/client_cert_store_mac.h"
#elif defined(USE_OPENSSL)
#include "net/ssl/client_cert_store.h"
#endif
#if BUILDFLAG(ENABLE_PEPPER_FLASH)
#include "chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h"
#endif // BUILDFLAG(ENABLE_PEPPER_FLASH)
#if BUILDFLAG(OVERRIDE_LOCATION_PROVIDER)
#include "atom/browser/fake_location_provider.h"
#endif // BUILDFLAG(OVERRIDE_LOCATION_PROVIDER)
using content::BrowserThread;
namespace atom {
namespace {
// Next navigation should not restart renderer process.
bool g_suppress_renderer_process_restart = false;
// Custom schemes to be registered to handle service worker.
base::NoDestructor<std::string> g_custom_service_worker_schemes;
bool IsSameWebSite(content::BrowserContext* browser_context,
const GURL& src_url,
const GURL& dest_url) {
return content::SiteInstance::IsSameWebSite(browser_context, src_url,
dest_url) ||
// `IsSameWebSite` doesn't seem to work for some URIs such as `file:`,
// handle these scenarios by comparing only the site as defined by
// `GetSiteForURL`.
content::SiteInstance::GetSiteForURL(browser_context, dest_url) ==
src_url;
}
} // namespace
// static
void AtomBrowserClient::SuppressRendererProcessRestartForOnce() {
g_suppress_renderer_process_restart = true;
}
void AtomBrowserClient::SetCustomServiceWorkerSchemes(
const std::vector<std::string>& schemes) {
*g_custom_service_worker_schemes = base::JoinString(schemes, ",");
}
AtomBrowserClient::AtomBrowserClient() {}
AtomBrowserClient::~AtomBrowserClient() {}
content::WebContents* AtomBrowserClient::GetWebContentsFromProcessID(
int process_id) {
// If the process is a pending process, we should use the web contents
// for the frame host passed into OverrideSiteInstanceForNavigation.
if (base::ContainsKey(pending_processes_, process_id))
return pending_processes_[process_id];
// Certain render process will be created with no associated render view,
// for example: ServiceWorker.
return WebContentsPreferences::GetWebContentsFromProcessID(process_id);
}
bool AtomBrowserClient::ShouldCreateNewSiteInstance(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
content::SiteInstance* current_instance,
const GURL& url) {
if (url.SchemeIs(url::kJavaScriptScheme))
// "javacript:" scheme should always use same SiteInstance
return false;
int process_id = current_instance->GetProcess()->GetID();
if (!IsRendererSandboxed(process_id)) {
if (!RendererUsesNativeWindowOpen(process_id)) {
// non-sandboxed renderers without native window.open should always create
// a new SiteInstance
return true;
}
auto* web_contents =
content::WebContents::FromRenderFrameHost(render_frame_host);
if (!ChildWebContentsTracker::IsChildWebContents(web_contents)) {
// Root WebContents should always create new process to make sure
// native addons are loaded correctly after reload / navigation.
// (Non-root WebContents opened by window.open() should try to
// reuse process to allow synchronous cross-window scripting.)
return true;
}
}
// Create new a SiteInstance if navigating to a different site.
auto src_url = current_instance->GetSiteURL();
return !IsSameWebSite(browser_context, src_url, url);
}
void AtomBrowserClient::AddProcessPreferences(
int process_id,
AtomBrowserClient::ProcessPreferences prefs) {
process_preferences_[process_id] = prefs;
}
void AtomBrowserClient::RemoveProcessPreferences(int process_id) {
process_preferences_.erase(process_id);
}
bool AtomBrowserClient::IsProcessObserved(int process_id) {
return process_preferences_.find(process_id) != process_preferences_.end();
}
bool AtomBrowserClient::IsRendererSandboxed(int process_id) {
auto it = process_preferences_.find(process_id);
return it != process_preferences_.end() && it->second.sandbox;
}
bool AtomBrowserClient::RendererUsesNativeWindowOpen(int process_id) {
auto it = process_preferences_.find(process_id);
return it != process_preferences_.end() && it->second.native_window_open;
}
bool AtomBrowserClient::RendererDisablesPopups(int process_id) {
auto it = process_preferences_.find(process_id);
return it != process_preferences_.end() && it->second.disable_popups;
}
void AtomBrowserClient::RenderProcessWillLaunch(
content::RenderProcessHost* host,
service_manager::mojom::ServiceRequest* service_request) {
// When a render process is crashed, it might be reused.
int process_id = host->GetID();
if (IsProcessObserved(process_id))
return;
host->AddFilter(new printing::PrintingMessageFilter(process_id));
host->AddFilter(new TtsMessageFilter(process_id, host->GetBrowserContext()));
ProcessPreferences prefs;
auto* web_preferences =
WebContentsPreferences::From(GetWebContentsFromProcessID(process_id));
if (web_preferences) {
prefs.sandbox = web_preferences->IsEnabled(options::kSandbox);
prefs.native_window_open =
web_preferences->IsEnabled(options::kNativeWindowOpen);
prefs.disable_popups = web_preferences->IsEnabled("disablePopups");
}
AddProcessPreferences(host->GetID(), prefs);
// ensure the ProcessPreferences is removed later
host->AddObserver(this);
}
content::SpeechRecognitionManagerDelegate*
AtomBrowserClient::CreateSpeechRecognitionManagerDelegate() {
return new AtomSpeechRecognitionManagerDelegate;
}
void AtomBrowserClient::OverrideWebkitPrefs(content::RenderViewHost* host,
content::WebPreferences* prefs) {
prefs->javascript_enabled = true;
prefs->web_security_enabled = true;
prefs->plugins_enabled = true;
prefs->dom_paste_enabled = true;
prefs->allow_scripts_to_close_windows = true;
prefs->javascript_can_access_clipboard = true;
prefs->local_storage_enabled = true;
prefs->databases_enabled = true;
prefs->application_cache_enabled = true;
prefs->allow_universal_access_from_file_urls = true;
prefs->allow_file_access_from_file_urls = true;
prefs->webgl1_enabled = true;
prefs->webgl2_enabled = true;
prefs->allow_running_insecure_content = false;
prefs->default_minimum_page_scale_factor = 1.f;
prefs->default_maximum_page_scale_factor = 1.f;
prefs->navigate_on_drag_drop = false;
// Custom preferences of guest page.
auto* web_contents = content::WebContents::FromRenderViewHost(host);
auto* web_preferences = WebContentsPreferences::From(web_contents);
if (web_preferences)
web_preferences->OverrideWebkitPrefs(prefs);
}
void AtomBrowserClient::OverrideSiteInstanceForNavigation(
content::RenderFrameHost* rfh,
content::BrowserContext* browser_context,
const GURL& url,
bool has_request_started,
content::SiteInstance* candidate_instance,
content::SiteInstance** new_instance) {
if (g_suppress_renderer_process_restart) {
g_suppress_renderer_process_restart = false;
return;
}
content::SiteInstance* current_instance = rfh->GetSiteInstance();
if (!ShouldCreateNewSiteInstance(rfh, browser_context, current_instance, url))
return;
// Do we have an affinity site to manage ?
auto* web_contents = content::WebContents::FromRenderFrameHost(rfh);
auto* web_preferences = WebContentsPreferences::From(web_contents);
std::string affinity;
if (web_preferences &&
web_preferences->GetPreference("affinity", &affinity) &&
!affinity.empty()) {
affinity = base::ToLowerASCII(affinity);
auto iter = site_per_affinities.find(affinity);
GURL dest_site = content::SiteInstance::GetSiteForURL(browser_context, url);
if (iter != site_per_affinities.end() &&
IsSameWebSite(browser_context, iter->second->GetSiteURL(), dest_site)) {
*new_instance = iter->second;
} else {
site_per_affinities[affinity] = candidate_instance;
*new_instance = candidate_instance;
// Remember the original web contents for the pending renderer process.
auto* pending_process = candidate_instance->GetProcess();
pending_processes_[pending_process->GetID()] = web_contents;
}
} else {
// OverrideSiteInstanceForNavigation will be called more than once during a
// navigation (currently twice, on request and when it's about to commit in
// the renderer), look at RenderFrameHostManager::GetFrameHostForNavigation.
// In the default mode we should resuse the same site instance until the
// request commits otherwise it will get destroyed. Currently there is no
// unique lifetime tracker for a navigation request during site instance
// creation. We check for the state of the request, which should be one of
// (WAITING_FOR_RENDERER_RESPONSE, STARTED, RESPONSE_STARTED, FAILED) along
// with the availability of a speculative render frame host.
if (has_request_started) {
*new_instance = current_instance;
return;
}
*new_instance = candidate_instance;
// Remember the original web contents for the pending renderer process.
auto* pending_process = candidate_instance->GetProcess();
pending_processes_[pending_process->GetID()] = web_contents;
}
}
void AtomBrowserClient::AppendExtraCommandLineSwitches(
base::CommandLine* command_line,
int process_id) {
// Make sure we're about to launch a known executable
{
base::FilePath child_path;
base::PathService::Get(content::CHILD_PROCESS_EXE, &child_path);
base::ThreadRestrictions::ScopedAllowIO allow_io;
CHECK(base::MakeAbsoluteFilePath(command_line->GetProgram()) == child_path);
}
std::string process_type =
command_line->GetSwitchValueASCII(::switches::kProcessType);
if (process_type != ::switches::kRendererProcess)
return;
// Copy following switches to child process.
static const char* const kCommonSwitchNames[] = {switches::kStandardSchemes,
switches::kEnableSandbox,
switches::kSecureSchemes};
command_line->CopySwitchesFrom(*base::CommandLine::ForCurrentProcess(),
kCommonSwitchNames,
arraysize(kCommonSwitchNames));
// The registered service worker schemes.
if (!g_custom_service_worker_schemes->empty())
command_line->AppendSwitchASCII(switches::kRegisterServiceWorkerSchemes,
*g_custom_service_worker_schemes);
#if defined(OS_WIN)
// Append --app-user-model-id.
PWSTR current_app_id;
if (SUCCEEDED(GetCurrentProcessExplicitAppUserModelID(&current_app_id))) {
command_line->AppendSwitchNative(switches::kAppUserModelId, current_app_id);
CoTaskMemFree(current_app_id);
}
#endif
if (delegate_) {
auto app_path = static_cast<api::App*>(delegate_)->GetAppPath();
command_line->AppendSwitchPath(switches::kAppPath, app_path);
}
content::WebContents* web_contents = GetWebContentsFromProcessID(process_id);
if (web_contents) {
auto* web_preferences = WebContentsPreferences::From(web_contents);
if (web_preferences)
web_preferences->AppendCommandLineSwitches(command_line);
SessionPreferences::AppendExtraCommandLineSwitches(
web_contents->GetBrowserContext(), command_line);
}
}
void AtomBrowserClient::DidCreatePpapiPlugin(content::BrowserPpapiHost* host) {
#if BUILDFLAG(ENABLE_PEPPER_FLASH)
host->GetPpapiHost()->AddHostFactoryFilter(
base::WrapUnique(new ChromeBrowserPepperHostFactory(host)));
#endif
}
std::string AtomBrowserClient::GetGeolocationApiKey() {
std::unique_ptr<base::Environment> env(base::Environment::Create());
std::string api_key;
if (!env->GetVar("GOOGLE_API_KEY", &api_key))
api_key = GOOGLEAPIS_API_KEY;
return api_key;
}
content::QuotaPermissionContext*
AtomBrowserClient::CreateQuotaPermissionContext() {
return new AtomQuotaPermissionContext;
}
void AtomBrowserClient::AllowCertificateError(
content::WebContents* web_contents,
int cert_error,
const net::SSLInfo& ssl_info,
const GURL& request_url,
content::ResourceType resource_type,
bool strict_enforcement,
bool expired_previous_decision,
const base::Callback<void(content::CertificateRequestResultType)>&
callback) {
if (delegate_) {
delegate_->AllowCertificateError(
web_contents, cert_error, ssl_info, request_url, resource_type,
strict_enforcement, expired_previous_decision, callback);
}
}
void AtomBrowserClient::SelectClientCertificate(
content::WebContents* web_contents,
net::SSLCertRequestInfo* cert_request_info,
net::ClientCertIdentityList client_certs,
std::unique_ptr<content::ClientCertificateDelegate> delegate) {
if (!client_certs.empty() && delegate_) {
delegate_->SelectClientCertificate(web_contents, cert_request_info,
std::move(client_certs),
std::move(delegate));
}
}
void AtomBrowserClient::ResourceDispatcherHostCreated() {
resource_dispatcher_host_delegate_.reset(
new AtomResourceDispatcherHostDelegate);
content::ResourceDispatcherHost::Get()->SetDelegate(
resource_dispatcher_host_delegate_.get());
}
bool AtomBrowserClient::CanCreateWindow(
content::RenderFrameHost* opener,
const GURL& opener_url,
const GURL& opener_top_level_frame_url,
const GURL& source_origin,
content::mojom::WindowContainerType container_type,
const GURL& target_url,
const content::Referrer& referrer,
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
const std::vector<std::string>& additional_features,
const scoped_refptr<network::ResourceRequestBody>& body,
bool user_gesture,
bool opener_suppressed,
bool* no_javascript_access) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
int opener_render_process_id = opener->GetProcess()->GetID();
if (IsRendererSandboxed(opener_render_process_id)) {
*no_javascript_access = false;
return true;
}
if (RendererUsesNativeWindowOpen(opener_render_process_id)) {
if (RendererDisablesPopups(opener_render_process_id)) {
// <webview> without allowpopups attribute should return
// null from window.open calls
return false;
} else {
*no_javascript_access = false;
return true;
}
}
if (delegate_) {
return delegate_->CanCreateWindow(
opener, opener_url, opener_top_level_frame_url, source_origin,
container_type, target_url, referrer, frame_name, disposition, features,
additional_features, body, user_gesture, opener_suppressed,
no_javascript_access);
}
return false;
}
void AtomBrowserClient::GetAdditionalAllowedSchemesForFileSystem(
std::vector<std::string>* additional_schemes) {
auto schemes_list = api::GetStandardSchemes();
if (!schemes_list.empty())
additional_schemes->insert(additional_schemes->end(), schemes_list.begin(),
schemes_list.end());
additional_schemes->push_back(content::kChromeDevToolsScheme);
}
void AtomBrowserClient::SiteInstanceDeleting(
content::SiteInstance* site_instance) {
// We are storing weak_ptr, is it fundamental to maintain the map up-to-date
// when an instance is destroyed.
for (auto iter = site_per_affinities.begin();
iter != site_per_affinities.end(); ++iter) {
if (iter->second == site_instance) {
site_per_affinities.erase(iter);
break;
}
}
}
std::unique_ptr<net::ClientCertStore> AtomBrowserClient::CreateClientCertStore(
content::ResourceContext* resource_context) {
#if defined(USE_NSS_CERTS)
return std::make_unique<net::ClientCertStoreNSS>(
net::ClientCertStoreNSS::PasswordDelegateFactory());
#elif defined(OS_WIN)
return std::make_unique<net::ClientCertStoreWin>();
#elif defined(OS_MACOSX)
return std::make_unique<net::ClientCertStoreMac>();
#elif defined(USE_OPENSSL)
return std::unique_ptr<net::ClientCertStore>();
#endif
}
std::unique_ptr<device::LocationProvider>
AtomBrowserClient::OverrideSystemLocationProvider() {
#if BUILDFLAG(OVERRIDE_LOCATION_PROVIDER)
return std::make_unique<FakeLocationProvider>();
#else
return nullptr;
#endif
}
network::mojom::NetworkContextPtr AtomBrowserClient::CreateNetworkContext(
content::BrowserContext* browser_context,
bool /*in_memory*/,
const base::FilePath& /*relative_partition_path*/) {
if (!browser_context)
return nullptr;
return static_cast<AtomBrowserContext*>(browser_context)->GetNetworkContext();
}
void AtomBrowserClient::RegisterOutOfProcessServices(
OutOfProcessServiceMap* services) {
(*services)[proxy_resolver::mojom::kProxyResolverServiceName] =
base::BindRepeating(&l10n_util::GetStringUTF16,
IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME);
}
std::unique_ptr<base::Value> AtomBrowserClient::GetServiceManifestOverlay(
base::StringPiece name) {
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
int id = -1;
if (name == content::mojom::kBrowserServiceName)
id = IDR_ELECTRON_CONTENT_BROWSER_MANIFEST_OVERLAY;
else if (name == content::mojom::kPackagedServicesServiceName)
id = IDR_ELECTRON_CONTENT_PACKAGED_SERVICES_MANIFEST_OVERLAY;
if (id == -1)
return nullptr;
base::StringPiece manifest_contents = rb.GetRawDataResource(id);
return base::JSONReader::Read(manifest_contents);
}
net::NetLog* AtomBrowserClient::GetNetLog() {
return AtomBrowserMainParts::Get()->net_log();
}
brightray::BrowserMainParts* AtomBrowserClient::OverrideCreateBrowserMainParts(
const content::MainFunctionParams& params) {
return new AtomBrowserMainParts(params);
}
void AtomBrowserClient::WebNotificationAllowed(
int render_process_id,
const base::Callback<void(bool, bool)>& callback) {
content::WebContents* web_contents =
WebContentsPreferences::GetWebContentsFromProcessID(render_process_id);
if (!web_contents) {
callback.Run(false, false);
return;
}
auto* permission_helper =
WebContentsPermissionHelper::FromWebContents(web_contents);
if (!permission_helper) {
callback.Run(false, false);
return;
}
permission_helper->RequestWebNotificationPermission(
base::Bind(callback, web_contents->IsAudioMuted()));
}
void AtomBrowserClient::RenderProcessHostDestroyed(
content::RenderProcessHost* host) {
int process_id = host->GetID();
pending_processes_.erase(process_id);
RemoveProcessPreferences(process_id);
}
void AtomBrowserClient::RenderProcessReady(content::RenderProcessHost* host) {
render_process_host_pids_[host->GetID()] =
base::GetProcId(host->GetProcess().Handle());
if (delegate_) {
static_cast<api::App*>(delegate_)->RenderProcessReady(host);
}
}
void AtomBrowserClient::RenderProcessExited(
content::RenderProcessHost* host,
const content::ChildProcessTerminationInfo& info) {
auto host_pid = render_process_host_pids_.find(host->GetID());
if (host_pid != render_process_host_pids_.end()) {
if (delegate_) {
static_cast<api::App*>(delegate_)->RenderProcessDisconnected(
host_pid->second);
}
render_process_host_pids_.erase(host_pid);
}
}
void OnOpenExternal(const GURL& escaped_url, bool allowed) {
if (allowed)
platform_util::OpenExternal(
#if defined(OS_WIN)
base::UTF8ToUTF16(escaped_url.spec()),
#else
escaped_url,
#endif
platform_util::OpenExternalOptions());
}
void HandleExternalProtocolInUI(
const GURL& url,
const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
bool has_user_gesture) {
content::WebContents* web_contents = web_contents_getter.Run();
if (!web_contents)
return;
auto* permission_helper =
WebContentsPermissionHelper::FromWebContents(web_contents);
if (!permission_helper)
return;
GURL escaped_url(net::EscapeExternalHandlerValue(url.spec()));
auto callback = base::Bind(&OnOpenExternal, escaped_url);
permission_helper->RequestOpenExternalPermission(callback, has_user_gesture,
url);
}
bool AtomBrowserClient::HandleExternalProtocol(
const GURL& url,
content::ResourceRequestInfo::WebContentsGetter web_contents_getter,
int child_id,
content::NavigationUIData* navigation_data,
bool is_main_frame,
ui::PageTransition page_transition,
bool has_user_gesture) {
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::BindOnce(&HandleExternalProtocolInUI, url, web_contents_getter,
has_user_gesture));
return true;
}
std::vector<std::unique_ptr<content::NavigationThrottle>>
AtomBrowserClient::CreateThrottlesForNavigation(
content::NavigationHandle* handle) {
std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
throttles.push_back(std::make_unique<AtomNavigationThrottle>(handle));
return throttles;
}
} // namespace atom

View File

@@ -1,180 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_ATOM_BROWSER_CLIENT_H_
#define ATOM_BROWSER_ATOM_BROWSER_CLIENT_H_
#include <map>
#include <memory>
#include <set>
#include <string>
#include <vector>
#include "brightray/browser/browser_client.h"
#include "content/public/browser/render_process_host_observer.h"
#include "net/ssl/client_cert_identity.h"
namespace content {
class QuotaPermissionContext;
class ClientCertificateDelegate;
} // namespace content
namespace net {
class SSLCertRequestInfo;
}
namespace atom {
class AtomResourceDispatcherHostDelegate;
class AtomBrowserClient : public brightray::BrowserClient,
public content::RenderProcessHostObserver {
public:
AtomBrowserClient();
~AtomBrowserClient() override;
using Delegate = content::ContentBrowserClient;
void set_delegate(Delegate* delegate) { delegate_ = delegate; }
// Returns the WebContents for pending render processes.
content::WebContents* GetWebContentsFromProcessID(int process_id);
// Don't force renderer process to restart for once.
static void SuppressRendererProcessRestartForOnce();
// Custom schemes to be registered to handle service worker.
static void SetCustomServiceWorkerSchemes(
const std::vector<std::string>& schemes);
std::vector<std::unique_ptr<content::NavigationThrottle>>
CreateThrottlesForNavigation(content::NavigationHandle* handle) override;
protected:
// content::ContentBrowserClient:
void RenderProcessWillLaunch(
content::RenderProcessHost* host,
service_manager::mojom::ServiceRequest* service_request) override;
content::SpeechRecognitionManagerDelegate*
CreateSpeechRecognitionManagerDelegate() override;
void OverrideWebkitPrefs(content::RenderViewHost* render_view_host,
content::WebPreferences* prefs) override;
void OverrideSiteInstanceForNavigation(
content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
const GURL& dest_url,
bool has_request_started,
content::SiteInstance* candidate_instance,
content::SiteInstance** new_instance) override;
void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
int child_process_id) override;
void DidCreatePpapiPlugin(content::BrowserPpapiHost* browser_host) override;
std::string GetGeolocationApiKey() override;
content::QuotaPermissionContext* CreateQuotaPermissionContext() override;
void AllowCertificateError(
content::WebContents* web_contents,
int cert_error,
const net::SSLInfo& ssl_info,
const GURL& request_url,
content::ResourceType resource_type,
bool strict_enforcement,
bool expired_previous_decision,
const base::Callback<void(content::CertificateRequestResultType)>&
callback) override;
void SelectClientCertificate(
content::WebContents* web_contents,
net::SSLCertRequestInfo* cert_request_info,
net::ClientCertIdentityList client_certs,
std::unique_ptr<content::ClientCertificateDelegate> delegate) override;
void ResourceDispatcherHostCreated() override;
bool CanCreateWindow(content::RenderFrameHost* opener,
const GURL& opener_url,
const GURL& opener_top_level_frame_url,
const GURL& source_origin,
content::mojom::WindowContainerType container_type,
const GURL& target_url,
const content::Referrer& referrer,
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
const std::vector<std::string>& additional_features,
const scoped_refptr<network::ResourceRequestBody>& body,
bool user_gesture,
bool opener_suppressed,
bool* no_javascript_access) override;
void GetAdditionalAllowedSchemesForFileSystem(
std::vector<std::string>* schemes) override;
void SiteInstanceDeleting(content::SiteInstance* site_instance) override;
std::unique_ptr<net::ClientCertStore> CreateClientCertStore(
content::ResourceContext* resource_context) override;
std::unique_ptr<device::LocationProvider> OverrideSystemLocationProvider()
override;
network::mojom::NetworkContextPtr CreateNetworkContext(
content::BrowserContext* browser_context,
bool in_memory,
const base::FilePath& relative_partition_path) override;
void RegisterOutOfProcessServices(OutOfProcessServiceMap* services) override;
std::unique_ptr<base::Value> GetServiceManifestOverlay(
base::StringPiece name) override;
net::NetLog* GetNetLog() override;
// brightray::BrowserClient:
brightray::BrowserMainParts* OverrideCreateBrowserMainParts(
const content::MainFunctionParams&) override;
void WebNotificationAllowed(
int render_process_id,
const base::Callback<void(bool, bool)>& callback) override;
// content::RenderProcessHostObserver:
void RenderProcessHostDestroyed(content::RenderProcessHost* host) override;
void RenderProcessReady(content::RenderProcessHost* host) override;
void RenderProcessExited(
content::RenderProcessHost* host,
const content::ChildProcessTerminationInfo& info) override;
bool HandleExternalProtocol(
const GURL& url,
content::ResourceRequestInfo::WebContentsGetter web_contents_getter,
int child_id,
content::NavigationUIData* navigation_data,
bool is_main_frame,
ui::PageTransition page_transition,
bool has_user_gesture) override;
private:
struct ProcessPreferences {
bool sandbox = false;
bool native_window_open = false;
bool disable_popups = false;
};
bool ShouldCreateNewSiteInstance(content::RenderFrameHost* render_frame_host,
content::BrowserContext* browser_context,
content::SiteInstance* current_instance,
const GURL& dest_url);
void AddProcessPreferences(int process_id, ProcessPreferences prefs);
void RemoveProcessPreferences(int process_id);
bool IsProcessObserved(int process_id);
bool IsRendererSandboxed(int process_id);
bool RendererUsesNativeWindowOpen(int process_id);
bool RendererDisablesPopups(int process_id);
// pending_render_process => web contents.
std::map<int, content::WebContents*> pending_processes_;
std::map<int, ProcessPreferences> process_preferences_;
std::map<int, base::ProcessId> render_process_host_pids_;
// list of site per affinity. weak_ptr to prevent instance locking
std::map<std::string, content::SiteInstance*> site_per_affinities;
std::unique_ptr<AtomResourceDispatcherHostDelegate>
resource_dispatcher_host_delegate_;
Delegate* delegate_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(AtomBrowserClient);
};
} // namespace atom
#endif // ATOM_BROWSER_ATOM_BROWSER_CLIENT_H_

View File

@@ -1,324 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/atom_browser_context.h"
#include <utility>
#include "atom/browser/atom_blob_reader.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/atom_download_manager_delegate.h"
#include "atom/browser/atom_permission_manager.h"
#include "atom/browser/browser.h"
#include "atom/browser/cookie_change_notifier.h"
#include "atom/browser/net/resolve_proxy_helper.h"
#include "atom/browser/pref_store_delegate.h"
#include "atom/browser/special_storage_policy.h"
#include "atom/browser/web_view_manager.h"
#include "atom/common/atom_version.h"
#include "atom/common/chrome_version.h"
#include "atom/common/options_switches.h"
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/path_service.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "base/threading/thread_restrictions.h"
#include "brightray/browser/brightray_paths.h"
#include "brightray/browser/inspectable_web_contents_impl.h"
#include "brightray/browser/zoom_level_delegate.h"
#include "brightray/common/application_info.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/pref_names.h"
#include "components/prefs/json_pref_store.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/pref_service_factory.h"
#include "components/prefs/value_map_pref_store.h"
#include "components/proxy_config/pref_proxy_config_tracker_impl.h"
#include "components/proxy_config/proxy_config_pref_names.h"
#include "content/browser/blob_storage/chrome_blob_storage_context.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/common/user_agent.h"
#include "net/base/escape.h"
using content::BrowserThread;
namespace atom {
namespace {
std::string RemoveWhitespace(const std::string& str) {
std::string trimmed;
if (base::RemoveChars(str, " ", &trimmed))
return trimmed;
else
return str;
}
// Convert string to lower case and escape it.
std::string MakePartitionName(const std::string& input) {
return net::EscapePath(base::ToLowerASCII(input));
}
} // namespace
// static
AtomBrowserContext::BrowserContextMap AtomBrowserContext::browser_context_map_;
AtomBrowserContext::AtomBrowserContext(const std::string& partition,
bool in_memory,
const base::DictionaryValue& options)
: base::RefCountedDeleteOnSequence<AtomBrowserContext>(
base::ThreadTaskRunnerHandle::Get()),
in_memory_pref_store_(nullptr),
storage_policy_(new SpecialStoragePolicy),
in_memory_(in_memory),
weak_factory_(this) {
// Construct user agent string.
Browser* browser = Browser::Get();
std::string name = RemoveWhitespace(browser->GetName());
std::string user_agent;
if (name == ATOM_PRODUCT_NAME) {
user_agent = "Chrome/" CHROME_VERSION_STRING " " ATOM_PRODUCT_NAME
"/" ATOM_VERSION_STRING;
} else {
user_agent = base::StringPrintf(
"%s/%s Chrome/%s " ATOM_PRODUCT_NAME "/" ATOM_VERSION_STRING,
name.c_str(), browser->GetVersion().c_str(), CHROME_VERSION_STRING);
}
user_agent_ = content::BuildUserAgentFromProduct(user_agent);
// Read options.
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
use_cache_ = !command_line->HasSwitch(switches::kDisableHttpCache);
options.GetBoolean("cache", &use_cache_);
base::StringToInt(command_line->GetSwitchValueASCII(switches::kDiskCacheSize),
&max_cache_size_);
if (!base::PathService::Get(brightray::DIR_USER_DATA, &path_)) {
base::PathService::Get(brightray::DIR_APP_DATA, &path_);
path_ = path_.Append(
base::FilePath::FromUTF8Unsafe(brightray::GetApplicationName()));
base::PathService::Override(brightray::DIR_USER_DATA, path_);
}
if (!in_memory && !partition.empty())
path_ = path_.Append(FILE_PATH_LITERAL("Partitions"))
.Append(base::FilePath::FromUTF8Unsafe(
MakePartitionName(partition)));
content::BrowserContext::Initialize(this, path_);
// Initialize Pref Registry.
InitPrefs();
proxy_config_monitor_ = std::make_unique<ProxyConfigMonitor>(prefs_.get());
io_handle_ = new URLRequestContextGetter::Handle(weak_factory_.GetWeakPtr());
cookie_change_notifier_ = std::make_unique<CookieChangeNotifier>(this);
}
AtomBrowserContext::~AtomBrowserContext() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
NotifyWillBeDestroyed(this);
ShutdownStoragePartitions();
io_handle_->ShutdownOnUIThread();
}
void AtomBrowserContext::InitPrefs() {
auto prefs_path = GetPath().Append(FILE_PATH_LITERAL("Preferences"));
base::ThreadRestrictions::ScopedAllowIO allow_io;
PrefServiceFactory prefs_factory;
scoped_refptr<JsonPrefStore> pref_store =
base::MakeRefCounted<JsonPrefStore>(prefs_path);
pref_store->ReadPrefs(); // Synchronous.
prefs_factory.set_user_prefs(pref_store);
auto registry = WrapRefCounted(new PrefRegistrySimple);
registry->RegisterFilePathPref(prefs::kSelectFileLastDirectory,
base::FilePath());
base::FilePath download_dir;
base::PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, &download_dir);
registry->RegisterFilePathPref(prefs::kDownloadDefaultDirectory,
download_dir);
registry->RegisterDictionaryPref(prefs::kDevToolsFileSystemPaths);
brightray::InspectableWebContentsImpl::RegisterPrefs(registry.get());
brightray::MediaDeviceIDSalt::RegisterPrefs(registry.get());
brightray::ZoomLevelDelegate::RegisterPrefs(registry.get());
PrefProxyConfigTrackerImpl::RegisterPrefs(registry.get());
prefs_ = prefs_factory.Create(
registry.get(),
std::make_unique<PrefStoreDelegate>(weak_factory_.GetWeakPtr()));
prefs_->UpdateCommandLinePrefStore(new ValueMapPrefStore);
}
void AtomBrowserContext::SetUserAgent(const std::string& user_agent) {
user_agent_ = user_agent;
}
net::URLRequestContextGetter* AtomBrowserContext::CreateRequestContext(
content::ProtocolHandlerMap* protocol_handlers,
content::URLRequestInterceptorScopedVector protocol_interceptors) {
return io_handle_
->CreateMainRequestContextGetter(protocol_handlers,
std::move(protocol_interceptors))
.get();
}
net::URLRequestContextGetter* AtomBrowserContext::CreateMediaRequestContext() {
return io_handle_->GetMainRequestContextGetter().get();
}
net::URLRequestContextGetter* AtomBrowserContext::GetRequestContext() {
return GetDefaultStoragePartition(this)->GetURLRequestContext();
}
network::mojom::NetworkContextPtr AtomBrowserContext::GetNetworkContext() {
return io_handle_->GetNetworkContext();
}
base::FilePath AtomBrowserContext::GetPath() const {
return path_;
}
bool AtomBrowserContext::IsOffTheRecord() const {
return in_memory_;
}
bool AtomBrowserContext::CanUseHttpCache() const {
return use_cache_;
}
int AtomBrowserContext::GetMaxCacheSize() const {
return max_cache_size_;
}
content::ResourceContext* AtomBrowserContext::GetResourceContext() {
return io_handle_->GetResourceContext();
}
std::string AtomBrowserContext::GetMediaDeviceIDSalt() {
if (!media_device_id_salt_.get())
media_device_id_salt_.reset(new brightray::MediaDeviceIDSalt(prefs_.get()));
return media_device_id_salt_->GetSalt();
}
std::unique_ptr<content::ZoomLevelDelegate>
AtomBrowserContext::CreateZoomLevelDelegate(
const base::FilePath& partition_path) {
if (!IsOffTheRecord()) {
return std::make_unique<brightray::ZoomLevelDelegate>(prefs(),
partition_path);
}
return std::unique_ptr<content::ZoomLevelDelegate>();
}
content::DownloadManagerDelegate*
AtomBrowserContext::GetDownloadManagerDelegate() {
if (!download_manager_delegate_.get()) {
auto* download_manager = content::BrowserContext::GetDownloadManager(this);
download_manager_delegate_.reset(
new AtomDownloadManagerDelegate(download_manager));
}
return download_manager_delegate_.get();
}
content::BrowserPluginGuestManager* AtomBrowserContext::GetGuestManager() {
if (!guest_manager_)
guest_manager_.reset(new WebViewManager);
return guest_manager_.get();
}
content::PermissionControllerDelegate*
AtomBrowserContext::GetPermissionControllerDelegate() {
if (!permission_manager_.get())
permission_manager_.reset(new AtomPermissionManager);
return permission_manager_.get();
}
storage::SpecialStoragePolicy* AtomBrowserContext::GetSpecialStoragePolicy() {
return storage_policy_.get();
}
std::string AtomBrowserContext::GetUserAgent() const {
return user_agent_;
}
AtomBlobReader* AtomBrowserContext::GetBlobReader() {
if (!blob_reader_.get()) {
content::ChromeBlobStorageContext* blob_context =
content::ChromeBlobStorageContext::GetFor(this);
blob_reader_.reset(new AtomBlobReader(blob_context));
}
return blob_reader_.get();
}
content::PushMessagingService* AtomBrowserContext::GetPushMessagingService() {
return nullptr;
}
content::SSLHostStateDelegate* AtomBrowserContext::GetSSLHostStateDelegate() {
return nullptr;
}
content::BackgroundFetchDelegate*
AtomBrowserContext::GetBackgroundFetchDelegate() {
return nullptr;
}
content::BackgroundSyncController*
AtomBrowserContext::GetBackgroundSyncController() {
return nullptr;
}
content::BrowsingDataRemoverDelegate*
AtomBrowserContext::GetBrowsingDataRemoverDelegate() {
return nullptr;
}
net::URLRequestContextGetter*
AtomBrowserContext::CreateRequestContextForStoragePartition(
const base::FilePath& partition_path,
bool in_memory,
content::ProtocolHandlerMap* protocol_handlers,
content::URLRequestInterceptorScopedVector request_interceptors) {
NOTREACHED();
return nullptr;
}
net::URLRequestContextGetter*
AtomBrowserContext::CreateMediaRequestContextForStoragePartition(
const base::FilePath& partition_path,
bool in_memory) {
NOTREACHED();
return nullptr;
}
ResolveProxyHelper* AtomBrowserContext::GetResolveProxyHelper() {
if (!resolve_proxy_helper_) {
resolve_proxy_helper_ = base::MakeRefCounted<ResolveProxyHelper>(this);
}
return resolve_proxy_helper_.get();
}
// static
scoped_refptr<AtomBrowserContext> AtomBrowserContext::From(
const std::string& partition,
bool in_memory,
const base::DictionaryValue& options) {
PartitionKey key(partition, in_memory);
auto* browser_context = browser_context_map_[key].get();
if (browser_context)
return scoped_refptr<AtomBrowserContext>(browser_context);
auto* new_context = new AtomBrowserContext(partition, in_memory, options);
browser_context_map_[key] = new_context->GetWeakPtr();
return scoped_refptr<AtomBrowserContext>(new_context);
}
} // namespace atom

View File

@@ -1,316 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/atom_browser_main_parts.h"
#include <utility>
#include "atom/browser/api/atom_api_app.h"
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/atom_browser_client.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/browser.h"
#include "atom/browser/io_thread.h"
#include "atom/browser/javascript_environment.h"
#include "atom/browser/node_debugger.h"
#include "atom/common/api/atom_bindings.h"
#include "atom/common/asar/asar_util.h"
#include "atom/common/node_bindings.h"
#include "base/command_line.h"
#include "base/threading/thread_task_runner_handle.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/icon_manager.h"
#include "chrome/browser/net/chrome_net_log_helper.h"
#include "components/net_log/chrome_net_log.h"
#include "components/net_log/net_export_file_writer.h"
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/common/result_codes.h"
#include "content/public/common/service_manager_connection.h"
#include "electron/buildflags/buildflags.h"
#include "services/device/public/mojom/constants.mojom.h"
#include "services/network/public/cpp/network_switches.h"
#include "services/service_manager/public/cpp/connector.h"
#include "ui/base/idle/idle.h"
#include "ui/base/l10n/l10n_util.h"
#if defined(USE_X11)
#include "chrome/browser/ui/libgtkui/gtk_util.h"
#include "ui/events/devices/x11/touch_factory_x11.h"
#endif
#if BUILDFLAG(ENABLE_PDF_VIEWER)
#include "atom/browser/atom_web_ui_controller_factory.h"
#endif // BUILDFLAG(ENABLE_PDF_VIEWER)
#if defined(OS_MACOSX)
#include "atom/browser/ui/cocoa/views_delegate_mac.h"
#else
#include "brightray/browser/views/views_delegate.h"
#endif
// Must be included after all other headers.
#include "atom/common/node_includes.h"
namespace atom {
namespace {
template <typename T>
void Erase(T* container, typename T::iterator iter) {
container->erase(iter);
}
} // namespace
// static
AtomBrowserMainParts* AtomBrowserMainParts::self_ = nullptr;
AtomBrowserMainParts::AtomBrowserMainParts(
const content::MainFunctionParams& params)
: fake_browser_process_(new BrowserProcess),
browser_(new Browser),
node_bindings_(NodeBindings::Create(NodeBindings::BROWSER)),
atom_bindings_(new AtomBindings(uv_default_loop())),
main_function_params_(params) {
DCHECK(!self_) << "Cannot have two AtomBrowserMainParts";
self_ = this;
// Register extension scheme as web safe scheme.
content::ChildProcessSecurityPolicy::GetInstance()->RegisterWebSafeScheme(
"chrome-extension");
}
AtomBrowserMainParts::~AtomBrowserMainParts() {
asar::ClearArchives();
// Leak the JavascriptEnvironment on exit.
// This is to work around the bug that V8 would be waiting for background
// tasks to finish on exit, while somehow it waits forever in Electron, more
// about this can be found at
// https://github.com/electron/electron/issues/4767. On the other handle there
// is actually no need to gracefully shutdown V8 on exit in the main process,
// we already ensured all necessary resources get cleaned up, and it would
// make quitting faster.
ignore_result(js_env_.release());
}
// static
AtomBrowserMainParts* AtomBrowserMainParts::Get() {
DCHECK(self_);
return self_;
}
bool AtomBrowserMainParts::SetExitCode(int code) {
if (!exit_code_)
return false;
*exit_code_ = code;
return true;
}
int AtomBrowserMainParts::GetExitCode() {
return exit_code_ != nullptr ? *exit_code_ : 0;
}
void AtomBrowserMainParts::RegisterDestructionCallback(
base::OnceClosure callback) {
// The destructors should be called in reversed order, so dependencies between
// JavaScript objects can be correctly resolved.
// For example WebContentsView => WebContents => Session.
destructors_.insert(destructors_.begin(), std::move(callback));
}
int AtomBrowserMainParts::PreEarlyInitialization() {
const int result = brightray::BrowserMainParts::PreEarlyInitialization();
if (result != service_manager::RESULT_CODE_NORMAL_EXIT)
return result;
#if defined(OS_POSIX)
HandleSIGCHLD();
#endif
return service_manager::RESULT_CODE_NORMAL_EXIT;
}
void AtomBrowserMainParts::PostEarlyInitialization() {
brightray::BrowserMainParts::PostEarlyInitialization();
// A workaround was previously needed because there was no ThreadTaskRunner
// set. If this check is failing we may need to re-add that workaround
DCHECK(base::ThreadTaskRunnerHandle::IsSet());
// The ProxyResolverV8 has setup a complete V8 environment, in order to
// avoid conflicts we only initialize our V8 environment after that.
js_env_.reset(new JavascriptEnvironment(node_bindings_->uv_loop()));
node_bindings_->Initialize();
// Create the global environment.
node::Environment* env = node_bindings_->CreateEnvironment(
js_env_->context(), js_env_->platform());
node_env_.reset(new NodeEnvironment(env));
// Enable support for v8 inspector
node_debugger_.reset(new NodeDebugger(env));
node_debugger_->Start();
// Add Electron extended APIs.
atom_bindings_->BindTo(js_env_->isolate(), env->process_object());
// Load everything.
node_bindings_->LoadEnvironment(env);
// Wrap the uv loop with global env.
node_bindings_->set_uv_env(env);
// We already initialized the feature list in
// brightray::BrowserMainParts::PreEarlyInitialization(), but
// the user JS script would not have had a chance to alter the command-line
// switches at that point. Lets reinitialize it here to pick up the
// command-line changes.
base::FeatureList::ClearInstanceForTesting();
brightray::BrowserMainParts::InitializeFeatureList();
}
int AtomBrowserMainParts::PreCreateThreads() {
const int result = brightray::BrowserMainParts::PreCreateThreads();
if (!result) {
fake_browser_process_->SetApplicationLocale(
brightray::BrowserClient::Get()->GetApplicationLocale());
}
#if defined(OS_MACOSX)
ui::InitIdleMonitor();
#endif
net_log_ = std::make_unique<net_log::ChromeNetLog>();
auto& command_line = main_function_params_.command_line;
// start net log trace if --log-net-log is passed in the command line.
if (command_line.HasSwitch(network::switches::kLogNetLog)) {
base::FilePath log_file =
command_line.GetSwitchValuePath(network::switches::kLogNetLog);
if (!log_file.empty()) {
net_log_->StartWritingToFile(
log_file, GetNetCaptureModeFromCommandLine(command_line),
command_line.GetCommandLineString(), std::string());
}
}
// Initialize net log file exporter.
net_log_->net_export_file_writer()->Initialize();
// Manage global state of net and other IO thread related.
io_thread_ = std::make_unique<IOThread>(net_log_.get());
return result;
}
void AtomBrowserMainParts::PostDestroyThreads() {
brightray::BrowserMainParts::PostDestroyThreads();
io_thread_.reset();
}
void AtomBrowserMainParts::ToolkitInitialized() {
brightray::BrowserMainParts::ToolkitInitialized();
#if defined(OS_MACOSX)
views_delegate_.reset(new ViewsDelegateMac);
#else
views_delegate_.reset(new brightray::ViewsDelegate);
#endif
}
void AtomBrowserMainParts::PreMainMessageLoopRun() {
// Run user's main script before most things get initialized, so we can have
// a chance to setup everything.
node_bindings_->PrepareMessageLoop();
node_bindings_->RunMessageLoop();
#if defined(USE_X11)
ui::TouchFactory::SetTouchDeviceListFromCommandLine();
#endif
// Start idle gc.
gc_timer_.Start(FROM_HERE, base::TimeDelta::FromMinutes(1),
base::Bind(&v8::Isolate::LowMemoryNotification,
base::Unretained(js_env_->isolate())));
#if BUILDFLAG(ENABLE_PDF_VIEWER)
content::WebUIControllerFactory::RegisterFactory(
AtomWebUIControllerFactory::GetInstance());
#endif // BUILDFLAG(ENABLE_PDF_VIEWER)
brightray::BrowserMainParts::PreMainMessageLoopRun();
#if defined(USE_X11)
libgtkui::GtkInitFromCommandLine(*base::CommandLine::ForCurrentProcess());
#endif
#if !defined(OS_MACOSX)
// The corresponding call in macOS is in AtomApplicationDelegate.
Browser::Get()->WillFinishLaunching();
Browser::Get()->DidFinishLaunching(base::DictionaryValue());
#endif
// Notify observers that main thread message loop was initialized.
Browser::Get()->PreMainMessageLoopRun();
}
bool AtomBrowserMainParts::MainMessageLoopRun(int* result_code) {
exit_code_ = result_code;
return brightray::BrowserMainParts::MainMessageLoopRun(result_code);
}
void AtomBrowserMainParts::PreDefaultMainMessageLoopRun(
base::OnceClosure quit_closure) {
Browser::SetMainMessageLoopQuitClosure(std::move(quit_closure));
}
void AtomBrowserMainParts::PostMainMessageLoopStart() {
brightray::BrowserMainParts::PostMainMessageLoopStart();
#if defined(OS_POSIX)
HandleShutdownSignals();
#endif
}
void AtomBrowserMainParts::PostMainMessageLoopRun() {
brightray::BrowserMainParts::PostMainMessageLoopRun();
js_env_->OnMessageLoopDestroying();
#if defined(OS_MACOSX)
FreeAppDelegate();
#endif
// Make sure destruction callbacks are called before message loop is
// destroyed, otherwise some objects that need to be deleted on IO thread
// won't be freed.
// We don't use ranged for loop because iterators are getting invalided when
// the callback runs.
for (auto iter = destructors_.begin(); iter != destructors_.end();) {
base::OnceClosure callback = std::move(*iter);
if (!callback.is_null())
std::move(callback).Run();
++iter;
}
}
device::mojom::GeolocationControl*
AtomBrowserMainParts::GetGeolocationControl() {
if (geolocation_control_)
return geolocation_control_.get();
auto request = mojo::MakeRequest(&geolocation_control_);
if (!content::ServiceManagerConnection::GetForProcess())
return geolocation_control_.get();
service_manager::Connector* connector =
content::ServiceManagerConnection::GetForProcess()->GetConnector();
connector->BindInterface(device::mojom::kServiceName, std::move(request));
return geolocation_control_.get();
}
IconManager* AtomBrowserMainParts::GetIconManager() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
if (!icon_manager_.get())
icon_manager_.reset(new IconManager);
return icon_manager_.get();
}
} // namespace atom

View File

@@ -1,33 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/mac/atom_application_delegate.h"
#include "base/mac/bundle_locations.h"
#include "base/mac/foundation_util.h"
#include "ui/base/l10n/l10n_util_mac.h"
namespace atom {
void AtomBrowserMainParts::PreMainMessageLoopStart() {
// Set our own application delegate.
AtomApplicationDelegate* delegate = [[AtomApplicationDelegate alloc] init];
[NSApp setDelegate:delegate];
brightray::BrowserMainParts::PreMainMessageLoopStart();
// Prevent Cocoa from turning command-line arguments into
// |-application:openFiles:|, since we already handle them directly.
[[NSUserDefaults standardUserDefaults]
setObject:@"NO"
forKey:@"NSTreatUnknownArgumentsAsOpen"];
}
void AtomBrowserMainParts::FreeAppDelegate() {
[[NSApp delegate] release];
[NSApp setDelegate:nil];
}
} // namespace atom

View File

@@ -1,189 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/atom_download_manager_delegate.h"
#include <string>
#include "atom/browser/api/atom_api_download_item.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/native_window.h"
#include "atom/browser/ui/file_dialog.h"
#include "atom/browser/web_contents_preferences.h"
#include "atom/common/options_switches.h"
#include "base/bind.h"
#include "base/files/file_util.h"
#include "base/task_scheduler/post_task.h"
#include "chrome/common/pref_names.h"
#include "components/download/public/common/download_danger_type.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/download_item_utils.h"
#include "content/public/browser/download_manager.h"
#include "net/base/filename_util.h"
namespace atom {
namespace {
// Generate default file path to save the download.
base::FilePath CreateDownloadPath(const GURL& url,
const std::string& content_disposition,
const std::string& suggested_filename,
const std::string& mime_type,
const base::FilePath& default_download_path) {
auto generated_name =
net::GenerateFileName(url, content_disposition, std::string(),
suggested_filename, mime_type, "download");
if (!base::PathExists(default_download_path))
base::CreateDirectory(default_download_path);
return default_download_path.Append(generated_name);
}
} // namespace
AtomDownloadManagerDelegate::AtomDownloadManagerDelegate(
content::DownloadManager* manager)
: download_manager_(manager), weak_ptr_factory_(this) {}
AtomDownloadManagerDelegate::~AtomDownloadManagerDelegate() {
if (download_manager_) {
DCHECK_EQ(static_cast<content::DownloadManagerDelegate*>(this),
download_manager_->GetDelegate());
download_manager_->SetDelegate(nullptr);
download_manager_ = nullptr;
}
}
void AtomDownloadManagerDelegate::GetItemSavePath(download::DownloadItem* item,
base::FilePath* path) {
v8::Isolate* isolate = v8::Isolate::GetCurrent();
v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
api::DownloadItem* download =
api::DownloadItem::FromWrappedClass(isolate, item);
if (download)
*path = download->GetSavePath();
}
void AtomDownloadManagerDelegate::OnDownloadPathGenerated(
uint32_t download_id,
const content::DownloadTargetCallback& callback,
const base::FilePath& default_path) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
auto* item = download_manager_->GetDownload(download_id);
if (!item)
return;
NativeWindow* window = nullptr;
content::WebContents* web_contents =
content::DownloadItemUtils::GetWebContents(item);
auto* relay =
web_contents ? NativeWindowRelay::FromWebContents(web_contents) : nullptr;
if (relay)
window = relay->GetNativeWindow();
auto* web_preferences = WebContentsPreferences::From(web_contents);
bool offscreen =
!web_preferences || web_preferences->IsEnabled(options::kOffscreen);
base::FilePath path;
GetItemSavePath(item, &path);
// Show save dialog if save path was not set already on item
file_dialog::DialogSettings settings;
settings.parent_window = window;
settings.force_detached = offscreen;
settings.title = item->GetURL().spec();
settings.default_path = default_path;
if (path.empty() && file_dialog::ShowSaveDialog(settings, &path)) {
// Remember the last selected download directory.
AtomBrowserContext* browser_context = static_cast<AtomBrowserContext*>(
download_manager_->GetBrowserContext());
browser_context->prefs()->SetFilePath(prefs::kDownloadDefaultDirectory,
path.DirName());
v8::Isolate* isolate = v8::Isolate::GetCurrent();
v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
api::DownloadItem* download_item =
api::DownloadItem::FromWrappedClass(isolate, item);
if (download_item)
download_item->SetSavePath(path);
}
// Running the DownloadTargetCallback with an empty FilePath signals that the
// download should be cancelled.
// If user cancels the file save dialog, run the callback with empty FilePath.
callback.Run(path, download::DownloadItem::TARGET_DISPOSITION_PROMPT,
download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, path,
path.empty() ? download::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED
: download::DOWNLOAD_INTERRUPT_REASON_NONE);
}
void AtomDownloadManagerDelegate::Shutdown() {
weak_ptr_factory_.InvalidateWeakPtrs();
download_manager_ = nullptr;
}
bool AtomDownloadManagerDelegate::DetermineDownloadTarget(
download::DownloadItem* download,
const content::DownloadTargetCallback& callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
if (!download->GetForcedFilePath().empty()) {
callback.Run(download->GetForcedFilePath(),
download::DownloadItem::TARGET_DISPOSITION_OVERWRITE,
download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
download->GetForcedFilePath(),
download::DOWNLOAD_INTERRUPT_REASON_NONE);
return true;
}
// Try to get the save path from JS wrapper.
base::FilePath save_path;
GetItemSavePath(download, &save_path);
if (!save_path.empty()) {
callback.Run(save_path,
download::DownloadItem::TARGET_DISPOSITION_OVERWRITE,
download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, save_path,
download::DOWNLOAD_INTERRUPT_REASON_NONE);
return true;
}
AtomBrowserContext* browser_context =
static_cast<AtomBrowserContext*>(download_manager_->GetBrowserContext());
base::FilePath default_download_path =
browser_context->prefs()->GetFilePath(prefs::kDownloadDefaultDirectory);
base::PostTaskWithTraitsAndReplyWithResult(
FROM_HERE,
{base::MayBlock(), base::TaskPriority::BACKGROUND,
base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
base::BindOnce(&CreateDownloadPath, download->GetURL(),
download->GetContentDisposition(),
download->GetSuggestedFilename(), download->GetMimeType(),
default_download_path),
base::BindOnce(&AtomDownloadManagerDelegate::OnDownloadPathGenerated,
weak_ptr_factory_.GetWeakPtr(), download->GetId(),
callback));
return true;
}
bool AtomDownloadManagerDelegate::ShouldOpenDownload(
download::DownloadItem* download,
const content::DownloadOpenDelayedCallback& callback) {
return true;
}
void AtomDownloadManagerDelegate::GetNextId(
const content::DownloadIdCallback& callback) {
static uint32_t next_id = download::DownloadItem::kInvalidId + 1;
callback.Run(next_id++);
}
} // namespace atom

View File

@@ -1,27 +0,0 @@
// Copyright (c) 2018 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_ATOM_NAVIGATION_THROTTLE_H_
#define ATOM_BROWSER_ATOM_NAVIGATION_THROTTLE_H_
#include "content/public/browser/navigation_throttle.h"
namespace atom {
class AtomNavigationThrottle : public content::NavigationThrottle {
public:
explicit AtomNavigationThrottle(content::NavigationHandle* handle);
~AtomNavigationThrottle() override;
AtomNavigationThrottle::ThrottleCheckResult WillRedirectRequest() override;
const char* GetNameForLogging() override;
private:
DISALLOW_COPY_AND_ASSIGN(AtomNavigationThrottle);
};
} // namespace atom
#endif // ATOM_BROWSER_ATOM_NAVIGATION_THROTTLE_H_

View File

@@ -1,20 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/atom_quota_permission_context.h"
namespace atom {
AtomQuotaPermissionContext::AtomQuotaPermissionContext() {}
AtomQuotaPermissionContext::~AtomQuotaPermissionContext() {}
void AtomQuotaPermissionContext::RequestQuotaPermission(
const content::StorageQuotaParams& params,
int render_process_id,
const PermissionCallback& callback) {
callback.Run(response::QUOTA_PERMISSION_RESPONSE_ALLOW);
}
} // namespace atom

View File

@@ -1,104 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/atom_resource_dispatcher_host_delegate.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/web_contents_preferences.h"
#include "base/strings/utf_string_conversions.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/download_manager.h"
#include "content/public/browser/render_frame_host.h"
#include "electron/buildflags/buildflags.h"
#include "net/base/escape.h"
#include "url/gurl.h"
#if BUILDFLAG(ENABLE_PDF_VIEWER)
#include "atom/common/atom_constants.h"
#include "base/strings/stringprintf.h"
#include "content/public/browser/stream_info.h"
#include "net/url_request/url_request.h"
#endif // BUILDFLAG(ENABLE_PDF_VIEWER)
using content::BrowserThread;
namespace atom {
namespace {
#if BUILDFLAG(ENABLE_PDF_VIEWER)
void OnPdfResourceIntercepted(
const GURL& original_url,
int render_process_host_id,
int render_frame_id,
const content::ResourceRequestInfo::WebContentsGetter&
web_contents_getter) {
content::WebContents* web_contents = web_contents_getter.Run();
if (!web_contents)
return;
auto* web_preferences = WebContentsPreferences::From(web_contents);
if (!web_preferences || !web_preferences->IsEnabled(options::kPlugins)) {
auto* browser_context = web_contents->GetBrowserContext();
auto* download_manager =
content::BrowserContext::GetDownloadManager(browser_context);
download_manager->DownloadUrl(
content::DownloadUrlParameters::CreateForWebContentsMainFrame(
web_contents, original_url, NO_TRAFFIC_ANNOTATION_YET));
return;
}
// The URL passes the original pdf resource url, that will be requested
// by the webui page.
// chrome://pdf-viewer/index.html?src=https://somepage/123.pdf
content::NavigationController::LoadURLParams params(GURL(base::StringPrintf(
"%sindex.html?%s=%s", kPdfViewerUIOrigin, kPdfPluginSrc,
net::EscapeUrlEncodedData(original_url.spec(), false).c_str())));
content::RenderFrameHost* frame_host =
content::RenderFrameHost::FromID(render_process_host_id, render_frame_id);
if (!frame_host) {
return;
}
params.frame_tree_node_id = frame_host->GetFrameTreeNodeId();
web_contents->GetController().LoadURLWithParams(params);
}
#endif // BUILDFLAG(ENABLE_PDF_VIEWER)
} // namespace
AtomResourceDispatcherHostDelegate::AtomResourceDispatcherHostDelegate() {}
bool AtomResourceDispatcherHostDelegate::ShouldInterceptResourceAsStream(
net::URLRequest* request,
const std::string& mime_type,
GURL* origin,
std::string* payload) {
#if BUILDFLAG(ENABLE_PDF_VIEWER)
const content::ResourceRequestInfo* info =
content::ResourceRequestInfo::ForRequest(request);
int render_process_host_id;
int render_frame_id;
if (!info->GetAssociatedRenderFrame(&render_process_host_id,
&render_frame_id)) {
return false;
}
if (mime_type == "application/pdf") {
*origin = GURL(kPdfViewerUIOrigin);
content::BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::Bind(&OnPdfResourceIntercepted, request->url(),
render_process_host_id, render_frame_id,
info->GetWebContentsGetterForRequest()));
return true;
}
#endif // BUILDFLAG(ENABLE_PDF_VIEWER)
return false;
}
} // namespace atom

View File

@@ -1,31 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_ATOM_RESOURCE_DISPATCHER_HOST_DELEGATE_H_
#define ATOM_BROWSER_ATOM_RESOURCE_DISPATCHER_HOST_DELEGATE_H_
#include <string>
#include "content/public/browser/resource_dispatcher_host_delegate.h"
namespace atom {
class AtomResourceDispatcherHostDelegate
: public content::ResourceDispatcherHostDelegate {
public:
AtomResourceDispatcherHostDelegate();
// content::ResourceDispatcherHostDelegate:
bool ShouldInterceptResourceAsStream(net::URLRequest* request,
const std::string& mime_type,
GURL* origin,
std::string* payload) override;
private:
DISALLOW_COPY_AND_ASSIGN(AtomResourceDispatcherHostDelegate);
};
} // namespace atom
#endif // ATOM_BROWSER_ATOM_RESOURCE_DISPATCHER_HOST_DELEGATE_H_

View File

@@ -1,62 +0,0 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/atom_speech_recognition_manager_delegate.h"
#include <string>
#include <utility>
#include "base/callback.h"
namespace atom {
AtomSpeechRecognitionManagerDelegate::AtomSpeechRecognitionManagerDelegate() {}
AtomSpeechRecognitionManagerDelegate::~AtomSpeechRecognitionManagerDelegate() {}
void AtomSpeechRecognitionManagerDelegate::OnRecognitionStart(int session_id) {}
void AtomSpeechRecognitionManagerDelegate::OnAudioStart(int session_id) {}
void AtomSpeechRecognitionManagerDelegate::OnEnvironmentEstimationComplete(
int session_id) {}
void AtomSpeechRecognitionManagerDelegate::OnSoundStart(int session_id) {}
void AtomSpeechRecognitionManagerDelegate::OnSoundEnd(int session_id) {}
void AtomSpeechRecognitionManagerDelegate::OnAudioEnd(int session_id) {}
void AtomSpeechRecognitionManagerDelegate::OnRecognitionEnd(int session_id) {}
void AtomSpeechRecognitionManagerDelegate::OnRecognitionResults(
int session_id,
const std::vector<blink::mojom::SpeechRecognitionResultPtr>& results) {}
void AtomSpeechRecognitionManagerDelegate::OnRecognitionError(
int session_id,
const blink::mojom::SpeechRecognitionError& error) {}
void AtomSpeechRecognitionManagerDelegate::OnAudioLevelsChange(
int session_id,
float volume,
float noise_volume) {}
void AtomSpeechRecognitionManagerDelegate::CheckRecognitionIsAllowed(
int session_id,
base::OnceCallback<void(bool ask_user, bool is_allowed)> callback) {
std::move(callback).Run(true, true);
}
content::SpeechRecognitionEventListener*
AtomSpeechRecognitionManagerDelegate::GetEventListener() {
return this;
}
bool AtomSpeechRecognitionManagerDelegate::FilterProfanities(
int render_process_id) {
return false;
}
} // namespace atom

View File

@@ -1,43 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_ATOM_WEB_UI_CONTROLLER_FACTORY_H_
#define ATOM_BROWSER_ATOM_WEB_UI_CONTROLLER_FACTORY_H_
#include <memory>
#include "base/macros.h"
#include "base/memory/singleton.h"
#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_controller_factory.h"
namespace atom {
class AtomWebUIControllerFactory : public content::WebUIControllerFactory {
public:
static AtomWebUIControllerFactory* GetInstance();
AtomWebUIControllerFactory();
~AtomWebUIControllerFactory() override;
// content::WebUIControllerFactory:
content::WebUI::TypeID GetWebUIType(content::BrowserContext* browser_context,
const GURL& url) const override;
bool UseWebUIForURL(content::BrowserContext* browser_context,
const GURL& url) const override;
bool UseWebUIBindingsForURL(content::BrowserContext* browser_context,
const GURL& url) const override;
std::unique_ptr<content::WebUIController> CreateWebUIControllerForURL(
content::WebUI* web_ui,
const GURL& url) const override;
private:
friend struct base::DefaultSingletonTraits<AtomWebUIControllerFactory>;
DISALLOW_COPY_AND_ASSIGN(AtomWebUIControllerFactory);
};
} // namespace atom
#endif // ATOM_BROWSER_ATOM_WEB_UI_CONTROLLER_FACTORY_H_

View File

@@ -1,145 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/browser.h"
#include <fcntl.h>
#include <stdlib.h>
#include "atom/browser/native_window.h"
#include "atom/browser/window_list.h"
#include "atom/common/atom_version.h"
#include "base/command_line.h"
#include "base/environment.h"
#include "base/process/launch.h"
#include "brightray/common/application_info.h"
#if defined(USE_X11)
#include "chrome/browser/ui/libgtkui/gtk_util.h"
#include "chrome/browser/ui/libgtkui/unity_service.h"
#endif
namespace atom {
const char kXdgSettings[] = "xdg-settings";
const char kXdgSettingsDefaultSchemeHandler[] = "default-url-scheme-handler";
bool LaunchXdgUtility(const std::vector<std::string>& argv, int* exit_code) {
*exit_code = EXIT_FAILURE;
int devnull = open("/dev/null", O_RDONLY);
if (devnull < 0)
return false;
base::LaunchOptions options;
options.fds_to_remap.push_back(std::make_pair(devnull, STDIN_FILENO));
base::Process process = base::LaunchProcess(argv, options);
close(devnull);
if (!process.IsValid())
return false;
return process.WaitForExit(exit_code);
}
bool SetDefaultWebClient(const std::string& protocol) {
std::unique_ptr<base::Environment> env(base::Environment::Create());
std::vector<std::string> argv;
argv.push_back(kXdgSettings);
argv.push_back("set");
if (!protocol.empty()) {
argv.push_back(kXdgSettingsDefaultSchemeHandler);
argv.push_back(protocol);
}
argv.push_back(libgtkui::GetDesktopName(env.get()));
int exit_code;
bool ran_ok = LaunchXdgUtility(argv, &exit_code);
return ran_ok && exit_code == EXIT_SUCCESS;
}
void Browser::Focus() {
// Focus on the first visible window.
for (auto* const window : WindowList::GetWindows()) {
if (window->IsVisible()) {
window->Focus(true);
break;
}
}
}
void Browser::AddRecentDocument(const base::FilePath& path) {}
void Browser::ClearRecentDocuments() {}
void Browser::SetAppUserModelID(const base::string16& name) {}
bool Browser::SetAsDefaultProtocolClient(const std::string& protocol,
mate::Arguments* args) {
return SetDefaultWebClient(protocol);
}
bool Browser::IsDefaultProtocolClient(const std::string& protocol,
mate::Arguments* args) {
std::unique_ptr<base::Environment> env(base::Environment::Create());
if (protocol.empty())
return false;
std::vector<std::string> argv;
argv.push_back(kXdgSettings);
argv.push_back("check");
argv.push_back(kXdgSettingsDefaultSchemeHandler);
argv.push_back(protocol);
argv.push_back(libgtkui::GetDesktopName(env.get()));
std::string reply;
int success_code;
bool ran_ok = base::GetAppOutputWithExitCode(base::CommandLine(argv), &reply,
&success_code);
if (!ran_ok || success_code != EXIT_SUCCESS)
return false;
// Allow any reply that starts with "yes".
return base::StartsWith(reply, "yes", base::CompareCase::SENSITIVE) ? true
: false;
}
// Todo implement
bool Browser::RemoveAsDefaultProtocolClient(const std::string& protocol,
mate::Arguments* args) {
return false;
}
bool Browser::SetBadgeCount(int count) {
if (IsUnityRunning()) {
unity::SetDownloadCount(count);
badge_count_ = count;
return true;
} else {
return false;
}
}
void Browser::SetLoginItemSettings(LoginItemSettings settings) {}
Browser::LoginItemSettings Browser::GetLoginItemSettings(
const LoginItemSettings& options) {
return LoginItemSettings();
}
std::string Browser::GetExecutableFileVersion() const {
return brightray::GetApplicationVersion();
}
std::string Browser::GetExecutableFileProductName() const {
return brightray::GetApplicationName();
}
bool Browser::IsUnityRunning() {
return unity::IsRunning();
}
} // namespace atom

View File

@@ -1,33 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/child_web_contents_tracker.h"
#include <unordered_set>
namespace atom {
namespace {
std::unordered_set<content::WebContents*> g_child_web_contents;
} // namespace
ChildWebContentsTracker::ChildWebContentsTracker(
content::WebContents* web_contents)
: content::WebContentsObserver(web_contents) {
g_child_web_contents.insert(web_contents);
}
bool ChildWebContentsTracker::IsChildWebContents(
content::WebContents* web_contents) {
return g_child_web_contents.find(web_contents) != g_child_web_contents.end();
}
void ChildWebContentsTracker::WebContentsDestroyed() {
g_child_web_contents.erase(web_contents());
delete this;
}
} // namespace atom

View File

@@ -1,25 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_CHILD_WEB_CONTENTS_TRACKER_H_
#define ATOM_BROWSER_CHILD_WEB_CONTENTS_TRACKER_H_
#include "content/public/browser/web_contents_observer.h"
namespace atom {
// ChildWebContentsTracker tracks child WebContents
// created by native `window.open()`
class ChildWebContentsTracker : public content::WebContentsObserver {
public:
explicit ChildWebContentsTracker(content::WebContents* web_contents);
static bool IsChildWebContents(content::WebContents* web_contents);
protected:
void WebContentsDestroyed() override;
};
} // namespace atom
#endif // ATOM_BROWSER_CHILD_WEB_CONTENTS_TRACKER_H_

View File

@@ -1,48 +0,0 @@
// Copyright (c) 2018 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_COOKIE_CHANGE_NOTIFIER_H_
#define ATOM_BROWSER_COOKIE_CHANGE_NOTIFIER_H_
#include <memory>
#include "base/callback_list.h"
#include "base/macros.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
namespace atom {
class AtomBrowserContext;
struct CookieDetails;
// Sends cookie-change notifications on the UI thread.
class CookieChangeNotifier : public network::mojom::CookieChangeListener {
public:
explicit CookieChangeNotifier(AtomBrowserContext* browser_context);
~CookieChangeNotifier() override;
// Register callbacks that needs to notified on any cookie store changes.
std::unique_ptr<base::CallbackList<void(const CookieDetails*)>::Subscription>
RegisterCookieChangeCallback(
const base::Callback<void(const CookieDetails*)>& cb);
private:
void StartListening();
void OnConnectionError();
// network::mojom::CookieChangeListener implementation.
void OnCookieChange(const net::CanonicalCookie& cookie,
network::mojom::CookieChangeCause cause) override;
AtomBrowserContext* browser_context_;
base::CallbackList<void(const CookieDetails*)> cookie_change_sub_list_;
mojo::Binding<network::mojom::CookieChangeListener> binding_;
DISALLOW_COPY_AND_ASSIGN(CookieChangeNotifier);
};
} // namespace atom
#endif // ATOM_BROWSER_COOKIE_CHANGE_NOTIFIER_H_

View File

@@ -1,118 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/io_thread.h"
#include "atom/common/options_switches.h"
#include "components/net_log/chrome_net_log.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/network_service_instance.h"
#include "net/proxy_resolution/proxy_resolution_service.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_builder.h"
#include "net/url_request/url_request_context_getter.h"
#include "services/network/network_service.h"
#if defined(USE_NSS_CERTS)
#include "net/cert_net/nss_ocsp.h"
#endif
#if defined(OS_LINUX) || defined(OS_MACOSX)
#include "net/cert/cert_net_fetcher.h"
#include "net/cert_net/cert_net_fetcher_impl.h"
#endif
using content::BrowserThread;
namespace atom {
namespace {
network::mojom::HttpAuthStaticParamsPtr CreateHttpAuthStaticParams() {
network::mojom::HttpAuthStaticParamsPtr auth_static_params =
network::mojom::HttpAuthStaticParams::New();
auth_static_params->supported_schemes = {"basic", "digest", "ntlm",
"negotiate"};
return auth_static_params;
}
network::mojom::HttpAuthDynamicParamsPtr CreateHttpAuthDynamicParams(
const base::CommandLine& command_line) {
network::mojom::HttpAuthDynamicParamsPtr auth_dynamic_params =
network::mojom::HttpAuthDynamicParams::New();
auth_dynamic_params->server_whitelist =
command_line.GetSwitchValueASCII(switches::kAuthServerWhitelist);
auth_dynamic_params->delegate_whitelist = command_line.GetSwitchValueASCII(
switches::kAuthNegotiateDelegateWhitelist);
return auth_dynamic_params;
}
} // namespace
IOThread::IOThread(net_log::ChromeNetLog* net_log) : net_log_(net_log) {
BrowserThread::SetIOThreadDelegate(this);
}
IOThread::~IOThread() {
BrowserThread::SetIOThreadDelegate(nullptr);
}
void IOThread::Init() {
// Create the network service, so that shared host resolver
// gets created which is required to set the auth preferences below.
auto& command_line = *base::CommandLine::ForCurrentProcess();
auto* network_service = content::GetNetworkServiceImpl();
network_service->SetUpHttpAuth(CreateHttpAuthStaticParams());
network_service->ConfigureHttpAuthPrefs(
CreateHttpAuthDynamicParams(command_line));
net::URLRequestContextBuilder builder;
// TODO(deepak1556): We need to respoect user proxy configurations,
// the following initialization has to happen before any request
// contexts are utilized by the io thread, so that proper cert validation
// take place, solutions:
// 1) Use the request context from default partition, but since
// an app can completely run on a custom session without ever creating
// the default session, we will have to force create the default session
// in those scenarios.
// 2) Add a new api on app module that sets the proxy configuration
// for the global requests, like the cert fetchers below and
// geolocation requests.
// 3) There is also ongoing work in upstream which will eventually allow
// localizing these global fetchers to their own URLRequestContexts.
builder.set_proxy_resolution_service(
net::ProxyResolutionService::CreateDirect());
url_request_context_ = builder.Build();
url_request_context_getter_ = new net::TrivialURLRequestContextGetter(
url_request_context_.get(), base::ThreadTaskRunnerHandle::Get());
#if defined(USE_NSS_CERTS)
net::SetURLRequestContextForNSSHttpIO(url_request_context_.get());
#endif
#if defined(OS_LINUX) || defined(OS_MACOSX)
net::SetGlobalCertNetFetcher(
net::CreateCertNetFetcher(url_request_context_.get()));
#endif
}
void IOThread::CleanUp() {
#if defined(USE_NSS_CERTS)
net::SetURLRequestContextForNSSHttpIO(nullptr);
#endif
#if defined(OS_LINUX) || defined(OS_MACOSX)
net::ShutdownGlobalCertNetFetcher();
#endif
// Explicitly release before the IO thread gets destroyed.
url_request_context_.reset();
url_request_context_getter_ = nullptr;
if (net_log_)
net_log_->ShutDownBeforeTaskScheduler();
}
} // namespace atom

View File

@@ -1,51 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_IO_THREAD_H_
#define ATOM_BROWSER_IO_THREAD_H_
#include <memory>
#include "base/macros.h"
#include "base/memory/scoped_refptr.h"
#include "content/public/browser/browser_thread_delegate.h"
namespace net {
class URLRequestContext;
class URLRequestContextGetter;
} // namespace net
namespace net_log {
class ChromeNetLog;
}
namespace atom {
class IOThread : public content::BrowserThreadDelegate {
public:
explicit IOThread(net_log::ChromeNetLog* net_log);
~IOThread() override;
net::URLRequestContextGetter* GetRequestContext() {
return url_request_context_getter_.get();
}
protected:
// BrowserThreadDelegate Implementation, runs on the IO thread.
void Init() override;
void CleanUp() override;
private:
// The NetLog is owned by the browser process, to allow logging from other
// threads during shutdown, but is used most frequently on the IOThread.
net_log::ChromeNetLog* net_log_;
std::unique_ptr<net::URLRequestContext> url_request_context_;
scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
DISALLOW_COPY_AND_ASSIGN(IOThread);
};
} // namespace atom
#endif // ATOM_BROWSER_IO_THREAD_H_

View File

@@ -1,29 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/loader/layered_resource_handler.h"
#include <memory>
#include <utility>
namespace atom {
LayeredResourceHandler::LayeredResourceHandler(
net::URLRequest* request,
std::unique_ptr<content::ResourceHandler> next_handler,
Delegate* delegate)
: content::LayeredResourceHandler(request, std::move(next_handler)),
delegate_(delegate) {}
LayeredResourceHandler::~LayeredResourceHandler() {}
void LayeredResourceHandler::OnResponseStarted(
network::ResourceResponse* response,
std::unique_ptr<content::ResourceController> controller) {
if (delegate_)
delegate_->OnResponseStarted(response);
next_handler_->OnResponseStarted(response, std::move(controller));
}
} // namespace atom

View File

@@ -1,44 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_LOADER_LAYERED_RESOURCE_HANDLER_H_
#define ATOM_BROWSER_LOADER_LAYERED_RESOURCE_HANDLER_H_
#include <memory>
#include "content/browser/loader/layered_resource_handler.h"
#include "services/network/public/cpp/resource_response.h"
namespace atom {
// Resource handler that notifies on various stages of a resource request.
class LayeredResourceHandler : public content::LayeredResourceHandler {
public:
class Delegate {
public:
Delegate() {}
virtual ~Delegate() {}
virtual void OnResponseStarted(network::ResourceResponse* response) = 0;
};
LayeredResourceHandler(net::URLRequest* request,
std::unique_ptr<content::ResourceHandler> next_handler,
Delegate* delegate);
~LayeredResourceHandler() override;
// content::LayeredResourceHandler:
void OnResponseStarted(
network::ResourceResponse* response,
std::unique_ptr<content::ResourceController> controller) override;
private:
Delegate* delegate_;
DISALLOW_COPY_AND_ASSIGN(LayeredResourceHandler);
};
} // namespace atom
#endif // ATOM_BROWSER_LOADER_LAYERED_RESOURCE_HANDLER_H_

View File

@@ -1,94 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/login_handler.h"
#include <memory>
#include <utility>
#include "atom/browser/browser.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "base/values.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
#include "net/base/auth.h"
using content::BrowserThread;
namespace atom {
LoginHandler::LoginHandler(
net::URLRequest* request,
const net::AuthChallengeInfo& auth_info,
net::NetworkDelegate::AuthCallback callback,
net::AuthCredentials* credentials,
const content::ResourceRequestInfo* resource_request_info)
: credentials_(credentials),
auth_info_(&auth_info),
auth_callback_(std::move(callback)),
weak_factory_(this) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
std::unique_ptr<base::DictionaryValue> request_details(
new base::DictionaryValue);
FillRequestDetails(request_details.get(), request);
web_contents_getter_ =
resource_request_info->GetWebContentsGetterForRequest();
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::BindOnce(&Browser::RequestLogin, base::Unretained(Browser::Get()),
base::RetainedRef(this), std::move(request_details)));
}
LoginHandler::~LoginHandler() {}
void LoginHandler::Login(const base::string16& username,
const base::string16& password) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&LoginHandler::DoLogin, weak_factory_.GetWeakPtr(),
username, password));
}
void LoginHandler::CancelAuth() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&LoginHandler::DoCancelAuth, weak_factory_.GetWeakPtr()));
}
void LoginHandler::NotifyRequestDestroyed() {
auth_callback_.Reset();
credentials_ = nullptr;
weak_factory_.InvalidateWeakPtrs();
}
content::WebContents* LoginHandler::GetWebContents() const {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
return web_contents_getter_.Run();
}
void LoginHandler::DoCancelAuth() {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (!auth_callback_.is_null())
std::move(auth_callback_)
.Run(net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_CANCEL_AUTH);
}
void LoginHandler::DoLogin(const base::string16& username,
const base::string16& password) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (!auth_callback_.is_null()) {
credentials_->Set(username, password);
std::move(auth_callback_)
.Run(net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_SET_AUTH);
}
}
} // namespace atom

View File

@@ -1,75 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_LOGIN_HANDLER_H_
#define ATOM_BROWSER_LOGIN_HANDLER_H_
#include "base/callback.h"
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "base/sequenced_task_runner_helpers.h"
#include "base/strings/string16.h"
#include "content/public/browser/resource_request_info.h"
#include "net/base/network_delegate.h"
namespace content {
class WebContents;
}
namespace atom {
// Handles the HTTP basic auth, must be created on IO thread.
class LoginHandler : public base::RefCountedThreadSafe<LoginHandler> {
public:
LoginHandler(net::URLRequest* request,
const net::AuthChallengeInfo& auth_info,
net::NetworkDelegate::AuthCallback callback,
net::AuthCredentials* credentials,
const content::ResourceRequestInfo* resource_request_info);
// The auth is cancelled, must be called on UI thread.
void CancelAuth();
// The URLRequest associated with the auth is destroyed.
void NotifyRequestDestroyed();
// Login with |username| and |password|, must be called on UI thread.
void Login(const base::string16& username, const base::string16& password);
// Returns the WebContents associated with the request, must be called on UI
// thread.
content::WebContents* GetWebContents() const;
const net::AuthChallengeInfo* auth_info() const { return auth_info_.get(); }
private:
friend class base::RefCountedThreadSafe<LoginHandler>;
friend class base::DeleteHelper<LoginHandler>;
~LoginHandler();
// Must be called on IO thread.
void DoCancelAuth();
void DoLogin(const base::string16& username, const base::string16& password);
// Credentials to be used for the auth.
net::AuthCredentials* credentials_;
// Who/where/what asked for the authentication.
scoped_refptr<const net::AuthChallengeInfo> auth_info_;
// WebContents associated with the login request.
content::ResourceRequestInfo::WebContentsGetter web_contents_getter_;
// Called with preferred value of net::NetworkDelegate::AuthRequiredResponse.
net::NetworkDelegate::AuthCallback auth_callback_;
base::WeakPtrFactory<LoginHandler> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(LoginHandler);
};
} // namespace atom
#endif // ATOM_BROWSER_LOGIN_HANDLER_H_

View File

@@ -1,17 +0,0 @@
// Copyright (c) 2013 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#import <Cocoa/Cocoa.h>
#import "atom/browser/ui/cocoa/atom_menu_controller.h"
@interface AtomApplicationDelegate : NSObject <NSApplicationDelegate> {
@private
base::scoped_nsobject<AtomMenuController> menu_controller_;
}
// Sets the menu that will be returned in "applicationDockMenu:".
- (void)setApplicationDockMenu:(atom::AtomMenuModel*)model;
@end

View File

@@ -1,40 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/native_browser_view_views.h"
#include "brightray/browser/inspectable_web_contents_view.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/views/background.h"
#include "ui/views/view.h"
namespace atom {
NativeBrowserViewViews::NativeBrowserViewViews(
brightray::InspectableWebContents* inspectable_web_contents)
: NativeBrowserView(inspectable_web_contents) {}
NativeBrowserViewViews::~NativeBrowserViewViews() {}
void NativeBrowserViewViews::SetAutoResizeFlags(uint8_t flags) {
auto_resize_flags_ = flags;
}
void NativeBrowserViewViews::SetBounds(const gfx::Rect& bounds) {
auto* view = GetInspectableWebContentsView()->GetView();
view->SetBoundsRect(bounds);
}
void NativeBrowserViewViews::SetBackgroundColor(SkColor color) {
auto* view = GetInspectableWebContentsView()->GetView();
view->SetBackground(views::CreateSolidBackground(color));
}
// static
NativeBrowserView* NativeBrowserView::Create(
brightray::InspectableWebContents* inspectable_web_contents) {
return new NativeBrowserViewViews(inspectable_web_contents);
}
} // namespace atom

View File

@@ -1,31 +0,0 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_NATIVE_BROWSER_VIEW_VIEWS_H_
#define ATOM_BROWSER_NATIVE_BROWSER_VIEW_VIEWS_H_
#include "atom/browser/native_browser_view.h"
namespace atom {
class NativeBrowserViewViews : public NativeBrowserView {
public:
explicit NativeBrowserViewViews(
brightray::InspectableWebContents* inspectable_web_contents);
~NativeBrowserViewViews() override;
uint8_t GetAutoResizeFlags() { return auto_resize_flags_; }
void SetAutoResizeFlags(uint8_t flags) override;
void SetBounds(const gfx::Rect& bounds) override;
void SetBackgroundColor(SkColor color) override;
private:
uint8_t auto_resize_flags_;
DISALLOW_COPY_AND_ASSIGN(NativeBrowserViewViews);
};
} // namespace atom
#endif // ATOM_BROWSER_NATIVE_BROWSER_VIEW_VIEWS_H_

View File

@@ -1,25 +0,0 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/net/about_protocol_handler.h"
#include "atom/browser/net/url_request_about_job.h"
namespace atom {
AboutProtocolHandler::AboutProtocolHandler() {}
AboutProtocolHandler::~AboutProtocolHandler() {}
net::URLRequestJob* AboutProtocolHandler::MaybeCreateJob(
net::URLRequest* request,
net::NetworkDelegate* network_delegate) const {
return new URLRequestAboutJob(request, network_delegate);
}
bool AboutProtocolHandler::IsSafeRedirectTarget(const GURL& location) const {
return false;
}
} // namespace atom

View File

@@ -1,29 +0,0 @@
// Copyright (c) 2016 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_NET_ABOUT_PROTOCOL_HANDLER_H_
#define ATOM_BROWSER_NET_ABOUT_PROTOCOL_HANDLER_H_
#include "net/url_request/url_request_job_factory.h"
namespace atom {
class AboutProtocolHandler : public net::URLRequestJobFactory::ProtocolHandler {
public:
AboutProtocolHandler();
~AboutProtocolHandler() override;
// net::URLRequestJobFactory::ProtocolHandler:
net::URLRequestJob* MaybeCreateJob(
net::URLRequest* request,
net::NetworkDelegate* network_delegate) const override;
bool IsSafeRedirectTarget(const GURL& location) const override;
private:
DISALLOW_COPY_AND_ASSIGN(AboutProtocolHandler);
};
} // namespace atom
#endif // ATOM_BROWSER_NET_ABOUT_PROTOCOL_HANDLER_H_

View File

@@ -1,34 +0,0 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/net/asar/asar_protocol_handler.h"
#include "atom/browser/net/asar/url_request_asar_job.h"
#include "base/task_runner.h"
#include "net/base/filename_util.h"
#include "net/base/net_errors.h"
namespace asar {
AsarProtocolHandler::AsarProtocolHandler(
const scoped_refptr<base::TaskRunner>& file_task_runner)
: file_task_runner_(file_task_runner) {}
AsarProtocolHandler::~AsarProtocolHandler() {}
net::URLRequestJob* AsarProtocolHandler::MaybeCreateJob(
net::URLRequest* request,
net::NetworkDelegate* network_delegate) const {
base::FilePath full_path;
net::FileURLToFilePath(request->url(), &full_path);
auto* job = new URLRequestAsarJob(request, network_delegate);
job->Initialize(file_task_runner_, full_path);
return job;
}
bool AsarProtocolHandler::IsSafeRedirectTarget(const GURL& location) const {
return false;
}
} // namespace asar

View File

@@ -1,37 +0,0 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_NET_ASAR_ASAR_PROTOCOL_HANDLER_H_
#define ATOM_BROWSER_NET_ASAR_ASAR_PROTOCOL_HANDLER_H_
#include "base/memory/ref_counted.h"
#include "net/url_request/url_request_job_factory.h"
namespace base {
class TaskRunner;
}
namespace asar {
class AsarProtocolHandler : public net::URLRequestJobFactory::ProtocolHandler {
public:
explicit AsarProtocolHandler(
const scoped_refptr<base::TaskRunner>& file_task_runner);
~AsarProtocolHandler() override;
// net::URLRequestJobFactory::ProtocolHandler:
net::URLRequestJob* MaybeCreateJob(
net::URLRequest* request,
net::NetworkDelegate* network_delegate) const override;
bool IsSafeRedirectTarget(const GURL& location) const override;
private:
const scoped_refptr<base::TaskRunner> file_task_runner_;
DISALLOW_COPY_AND_ASSIGN(AsarProtocolHandler);
};
} // namespace asar
#endif // ATOM_BROWSER_NET_ASAR_ASAR_PROTOCOL_HANDLER_H_

View File

@@ -1,337 +0,0 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/net/asar/url_request_asar_job.h"
#include <string>
#include <utility>
#include <vector>
#include "atom/common/asar/archive.h"
#include "atom/common/asar/asar_util.h"
#include "atom/common/atom_constants.h"
#include "base/bind.h"
#include "base/files/file_util.h"
#include "base/strings/string_util.h"
#include "base/synchronization/lock.h"
#include "base/task_runner.h"
#include "base/threading/thread_task_runner_handle.h"
#include "net/base/file_stream.h"
#include "net/base/filename_util.h"
#include "net/base/io_buffer.h"
#include "net/base/load_flags.h"
#include "net/base/mime_util.h"
#include "net/base/net_errors.h"
#include "net/filter/gzip_source_stream.h"
#include "net/http/http_util.h"
#include "net/url_request/url_request_status.h"
#if defined(OS_WIN)
#include "base/win/shortcut.h"
#endif
namespace asar {
URLRequestAsarJob::FileMetaInfo::FileMetaInfo() = default;
URLRequestAsarJob::URLRequestAsarJob(net::URLRequest* request,
net::NetworkDelegate* network_delegate)
: net::URLRequestJob(request, network_delegate), weak_ptr_factory_(this) {}
URLRequestAsarJob::~URLRequestAsarJob() {}
void URLRequestAsarJob::Initialize(
const scoped_refptr<base::TaskRunner> file_task_runner,
const base::FilePath& file_path) {
// Determine whether it is an asar file.
base::FilePath asar_path, relative_path;
if (!GetAsarArchivePath(file_path, &asar_path, &relative_path)) {
InitializeFileJob(file_task_runner, file_path);
return;
}
std::shared_ptr<Archive> archive = GetOrCreateAsarArchive(asar_path);
Archive::FileInfo file_info;
if (!archive || !archive->GetFileInfo(relative_path, &file_info)) {
type_ = TYPE_ERROR;
return;
}
if (file_info.unpacked) {
base::FilePath real_path;
archive->CopyFileOut(relative_path, &real_path);
InitializeFileJob(file_task_runner, real_path);
return;
}
InitializeAsarJob(file_task_runner, archive, relative_path, file_info);
}
void URLRequestAsarJob::InitializeAsarJob(
const scoped_refptr<base::TaskRunner> file_task_runner,
std::shared_ptr<Archive> archive,
const base::FilePath& file_path,
const Archive::FileInfo& file_info) {
type_ = TYPE_ASAR;
file_task_runner_ = file_task_runner;
stream_.reset(new net::FileStream(file_task_runner_));
archive_ = archive;
file_path_ = file_path;
file_info_ = file_info;
}
void URLRequestAsarJob::InitializeFileJob(
const scoped_refptr<base::TaskRunner> file_task_runner,
const base::FilePath& file_path) {
type_ = TYPE_FILE;
file_task_runner_ = file_task_runner;
stream_.reset(new net::FileStream(file_task_runner_));
file_path_ = file_path;
}
void URLRequestAsarJob::Start() {
if (type_ == TYPE_ASAR || type_ == TYPE_FILE) {
auto* meta_info = new FileMetaInfo();
if (type_ == TYPE_ASAR) {
meta_info->file_path = archive_->path();
meta_info->file_exists = true;
meta_info->is_directory = false;
meta_info->file_size = file_info_.size;
}
file_task_runner_->PostTaskAndReply(
FROM_HERE,
base::BindOnce(&URLRequestAsarJob::FetchMetaInfo, file_path_, type_,
base::Unretained(meta_info)),
base::BindOnce(&URLRequestAsarJob::DidFetchMetaInfo,
weak_ptr_factory_.GetWeakPtr(), base::Owned(meta_info)));
} else {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(&URLRequestAsarJob::DidOpen,
weak_ptr_factory_.GetWeakPtr(),
net::ERR_FILE_NOT_FOUND));
}
}
void URLRequestAsarJob::Kill() {
stream_.reset();
weak_ptr_factory_.InvalidateWeakPtrs();
URLRequestJob::Kill();
}
int URLRequestAsarJob::ReadRawData(net::IOBuffer* dest, int dest_size) {
if (remaining_bytes_ < dest_size)
dest_size = static_cast<int>(remaining_bytes_);
// If we should copy zero bytes because |remaining_bytes_| is zero, short
// circuit here.
if (!dest_size)
return 0;
int rv = stream_->Read(
dest, dest_size,
base::Bind(&URLRequestAsarJob::DidRead, weak_ptr_factory_.GetWeakPtr(),
WrapRefCounted(dest)));
if (rv >= 0) {
remaining_bytes_ -= rv;
DCHECK_GE(remaining_bytes_, 0);
}
return rv;
}
bool URLRequestAsarJob::IsRedirectResponse(GURL* location,
int* http_status_code,
bool* insecure_scheme_was_upgraded) {
if (type_ != TYPE_FILE)
return false;
#if defined(OS_WIN)
// Follow a Windows shortcut.
// We just resolve .lnk file, ignore others.
if (!base::LowerCaseEqualsASCII(file_path_.Extension(), ".lnk"))
return false;
base::FilePath new_path = file_path_;
bool resolved;
resolved = base::win::ResolveShortcut(new_path, &new_path, NULL);
// If shortcut is not resolved succesfully, do not redirect.
if (!resolved)
return false;
*location = net::FilePathToFileURL(new_path);
*http_status_code = 301;
*insecure_scheme_was_upgraded = false;
return true;
#else
return false;
#endif
}
std::unique_ptr<net::SourceStream> URLRequestAsarJob::SetUpSourceStream() {
std::unique_ptr<net::SourceStream> source =
net::URLRequestJob::SetUpSourceStream();
// Bug 9936 - .svgz files needs to be decompressed.
return base::LowerCaseEqualsASCII(file_path_.Extension(), ".svgz")
? net::GzipSourceStream::Create(std::move(source),
net::SourceStream::TYPE_GZIP)
: std::move(source);
}
bool URLRequestAsarJob::GetMimeType(std::string* mime_type) const {
if (meta_info_.mime_type_result) {
*mime_type = meta_info_.mime_type;
return true;
}
return false;
}
void URLRequestAsarJob::SetExtraRequestHeaders(
const net::HttpRequestHeaders& headers) {
std::string range_header;
if (headers.GetHeader(net::HttpRequestHeaders::kRange, &range_header)) {
// This job only cares about the Range header. This method stashes the value
// for later use in DidOpen(), which is responsible for some of the range
// validation as well. NotifyStartError is not legal to call here since
// the job has not started.
std::vector<net::HttpByteRange> ranges;
if (net::HttpUtil::ParseRangeHeader(range_header, &ranges)) {
if (ranges.size() == 1) {
byte_range_ = ranges[0];
} else {
range_parse_result_ = net::ERR_REQUEST_RANGE_NOT_SATISFIABLE;
}
}
}
}
int URLRequestAsarJob::GetResponseCode() const {
// Request Job gets created only if path exists.
return 200;
}
void URLRequestAsarJob::GetResponseInfo(net::HttpResponseInfo* info) {
std::string status("HTTP/1.1 200 OK");
auto* headers = new net::HttpResponseHeaders(status);
headers->AddHeader(atom::kCORSHeader);
info->headers = headers;
}
void URLRequestAsarJob::FetchMetaInfo(const base::FilePath& file_path,
JobType type,
FileMetaInfo* meta_info) {
if (type == TYPE_FILE) {
base::File::Info file_info;
meta_info->file_exists = base::GetFileInfo(file_path, &file_info);
if (meta_info->file_exists) {
meta_info->file_path = file_path;
meta_info->file_size = file_info.size;
meta_info->is_directory = file_info.is_directory;
}
}
// We use GetWellKnownMimeTypeFromExtension() to ensure that configurations
// that may have been set by other programs on a user's machine don't affect
// the mime type returned (in particular, JS should always be
// (application/javascript). See https://crbug.com/797712. Using an accurate
// mime type is necessary at least for modules and sw, which enforce strict
// mime type requirements.
// TODO(deepak1556): Revert this when sw support is removed for file scheme.
base::FilePath::StringType file_extension = file_path.Extension();
if (file_extension.empty()) {
meta_info->mime_type_result = false;
} else {
meta_info->mime_type_result = net::GetWellKnownMimeTypeFromExtension(
file_extension.substr(1), &meta_info->mime_type);
}
}
void URLRequestAsarJob::DidFetchMetaInfo(const FileMetaInfo* meta_info) {
meta_info_ = *meta_info;
if (!meta_info_.file_exists || meta_info_.is_directory) {
DidOpen(net::ERR_FILE_NOT_FOUND);
return;
}
int flags =
base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
int rv = stream_->Open(
meta_info_.file_path, flags,
base::Bind(&URLRequestAsarJob::DidOpen, weak_ptr_factory_.GetWeakPtr()));
if (rv != net::ERR_IO_PENDING)
DidOpen(rv);
}
void URLRequestAsarJob::DidOpen(int result) {
if (result != net::OK) {
NotifyStartError(
net::URLRequestStatus(net::URLRequestStatus::FAILED, result));
return;
}
if (range_parse_result_ != net::OK) {
NotifyStartError(net::URLRequestStatus(net::URLRequestStatus::FAILED,
range_parse_result_));
return;
}
int64_t file_size, read_offset;
if (type_ == TYPE_ASAR) {
file_size = file_info_.size;
read_offset = file_info_.offset;
} else {
file_size = meta_info_.file_size;
read_offset = 0;
}
if (!byte_range_.ComputeBounds(file_size)) {
NotifyStartError(net::URLRequestStatus(
net::URLRequestStatus::FAILED, net::ERR_REQUEST_RANGE_NOT_SATISFIABLE));
return;
}
remaining_bytes_ =
byte_range_.last_byte_position() - byte_range_.first_byte_position() + 1;
seek_offset_ = byte_range_.first_byte_position() + read_offset;
if (remaining_bytes_ > 0 && seek_offset_ != 0) {
int rv =
stream_->Seek(seek_offset_, base::Bind(&URLRequestAsarJob::DidSeek,
weak_ptr_factory_.GetWeakPtr()));
if (rv != net::ERR_IO_PENDING) {
// stream_->Seek() failed, so pass an intentionally erroneous value
// into DidSeek().
DidSeek(-1);
}
} else {
// We didn't need to call stream_->Seek() at all, so we pass to DidSeek()
// the value that would mean seek success. This way we skip the code
// handling seek failure.
DidSeek(seek_offset_);
}
}
void URLRequestAsarJob::DidSeek(int64_t result) {
if (result != seek_offset_) {
NotifyStartError(net::URLRequestStatus(
net::URLRequestStatus::FAILED, net::ERR_REQUEST_RANGE_NOT_SATISFIABLE));
return;
}
set_expected_content_size(remaining_bytes_);
NotifyHeadersComplete();
}
void URLRequestAsarJob::DidRead(scoped_refptr<net::IOBuffer> buf, int result) {
if (result >= 0) {
remaining_bytes_ -= result;
DCHECK_GE(remaining_bytes_, 0);
}
buf = nullptr;
ReadRawDataComplete(result);
}
} // namespace asar

View File

@@ -1,137 +0,0 @@
// Copyright (c) 2014 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_NET_ASAR_URL_REQUEST_ASAR_JOB_H_
#define ATOM_BROWSER_NET_ASAR_URL_REQUEST_ASAR_JOB_H_
#include <memory>
#include <string>
#include "atom/browser/net/js_asker.h"
#include "atom/common/asar/archive.h"
#include "base/files/file_path.h"
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "net/http/http_byte_range.h"
#include "net/url_request/url_request_job.h"
namespace base {
class TaskRunner;
}
namespace net {
class FileStream;
}
namespace asar {
// Createa a request job according to the file path.
net::URLRequestJob* CreateJobFromPath(
const base::FilePath& full_path,
net::URLRequest* request,
net::NetworkDelegate* network_delegate,
const scoped_refptr<base::TaskRunner> file_task_runner);
class URLRequestAsarJob : public net::URLRequestJob {
public:
URLRequestAsarJob(net::URLRequest* request,
net::NetworkDelegate* network_delegate);
void Initialize(const scoped_refptr<base::TaskRunner> file_task_runner,
const base::FilePath& file_path);
protected:
~URLRequestAsarJob() override;
void InitializeAsarJob(const scoped_refptr<base::TaskRunner> file_task_runner,
std::shared_ptr<Archive> archive,
const base::FilePath& file_path,
const Archive::FileInfo& file_info);
void InitializeFileJob(const scoped_refptr<base::TaskRunner> file_task_runner,
const base::FilePath& file_path);
// net::URLRequestJob:
void Start() override;
void Kill() override;
int ReadRawData(net::IOBuffer* buf, int buf_size) override;
bool IsRedirectResponse(GURL* location,
int* http_status_code,
bool* insecure_scheme_was_upgraded) override;
std::unique_ptr<net::SourceStream> SetUpSourceStream() override;
bool GetMimeType(std::string* mime_type) const override;
void SetExtraRequestHeaders(const net::HttpRequestHeaders& headers) override;
int GetResponseCode() const override;
void GetResponseInfo(net::HttpResponseInfo* info) override;
private:
// The type of this job.
enum JobType {
TYPE_ERROR,
TYPE_ASAR,
TYPE_FILE,
};
// Meta information about the file. It's used as a member in the
// URLRequestFileJob and also passed between threads because disk access is
// necessary to obtain it.
struct FileMetaInfo {
// Size of the file.
int64_t file_size = 0;
// Mime type associated with the file.
std::string mime_type;
// Result returned from GetMimeTypeFromFile(), i.e. flag showing whether
// obtaining of the mime type was successful.
bool mime_type_result = false;
// Flag showing whether the file exists.
bool file_exists = false;
// Flag showing whether the file name actually refers to a directory.
bool is_directory = false;
// Path to the file.
base::FilePath file_path;
FileMetaInfo();
};
// Fetches file info on a background thread.
static void FetchMetaInfo(const base::FilePath& file_path,
JobType type,
FileMetaInfo* meta_info);
// Callback after fetching file info on a background thread.
void DidFetchMetaInfo(const FileMetaInfo* meta_info);
// Callback after opening file on a background thread.
void DidOpen(int result);
// Callback after seeking to the beginning of |byte_range_| in the file
// on a background thread.
void DidSeek(int64_t result);
// Callback after data is asynchronously read from the file into |buf|.
void DidRead(scoped_refptr<net::IOBuffer> buf, int result);
JobType type_ = TYPE_ERROR;
std::shared_ptr<Archive> archive_;
base::FilePath file_path_;
Archive::FileInfo file_info_;
std::unique_ptr<net::FileStream> stream_;
FileMetaInfo meta_info_;
scoped_refptr<base::TaskRunner> file_task_runner_;
net::HttpByteRange byte_range_;
int64_t remaining_bytes_ = 0;
int64_t seek_offset_ = 0;
net::Error range_parse_result_ = net::OK;
base::WeakPtrFactory<URLRequestAsarJob> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(URLRequestAsarJob);
};
} // namespace asar
#endif // ATOM_BROWSER_NET_ASAR_URL_REQUEST_ASAR_JOB_H_

View File

@@ -1,205 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/net/atom_cert_verifier.h"
#include <utility>
#include "atom/browser/browser.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "base/containers/linked_list.h"
#include "base/memory/weak_ptr.h"
#include "brightray/browser/net/require_ct_delegate.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/net_errors.h"
#include "net/cert/cert_verify_result.h"
#include "net/cert/crl_set.h"
#include "net/cert/x509_certificate.h"
using content::BrowserThread;
namespace atom {
VerifyRequestParams::VerifyRequestParams() = default;
VerifyRequestParams::~VerifyRequestParams() = default;
VerifyRequestParams::VerifyRequestParams(const VerifyRequestParams&) = default;
namespace {
class Response : public base::LinkNode<Response> {
public:
Response(net::CertVerifyResult* verify_result,
net::CompletionOnceCallback callback)
: verify_result_(verify_result), callback_(std::move(callback)) {}
net::CertVerifyResult* verify_result() { return verify_result_; }
net::CompletionOnceCallback callback() { return std::move(callback_); }
private:
net::CertVerifyResult* verify_result_;
net::CompletionOnceCallback callback_;
DISALLOW_COPY_AND_ASSIGN(Response);
};
} // namespace
class CertVerifierRequest : public AtomCertVerifier::Request {
public:
CertVerifierRequest(const AtomCertVerifier::RequestParams& params,
AtomCertVerifier* cert_verifier)
: params_(params),
cert_verifier_(cert_verifier),
weak_ptr_factory_(this) {}
~CertVerifierRequest() override {
cert_verifier_->RemoveRequest(params_);
default_verifier_request_.reset();
while (!response_list_.empty() && !first_response_) {
base::LinkNode<Response>* response_node = response_list_.head();
response_node->RemoveFromList();
Response* response = response_node->value();
RunResponse(response);
}
cert_verifier_ = nullptr;
weak_ptr_factory_.InvalidateWeakPtrs();
}
void RunResponse(Response* response) {
if (custom_response_ == net::ERR_ABORTED) {
*(response->verify_result()) = result_;
response->callback().Run(error_);
} else {
response->verify_result()->Reset();
response->verify_result()->verified_cert = params_.certificate();
cert_verifier_->ct_delegate()->AddCTExcludedHost(params_.hostname());
response->callback().Run(custom_response_);
}
delete response;
}
void Start(net::CRLSet* crl_set, const net::NetLogWithSource& net_log) {
int error = cert_verifier_->default_verifier()->Verify(
params_, crl_set, &result_,
base::Bind(&CertVerifierRequest::OnDefaultVerificationDone,
weak_ptr_factory_.GetWeakPtr()),
&default_verifier_request_, net_log);
if (error != net::ERR_IO_PENDING)
OnDefaultVerificationDone(error);
}
void OnDefaultVerificationDone(int error) {
error_ = error;
auto request = std::make_unique<VerifyRequestParams>();
request->hostname = params_.hostname();
request->default_result = net::ErrorToString(error);
request->error_code = error;
request->certificate = params_.certificate();
auto response_callback = base::Bind(&CertVerifierRequest::OnResponseInUI,
weak_ptr_factory_.GetWeakPtr());
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::BindOnce(&CertVerifierRequest::OnVerifyRequestInUI,
cert_verifier_->verify_proc(), std::move(request),
response_callback));
}
static void OnVerifyRequestInUI(
const AtomCertVerifier::VerifyProc& verify_proc,
std::unique_ptr<VerifyRequestParams> request,
const base::Callback<void(int)>& response_callback) {
verify_proc.Run(*(request.get()), response_callback);
}
static void OnResponseInUI(base::WeakPtr<CertVerifierRequest> self,
int result) {
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&CertVerifierRequest::NotifyResponseInIO, self, result));
}
void NotifyResponseInIO(int result) {
custom_response_ = result;
first_response_ = false;
// Responding to first request in the list will initiate destruction of
// the class, respond to others in the list inside destructor.
base::LinkNode<Response>* response_node = response_list_.head();
response_node->RemoveFromList();
Response* response = response_node->value();
RunResponse(response);
}
void AddResponseListener(net::CertVerifyResult* verify_result,
net::CompletionOnceCallback callback) {
response_list_.Append(new Response(verify_result, std::move(callback)));
}
const AtomCertVerifier::RequestParams& params() const { return params_; }
private:
using ResponseList = base::LinkedList<Response>;
const AtomCertVerifier::RequestParams params_;
AtomCertVerifier* cert_verifier_;
int error_ = net::ERR_IO_PENDING;
int custom_response_ = net::ERR_IO_PENDING;
bool first_response_ = true;
ResponseList response_list_;
net::CertVerifyResult result_;
std::unique_ptr<AtomCertVerifier::Request> default_verifier_request_;
base::WeakPtrFactory<CertVerifierRequest> weak_ptr_factory_;
};
AtomCertVerifier::AtomCertVerifier(brightray::RequireCTDelegate* ct_delegate)
: default_cert_verifier_(net::CertVerifier::CreateDefault()),
ct_delegate_(ct_delegate) {}
AtomCertVerifier::~AtomCertVerifier() {}
void AtomCertVerifier::SetVerifyProc(const VerifyProc& proc) {
verify_proc_ = proc;
}
int AtomCertVerifier::Verify(const RequestParams& params,
net::CRLSet* crl_set,
net::CertVerifyResult* verify_result,
net::CompletionOnceCallback callback,
std::unique_ptr<Request>* out_req,
const net::NetLogWithSource& net_log) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (verify_proc_.is_null()) {
ct_delegate_->ClearCTExcludedHostsList();
return default_cert_verifier_->Verify(
params, crl_set, verify_result, std::move(callback), out_req, net_log);
} else {
CertVerifierRequest* request = FindRequest(params);
if (!request) {
out_req->reset();
auto new_request = std::make_unique<CertVerifierRequest>(params, this);
new_request->Start(crl_set, net_log);
request = new_request.get();
*out_req = std::move(new_request);
inflight_requests_[params] = request;
}
request->AddResponseListener(verify_result, std::move(callback));
return net::ERR_IO_PENDING;
}
}
void AtomCertVerifier::RemoveRequest(const RequestParams& params) {
auto it = inflight_requests_.find(params);
if (it != inflight_requests_.end())
inflight_requests_.erase(it);
}
CertVerifierRequest* AtomCertVerifier::FindRequest(
const RequestParams& params) {
auto it = inflight_requests_.find(params);
if (it != inflight_requests_.end())
return it->second;
return nullptr;
}
} // namespace atom

View File

@@ -1,76 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_NET_ATOM_CERT_VERIFIER_H_
#define ATOM_BROWSER_NET_ATOM_CERT_VERIFIER_H_
#include <map>
#include <memory>
#include <string>
#include "net/cert/cert_verifier.h"
namespace brightray {
class RequireCTDelegate;
} // namespace brightray
namespace atom {
class CertVerifierRequest;
struct VerifyRequestParams {
std::string hostname;
std::string default_result;
int error_code;
scoped_refptr<net::X509Certificate> certificate;
VerifyRequestParams();
VerifyRequestParams(const VerifyRequestParams&);
~VerifyRequestParams();
};
class AtomCertVerifier : public net::CertVerifier {
public:
explicit AtomCertVerifier(brightray::RequireCTDelegate* ct_delegate);
~AtomCertVerifier() override;
using VerifyProc = base::Callback<void(const VerifyRequestParams& request,
net::CompletionOnceCallback)>;
void SetVerifyProc(const VerifyProc& proc);
const VerifyProc verify_proc() const { return verify_proc_; }
brightray::RequireCTDelegate* ct_delegate() const { return ct_delegate_; }
net::CertVerifier* default_verifier() const {
return default_cert_verifier_.get();
}
protected:
// net::CertVerifier:
int Verify(const RequestParams& params,
net::CRLSet* crl_set,
net::CertVerifyResult* verify_result,
net::CompletionOnceCallback callback,
std::unique_ptr<Request>* out_req,
const net::NetLogWithSource& net_log) override;
private:
friend class CertVerifierRequest;
void RemoveRequest(const RequestParams& params);
CertVerifierRequest* FindRequest(const RequestParams& params);
std::map<RequestParams, CertVerifierRequest*> inflight_requests_;
VerifyProc verify_proc_;
std::unique_ptr<net::CertVerifier> default_cert_verifier_;
brightray::RequireCTDelegate* ct_delegate_;
DISALLOW_COPY_AND_ASSIGN(AtomCertVerifier);
};
} // namespace atom
#endif // ATOM_BROWSER_NET_ATOM_CERT_VERIFIER_H_

View File

@@ -1,547 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/net/atom_network_delegate.h"
#include <memory>
#include <utility>
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/login_handler.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "atom/common/options_switches.h"
#include "base/command_line.h"
#include "base/stl_util.h"
#include "base/strings/string_util.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/resource_request_info.h"
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
#include "net/url_request/url_request.h"
using content::BrowserThread;
namespace atom {
const char* ResourceTypeToString(content::ResourceType type) {
switch (type) {
case content::RESOURCE_TYPE_MAIN_FRAME:
return "mainFrame";
case content::RESOURCE_TYPE_SUB_FRAME:
return "subFrame";
case content::RESOURCE_TYPE_STYLESHEET:
return "stylesheet";
case content::RESOURCE_TYPE_SCRIPT:
return "script";
case content::RESOURCE_TYPE_IMAGE:
return "image";
case content::RESOURCE_TYPE_OBJECT:
return "object";
case content::RESOURCE_TYPE_XHR:
return "xhr";
default:
return "other";
}
}
int32_t GetWebContentsID(int process_id, int frame_id) {
auto* webContents = content::WebContents::FromRenderFrameHost(
content::RenderFrameHost::FromID(process_id, frame_id));
return atom::api::WebContents::GetIDFromWrappedClass(webContents);
}
namespace {
using ResponseHeadersContainer =
std::pair<scoped_refptr<net::HttpResponseHeaders>*, const std::string&>;
void RunSimpleListener(const AtomNetworkDelegate::SimpleListener& listener,
std::unique_ptr<base::DictionaryValue> details,
int render_process_id,
int render_frame_id) {
int32_t id = GetWebContentsID(render_process_id, render_frame_id);
// id must be greater than zero
if (id)
details->SetInteger("webContentsId", id);
return listener.Run(*(details.get()));
}
void RunResponseListener(
const AtomNetworkDelegate::ResponseListener& listener,
std::unique_ptr<base::DictionaryValue> details,
int render_process_id,
int render_frame_id,
const AtomNetworkDelegate::ResponseCallback& callback) {
int32_t id = GetWebContentsID(render_process_id, render_frame_id);
// id must be greater than zero
if (id)
details->SetInteger("webContentsId", id);
return listener.Run(*(details.get()), callback);
}
// Test whether the URL of |request| matches |patterns|.
bool MatchesFilterCondition(net::URLRequest* request,
const URLPatterns& patterns) {
if (patterns.empty())
return true;
for (const auto& pattern : patterns) {
if (pattern.MatchesURL(request->url()))
return true;
}
return false;
}
// Overloaded by multiple types to fill the |details| object.
void ToDictionary(base::DictionaryValue* details, net::URLRequest* request) {
FillRequestDetails(details, request);
details->SetInteger("id", request->identifier());
details->SetDouble("timestamp", base::Time::Now().ToDoubleT() * 1000);
const auto* info = content::ResourceRequestInfo::ForRequest(request);
if (info) {
details->SetString("resourceType",
ResourceTypeToString(info->GetResourceType()));
} else {
details->SetString("resourceType", "other");
}
}
void ToDictionary(base::DictionaryValue* details,
const net::HttpRequestHeaders& headers) {
auto dict = std::make_unique<base::DictionaryValue>();
net::HttpRequestHeaders::Iterator it(headers);
while (it.GetNext())
dict->SetKey(it.name(), base::Value(it.value()));
details->Set("requestHeaders", std::move(dict));
}
void ToDictionary(base::DictionaryValue* details,
const net::HttpResponseHeaders* headers) {
if (!headers)
return;
auto dict = std::make_unique<base::DictionaryValue>();
size_t iter = 0;
std::string key;
std::string value;
while (headers->EnumerateHeaderLines(&iter, &key, &value)) {
if (dict->FindKey(key)) {
base::ListValue* values = nullptr;
if (dict->GetList(key, &values))
values->AppendString(value);
} else {
auto values = std::make_unique<base::ListValue>();
values->AppendString(value);
dict->Set(key, std::move(values));
}
}
details->Set("responseHeaders", std::move(dict));
details->SetString("statusLine", headers->GetStatusLine());
details->SetInteger("statusCode", headers->response_code());
}
void ToDictionary(base::DictionaryValue* details, const GURL& location) {
details->SetString("redirectURL", location.spec());
}
void ToDictionary(base::DictionaryValue* details,
const net::HostPortPair& host_port) {
if (host_port.host().empty())
details->SetString("ip", host_port.host());
}
void ToDictionary(base::DictionaryValue* details, bool from_cache) {
details->SetBoolean("fromCache", from_cache);
}
void ToDictionary(base::DictionaryValue* details,
const net::URLRequestStatus& status) {
details->SetString("error", net::ErrorToString(status.error()));
}
// Helper function to fill |details| with arbitrary |args|.
template <typename Arg>
void FillDetailsObject(base::DictionaryValue* details, Arg arg) {
ToDictionary(details, arg);
}
template <typename Arg, typename... Args>
void FillDetailsObject(base::DictionaryValue* details, Arg arg, Args... args) {
ToDictionary(details, arg);
FillDetailsObject(details, args...);
}
// Fill the native types with the result from the response object.
void ReadFromResponseObject(const base::DictionaryValue& response,
GURL* new_location) {
std::string url;
if (response.GetString("redirectURL", &url))
*new_location = GURL(url);
}
void ReadFromResponseObject(const base::DictionaryValue& response,
net::HttpRequestHeaders* headers) {
const base::DictionaryValue* dict;
if (response.GetDictionary("requestHeaders", &dict)) {
headers->Clear();
for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd();
it.Advance()) {
if (it.value().is_string()) {
std::string value = it.value().GetString();
headers->SetHeader(it.key(), value);
}
}
}
}
void ReadFromResponseObject(const base::DictionaryValue& response,
const ResponseHeadersContainer& container) {
const base::DictionaryValue* dict;
std::string status_line;
if (!response.GetString("statusLine", &status_line))
status_line = container.second;
if (response.GetDictionary("responseHeaders", &dict)) {
auto* headers = container.first;
*headers = new net::HttpResponseHeaders("");
(*headers)->ReplaceStatusLine(status_line);
for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd();
it.Advance()) {
const base::ListValue* list;
if (it.value().GetAsList(&list)) {
(*headers)->RemoveHeader(it.key());
for (size_t i = 0; i < list->GetSize(); ++i) {
std::string value;
if (list->GetString(i, &value))
(*headers)->AddHeader(it.key() + " : " + value);
}
}
}
}
}
} // namespace
AtomNetworkDelegate::SimpleListenerInfo::SimpleListenerInfo(
URLPatterns patterns_,
SimpleListener listener_)
: url_patterns(patterns_), listener(listener_) {}
AtomNetworkDelegate::SimpleListenerInfo::SimpleListenerInfo() = default;
AtomNetworkDelegate::SimpleListenerInfo::~SimpleListenerInfo() = default;
AtomNetworkDelegate::ResponseListenerInfo::ResponseListenerInfo(
URLPatterns patterns_,
ResponseListener listener_)
: url_patterns(patterns_), listener(listener_) {}
AtomNetworkDelegate::ResponseListenerInfo::ResponseListenerInfo() = default;
AtomNetworkDelegate::ResponseListenerInfo::~ResponseListenerInfo() = default;
AtomNetworkDelegate::AtomNetworkDelegate() {
auto* command_line = base::CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kIgnoreConnectionsLimit)) {
std::string value =
command_line->GetSwitchValueASCII(switches::kIgnoreConnectionsLimit);
ignore_connections_limit_domains_ = base::SplitString(
value, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
}
}
AtomNetworkDelegate::~AtomNetworkDelegate() {}
void AtomNetworkDelegate::SetSimpleListenerInIO(SimpleEvent type,
URLPatterns patterns,
SimpleListener callback) {
if (callback.is_null())
simple_listeners_.erase(type);
else
simple_listeners_[type] = {std::move(patterns), std::move(callback)};
}
void AtomNetworkDelegate::SetResponseListenerInIO(ResponseEvent type,
URLPatterns patterns,
ResponseListener callback) {
if (callback.is_null())
response_listeners_.erase(type);
else
response_listeners_[type] = {std::move(patterns), std::move(callback)};
}
int AtomNetworkDelegate::OnBeforeURLRequest(
net::URLRequest* request,
net::CompletionOnceCallback callback,
GURL* new_url) {
if (!base::ContainsKey(response_listeners_, kOnBeforeRequest)) {
for (const auto& domain : ignore_connections_limit_domains_) {
if (request->url().DomainIs(domain)) {
// Allow unlimited concurrent connections.
request->SetPriority(net::MAXIMUM_PRIORITY);
request->SetLoadFlags(request->load_flags() | net::LOAD_IGNORE_LIMITS);
break;
}
}
return net::OK;
}
return HandleResponseEvent(kOnBeforeRequest, request, std::move(callback),
new_url);
}
int AtomNetworkDelegate::OnBeforeStartTransaction(
net::URLRequest* request,
net::CompletionOnceCallback callback,
net::HttpRequestHeaders* headers) {
if (!base::ContainsKey(response_listeners_, kOnBeforeSendHeaders))
return net::OK;
return HandleResponseEvent(kOnBeforeSendHeaders, request, std::move(callback),
headers, *headers);
}
void AtomNetworkDelegate::OnStartTransaction(
net::URLRequest* request,
const net::HttpRequestHeaders& headers) {
if (!base::ContainsKey(simple_listeners_, kOnSendHeaders))
return;
HandleSimpleEvent(kOnSendHeaders, request, headers);
}
int AtomNetworkDelegate::OnHeadersReceived(
net::URLRequest* request,
net::CompletionOnceCallback callback,
const net::HttpResponseHeaders* original,
scoped_refptr<net::HttpResponseHeaders>* override,
GURL* allowed) {
if (!base::ContainsKey(response_listeners_, kOnHeadersReceived))
return net::OK;
return HandleResponseEvent(
kOnHeadersReceived, request, std::move(callback),
std::make_pair(override, original->GetStatusLine()), original);
}
void AtomNetworkDelegate::OnBeforeRedirect(net::URLRequest* request,
const GURL& new_location) {
if (!base::ContainsKey(simple_listeners_, kOnBeforeRedirect))
return;
HandleSimpleEvent(kOnBeforeRedirect, request, new_location,
request->response_headers(), request->GetSocketAddress(),
request->was_cached());
}
void AtomNetworkDelegate::OnResponseStarted(net::URLRequest* request,
int net_error) {
if (!base::ContainsKey(simple_listeners_, kOnResponseStarted))
return;
if (request->status().status() != net::URLRequestStatus::SUCCESS)
return;
HandleSimpleEvent(kOnResponseStarted, request, request->response_headers(),
request->was_cached());
}
void AtomNetworkDelegate::OnCompleted(net::URLRequest* request,
bool started,
int net_error) {
// OnCompleted may happen before other events.
callbacks_.erase(request->identifier());
if (request->status().status() == net::URLRequestStatus::FAILED ||
request->status().status() == net::URLRequestStatus::CANCELED) {
// Error event.
OnErrorOccurred(request, started, net_error);
return;
}
if (request->response_headers() &&
net::HttpResponseHeaders::IsRedirectResponseCode(
request->response_headers()->response_code())) {
// Redirect event.
return;
}
if (!base::ContainsKey(simple_listeners_, kOnCompleted))
return;
HandleSimpleEvent(kOnCompleted, request, request->response_headers(),
request->was_cached());
}
void AtomNetworkDelegate::OnURLRequestDestroyed(net::URLRequest* request) {
const auto& it = login_handler_map_.find(request->identifier());
if (it != login_handler_map_.end()) {
it->second->NotifyRequestDestroyed();
it->second = nullptr;
login_handler_map_.erase(it);
}
callbacks_.erase(request->identifier());
}
net::NetworkDelegate::AuthRequiredResponse AtomNetworkDelegate::OnAuthRequired(
net::URLRequest* request,
const net::AuthChallengeInfo& auth_info,
AuthCallback callback,
net::AuthCredentials* credentials) {
auto* resource_request_info =
content::ResourceRequestInfo::ForRequest(request);
if (!resource_request_info)
return AUTH_REQUIRED_RESPONSE_NO_ACTION;
login_handler_map_.emplace(
request->identifier(),
new LoginHandler(request, auth_info, std::move(callback), credentials,
resource_request_info));
return AUTH_REQUIRED_RESPONSE_IO_PENDING;
}
bool AtomNetworkDelegate::OnCanGetCookies(const net::URLRequest& request,
const net::CookieList& cookie_list) {
return true;
}
bool AtomNetworkDelegate::OnCanSetCookie(
const net::URLRequest& request,
const net::CanonicalCookie& cookie_line,
net::CookieOptions* options) {
return true;
}
bool AtomNetworkDelegate::OnCanAccessFile(
const net::URLRequest& request,
const base::FilePath& original_path,
const base::FilePath& absolute_path) const {
return true;
}
bool AtomNetworkDelegate::OnCanEnablePrivacyMode(
const GURL& url,
const GURL& first_party_for_cookies) const {
return false;
}
bool AtomNetworkDelegate::OnAreExperimentalCookieFeaturesEnabled() const {
return true;
}
bool AtomNetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader(
const net::URLRequest& request,
const GURL& target_url,
const GURL& referrer_url) const {
return false;
}
// TODO(deepak1556) : Enable after hooking into the reporting service
// https://crbug.com/704259
bool AtomNetworkDelegate::OnCanQueueReportingReport(
const url::Origin& origin) const {
return false;
}
void AtomNetworkDelegate::OnCanSendReportingReports(
std::set<url::Origin> origins,
base::OnceCallback<void(std::set<url::Origin>)> result_callback) const {}
bool AtomNetworkDelegate::OnCanSetReportingClient(const url::Origin& origin,
const GURL& endpoint) const {
return false;
}
bool AtomNetworkDelegate::OnCanUseReportingClient(const url::Origin& origin,
const GURL& endpoint) const {
return false;
}
void AtomNetworkDelegate::OnErrorOccurred(net::URLRequest* request,
bool started,
int net_error) {
if (!base::ContainsKey(simple_listeners_, kOnErrorOccurred))
return;
HandleSimpleEvent(kOnErrorOccurred, request, request->was_cached(),
request->status());
}
template <typename Out, typename... Args>
int AtomNetworkDelegate::HandleResponseEvent(
ResponseEvent type,
net::URLRequest* request,
net::CompletionOnceCallback callback,
Out out,
Args... args) {
const auto& info = response_listeners_[type];
if (!MatchesFilterCondition(request, info.url_patterns))
return net::OK;
auto details = std::make_unique<base::DictionaryValue>();
FillDetailsObject(details.get(), request, args...);
int render_process_id, render_frame_id;
content::ResourceRequestInfo::GetRenderFrameForRequest(
request, &render_process_id, &render_frame_id);
// The |request| could be destroyed before the |callback| is called.
callbacks_[request->identifier()] = std::move(callback);
ResponseCallback response =
base::Bind(&AtomNetworkDelegate::OnListenerResultInUI<Out>,
base::Unretained(this), request->identifier(), out);
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::BindOnce(RunResponseListener, info.listener, std::move(details),
render_process_id, render_frame_id, response));
return net::ERR_IO_PENDING;
}
template <typename... Args>
void AtomNetworkDelegate::HandleSimpleEvent(SimpleEvent type,
net::URLRequest* request,
Args... args) {
const auto& info = simple_listeners_[type];
if (!MatchesFilterCondition(request, info.url_patterns))
return;
auto details = std::make_unique<base::DictionaryValue>();
FillDetailsObject(details.get(), request, args...);
int render_process_id, render_frame_id;
content::ResourceRequestInfo::GetRenderFrameForRequest(
request, &render_process_id, &render_frame_id);
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::BindOnce(RunSimpleListener, info.listener, std::move(details),
render_process_id, render_frame_id));
}
template <typename T>
void AtomNetworkDelegate::OnListenerResultInIO(
uint64_t id,
T out,
std::unique_ptr<base::DictionaryValue> response) {
// The request has been destroyed.
if (!base::ContainsKey(callbacks_, id))
return;
ReadFromResponseObject(*response, out);
bool cancel = false;
response->GetBoolean("cancel", &cancel);
std::move(callbacks_[id]).Run(cancel ? net::ERR_BLOCKED_BY_CLIENT : net::OK);
}
template <typename T>
void AtomNetworkDelegate::OnListenerResultInUI(
uint64_t id,
T out,
const base::DictionaryValue& response) {
auto copy = base::DictionaryValue::From(
base::Value::ToUniquePtrValue(response.Clone()));
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&AtomNetworkDelegate::OnListenerResultInIO<T>,
base::Unretained(this), id, out, std::move(copy)));
}
} // namespace atom

View File

@@ -1,180 +0,0 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_NET_ATOM_NETWORK_DELEGATE_H_
#define ATOM_BROWSER_NET_ATOM_NETWORK_DELEGATE_H_
#include <map>
#include <memory>
#include <set>
#include <string>
#include <vector>
#include "base/callback.h"
#include "base/synchronization/lock.h"
#include "base/values.h"
#include "content/public/browser/resource_request_info.h"
#include "extensions/common/url_pattern.h"
#include "net/base/network_delegate.h"
#include "net/http/http_request_headers.h"
#include "net/http/http_response_headers.h"
class URLPattern;
namespace atom {
using URLPatterns = std::set<URLPattern>;
const char* ResourceTypeToString(content::ResourceType type);
class LoginHandler;
class AtomNetworkDelegate : public net::NetworkDelegate {
public:
using ResponseCallback = base::Callback<void(const base::DictionaryValue&)>;
using SimpleListener = base::Callback<void(const base::DictionaryValue&)>;
using ResponseListener = base::Callback<void(const base::DictionaryValue&,
const ResponseCallback&)>;
enum SimpleEvent {
kOnSendHeaders,
kOnBeforeRedirect,
kOnResponseStarted,
kOnCompleted,
kOnErrorOccurred,
};
enum ResponseEvent {
kOnBeforeRequest,
kOnBeforeSendHeaders,
kOnHeadersReceived,
};
struct SimpleListenerInfo {
URLPatterns url_patterns;
SimpleListener listener;
SimpleListenerInfo(URLPatterns, SimpleListener);
SimpleListenerInfo();
~SimpleListenerInfo();
};
struct ResponseListenerInfo {
URLPatterns url_patterns;
ResponseListener listener;
ResponseListenerInfo(URLPatterns, ResponseListener);
ResponseListenerInfo();
~ResponseListenerInfo();
};
AtomNetworkDelegate();
~AtomNetworkDelegate() override;
void SetSimpleListenerInIO(SimpleEvent type,
URLPatterns patterns,
SimpleListener callback);
void SetResponseListenerInIO(ResponseEvent type,
URLPatterns patterns,
ResponseListener callback);
protected:
// net::NetworkDelegate:
int OnBeforeURLRequest(net::URLRequest* request,
net::CompletionOnceCallback callback,
GURL* new_url) override;
int OnBeforeStartTransaction(net::URLRequest* request,
net::CompletionOnceCallback callback,
net::HttpRequestHeaders* headers) override;
void OnBeforeSendHeaders(net::URLRequest* request,
const net::ProxyInfo& proxy_info,
const net::ProxyRetryInfoMap& proxy_retry_info,
net::HttpRequestHeaders* headers) override {}
void OnStartTransaction(net::URLRequest* request,
const net::HttpRequestHeaders& headers) override;
int OnHeadersReceived(
net::URLRequest* request,
net::CompletionOnceCallback callback,
const net::HttpResponseHeaders* original_response_headers,
scoped_refptr<net::HttpResponseHeaders>* override_response_headers,
GURL* allowed_unsafe_redirect_url) override;
void OnBeforeRedirect(net::URLRequest* request,
const GURL& new_location) override;
void OnResponseStarted(net::URLRequest* request, int net_error) override;
void OnNetworkBytesReceived(net::URLRequest* request,
int64_t bytes_read) override {}
void OnNetworkBytesSent(net::URLRequest* request,
int64_t bytes_sent) override {}
void OnCompleted(net::URLRequest* request,
bool started,
int net_error) override;
void OnURLRequestDestroyed(net::URLRequest* request) override;
void OnPACScriptError(int line_number, const base::string16& error) override {
}
AuthRequiredResponse OnAuthRequired(
net::URLRequest* request,
const net::AuthChallengeInfo& auth_info,
AuthCallback callback,
net::AuthCredentials* credentials) override;
bool OnCanGetCookies(const net::URLRequest& request,
const net::CookieList& cookie_list) override;
bool OnCanSetCookie(const net::URLRequest& request,
const net::CanonicalCookie& cookie_line,
net::CookieOptions* options) override;
bool OnCanAccessFile(const net::URLRequest& request,
const base::FilePath& original_path,
const base::FilePath& absolute_path) const override;
bool OnCanEnablePrivacyMode(
const GURL& url,
const GURL& first_party_for_cookies) const override;
bool OnAreExperimentalCookieFeaturesEnabled() const override;
bool OnCancelURLRequestWithPolicyViolatingReferrerHeader(
const net::URLRequest& request,
const GURL& target_url,
const GURL& referrer_url) const override;
bool OnCanQueueReportingReport(const url::Origin& origin) const override;
void OnCanSendReportingReports(std::set<url::Origin> origins,
base::OnceCallback<void(std::set<url::Origin>)>
result_callback) const override;
bool OnCanSetReportingClient(const url::Origin& origin,
const GURL& endpoint) const override;
bool OnCanUseReportingClient(const url::Origin& origin,
const GURL& endpoint) const override;
private:
void OnErrorOccurred(net::URLRequest* request, bool started, int net_error);
template <typename... Args>
void HandleSimpleEvent(SimpleEvent type,
net::URLRequest* request,
Args... args);
template <typename Out, typename... Args>
int HandleResponseEvent(ResponseEvent type,
net::URLRequest* request,
net::CompletionOnceCallback callback,
Out out,
Args... args);
// Deal with the results of Listener.
template <typename T>
void OnListenerResultInIO(uint64_t id,
T out,
std::unique_ptr<base::DictionaryValue> response);
template <typename T>
void OnListenerResultInUI(uint64_t id,
T out,
const base::DictionaryValue& response);
std::map<uint64_t, scoped_refptr<LoginHandler>> login_handler_map_;
std::map<SimpleEvent, SimpleListenerInfo> simple_listeners_;
std::map<ResponseEvent, ResponseListenerInfo> response_listeners_;
std::map<uint64_t, net::CompletionOnceCallback> callbacks_;
std::vector<std::string> ignore_connections_limit_domains_;
DISALLOW_COPY_AND_ASSIGN(AtomNetworkDelegate);
};
} // namespace atom
#endif // ATOM_BROWSER_NET_ATOM_NETWORK_DELEGATE_H_

Some files were not shown because too many files have changed in this diff Show More