Compare commits

...

2699 Commits

Author SHA1 Message Date
Electron Bot
530bf8b69a Bump v4.2.11 2019-09-18 12:48:06 -07:00
Pedro Pontes
919d73b2ba fix: Add more checks in MojoCdmService. (#20222)
Applies b7b305f338%5E%21/
2019-09-17 12:58:59 -04:00
trop[bot]
9b5f40c973 ci: do not run WOA builds on older versions of Electron (#20118) 2019-09-04 16:20:04 -07:00
Electron Bot
4e4c7527c6 Bump v4.2.10 2019-08-29 08:34:20 -07:00
Shelley Vohr
4e0931dd0b Revert "Bump v4.2.10"
This reverts commit fa3680050d.
2019-08-29 08:32:56 -07:00
Electron Bot
fa3680050d Bump v4.2.10 2019-08-26 14:56:47 -07:00
Charles Kerr
8181f57c5f fix: command-line scheme switches no longer bleed into each other (#19954)
Fixes #19911

Manually backport #19912
2019-08-26 14:55:40 -07:00
Cheng Zhao
c83176c2dc fix: notify views of content view size change (#19881) 2019-08-26 12:56:32 -04:00
Electron Bot
3d4d645400 Bump v4.2.9 2019-08-05 08:39:28 -07:00
trop[bot]
90173a015e fix: tray.displayBalloon() does not work with custom icon on Windows (#19529) 2019-07-31 10:51:40 -07:00
trop[bot]
13cf7b0bc0 fix: clearing of the backgroundColor property on TouchBarButton (#19472) 2019-07-30 09:20:37 -07:00
trop[bot]
2ed6e590a1 fix: remove .pdb from symbol file names (#19502)
* fix: remove .pdb from symbol file names

* Update dump_syms.py
2019-07-29 17:16:32 -07:00
trop[bot]
fa2059438c docs: add return value description to BrowserWindow#get(Content)Bounds (#19507) 2019-07-29 17:16:02 -07:00
Micha Hanselmann
9f3650cc66 docs: fix bad link in notifications tut (#19396) 2019-07-23 21:32:49 -07:00
trop[bot]
c70a41275a fix: emit swipe event on macOS (#19352) 2019-07-22 09:29:39 -07:00
Electron Bot
8de59b982b Bump v4.2.8 2019-07-19 15:22:11 -07:00
Samuel Attard
0b0f7ed7dc fix: backport patch for leaking HTML5 video elements (#19347) 2019-07-19 15:19:23 -07:00
Electron Bot
36ea114ac0 Bump v4.2.7 2019-07-15 15:05:57 -07:00
Electron Bot
4fa8a866d4 Revert "Bump v4.2.7"
This reverts commit da9a917482.
2019-07-15 14:55:42 -07:00
Electron Bot
da9a917482 Bump v4.2.7 2019-07-15 14:49:18 -07:00
Jeremy Apthorp
979dfc7903 fix: don't try to generate swiftshader symbols on arm (#19262) 2019-07-15 14:33:54 -07:00
Jeremy Apthorp
bc218c6176 fix: don't try to dump swiftshader symbols on mac (#19258) 2019-07-15 11:31:26 -07:00
Electron Bot
bc93eed472 Revert "Bump v4.2.7"
This reverts commit cdc11e1dc5.
2019-07-15 09:11:37 -07:00
Electron Bot
cdc11e1dc5 Bump v4.2.7 2019-07-15 07:56:18 -07:00
Erick Zhao
489e40f763 chore: revert key -> main change in window delegate listener (#19239) 2019-07-14 17:48:02 +09:00
trop[bot]
4e1c358d87 feat: provide the frame URL with permission requests and checks (#18757) (#19204)
* 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-07-11 20:47:56 -05:00
Jeremy Apthorp
6a1d3e80c8 fix: backport workaround for blockfile cache corruption on macOS (#19212)
backport of https://chromium-review.googlesource.com/c/chromium/src/+/1347109
2019-07-11 17:31:46 -05:00
trop[bot]
bfd7412b64 remove non-existent event (#19168) 2019-07-11 17:34:15 +09:00
Milan Burda
09f9c95f8f ci: add check for dist zip file changes (#19175) 2019-07-10 09:38:16 -05:00
Robo
768b4c9757 fix: Windows OnSecreenKeyboard for various mouse events (#19144)
Backports the following CLs:
https://chromium-review.googlesource.com/c/chromium/src/+/1194406/
https://chromium-review.googlesource.com/c/chromium/src/+/1220560/
https://chromium-review.googlesource.com/c/chromium/src/+/1140199/
2019-07-09 11:36:27 -07:00
Cheng Zhao
b8162becd7 fix: disable animation for win.setSimpleFullScreen (#19143) 2019-07-09 15:27:19 +09:00
Jeremy Apthorp
47f5fe6411 fix: dump correct breakpad symbols on macOS (#19158) 2019-07-09 09:46:46 +09:00
trop[bot]
5bf76ea01a fix: check parent-child relationship in canAccessWindow (#19116) 2019-07-09 09:43:32 +09:00
trop[bot]
b9605cc602 fix: Correct modal focus behavior on macOS (#19061)
* wip: wish i could hack the main window focus away

* main -> key

* remove useless code

* test: Add focus event spec

* test: more robust spec

* test: simplify test

* duplicate non-firing macOS event listener 😳

* destroy 🚨

* chore: remove unused variable
2019-07-02 18:26:59 -07:00
trop[bot]
b98e06e38e docs: fix heading level for power-monitor docs (#19060) 2019-07-01 15:22:18 -07:00
Electron Bot
bd6a3dd79b Bump v4.2.6 2019-07-01 14:24:47 -07:00
Samuel Attard
71cd22605e Revert "Bump v4.2.6"
This reverts commit 21b7dc2717.
2019-07-01 14:15:39 -07:00
Electron Bot
4775c8ec7b Revert "Bump v4.2.7"
This reverts commit 188a92970b.
2019-07-01 14:15:12 -07:00
Electron Bot
188a92970b Bump v4.2.7 2019-07-01 14:07:57 -07:00
Shelley Vohr
1826bbb684 fix: post_task include (#19064) 2019-07-01 14:06:09 -07:00
Electron Bot
21b7dc2717 Bump v4.2.6 2019-07-01 08:55:40 -07:00
trop[bot]
dba476e18a ci: run lint on CircleCI (#19059)
* ci: run lint on CircleCI

* Fix lint errors
2019-07-01 08:47:30 -07:00
trop[bot]
e31e98d927 fix: make tray not block main process (#19035) 2019-06-28 14:00:18 -07:00
trop[bot]
6a25f416e0 fix: delay emitting screen events by a tick to avoid re-entrancy crash (#19024) 2019-06-28 16:24:08 +09:00
Shelley Vohr
b18a012bfd fix: On close trying to remove observer from an empty collection leads to an access violation (#15739) (#18992) 2019-06-26 11:04:30 -07:00
trop[bot]
8acf577efa fix: override the timers module impls to activate the uv loop (#18968) 2019-06-25 13:28:10 -07:00
trop[bot]
52c76fcf11 fix: make isDarkMode correctly detect dark mode in the auto setting on catalina (#18959) 2019-06-24 13:28:04 -07:00
Milan Burda
a568e13642 fix: app.getAppPath() returning default-app path for files or directories without package.json (#18763) (#18895) 2019-06-24 08:06:22 -07:00
trop[bot]
65c53cc4fa refactor: session.{clearCache,getCacheSize} nws13n (#18921) 2019-06-21 15:00:53 -07:00
Electron Bot
4c468a9efd Bump very far --> this is electron bot fixing the release 2019-06-21 14:01:56 -07:00
trop[bot]
a24efe268d chore: account for remotes in branch parsing (#18932) 2019-06-21 14:00:16 -07:00
Shelley Vohr
140bd753ca chore: fix branch trimming for blast-off releases (#18906) 2019-06-20 13:08:35 -07:00
Milan Burda
5f30c61c49 fix: set nativeWindowOpen when sandboxed (#18273) (#18797) 2019-06-20 08:26:24 -07:00
Electron Bot
5d67ec3da5 Bump v4.2.5 2019-06-19 11:06:58 -07:00
Shelley Vohr
993b70ee9e chore: improve current branch fetching (#18837)
* chore: improve current branch fetching

* chore: fix current branch fetch on master (#18844)
2019-06-18 16:56:11 -07:00
trop[bot]
a35b6d3fa8 fix: use effectiveAppearance to check dark mode on mojave and above (#18666) (#18853)
* fix: use effectiveAppearance to check dark mode on mojave and above

* chore: add forward declarations for dark appearance
2019-06-17 18:09:16 -07:00
Shelley Vohr
9e7390f128 chore: update codeowners in 4 (#18836) 2019-06-17 14:06:47 -07:00
Milan Burda
690e94a329 fix: Uncaught TypeError: Cannot set property 'innerText' of null in default-app (#18818) 2019-06-17 09:59:01 -07:00
Shelley Vohr
1ae0d41025 docs: better explain supported release line levels (#18800) (#18840) 2019-06-17 07:53:34 -07:00
Milan Burda
2dd2566fd5 fix: crash in BrowserWindow destructor after win.webContents.destroy() (#18686) (#18795) 2019-06-15 16:22:36 +09:00
trop[bot]
972d45dc09 fix: use isEqual instead of pointer equality to convert NSAppearance (#18691) 2019-06-10 10:01:22 -07:00
Milan Burda
87c0b54788 fix: Fixed all OOB accesses in VertexProgram and PixelProgram (#18567) 2019-06-07 11:44:09 +09:00
trop[bot]
3f4f58130e ci: fix issues downloading from CircleCI (#18656)
Make sure we pass along token to download from CircleCI
Also, add back off period for retries on downloads.
2019-06-06 08:31:53 -07:00
Milan Burda
b7c49f7940 fix: [Liftoff] Correctly unuse Labels (#18530) 2019-06-06 08:29:39 -07:00
Milan Burda
c9b9a0cd9a fix: Check array element length in ValueDeserializer (#18565) 2019-06-06 19:06:53 +09:00
Milan Burda
ee6c91d491 fix: ValueSerializer: Report if buffer expansion fails during WriteHostObject (#18562) 2019-06-04 11:22:58 -07:00
Milan Burda
b35e35f3ec fix: UAP in ImageBitmapLoader/FileReaderLoader (#18563) 2019-06-04 11:22:33 -07:00
Electron Bot
cbc0e46617 Bump v4.2.4 2019-06-04 09:28:12 -07:00
Milan Burda
a6f9b6f72b fix: [FileSystem] Harden against overflows of OperationID a bit better (#18572) 2019-06-04 09:23:30 -07:00
Milan Burda
df60a800b9 fix: [parser] LiteralBuffer::ExpandBuffer always grows (#18568) 2019-06-04 12:09:42 -04:00
Milan Burda
49dc15469d fix: don't export private V8 symbols that can cause native node modules to crash (#18281) (#18621) 2019-06-04 10:09:20 -05:00
trop[bot]
0049cee96c build: move Windows release builds to AppVeyor cloud (#18605)
* build: move Windows release builds to AppVeyor cloud

* Use new env variable for AppVeyor cloud server
2019-06-04 10:28:55 -04:00
Milan Burda
bbeedafc6e fix: Prevent glDeleteQueries from deleting a live Query (#18566) 2019-06-04 17:58:08 +09:00
Milan Burda
3d3d97920e fix: [turbofan] Restrict redundancy elimination from widening types (#18569) 2019-06-04 17:57:22 +09:00
Milan Burda
7d164b3bcd fix: SVG crash for v0 distribution into foreignObject. (#18561) 2019-06-04 17:56:35 +09:00
trop[bot]
64f32a18f5 build: strip swiftshader binaries (#18602) 2019-06-03 14:33:10 -07:00
Milan Burda
93ce710f28 build: remove Vulkan mock ICD (#18594) 2019-06-03 17:24:35 -04:00
trop[bot]
e15672e13c build: install python-dbusmock via pip for a Docker container (#18598)
* 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 17:21:41 -04:00
Milan Burda
79764942d1 fix: Issue 914497: QUIC proxying breaks end-to-end encryption (#17634) 2019-06-03 11:54:12 -07:00
Milan Burda
ec2418ad7d fix: [turbofan] Fix wrong typing of SpeculativeSafeIntegerSubtract. (#18564) 2019-06-03 11:41:28 -07:00
trop[bot]
a6117abf4c ci: add retries to downloads for arm testing (#18534) 2019-05-30 21:09:09 -07:00
Electron Bot
c1b5a1cfc8 Bump v4.2.3 2019-05-30 15:14:00 -07:00
Shelley Vohr
79d41f5f96 Revert "Bump v4.2.3"
This reverts commit 2dd3d9ad1b.
2019-05-30 15:12:34 -07:00
Electron Bot
2dd3d9ad1b Bump v4.2.3 2019-05-30 09:54:10 -07:00
trop[bot]
86714c0b6f fix: populate phase of WebMouseWheelEvents generated in webContents.sendInputEvent. (#18494) 2019-05-30 11:02:43 -05:00
Alexey Kuzmin
fb0c56c946 build: backport "Restore live region changed events for processing by JAWS focus mode" (#18474) 2019-05-30 10:16:54 -04:00
Shelley Vohr
75d27c0810 fix: respect minimizable/closable for customButtonsOnHover (#18479) 2019-05-28 21:26:38 -07:00
Milan Burda
02e325d1ab chore: remove leftovers from memory property removal from app.getAppMetrics() (#18422) 2019-05-28 14:20:32 -07:00
trop[bot]
e77b6878a9 fix: 'page-title-updated' event forwarding + documentation (#18320) 2019-05-21 16:21:26 +09:00
Electron Bot
b763d81d79 Bump v4.2.2 2019-05-16 14:21:46 -07:00
Cheng Zhao
7521454161 fix: lagging when using tabbed window (#18314) 2019-05-16 14:20:09 -07:00
Electron Bot
36f0583077 Bump v4.2.1 2019-05-14 11:52:55 -07:00
Jeremy Apthorp
96391dbb3b fix: default enable_negotiate_port to false (4-2-x) (#18287)
* fix: default enable_negotiate_port to false (#18251)

* chore: command_line is not a pointer
2019-05-14 11:16:00 -07:00
Electron Bot
d5cf2e1244 Bump v4.2.0 2019-05-02 14:34:52 -07:00
Samuel Attard
9a665eb5fb feat: allow setting of global fallback user agent (#18110) 2019-05-02 13:06:01 -07:00
Samuel Attard
6b16695ba3 build: reset version to 4.2.0-beta.0 in prep for 4.2.0 2019-05-01 16:55:28 -07:00
Milan Burda
ac714a1d02 fix: allow stream protocols to return headers with multiple values (#14887) (#18094)
* 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.
2019-05-01 16:36:42 -07:00
trop[bot]
e5e94fce02 docs: fix webContents 'new-window' event handler sample (#18096) 2019-05-01 13:43:39 -07:00
trop[bot]
f65a7983c6 chore: disable Vulkan validation layers (#18060) 2019-05-01 10:46:08 -07:00
trop[bot]
d1f5d20098 fix: explicitly focus window on win.show() (#18079) 2019-05-01 10:44:37 -07:00
Milan Burda
2f67cd5b35 Revert "build: disable Vulkan support by default (#17789)" (#17987)
This reverts commit ccad8ec125.
2019-04-30 06:43:12 -07:00
Milan Burda
3fd0ac6d44 fix: remove non-existent gpu-crashed event on <webview> (#17317) (#18003) 2019-04-29 15:22:01 -07:00
Electron Bot
4a6cad7ba5 Bump v4.1.5 2019-04-24 14:35:12 -07:00
Taiki Akita
eccede0c0d fix: add a compatibility EVP_CIPH_OCB_MODE value (#16214). (#17873)
* fix: add a compatibility EVP_CIPH_OCB_MODE value (#16214).

Backported google/boringssl@4b9683 to 4.1.x branch. This patch
replaces the no-op modes with negative numbers rather than zero.
Stream ciphers like RC4 report a "mode" of zero, so code comparing
the mode to a dummy value will get confused.

This patch fixed issue #16214.

* revert: "fix: add a compatibility EVP_CIPH_OCB_MODE value (#16214)."

This reverts commit f1156a8ee4.

* fix: (recommit) add a compatibility EVP_CIPH_OCB_MODE value (#16214).

Recommited change @f1156a with patches generated by
"git-export-patches".
2019-04-23 09:10:42 -07:00
Jeff Genovy
9ed83e7512 fix: Add support for the new Japanese Era (Reiwa) to ICU (#17833)
This change backports changes from the upstream ICU project's
maintenance release for ICU 62.2 in order to enable support for the new
Japanese Era "Reiwa" in Chromium 69 (which uses ICU version 62.1).

Upstream release: http://site.icu-project.org/download/62

Additionally, this change also includes the following fixes/updates:
 - Update IANA time zone tzdata to 2019a.
 - Japanese calendar era calculation should use local time, not UTC.
 - Japanese calendar: use all valid eras for calendar calculations.
 - Fix LocalMemory move constructor delete issue.

This change requires re-generating the checked-in Chromium ICU data
files (ex: icudtl.dat) in order for them to have the updated data for
the new era name. However, that will be done with a separate commit in
order to make the ".patch" files cleaner.

Note: All of the checked-in files are be regenerated, even though
the Electron project only uses the "common" one.

Also included in this change are some minor changes to the scripts used
by Chromium for building the data files so that they actually work on
Ubuntu.
2019-04-19 14:41:21 -07:00
Milan Burda
b3ed83055c fix: execute session preload scripts in sandboxed renderers (#17875) 2019-04-19 12:50:29 -07:00
Milan Burda
2360f3eb11 fix: copy pixels in AddImageSkiaRepFromBuffer (#17843) (#17862) 2019-04-18 08:53:32 -07:00
trop[bot]
4175e947bb doc: document occasional mismatch between NSImageName and string (#17848) 2019-04-17 21:01:17 -04:00
trop[bot]
1cbcd05ab7 fix: correct crash reporter for Windows on Arm (#17793)
ARM64 cleans up and moves around RUNTIME_FUNCTION structure fields.
With this patch applied, electron should build cleanly for Windows on Arm.
2019-04-16 19:42:01 -04:00
trop[bot]
40c7e767ef fix: reset the NSUserNotication handle on dismiss (#17821) 2019-04-16 16:24:16 -07:00
Milan Burda
66c5a8362a fix: emit process 'loaded' event in sandboxed renderers (#17807) 2019-04-16 16:23:53 -07:00
Shelley Vohr
d6ba1421fa docs: note desktop audio limitation on macOS (#17815) 2019-04-16 18:52:37 -04:00
Alexey Kuzmin
ccad8ec125 build: disable Vulkan support by default (#17789)
Is was enabled in
327326656f
which landed in 69.0.3460.0

Vulkan support would require a command line parameter "--enable-vulkan"
to be passes to a binary to be enabled anyway,
so this change doesn't actual alter the current behaviour of Electron.

(cherry picked from commit e05e45d62d)
2019-04-16 11:30:15 -04:00
Milan Burda
d2bff97199 fix: update fix_font_thickness.patch (#17737) 2019-04-15 19:53:10 -04:00
Milan Burda
46a1ce8117 fix: report module name when require fails in sandboxed renderers (#17704) 2019-04-09 21:00:45 -04:00
Electron Bot
042f24c5b6 Bump v4.1.4 2019-04-04 11:36:42 -07:00
Milan Burda
c3624116ae fix: Issue 907211: Heap-use-after-free in viz::HostFrameSinkManager::InvalidateFrameSinkId (#17658) 2019-04-04 11:33:48 -07:00
Milan Burda
492397b815 fix: Issue 912211: Security: a use-after-free in RenderFrameImple can lead to an RCE (#17659) 2019-04-04 09:11:45 -07:00
Shelley Vohr
3a0b72e5dc fix: expose process.getProcessMemoryInfo to sandbox (#17669) 2019-04-04 09:09:00 -07:00
trop[bot]
914939c793 build: optionally exclude some parts of patches from being applied (#17684) 2019-04-04 09:08:46 -07:00
trop[bot]
b8874913f2 docs: clarify cookie domain normalization (#17662) 2019-04-02 18:26:42 -07:00
Alexey Kuzmin
dc959414a3 fix: Make --explicitly-allowed-ports work with NetworkService. (#17642)
https://chromium-review.googlesource.com/c/1400042
2019-04-02 13:25:14 -07:00
Milan Burda
bcdc4435b4 fix: Issue 888678: Heap-use-after-free in content::KeyboardLockServiceImpl::GetKeyboardLayoutMap (#17632) 2019-04-01 18:55:51 -07:00
Electron Bot
303da32dd3 Bump v4.1.3 2019-03-29 10:19:35 -07:00
Robo
8fd91cc35b fix: make StreamSubscriber ref counted (#17267)
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-29 12:28:55 -04:00
Milan Burda
3001c76483 fix: backport [IntersectionObserver] Report coordinates as CSS pixels. (#17583) 2019-03-29 17:18:39 +01:00
Electron Bot
28a9963ca7 Bump v4.1.2 2019-03-28 13:04:12 -07:00
Samuel Attard
b5f290d8d2 fix: add patch for framework file permissions (#17582) 2019-03-28 13:01:05 -07:00
trop[bot]
4574a21ed3 fix: handle a race condition between preload scripts executing and navigations (#17596)
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 12:56:23 -07:00
Samuel Attard
7aaaa24da7 Revert "Bump v4.1.2"
This reverts commit ded4a94a92.
2019-03-28 12:53:49 -07:00
Electron Bot
ded4a94a92 Bump v4.1.2 2019-03-28 08:57:59 -07:00
trop[bot]
c6fd15e641 fix: correctly return properties on the netLog module (#17544) 2019-03-27 15:38:16 -07:00
Electron Bot
36965a6b4e Revert "Bump v4.1.2"
This reverts commit 53c3e01af6.
2019-03-27 14:22:01 -07:00
Electron Bot
53c3e01af6 Bump v4.1.2 2019-03-27 13:58:56 -07:00
Jeff Genovy
d2571f3a9e fix: backport ICU changes for Japanese Era placeholder name (#17518)
This change backports changes from the upstream ICU 62.1 maintenance
branch into the Chromium copy of ICU, in order to enable the
"placeholder era" for the upcoming new Japanese Era.

Upstream change: https://github.com/unicode-org/icu/pull/514
Upstream ticket: https://unicode-org.atlassian.net/browse/ICU-20482

With this change you can set/define an Environment Variable
`ICU_ENABLE_TENTATIVE_ERA` to `true which will enable the placeholder
era name.

Note: This change requires re-generating the checked-in Chromium ICU
data files (icudtl.dat) in order for them to have the updated data
for the placeholder era name.

Also included in this change are some minor changes to the scripts
used by Chromium for building the data files so that they actually
work on Ubuntu.
2019-03-27 10:22:45 -04:00
trop[bot]
e1a8050eab fix: add missing buffer size check in nativeImage (#17567) 2019-03-27 09:37:13 -04:00
Samuel Attard
7b1f5a9cea fix: backport KDE icon size fix (#17497) 2019-03-21 14:19:11 -05:00
trop[bot]
5b9393c173 docs: clarify documentation for getLastCrashReport (backport: 4-1-x) (#17494)
* docs: clarify documentation for getLastCrashReport

* address feedback
2019-03-20 22:04:15 -07:00
trop[bot]
98180568f2 fix: take foreground visibility into account for isVisible on macOS (#17492) 2019-03-20 20:40:52 -07:00
Electron Bot
f005ac8d8b Bump v4.1.1 2019-03-20 13:49:36 -07:00
trop[bot]
a0d824ccf5 fix: use a more unique identifier for NSUserNotification instances (#17483)
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 11:19:08 -07:00
trop[bot]
ee1529587c fix: throw error when inserting menu items out-of-range (#17461)
* fix: throw error when inserting menu items out-of-range

* also check pos < 0
2019-03-19 12:59:11 -07:00
trop[bot]
5e665c1d38 fix: don't crash when nativeImage.createFromBuffer() called with invalid buffer (#17373) 2019-03-19 12:14:11 -07:00
Milan Burda
61d1df2b43 fix: remove crashReporterRenderer.sendSync() workaround for init() (#17409) 2019-03-19 11:56:39 -07:00
Electron Bot
6c4ee66165 Bump v4.1.0 2019-03-13 16:12:16 -07:00
Samuel Attard
84b014577f build: reset version to 4.1.0-beta.0 in preparation for 4.1.0 stable release 2019-03-13 15:18:05 -07:00
trop[bot]
84ec42463b fix: remove label/image from segment if they are mutated to undefined/null (#17335) 2019-03-11 17:19:53 -07:00
Jeremy Apthorp
01c8f698ee fix: crash in ECDH.setPrivateKey (#17297) 2019-03-08 14:06:57 -08:00
trop[bot]
f53a9c1268 test: fix incorrect reference to skip (#17280) 2019-03-08 16:12:23 -05:00
Electron Bot
56c545f679 Bump v4.0.8 2019-03-07 11:31:03 -08:00
Jeremy Apthorp
34c1a53441 fix: FileReader: Make a copy of the ArrayBuffer when returning partial results (#17256)
backports https://chromium-review.googlesource.com/c/chromium/src/+/1495209
2019-03-07 11:26:01 -08:00
Electron Bot
8d330f7dde Bump v4.0.7 2019-03-04 14:50:36 -08:00
Jeremy Apthorp
3c0d90eca8 fix: correct chrome version in chrome_version.h (#17218) 2019-03-04 13:42:08 -08:00
trop[bot]
9d30245fb4 fix: access of out-of-scope reference in ShowOpenDialog and ShowSaveDialog (#17176)
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-03-01 08:18:50 +00:00
Alexey Kuzmin
0efccf45bc chore: remove an unused header (#17158) 2019-02-28 17:32:49 +01:00
trop[bot]
4e0d4c4785 fix: set cancelId to 1 when defaultId == 0 and no 'cancel' button (#17151) 2019-02-27 13:01:34 +00:00
trop[bot]
6d313b48f2 Fix webContents.print() (#17116) 2019-02-27 08:25:15 +00:00
Electron Bot
330e8abd16 Bump v4.0.6 2019-02-26 15:01:41 -08:00
Roller Bot
ffd8c36f4f chore: bump chromium in DEPS to 69.0.3497.128 (#16636) 2019-02-25 18:00:06 -08:00
trop[bot]
efa12608e0 fix: pass result to chrome.tabs.executeScript callback (backport: 4-0-x) (#16948)
* 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-15 10:21:46 -08:00
Jeremy Apthorp
969ac4ced1 fix: enable inputpane virtual keyboard by default (#16944)
backports e6c18518b from chromium, fixes #13832
2019-02-15 07:38:47 -10:00
trop[bot]
a2d77352e5 docs: update dialog documentation for "undefined" ret vals (#16976) 2019-02-14 17:33:44 -08:00
Electron Bot
55c48efb90 Bump v4.0.5 2019-02-14 14:09:13 -08:00
Jeremy Apthorp
7a285cd0ea fix: renderer hang in cc BeginMainFrame (#16946)
* chore: re-export chromium patches

this is just git-import-patches && git-export-patches

* fix: renderer hang in cc BeginMainFrame

backports https://chromium-review.googlesource.com/c/chromium/src/+/1419132
2019-02-14 05:50:22 -10:00
John Kleinschmidt
415fbfaf41 ci: Move MacOS builds to CircleCI (4-0-x) (#16933)
* ci: build mac on CircleCI (#16656)

* ci: make macOS CI faster (#16766)

* ci: cache brew update result

* ci: checkout and sync the macOS build on a linux machine for speed

* ci: set MAS_BUILD=true on mas builds (#16824)

* build: remove non-arm vstsJobs (#16793)

* ci: fix binaries for chromedriver build on macOS
2019-02-13 11:25:03 -10:00
trop[bot]
1a41e196e8 build: ensure that the uploaded symbol path is correct for our symbol server (#16916) 2019-02-13 07:08:50 -10:00
trop[bot]
4f63509ebd fix: backport patch to sync exposed crypto (backport: 4-0-x) (#16912) 2019-02-12 21:29:57 -08:00
Cheng Zhao
45a554f305 Fix memory leak when using webFrame and spell checker (4-0-x) (#16772)
* 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-12 06:36:23 -10:00
trop[bot]
29a0bc23c4 fix: release-notes plays more nicely with clerk (#16901)
Explicitly look not just for Clerk's "notes persisted"
message but also its "no release notes" message.
2019-02-12 10:17:40 -06:00
trop[bot]
f7508f17c5 chore: fix "creates offscreen window with correct size" spec on Mac with Retina display (#16877) 2019-02-11 13:14:44 -08:00
trop[bot]
d2538cd3b1 fix: enable property having no effect on submenus (#16857) 2019-02-09 09:58:31 -08:00
trop[bot]
fae52d8e4a fix: don't forward IPC filtering events to app for dev-tools and extensions (#16716) 2019-02-08 15:35:18 -08:00
trop[bot]
064f198162 chore: make crash-reporter specs not use URL module (#16849) 2019-02-08 15:32:41 -08:00
trop[bot]
fd2a9cb056 chore: disable get/setLoginItemSettings specs (#16844) 2019-02-08 15:13:44 -08:00
trop[bot]
b4c27eeaa1 fix: don't construct submenu if it's invisible (#16845) 2019-02-08 15:13:07 -08:00
trop[bot]
93b4d20c59 fix: display empty menu item for non-visible submenus (backport: 4-0-x) (#16847)
* fix: display empty menu item for nonvisible submenus

* use Chromium UI string ID
2019-02-08 15:12:34 -08:00
trop[bot]
c647bf5d27 docs: added webContents.getType() method (backport: 4-0-x) (#16786)
* 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-07 08:51:54 -08:00
trop[bot]
cbca75d184 build: ensure index.json is actually valid JSON before uploading (backport: 4-0-x) (#16750)
* build: ensure index.json is actually valid JSON before uploading

* chore: fix py linting for validation of index.json
2019-02-05 15:01:09 -08:00
trop[bot]
8054fc83ac fix: crash when calling setProgressBar on macOS (backport: 4-0-x) (#16727)
* fix: correctly check whether dock has progress bar

* fix: do not leak memory when setting dockTile
2019-02-04 20:56:38 -08:00
Shelley Vohr
0b7680aa14 fix: correctly handle IPC for promise-based methods (#16433) (#16654) 2019-02-04 16:01:42 -08:00
Shelley Vohr
668e85dd7c fix: show proper clerk notes in release notes script (#16694)
* fix: show proper clerk notes in release notes script (backport: 4-0-x) (#16678)

* 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

* address throw edge case
2019-02-04 14:09:56 -08:00
Milan Burda
e253c9bfe6 feat: add additional remote APIs filtering (#16688) 2019-02-04 08:46:54 -08:00
Birunthan Mohanathas
c00d3536d1 fix: use async save dialog for anchor download attribute (4-0-x) (#16647)
Backport of #16612 and #16646

Notes: Fix broken save dialog on macOS for `<a>` downloads
2019-02-03 23:55:18 -08:00
Electron Bot
0710d69acd Bump v4.0.4 2019-02-01 18:16:15 -08:00
Shelley Vohr
8a25cfcadc Revert "fix: show proper clerk notes in release notes script (backport: 4-0-x) (#16678)"
This reverts commit 3f68d69c40.
2019-02-01 18:14:19 -08:00
Shelley Vohr
6865206ea7 Revert "Bump v4.0.4"
This reverts commit 27ff31899b.
2019-02-01 18:07:58 -08:00
Samuel Attard
abb1a09f16 fix: use a new Electron dedicated ABI number for Electron 4.0 (#16687) 2019-02-01 17:44:31 -08:00
trop[bot]
a184e37f25 docs: fix referrer typedef in OnCompletedDetails (#16674) 2019-02-01 17:44:05 -08:00
trop[bot]
3f68d69c40 fix: show proper clerk notes in release notes script (backport: 4-0-x) (#16678)
* 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 17:43:57 -08:00
Shelley Vohr
0dd8fd57de Undo (#16690)
* Revert "fix asset fail workaround (#16680)"

This reverts commit e61c8543f1.

* Revert "build: hack around GitHub upload API failure / flake (#16667)"

This reverts commit 1098d0f414.
2019-02-01 17:42:56 -08:00
Electron Bot
27ff31899b Bump v4.0.4 2019-02-01 10:23:38 -08:00
Shelley Vohr
e61c8543f1 fix asset fail workaround (#16680)
* fix asset fail workaround

* uploadResponse.data.id => uploadResponse.id

* asset_id => id
2019-02-01 10:21:50 -08:00
Shelley Vohr
f774303923 Revert "Bump v4.0.4"
This reverts commit 39f26838ef.
2019-02-01 09:48:37 -08:00
Electron Bot
39f26838ef Bump v4.0.4 2019-02-01 08:28:02 -08:00
Shelley Vohr
1098d0f414 build: hack around GitHub upload API failure / flake (#16667) 2019-02-01 08:26:26 -08:00
Shelley Vohr
ca6f494ba6 Revert "Bump v4.0.4"
This reverts commit 7f6c2372f8.
2019-02-01 08:20:26 -08:00
Electron Bot
7f6c2372f8 Bump v4.0.4 2019-01-31 08:45:46 -08:00
Charles Kerr
20a6be8962 fix: move open handling to web-contents.js (#16623) 2019-01-31 14:57:30 +01:00
trop[bot]
28c19dad8f fix: expose aes-cfb ciphers from boringssl (#16617)
Ref #16195
2019-01-30 16:48:13 -08:00
Nitish Sakhawalkar
ada60a938a feat: Implement process.getProcessMemoryInfo to get the process memory usage (#14847) (#16591)
* 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
2019-01-30 12:44:55 -08:00
trop[bot]
0ee1f51883 docs: cancel is optional in OnHeadersReceivedResponse (#16548) 2019-01-29 21:09:42 -08:00
Jeremy Apthorp
56276d2102 fix: expose ripemd160 hash from boringssl (#16454) (#16574)
Ref #16195
2019-01-28 17:34:48 -08:00
Electron Bot
90407259a6 Bump v4.0.3 2019-01-28 15:40:32 -08:00
Jeremy Apthorp
939e65d262 fix: backport a memory leak fix in webrtc (#16555) 2019-01-28 11:47:33 -08:00
Electron Bot
6a797f2199 Revert "Bump v4.0.3"
This reverts commit 4b5afb5ccf.
2019-01-25 16:04:49 -08:00
Electron Bot
4b5afb5ccf Bump v4.0.3 2019-01-25 15:48:02 -08:00
Jeremy Apthorp
cf079f6c43 fix: registerStreamProtocol callback with large chunks (backport: 4-0-x) (#16540) 2019-01-25 10:59:08 -08:00
Nitish Sakhawalkar
0659093dfa fix: correctly destroy spellcheck client (#16524)
* fix: Destroy spellcheck client

* Address review comments
2019-01-25 10:39:46 -06:00
Lionel RADISSON
fb8bde0094 fix extra closing parenthesis (#16528) 2019-01-25 09:43:38 -05:00
Andy Dill
f747a66109 refactor: move text-to-speech out of chromium_src (#15024) (#16437)
* 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
2019-01-23 13:33:55 -05:00
trop[bot]
67ac6648c4 build: fail a build if some hooks don't succeed (#16505) 2019-01-23 11:29:43 -05:00
trop[bot]
84f1dc7f8c fix: takeHeapSnapshot() using public IPC channel for internal implementation (#16484) 2019-01-22 11:07:30 -08:00
trop[bot]
7c55db280b docs: fix web-request.md listener signatures in electron.d.ts (#16487) 2019-01-22 11:07:01 -08:00
Electron Bot
0f02adf614 Bump v4.0.2 2019-01-22 09:58:50 -08:00
trop[bot]
e7d7cc35e0 fix: prevent double-destroy of window (#16478) 2019-01-21 21:17:24 -08:00
trop[bot]
89ea2105a5 chore: always try to nuke tags (#16453) 2019-01-18 16:36:17 -08:00
Jeremy Apthorp
8c88d45d4a chore: remove unused webrtc patches (#16440)
Closes #16424
2019-01-17 15:50:26 -08:00
Electron Bot
9be7ca0bf0 Revert "Bump v4.0.2"
This reverts commit 19b692123f.
2019-01-14 14:35:02 -08:00
Electron Bot
19b692123f Bump v4.0.2 2019-01-14 14:26:11 -08:00
Electron Bot
d3fbcb8179 Revert "Bump v4.0.2"
This reverts commit e050af26b6.
2019-01-14 10:48:30 -08:00
Electron Bot
e050af26b6 Bump v4.0.2 2019-01-14 10:24:03 -08:00
Shelley Vohr
e3e17c53e4 chore: remove accidental octokit introduction (#16393) 2019-01-14 10:19:18 -08:00
trop[bot]
f3bbb5a042 fix: emit IPC event in correct context if isolation and sandbox enabled (backport: 4-0-x) (#16376)
* 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 16:42:44 +01:00
trop[bot]
2e69f0a821 build: fix the build with enable_run_as_node disabled (#16367) 2019-01-12 16:29:01 +01:00
trop[bot]
db933fd5c8 security: improve IPC validation in guest-view-manager (#16283) 2019-01-11 16:34:30 -08:00
Charles Kerr
8d99172af1 chore: update script/release/notes/*js to master (#16368)
Manual backport of https://github.com/electron/electron/pull/16343
to 4-0-x.
2019-01-11 15:54:25 -06:00
Electron Bot
e601765c5b Revert "Bump v4.0.2"
This reverts commit da6079e422.
2019-01-11 12:19:54 -08:00
Electron Bot
da6079e422 Bump v4.0.2 2019-01-11 11:59:11 -08:00
trop[bot]
e05e18197b fix: beep on Ubuntu (#16357)
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-11 08:14:46 -08:00
trop[bot]
53a35db44f test: allow retries for flaky mas loginitem specs (#16359) 2019-01-11 08:12:18 -08:00
trop[bot]
52eee85e78 chore: fix tag cleanup (#16356) 2019-01-10 14:11:11 -08:00
trop[bot]
1089dd36b3 fix: properly determine if WebContents is offscreen in WebContentsDelegate (#16340) 2019-01-10 10:35:01 -05:00
trop[bot]
1f411d33d4 Add instructions to get Notifications working on Win 10 Update (#16326)
Fails silently and was frustratingly hard to know why. Hope this save a lot of people some time.
2019-01-08 16:42:56 -05:00
trop[bot]
0b6cc93896 fix: register accelerator if role has no registerAccelerator (backport: 4-0-x) (#16314)
* fix: register accelerator if role has no registerAccelerator

* ensure roles[role].registerAccelerator is defined
2019-01-08 13:09:45 -05:00
trop[bot]
bad9ff6571 build: extract external binaries config (#16316) 2019-01-08 11:43:42 +01:00
trop[bot]
26adc6f0bf chore: @electron/nightly => electron-nightly (#16281) 2019-01-04 14:56:13 -08:00
trop[bot]
adf5d60f41 chore: result => result.data (4-0-x) (#16275) 2019-01-04 13:31:01 -08:00
trop[bot]
ada400514a chore: add additional logging during asset upload (4-0-x) (#16280) 2019-01-04 13:15:52 -08:00
trop[bot]
d9d7c34709 docs: Update reference to xcode 8.3.3 (backport: 4-0-x) (#16272)
* Update reference to xcode

* Update to reflect use of 10.12 SDK
2019-01-04 15:43:06 -05:00
Electron Bot
db32fc2386 Bump v4.0.1 2019-01-04 10:31:46 -08:00
trop[bot]
70af1c1b14 fix: error if a11y support changed before ready (#16268) 2019-01-04 09:42:46 -08:00
Shelley Vohr
c783c5eb70 fix: don't register some shortcuts without accessibility (#16262) 2019-01-04 09:42:19 -08:00
trop[bot]
9fa37bdc13 chore: publish nightlies to electron-nightly (backport: 4-0-x) (#16234)
* chore: publish nightlies to electron-nightly

* electron-nightly => @electron/nightly
2019-01-03 10:04:53 -08:00
trop[bot]
73e3667b8d security: don't allow arbitrary methods to be invoked on webContents (#16123) 2019-01-03 10:03:24 -08:00
trop[bot]
d50bd803ba chore: update deprecated LSGetApplicationForURL (backport: 4-0-x) (#16242)
* chore: update deprecated LSGetApplicationForURL

* wrap with @available
2019-01-02 21:21:04 -08:00
Cobinja
5e82efa6db backport: fix menubar item fgcolor (4-0-x) (#16223) 2019-01-02 10:22:42 -08:00
trop[bot]
a8ccaf1cdb chore: update @types/node dep (#16177) 2018-12-21 13:01:04 -07:00
trop[bot]
0fef224f0f security: block chrome.tabs.executeScript() for non chrome-extension: URLs (#16124) 2018-12-20 18:43:30 -07:00
trop[bot]
c24717a0b7 chore: make nugget quiet by default (backport: 4-0-x) (#16154)
* chore: make nugget quiet by default

* chore: allow nugget quiet to be passed via cli
2018-12-20 18:43:19 -07:00
trop[bot]
2d0097e081 fix: extending tracing startRecording API to take a full tracing config (#16158)
This allows memory-infra to be traced correctly.
Fixes #12506.
2018-12-20 18:43:06 -07:00
Electron Bot
005264ca1f Bump v4.0.0 2018-12-20 10:40:08 -08:00
Michelle Tilley
86cbe5bab7 fix: set release notes body to a string (#16164) 2018-12-20 10:38:29 -08:00
Jeremy Apthorp
3caed837e7 fix: security warnings misfiring in devtools webcontents (#16152) 2018-12-20 09:48:23 +09:00
trop[bot]
3be5734e0b docs: note that visual zoom is disabled by default (#16137) 2018-12-18 23:43:15 -07:00
trop[bot]
109c4d4079 chore: release.id => release.data.id (#16135) 2018-12-18 19:53:39 -07:00
Electron Bot
33c736075f Bump v4.0.0-beta.11 2018-12-18 14:14:36 -08:00
Michelle Tilley
b4472ef0ae Revert "Bump v4.0.0-beta.11"
This reverts commit 0c690f7212.
2018-12-18 14:07:24 -08:00
Electron Bot
0c690f7212 Bump v4.0.0-beta.11 2018-12-18 10:57:55 -08:00
Electron Bot
31273670b8 Revert "Bump v4.0.0-beta.11"
This reverts commit c50e48937d.
2018-12-18 10:54:14 -08:00
Electron Bot
c50e48937d Bump v4.0.0-beta.11 2018-12-18 09:54:33 -08:00
trop[bot]
5c9f4d600e fix: fix Electron not starting in development from the CLI (4-0-x) (#16118) 2018-12-18 09:31:55 -08:00
Cheng Zhao
bf01cd5e57 fix: register webview in main world when using contextIsolation (#16069) 2018-12-18 10:02:50 +09:00
Electron Bot
864bdf647d Bump v4.0.0-beta.10 2018-12-17 12:31:34 -08:00
Ben Gotow
f6fa88ac23 chore: backport printing changes (#15023, #15143) to 4-0-x (#15976)
* 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

* 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

* chore: cleanup api usage from //chrome
2018-12-17 14:26:32 -06:00
Robo
bc68c26c9b build: upgrade //third_party/sqlite from 3.24 to 3.26 (#16073) 2018-12-17 10:47:55 -05:00
trop[bot]
6a9c3ef1af chore: correctly capitalize releaseID (#16081) 2018-12-17 10:08:44 -05:00
Jeremy Apthorp
1b0d729e81 test: fix remote-debugging-port test calling done twice (#15857) (#16075) 2018-12-14 15:51:54 -05:00
Michelle Tilley
6b8ec1ce8d fix: remove event monitor before destroying window (4-0-x) (#16063) 2018-12-14 12:50:41 -08:00
Charles Kerr
c6145d969a chore: backport new release notes generator to 4-0-x (#15935)
* chore: backport new release notes generator to 4-0-x

* chore: backport the prepare-release invocation too
2018-12-14 14:18:03 -05:00
Cheng Zhao
80ef116265 chore: simplify main world setup of contextIsolation (#16065) 2018-12-14 13:26:03 +09:00
Jeremy Apthorp
b2913e5b7c chore: add deprecation warning about new webviewTag default (#16059) 2018-12-14 10:15:12 +09:00
trop[bot]
05d6dbc06a docs: contextIsolation is no longer experimental (#16049) 2018-12-13 10:46:29 -08:00
Jeremy Apthorp
2eaf88ebc1 chore: add deprecation warning for contextIsolation default change (#16040) 2018-12-13 10:43:26 -08:00
trop[bot]
8f938c7a25 ci: Cleanup build dirs on Azure Devops (backport: 4-0-x) (#16048)
* 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 13:13:57 -05:00
trop[bot]
84d66c8761 chore: warn when people attempt to use the Electron module to do Electron things but from node (backport: 4-0-x) (#15977)
* chore: warn when people attempt to use the Electron module to do Electron things but from node

* update node env console warning
2018-12-12 15:38:36 -08:00
trop[bot]
6ba053434c fix: fix an original-fs regression introduced in 4.0 betas (backport: 4-0-x) (#16038)
* fix: fix an original-fs regression introduced in 4.0 betas

* chore: remove cruft from earlier draft
2018-12-12 15:35:56 -08:00
trop[bot]
12504cce2d build: make it possible to pass a "--directory" arg to "git am" (#16026) 2018-12-12 18:29:02 +05:30
Birunthan Mohanathas
388197dc3a fix: restore ability to disable color correct rendering (backport: 4-0-x) (#16020)
Backport of #15898

See that PR for details.

Notes: Add `--disable-color-correct-rendering` switch
2018-12-11 14:58:00 -06:00
trop[bot]
dd595a7f49 fix: return pointer instead of pointer's content (#16022) 2018-12-11 11:55:06 -08:00
trop[bot]
61946e4cf4 chore: add webui_resources to pak (#16023)
fixes #16006
2018-12-11 09:56:00 -08:00
trop[bot]
e324fc4cfb fix: allow 2 threads for CreateIoCompletionPort on single-core to prevent busy looping (backport: 4-0-x) (#16012)
* 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 16:11:23 +09:00
Jeremy Apthorp
913a433576 chore: warn when nodeIntegration's default is relied on (#16004) 2018-12-11 11:03:01 +09:00
Electron Bot
e8d4a07137 Bump v4.0.0-beta.9 2018-12-10 14:23:46 -08:00
trop[bot]
d9a920e19a fix: do not print an error for an expected condition (#15991) (#16000) 2018-12-10 14:05:34 -08:00
trop[bot]
c1031f6faf fix: incorrect view ordering for customButtonsOnHover (backport: 4-0-x) (#15996) 2018-12-10 13:48:05 -08:00
Shelley Vohr
366bc82c8f Revert "fix: use appropriate site instance for cross-site nav's (backport: 4-0-x) (#15969)" (#15995)
This reverts commit 3021870de4.
2018-12-10 09:36:27 -08:00
Shelley Vohr
dec66ea7d7 fix: move NativeWindow tracking to OSR WCV (#15585) (#15970)
* fix: move NativeWindow tracking to OSR WCV

* fix oops
2018-12-10 08:35:58 -08:00
Pedro Pontes
3021870de4 fix: use appropriate site instance for cross-site nav's (backport: 4-0-x) (#15969)
* fix: backport window.opener null (8100) fix to 4-0-x.

As part of this fix, Chromium's site isolation is enabled.

* fix: apply setting that couldn\'t be picked from master
2018-12-10 08:21:00 -08:00
trop[bot]
3bd1243aed feat: add media access APIs for macOS Mojave (#15948) 2018-12-07 08:40:40 -08:00
trop[bot]
4ad3a39f1d security: only handle related IPCs when <webview> tag is enabled (backport: 4-0-x) (#15931)
* refactor: move guest-view-manager related IPC handling out of rpc-server

* feat: only handle related IPCs when <webview> tag is enabled
2018-12-05 09:37:31 -08:00
trop[bot]
b41722fa08 chore: remove unused module (#15924) 2018-12-04 08:06:12 -08:00
trop[bot]
99a9f8a01b fix: prevent bluetooth device list from growing without bound (backport: 4-0-x) (#15866)
* fix: include bluetooth strings in build

* fix: prevent bluetooth device list from growing without bound
2018-11-30 14:44:41 -08:00
John Kleinschmidt
00534ebea4 ci: Renable ffmpeg and mksnapshot tests on Azure Devops (#15902)
Also, add testing of ffmpeg and mksnapshot to arm tests

(cherry picked from commit 515525cfc6)
2018-11-30 13:14:56 -08:00
Heilig Benedek
64deb36efc fix: backport patch that ensures that cookie store is always created (backport: 4-0-x) (#15890)
* 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>

* fix: disable cookie encryption for real
2018-11-30 12:33:14 -08:00
Jeremy Apthorp
a4ed644dd9 test: fix a bunch of flaky tests related to emittedOnce (backport: 4-0-x) (#15891)
Backports #15871
2018-11-30 12:33:00 -08:00
trop[bot]
01f3107528 chore: allow bumping stable => beta (#15908) 2018-11-30 11:17:13 -08:00
trop[bot]
70ebebf07f chore: improve granular release cleanup (backport: 4-0-x) (#15905)
* chore: improve granular release cleanup

* make releaseId optional
2018-11-30 11:01:32 -08:00
trop[bot]
8ac5da5110 chore: expose release id for use in cleanup (#15903) 2018-11-30 09:49:48 -08:00
Electron Bot
aa781277c6 Bump v4.0.0-beta.8 2018-11-29 14:50:53 -08:00
Shelley Vohr
284b5671f8 Revert "Bump v4.0.0-beta.8"
This reverts commit 39dffbfc89.
2018-11-29 14:46:08 -08:00
Electron Bot
39dffbfc89 Bump v4.0.0-beta.8 2018-11-29 10:55:05 -08:00
trop[bot]
d8ab2c7b1c fix: ignore unused freopen result (#15885) 2018-11-29 10:53:01 -08:00
trop[bot]
8b37e62717 test: attempt at fixing flaky takeHeapSnapshotTest (#15881)
ref #15095
2018-11-29 10:57:48 -06:00
trop[bot]
53e4cdf30a fix: osr windows respect display scale factor (#15865) 2018-11-29 08:14:09 -08:00
trop[bot]
428a2b5ad5 fix: form control rendering on 10.14 Mojave (#15869) 2018-11-28 22:26:48 -08:00
Shelley Vohr
4fe595652f Revert "Bump v4.0.0-beta.8"
This reverts commit 67902822af.
2018-11-28 18:56:43 -08:00
Electron Bot
67902822af Bump v4.0.0-beta.8 2018-11-28 16:42:30 -08:00
Shelley Vohr
5f70bae579 Revert "Bump v4.0.0-beta.8"
This reverts commit 91a52f7268.
2018-11-28 16:36:26 -08:00
trop[bot]
87bed0b52f fix: schedule a paint after browserview's background is set (#15797) 2018-11-28 11:09:10 -05:00
trop[bot]
020457f09b fix: add missing shell_resources.pak to repack target (backport: 4-0-x) (#15852)
* fix: add missing shell_resources.pak to repack target

Fixes #15815

* add a test

* kill socket before killing child process
2018-11-27 16:49:38 -05:00
Electron Bot
91a52f7268 Bump v4.0.0-beta.8 2018-11-27 11:01:01 -08:00
Shelley Vohr
9dc6a587ed Revert "Bump v4.0.0-beta.8"
This reverts commit 7828ea0805.
2018-11-27 10:59:26 -08:00
Electron Bot
7828ea0805 Bump v4.0.0-beta.8 2018-11-27 10:13:08 -08:00
Cheng Zhao
e2925fd1e7 fix: backport patch to fix scrolling problem (#15831) 2018-11-27 23:26:45 +09:00
Michelle Tilley
60894aac06 Revert "Bump v4.0.0-beta.8"
This reverts commit 3c859a5554.
2018-11-26 14:15:40 -08:00
trop[bot]
f451ce6416 feat: add registerAccelerator flag to allow menu items to optionally skip accelerator registration (backport: 4-0-x) (#15840)
* 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 16:15:47 -05:00
trop[bot]
a67408e875 fix: load the chrome.* API on chrome-extension pages in sandbox mode (#15794)
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-26 16:15:12 -05:00
Electron Bot
3c859a5554 Bump v4.0.0-beta.8 2018-11-26 12:47:30 -08:00
Michelle Tilley
49a564ecaa Revert "Bump v4.0.0-beta.8"
This reverts commit bcc8a274f8.
2018-11-26 12:16:16 -08:00
Electron Bot
bcc8a274f8 Bump v4.0.0-beta.8 2018-11-26 11:20:12 -08:00
trop[bot]
3276ebf65d fix: ensure that file descriptors 0/1/2 are opened at startup (backport: 4-0-x) (#15763)
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.
2018-11-26 10:26:54 -08:00
Michelle Tilley
3056868515 Revert "Bump v4.0.0-beta.8"
This reverts commit 87455600d0.
2018-11-21 20:28:41 -08:00
Electron Bot
87455600d0 Bump v4.0.0-beta.8 2018-11-21 17:21:32 -08:00
Michelle Tilley
907ab93042 Revert "Bump v4.0.0-beta.8"
This reverts commit d3b1f1ebc4.
2018-11-21 17:01:13 -08:00
Charles Kerr
d5f432b746 fix: bypass CORB when web security is disabled (#15737) (#15801)
Manual backport of `web_security_corb_patch` from `master`.
See https://github.com/electron/electron/pull/15737 for details.
2018-11-21 18:50:39 -06:00
Electron Bot
d3b1f1ebc4 Bump v4.0.0-beta.8 2018-11-21 15:32:24 -08:00
trop[bot]
3e5038a674 build: fix native_mksnapshot build (backport: 4-0-x) (#15799)
* 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 17:08:20 -06:00
trop[bot]
23498bd612 build: make make_locale_dirs idempotent (#15780) 2018-11-21 11:02:57 -05:00
trop[bot]
c5fd12c12e fix: restore missing .lproj directories (#15769)
the empty lproj directories help macOS to understand what locales the app supports
2018-11-20 01:07:59 -05:00
trop[bot]
646a7af997 docs: add note about win_delay_load_hook (backport: 4-0-x) (#15771)
* docs: add note about win_delay_load_hook

* Update docs/tutorial/using-native-node-modules.md

Co-Authored-By: nornagon <nornagon@nornagon.net>
2018-11-20 01:03:59 -05:00
Michelle Tilley
fd18171553 Revert "Bump v4.0.0-beta.8"
This reverts commit 2b833da9b9.
2018-11-19 13:31:03 -08:00
Electron Bot
2b833da9b9 Bump v4.0.0-beta.8 2018-11-19 11:02:49 -08:00
Pedro Pontes
682e3e32eb fix: revert: "window.open site instance should belong to the same browsing instance (#15698)" (#15756)
This reverts commit 33254c5bcc.
2018-11-19 09:59:56 -08:00
Cheng Zhao
639c07a9c8 docs: limits of nativeWindowOpen (#15751) 2018-11-19 09:22:23 -05:00
trop[bot]
c5e3b6350e fix: package swiftshader binaries (#15745) 2018-11-19 09:11:51 -05:00
Shelley Vohr
6fdbfdb835 feat: allow partial setting of window bounds (#15699) 2018-11-18 00:56:41 -05:00
Samuel Attard
85ece0a605 Revert "Bump v4.0.0-beta.8"
This reverts commit 43be9e9ed3.
2018-11-18 01:53:24 +11:00
Nitish Sakhawalkar
797338095c chore: Deprecate options in webcontents.findInPage (#15735)
* chore: Deprecate options in webcontents.findInPage
2018-11-16 14:26:02 -08:00
Electron Bot
43be9e9ed3 Bump v4.0.0-beta.8 2018-11-15 17:32:46 -08:00
trop[bot]
a7bc01b96b build: use different directory for generated breakpad symbols (#15720) 2018-11-15 13:18:49 -08:00
trop[bot]
03e98a0b76 docs: remove unsafe eval section of security tutorial (backport: 4-0-x) (#15685)
* docs: remove unsafe eval section of security tutorial

* lintfix
2018-11-14 08:48:18 -08:00
Alexey Kuzmin
6e4ca8b787 fix: bypass DOM storage quota (backport: 4-0-x) (#15688) 2018-11-14 00:50:26 +01:00
Pedro Pontes
33254c5bcc fix: window.open site instance should belong to the same browsing instance (#15698) 2018-11-13 17:43:05 +01:00
trop[bot]
7be10d50f4 feat: expose showAboutPanel for MacOS (#15680) 2018-11-13 11:31:37 -05:00
trop[bot]
0bb8ddaeeb feat: expose setBackgroundThrottling api (#15623) 2018-11-13 08:14:12 -08:00
trop[bot]
98d9e1c0a3 refactor: no longer require submenu for services menuitem (#15671) 2018-11-11 13:17:14 -05:00
Nitish Sakhawalkar
7cc7d4a360 fix: Menu accelerators not working (#15094) (#15662)
This change fixes the regression in the menu accelerators working in linux, on some environments.
2018-11-10 14:19:58 -05:00
trop[bot]
64874660e1 fix: NSWindow crash happening on macos 10.9 (#15670) 2018-11-10 14:19:34 -05:00
trop[bot]
2d0b80cf57 ci: add testing for mksnapshot (backport: 4-0-x) (#15655)
* ci: add testing for mksnapshot

* get mksnapshot from mksnapshot.zip

* Add mksnapshot.zip to artifacts

* Build mksnapshot zip on test

* save mksnapshot for tests

* build mksnapshot before persisting for tests

* Automatically overwrite files WITHOUT prompting
2018-11-09 08:50:58 -08:00
trop[bot]
c45ac5108e fix: send NSView* as the response to getNativeWindowHandle() instead of a null handle (#15644) 2018-11-08 21:13:32 -08:00
trop[bot]
b488b413f0 chore: remove the 'get-patch' script (#15643)
"script/git-export-patches" should be used instead.
2018-11-08 09:55:14 -08:00
trop[bot]
802e2fae8a fix: correctly package Login Helper in mas builds (#15615) 2018-11-08 08:32:49 -08:00
Heilig Benedek
f331b9234d fix: don't append Shift modifier text twice to accelerators (backport: 4-0-x) (#15401)
* 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

* style: no need for done call in sync tests
2018-11-08 12:24:36 -04:00
Cheng Zhao
83414457ea fix: destroy WebContents synchronously on shutdown (#15640) 2018-11-08 08:09:55 -08:00
Shelley Vohr
d488baa67f fix: correctly display zoom in accelerator on mac (backport: 4-0-x) (#15626)
* fix: correctly display zoom in accelerator on mac

* add original CL
2018-11-07 19:45:25 -08:00
trop[bot]
cbc0f452b3 chore: add simple set/unset loginitem spec (#15599) 2018-11-07 16:03:47 -08:00
Alexey Kuzmin
915fc3d62d chore: fix missing \n at end of exported patches (#15579) (#15619)
(cherry picked from commit 2e1c50c891)
2018-11-07 11:26:29 -04:00
trop[bot]
fec42919ed fix: update the "SSL_get_tlsext_status_type" patch (#15593)
It has been upstreamed by @nornagon
c0c9001440
2018-11-07 14:42:36 +01:00
trop[bot]
43e8dd7997 build: add v8_context_snapshot_generator to mksnapshot zip (#15608)
v8_context_snapshot_generator is needed when creating custom snapshots with mksnapshot
2018-11-06 21:11:03 -08:00
Electron Bot
3846a1b663 Bump v4.0.0-beta.7 2018-11-05 14:34:45 -08:00
trop[bot]
08d80295d7 fix: use NSURL path for receipt url (#15574) 2018-11-05 13:21:35 -08:00
trop[bot]
127ad9252e build: store the patches config in a json file (#15572) 2018-11-05 21:02:37 +01:00
Milan Burda
f43920e436 feat: add remote.require() / remote.getGlobal() filtering (#15562) 2018-11-05 17:23:46 +01:00
Alexey Kuzmin
62c0f842ae build: make pyyaml an optional dependency (#15566)
(cherry picked from commit d567bdba3d)
2018-11-05 11:19:51 -04:00
trop[bot]
acea9d1576 fix: honor properties.showHiddenFiles on Linux (#15506)
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-11-02 13:43:25 -07:00
trop[bot]
8e31642530 docs: fix the "second-instance" event handler signature in the docs (#15548) 2018-11-03 00:02:19 +11:00
trop[bot]
91533574c7 fix: use sendToAll method correctly in chrome-api (#15529) 2018-11-02 22:17:45 +11:00
trop[bot]
eef05cba6a docs: add Size as an option for pageSize in docs for printToPDF (#15526) 2018-11-01 07:16:11 -07:00
trop[bot]
7e63ca603d chore: publish to the latest tag correctly when releasing old versions (#15515) 2018-11-01 16:58:58 +11:00
trop[bot]
2b7f854a83 fix: explicitly set windowsHide to the old node default (#15511)
fixes #15467
2018-10-31 20:32:40 -07:00
Cheng Zhao
d07115e1dc Fix missing remote object error when calling remote function created in preload script (4-0-x) (#15446)
* fix: report wrong context error based on contextId

* fix: destroyed remote renderer warning is now async
2018-11-01 08:54:47 +09:00
Electron Bot
c268fd872c Bump v4.0.0-beta.6 2018-10-31 16:07:50 -07:00
trop[bot]
2ac5f33cf8 docs: http protocol handlers can access headers (backport: 4-0-x) (#15479)
* test: check http protocol handlers can access headers

* docs: http protocol handlers can access headers
2018-10-31 09:48:43 -07:00
trop[bot]
deac580f1a docs: add return type for subscribeNotification (#15500) 2018-10-31 09:48:30 -07:00
trop[bot]
a5fa18767a chore: re-enable execFileSync binary exec spec (#15482) 2018-10-31 07:51:19 -07:00
Milan Burda
3e4d77109a chore: bump minimum supported macOS version to 10.10 (#15357) (#15440) 2018-10-31 10:14:04 -04:00
trop[bot]
081af07892 doc: clarify menu item properties not available top-level (#15462) 2018-10-30 10:33:24 -07:00
trop[bot]
d1c48456e9 fix: use gio as default linux trash impl (backport: 4-0-x) (#15422)
* fix: use gio as default linux trash impl

* doc: add ELECTRON_TRASH env var
2018-10-26 11:10:29 -07:00
trop[bot]
282829c076 doc: correct ipcRenderer sendTo windowId param (#15419) 2018-10-26 08:36:26 -07:00
trop[bot]
6e759e0852 build: skip pyproto/ resources in zip.py (#15398) 2018-10-25 14:16:46 -04:00
Jeremy Apthorp
74bd220436 chore: deprecate apply-patches in favour of git-{import,export}-patches (#15300) (#15379)
Backport of 335e9f6
2018-10-25 14:16:23 -04:00
trop[bot]
d16304f2fb fix: folder open not working in devtools (#15397) 2018-10-25 10:06:38 -07:00
trop[bot]
ac1bfb2337 ci: make sure brew installed node is available in path (#15382) 2018-10-25 08:41:01 -04:00
trop[bot]
436b9a2ee1 fix: set NSResizableWindowMask at init time (#15383) 2018-10-25 15:30:38 +09:00
trop[bot]
9625faeede build: add conditions to check out Chromium and Node.js (#15372) 2018-10-24 23:16:42 +02:00
trop[bot]
8d4573f289 fix: update fs methods for options param (backport: 4-0-x) (#15350)
* fix: update fs methods for options param

* fix: update rest of fs methods with changes
2018-10-24 15:18:22 +11:00
John Kleinschmidt
041773c6bc build: add temporary debugging to generate_breakpad_symbols.py (#15346) 2018-10-24 11:21:33 +11:00
trop[bot]
a51ad1f956 fix: honor dialog.showMessageBox()'s Icon argument on Linux (#15343)
* 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:01:24 -07:00
trop[bot]
3a4c20b154 fix: Native window close crash (#15337) 2018-10-23 12:00:26 -07:00
Electron Bot
b2d4c519f8 Bump v4.0.0-beta.5 2018-10-23 06:16:31 -07:00
Samuel Attard
86e35e6221 Revert "Bump v4.0.0-beta.5"
This reverts commit 11ebf5c990.
2018-10-24 00:12:22 +11:00
trop[bot]
17b80ebb9c fix: correct reversed logic in NativeWindowMac::SetEnabled (#15325) 2018-10-23 23:22:29 +11:00
trop[bot]
a313aaea72 feat: security: add an option to disable the remote module (#15222)
Add `webPreferences.enableRemoteModule` option allowing to disable the remote module to increase sandbox security.
2018-10-23 10:35:59 +02:00
Electron Bot
11ebf5c990 Bump v4.0.0-beta.5 2018-10-22 23:47:26 -07:00
Michelle Tilley
daa0be56c9 Revert "Bump v4.0.0-beta.5"
This reverts commit e026e9aa82.
2018-10-22 18:11:10 -07:00
Electron Bot
e026e9aa82 Bump v4.0.0-beta.5 2018-10-22 17:24:31 -07:00
Michelle Tilley
fdfcd3cf12 Revert "Bump v4.0.0-beta.5"
This reverts commit f8450daa14.
2018-10-22 17:19:16 -07:00
Electron Bot
f8450daa14 Bump v4.0.0-beta.5 2018-10-22 13:56:31 -07:00
trop[bot]
f68d59d1a3 docs: we don't emit an event object for session-created (#15307) 2018-10-21 10:17:44 -07:00
trop[bot]
b8bc25665f fix: ability to fetch separators by id (#15294) 2018-10-19 22:31:55 -07:00
trop[bot]
9a5915995e build: document env vars expected to be set for the CI configs (backport: 4-0-x) (#15301)
* 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-19 22:31:31 -07:00
trop[bot]
4844af489a spec: increase MAS timeout for login items (#15297) 2018-10-19 22:31:07 -07:00
trop[bot]
fd4d0320cd chore: roll node (backport: 4-0-x) (#15260)
* chore: roll node

brings in electron/node#76 and electron/node#77

* chore: roll node
2018-10-19 13:15:23 -07:00
trop[bot]
57153ead89 fix: convert wstring to string on windows in node_bindings (#15268) 2018-10-19 13:37:25 -04:00
trop[bot]
e113ec78ec fix: loading of devtools extensions on startup (backport: 4-0-x) (#15265)
* 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 12:18:17 -04:00
trop[bot]
8a90bbf7ba test: asyncawaitify one of sandbox related tests (#15278) 2018-10-19 09:14:22 -07:00
trop[bot]
cd1c9c8a45 fix: trim app name and productName (#15287)
Fixes #15245
2018-10-19 09:13:26 -07:00
trop[bot]
6ba390e68a chore: make macOS release builds higher priority to skip the queue (#15285)
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 09:12:07 -07:00
trop[bot]
b77f41420b fix: make release-artifact-cleanup executable (backport: 4-0-x) (#15273)
* fix: make release-artifact-cleanup executable

* fix misc issues in cleanup script
2018-10-18 20:27:57 -07:00
trop[bot]
372fa4cdd0 fix: Convert to lower case in upload symbols script (backport: 4-0-x) (#15262)
* fix: Convert to lower case in upload symbols script

* fix: Convert to lower case in upload symbols script
2018-10-18 19:16:51 -07:00
trop[bot]
435ca8cff3 fix: enable NODE_OPTIONS env var (#15259) 2018-10-18 19:11:30 -07:00
trop[bot]
f30c382d41 fix: correctly enable and disable windows on Windows and Linux (backport: 4-0-x) (#15256)
* fix: correctly enable and disable windows

* Move has_child_modal_ to NativeWindowViews

* Track modal children as an int instead of a bool

* Use correct types

* Move Increment/DecrementChildModals to NativeWindowViews

* Use parent() in NativeWindowViews

* Add test for not enabling disabled parent when modal child closes
2018-10-19 11:53:32 +11:00
Electron Bot
f88a06df84 Bump v4.0.0-beta.4 2018-10-18 17:02:24 -07:00
trop[bot]
96a4fce100 fix: allow renaming electron.exe (backport: 4-0-x) (#15249)
* fix: allow renaming electron.exe

* add test

* fix lf-at-eol

* review comments

* fix lint

* fix lint-sam
2018-10-19 10:56:39 +11:00
trop[bot]
85b0f254be ci: make sure git directories don't have unneeded files in them (#15248) 2018-10-18 15:52:38 -04:00
Samuel Attard
9ac4611075 Revert "Bump v4.0.0-beta.4"
This reverts commit 6c18908333.
2018-10-19 01:14:11 +11:00
Electron Bot
6c18908333 Bump v4.0.0-beta.4 2018-10-18 05:53:22 -07:00
Samuel Attard
f2ca4c11c8 Revert "Bump v4.0.0-beta.4"
This reverts commit 7ab6073cdb.
2018-10-18 23:46:17 +11:00
Electron Bot
7ab6073cdb Bump v4.0.0-beta.4 2018-10-17 22:54:10 -07:00
Samuel Attard
b57d12583f Revert "Bump v4.0.0-beta.4"
This reverts commit 3cd67db581.
2018-10-18 14:48:15 +11:00
Electron Bot
3cd67db581 Bump v4.0.0-beta.4 2018-10-17 19:30:42 -07:00
Samuel Attard
630bc64f2f Revert "Bump v4.0.0-beta.4"
This reverts commit 6281e4ef0b.
2018-10-18 13:25:18 +11:00
Samuel Attard
a2b4458046 Revert "Bump v4.0.0-beta.5"
This reverts commit 1ff102e54a.
2018-10-18 13:25:01 +11:00
trop[bot]
fd205a1577 fix: small refactoring regressions (backport: 4-0-x) (#15224)
* fix: require('@electron/internal/browser/guest-view-manager')

* fix: add missing crashServicePid used by tests
2018-10-18 10:59:26 +11:00
Electron Bot
1ff102e54a Bump v4.0.0-beta.5 2018-10-17 10:24:56 -07:00
trop[bot]
d525083d75 fix: don't call ReadRawDataComplete if it's not necessary (#15210) 2018-10-18 02:18:42 +11:00
trop[bot]
f1a8483349 add width to webview iframe (#15205) 2018-10-17 11:54:55 +09:00
Cheng Zhao
5fbf1f9a54 Merge pull request #15193 from electron/window-open-warn-leak-4-0-x
docs: deprecation warning for using nativeWindowOpen with nodeIntegration (4-0-x)
2018-10-17 11:54:05 +09:00
Cheng Zhao
838f108821 fix: print warning after DOM is created 2018-10-17 10:45:05 +09:00
Cheng Zhao
df70487f80 docs: deprecation warning for using nativeWindowOpen with nodeIntegration 2018-10-16 20:23:35 +09:00
Cheng Zhao
0c09199f77 fix: do not enable node integration in child window if not enabled (#15190) 2018-10-16 19:25:40 +09:00
Electron Bot
6281e4ef0b Bump v4.0.0-beta.4 2018-10-15 22:59:19 -07:00
trop[bot]
abbf9c3ca3 fix: add microtask runner and fix promise test (backport: 4-0-x) (#15171)
* fix: Promise resolution and unit test

* Update to use microtask runner

* Address review
2018-10-16 11:44:25 +11:00
trop[bot]
b4f4ce1b84 fix: preserve background color through reload (backport: 4-0-x) (#15162)
* fix: preserve background color through reload

* fix: only set backgroundColor on top-level frames
2018-10-14 15:16:26 -07:00
trop[bot]
5f83e07748 fix: Memory > Profiles > Load in DevTools (#15156) 2018-10-14 10:58:13 -07:00
trop[bot]
203b41fe2e fix: Revert "fix: export zlib symbols (#15103)" (#15141)
This reverts commit 47b12eee57.
2018-10-14 01:55:08 +11:00
trop[bot]
c16b34539a split out login item tests (#15142) 2018-10-13 07:51:54 -07:00
trop[bot]
446275c85a ci: Fix timeout when generating breakpad symbols (backport: 4-0-x) (#15136)
* ci: breakup dump symbols into multiple steps.

* Update step-zip-symbols
2018-10-12 21:15:01 -07:00
trop[bot]
1adce9413a chore: mark browserview api as not-experimental (#15134)
I think it's safe to say this API has been around long enough to be considered past the experimental phase 👍
2018-10-12 19:30:10 -07:00
trop[bot]
3ee697b258 fix: natively implement LoginItem functions (backport: 4-0-x) (#15127)
* fix: natively implement some LoginItem functions

* move url_ref inside loop
2018-10-13 13:00:28 +11:00
Electron Bot
6e30d855ba Bump v4.0.0-beta.3 2018-10-12 12:25:15 -07:00
trop[bot]
948fc6f612 build: add v8_embedder_string to build args (#15120) 2018-10-12 10:10:12 -07:00
trop[bot]
8c2d16f031 fix: export zlib symbols (#15118) 2018-10-12 10:06:14 -07:00
trop[bot]
11486b99a4 chore: roll node (#15115)
picks up:
- electron/node#73: fix: export libuv symbols
- electron/node#74: fix: include names.h in zlib header package
2018-10-12 08:30:55 -07:00
trop[bot]
ebb2c53c3d docs: app.getLoginItemStatus -> app.getLoginItemSettings (#15114) 2018-10-13 01:19:28 +11:00
trop[bot]
8094f1a3f0 fix: Remove statSyncNoException for good (backport: 4-0-x) (#15110)
* fix: Small JS assignment error

* fix: Call the right og method

* fix: Goodbye, statSyncNoException
2018-10-12 09:56:00 -04:00
Electron Bot
b7f20f1878 Bump v4.0.0-beta.2 2018-10-11 16:27:07 -07:00
trop[bot]
e9e0219ae8 fix: update and enable osr (backport: 4-0-x) (#15084)
* 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 10:01:27 -07:00
trop[bot]
24b809f2bc build: add "apply_patches" flag to gclient (#15082) 2018-10-11 10:41:11 -05:00
trop[bot]
cfbb22b380 Revert "FIXME: disable isCurrentlyAudible test to unblock merge" (#15083)
This reverts commit c8a9a3f63c.
2018-10-11 10:39:30 -05:00
Electron Bot
f9ae1aa999 Bump v4.0.0-beta.1 2018-10-10 22:01:00 -07:00
Samuel Attard
f1ec2237e7 Revert "Bump v4.0.0-beta.1"
This reverts commit 35df516e28.
2018-10-11 15:54:52 +11:00
Electron Bot
35df516e28 Bump v4.0.0-beta.1 2018-10-10 20:50:05 -07:00
Samuel Attard
f69e91975f fix: update node for patch that allows native modules built on < node 10 (#15073) 2018-10-11 13:54:32 +11:00
Alexey Kuzmin
a9646e3414 ci: strip linux binaries for nightly release builds (#15063) 2018-10-11 13:41:48 +11:00
Milan Burda
a9475f3590 feat: add workingDirectory option to shell.openExternal() (#15065)
Allows passing `workingDirectory` to the underlying `ShellExecuteW` API on Windows.

the motivation is that by default `ShellExecute` would use the current working directory, which would get locked on Windows and can prevent autoUpdater from working correctly. We need to be able specify a different `workingDirectory` to prevent this situation.
2018-10-10 22:46:54 +02:00
Heilig Benedek
2d186cb31a fix: close patch_file before deleting it (#15055) 2018-10-10 08:55:25 -05:00
Electron Bot
539d6d20b7 Bump v4.0.0-nightly.20181010 2018-10-10 06:38:01 -07:00
Samuel Attard
7159080ec5 chore: patch dump_syms to not hard fail on dylib resolve error (#15056) 2018-10-11 00:34:50 +11:00
Samuel Attard
5667c16767 Revert "Bump v4.0.0-nightly.20181010"
This reverts commit c96847206e.
2018-10-11 00:04:35 +11:00
Alexey Kuzmin
0662dd6449 ci: set timeouts for all steps on VSTS (#15051) 2018-10-10 13:44:07 +02:00
Alexey Kuzmin
978d16b8ab revert: "fixme: allow huge Electron archives" (#15048)
This reverts commit f7dee77f2b.
2018-10-10 13:06:58 +02:00
Electron Bot
c96847206e Bump v4.0.0-nightly.20181010 2018-10-10 03:45:40 -07:00
Samuel Attard
d48c3ec8da Revert "Bump v4.0.0-nightly.20181010"
This reverts commit 8b3f915623.
2018-10-10 21:43:32 +11:00
Electron Bot
8b3f915623 Bump v4.0.0-nightly.20181010 2018-10-10 02:22:24 -07:00
Samuel Attard
1b9600e510 Revert "Bump v4.0.0-nightly.20181010"
This reverts commit 181195ee20.
2018-10-10 20:21:17 +11:00
Electron Bot
181195ee20 Bump v4.0.0-nightly.20181010 2018-10-10 01:04:16 -07:00
Samuel Attard
b0068cecc8 Revert "Bump v4.0.0-nightly.20181009"
This reverts commit 1b9a8bb854.
2018-10-10 21:02:17 +13:00
Electron Bot
1b9a8bb854 Bump v4.0.0-nightly.20181009 2018-10-09 22:59:47 -07:00
Samuel Attard
f6dd201401 Revert "Bump v4.0.0-nightly.20181009"
This reverts commit 32e041d917.
2018-10-10 16:53:56 +11:00
Samuel Attard
37d44965d1 Revert "FIXME: try enabling dcheck to see if that will get us more info on linux-release-testing"
This reverts commit 1a17ce81d5.
2018-10-10 16:49:53 +11:00
Samuel Attard
5b43c249ce Revert "FIXME: temporary debugging to maybe diagnose netlog issue on mac"
This reverts commit f8f318da93.
2018-10-10 16:49:31 +11:00
Kevin Lynagh
af4cf1e969 fix: simpleFullscreen window should be on top of other OS X menu bars. (#14881)
If an app has no menu bar (because `app.dock.hide()` has been called),
OS X will still render the menu bar of the previously-focused app.

This commit ensures simpleFullscreen windows will be drawn on top of
that menu bar by setting their level to NSPopUpMenuWindowLevel while
simpleFullscreen mode is active.

Ref: https://github.com/electron/electron/issues/11468
2018-10-09 22:38:52 -07:00
Samuel Attard
ed065f0106 chore: dont run nightly jobs for everything
Refs: a71c814d19
2018-10-10 16:37:59 +11:00
Samuel Attard
33abd736e9 chore: add deprecation notice for webPrefences defaults (#15045) 2018-10-10 16:36:18 +11:00
Felix Rieseberg
ca826d49a5 docs: Add instructions on how to pull/push (#14903)
* docs: Add instructions on how to pull/push

* docs: Implement feedback <3

* fix: typo s/glient/gclient
2018-10-10 15:48:37 +11:00
Electron Bot
32e041d917 Bump v4.0.0-nightly.20181009 2018-10-09 21:34:34 -07:00
Milan Burda
5bd6de52e0 feat: add app.enableSandbox() (#14999) 2018-10-10 15:32:09 +11:00
Samuel Attard
cc0c6ad14a Merge pull request #14972 from electron/chromium-upgrade/69
feat: upgrade to Chromium 69.0.3497.106
2018-10-10 15:29:21 +11:00
Shelley Vohr
dd43e92186 fix: simplify SetBackgroundColor
The compositor_superview member of BridgedNativeWidgetMac has been removed so as a consequence there is only one layer on which we need to call setBackgroundColor
2018-10-09 20:37:07 -07:00
Samuel Attard
2420cdf027 fix: ensure that the window is focused when testing spellchecker 2018-10-10 14:02:46 +11:00
Samuel Attard
2b8ef344b7 fixme: dont use --enable-logging on the ffmpeg verify phase 2018-10-10 13:11:10 +11:00
Samuel Attard
a5c3091c34 chore: remove --enable-logging, causing issues on CI 2018-10-10 12:11:16 +11:00
Samuel Attard
19e02cd63e chore: add logging to zip-symbols.py to help debugging timeouts 2018-10-10 11:04:55 +11:00
Samuel Attard
6b621e203c fix: use valid markdown syntax in browser-window.md to fix docs linter 2018-10-10 11:01:05 +11:00
Nitish Sakhawalkar
185fe6ced9 fix: Lifetime of auth_info_ in login handler (#15042) 2018-10-10 10:50:44 +11:00
Jeremy Apthorp
f8f318da93 FIXME: temporary debugging to maybe diagnose netlog issue on mac 2018-10-09 15:43:33 -07:00
Jeremy Apthorp
30850f491f fix: [mac] restore SetBackgroundColor functionality 2018-10-09 14:39:39 -07:00
Jeremy Apthorp
373ffa9fee docs: document BrowserWindow.setBackgroundColor 2018-10-09 14:39:39 -07:00
Jeremy Apthorp
1a17ce81d5 FIXME: try enabling dcheck to see if that will get us more info on linux-release-testing 2018-10-09 14:39:39 -07:00
Jeremy Apthorp
c8a9a3f63c FIXME: disable isCurrentlyAudible test to unblock merge 2018-10-09 14:39:39 -07:00
Jeremy Apthorp
edb96c875e FIXME: disable getGPUInfo test to unblock merge
should be fixed and re-enabled before release
2018-10-09 14:39:39 -07:00
Jeremy Apthorp
ee8a54d186 chore: update line reference in gpuinfo comment 2018-10-09 14:39:39 -07:00
Jeremy Apthorp
28153642a4 fix: compile error on mas 2018-10-09 14:39:39 -07:00
Aleksei Kuzmin
f7dee77f2b fixme: allow huge Electron archives 2018-10-09 14:39:39 -07:00
Aleksei Kuzmin
a71c814d19 fixme: always run "nightly-release-test" workflow 2018-10-09 14:39:39 -07:00
deepak1556
3364c04977 FIXME: disable document.visibilityState/hidden <webview> spec 2018-10-09 14:39:39 -07:00
deepak1556
ba14dbe553 FIXME: disable net log spec 2018-10-09 14:39:39 -07:00
deepak1556
7ec05fb202 spec: update media-started-playing tests based on the autoplay policy 2018-10-09 14:39:39 -07:00
Jeremy Apthorp
26a46b6b4b ci: enable stack dumping in tests 2018-10-09 14:39:39 -07:00
deepak1556
363aafc25b fix: ensure webcontents is destroyed before its associated browser context. 2018-10-09 14:39:39 -07:00
Jeremy Apthorp
a71755e1b6 fix: crash in webRequest due to unsafe static_cast
upstream was changed to wrap the network delegate

see https://chromium.googlesource.com/chromium/src/+/69.0.3497.106/services/network/network_context.cc#948
2018-10-09 14:38:00 -07:00
Heilig Benedek
e548ed1a6e fix: remove conflicting header 2018-10-09 14:38:00 -07:00
Heilig Benedek
4088dec630 FIXME! disable osr for now 2018-10-09 14:38:00 -07:00
Heilig Benedek
4017f3faa7 fix: make lint run on Windows in PowerShell 2018-10-09 14:38:00 -07:00
Cheng Zhao
878c5b663d fix: disable the V2 sandbox on macOS
The new v2 sandbox uses system sandbox API, there does not seem to have
a way to support it in --enable-mixed-sandbox, we should probably
deprecate the API.

See https://chromium.googlesource.com/chromium/src.git/+/master/sandbox/mac/seatbelt_sandbox_design.md
2018-10-09 14:38:00 -07:00
Cheng Zhao
7ba287a05e test: make netLog test pass when app crash on exit 2018-10-09 14:38:00 -07:00
Cheng Zhao
a6256c672a feat: getGPUInfo not longer supports 'complete' on macOS
See https://chromium-review.googlesource.com/c/chromium/src/+/1208362
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
e28eeb0c2e fix notification permission handler 2018-10-09 14:38:00 -07:00
Charles Kerr
f027e62b2a fix: only call NetworkService::SetUpHttpAuth once. 2018-10-09 14:38:00 -07:00
deepak1556
f668fc8d02 chore: roll node 2018-10-09 14:38:00 -07:00
deepak1556
55d3720a95 chore: gn format 2018-10-09 14:38:00 -07:00
deepak1556
be719a1ec3 fix: Use the new isolate initialization api
https://chromium-review.googlesource.com/c/chromium/src/+/1015020
2018-10-09 14:38:00 -07:00
Charles Kerr
fb4b50c8c9 fix: linking pepper flash on Linux 2018-10-09 14:38:00 -07:00
Jeremy Apthorp
b539e4d486 roll node to 10.11.0 2018-10-09 14:38:00 -07:00
Jeremy Apthorp
66018eb0f1 FIXME: disable non-compiling LOGFONT IPC message
https://chromium-review.googlesource.com/c/chromium/src/+/1134100
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
56e26c27f2 clang-format 2018-10-09 14:38:00 -07:00
Jeremy Apthorp
c920e453dc Stop using ResourceContext::GetHostResolver()
https://chromium-review.googlesource.com/c/chromium/src/+/1135366
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
6df9c04270 Hook up HttpAuthHandlerFactory configuration to the network service
https://chromium-review.googlesource.com/c/chromium/src/+/1089661
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
67611d69af Refactor of ServiceManagerContext
https://chromium-review.googlesource.com/c/chromium/src/+/1093021
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
85372ecb6b update,,, sysroots? again???? 2018-10-09 14:38:00 -07:00
Jeremy Apthorp
92e95a463e update sysroot 2018-10-09 14:38:00 -07:00
Samuel Attard
a0c2f3dc28 chore: re-enable bundled font config, we should fix the sysroot 2018-10-09 14:38:00 -07:00
Samuel Attard
06dbc7f613 chore: update sysroot 2018-10-09 14:38:00 -07:00
Samuel Attard
f03001c9f2 chore: re-land GetBgColor libgtkui export patch 2018-10-09 14:38:00 -07:00
Samuel Attard
80ffc26713 fixme: disable pepper flash 2018-10-09 14:38:00 -07:00
Samuel Attard
7aa01bc00a chore: dont use bundled fontconfig 2018-10-09 14:38:00 -07:00
Jeremy Apthorp
f5eaa97d9d migrate off QuitCurrent*Deprecated in browser.cc
modelled after https://chromium-review.googlesource.com/c/chromium/src/+/1096475 and https://chromium-review.googlesource.com/c/chromium/src/+/1096475
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
98829aa916 fix default_app.js calling no-longer-existent API 2018-10-09 14:38:00 -07:00
Jeremy Apthorp
647322e299 native_desktop_media_list.h depends on //chrome/app:generated_resources 2018-10-09 14:38:00 -07:00
Jeremy Apthorp
8eb15f7554 Creates TaskScheduler and MessageLoop on main thread early
https://chromium-review.googlesource.com/c/chromium/src/+/1072387
2018-10-09 14:38:00 -07:00
Samuel Attard
d3a0a2300b fix: include algorithm in notification_presenter 2018-10-09 14:38:00 -07:00
Samuel Attard
9190245628 fix: exe_and_shlib_deps does not exist anymore
ce772faa73
2018-10-09 14:38:00 -07:00
Samuel Attard
f4f70a19b0 chore: bump node 2018-10-09 14:38:00 -07:00
Samuel Attard
d8e58dffe6 chore: update CHROME_VERSION_STRING 2018-10-09 14:38:00 -07:00
Samuel Attard
7589c56cea fix: intercept the isolate_holder's new isolate and register it with the node platform before initialization
Chromium Change: https://chromium-review.googlesource.com/c/chromium/src/+/1015020
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
bacc36dde1 Replace more loading methods in WebLocalFrame
https://chromium-review.googlesource.com/c/chromium/src/+/1043093
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
816c2f1893 Split WebWidgetClient and WebViewClient
https://chromium-review.googlesource.com/c/chromium/src/+/1134427
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
8d9f24d369 Remove WebCanvas alias, use cc::PaintCanvas directly in blink
https://chromium-review.googlesource.com/c/chromium/src/+/1112671
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
1adfa4d9da Rename WebFrameClient to WebLocalFrameClient
https://chromium-review.googlesource.com/c/chromium/src/+/1073398
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
b57b342352 Remove PlatformAccelerator
https://chromium-review.googlesource.com/c/chromium/src/+/1140211
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
7ce338e420 Handle deleting cookies with session-only policy in network service
https://chromium-review.googlesource.com/c/chromium/src/+/1090035
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
120b6079a8 Move Net.HttpRequestCompletionErrorCodes to NetworkContext
https://chromium-review.googlesource.com/c/chromium/src/+/1108083
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
42120b4a72 Remove SupportsOCSPStapling from CertVerifier and CertVerifyProc
https://chromium-review.googlesource.com/c/chromium/src/+/1117034
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
b8774374a8 Fixed reporting for iframe ugprade-insecure-requests upgrades
https://chromium-review.googlesource.com/c/chromium/src/+/1096360
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
34e54b93a4 Remove WebContentsUserData::kLocatorKey
https://chromium-review.googlesource.com/c/chromium/src/+/1093015
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
2d46164ce0 Switch NetworkDelegate to OnceCallbacks
https://chromium-review.googlesource.com/c/chromium/src/+/1085855
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
0955fa7bcf Remove unused RunMicrotasksObserver
https://chromium-review.googlesource.com/c/chromium/src/+/1086889
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
9e110ec915 Remove content::SpeechRecognitionResult
https://chromium-review.googlesource.com/c/chromium/src/+/1070587
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
56bc636706 Make content::PermissionManager a delegate of PermissionController
https://chromium-review.googlesource.com/c/chromium/src/+/1111340
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
eef375a428 Port //services/device/geolocation to network::SimpleURLLoader
https://chromium-review.googlesource.com/c/chromium/src/+/1119398
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
63176acde2 Collect NV12, YUY2, and BGRA overlay support information in GPUInfo
https://chromium-review.googlesource.com/c/chromium/src/+/1121622
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
e3fef30789 Refactor RWH::RestartHang...Timeout... into a generic base::Closure
https://chromium-review.googlesource.com/c/chromium/src/+/1096362
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
4570330c7b Rename WebContentsDelegate methods
https://chromium-review.googlesource.com/c/chromium/src/+/1085427
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
af03e4a962 Rename content::PermissionManager into content::PermissionControllerDelegate
https://chromium-review.googlesource.com/c/chromium/src/+/1136858
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
7861f75a3e media: Refactor KeySystemSupport
https://chromium-review.googlesource.com/c/chromium/src/+/1102836
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
9c2cd5a84c Support add/overwrite redirect request headers in NavigationURLLoader
https://chromium-review.googlesource.com/c/chromium/src/+/1072643
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
18128a1582 Use CompletionOnceCallback
several CLs, e.g. https://chromium-review.googlesource.com/c/chromium/src/+/1092933
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
ec1bd5375a FIXME: Delete RenderWidgetHostViewMac::AcceleratedWidgetGetNSView
https://chromium-review.googlesource.com/c/chromium/src/+/1121957

https://chromium-review.googlesource.com/c/chromium/src/+/1037145
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
95cec24387 FIXME: Move persistent notification id from notification database to profile
https://chromium-review.googlesource.com/c/chromium/src/+/1114840
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
d13e3324c6 Unify notification-related permission checks in its PermissionContext
https://chromium-review.googlesource.com/c/chromium/src/+/1085568

https://chromium-review.googlesource.com/c/chromium/src/+/1085466
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
2a3a845262 Change CreateWebUIControllerForURL() to return a unique_ptr
https://chromium-review.googlesource.com/c/chromium/src/+/1087627
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
c576d442fd Rename base::Timer to base::TimerBase
https://chromium-review.googlesource.com/c/chromium/src/+/1124200
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
a7c687f160 ChildProcessSecurityPolicy: only use granted schemes for requests
https://chromium-review.googlesource.com/c/chromium/src/+/1108485
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
4f540fe52a Replace DupCryptoBuffer with bssl::UpRef
https://chromium-review.googlesource.com/c/chromium/src/+/1128194
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
90aa277c26 Migrate MediaResponseCallback to OnceCallback
https://chromium-review.googlesource.com/c/chromium/src/+/1093052
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
3ded109c2e stop using x-devtools-emulate-network-conditions-client-id header
https://chromium-review.googlesource.com/c/chromium/src/+/1086949
2018-10-09 14:38:00 -07:00
Jeremy Apthorp
f514445f20 roll node to tmp version (branch more-patches) 2018-10-09 14:38:00 -07:00
Jeremy Apthorp
3b047f1950 more gclient_gn_args 2018-10-09 14:38:00 -07:00
Jeremy Apthorp
ea98fb37e6 //tools/gn was removed 2018-10-09 14:38:00 -07:00
Jeremy Apthorp
ef12492d6c update chromium and v8 patches 2018-10-09 14:38:00 -07:00
Jeremy Apthorp
aefb8911ec roll Chromium to 69.0.3497.106 2018-10-09 14:37:13 -07:00
Alexey Kuzmin
36ee83875a ci: run tests on VSTS in a separate job (#15027)
* ci: run tests on VSTS in a separate job

Split current monolithic job into two: one to build Electron,
and the other to run its JavaScript tests.

Optionally a "Custom.UseArtifacts.BuildId" variable
can be used to run tests using binaries built in a different job.
Useful to rerun test jobs failed because of flaky tests.

* ci: fail a tests job on VSTS if it's started for a build of a different revision

* ci: fail a tests job on VSTS if there are no test results

* ci: run Mac tests on hosted MacOS agents

* ci: install Node.js 10 on hosted Mac agents
2018-10-09 17:01:35 -04:00
John Kleinschmidt
1cf00274ab ci: strip linux binaries for release builds (#14991) 2018-10-09 16:19:05 -04:00
Troy
d678d9ee75 fix: Check minSize constraints before resizing (#14931)
* Inital setSize check

* Only resize if above minimum size constraints

* lint

* Resize to min if size is changed

* Remove unneeded if statement

* chore: remove trailing whitespace

* Add note about setSize method in docs
2018-10-09 12:08:15 -05:00
Shelley Vohr
532ee2dadf fix: overly thin font rendering on mojave (#15007)
* fix: overly thin font rendering on mojave

* SkUniqueCFRef => UniqueCFRef
2018-10-09 10:52:11 -04:00
Charles Kerr
e9a5b19223 feat: convenience command to apply all formatter patches (#14994)
* feat: convenience to apply all formatter patches

run-clang-format.py can create multiple patchfiles.
This change prints a command that can be pasted into
a shell to apply all of them together.

* feat: put all generated style diffs in one file

This way it will be easier to `git apply` fixes to multiple
fixed files at once.
2018-10-09 10:06:27 -04:00
Charles Kerr
05f4860889 fix: power observer dbus crash (#15030)
* fix: check dbus response for nullptr before using

* chore: use BindOnce for ProxyObject::CallMethod cb

* chore: comment out name of unused argument

* fix: re-enable and fix linux power monitor tests

* fix: change tyop from code comments

* refactor: don't keep unnecessary dbus pointer

* chore: remove the 'TODO: fix this' spec comment
2018-10-09 00:32:19 -05:00
Alexey Kuzmin
7df51eef3c ci: fix breakpad symbols generation on CircleCI for PRs from forks (#15026)
E.g. https://circleci.com/gh/electron/electron/78458
2018-10-08 23:56:15 +02:00
Alexey Kuzmin
7866575385 ci: fix the upload distribution step on VSTS (#15015)
* ci: fix the upload distribution step on VSTS

* ci: fix get_electron_exec()

* ci: define "CI" env variable
2018-10-08 15:19:40 -05:00
Manoel
5416051e36 chore(eslint): add extension to .eslintrc file (#15020)
.eslintrc file without extension is deprecated.
2018-10-08 14:21:34 -05:00
Milan Burda
9177dbb584 refactor: use boolean for nodeIntegration / webviewTag (#15005) 2018-10-08 15:51:31 +02:00
Alexey Kuzmin
918488a2f0 ci: various fixes (#15004)
- ci: don't send Slack notifications for the "linux-ia32-testing-tests" job
 - ci: fix symbols collection job on VSTS
 - ci: run tests on Windows for both "testing" and "release" builds
2018-10-07 16:05:20 +02:00
Milan Burda
b50f86ef43 refactor: use separate ipc-renderer-internal / ipc-main-internal APIs for Electron internals (#13940) 2018-10-07 00:48:00 +13:00
Electron Bot
f7122610cc Bump v4.0.0-nightly.20181006 2018-10-06 02:43:36 -07:00
Samuel Attard
59681f989f Revert "Bump v4.0.0-nightly.20181006"
This reverts commit c74a3b82d7.
2018-10-06 22:21:12 +13:00
Samuel Attard
541e10b081 chore: temporarily use submodule and gn DEPS for requests/boto 2018-10-06 22:07:10 +13:00
Electron Bot
c74a3b82d7 Bump v4.0.0-nightly.20181006 2018-10-06 00:13:06 -07:00
Samuel Attard
b9cf49f32c chore: fix native_mksnapshot path on for arm releases 2018-10-06 20:10:40 +13:00
Samuel Attard
251a3c712b Revert "Bump v4.0.0-nightly.20181005"
This reverts commit 2a2ec7700e.
2018-10-06 20:10:21 +13:00
Electron Bot
2a2ec7700e Bump v4.0.0-nightly.20181005 2018-10-05 21:09:00 -07:00
Alexey Kuzmin
b45dc78751 ci: fix breakpad symbols generation (#14981) 2018-10-06 01:55:06 +02:00
Alexey Kuzmin
5eeff55e83 ci: better Slack notifications for nightly jobs (#14985)
- do not report success from Eletron build jobs
 - report failures from more jobs
 - add separate summary jobs to report success
2018-10-06 01:15:38 +02:00
Alexey Kuzmin
5525f34363 build: make external binaries download action more flexible (#14982)
* build: make external binaries download action more flexible

* chore: reformat DEPS

Make it look more like Chromium //DEPS:
 - use name-pattern-condition-action order for hooks
 - add trailing commas
 - remove some line breaks

Also remove redundant entry from "recursedeps".
2018-10-06 00:21:46 +02:00
Robo
6e5dd735f6 refactor: enable weak ptr unwrap sequence dcheck (#14816)
* refactor: enable weak ptr unwrap sequence dcheck

* spec: remove WeakPtrDeathTest.* from disabled list
2018-10-05 15:29:57 -05:00
John Kleinschmidt
643781578e ci: fix environment variables for fork prs (#14995)
Fixes #14984
Fixes xvfb for fork prs
Sets up sccache as readonly for fork prs.
2018-10-05 16:06:52 -04:00
Robo
2700eaca1e build: remove //chrome/browser/icon_loader source copies (#14955)
* build: remove //chrome/browser/icon_loader source copies

* chore: add DCHECK to ensure IconManager is accessed from UI thread
2018-10-05 14:12:53 -05:00
Shelley Vohr
71058fd9a3 fix: re-enable osr following m68 upgrade (#14973) 2018-10-05 11:03:35 -07:00
Charles Kerr
859567983a chore: run clang-format to clear linter for #14977 (#14990) 2018-10-05 10:38:27 -05:00
John Kleinschmidt
8abe43ac8b Save build artifacts for debug builds (#14992) 2018-10-05 11:11:51 -04:00
John Kleinschmidt
0dbe27714c ci: cleanup Electron dirs before running tests (#14989) 2018-10-05 11:06:46 -04:00
John Kleinschmidt
e06818e8c0 ci: use ubuntu 18.04 for arm testing (#14988) 2018-10-05 09:29:32 -05:00
Alexey Kuzmin
9187415f5e ci: temporary do no run "verify-ffmpeg.py" on Mac CI (#14986) 2018-10-05 08:28:02 -05:00
Samuel Attard
8d5de8a0fd Revert "Bump v4.0.0-nightly.20181004"
This reverts commit 53d3a96489.
2018-10-05 10:21:56 +10:00
Samuel Attard
657901c2ff chore: specify -j18 for electron ninja call 2018-10-05 10:21:36 +10:00
Alexey Kuzmin
0857ecf478 build: make boto and requests optional dependencies (#14970) 2018-10-04 20:20:25 -04:00
Charles Kerr
9d4818c784 fix relaunch on linux (#14975)
* chore: re-enable relaunch test for Linux

* fix: relauncher_linux listening for parent exit
2018-10-04 18:41:37 -05:00
Electron Bot
53d3a96489 Bump v4.0.0-nightly.20181004 2018-10-04 16:28:34 -07:00
Samuel Attard
baf40fd8f7 chore: add extra logging to the upload script 2018-10-05 09:24:19 +10:00
Samuel Attard
21348b9f3d Revert "Bump v4.0.0-nightly.20181004"
This reverts commit 7a6d0cd6d2.
2018-10-05 09:15:38 +10:00
Milan Burda
ae8c0f71b1 chore: remove duplicate code in spec/security-warnings-spec.js (#14967) 2018-10-05 00:24:14 +02:00
Electron Bot
7a6d0cd6d2 Bump v4.0.0-nightly.20181004 2018-10-04 13:56:59 -07:00
Robo
434a6e3561 refactor: create request context from network context (#14656)
* [ci skip] refactor: create request context from network context

* [ci skip] refactor: subscribe to mojo cookiemanager for cookie changes

* [ci skip] refactor: manage the lifetime of custom URLRequestJobFactory

* refactor: use OOP mojo proxy resolver

* revert: add support for kIgnoreCertificateErrorsSPKIList

* build: provide service manifest overlays for content services

* chore: gn format

* fix: log-net-log switch not working as expected

* spec: verify proxy settings are respected from pac script with session.setProxy

* chore: use chrome constants where possible

* fix: initialize request context for global cert fetcher

* refactor: fix destruction of request context getters

* spec: use custom session for proxy tests

* fix: queue up additional stop callbacks while net log is being stopped

* fix: Add CHECK for cookie manager retrieval

* chore: add helper to retrieve logging state for net log module

* fix: ui::ResourceBundle::GetRawDataResourceForScale => GetRawDataResource

* style: comment unused parameters

* build: move //components/certificate_transparency deps from //brightray

* chore: update gritsettings_resource_ids patch

* chore: update api for chromium 68

* fix: net log instance is now a property of session
2018-10-04 13:08:56 -05:00
Shelley Vohr
27bbf6a3c6 feat: add evt listeners for SetAlwaysOnTop (#14951)
* feat: add evt listeners for SetAlwaysOnTop

* only emit one event on AlwaysOnTop change

* docs: add new alwaysontop event

* dont emit if theres no change

* address feedback from review
2018-10-04 13:02:16 -05:00
Samuel Attard
d810f08b75 fix: update accelerator patch to handle recent chromium fixes (#14966) 2018-10-04 12:05:35 -05:00
John Kleinschmidt
038b56e31e ci: Trigger an arm test on VSTS after CircleCI build (#14898)
* ci: Trigger an arm test on VSTS after CircleCI build
2018-10-04 12:01:16 -04:00
Alexey Kuzmin
1acd840c38 ci: rearrange builds on CircleCI (#14969)
* ci: do not build ffmpeg for every PR on CircleCI

* ci: build and run unittests in a separate workflow on CircleCI

* ci: build chromedriver in a separate job
2018-10-04 11:50:46 -04:00
Cheng Zhao
d3ae541397 refactor: Clean up the implementation of the registerStreamProtocol (#11357)
* Use weak pointer to avoid race condition

* Use DeleteSoon to delete pointer across threads

* Simplify EventSubscriber

* No need to manually mange V8 convertions

* Fix cpplint warning

We should update cpplint for this, but let's do it in other PR.

* Move UI thread operations to EventSubscriber

* Less and more assertions

Some methods are now private so no more need to assert threads.

* Fix cpplint warnings

* No longer needs the EventEmitted

* EventSubscriber => StreamSubscriber

* Reduce the copies when passing data

* Fix cpplint warnings
2018-10-04 10:13:09 -04:00
Samuel Attard
3805c5f538 chore: enable -pie for linux builds (#14962)
Closes #14961
2018-10-04 10:10:48 -04:00
Alexey Kuzmin
f161835fc3 test: disable one test in base_unittests (#14968)
Fails after the Chromium 68 upgrade.
2018-10-04 10:00:30 -04:00
Samuel Attard
31c7891553 chore: checkout the arm resources during publish sync 2018-10-04 14:14:53 +10:00
Samuel Attard
01efb6570c Revert "Bump v4.0.0-nightly.20181003"
This reverts commit 76dab5ebd1.
2018-10-04 13:45:20 +10:00
Electron Bot
76dab5ebd1 Bump v4.0.0-nightly.20181003 2018-10-03 19:15:29 -07:00
Samuel Attard
41c6a64213 chore: fix GN linting issue in brightray 2018-10-04 12:10:18 +10:00
Samuel Attard
03e6113ef7 Merge pull request #14964 from electron/chromium-upgrade/68
feat: upgrade to Chromium 68.0.3440.128 and Node 10.11.0
2018-10-04 12:04:53 +10:00
Samuel Attard
b59e01bdb0 Revert "feat: upgrade to Chromium 68.0.3440.128 and Node 10.11.0 (#14677)" (#14963)
This reverts commit e012801420.
2018-10-04 12:03:15 +10:00
Jeremy Apthorp
e012801420 feat: upgrade to Chromium 68.0.3440.128 and Node 10.11.0 (#14677)
* Update to Chromium 68.0.3440.128 and Node 10.10.0

* update v8, ffmpeg, chromium, crashpad, boringssl, and webrtc patches

* fix SSL_get_tlsext_status_type patch

* pass encryption_modes_supported to CdmInfo

* kNoSandbox moved into service_manager

* bump CHROME_VERSION_STRING

TODO: automatically pull in the real chrome version

* PathService -> base::PathService

* net::X509Certificate::Equals -> net::X509Certificate::EqualsExcludingChain

* use content::ChildProcessTerminationInfo

* GetHandle() -> GetProcess().Handle()

* ScopedNestableTaskAllower doesn't take an argument

* net::HttpAuthCache::ClearEntriesAddedWithin -> ClearAllEntries

* std::unique_ptr<WebContents>

* blink::WebFullscreenOptions

* OnAudioStateChanged doesn't take a WebContents

* content::RESULT_CODE_NORMAL_EXIT -> service_manager::RESULT_CODE_NORMAL_EXIT

* MessageLoopCurrent

* WasResized -> SynchronizeVisualProperties

* SetTimeStamp takes a base::TimeTicks

* ExecuteScriptInIsolatedWorld is single-script only

* DispatchNonPersistentCloseEvent takes a callback now

* expose URLRequestContextGetter::{Add,Remove}Observer

* test: remove no longer existing Chromium test deps

cc_blink_unittests has been removed in
https://chromium-review.googlesource.com/1053765

mojo_common_unittests has been removed in
https://chromium-review.googlesource.com/1028000

* SetFdLimit -> IncreaseFdLimitTo

NOTE: the behaviour of this API has changed slightly, and we should
mention that in the notes.

* MessageLoop::QuitWhenIdleClosure -> RunLoop::QuitCurrentWhenIdleClosureDeprecated

* certificate_transparency moved out of net/

pending a clearer decision about what to do with CT

in the mean time, copy CreateLogVerifiersForKnownLogs from deleted chromium source

* add secure_origin_whitelist to chrome source list

NOTE: is this something we actually want? cc @deepak1556

* DrainBackgroundTasks -> DrainTasks

* use new node options parser

* fix disable_scroll_begin_dcheck.patch

* ViewsDelegate::CreateWebContents went away

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

* kZygoteProcess moved into service_manager

* test: minor improvements to the Node spec

 - reformat some parts
 - better failures reporting with `expect`
 - skip some tests instead of marking them as passed

* chromium removed *_posix.cc from the source filters

* test: fix :electron_tests compilation

* better crash diagnostics in ffmpeg test

* fix: enable back a DCHECK in viz::ServerSharedBitmapManager

Fixes #14327.
Backports https://chromium-review.googlesource.com/802574.

* chore: update linux sysroots

* chore: remove obsolete "install-sysroot.py" script

* test: fix frame-subscriber test on Mac

* disable OSR for now

* test: make before-input-event test more robust

* test: make run-as-node --inspect test more robust on windows

* roll node to v10.11.0

* avoid duplicate files when building a zip

* disable failing assert in beginFrameSubscription dirty-rectangle test

* experiment with is_cfi = false

* fix: build torque with x64 toolchain

Co-Authored-By: Alexey Kuzmin <github@alexeykuzmin.com>

* test: disable the "app.relaunch" test on Linux

* chore: bump node to get header tar file

* chore: bump node to fix tar.py line endings
2018-10-04 12:02:14 +10:00
Samuel Attard
a78fff0afe chore: bump node to fix tar.py line endings 2018-10-04 10:09:33 +10:00
Jeremy Apthorp
14fc6f3081 chore: add GN linting (#14678)
* chore: add GN linter

* chore: fix GN lint errors

* try some crazy bash to get a gn exe

* base64 on linux is different

* cloning build_tools doesn't download GN

* download_from_google_storage needs depot_tools in the path

* fixup! chore: add GN linter
2018-10-03 18:03:26 -05:00
Samuel Attard
b47081e814 chore: bump node to get header tar file 2018-10-04 08:59:33 +10:00
Aleksei Kuzmin
21f382fcae test: disable the "app.relaunch" test on Linux 2018-10-04 00:21:58 +02:00
John Kleinschmidt
df32326ce5 fix: build torque with x64 toolchain
Co-Authored-By: Alexey Kuzmin <github@alexeykuzmin.com>
2018-10-04 00:15:00 +02:00
Jeremy Apthorp
f7f93d2071 experiment with is_cfi = false 2018-10-04 00:15:00 +02:00
Jeremy Apthorp
45c2dcddb0 disable failing assert in beginFrameSubscription dirty-rectangle test 2018-10-04 00:15:00 +02:00
Jeremy Apthorp
81bd7fab55 avoid duplicate files when building a zip 2018-10-04 00:15:00 +02:00
Jeremy Apthorp
d4c8375702 roll node to v10.11.0 2018-10-04 00:15:00 +02:00
Samuel Attard
0ee46cdc26 test: make run-as-node --inspect test more robust on windows 2018-10-04 00:14:59 +02:00
Cheng Zhao
b11b4f2235 test: make before-input-event test more robust 2018-10-04 00:14:59 +02:00
Jeremy Apthorp
41d806ee45 disable OSR for now 2018-10-04 00:14:59 +02:00
Aleksei Kuzmin
0fc79ad3a9 chore: update linux sysroots 2018-10-04 00:14:59 +02:00
Aleksei Kuzmin
01179ea7b9 chore: remove obsolete "install-sysroot.py" script 2018-10-04 00:14:59 +02:00
Jeremy Apthorp
09f018ce8c test: fix frame-subscriber test on Mac 2018-10-04 00:14:59 +02:00
Aleksei Kuzmin
ae12d53884 fix: enable back a DCHECK in viz::ServerSharedBitmapManager
Fixes #14327.
Backports https://chromium-review.googlesource.com/802574.
2018-10-04 00:14:59 +02:00
Jeremy Apthorp
cc53269231 better crash diagnostics in ffmpeg test 2018-10-04 00:14:59 +02:00
Aleksei Kuzmin
6ab5c2faa1 test: fix :electron_tests compilation 2018-10-04 00:14:59 +02:00
Jeremy Apthorp
aafe83338c chromium removed *_posix.cc from the source filters 2018-10-04 00:14:59 +02:00
Aleksei Kuzmin
ae95f77d68 test: minor improvements to the Node spec
- reformat some parts
 - better failures reporting with `expect`
 - skip some tests instead of marking them as passed
2018-10-04 00:14:59 +02:00
Jeremy Apthorp
4e679a3f28 kZygoteProcess moved into service_manager 2018-10-04 00:13:37 +02:00
Jeremy Apthorp
f9ed25dd78 ViewsDelegate::CreateWebContents went away
see https://chromium-review.googlesource.com/c/chromium/src/+/1031314
2018-10-04 00:13:37 +02:00
Jeremy Apthorp
2f75777fb6 fix disable_scroll_begin_dcheck.patch 2018-10-04 00:13:37 +02:00
Jeremy Apthorp
6e037f5e71 use new node options parser 2018-10-04 00:13:37 +02:00
Jeremy Apthorp
9aaedc394e DrainBackgroundTasks -> DrainTasks 2018-10-04 00:13:37 +02:00
Jeremy Apthorp
5d882c6b91 add secure_origin_whitelist to chrome source list
NOTE: is this something we actually want? cc @deepak1556
2018-10-04 00:13:37 +02:00
Jeremy Apthorp
3657715c7b certificate_transparency moved out of net/
pending a clearer decision about what to do with CT

in the mean time, copy CreateLogVerifiersForKnownLogs from deleted chromium source
2018-10-04 00:12:55 +02:00
Jeremy Apthorp
6a202c9f52 SetFdLimit -> IncreaseFdLimitTo
NOTE: the behaviour of this API has changed slightly, and we should
mention that in the notes.
2018-10-04 00:12:55 +02:00
Jeremy Apthorp
f0da5bce80 MessageLoop::QuitWhenIdleClosure -> RunLoop::QuitCurrentWhenIdleClosureDeprecated 2018-10-04 00:12:55 +02:00
Jeremy Apthorp
e6da87b864 test: remove no longer existing Chromium test deps
cc_blink_unittests has been removed in
https://chromium-review.googlesource.com/1053765

mojo_common_unittests has been removed in
https://chromium-review.googlesource.com/1028000
2018-10-04 00:12:55 +02:00
Jeremy Apthorp
7e5d90f871 DispatchNonPersistentCloseEvent takes a callback now 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
7a043a800d ExecuteScriptInIsolatedWorld is single-script only 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
3b7657361d SetTimeStamp takes a base::TimeTicks 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
9c15c97468 expose URLRequestContextGetter::{Add,Remove}Observer 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
faf57683ce WasResized -> SynchronizeVisualProperties 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
5d9ba8b821 MessageLoopCurrent 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
08265ba3e2 content::RESULT_CODE_NORMAL_EXIT -> service_manager::RESULT_CODE_NORMAL_EXIT 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
948fe2107e OnAudioStateChanged doesn't take a WebContents 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
517d38f191 blink::WebFullscreenOptions 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
a5b09e25ea std::unique_ptr<WebContents> 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
8060e915c2 net::HttpAuthCache::ClearEntriesAddedWithin -> ClearAllEntries 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
5a757449b0 ScopedNestableTaskAllower doesn't take an argument 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
b9cd3493ac GetHandle() -> GetProcess().Handle() 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
1c60f9e468 use content::ChildProcessTerminationInfo 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
280421393e net::X509Certificate::Equals -> net::X509Certificate::EqualsExcludingChain 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
de581ca0b4 PathService -> base::PathService 2018-10-04 00:12:54 +02:00
Jeremy Apthorp
7092fa31a4 kNoSandbox moved into service_manager 2018-10-04 00:11:51 +02:00
Jeremy Apthorp
ce2c8e358d pass encryption_modes_supported to CdmInfo 2018-10-04 00:11:51 +02:00
Jeremy Apthorp
e721388bac fix SSL_get_tlsext_status_type patch 2018-10-04 00:11:51 +02:00
Jeremy Apthorp
6f2f761df3 update v8, ffmpeg, chromium, crashpad, boringssl, and webrtc patches 2018-10-04 00:11:51 +02:00
Jeremy Apthorp
d5e9b662f8 bump CHROME_VERSION_STRING
TODO: automatically pull in the real chrome version
2018-10-04 00:11:51 +02:00
Jeremy Apthorp
78c8951a50 Update to Chromium 68.0.3440.128 and Node 10.10.0 2018-10-04 00:11:51 +02:00
Milan Burda
5efb0fdff1 feat: add security warnings to sandboxed renderers (#14869)
Also refactor not to use the remote module.
2018-10-03 21:36:12 +02:00
Jeremy Apthorp
de020d0a5e ci: combine linux-*-checkout into one step (#14937) 2018-10-03 21:05:05 +02:00
Robo
7a43c8732c build: remove //chrome/common source copies (#14950)
* Removes
  * //chrome/common/chrome_constants.*
  * //chrome/common/chrome_paths*.*
  * //chrome/common/pref_names.*
2018-10-03 11:44:22 -07:00
Robo
91a965e24d build: remove //extensions source copies (#14949)
* build: remove //extensions source copies

* chore: gn format
2018-10-03 11:44:50 -05:00
Cheng Zhao
4c4d8c5bfa fix: support ASAR in fs.copyFile (#14942) 2018-10-03 09:36:20 -07:00
Robo
820d99d37f build: remove duplicate cursor resource configs (#14929)
$target_gen_dir/ui/resources/ui_unscaled_resources.rc provides
the required values during compilation.
2018-10-03 08:38:53 -07:00
Shelley Vohr
47258f7b3d fix: default_app incorrect loading by url (#14940) 2018-10-03 08:10:22 -07:00
Robo
596ae2c2df refactor: desktop capturer module (#14835)
* Revert "post all desktop capturer apis to worker threads"

This reverts commit 5a28759fea.

* refactor: desktop capturer module

* Creates the screen and window capturer for the liftime of the app
* Fixes incorrect usage of weak ptr

* build: add //ui/snapshot to chromium_src deps

* fix: handle scenarios when there are no captured sources
2018-10-03 21:26:42 +09:00
Shelley Vohr
e06bc311a9 chore: remove dead code in menu controller (#14939) 2018-10-03 16:24:28 +09:00
Cheng Zhao
a1b2162563 fix: use white background for non-OSR renderer by default (#14932) 2018-10-02 20:09:18 -07:00
John Kleinschmidt
319d9e519f ci: Use VSTS checkout of electron (#14926) 2018-10-02 16:21:27 -04:00
Samuel Attard
2b3415dfd8 chore: remove duplicate and un-needed files from dist zips (#14882)
* chore: remove duplicate and un-needed files from dist zips

* Strip chromedriver binaries

Also, fix path for files to skip

* Don't strip mksnapshot for now

Mksnapshot needs special handling for arm/arm64 because there is both an x86 and arm/arm64 binary in those cases.
2018-10-02 11:12:37 -04:00
Cheng Zhao
74badfeb56 fix: check guest view's devtools window size (#14922) 2018-10-02 09:56:33 -05:00
Cheng Zhao
b23c389f89 Revert "fix: check guest view's devtools window size"
This reverts commit 90519c3ac0.

It was an accidencal push
2018-10-02 00:17:13 -07:00
Cheng Zhao
90519c3ac0 fix: check guest view's devtools window size 2018-10-02 00:15:59 -07:00
Samuel Attard
d628aad3bf feat: remove needless mojave dark mode APIs and add instructions on how to use the macOS replacement (#14895) 2018-10-02 14:44:50 +10:00
Samuel Attard
13035612ab ci: clean up the lint config for vsts (#14914) 2018-10-02 13:11:40 +10:00
Milan Burda
3ad3ade828 refactor: add prefer-const to .eslintrc + fix errors (#14880) 2018-10-02 11:56:31 +10:00
Alexey Kuzmin
07161a8452 chore: some async await stuff for the spec runner (#14897) 2018-10-02 11:53:34 +10:00
Jeremy Apthorp
6a3402be5f ci: add -j3 to mksnapshot/ffmpeg due to smaller machine size (#14907) 2018-10-02 11:50:41 +10:00
Felix Rieseberg
79c6e7c3f7 fix: Disable new fade animation for BrowserViews (#14911) 2018-10-02 11:49:26 +10:00
Alexey Kuzmin
c9edf77e8e test: slightly rewrite getGPUInfo() tests (#14863)
Rewrite GPUInfo tests for linux and update `getGPUInfo` functionality for linux.
`basic` and `complete` GPUInfo is same for linux.
2018-10-01 18:34:52 -07:00
Alexey Kuzmin
f1b097024e ci: run more unittests (#14861) 2018-10-01 17:50:52 -05:00
Alexey Kuzmin
5da7bae1b3 ci: refactor the CircleCI config (#14891)
- explicitly mark jobs that should use sccache
 - explicitly mark jobs that should send Slack notifications
 - remove unnecessary env vars and checks
 - build and verify ffmpeg, and build native mksnapshot nightly
 - add "native" to the native mksnapshot jobs names
 - minor changes
2018-10-01 22:24:51 +02:00
Robo
a24ad6bc14 build: define compile time features with buildflag header (#14840)
* build: define compile time features with buildflag header

* refactor: switch to BUILDFLAG(ENABLE_DESKTOP_CAPTURER)

* refactor: switch to BUILDFLAG(ENABLE_RUN_AS_NODE)

* refactor: switch to BUILDFLAG(ENABLE_OSR)

* refactor: switch to BUILDFLAG(ENABLE_VIEW_API)

* refactor: switch to BUILDFLAG(ENABLE_PEPPER_FLASH)

* refactor: switch to BUILDFLAG(OVERRIDE_LOCATION_PROVIDER)

* refactor: switch to BUILDFLAG(ENABLE_PDF_VIEWER)
2018-10-01 16:00:53 -04:00
Alexey Kuzmin
4af922c9a2 ci: fail a tests job is there are no test results (#14884) 2018-10-01 16:59:55 +02:00
Shelley Vohr
ec38561254 chore: wrap new NSAppearance in correct check (#14873)
* fix: wrap new NSAppearance in correct check

* catch dark case on < 10.14

* fix @available conditional organization
2018-10-02 00:52:04 +10:00
Samuel Attard
40b676fee8 chore: skip the .bin from folder hashing due to npm not cleaning up symlinks (#14888)
- fix the ia32 specs not running on CI
 - handle rejected promises in the "spec-runner" script
2018-10-01 16:00:04 +02:00
Alexey Kuzmin
60ac03c08f test: disable getGPUInfo() tests on Linux (#14875) 2018-10-01 12:57:38 +10:00
Milan Burda
d48f9bcf7f refactor: implement <webview> methods via dedicated IPCs without the remote module (#14377) 2018-10-01 10:07:50 +09:00
Milan Burda
ce38be74df refactor: simplify process object initialization for sandboxed renderers (#14878)
Also fix `process.windowsStore`.
2018-09-30 23:24:00 +02:00
Electron Bot
0127bbc8e8 Bump v4.0.0-nightly.20180929 2018-09-29 05:11:59 -07:00
Samuel Attard
7ea0d105c0 chore: fix mac vsts config 2018-09-29 22:05:15 +10:00
Samuel Attard
3d1247933c Revert "Bump v4.0.0-nightly.20180929"
This reverts commit 3cc0a40792.
2018-09-29 22:04:05 +10:00
Electron Bot
3cc0a40792 Bump v4.0.0-nightly.20180929 2018-09-29 04:56:34 -07:00
Samuel Attard
2b107ef3e8 chore: generate ffmpeg zip on macos release 2018-09-29 21:50:31 +10:00
Samuel Attard
6d205423f5 Revert "Bump v4.0.0-nightly.20180929"
This reverts commit dac076dfb1.
2018-09-29 21:50:10 +10:00
Samuel Attard
139c98dc57 Revert "Bump v4.0.0-nightly.20180929"
This reverts commit f5fb6b6a8e.
2018-09-29 21:49:59 +10:00
Electron Bot
f5fb6b6a8e Bump v4.0.0-nightly.20180929 2018-09-29 03:20:13 -07:00
Electron Bot
dac076dfb1 Bump v4.0.0-nightly.20180929 2018-09-29 02:02:46 -07:00
Samuel Attard
f1eea4aab6 chore: run create-typescript-definitions for darwin releases 2018-09-29 18:36:28 +10:00
Samuel Attard
7ac4f7aa3b Revert "Bump v4.0.0-nightly.20180929"
This reverts commit e3adffbbac.
2018-09-29 18:36:12 +10:00
Electron Bot
e3adffbbac Bump v4.0.0-nightly.20180929 2018-09-29 00:04:20 -07:00
Samuel Attard
99cf6815a8 chore: run create-typescript-definitions for darwin releases 2018-09-29 16:39:22 +10:00
Samuel Attard
a4607d3284 chore: set TARGET_ARCH correctly for arm and arm64 builds 2018-09-29 15:32:48 +10:00
Samuel Attard
417150cecf Revert "Bump v4.0.0-nightly.20180928"
This reverts commit fa70e65e0f.
2018-09-29 15:32:20 +10:00
Electron Bot
fa70e65e0f Bump v4.0.0-nightly.20180928 2018-09-28 21:30:52 -07:00
Samuel Attard
7e5d16ce84 chore: generate ffmpeg zip on linux release 2018-09-29 14:26:58 +10:00
Samuel Attard
adc60a72ca chore: get target arch from TARGET_ARCH env var 2018-09-29 14:13:17 +10:00
Samuel Attard
d6500244a4 chore: bump node to get header tar file 2018-09-29 14:01:27 +10:00
Samuel Attard
2669f1247a Revert "Bump v4.0.0-nightly.20180928"
This reverts commit 449bd8e408.
2018-09-29 14:00:41 +10:00
Electron Bot
449bd8e408 Bump v4.0.0-nightly.20180928 2018-09-28 20:13:25 -07:00
Samuel Attard
531a4c5b8c Merge pull request #14868 from electron/fix-win-dump-syms
chore: fix windows dump syms
2018-09-29 13:11:03 +10:00
Samuel Attard
ad9e01393d chore: actually publish from circleci and always build node headers on vsts 2018-09-29 12:33:56 +10:00
Samuel Attard
9ec7137443 chore: fix ffmpeg upload path and always generate node headers 2018-09-29 12:27:29 +10:00
Samuel Attard
851cd22f10 chore: fix upload.py for symbol.zip upload 2018-09-29 12:00:33 +12:00
Milan Burda
c61db523c7 refactor: replace var with const / let (#14866) 2018-09-29 09:17:00 +10:00
Samuel Attard
689ea370e1 chore: push the symbol zip not a folder 2018-09-29 11:06:14 +12:00
John Kleinschmidt
e183bab6c5 Pass along verbose mode 2018-09-28 15:37:11 -04:00
Samuel Attard
b42493e6e6 test: guarantee the order of webview and devtools creation (#14849) 2018-09-28 12:34:57 -07:00
John Kleinschmidt
fda4112168 ci: fix windows symbol gen 2018-09-28 13:24:00 -04:00
Samuel Attard
78239ff0ad chore: add python env to zip-symbols script 2018-09-29 02:10:42 +12:00
Samuel Attard
24576fd0f1 Revert "Bump v4.0.0-nightly.20180927"
This reverts commit 40bc4afcb3.
2018-09-29 00:04:19 +12:00
Troy
0e1365fc94 fix: enable key accelerator flags for Windows and Linux (#14830)
* Fix Accelerator Flags for Windows and Linux

* Lint fix

* Lint whitespace
2018-09-28 06:59:00 -05:00
Electron Bot
40bc4afcb3 Bump v4.0.0-nightly.20180927 2018-09-27 23:51:02 -07:00
Samuel Attard
ff364901e1 chore: use get_electron_branding instead of electron_gyp in the symbol zip generator 2018-09-28 16:48:09 +10:00
Samuel Attard
462d65c203 Revert "Bump v4.0.0-nightly.20180927"
This reverts commit 8c1d6f2aa2.
2018-09-28 16:47:41 +10:00
Electron Bot
8c1d6f2aa2 Bump v4.0.0-nightly.20180927 2018-09-27 23:01:31 -07:00
Samuel Attard
46932913d1 chore: dont tag libcc when it does not exist in GN build 2018-09-28 15:58:54 +10:00
Samuel Attard
b0b9ebd448 chore: fix path to dump_syms in the windows breakpad tool 2018-09-28 15:57:16 +10:00
Samuel Attard
27d363015b chore: make zip-symbols executable 2018-09-28 15:35:30 +10:00
Samuel Attard
3006974106 Revert "Bump v4.0.0-nightly.20180927"
This reverts commit 06aaf71706.
2018-09-28 15:34:47 +10:00
Electron Bot
06aaf71706 Bump v4.0.0-nightly.20180927 2018-09-27 21:03:47 -07:00
Samuel Attard
0a4ddf4512 chore: ensure the bump-version script modified the version.h file correctly 2018-09-28 13:58:48 +10:00
Samuel Attard
d51633e598 Revert "Bump v4.0.0-nightly.20180927"
This reverts commit c48306c80f.
2018-09-28 13:57:04 +10:00
Electron Bot
c48306c80f Bump v4.0.0-nightly.20180927 2018-09-27 20:22:40 -07:00
Samuel Attard
e86298d5d9 chore: fix relative links in docs and enforce we dont break them again (#14832) 2018-09-28 13:16:38 +10:00
Samuel Attard
46141b8283 chore: initial work for running releases of GN build - Merge pull request #14831 from electron/prepare-for-4-nightlies 2018-09-28 13:06:48 +10:00
Samuel Attard
a524c5ec12 chore: move the view APIs to their own directory (#14722)
* chore: move the view APIs to their own directory

* move view api cpp files
2018-09-28 12:47:09 +10:00
Samuel Attard
37f405859f chore: fix out_dir usage in upload-symbols.py 2018-09-28 11:24:50 +10:00
Samuel Attard
55765424f9 chore: fix test command in docs 2018-09-28 11:19:00 +10:00
John Kleinschmidt
8df703a13b Update mksnapshot uploads 2018-09-28 11:18:25 +10:00
Shelley Vohr
e66a5f79a2 updating directories and related functions 2018-09-28 11:18:06 +10:00
John Kleinschmidt
1c728876e6 Fix yaml issue 2018-09-28 11:17:11 +10:00
John Kleinschmidt
3643ce5f85 Add publish jobs for CircleCI releases 2018-09-28 11:17:11 +10:00
Samuel Attard
cba749e305 chore: fix appveyor deploy working dir 2018-09-28 11:17:11 +10:00
Samuel Attard
d0691dffdf chore: remove serve-node-headers.py, unused in new testing setup and points at old out_dir 2018-09-28 11:17:11 +10:00
Samuel Attard
85464c5b46 chore: ensure boto is initialized so that s3put works 2018-09-28 11:17:11 +10:00
Samuel Attard
c1705f2789 chore: fix out_dir usage in upload-node-headers.py 2018-09-28 11:17:11 +10:00
Samuel Attard
363cf1dec2 chore: fix out_dir usage in upload-node-checksums.py 2018-09-28 11:16:38 +10:00
Samuel Attard
504581e308 chore: fix out_dir usage in upload-index-json.py 2018-09-28 11:16:38 +10:00
Samuel Attard
2adb44a402 chore: remove unused files to simply out_dir replacements 2018-09-28 11:16:37 +10:00
Samuel Attard
4b0f335aba chore: initial work for running releases of GN build 2018-09-28 11:15:46 +10:00
Jeremy Apthorp
77fb9cf416 chore: stop using electron.gyp for branding and version (#14559)
* chore: stop using electron.gyp for version info

* chore: remove branding info from electron.gyp

* Use get_electron_branding instead of gn read

* Flip project_name/product_name
2018-09-27 14:53:08 -04:00
Samuel Attard
6be69048e6 fix: handle shortcuts by default if no WebPreferences object exists (#14766)
DevTools webcontents do not have webpreferences

Fixes #14685
2018-09-28 01:41:09 +10:00
Samuel Attard
0d2a0c7583 feat: add APIs to support mojave dark modes (#14755)
* feat: add APIs to support mojave dark mode

Closes #13387

* docs: fix system-prefs typo
2018-09-27 10:33:31 -05:00
Alexey Kuzmin
8963529238 ci: run unittests and browsertests separately (#14826) 2018-09-27 11:29:27 -04:00
Nitish Sakhawalkar
5c108728d6 feat: Implementation of getGPUInfo API. (#13486)
* Implementation of getGPUInfo API.

* Clear promise set

* Changes to promise usage

* Minor fixes

* Fix linux build

* Update spec

* Fix lint (linter didn't run on windows locally)

* Test running single test for CI

* Update spec
2018-09-28 00:59:23 +10:00
Alexey Kuzmin
638311b6b3 build: turn on OSR for GN builds (#14352)
* build: turn on OSR for GN builds

* remove mac-only speech functions in osr

They were removed as a part of https://chromium-review.googlesource.com/c/chromium/src/+/923548

* implement WasResized in MacHelper

* add missing screen include

* fix: use proper bitmap operations to construct frame to avoid failing checks

* switch to SkCanvas for drawing
2018-09-27 09:32:31 -04:00
Samuel Attard
131b19403f chore: upload node.lib for v4 (#14829)
Closes #14828
2018-09-27 08:38:41 -04:00
Samuel Attard
7dc7cd1d89 fix: send null in debugger callback when no error (#14814)
Fixes #13811
2018-09-27 17:43:45 +10:00
Shelley Vohr
985d35fc1c fix: update deprecated NSWindow masks (#14760) 2018-09-26 16:00:57 -07:00
Shelley Vohr
be2c27d5b8 correct key code reqs for accel doc (#14823) 2018-09-26 15:03:55 -07:00
John Kleinschmidt
1b4d425876 build: Generate breakpad symbols for GN release builds (#14791)
* Use chromium 's generate_breakpad_symbols.py

* Add breakpad symbol gen to CI.
2018-09-26 14:56:05 -04:00
Samuel Attard
49f9019007 chore: check in the changes to package-lock.json (#14815) 2018-09-26 21:03:43 +10:00
Milan Burda
b499d57cfd refactor: use error-utils for remote exception serialization / deserialization (#14788)
* refactor: use error-utils for remote exception serialization / deserialization

* fix internal process.type in sandboxed renderer
2018-09-26 15:44:55 +10:00
Milan Burda
3df739fa89 refactor: implement crashReporter.start() without the remote module (#14434) 2018-09-26 15:43:34 +10:00
Troy
560b1c17af fix: setMaximizable to be true if window is resizable & maximizable (#14648)
* setMaximizable to be true if window is resizable & maximizable

* Fix linting

* Add regressive test to verify maxmizable state

* Leaves maximizable state of window alone if setResizable is called

* Fix exclusive test

* Fix crashing text

* SetMaximizable unconditionally

* Remember former maximizable state

* Fix accidental mac variable deletion

* Logic modification

* Lint

* Remove unneeded test

* Remove unneeded variable since only Windows is effect
2018-09-26 11:41:40 +10:00
Shelley Vohr
c9bc3471e7 fix: get background color from GtkMenuBar#menubar (#14785)
* fix: get background color from GtkMenuBar#menubar

* expose libgtkui::GetBgColor
2018-09-25 13:57:06 -07:00
Jeremy Apthorp
18c2574350 ci: migrate libcc's Dockerfile to electron and update it (#14786)
* ci: migrate libcc's Dockerfile to electron and update it

* Added nano and sudo

* Use new docker image in CircleCi

* installing nodejs needs curl

* Add needed dependencies

nacl contains dependencies needed for arm and ia32 builds
2018-09-25 15:30:22 -04:00
Shelley Vohr
c73a6906f6 chore: fix compilation with XCode 10 (#14800)
* chore: fix compilation with XCode 10

* update chromium commit ref
2018-09-25 10:42:13 -07:00
Jeremy Apthorp
442f05dfe7 chore: force patches to be checked out with LF line endings (#14789) 2018-09-26 02:04:32 +12:00
Alexey Kuzmin
c5fa7b8043 ci: add a branch name to Slack notifications (#14793) 2018-09-25 09:59:39 -04:00
Shelley Vohr
2617f50b7d chore: update mksnapshot and ffmpeg for GN (#14738)
* chore: update mksnapshot and ffmpeg for GN

* fix typo

* add non-native builds to CI

* split mksnapshot build and store steps

* Fix config order

* Use different targets for mksnapshot and native_mksnapshot

mksnapshot gets built in electron_app as part of the v8 build, so copy it from there

* Revert "Use different targets for mksnapshot and native_mksnapshot"

This reverts commit 6a1a50aa69.

* Try specifying v8_snapshot_toolchain

* Fix v8_snapshot_toolchain reference

* Fix artifact locations

* Test native mksnapshot
2018-09-24 21:48:49 -04:00
Shelley Vohr
c7b91acf41 fix: inconsistent titleBarStyle on transparent fullscreen (#14765) 2018-09-24 17:15:18 -07:00
Samuel Attard
50a4a8e9c3 spec: add test for syncronous access to blink APIs (#14637)
This test should ensure we catch a regression of #13787
2018-09-25 10:40:15 +12:00
Alexey Kuzmin
e6242d5ef8 ci: do not suppress stdout from Google Test binaries (#14782) 2018-09-24 13:47:06 -07:00
Shelley Vohr
e9549a89bb docs: update releasing info (#14675)
* docs: update releasing info

* update more release and upload files

* address feedback from review
2018-09-24 09:12:16 -07:00
Shelley Vohr
2bcc86dac7 docs: clarify allowable background colors for BrowserWindow transparency (#14762)
* docs: clarify allowable colors for transparency

* fix alpha value specification
2018-09-24 10:51:01 -05:00
Jeremy Apthorp
335caef9ad fix: support macos 10.14 SDK (#14758)
* support macos 10.14 SDK

* forward-declare NSUserActivityRestoring for backwards compatibility

* that didn't work, let's resort to #ifdef
2018-09-24 10:41:17 -04:00
Alexey Kuzmin
8a1ff7ca49 ci: run native tests on CircleCI (#14774)
* test: add a script to run Google Test binaries

* ci: run native tests on CircleCI
2018-09-24 09:44:18 -04:00
John Kleinschmidt
b3e469fa98 Merge pull request #14708 from electron/updates-for-gn-release
build: Updates for GN release builds
2018-09-24 09:36:57 -04:00
Alexey Kuzmin
0e3b2d92d7 ci: fix pattern for the Chromium branches names for CircleCI (#14769)
https://circleci.com/docs/2.0/workflows/#using-regular-expressions-to-filter-tags-and-branches
2018-09-23 10:19:43 -07:00
Samuel Attard
176a76217c chore: have 'use strict' consistently across our lib files (#14721) 2018-09-23 00:28:50 +12:00
John Kleinschmidt
70fb89e201 No longer need to filter out resources dir
Also remove not needed change
2018-09-21 21:29:55 -04:00
John Kleinschmidt
a82c4923bd Make sure resources gets skipped 2018-09-21 16:58:33 -04:00
John Kleinschmidt
806e236850 Revert to one job instead of two
Splitting into build and test jobs is slower and we can set individual timeouts on the test steps.
2018-09-21 16:54:24 -04:00
Jeremy Apthorp
0a621bfea1 chore: move crashpad patch to chromium dir (#14744)
third_party/crashpad is not a DEP, it's actually checked into the chromium tree
2018-09-21 13:02:35 -07:00
John Kleinschmidt
334fea3d7b Remove broken symlinks from buildtools before saving it to artifacts 2018-09-21 15:37:52 -04:00
John Kleinschmidt
e85ea5dcff Add buildtools to artifacts needed for testing
Also remove not needed change
2018-09-21 14:22:32 -04:00
John Kleinschmidt
bfaf3f458f Make killall Electron more friendly 2018-09-21 13:14:01 -04:00
John Kleinschmidt
96ec3e9162 Split build and test into separate jobs
Also clean from review
2018-09-21 13:14:01 -04:00
John Kleinschmidt
62172dee6c Add electron_chromedriver_zip target 2018-09-21 13:13:52 -04:00
John Kleinschmidt
e367aff8ac Cleaned up/fixed skip_path with @nornagon's suggestion.
Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net>
2018-09-21 13:12:26 -04:00
John Kleinschmidt
3154275d2f Add verify ffmpeg back to CircleCI builds 2018-09-21 13:12:26 -04:00
John Kleinschmidt
e78d84165a Add chromedriver to build
Make sure certain paths/files don't make it into the dist zip
Don't build the content shell test_runner
Make sure libffmpeg.dylib gets put in the right place
Run verify-ffmpeg on Mac builds
Add ffmpeg build to VSTS
2018-09-21 13:12:26 -04:00
John Kleinschmidt
5317c2754f Merge pull request #14754 from electron/circle-ci-config-clean-up
ci: clean up the CircleCI config
2018-09-21 10:44:05 -04:00
Aleksei Kuzmin
0b560607f7 ci: run nightly builds for Chromium upgrade branches 2018-09-21 12:25:20 +02:00
Aleksei Kuzmin
499fc48ccf ci: clean up the CircleCI config 2018-09-21 12:25:08 +02:00
Samuel Attard
32a9df2940 refactor: clean up the default app implementation (#14719)
* Disable nodeIntegration
* Enable contextIsolation
* Re-implement the CSP security check to handle running in
contextIsolation
* Disable bad DCHECKS for the promise helper
* Remove the unused "-d" flag for the electron binary
* Added a way to hide the default help output for electron devs who
don't want to see it every time
2018-09-21 15:24:42 +10:00
Sylvester Keil
a24307b8e8 Fix second-instance handler signature (#14731) 2018-09-20 20:02:28 -07:00
Alexey Kuzmin
d927501139 ci: build mksnapshot in a separate job (#14741) 2018-09-20 17:50:14 -07:00
Jeremy Apthorp
2538e20c4d test: inherit stdio when 'npm install'ing spec deps (#14740) 2018-09-20 13:43:33 -07:00
John Kleinschmidt
76cd065291 ci:Make sure that tests on VSTS get marked as failed if they fail (#14734) 2018-09-20 14:21:09 -05:00
Shelley Vohr
7b8daaab67 chore: add ffmpeg dist zip (#14681) 2018-09-20 11:10:10 -07:00
Cheng Zhao
6f494b3c58 fix: do not set layer explicitly for frameless window (#14730) 2018-09-20 12:24:55 -05:00
John Kleinschmidt
1d20057df3 Merge pull request #14733 from electron/reenable-app-exit-exitCode
test: reenable app module > app.exit(exitCode) > closes all windows
2018-09-20 11:15:34 -04:00
John Kleinschmidt
d82cd7b3c7 Merge pull request #14729 from electron/verify-ffmpeg-on-a-separate-job
ci: build ffmpeg and verify it in a separate jobs
2018-09-20 11:14:57 -04:00
Aleksei Kuzmin
c75537b0bc ci: build ffmpeg and verify it in a separate jobs
- it is an independent task and should be done separately
 - we can use smaller machines for that
2018-09-20 15:52:22 +02:00
John Kleinschmidt
080d499053 Merge pull request #14712 from electron/circle-no-map-merge
ci: [circle] don't use map merge key (<<) where unneeded
2018-09-20 09:50:06 -04:00
John Kleinschmidt
8854d9872c test: reenable app moduele > app.exit(exitCode) > closes all windows 2018-09-20 09:32:02 -04:00
Samuel Attard
5541cab1ba docs: type the promises in our docs (#14715) 2018-09-20 22:37:56 +10:00
Samuel Attard
6b50dc8745 docs: add python-dbusmock to the linux requirements (#14727)
Refs #14726
2018-09-20 21:41:00 +10:00
Charles Kerr
1b3fdb18e3 fix: change subprocess.Popen calls to work on Linux too (#14689)
* fix: remove 'shell=True' when calling 'git diff'

Calling subprocess.Popen() with a list of args and shell=True causes
the args to be ignored, so ['git', 'diff', '--name-only', '--staged']
was turning into just 'git'. Instead of getting a list of changed
files, we got the --help message.

Two possible fixes: change it from a list to a single string, or remove
'shell=True'. The shell doesn't seem to be needed, so I chose that.

More reading: https://stackoverflow.com/questions/26417658/subprocess-call-arguments-ignored-when-using-shell-true-w-list

* fix: remove 'shell=True' when calling clang-format

Same problem / rationale as previous commit.

* fix: re-add shell=True for win; use different fix
2018-09-20 16:57:21 +10:00
Jeremy Apthorp
977e287cfa chore: turn off clang-format for ATOM_PRE_RELEASE_VERSION (#14711) 2018-09-20 16:55:07 +10:00
Samuel Attard
82a5a9f455 chore: ignore spec/node_modules from linting (#14717) 2018-09-20 15:41:01 +10:00
Samuel Attard
54ef906832 [RFC] perf: use an internal module resolver to improve require performance (#14633)
* perf: use an internal module resolver instead of relative requires

* perf: memoize the results of getting exported Electron properties

* perf: make internal module changes consistent across sandboxed / bundled files
2018-09-20 13:43:26 +10:00
Jeremy Apthorp
e390d611df ci: [circle] don't use map merge key (<<) where unneeded 2018-09-19 16:06:19 -07:00
Jeremy Apthorp
73d1b76b54 test: runas is not an optional dependency (#14704) 2018-09-19 15:59:37 -07:00
John Kleinschmidt
e059f303d7 Merge pull request #14526 from jakubzitny/window-open-clarifications
docs: specify BrowserWindow features passable to window.open
2018-09-19 15:05:10 -04:00
John Kleinschmidt
b48ea70eeb Merge pull request #14688 from electron/run-clang-format
chore: run clang-format
2018-09-19 14:27:21 -04:00
John Kleinschmidt
4f70f0e66a Merge pull request #14690 from electron/lint-runner-support-cc-fix
Lint runner support cc fix
2018-09-19 14:26:57 -04:00
Jeremy Apthorp
b8a8bf82ac docs: update "upgrading node" guide (#14649)
I think there's more to do here, and I'll continue to add to & update this documentation as I go through the process of upgrading node in the context of the GN build.
2018-09-19 11:08:39 -07:00
John Kleinschmidt
0e91db2188 Merge pull request #14672 from electron/use-smaller-machines-on-linux-ci
ci: use smaller size machines for some Linux CI jobs
2018-09-19 13:51:58 -04:00
John Kleinschmidt
a6e3466a62 Merge pull request #14686 from electron/refactor-circle-ci-mac-builds
ci: refactor Mac builds on CircleCI
2018-09-19 13:50:04 -04:00
Shelley Vohr
c958ed6a85 chore: fix await in cleanup script (#14670) 2018-09-19 09:38:35 -07:00
Jeremy Apthorp
1b165c2c39 chore: remove vendored depot_tools (#14676)
The GN build now requires that users install depot_tools to their path, rendering our vendored version obsolete.
2018-09-19 09:37:38 -07:00
Aleksei Kuzmin
7fc3bcaa02 chore: run clang-format
- atom/
 - brightray/
 - chromium_src/
2018-09-19 17:18:10 +02:00
Charles Kerr
03553abc11 feat: use run-clang-format in cc --fix mode 2018-09-19 08:42:03 -05:00
Charles Kerr
1988c6876d refactor: use same diff args as run-clang-format 2018-09-19 08:40:57 -05:00
Aleksei Kuzmin
2f0f88e60a ci: do not run verify-ffmpeg on Mac on CircleCI 2018-09-19 15:18:35 +02:00
Aleksei Kuzmin
be2bcbef42 ci: refactor Mac builds on CircleCI 2018-09-19 15:18:35 +02:00
Sofia Nguy
ec125b761c chore: AFP info for general public (#14650)
* migrate AFP info from maintainers

* wording changes

* capitalize headers

* move to docs and delete details

* review changes
2018-09-18 13:13:49 -05:00
Robo
b05bce1686 build: with enable_extensions=false (#14657) 2018-09-18 11:04:54 -07:00
Milan Burda
e22142ef9c feat: add process.takeHeapSnapshot() / webContents.takeHeapSnapshot() (#14456) 2018-09-18 11:00:31 -07:00
Aleksei Kuzmin
8664adaea4 ci: use smaller size machines for some Linux CI jobs
- use "medium" machines for testing jobs
 - keep "2xlarge" for checkout and compilation
2018-09-18 18:30:01 +02:00
John Kleinschmidt
1855144d26 Merge pull request #14663 from electron/add-fyi-job-for-chromium-tests
ci: add a FYI job to build Chromium test binaries
2018-09-18 10:14:58 -04:00
Samuel Attard
7f7ec23c28 chore: dont pass --stable through to bump-version.py (#14661)
I want to clean up this "stable" and "beta" code smell eventually but
for now this will unblock the 2.0.x releases.
2018-09-18 23:32:49 +10:00
Aleksei Kuzmin
6b6c1d0c0c ci: add a FYI job to build Chromium test binaries 2018-09-18 14:01:20 +02:00
Charles Kerr
eeeeae3bff refactor: use one script to launch all linters (#14622)
* refactor: use one script to launch py, js, cc linters

* lint changed files as precommit hook

* fix py linter in GN build

* add overlooked files to linter search path
2018-09-17 16:09:02 -05:00
John Kleinschmidt
ab47ad7bbc Merge pull request #14640 from electron/circle-ci-workspaces
ci: use CircleCI workspaces
2018-09-17 12:36:18 -04:00
Aleksei Kuzmin
a0dd5f03a8 ci: use CircleCI workspaces 2018-09-17 17:39:18 +02:00
Shelley Vohr
12a435273d fix: quit properly in simpleFullScreen mode (#14620) 2018-09-16 22:22:09 -07:00
Charles Kerr
a45ded5508 chore: fix python lint warnings (#14638)
* chore: fix lint warnings

* chore: another try at python import errors

Looks like the problem is that dbus_mock.py is running as
a script but living in the `lib/` directory where it's part of a
module. Moving it up into the `script/` directory seems to
solve the issue.
2018-09-16 12:24:07 -05:00
Samuel Attard
6d01952e66 chore: replace standard with eslint-config-standard and add custom rules (#14636)
* chore: replace standard with eslint-config-standard

This adds support for --cache so linting JS only takes ~1 second and only lints things that changed

It also allows us to add custom linting rules

* chore: add eslint-plugin-mocha and enable the no-exclusive-tests rule

This will block anyone from pushing / merging a `.only` test or describe
2018-09-16 03:51:23 +10:00
Samuel Attard
7065093869 feat: add will-redirect (#13866)
* feat: add will-redirect to allow people to prevent 30X redirects

* spec: add tests for the will-redirect event

* refactor: implement will-redirect using NavigationThrottle instead of PostTask

This avoids a potential race condition and immediately cancels the
navigation

* docs: add docs for did-redirect-navigation

* refactor: move AtomNavigationThrottle out of net folder

* refactor: update header guard for atom_navigation_throttle.h

* refactor: fix chromium style errors in the GN build

* refactor: update throttle impl to NOTREACHED and std::make_unqique
2018-09-16 01:42:43 +10:00
Samuel Attard
6ad8583a8b chore: remove --version from "create-api-json" (#14634)
The variable already defaults to this value and this `$` syntax does not work cross platform

Closes #13462
2018-09-16 01:40:20 +10:00
Robo
66ced07545 build: update electron patches (#14623)
* build: remove common/icu/no_inline_default_constructor.patch

It was added in https://github.com/electron/libchromiumcontent/pull/207,
the issue is no longer valid in the GN build.

* build: remove common/icu/build_gn.patch

In GN release build all code including node are linked
statically in a single binary, the workaround is no longer valid.

* build: remove ununsed patches

* build: remove is_electron_gn_build arg

* build: remove component mode crt config patch

* build: remove executable config patch for character_data_generator

* build: remove latency_info.patch

* build: remove exec_script_whitelist patch

* build: update patches/common/v8/build_gn.patch

* build: remove common/chromium/fix-arm64-linking-error.patch

It was added in a1df18ca36
to workaround a linker issue.

* build: remove common/chromium/protobuf_build_gn.patch

It was added to workaround a VS linker bug, it has been fixed
in Update 1

* build: remove common/chromium/disable-recursive-surface-sync.patch

It was added in 6bc6626e2c
to fix dcheck on macOS, it no longer appears to be an issue.
2018-09-15 06:40:18 -05:00
Alexey Kuzmin
0ea687b529 chore: copy script/patch.py from the libcc repo (#14627)
* chore: copy script/patch.py from the libcc repo

* chore: fix pylint errors
2018-09-14 15:12:05 -07:00
Alexey Kuzmin
a314a15ecd tests: fix compilation of blink_unittests (#14574) 2018-09-14 15:11:26 -07:00
John Kleinschmidt
838b26ee26 ci: Move Mac builds to Azure Devops (VSTS) (#14588)
* Add support for multiple mocha reporters

Allows us to output to junit file and to console at the same time

* Cleanup VSTS file

Don't install depot_tools everytime as it is already installed.

Only run tests if "RUN_TESTS" environment variable is set
Only notify slack if "NOTIFY_SLACK" environment variable is set

Don't use sccache for release builds

Move CircleCI mac builds to VSTS

* Only build mac PRS from forks

Don't install depot_tools everytime as it is already installed.

Only run tests if "RUN_TESTS" environment variable is set
Only notify slack if "NOTIFY_SLACK" environment variable is set

Don't use sccache for release builds

Move CircleCI mac builds to VSTS

Use sccache helper script

* rename vsts-gn.yml to vsts.yml
Make sure Electron isn't running before starting tests
2018-09-14 11:56:16 -07:00
John Kleinschmidt
451b1782ac Merge pull request #14613 from electron/update-standard
chore: update to standard 12 and fix CI
2018-09-14 10:26:15 -04:00
Samuel Attard
dc2a6c5d71 spec: fix crashReporter upload assertions 2018-09-14 22:23:58 +10:00
Samuel Attard
40f0f049a2 spec: fix final node and chromium specs after assert change 2018-09-14 18:32:17 +10:00
Samuel Attard
91f00a518a ci: fix CI runs after 9e85bdb0 2018-09-14 17:50:03 +10:00
Samuel Attard
4bcc08826b spec: fix headers tests to match APIs 2018-09-14 17:05:26 +10:00
Samuel Attard
9e59d2a78d spec: fix broken remote specs 2018-09-14 16:57:39 +10:00
Samuel Attard
3487bbe356 spec: handle null prototypes in specs 2018-09-14 16:47:54 +10:00
Samuel Attard
21aa28d60f refactor: s/resolverGetters/resolveGetters 2018-09-14 16:41:21 +10:00
Samuel Attard
5c8c31c93d spec: update 'BrowserWindow.fromBrowserView(browserView) returns undefined if not attached - returns undefined if not attached' to match docs (null not undefined) 2018-09-14 16:38:44 +10:00
Samuel Attard
91cc453ccc spec: add helper to resolve property getters 2018-09-14 16:36:23 +10:00
Jeremy Apthorp
76c5f5cc8a build: move libcc patches to electron repo (#14104)
In the GN build, libchromiumcontent is no longer a distinct library, but
merely a container for a set of scripts and patches. Maintaining those
patches in a separate repository is tedious and error-prone, so merge
them into the main repo.

Once this is merged and GN is the default way to build Electron, the
libchromiumcontent repository can be archived.
2018-09-13 22:02:16 -07:00
Samuel Attard
558fff69e7 chore: update to standard 12 2018-09-14 14:57:01 +10:00
Jeremy Apthorp
9e85bdb02c docs: prefer out/Debug to out/Default in build docs 2018-09-13 15:08:31 -07:00
Samuel Attard
238ea29fa8 chore: update package.json scripts for gn build and automated releases (#14612)
* Removes un-used and non-functional code coverage helpers
* Removes un-used release script aliases
* Moves TLS to a lib folder for cleaner directory structure
* Implements start.py as start.js for the GN build
* Adds a re-usable getElectronExec helper for future scripts
* Refactors spec runner to use the helper
2018-09-14 02:57:39 +10:00
Samuel Attard
774395d910 chore: dont install spec deps on sync needlessly (#14614)
We run install for testing only when required anyway
2018-09-14 02:51:21 +10:00
Jeremy Apthorp
961147151f fix: re-enable high-dpi support on windows (#14596)
fixes #14568
2018-09-13 10:40:29 -05:00
Samuel Attard
22ab85c39e chore: update request dep to remove warning about cryptiles (#14610) 2018-09-14 01:35:18 +10:00
Samuel Attard
05783d56f7 chore: make the 'npm run test' command work out of the box (#14602) 2018-09-14 01:30:12 +10:00
John Kleinschmidt
429b18d7a0 Merge pull request #14600 from electron/media-permission
feat: add mediaTypes to media permission requests
2018-09-13 10:39:08 -04:00
Samuel Attard
8cb449b5e1 chore: fix linting error on master (#14609) 2018-09-14 00:28:47 +10:00
Samuel Attard
73a1a8b3f0 feat: automatically round numbers that are converted to points (#14604)
Fixes #14490
2018-09-13 08:28:56 -05:00
Alexey Kuzmin
7d7401987a chore: generate API definitions in the project root (#14578)
'out' folder doesn't exist in a freshly cloned repo,
and there are not reasons to use it anyway.
2018-09-13 08:08:08 -05:00
Samuel Attard
4aa75c2b30 chore: update package-lock.json when bumping package.json (#14599) 2018-09-13 17:04:39 +10:00
Samuel Attard
7025cbd0c9 feat: add mediaTypes to media permission requests
This is done to be consistent with setPermissionCheckHandler and to be
backwards compatible

Fixes #14168
2018-09-13 16:58:57 +10:00
Samuel Attard
a55fd16349 fix: update node ref to fix patch handling unhandled rejections (#14603)
Fixes #14573
2018-09-13 16:32:49 +10:00
Robo
d9c6dd0254 chore: add debugger specs for multiple sessions (#14598) 2018-09-13 16:32:30 +10:00
Charles Kerr
d663b4eaee fix: fix gn cpplint warnings (#14583)
* chore: fix cpplint 'include_what_you_use' warnings

Typically by including <memory>, <utility> etc.

* chore: fix 'static/global string constant' warning

Use C style strings instead of std::string.

Style guide forbids non-trivial static / global variables. https://google.github.io/styleguide/cppguide.html#Static_and_Global_Variables

/home/charles/electron/electron-gn/src/electron/script/cpplint.js

* refactor: remove global string variables.

Fix 'global string variables are not permitted' linter warnings
by using the base::NoDestructor<> wrapper to make it explicit that
these variables are never destroyed.

The style guide's take on globals with nontrivial destructors:
https://google.github.io/styleguide/cppguide.html#Static_and_Global_Variables

* fix: initializer error introduced in last commit

* fix: remove WIP file that was included by accident

* fix: include order

* fix: include order

* fix: include order

* fix: include order, again
2018-09-12 19:25:56 -05:00
Jeremy Apthorp
183a043216 chore: remove unneeded ssize_t hack
See electron/libchromiumcontent#682
2018-09-12 15:33:59 -07:00
Charles Kerr
a3f7e298cf refactor: remove unused, duplicated code in deprecate module (#14579)
* remove obsolete tests

 * remove unused deprecate API

 * make a warnOnce helper for the deprecate methods

 * misc. copyediting, e.g. variable names, whitespace

 * test that any deprecation warns once at most

 * use strict
2018-09-12 17:13:22 -05:00
Jeremy Apthorp
d78a2a110a Merge pull request #14590 from electron/remove-gn-build-define
chore: remove ELECTRON_GN_BUILD define
2018-09-12 14:04:33 -07:00
Nitish Sakhawalkar
e90c281ef3 fix: Windows Background color issue (#14561)
Call InvalidateRect for windows after setting the bg color
2018-09-12 13:41:47 -07:00
Charles Kerr
7b71d7cbce feat: run 'cpplint -c' as a precommit hook (#14586)
* feat: `cpplint -c` all changed files, even staged

* refactor: simplify cpplint invocation

* fix: cpplint now EXIT_FAILUREs on linter errors

* feat: precommit hook runs 'cpplint -c'
2018-09-12 14:43:54 -05:00
Jeremy Apthorp
784c06c784 chore: remove unsupported DISABLE_NACL define 2018-09-12 12:09:41 -07:00
Robo
e860748d6b fix: Invalidate weak ptrs before window Javascript object is destroyed (#14532)
* fix: Invalidate weak ptrs before window Javascript object is destroyed

* chore: add regression test for #14513

This test is similar to the original gist at https://gist.github.com/bpasero/a02a645e11f4946dcca1331d0299149d -- the key is to open multiple windows and add an `app.on('browser-window-focus') listener that accesses window.id.

* fix: last commit didn't test the right thing.

The test needs to run in the main process to reproduce the
conditions reported in #14513
2018-09-12 13:58:04 -05:00
Jeremy Apthorp
147d5f0dd9 chore: remove ELECTRON_GN_BUILD define 2018-09-12 11:47:16 -07:00
Charles Kerr
4b5cb7c548 fix: cpplint didn't work in GN (#14581)
* fix: cpplint didn't work in GN

* feat: make cpplint non-errors less noisy

* refactor: remove unneeded findCppLint helper

We don't need this in the GN world: it's the user's responsibility
to have depot_tools in their path.

* refactor: use const instead of let where possible
2018-09-12 12:44:00 -05:00
John Kleinschmidt
1682170d3d Merge pull request #14575 from electron/do-not-use-libcc-in-ci-scripts
ci: do not use scripts and binaries from the libcc repo
2018-09-12 12:23:49 -04:00
John Kleinschmidt
b2f73efcff Merge pull request #14553 from electron/appveyor-yml
ci: rename appveyor{-gn,}.yml
2018-09-12 11:02:43 -04:00
Milan Burda
932f6c8a41 feat: add screen reader support to Win32 toast notifications (#13834) 2018-09-13 00:18:35 +10:00
Jeremy Apthorp
cfcd008f02 ci: rename appveyor{-gn,}.yml 2018-09-12 09:50:58 -04:00
Robo
2cd03bf360 build: remove duplicate devtools sources (#14522)
* build: remove duplicate devtools sources

* build: create separate target for chrome sources

* Move sources that are always depended on by electron,
  starting with security_state_tab_helper.{cc|h}
* Add //component/strings to pak for devtools security tab

* fix: allow specifying type of the added filesystem.

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

* fix: do not index excluded folders

https://chromium-review.googlesource.com/c/chromium/src/+/972579
2018-09-12 08:45:08 -05:00
Aleksei Kuzmin
45837af24a ci: do not use scripts and binaries from the libcc repo 2018-09-12 13:08:17 +02:00
Samuel Attard
011c3b4326 chore: make large beta numbers work when publishing (#14571) 2018-09-12 17:59:06 +10:00
Shelley Vohr
a8a610cb34 chore: remove only on deprecations api spec (#14564)
* chore: remove only

* add option to ignore missing properties
2018-09-11 23:00:41 -07:00
Jeremy Apthorp
ebbaa4f89b docs: simplify git cache instructions (#14562) 2018-09-12 12:06:55 +10:00
Jeremy Apthorp
b35c8e4e1e docs: update instructions for building win32 target (#14560) 2018-09-12 12:05:51 +10:00
Jeremy Apthorp
f8828aa804 Merge pull request #13756 from electron/chromium-upgrade/67
chore: Chromium 67
2018-09-11 14:56:11 -07:00
azure-pipelines[bot]
2470bd4691 ci: set up a lint job (#14536) 2018-09-11 14:28:18 -07:00
Robo
f76a8c7b24 build: [m67] enable widevine support (#14519)
* build: [m67] enable widevine support

* fix: remove plugin cache reset hack

It was added in (#8907) to make widevine cdm shows up in
navigator.plugins, since widevine support is no longer
enabled by a plugin it can be removed safely.
2018-09-11 20:24:04 +02:00
Aleksei Kuzmin
ce8e93bad3 tests: ignore nulls and undefined in the "util.promisify" test 2018-09-11 20:24:04 +02:00
Aleksei Kuzmin
56f5d6f8fa FIXME: tests: disable a "unhandledrejection" test of the remote module 2018-09-11 20:24:04 +02:00
deepak1556
ba0a1cc5e9 build: guard widevine related code behind flag 2018-09-11 20:24:04 +02:00
Aleksei Kuzmin
1ba7e36ade ci: update Visual Studio version for AppVeyor 2018-09-11 20:24:04 +02:00
Jeremy Apthorp
917a905447 fix: force SharedArrayBuffer feature to be enabled (#14498) 2018-09-11 20:24:04 +02:00
Jeremy Apthorp
829b230b85 fix: initialize tracing controller before starting platform (#14499) 2018-09-11 20:24:03 +02:00
Aleksei Kuzmin
7589555cec inspector: stop dragging platform pointer
https://github.com/nodejs/node/commit/296fd57324
2018-09-11 20:24:03 +02:00
deepak1556
11349ebf2e build: //service/viz mojo interfaces for osr
(cherry picked from commit da2b2e7e4eb1fd8424c849d023d365619345735b)
2018-09-11 20:24:03 +02:00
Aleksei Kuzmin
9f6cf9623c chore: fix a chromium-style error
osr_render_widget_host_view.cc:1150:12:
error: [chromium-style] auto variable type must not deduce to a raw pointer type.

(cherry picked from commit cc8e4ef68376627d20377ae3491df8e4f8dee08e)
2018-09-11 20:24:03 +02:00
Heilig Benedek
1a9e253259 fix: fix osr compilation on Windows 2018-09-11 20:24:03 +02:00
Aleksei Kuzmin
8bfad3ace3 build: use default value of the enable_widevine flag 2018-09-11 20:24:03 +02:00
Aleksei Kuzmin
186f8d14b5 gpu: Merge gpu_ipc_service_unittests into gpu_unittests
https://chromium-review.googlesource.com/976983
2018-09-11 20:24:03 +02:00
Aleksei Kuzmin
f6080b04ea Update test targets paths for Blink 2018-09-11 20:24:03 +02:00
Jeremy Apthorp
d80ee5153a printing compiles on windows, but is explosively wrong 2018-09-11 20:24:03 +02:00
Jeremy Apthorp
64e79ce2b1 //printing/features/features.gni moved to buildflags.gni 2018-09-11 20:24:03 +02:00
Jeremy Apthorp
c6fbe5a7fe Fix path to blink resources 2018-09-11 20:24:03 +02:00
Jeremy Apthorp
9a296fc63e Fix code triggering new -Wmicrosoft-cast warning in M67 2018-09-11 20:24:03 +02:00
Jeremy Apthorp
5b25c2db5d Need new #include for base::UTF8ToUTF16 2018-09-11 20:24:03 +02:00
deepak1556
63006aebe8 REVIEW: Delete WidgetDelegate before widget is destroyed.
Ideally widget delegates must outlive their widget, but since
we manage the lifetime of native widget, allow the delegate to
be destroyed when widget is destroyed.
https://chromium-review.googlesource.com/c/chromium/src/+/977244
2018-09-11 20:24:03 +02:00
deepak1556
9264a00dfd Simplify EnsureProcessTerminated() implementations.
https://chromium-review.googlesource.com/c/chromium/src/+/920799
2018-09-11 20:24:03 +02:00
deepak1556
8da2bd43b8 Include the node header at the end to avoid collisions 2018-09-11 20:24:03 +02:00
Samuel Attard
cad1d9aa9c Handle case where IO thread is not yet running, in C67 this results
in a hard crash

refs: https://chromium-review.googlesource.com/c/chromium/src/+/973556
2018-09-11 20:24:03 +02:00
Samuel Attard
0b2b44becf Handle unknown symbols for media:: method
small implementation so instead of exposing with patch, copy impl

This will be fixed once we remove chromium_src as a thing from e/e
2018-09-11 20:24:03 +02:00
Samuel Attard
dc5c49ea7f SetUserAgentOverride now takes a 2nd override_for_new_tabs argument
refs: https://chromium-review.googlesource.com/c/chromium/src/+/846713
2018-09-11 20:24:03 +02:00
Samuel Attard
b381e852b1 media: Stop registering CDM adapter as a pepper plugin
https://chromium-review.googlesource.com/956255
2018-09-11 20:24:03 +02:00
Samuel Attard
6e2bb728b9 Replace ProxyConfigSource with ProxyConfigWithAnnotation.
https://chromium-review.googlesource.com/c/chromium/src/+/934126
2018-09-11 20:24:03 +02:00
Samuel Attard
a0a4c7b82c Implement GetPermissionStatusForFrame in AtomPermissionManager
Implenation and requirement comes from CR: https://chromium-review.googlesource.com/c/chromium/src/+/940744
2018-09-11 20:24:03 +02:00
Samuel Attard
8a6fccf3d1 [GURL] (1 of 2) Prep for stripping "username:password" from internal schemes
https://chromium-review.googlesource.com/c/chromium/src/+/978450
2018-09-11 20:24:03 +02:00
Samuel Attard
aa6d769229 Handle external protocols with the network service.
https://chromium-review.googlesource.com/c/chromium/src/+/956091
2018-09-11 20:24:03 +02:00
Samuel Attard
dde194d853 Remove the memory property from getAppMetrics
See 03d0bfd593 for more information
2018-09-11 20:24:03 +02:00
Samuel Attard
14df89f214 Remove the 'getProcessMemoryInfo' API
* Underlying APIs have been removed in Chromium
  * https://chromium-review.googlesource.com/c/chromium/src/+/969089
  * https://chromium-review.googlesource.com/c/chromium/src/+/953723
  * https://bugs.chromium.org/p/chromium/issues/detail?id=819289
* https://github.com/electron/electron/projects/11#card-11509601
2018-09-11 20:21:32 +02:00
Aleksei Kuzmin
833b55107d Plumb the RenderFrameHost through for CheckMediaAccessPermission
https://chromium-review.googlesource.com/938862
2018-09-11 20:21:32 +02:00
Aleksei Kuzmin
ca28b39d9c Rename buildflag_headers for consistency
https://chromium-review.googlesource.com/975990

https://chromium-review.googlesource.com/c/chromium/src/+/988132
2018-09-11 20:21:32 +02:00
deepak1556
67f6e21bd2 No longer save the IO message loop in net::EnsureNSSHttpIOInit
https://chromium-review.googlesource.com/c/chromium/src/+/963762
2018-09-11 20:21:32 +02:00
deepak1556
ed045c10ee Replace ProxyConfigSource with ProxyConfigWithAnnotation.
https://chromium-review.googlesource.com/c/chromium/src/+/934126
2018-09-11 20:21:32 +02:00
deepak1556
d15d08bad6 Improve ClearOnExit behavior of cookies using domain matching
https://chromium-review.googlesource.com/c/chromium/src/+/975861
2018-09-11 20:21:32 +02:00
deepak1556
400b23c5cb Introduce additional Certificate Transparency preferences
https://chromium-review.googlesource.com/c/chromium/src/+/987513
2018-09-11 20:21:32 +02:00
Aleksei Kuzmin
0afebdc531 The Great Blink mv for source files, part 2.
https://chromium-review.googlesource.com/1001153
2018-09-11 20:21:32 +02:00
Aleksei Kuzmin
00423b06c6 Migrate BrowserThread::IsMessageLoopValid to BrowserThread::IsThreadInitialized.
https://chromium-review.googlesource.com/977063
2018-09-11 20:21:31 +02:00
Aleksei Kuzmin
7bd1b85d4e Rename net/proxy_resolution/proxy_service* files
https://chromium-review.googlesource.com/941901
2018-09-11 20:21:31 +02:00
Aleksei Kuzmin
7c32524515 Use libcc based on Chromium 67.0.3396.99 and Node 10.6.0 2018-09-11 20:21:31 +02:00
Robo
14ed71fa1b fix: use render client id to track deleted render process hosts (#14520)
* fix: use render client id to track deleted render process hosts

Instead of relying on OS process id, which may not be unique
when a process is reused, we rely on the renderer client id
passed by the content layer when starting the renderer process
which is guaranteed to be unique for the lifetime of the app.

* fix: store context id as int64_t

Ensuring that it doesn't wrap easily with a large number
of context creation on some malformed web pages.
2018-09-11 11:18:10 -07:00
Shelley Vohr
2157d09956 chore: refactor deprecation apis (#14495) 2018-09-11 11:16:49 -07:00
Jeremy Apthorp
3a6e88c0e7 ci: fix path to dist.zip on appveyor (#14535) 2018-09-11 09:38:41 -07:00
John Kleinschmidt
58fd76b6b5 Merge pull request #14546 from electron/fix-pylint-errors
chore: fix pylint errors
2018-09-11 10:30:34 -04:00
Aleksei Kuzmin
5ba01256a4 chore: fix pylint errors 2018-09-11 14:53:23 +02:00
Milan Burda
0821edc843 refactor: cleanup web-frame-init.js (#14516)
* refactor: add error-utils.js

* fix exception handling for asyncWebFrameMethods

* remove dead code

* handle exceptions

* rename rehydratedError to deserializedError

* Revert "handle exceptions"

This reverts commit 396b179948.
2018-09-11 19:56:00 +10:00
Milan Burda
38419e3a6a chore: address TODO for WebContents.prototype.setSize / reportRemovedAttribute removal (#14517)
* chore: remove WebContents.prototype.setSize

* chore: remove reportRemovedAttribute

* chore: remove unused fixtures
2018-09-11 17:58:57 +10:00
Jeremy Apthorp
f5aac36421 chore: rename circleci builds to remove -gn and -fyi (#14531) 2018-09-11 17:57:41 +10:00
Milan Burda
58577bd431 feat: add options to webContents.loadFile (#14515) 2018-09-11 17:56:49 +10:00
Jeremy Apthorp
7a766e82f9 chore: fix cpplint.js when LINTER_PATH doesn't exist (#14537) 2018-09-11 17:54:20 +10:00
Jeremy Apthorp
0ab95b76a7 docs: add note about origin URLs to GN build docs (#14530) 2018-09-10 12:31:41 -07:00
John Kleinschmidt
f44722d5d3 Merge pull request #14523 from electron/fix-webview-ignore-shortcuts
fix: read ignoreMenuShortcuts per WebContents
2018-09-10 12:04:44 -04:00
Jakub Žitný
3ab22c6164 docs: specify BrowserWindow features passable to window.open 2018-09-10 17:49:54 +02:00
Alexey Kuzmin
382afc03ae chore: clean up asar stuff (#14505)
* chore: reformat code

* refactor: getOrCreateArchive() for ASARs

 - store cached archive in a Map
 - return `null` instead of `false` on failures

* refactor: splitPath() for ASARs

 - store custom extension in a constant
 - remove magic numbers
 - add comments

* refactor: explicitly use assert() for a developer error

* chore: remove console.log() calls

* refactor: replace "p" arguments with "pathArgument"

"path" would be a better name, but it is already taken
but the "path" Node module.

* refactor: createError() for ASARs

 - return an `Error` instance
 - use enum for error types
 - minor improvements

* refactor: use more meaningful name for an arg than just "arg"
2018-09-10 08:29:19 -07:00
John Kleinschmidt
2d2d1d2090 Merge pull request #14512 from electron/do-not-use-electron-gyp-for-verify-ffmpeg
refactor: do not use electron.gyp contents in the verify-ffmpeg script
2018-09-10 09:34:16 -04:00
Cheng Zhao
13334d023d fix: read ignoreMenuShortcuts per WebContents 2018-09-10 19:06:16 +09:00
Milan Burda
dcd580b6cf chore: remove app.makeSingleInstance / releaseSingleInstance (#14518) 2018-09-10 16:33:36 +10:00
Felix Rieseberg
f012ed8357 docs: Update menu-item with new position props (#14465)
* docs: Update menu-item with new position props

* 📦 Update electron-typescript-definitions
2018-09-09 20:03:58 -07:00
Aleksei Kuzmin
b16bf6a95d ci: pass GN_EXTRA_ARGS to the ffmpeg build
Both Electron and ffmpeg should have
the same value of the `target_cpu` build flag.
2018-09-09 12:30:51 +02:00
Aleksei Kuzmin
57a4d86669 refactor: do not use electron.gyp contents in the verify-ffmpeg script
Also run verify ffmpeg with cmd instead of powershell
2018-09-09 12:30:51 +02:00
Aleksei Kuzmin
8e525f965d build: add a helper script to retreive data from a GN project 2018-09-09 12:30:51 +02:00
Jeremy Apthorp
72526927d9 build: remove gyp build files (#14097)
* build: remove gyp build files

* docs: update build instructions

* build: temporary restore electron.gyp

* build: do not update Electron version in the electron.gyp

* chore: remove unused submodules

* ci: remove obsolete CI scripts and configs

* chore: remove obsolete scripts

* chore: remove obsolete functions from lib/util.py

* ci: send Slack notification for nightly build results
2018-09-09 10:15:32 +09:00
Alexey Kuzmin
98eee52fac Revert "fix: re-enable power monitor test (#14458)" (#14506)
This reverts commit 567f8a7583.
2018-09-08 19:37:19 -05:00
Shelley Vohr
2963e377ae refactor: clean up asar functionality (#14046) 2018-09-07 19:23:47 -07:00
Roller Bot
edc6a854d4 chore: bump libcc (master) (#14492)
* chore: bump libcc submodule to f3a3f588281aba034a0f1f85ca3c65eb5a3f7b66

* chore: bump libcc in DEPS to f3a3f588281aba034a0f1f85ca3c65eb5a3f7b66
2018-09-08 09:09:20 +10:00
Charles Kerr
567f8a7583 fix: re-enable power monitor test (#14458)
* fix: re-enable power monitor test

* update test for correct return type

* fix: mocha 'after' hook of dbus powerMonitor test
2018-09-07 15:23:27 -07:00
Jeremy Apthorp
58e8c025eb docs: expand on TODOs in BUILD.gn 2018-09-07 12:26:03 -07:00
Nitish Sakhawalkar
a2ab0d8ebe fix: notify focus change right away rather not on next tick (#14453)
* fix: Notify focus change right away, not on next tick

* fix: emit the JS blur/focus events on next tick to avoid race condition

* address feedback from review

* fix: bind deferred Emit() calls to a WeakPtr

This is so that the deferred Emit() calls will be canceled
if the TopLevelWindow is destroyed.

* chore: remove wip/test code cruft

* fix: make linter happy

* Enable disabled tests

* refactor: cleaner impl of EmitEventSoon()

* Revert "Merge branch 'fix-win-focus' of github.com:electron/electron into fix-win-focus"

This reverts commit 90576806eb, reversing
changes made to 9c13e47779.

* Restore 704722c1, which was removed in error.

We apologise again for the fault in the subtitles. Those responsible for sacking the people who have just been sacked have been sacked.
2018-09-07 13:21:58 -05:00
John Kleinschmidt
e96433243c Merge pull request #14487 from electron/manage-webview-webcontents
fix: manually manage WebContents of webview when it is detached
2018-09-07 11:27:38 -04:00
Alexey Kuzmin
c7bec13069 test: refactor the "util.promisify" test (#14491) 2018-09-07 10:13:10 -05:00
Cheng Zhao
92e094c5f6 fix: manually manage WebContents of webview when it is detached 2018-09-07 15:47:58 +09:00
Heilig Benedek
8e963f10ef fix: add shell = True to make clang-format work on Windows (#14121) 2018-09-07 09:49:43 +10:00
Nitish Sakhawalkar
826af1d676 fix: macOS Window Title And Accessibility Focus (#14472)
- Override accessibility method in atom_ns_window
- Add title attribute in accessibilityAttributeValue
2018-09-07 09:47:31 +10:00
Roller Bot
53f7fd126d chore: bump libcc (master) (#14473)
* chore: bump libcc submodule to d2ffd8ab4b238cb9fa16026ea95bd24b5c79915f

* chore: bump libcc in DEPS to d2ffd8ab4b238cb9fa16026ea95bd24b5c79915f
2018-09-06 13:09:17 -07:00
Charles Kerr
c5820bfabb fix: don't use deprecated fstatNoException API (#14463) 2018-09-06 13:06:32 -05:00
Robo
35a1849e31 chore: enable debugger api specs (#14475) 2018-09-07 00:44:22 +10:00
Shelley Vohr
9bf1fb323b chore: add removeFunction to deprecate module (#14468)
* chore: add removeFunction function to deprecate api

* re-comment deprecate.member
2018-09-05 21:55:28 -07:00
Charles Kerr
7f22442228 refactor: port the cpplint runner to javascript (#14440)
* refactor: port the cpplint runner to javascript

* fix: address code review suggestions

* refactor: make .cc, bootstrapped test funcs inline

* refactor: make CC_ROOTS inline too

* fix: test process.mainModule before calling main()

* refactor: reverse logic order in findChangedFiles

* refactor: make findChangedFiles() more readable

* fix: copy-paste error introduced in 3b17400

* chore: fix grammar in log message
2018-09-05 18:16:42 -05:00
Roller Bot
36b39b2d08 chore: bump libcc (master) (#14466)
* chore: bump libcc submodule to 6609029d431debe5c7a56da5e7ca21368bebc289

* chore: bump libcc in DEPS to 6609029d431debe5c7a56da5e7ca21368bebc289
2018-09-05 14:26:26 -07:00
Robo
c7c95fab2f build: [gn] widevine cdm support behind flag (#14423)
* build: [gn] widevine cdm support behind flag

* build: [gyp] link cdm_support in the component build
2018-09-05 16:00:37 -05:00
Robo
8441d09a18 chore: refactor webContents module isCurrentlyAudible api spec (#14410) 2018-09-05 16:00:05 -05:00
Electron Bot
4d23e200f0 Bump v4.0.0-nightly.20180905 2018-09-05 10:06:13 -07:00
Felix Rieseberg
163e2d3527 fix: Windows Store Notifications (#13258)
* 🔧 Basic 'are we in the desktop bridge' check

* 🔧 Store the result of the call

* 🔧 Create ToastNotifier correctly in UWP environment

* 🔧 Actually, improve this all around

* ❤️ Implement feedback

* 🔧 Fix compiler issues

* 🔧 Mutex is banned, go to option 2

* 🔧 Use getProcAddress

* 📝 Make comment clearer

* ❤️ Implement feedback
2018-09-06 02:06:29 +10:00
Alex Sokolsky
9fe456dec1 Update first-app.md (#14455) 2018-09-04 21:59:35 -05:00
Roller Bot
357576a114 chore: bump libcc (master) (#14442)
* chore: bump libcc submodule to 65e44d0b8aad714e17102112a22c6a31e3aa2c2d

* chore: bump libcc in DEPS to 65e44d0b8aad714e17102112a22c6a31e3aa2c2d
2018-09-05 02:36:08 +10:00
Charles Kerr
512b559211 feat: allow some features during beta (#14215)
* feat: allow all nonbreaking changes during beta

Changes the version policy: currently only nonbreaking bug/security
fixes are allowed during beta. This change would allow all nonbreaking
changes, e.g. new features, during beta.

* refactor: clarify criteria for changes during beta

* Update electron-versioning.md
2018-09-04 11:02:43 -05:00
Shelley Vohr
4c09142f61 chore: pass tag correctly for bump commit reversion (#14444) 2018-09-04 08:54:53 -07:00
Milan Burda
c63014c256 refactor: use loadFile when appropriate in tests (#14422) 2018-09-04 09:50:53 -05:00
Milan Burda
e8782f2c2d feat: Remove legacy helpers (Electron Helper EH/NP) (#14436) 2018-09-03 21:37:15 -05:00
Milan Burda
e828348904 docs: add missing documentation for <webview> methods (#14413) 2018-09-03 13:27:51 +10:00
Cheng Zhao
10176c71ff fix: webview.focus() should move page focus to webview (#14427) 2018-09-03 11:41:54 +09:00
Milan Burda
aa01a7337c refactor: replace base::Value::DeepCopy and CreateDeepCopy with Clone (#14420) 2018-09-02 17:38:35 -05:00
Felix Rieseberg
8e1452d316 docs: Add Electron Fiddle to the readme (#14396)
* 📝 Add Electron Fiddle to the readme

* 📝 Improve the language a bit

* docs: copyediting

Fix missing word

* docs: change the language a little
2018-08-31 22:56:55 -07:00
Milan Burda
c17a1b37ea feat: add event.senderId property to IPCs sent via ipcRenderer.sendTo (#14395) 2018-08-31 20:13:51 -05:00
Paulius
b89848d683 feat: allow window above full screen windows on mac (#14122)
* allow window above full screen windows on mac

* add visibility change params to higher level files

* adress feedback, fix bool issue, remove compilation hooks

* adjust readme

* switch to options object

* single argument for native window views
2018-08-31 15:06:02 -07:00
Roller Bot
c3d51bc2fe chore: bump libcc (master) (#14406)
* chore: bump libcc submodule to a664c7088a87575e7567c7b0a814d4bfa74bb118

* chore: bump libcc in DEPS to a664c7088a87575e7567c7b0a814d4bfa74bb118
2018-09-01 09:14:48 +12:00
Cheng Zhao
0ecea96048 fix: use flexbox to style webview (#14400)
* fix: use flexbox to style webview

* docs: remove notes on browserplugin based webview
2018-09-01 08:53:13 +12:00
Shelley Vohr
dac435b411 test: update power/notification specs to expect (#13497)
* spec: update power/process specs to expect

* Address comments
2018-09-01 08:52:32 +12:00
Cheng Zhao
586a6f2e6d docs: add notes on OOPIF webview's behaviors (#14401) 2018-09-01 08:52:09 +12:00
Robo
32158ca5dd chore: refactor context isolation spec (#14394)
* spec: refactor BrowserWindow module contextIsolation option

* spec: check for serialzation in isolated renderers separately
2018-09-01 08:51:29 +12:00
Milan Burda
3a79eacb6f refactor: don't expose CallbacksRegistry as an internal module (#14389) 2018-08-31 11:29:00 -07:00
Robo
0c4e7104cf build: [gn] explicitly override rtc_use_h264 (#14378)
* build: [gn] explicitly override rtc_use_h264

* build: [gn] don't override ffmpeg config from release config

* build: [gn] remove is_cfi override from release config

The original concern about node is fixed and we have been
building testing builds without the override for sometime now.
2018-08-31 12:47:45 -05:00
Shelley Vohr
cbb460d476 Revert "Bump v4.0.0-nightly.20180830"
This reverts commit 5f00e58029.
2018-08-30 23:12:00 -07:00
Electron Bot
5f00e58029 Bump v4.0.0-nightly.20180830 2018-08-30 22:10:45 -07:00
Milan Burda
5a0770f1d3 fix: allow Tray with title only (without icon) on Mac (#13851) 2018-08-30 21:16:56 +12:00
Samuel Attard
1b7418fb7b Revert "sec: deprecate some webPreference defaults to be secure-by-default (#14284)" (#14380)
This reverts commit 66d6ba8689.
2018-08-30 09:57:49 +12:00
Samuel Attard
66d6ba8689 sec: deprecate some webPreference defaults to be secure-by-default (#14284)
* feat: deprecate default value of nodeIntegration

* Use DeprecationStatus::Stable as the default instead of shadowing

* change wording of deprecations

* chore: also deprecate kWebviewTag and kContextIsolation

* chore: do as we preach, lets be secure-by-default in the default app
2018-08-29 13:14:04 -05:00
Shelley Vohr
9b2c14a745 chore: add release-artifact-cleanup script (#14250)
Adds a script to script/ that does the following:

- delete tag from nightlies repo
- delete tag from electron/electron
- revert bump commit in electron/electron
- Delete draft
2018-08-29 11:13:22 -07:00
Jacob Groundwater
d9a7fee79a feat: Add electron version to framework (#14296)
* Add electron version to framework

* Update Info.plist
2018-08-29 10:31:45 -07:00
Charles Kerr
2b4dbe409f fix: doc recipe for debug build (#14355) 2018-08-29 09:31:06 -07:00
Alexey Kuzmin
ccd63b5ed0 build: add enable_pepper_flash flag to GN build (#14349)
* chore: reformat BUILD.gn

* build: add enable_pepper_flash flag to GN build

Fixes #14339.

* build: move pepper flash under components/

* [ci skip] build: add electron.icns to mac app resources

* build: [gyp] update config to use component pepper flash

* build: [gyp] copy pepper shared libraries into executable folder in component build
2018-08-29 20:39:47 +12:00
Cheng Zhao
2f759151d2 docs: keyboard listeners no longer work on webview (#14369) 2018-08-29 15:59:23 +09:00
John Kleinschmidt
865435c491 Merge pull request #14287 from electron/miniak/ipc-refactoring
refactor: move common logic to handleRemoteCommand (rpc-server.js)
2018-08-28 17:06:38 -04:00
Cheng Zhao
459a2304b4 fix: emit focus/blur events for webview (#14344)
* fix: emit focus/blur events for webview

* test: webview can emit focus event
2018-08-28 13:35:44 -05:00
Robo
edd5c4b9bb fix: use OS process handle to clear object registry (#14324)
RenderProcessHost switch can happen between ipc calls when
speculative process are invvolved, which will lead to deletion
of entries on current context. Use OS process handles to
uniquely associate a destruction handler for a render process.
2018-08-28 13:32:46 -05:00
John Kleinschmidt
98b7a9ce9c Merge pull request #14107 from electron/channel_id_patch
fix: create persistent channel ID store when cookie store is persistent
2018-08-28 14:10:04 -04:00
Alexey Kuzmin
7edd37bca1 build: add missing enable_view_api flag (#14351)
* build: add missing enable_view_api flag

Fixes #14340.

* fix: properly pass a pointer to a SetLayoutManager() call
2018-08-28 10:55:31 -07:00
Robo
07d017dc01 fix: crash when tray is destroyed (#14347)
Release the view of status item before destroying it,
gives chance to perform cleanup on the view.
2018-08-28 10:45:24 -07:00
Roller Bot
85ea0518c5 chore: bump libcc (master) (#14353)
* chore: bump libcc submodule to 5db50d4918b667ecba5a67cf48cf0e261d7581fa

* chore: bump libcc in DEPS to 5db50d4918b667ecba5a67cf48cf0e261d7581fa
2018-08-28 10:22:17 -07:00
Samuel Attard
68da311ed1 feat: add session.setPermissionCheckHandler (#13925)
* feat: add session.setPermissionCheckHandler to handle syncornous permission checks vs requests

* spec: add tests for session.setPermissionCheckHandler

* docs: add docs for session.setPermissionCheckHandler

* feat: add mediaType to media permission checks

* chore: cleanup check impl
2018-08-28 09:05:08 -05:00
Siddharth Dalal
afdb6c5f90 feat: 'will-move' event for windows. (#14283)
* feat: 'will-resize' window event (Windows only)

* documentation for 'will-move' event

* comment and line break fix in docs
2018-08-28 08:44:10 -05:00
Milan Burda
28e4fcea3b refactor: move common logic to handleRemoteCommand 2018-08-27 21:06:03 +02:00
Milan Burda
f1fe485768 fix: don't expose desktopCapturer in sandboxed renderers if the feature is disabled (#14310) 2018-08-27 13:16:52 -05:00
Samuel Attard
a43a292d18 fix: dont parse arguments after a -- in the inspector (#14297) 2018-08-27 10:50:23 -07:00
Roller Bot
61462bdba2 chore: bump libcc (master) (#14317)
* chore: bump libcc submodule to 99c3a9966a9bef4a54b1740d9fed30ce78b4c421

* chore: bump libcc in DEPS to 99c3a9966a9bef4a54b1740d9fed30ce78b4c421
2018-08-27 10:21:20 -07:00
Milan Burda
a08ca9defb fix: don't crash on tray.setContextMenu(null) (#14322) 2018-08-27 11:58:47 -05:00
John Kleinschmidt
fd27d75129 Merge pull request #14314 from electron/disable-a-test
test: disable "app moduele > app.exit(exitCode) > closes all windows"
2018-08-27 11:29:27 -04:00
Alexey Kuzmin
c8705625c9 build: windows gn linker fix (#14281)
* Fix to gn build linking

* chore: update node ref

* build: [gn win] add dependency on desktop_capture source_set in component build

* build: [gn] update definitions for node shared mode

* chore: update node ref

* chore: update node ref
2018-08-27 11:17:23 -04:00
Aleksei Kuzmin
4943f9fc14 tests: disable "app moduele > app.exit(exitCode) > closes all windows" 2018-08-27 16:21:12 +02:00
Milan Burda
edd1eaee5c fix: don't expose view APIs when not enabled (#14312) 2018-08-27 08:03:46 +09:00
Aleksei Kuzmin
1293b463ba tests: refactor "app module" tests 2018-08-26 16:54:51 +03:00
Samuel Attard
90545bda95 docs: explain "worldId" in the web frame docs (#14309)
Fixes #14288
2018-08-25 12:48:57 -07:00
Milan Burda
2a253c73db refactor: use std::string instead of base::string16 for IPC channel names (ipcRenderer.sendTo) (#14302) 2018-08-24 15:30:10 -07:00
Emmanuel Kimmerlin
5f6706ac33 feat: BrowserWindow.getNormalBounds() (#13290)
* First commit

* Add Mac support (1st attempt)

* Add Mac support (2nd attempt)

* Simplify tests

* Restore window state !

* Looking at other tests, seems minimize, maximize, fullscreen are skipped when in CI

* Fix Mac tests

* Restore tests in CI

* Fix typo

* widget getRestoredBounds not working on Mac !!

* widget getRestoredBounds not working on Mac !!

* Add IsNormal function

* Add IsNormal

* IsNormal => isNormal

* Deactivate fullscreen on Mac. Do not receive leave-fullscreen event

* Set default original_frame_

* Set default original_frame_

* Fix Mac
2018-08-24 14:33:27 -07:00
Felix Rieseberg
872890ea5c docs: Developer instructions for native Node addons (#13121)
* docs: Developer instructions for native Node addons

Credits for actually finding this easy method goes to @nornagon.

* 📝 Of course there's a typo
2018-08-24 14:28:11 -07:00
Leo MG Nesfield (LMGN)
519b57838a Fix broken link (#14301) 2018-08-24 14:25:15 -07:00
Jeremy Apthorp
c452be02b9 refactor: properly report on skipped native modules tests (#13894) 2018-08-24 14:24:24 -07:00
Robin Andersson
4cf264f87a fix: Brought win speechSynthesis up-to-speed (#14070)
The implementation was brought up-to-speed with Chromium 70.0.3522.1 (https://chromium.googlesource.com/chromium/src.git/+/70.0.3522.1/chrome/browser/speech/tts_win.cc).

This to solve issues with Windows not returning voices (#11585).
2018-08-24 14:16:39 -07:00
Milan Burda
c23e7fa101 refactor: implement ipcRenderer.sendTo in native code for better performance (#14285) 2018-08-24 14:14:39 -07:00
Milan Burda
e6e3ccfc50 refactor: use std::string instead of base::string16 for IPC channel names (#14286) 2018-08-24 10:30:37 -05:00
John Kleinschmidt
605a4570c1 ci:Split out appveyor gn builds into separate jobs (#14282)
* Split out appveyor gn into separate jobs
2018-08-24 10:49:01 -04:00
Electron Bot
ef4ae27b52 Bump v4.0.0-nightly.20180823 2018-08-23 21:23:50 -07:00
Robo
bce5bd87a8 fix: opt into location services once device service has been started (#14253)
* fix: opt into location services once device service has been started

* refactor: provide fake location provider to mock geolocation reponses

* chore: add spec for navigator.geolocation api using fake location provider
2018-08-23 08:51:46 -07:00
Robo
c8f506a8aa fix: add method and referrer properties to app login event (#14231)
* refactor: remove brightray/network_delegate.{cc|h}

* refactor: respond to http requests through network delegate
2018-08-23 18:55:13 +09:00
Cheng Zhao
6736d4ef29 fix: do not bubble up resize event from webview (#14271) 2018-08-23 15:42:35 +09:00
Cheng Zhao
cd8bb1d3b4 chore: print error when removed webview attribute is used (#14230)
* chore: print error when removed webview attribute is used

* docs: document removed webview features
2018-08-23 10:45:43 +09:00
Roller Bot
82b75f863d chore: bump libcc (master) (#14263)
* chore: bump libcc submodule to c85470a1c379b1c4bedb372c146521bc4be9b75d

* chore: bump libcc in DEPS to c85470a1c379b1c4bedb372c146521bc4be9b75d
2018-08-22 19:44:13 -05:00
Robo
2d1b16b174 build: [gn] fix node header generation target in appveyor (#14218)
* build: [gn] fix node header generation target in appveyor

* build: fix tests run on AppVeyor

* build: [gn win] copy node.lib to node_headers on appveyor

* Fix verify-ffmpeg paths
2018-08-22 15:37:22 -04:00
Samuel Attard
7a514d26bb fix: inheritance of webPreferences sub properties 2018-08-22 11:16:46 -05:00
John Kleinschmidt
5a72441b2a build: build ffmpeg and native_mksnapshot for GN release builds (#14240)
* build ffmpeg and native_mksnapshot for GN release builds

* Test ffmpeg via verify-ffmpeg.py

* remove sccache from Windows builds
2018-08-22 11:41:25 -04:00
Charles Kerr
a2a7c6b062 chore: ask for specific info in bug templates (#14229)
* chore: ask for specific info in bug templates

* fix: change how version is asked for in bug template
2018-08-22 08:21:54 -07:00
Electron Bot
79eac1fdcb Bump v4.0.0-nightly.20180821 2018-08-21 13:34:20 -07:00
Samuel Attard
4b33d083b2 chore: retry for the meta dumper a few times (#14241) 2018-08-21 13:29:44 -07:00
Samuel Attard
20423df112 Revert "Bump v4.0.0-nightly.20180821"
This reverts commit 73c43eaea7.
2018-08-21 13:14:37 -07:00
Charles Kerr
e315e4d308 build: use electron-frameworks sccache (#14171)
* build: update-external-binaries fetches sccache

* build: add util.add_exec_bit in scripts/

* build: use util.add_exec_bit in create-dist

* build: use util.add_exec_bit in update-external-binaries

this is needed to work around a bug in python's zipfile module that doesn't preserve the exec bit

https://bugs.python.org/issue18262

* fix: linting errors

* build: vsts, circleci use patched sccache

* build: always look for the x64 sccache

as it's the only arch we have it on

* fix: windows-specific errors in updaste-external-binaries

* fix: tyop

* fix: set SCCACHE_BUCKET, SCCACHE_TWO_TIER on circleci

* fix: syntax error in circleci yaml

* fix: keep churning

* chore: add tracer to file downloader

* docs: add sccache instructions for GN builds

* build: pull down the darwin sccache on mas builds

* build: use gn sync verbosely on circleci and vsts

* docs: copyediting

* build: remove unnecessary cache-dir arg

* docs: fix shell quoting in gn build instructions

* fix: invoke gclient without -verbose in circleci

* refactor: remove debug tracer

* fix: invoke gclient without -verbose in appveyor

* fix: invoke gclient without -verbose in vsts

* fix: pull add_exec_bit from correct source

* fix: remove 'SCCACHE_TWO_TIER' from CI scripts

* refactor: remove SCCACHE_BUCKET from ci scripts

this environment variable will be set via the CI UI instead

* refactor: clarify log message

* fix: set SCCACHE_PATH correctly for Windows CI
2018-08-21 15:40:06 -04:00
Electron Bot
73c43eaea7 Bump v4.0.0-nightly.20180821 2018-08-21 11:55:32 -07:00
Samuel Attard
5d06c77bf1 Revert "Bump v4.0.0-nightly.20180821"
This reverts commit d2cd641381.
2018-08-21 11:44:51 -07:00
Samuel Attard
776943218a ci: add better logging around request failures for releasing (#14239) 2018-08-21 11:39:51 -07:00
Electron Bot
d2cd641381 Bump v4.0.0-nightly.20180821 2018-08-21 11:15:56 -07:00
Milan Burda
fc85d02786 feat: expose missing process APIs in sandboxed renderers (#13505) 2018-08-21 11:05:45 -07:00
Jeremy Apthorp
f82f89b2a3 build: [gn] add distributable zip target (#14093)
* build: [gn] add distributable zip target

* build: update the CircleCI config

- enable debug and testing builds on Mac
- run Mac release builds nightly
- run test for Mac release builds
- use shared build machines configs

* Add resources dir to zip on non mac platforms.
2018-08-21 13:06:28 -04:00
Milan Burda
7253c7f843 refactor: move SpecialStoragePolicy from brightray to atom (#13944) 2018-08-21 08:51:04 -07:00
Robo
fc730cc705 build: [gn mac] copy ffmpeg lib to framework bundle (#14225)
* build: [gn mac] copy ffmpeg lib to framework bundle

* Pull build config from enviroment variable

* build: use component ffmpeg in testing mode
2018-08-20 17:02:52 -04:00
Shelley Vohr
26925e6d48 chore: remove autorelease check logic (#14220) 2018-08-20 10:55:38 -07:00
Heilig Benedek
14ee5b3d3a fix: enable osr (#14074)
* fix: re-enable osr

* fix: add changes from CEF to add MouseWheelPhaseHandler

* fix: re-enable surface synchronization by applying fix from cef

* update method call and enable AsyncWheelEvents var

* fix: make BrowserCompositorMacGetGutterColor behave like chromium

* fix: HANDLE only exists on windows

* fix: pass correct params to mouse_wheel_phase_handler_

* fix variable accessing

* revert: revert the workaround for disableHardwareAcceleration crash

* fix: remove GuestViewCrossProcessFrames from the disabled features list

* revert: remove check from BrowserChildProcessLaunchedAndConnected
2018-08-20 09:54:31 -07:00
Roller Bot
0fc72f1924 chore: bump libcc (master) (#14214)
* chore: bump libcc submodule to 00cce7a094c5ded91d52d2ac2aac2ab70dc66d02

* chore: bump libcc in DEPS to 00cce7a094c5ded91d52d2ac2aac2ab70dc66d02
2018-08-20 08:42:11 -07:00
Shelley Vohr
8f5923f9bf chore: add option to return next version from prepare-release (#14212)
* chore: add option to return next version from prepare-release

* shuffle logic
2018-08-20 08:17:47 -07:00
deepak1556
73b7390707 fix: create persistent channel ID store when cookie store is persistent 2018-08-20 08:52:55 +05:30
Samuel Attard
899dd03aa1 chore: match the bump commit exactly, reverts should not count (#14207) 2018-08-19 14:44:42 -07:00
Keerthi Niranjan
5b48e03c7c fix: Dialog does not close on ESCAPE if defaultId is set (#14196)
If defaultId is set, it was removing the key reference for the button at 0 which was previously set for the cancel_id
2018-08-19 13:41:03 -07:00
Shelley Vohr
3715719b72 chore: update libcc ref to include osr patch (#14201) 2018-08-19 12:57:09 -07:00
Beni von Cheni
aef64c6f48 docs: chrome-command-line-switches.md: update proxy-server support (#14198)
* docs: chrome-command-line-switches.md: update proxy-server support

Per issue #12443, the proxy URL in proxy-server switch would not
support username and password authentication.

* docs: security.md: correct checklist #14 markdown

When running "npm run lint:docs" script, linting warning suggests
"Broken links: #13-disable-or-limit-creation-of-new-windows". Update
accordingly to #14.
2018-08-19 12:34:14 -07:00
Keerthi Niranjan
59e118925a fix: electron path for postinstall (#14177)
* fix #14127 issue caused by #12426

* add ELECTRON_OVERRIDE_DIST_PATH check for install.js
2018-08-19 09:40:12 -07:00
Anders Kaseorg
466fe816d5 docs: security.md: Fix navigation lockdown example code (#14185)
The `url` module is not a constructor; change `require('url')` to
`require('url').URL`. Also, check the entire origin rather than just
the hostname, since otherwise `http://my-own-server.com` is allowed in
addition to `https://my-own-server.com`, in violation of point 1 (only
load secure content).

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2018-08-18 19:41:55 -07:00
Electron Bot
dbee03d381 Bump v4.0.0-nightly.20180819 2018-08-19 01:09:28 +00:00
Shelley Vohr
55bac9325b chore: only prepare release if last commit not a bump (#14192) 2018-08-18 17:36:16 -07:00
Samuel Attard
8f23fe8ab0 chore: always target master for nightly releases (#14190) 2018-08-18 09:21:38 -07:00
Shelley Vohr
8039bdc061 fix: add dist tags for release branches (#14186)
* fix: add dist tags for release branches

* nightly => master
2018-08-17 18:30:21 -07:00
Electron Bot
3ba9a9b7bb Bump v4.0.0-nightly.20180817 2018-08-17 23:55:31 +00:00
Samuel Attard
f7dc01b2c5 Revert "Bump v4.0.0-nightly.20180817"
This reverts commit 26248323b4.
2018-08-17 16:52:48 -07:00
Samuel Attard
69f28aea2e chore: dont check version when publishing (#14183) 2018-08-17 16:49:16 -07:00
Electron Bot
26248323b4 Bump v4.0.0-nightly.20180817 2018-08-17 22:58:18 +00:00
Samuel Attard
1f23c5edc6 Revert "Bump v4.0.0-nightly.20180817"
This reverts commit b900ea44bf.
2018-08-17 15:53:15 -07:00
Samuel Attard
c6a8ad9e3a chore: remove v from script :sigh: (#14181) 2018-08-17 15:49:12 -07:00
Alexey Kuzmin
2f352d2517 build: add Chromium tests targets (#14172)
* chore: properly format BUILD.gn

* build: gn: add targets for Chromium tests

Those should only include test targets Electron cares about.
2018-08-17 15:28:00 -07:00
Samuel Attard
c9e704863e correctly get pre (#14179) 2018-08-17 15:15:45 -07:00
Electron Bot
b900ea44bf Bump v4.0.0-nightly.20180817 2018-08-17 21:40:50 +00:00
Shelley Vohr
bdc65f2823 fix: update_electron_gyp regex for nightlies 2018-08-17 14:35:58 -07:00
Samuel Attard
73f2a7dda9 Revert "Bump v4.0.0-nightly.20180817"
This reverts commit 76a592a419.
2018-08-17 14:34:31 -07:00
Troy
5ea05ddee7 fix: Stricter Testing For Menu Items (#13992)
This PR includes stricter testing for empty objects so that false context menus are not created along with the tests to ensure future compatibility.
2018-08-17 13:10:14 -07:00
Electron Bot
76a592a419 Bump v4.0.0-nightly.20180817 2018-08-17 20:06:28 +00:00
Samuel Attard
c2063bc139 chore: make beta bumps work (#14174) 2018-08-17 13:00:43 -07:00
Samuel Attard
0c0ca57f4b chore: use --bump for all releases
Approved by @codebytere
2018-08-17 12:23:27 -07:00
Shelley Vohr
6861c10183 chore: allow nightlies from release branches (#14157)
* chore: allow nightlies from release branches

* keep current version from beta to nightly

* move version bump logic to bump-versi.py
2018-08-17 10:42:45 -07:00
Robin Andersson
ba98ef382d chore: update serve version 6.5.3 -> 6.5.8 (#14159) 2018-08-17 09:48:01 -07:00
Charles Kerr
51b76f0635 build: use GIT_CACHE_PATH (#14165)
* build: add GIT_CACHE_PATH

The merge at https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1105473 was to specify git cache entirely from the environment variable  [and] removal of the general --cache-dir option from gclient

* docs: document GIT_CACHE_PATH in GN build

* fix: try to fix appveyor-gn env syntax
2018-08-17 09:20:20 -07:00
Samuel Attard
59d6c1e063 chore: use metadumper service to create index.json file (#14158) 2018-08-16 22:23:46 -07:00
Shelley Vohr
8b6072b411 chore: fix npm nightly dist-tag (#14155) 2018-08-16 17:17:59 -07:00
Shelley Vohr
966d776c18 chore: support otp (#14154) 2018-08-16 17:08:52 -07:00
Alexey Kuzmin
aca2293fa9 build: gn: commit patches after they have been applied (#14147)
* chore: bump libcc

* build: gn: commit patches after they have been applied

It prevents a hooks run failure when `gclient sync` is called
for a second time. Error message:

```
error: ui/latency/ui_latency_export.h: already exists in working directory
latency_info.patch failed to apply
```
2018-08-16 16:29:19 -07:00
Alexey Kuzmin
8adc24eef9 build: add config to build Electron for tests (#14101)
* build: add config to build Electron for tests

* build: run nightly linux builds for the 3-0-x branch

* build: gn: update CI config for linux builds

- run GN debug and testing builds for PRs (as FYI)
- do not run tests for GN debug builds
- run GN release builds nightly

* build: gn: run testing builds on CI instead of release on Windows

Should save some time since release builds set 'official_build=true'
which make the builds take much more time.

* build: gn: use testing config to run CI jobs on Mac

Tests should run faster for testing builds.
2018-08-16 16:28:01 -07:00
Shelley Vohr
6872180739 don't update index.json in release (#14151) 2018-08-16 16:15:00 -07:00
Cheng Zhao
dd5b8769be fix: use OOPIF for webview tag (#13869)
* fix: use OOIF for webview tag

* fix: do not call GetNativeView for webview

* fix: OOIPF webview's WebContents is managed by embedder frame

* fix: guest view can not be focused

* fix: clear zoom controller when guest is destroyed

* fix: implement the webview resize event

The webview is no longer a browser plugin with the resize event, use
ResizeObserver instead.

* test: disable failed tests due to OOPIF webview

* fix: embedder can be destroyed earlier than guest

This happens when embedder is manually destroyed.

* fix: don't double attach

* fix: recreate iframe when webview is reattached

* fix: resize event may happen very early

* test: some tests are working after OOPIF webview

* chore: remove unused browser plugin webview code

* fix: get embedder via closure

When the "destroyed" event is emitted, the entry in guestInstances would be
cleared.

* chore: rename browserPluginNode to internalElement

* test: make the visibilityState test more robust

* chore: guestinstance can not work with OOPIF webview

* fix: element could be detached before got response from browser
2018-08-16 15:57:40 -07:00
John Kleinschmidt
48407c5b93 Merge pull request #14148 from electron/update-node
chore: update node revision
2018-08-16 14:49:14 -07:00
Aleksei Kuzmin
ac2f823eed chore: update node revision 2018-08-16 14:24:40 -07:00
John Kleinschmidt
33d914d6ff Merge pull request #14144 from electron/jumbo-gn-release-builds
chore: enable jumbo builds in the GN release config
2018-08-16 14:04:19 -07:00
Charles Kerr
03e8c65b8b chore: remove duplicate setting 2018-08-16 13:56:03 -07:00
Charles Kerr
575b6df844 chore: promote 'is_jumbo_build=true' to all.gn 2018-08-16 13:41:47 -07:00
Samuel Attard
840db11a92 chore: add flag to skip version check (#14145) 2018-08-16 12:04:32 -07:00
Shelley Vohr
22a51625d4 fix: remove arm build validation from release script (#14143) 2018-08-16 11:50:29 -07:00
Charles Kerr
3e0d961684 chore: alphabetize config list 2018-08-16 11:46:35 -07:00
Charles Kerr
d294637e9c chore: enable jumbo builds in GN release configuration 2018-08-16 11:45:04 -07:00
Samuel Attard
982a2f0da2 Bump v4.0.0-nightly.20180816 2018-08-16 10:35:49 -07:00
Samuel Attard
ee4f27ca3f chore: 0.0.0-dev 2018-08-16 10:32:11 -07:00
Milan Burda
9076a20dc8 docs: fix electron.d.ts typings (#14125) 2018-08-16 10:26:36 -07:00
Samuel Attard
3330d4cb35 chore: fix linting (#14135) 2018-08-16 10:24:21 -07:00
Samuel Attard
38ae93f0a4 Bump v4.0.0-nightly.20180816 2018-08-16 10:05:00 -07:00
Samuel Attard
e2ba01b1fc build: replace nightly and dev versions in the release script (#14134) 2018-08-16 09:56:24 -07:00
Samuel Attard
d3067cc334 build: nightly is nightly, beta is beta (#14133) 2018-08-16 09:28:17 -07:00
John Kleinschmidt
74426ad45e Merge pull request #14132 from electron/fix-crashreporter-arg
docs: crashReporter companyName is not optional
2018-08-16 09:22:16 -07:00
Shelley Vohr
e415efaceb docs: crashReporter companyName is not optional 2018-08-16 09:15:17 -07:00
Samuel Attard
a58c7c7447 Bump v4.0.0-nightly.20180816 2018-08-16 09:13:36 -07:00
Samuel Attard
2556b5d181 build: use targetRepo in prepare-release (#14131) 2018-08-16 09:12:06 -07:00
Samuel Attard
4cf2cde7fb Bump v4.0.0-nightly.20180816 2018-08-16 08:58:46 -07:00
Shelley Vohr
b9afc68c35 chore: introduce concept of nightly builds to release scripts (#14130)
* chore: introduce concept of nightly builds to release scripts

* build: publish nightly releases to dedicated repo
2018-08-16 08:57:12 -07:00
John Kleinschmidt
22a2d9bd44 Merge pull request #14100 from electron/gn-arm-builds
ci: Add arm/arm64 debug gn builds
2018-08-15 15:37:06 -07:00
John Kleinschmidt
847a9c0ed9 Merge pull request #14099 from electron/vsts-gn-fix
ci: [vsts] use the PR's branch rather than master
2018-08-15 12:02:12 -07:00
John Kleinschmidt
9317ee8910 Add arm/arm64 gn builds 2018-08-15 11:39:16 -07:00
Samuel Attard
5f7a595f0a chore: add FIXME for remote deref (#14116) 2018-08-15 09:06:44 -07:00
Shelley Vohr
08a8a3fbfc chore: update PR template for new notes bot (#14103)
* chore: update PR template for new notes bot

* include link to release note readme
2018-08-15 08:43:11 -07:00
Samuel Attard
55a1f5d351 fix: add a hidden option to disable remote dereferencing (#14102) 2018-08-15 08:08:14 -07:00
Jeremy Apthorp
da3a80ef00 ci: [vsts] build the PR branch 2018-08-14 21:43:47 -07:00
John Kleinschmidt
7ff17ee3ad Merge pull request #14089 from electron/appveyor-gn-simplify
ci: [win] simplify call to electron.exe in appveyor
2018-08-14 14:30:11 -07:00
John Kleinschmidt
dda6bb135a Merge pull request #14017 from electron/node-gn
build: build node with GN
2018-08-14 14:29:17 -07:00
Robo
9989195f19 fix: notify request context shutdown on IO before cleanup (#14058) 2018-08-14 14:07:53 -07:00
Jeremy Apthorp
379f40ef93 ci: [win] simplify call to electron.exe in appveyor
the python junk was there previously because PowerShell is bad at exit
codes
2018-08-14 11:31:22 -07:00
Jeremy Apthorp
49ee5167c3 Update DEPS 2018-08-14 10:43:55 -07:00
John Kleinschmidt
8c21762bee Merge pull request #14081 from electron/vs2017-15-4-5
ci: Use VS2017 15.4.5 for Chromium 66
2018-08-14 09:50:55 -07:00
John Kleinschmidt
1c509c4743 Use VS2017 15.4.5 for Chromium 66 2018-08-14 09:34:34 -07:00
Roller Bot
3ac8aad495 chore: bump libcc (#14071)
* chore: bump libcc submodule to d6411e421b0b2f0105d274ac4e5c90dc979463ca

* chore: bump libcc in DEPS to d6411e421b0b2f0105d274ac4e5c90dc979463ca
2018-08-14 06:46:33 -07:00
Charles Kerr
b9490177da Revert "[WIP] refactor: (Part I) make the ownership of URLRequestContextGetter more clear (#13956)"
This reverts commit 1c0bb06d4a.
2018-08-13 16:16:04 -07:00
Robo
1c0bb06d4a [WIP] refactor: (Part I) make the ownership of URLRequestContextGetter more clear (#13956)
* refactor: desttroy URLRequestContextGetter on IO thread

* Accepts a factory class that can customize the creation of URLRequestContext
* Use a separate request context for media which is derived from the default
* Notify URLRequestContextGetter observers and cleanup on IO thread
* Move most of brightray net/ classes into atom net/

* refactor: remove refs to URLRequestContextGetter on shutdown

* refactor: remove brigtray switches.{cc|h}

* refactor: remove brightray network_delegate.{cc|h}

* refactor: make AtomURLRequestJobFactory the top level factory.

* Allows to use the default handler from content/ for http{s}, ws{s} schemes.
* Removes the storage of job factory in URLRequestContextGetter.
2018-08-13 15:22:45 -07:00
John Kleinschmidt
cb4b3e7be0 Merge pull request #14049 from electron/fix-flaky-sandbox-tests
fix: Fix flaky sandbox tests
2018-08-13 13:26:52 -07:00
John Kleinschmidt
828e317360 Fix flaky sandbox tests
Windows apparently has issues running opening two windows at once which is causing flakiness on the mixed sandbox tests.
2018-08-13 09:30:20 -07:00
John Kleinschmidt
a53a5ac071 Merge pull request #14045 from electron/enable-mixed-sandbox
fix: re-enable mixed-sandbox tests
2018-08-13 08:48:19 -07:00
Shelley Vohr
2ac3d89279 fix: lint js and docs alongside clang-format (#14044)
* fix: lint js and docs alongside clang-format

* chore: change lint scripts to colon format
2018-08-13 08:20:55 -07:00
Sidney
23541b5b2a feat: On macOS, Closing Notifications Triggers the 'close' Event (#13306)
* feat(macOS): implement NotificationDismissed() for Cocoa

* feat(macOS): emit NotificationDismissed() when closing "Alert" notifications

* feat(macOS): emit NotificationDismissed() when closing "Banner" notifications

* fix(macos): Remove calls to private APIs from MAS builds (github.com/electron/electron/pull/13306)
2018-08-13 23:09:25 +12:00
Shelley Vohr
590ae5cd29 fix: re-enable mixed-sandbox tests 2018-08-12 21:29:29 -07:00
Shelley Vohr
c0959bd534 refactor: add 'npm run bootstrap', 'npm run build' (#14034)
* docs: update package.json and build docs

* fix build release

* address feedback from review

* whoops forgot one

* fix build script

* address feedback from review
2018-08-12 14:01:46 -07:00
Shelley Vohr
b785f45852 fix: override fs.realpathSync.native and fs.realpath.native (#14031)
* fix: override fs.realpathSync.native and fs.realpath.native
* spec: test new native functions
2018-08-12 00:10:55 -07:00
Shelley Vohr
8dae1c8447 fix: make asarStatsToFsStats nherit from fs.stats (#14030) 2018-08-11 23:20:33 -07:00
Jeremy Apthorp
c0dfc4b2eb ci: [gn] build 32-bit node modules on 32-bit linux (#14021) 2018-08-11 12:21:34 -05:00
Jeremy Apthorp
ae79fd1bb3 docs: update GN developer docs (#14018) 2018-08-11 12:20:19 -05:00
Jeremy Apthorp
db7cec8d86 ci: build x86 builds on GN in appveyor (#14019) 2018-08-10 17:52:54 -05:00
Milan Burda
702cc84bd3 Don't pass preloadPath via ELECTRON_BROWSER_SANDBOX_LOAD for security reasons (#13031) 2018-08-10 17:19:49 -05:00
John Kleinschmidt
e08ce7127a Merge pull request #13877 from electron/gn-ci-win-appveyor
ci: [gn] add ci build for gn on windows
2018-08-10 13:40:44 -04:00
Jeremy Apthorp
6d277ec784 [wip] build: try building node with GN 2018-08-10 10:06:27 -07:00
Husayn
19cb5bad94 feat: Add creationTime function to process (#13542)
* Add process creation time

* Making docs clear for process creation time

* Address comments for process creation time

* Add process info cc file

* fixing comments around documentation

* Update doc for return val

* Capitalize number in docs

* chore: bump electron-typescript-definitions
2018-08-10 09:03:30 -05:00
secult
9902d42760 docs: cancelId works on windows (#13882)
The note about cancelId not working on windows is not valid. Tried on Windows 7 and Windows 10 and it works in both cases (tested on electron 1.8.7).
2018-08-10 16:07:39 +10:00
Samuel Attard
1c879870ee chore: add a Mac App Store Private API Rejection template (#14009) 2018-08-10 15:35:30 +10:00
Samuel Attard
637280e060 core: add security report issue template (#14010)
Basically tell people not to raise an issue but to send an email to our security email address.  This hasn't happened yet but we should do everything we can to send people in the right direction 😄
2018-08-10 15:30:24 +10:00
Shelley Vohr
7c7543cb39 spec: re-enable app.getAppMetric API (#13962) 2018-08-09 13:35:29 -05:00
Milan Burda
271d582aac refactor: make methods const, cleanup (#13937) 2018-08-09 10:15:23 -07:00
GhostlyDark
9005803667 Fix typos (#13999) 2018-08-09 10:04:03 -05:00
Milan Burda
9a1ad2b93f fix: ipcRemote.sendSync regression after moving away from JSON for return values (#13941) 2018-08-09 19:45:10 +10:00
Dominic
a7052efaf4 fix: make menu.popup options optional (#13977)
* add empty object as default param for options

* update docs

* add spec for optional options

* fix: add null check for options
2018-08-08 17:38:52 -05:00
Jeremy Apthorp
fc4499ebd4 chore: roll libcc 2018-08-08 09:33:02 -07:00
Charles Kerr
29f07889e6 feat: add location url to "Node.js Integration with Remote Content" warning (#13973)
* docs: fix typo

* feat: add location url to Node+Remote warning
2018-08-07 20:40:21 -05:00
Jeremy Apthorp
e6e621515f chore: disable flaky isCurrentlyAudible test (#13970) 2018-08-07 14:23:48 -05:00
John Kleinschmidt
06786e7bb8 Merge pull request #13828 from nornagon/gn-ci-mac
ci: [gn] add Mac support to VSTS build
2018-08-06 10:54:22 -04:00
Jeremy Apthorp
2551837ffb docs: min windows server version for building is 2012 (#13935) 2018-08-03 17:32:07 -07:00
Jeremy Apthorp
379998e2f6 docs: recommend windows 10 as the minimum build OS
I'm pretty sure building on windows 7 doesn't work.
2018-08-03 15:42:12 -07:00
Shelley Vohr
9f328abe19 refactor: remove instances of createDeepCopy (#13703)
* add new native_mate converters for base::Value

* fix converter swapping

* remove createDeepCopy from browser/api

* replace missing ListValue converter

* convert bulk of remaining createDeepCopy instances

* convert last remaining instances of createDeepCopy

* incremental progress and helper methods for value conversion

* convert Get and add template function for GetString

* final DictionaryValue method conversions

* remove usage of base::DictionaryValue in web_contents_preferences

* use IsEnabled helper where possible

* Update atom_api_web_view_manager.cc
2018-08-04 07:23:07 +10:00
Jeremy Apthorp
cecb8fb0c4 chore: roll libcc and node DEPS (#13931) 2018-08-03 12:36:56 -07:00
Milan Burda
f904057104 fix: add missing "simple" property in several APIs to prevent proxying of return values (#13905)
* fix: add missing "simple" property in several APIs to prevent proxying of return values

* add tests
2018-08-03 12:07:27 -07:00
deepak1556
e0735baff2 docs: [gn] update build instructions 2018-08-03 11:54:21 -07:00
Jeremy Apthorp
96c39923b6 ci: [gn] add builders for 32-bit linux 2018-08-03 11:08:12 -07:00
Milan Burda
fceed0fcbc fix: dipToScreenRect / screenToDipRect - window can be null (#13903) 2018-08-03 13:08:42 +10:00
Jeremy Apthorp
03293d78a2 chore: roll libcc DEPS (#13917) 2018-08-03 10:55:49 +10:00
Birunthan Mohanathas
23440a5ec3 fix: Improve --enable-features/--disable-features handling (#13920)
As it turns out, we can reinitialize the feature list directly after the
user JS script has been executed instead of much later. This allows
modifications to `--enable-features`/`--disable-features` to work with a
greater set of features.
2018-08-03 10:53:54 +10:00
Shelley Vohr
48ae9b7a9c docs: update node upgrade doc (#13891)
Updates the node upgrade doc to take path changes into account as well as to incorporate the new `get-patch` script which simplifies work significantly.
2018-08-01 23:33:37 -07:00
Jeremy Apthorp
c068bc7d3d test: make nativeImage relative path test robust to different cwd 2018-08-01 15:19:26 -07:00
Jeremy Apthorp
651e7d21c4 Try setting npm_config_msvs_version 2018-08-01 10:35:03 -07:00
Jeremy Apthorp
63604278ec Add env var to skip native module tests 2018-08-01 10:29:35 -07:00
Jeremy Apthorp
00b2d94785 ci: start the dbus mock server in GN CI 2018-08-01 10:08:02 -07:00
Jeremy Apthorp
a4f02724bf refactor: use env var to skip native module tests on win32/debug (#13890) 2018-08-01 13:33:13 +10:00
Samuel Attard
4990b3990b spec: add more assertions to help smoke out the close all window failures (#13868) 2018-08-01 13:32:07 +10:00
Milan Burda
c52b3d921e fix: some APIs modified for ASAR support cannot be util.promisify'ed (#13845) 2018-08-01 13:06:48 +10:00
Jeremy Apthorp
80d22e8dc0 test out build matrix for debug/release 2018-07-31 17:28:32 -07:00
Jeremy Apthorp
083ec2f60a ci: [gn] add ci build for gn on windows 2018-07-31 15:28:12 -07:00
Samuel Attard
eb79ad4dab fix: handle SIGINT and SIGTERM from the Electron CLI helper (#13867)
Fixes #12840
2018-07-31 13:44:04 -05:00
Felix Rieseberg
a99cc969b5 📝 Update security docs: will-navigate, new-window (#13884) 2018-07-31 13:40:26 -05:00
Jeremy Apthorp
31ac89fa2f ci: gn linux release builds (#13809) 2018-07-31 11:18:36 -07:00
Jeremy Apthorp
e22a80b210 chore: [gn] run 'gn format' over BUILD.gn 2018-07-31 09:55:27 -07:00
Jeremy Apthorp
32f456de07 chore: [gn] run 'gn format' over build/node/BUILD.gn 2018-07-31 09:55:27 -07:00
Jeremy Apthorp
260f7775e7 ci: more lenient check for is_ci in lib.util.download
AppVeyor sets CI=True or CI=true, not CI=1
2018-07-31 09:51:40 -07:00
Jeremy Apthorp
28b6f2f46d build: [gn] fix rpath when building with component ffmpeg (#13874) 2018-07-30 15:46:04 -07:00
Jeremy Apthorp
ae29d562eb build: [gn] add //ui/strings:app_locale_settings to locale pak
Fixes a crash on Windows when accessing IDS_UI_FONT_FAMILY
2018-07-30 13:59:00 -07:00
Jeremy Apthorp
d0a9c2c77f build: [gn] build release with is_cfi = false
When is_cfi = true (the default on Linux Release), Electron crashes at
boot with SIGILL in V8::InitializePlatform.
2018-07-30 13:58:38 -07:00
Jeremy Apthorp
3bdff2d238 feat: allow setting window shape (#13789)
This binds Widget::SetShape, an API that already exists in Chromium (for
Windows and Linux). It's a more reliable method of having some parts of
your window be "click-through" than the current `setIgnoreMouseEvents`
API, which messes around with the `WS_EX_LAYERED` window style on
Windows, causing strange bugs and incompatibility with hardware
acceleration.
2018-07-30 13:37:40 -07:00
Jeremy Apthorp
6e224df00e [wip] ci: add Mac support to VSTS build 2018-07-30 12:50:16 -07:00
Samuel Attard
b22ac5f0a2 build: commit changes to the package-lock.json file (#13864) 2018-07-30 15:09:06 +10:00
Alexandre Lacheze
2bba11c5b0 docs: warning unicity of webRequest event listener (#13482) 2018-07-30 11:38:59 +10:00
Gellert Hegyi
4bcf0e34c5 fix: window.setVibrancy parameter passing (#13627)
* fix: setVibrancy parameter passing

* fix: uses correct parameter types for setVibrancy
2018-07-30 11:29:18 +10:00
Alexey Kuzmin
69f6bd921b chore(tests): allow usage of deprecated APIs in tests (#13659) 2018-07-30 11:27:58 +10:00
Felix Rieseberg
c2218cc414 📝 First draft: Here be dragons (#13835) 2018-07-30 11:19:23 +10:00
Milan Burda
39c5c200ba fix: util.promisify(setTimeout) (#13840) 2018-07-30 11:14:04 +10:00
Milan Burda
db38c8b620 Fix process.execPath returning parent process path instead of the helper in sandboxed renderer (#13839) 2018-07-30 11:13:42 +10:00
Milan Burda
aacbd76baa docs: fix electron.d.ts typings (#13841) 2018-07-30 11:11:23 +10:00
Jeremy Apthorp
a6bc8030ea build: [gn win] fix path names in js2asar 2018-07-27 12:08:39 -07:00
Jeremy Apthorp
27e6805889 build: [gn] pack ui_strings in locales (#13827)
Fixes a crash when running the tests on linux:

[15860:0726/132247.086106:WARNING:resource_bundle.cc(586)] unable to find resource: 27282
[15860:0726/132247.086189:FATAL:resource_bundle.cc(587)] Check failed: false.
0 0x7f1cad88ed7d base::debug::StackTrace::StackTrace()
1 0x7f1cad88eccc base::debug::StackTrace::StackTrace()
2 0x7f1cad9327ba logging::LogMessage::~LogMessage()
3 0x7f1ca4dea3ae ui::ResourceBundle::GetLocalizedString()
4 0x7f1ca4db5113 l10n_util::GetStringUTF16()
5 0x7f1ca3753bdd views::(anonymous namespace)::EmptyMenuMenuItem::EmptyMenuMenuItem()
2018-07-27 08:05:36 -07:00
Jeremy Apthorp
38ca2b342b build: [gn] fix resource path conflict on mac (#13824) 2018-07-27 08:04:03 -07:00
Samuel Attard
4b3011f3e8 feat: add getUploadProgress API to the net API (#13783) 2018-07-27 07:15:48 -07:00
Birunthan Mohanathas
c8dc2d3730 feat: Add will-resize event to TopLevelWindow (#13649)
The new `will-resize` event can be used to prevent the resize from
happening before the native window is actually resized. This is in
contrast to the existing the `resize` event, which is sent *after* the
native window has already been resized. For apps with e.g. custom window
snapping logic, the `resize` event is not sufficient because it will
result in flickering between the dragged size and the snapped size.

`will-resize` is only emitted on macOS and Windows.
2018-07-27 18:53:01 +09:00
Jeremy Apthorp
9af9634f7d chore: remove unused process_type variable (#13823) 2018-07-26 23:25:54 -07:00
Jeremy Apthorp
7ed9a88277 build: [gn] fix linking against base_static (#13810)
* build: [gn] fix linking against base_static

* chore: run 'gn format' over brightray/BUILD.gn
2018-07-26 08:30:37 -07:00
Birunthan Mohanathas
acbabc7635 build: Bump libcc to latest (#13821)
This picks up electron/libchromiumcontent#617.
2018-07-26 08:26:08 -07:00
Josh Goldberg
a11e8654cc Grammar fix in application-architecture.md (#13798) 2018-07-26 23:14:20 +10:00
Cheng Zhao
ce4e05b85a fix: pass scrollBounce by command line flag (#13812)
Implement the scrollBounce option by reading the command line flag in
`RenderThreadImpl::IsElasticOverscrollEnabled`, there is no more need
to set NSScrollViewRubberbanding.
2018-07-26 18:38:37 +09:00
Cheng Zhao
e125569f87 fix: check string encoding before creating value (#13815) 2018-07-26 18:38:17 +09:00
Jeremy Apthorp
9f26dfc23e build: [gn] win and linux depend on :packed_resources
Also, roll libcc to include
9b66eb4f04
2018-07-25 15:49:42 -07:00
Jeremy Apthorp
0efb5853d6 build: [gn] centralize GN args under build/args/*.gn
Devs can still locally override or add settings by adding lines after
the `import` statement in args.gn.

This will help make sure that everyone has a common set of build args,
and will allow us to update everyone's build args in git.
2018-07-25 14:24:45 -07:00
Jeremy Apthorp
d1cb8b7d67 build: [gn win] fix webrtc link error in component build 2018-07-25 11:45:40 -07:00
Jeremy Apthorp
3971fbc671 build: [gn] include node_modules in default_app asar
The default_app asar was recently changed to reference files inside
`node_modules/` in addition to files inside `default_app/`. The
`js2asar.py` script was updated to interpret what this meant, but the GN
build wasn't. This change somewhat hackily makes the GN build reuse the
`js2asar.py` script so that this and also hopefully any future changes
will work in the GN build as well as the GYP build.
2018-07-25 11:45:22 -07:00
Jeremy Apthorp
58dc6ccd1a build: [gn] roll node DEPS 2018-07-25 11:45:02 -07:00
Zeke Sikelianos
9220ca2b98 Merge pull request #13784 from electron/fix-enable-disable-features
fix: Use --enable-features and --disable-features
2018-07-25 11:09:36 -07:00
Zeke Sikelianos
4822c130a3 Merge pull request #13801 from electron/update-ch-upgrade-docs
docs: update an estimate of how much we are behind Chromium
2018-07-25 10:46:03 -07:00
Birunthan Mohanathas
f788143c1a pr: Update docs 2018-07-25 10:12:27 -07:00
Birunthan Mohanathas
a42ca9eecc feat: Add BrowserWindow.setWindowButtonVisibility()
Fixes #12701 and supersedes #13131.

Ideally we would have added `setTitleBarStyle()`, but that is a
significantly more involved change. For example, consider the case where
we switch from `hidden` to `normal`. We would not only have to show the
traffic light buttons, we would also have to switch the window from a
frameless to a framed window and deal with various other window state.
Lets instead implement a simple solution for #12701.
2018-07-25 10:12:27 -07:00
Birunthan Mohanathas
39ff5100bf fix: Use --enable-features and --disable-features
Unlike Chrome, we were not using the --enable-features and
--disable-features command-line arguments to initialize
`base::FeatureList`.
2018-07-25 19:07:49 +02:00
Birunthan Mohanathas
00c0c180ab build: Bump libcc to latest
This picks up electron/libchromiumcontent#609.
2018-07-25 09:52:57 -07:00
Aleksei Kuzmin
3b2424b4c8 docs: update an estimate of how much we are behind Chromium 2018-07-25 16:35:17 +02:00
Jeremy Apthorp
a01b4d78a4 build: [gn] link dwmapi in component build (#13773) 2018-07-25 11:21:36 +10:00
Zeke Sikelianos
89a9ccab8b docs: clarify default auto-updater installation behavior (#12783)
* docs: clarify default auto-updater installation behavior

* remove redundant note
2018-07-25 08:33:53 +10:00
Jeremy Apthorp
76a62b44dc build: [gn] simplify resource pak build 2018-07-24 10:18:27 -07:00
Aleksei Kuzmin
ea16445be7 chore: [tests] update some BrowserWindow tests
- manually close an existing windows before creating a new one.
  We have to do it because the `afterEach` hook doesn't get called
  if a test fails.
- add some async/await goodies
2018-07-24 10:02:54 -07:00
Cheng Zhao
3094f62f0b fix: use webContentsId with contextId together (#13749)
After after using `processId-contextCounter` as contextId, it may happen
that contexts in different WebContents sharing the same renderer process
get the same contextId. Using webContentsId as part of key in
ObjectsRegistry can fix this.
2018-07-24 16:21:38 +09:00
Jeremy Apthorp
d7b41462af build: [gn win] fix dllimport usage in node's usage of icu
We're abusing the nodejs build a little bit by building it without ICU support, but forcing the inspector to be built, which depends on ICU. This synchronizes one of the build flags that's required to get ICU to link on Windows.
2018-07-23 10:11:32 -07:00
Cheng Zhao
305e3aad40 refactor: remove private webContents.getId() API (#13674) 2018-07-23 18:08:36 +09:00
Cheng Zhao
a88cdf2d1f spec: suppress mixed-sandbox test in Windows CI (#13769) 2018-07-23 18:08:06 +09:00
Cheng Zhao
9d6f1a372e fix: create WebContents for webview on request (#13713) 2018-07-21 11:11:28 +09:00
Jeremy Apthorp
014832237c Merge pull request #13747 from nornagon/nornagon/gn-ci-builds
build: [ci] add GN linux CI build
2018-07-20 16:08:45 -07:00
Jeremy Apthorp
4918e279e2 build: stop defining is_mas_build (#13742)
is_mas_build is now defined in libcc.
2018-07-20 14:34:12 -07:00
Jeremy Apthorp
77004c6be8 Update DEPS 2018-07-20 14:33:51 -07:00
Jeremy Apthorp
1aa16d0ac0 build: [gn win] fix webrtc link error
Fixes link errors of the form

```
init_webrtc.lib(init_webrtc.obj) : error LNK2005: "class webrtc::metrics::Histogram * __cdecl webrtc::metrics::HistogramFactoryGetCounts(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int,int,int)" (?HistogramFactoryGetCounts@metrics@webrtc@@YAPAVHistogram@12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HHH@Z) already defined in metrics_default.obj
```
2018-07-20 14:30:14 -07:00
John Kleinschmidt
6b3ee233ff Use actual binary instead of python wrapper 2018-07-20 17:07:31 -04:00
John Kleinschmidt
856483fe61 Add sccache
Also removed unneeded slack notifcations
2018-07-20 16:29:57 -04:00
John Kleinschmidt
004abe3ce8 build: [ci] add GN linux CI build 2018-07-20 13:02:28 -07:00
Tiago Danin
1fd6d38a0a docs: Improved documentation (#13403) 2018-07-20 10:58:19 -07:00
John Kleinschmidt
2440d03595 Merge pull request #13739 from electron/fix-rebuild-native-modules
fix: update rebuild-test-modules.py for node 10
2018-07-20 11:20:32 -04:00
John Kleinschmidt
af241c8b4b Merge pull request #13748 from electron/gn-win32
build: [gn] working on 32bit windows
2018-07-20 10:25:04 -04:00
John Kleinschmidt
d757e03d86 Merge pull request #13746 from electron/gn-refactor
build: [gn] reorganize :electron_lib target
2018-07-20 10:10:47 -04:00
Jeremy Apthorp
16b66db9c7 build: [gn] working on 32bit windows 2018-07-19 17:04:44 -07:00
Jeremy Apthorp
803f84d7ec build: [gn] reorganize :electron_lib target 2018-07-19 16:30:23 -07:00
Zeke Sikelianos
a2ac31a4bf Merge pull request #13736 from electron/build--make-nightly-filenames-more-guessable-with-YMD-format
build: make nightly filenames more guessable with YMD format
2018-07-19 16:23:11 -07:00
Jeremy Apthorp
9fff635453 build: stop defining is_mas_build 2018-07-19 16:10:16 -07:00
Zeke Sikelianos
9b91d632e0 build: make nightly filenames more guessable with YMD format 2018-07-19 14:12:12 -07:00
John Kleinschmidt
3247d789f2 Merge pull request #13737 from electron/build--do-not-load-dotenv-on-CI
chore(ci): do not load dotenv on CI
2018-07-19 15:32:10 -04:00
John Kleinschmidt
f8b646c90a Merge pull request #13543 from electron/ajm-win7-crash
Ensure DirectX capturer is supported.
2018-07-19 15:11:42 -04:00
Zeke Sikelianos
94ea703a32 build: do not load dotenv on CI 2018-07-19 11:48:13 -07:00
Jeremy Apthorp
f2a7fd44ce build: enable v8 checks in debug mode 2018-07-19 11:39:36 -07:00
Cheng Zhao
e2029435c4 fix: use context counter as contextId
For sandboxed renderer it may not have a node::Environment in the context,
using a increasing counter as contextId works for all cases.
2018-07-19 11:00:10 -07:00
John Kleinschmidt
3f228ad715 fix: update for node 10 2018-07-19 13:18:10 -04:00
John Kleinschmidt
9acfe34286 Merge pull request #13724 from electron/windows-release-test-fix
build: Temporarily disable found-in-page event test
2018-07-18 21:31:30 -04:00
John Kleinschmidt
f1cc40e3bf Merge pull request #13359 from electron/release-notes-generator
build: New release notes generator
2018-07-18 16:19:32 -04:00
John Kleinschmidt
1d6766008a Merge pull request #13725 from electron/node-headers
build: [gn] add target for building node headers
2018-07-18 16:16:18 -04:00
Jeremy Apthorp
70068f313a build: [gn] add target for building node headers 2018-07-18 12:01:16 -07:00
John Kleinschmidt
613b03c3c7 build: disable found-in-page event test
On Windows release builds, the found-in-page event test causes the test suite to hang.  If the test is run individually, it works fine, but running it as part of the whole test suite causes the test suite to hang.  This works around the issue in #13704 by temporarily disabling that test.
2018-07-18 14:59:46 -04:00
John Kleinschmidt
fc33130aa3 Merge pull request #13672 from brunolemos/patch-1
docs: remove known issues from mac app store submission guide
2018-07-18 14:44:50 -04:00
Samuel Attard
f26880db03 Update docs on semantic requirements for #13359 (#13365) 2018-07-18 10:41:58 -05:00
Jeremy Apthorp
91172d6387 build: [gn] move native_mate build config to native_mate dir (#13706) 2018-07-18 11:45:13 +10:00
Jeremy Apthorp
0c366f5a7a chore: [gn] roll libcc DEPS 2018-07-17 15:54:58 -07:00
Samuel Attard
81640806bc add semantic prefixes from docs 2018-07-18 02:25:56 +10:00
Samuel Attard
57a18d4c49 clean up release notes script 2018-07-18 02:25:56 +10:00
Samuel Attard
2c255680a9 new release notes generator 2018-07-18 02:25:56 +10:00
John Kleinschmidt
05538aa32c Merge pull request #13629 from electron/use-dot-env
docs: use .env (and .env.example) for tokens used in release
2018-07-17 11:57:42 -04:00
John Kleinschmidt
6edbb3e3ed Merge pull request #13662 from electron/nightly-updates
chore: Updates for nightly builds
2018-07-17 11:13:20 -04:00
John Kleinschmidt
3581bf0cfc Merge pull request #13688 from electron/gn-custom-sysroot
build: [gn] use libnotify from custom sysroot
2018-07-17 09:22:49 -04:00
Milan Burda
c8030a0f2a feat: support chrome:// URLs in default_app (#13575) 2018-07-17 17:23:44 +10:00
Samuel Attard
c313fd614c build: handle win32 path separator in js2asar (#13694) 2018-07-17 15:31:06 +10:00
Samuel Attard
777d0113d5 fix: create a window capturer correctly (#13689)
* fix: create a window capturer correctly

We were incorrectly creating two screen capturers instead of a window
capturer

* spec: ensure dc tests pass

* spec: enable all tests after verifying dc tests work
2018-07-17 14:20:50 +10:00
Samuel Attard
ad9e64d086 fix: remove race condition for executeJavaScript (#13691)
Replaces 'did-finish-load' with 'did-stop-loading' which semantically
maps to the events inside Chromium.  Before I think we were relying
on a natural 99% winnable race condition.

Fixes #13504
2018-07-17 13:32:28 +10:00
Jeremy Apthorp
5864fa321c build: [gn] use libnotify from custom sysroot
Instead of hackily copying from the local machine.

Depends on electron/libchromiumcontent#601
2018-07-16 17:33:42 -07:00
Samuel Attard
12fcac59a2 refactor: clean up the default app, add CSP (#13437)
* refactor: clean up the default app, add CSP

* chore: appease the linter

* refactor: make js2asar more generic, dont assume default_app as target
2018-07-17 10:26:58 +10:00
John Kleinschmidt
1c70a1cccd Make sure artifacts are properly saved for nightly release builds
Also fix VSTS slack integration and make sure tests don't run for GitHub releases.
Update to latest libchromiumcontent
2018-07-16 17:07:48 -04:00
Shelley Vohr
6045d1218a refactor: remove experimentalCanvasFeatures property (#13684) 2018-07-16 13:32:42 -07:00
John Kleinschmidt
cc03213b62 Merge pull request #13664 from electron/tweak-release-docs
docs: update release docs from Fri 13 release session
2018-07-16 16:22:30 -04:00
John Kleinschmidt
1b5b98212d chore: Don't show download stats of libchromiumcontent for CI. (#13681)
* Update libcc to latest

* Pass along verbose mode to libcc download
2018-07-16 11:19:53 -07:00
John Kleinschmidt
55ba113678 Merge pull request #13685 from electron/roll-libcc
chore: roll libcc DEPS
2018-07-16 13:17:54 -04:00
Jeremy Apthorp
399fe7248f chore: roll libcc DEPS 2018-07-16 09:57:58 -07:00
Samuel Attard
b44e7fb1f1 docs: update second-instance event docs (#13656) 2018-07-16 09:59:44 -05:00
John Kleinschmidt
5764d76efa Fix formatting
Add alternate url for security token (depends on whether you are using new or old navigation on VSTS)
2018-07-16 10:39:31 -04:00
John Kleinschmidt
ede6fd91d0 Merge pull request #13673 from electron/fix-frameless-devtools-crash
Fix crash when opening devtools for frameless window
2018-07-16 09:39:16 -04:00
Cheng Zhao
222291631d spec: openDevTools should not crash for frameless window 2018-07-16 10:23:43 +09:00
Cheng Zhao
4a7c85f43e fix: use InspectableWebContentsView as content view 2018-07-16 10:20:35 +09:00
Bruno Lemos
f23d6fc107 docs: remove known issues from mac app store submission guide
not necessary since #10552
2018-07-15 17:45:50 -03:00
Jeremy Apthorp
5b81fde8a7 build: [gn win] link comctl32.lib to fix component build 2018-07-13 17:21:49 -07:00
John Kleinschmidt
87f34ccda4 Update Windows VS2017 requirement (#13663) 2018-07-13 17:43:27 -05:00
Charles Kerr
3653730cba Add post-publish 'npm dist-tag ls electron' step 2018-07-13 16:17:02 -05:00
John Kleinschmidt
6ea0e73b47 Merge branch 'master' into use-dot-env 2018-07-13 16:02:49 -04:00
Charles Kerr
da92abf964 document ELECTRON_S3_ tokens 2018-07-13 14:42:36 -05:00
Charles Kerr
452b5f342c add note about multiple calls to validateRelease 2018-07-13 14:17:31 -05:00
Charles Kerr
02d072ed9d fix VSTS token generation URL 2018-07-13 13:47:40 -05:00
John Kleinschmidt
539b554ecc Merge pull request #13578 from electron/miniak/refactoring
refactor: statically link functions available on Windows 7+
2018-07-13 10:52:37 -04:00
John Kleinschmidt
d4486b0fc4 Merge pull request #13660 from Tomyail/patch-1
docs: using chrome://flash to get the flash path
2018-07-13 10:49:15 -04:00
Lxx
b7bc16b39a docs: using chrome://flash to get the flash path
chrome://about no longer works , so we should use chrome://flash instead.
2018-07-13 22:10:04 +08:00
Cheng Zhao
77ca5b7d64 fix: don't invoke callback after FrameSubscriber is destroyed (#13657) 2018-07-13 19:54:49 +10:00
PalmerAL
ffc15e02a6 fix: add native function to create preload script (#13032)
* add native function to create preload script

* add tests

* fix formatting

* fix tests

* rerun CI
2018-07-13 11:17:11 +09:00
Milan Burda
5b0a898dd2 refactor: SHOpenFolderAndSelectItems does not have to be dynamically resolved 2018-07-12 22:28:44 +02:00
Milan Burda
adaa32003d refactor: DwmGetColorizationColor does not have to be dynamically resolved 2018-07-12 22:28:44 +02:00
John Kleinschmidt
e922b1733b Merge pull request #13636 from nornagon/gn-release
build: [gn] release build
2018-07-12 10:45:21 -04:00
John Kleinschmidt
6b5ccec0c6 chore: Updates for release process (#13632)
* Fix Appveyor URL

* Update docs to reflect current process

Also added troubleshooting steps.
2018-07-12 07:53:07 -05:00
John Kleinschmidt
facb210f64 Merge pull request #13494 from electron/expect-short-specs
chore(spec): convert smaller specs to expect
2018-07-12 08:45:34 -04:00
John Kleinschmidt
9c2287c142 Merge pull request #13635 from electron/node-win32-lean-and-mean
build: [gn] define WIN32_LEAN_AND_MEAN in the node build
2018-07-12 08:25:25 -04:00
John Kleinschmidt
f634bbcd99 Merge pull request #13634 from electron/node-clang
build: [gn] build node with clang-cl
2018-07-12 08:22:50 -04:00
John Kleinschmidt
fded6e7d0b Merge pull request #13639 from torycl/torycl/current-master-libcc
chore: use current master of libcc to include recent patches
2018-07-12 08:18:31 -04:00
Felix Rieseberg
deedf6c3f4 feat: Add isCurrentlyAudible() to WebContents (#13614)
* 🔧 Add isCurrentlyAudible() to WebContents

* ❤️ Implement feedback, use await to wait for event

* 👷 Add missing imports
2018-07-12 21:35:11 +10:00
Tomas Rycl
d352e6dc9e Using current master of libcc to include recent patches 2018-07-12 10:39:28 +02:00
Cheng Zhao
e90c4abc0d Merge pull request #13603 from electron/fix-remote
fix: guard against double-freeing remote references
2018-07-12 11:10:22 +09:00
Cheng Zhao
4cdb1b8fc3 fix double-freeing remote references
After the page does navigations, garbage collection can still happen in
the old context. This commit changes to store references to remote objects
by _pages_, instead of by _WebContents_.
2018-07-12 10:44:26 +09:00
Cheng Zhao
9cbbb2a6c4 add API to return an unique ID for page 2018-07-12 10:44:26 +09:00
Jeremy Apthorp
6089254439 build: [gn linux] link static libs for node release build 2018-07-11 18:11:48 -07:00
Jeremy Apthorp
aa4982d830 build: [gn] define WIN32_LEAN_AND_MEAN in the node build 2018-07-11 17:52:18 -07:00
Jeremy Apthorp
097daa6e32 build: [gn] build node with clang-cl 2018-07-11 17:51:35 -07:00
Zeke Sikelianos
2bb970b98e remove asserts that were obviated by dotenv 2018-07-11 13:56:40 -07:00
Zeke Sikelianos
4f9b8d5d5a clarify purpose of .env.example 2018-07-11 12:55:15 -07:00
Jeremy Apthorp
98f944c807 build: [gn] link child as well as browser in electron_lib 2018-07-11 11:32:17 -07:00
Zeke Sikelianos
849cddf4be update tokens portion of releasing docs 2018-07-11 11:02:41 -07:00
Zeke Sikelianos
823f03c1ff load .env in various release scripts 2018-07-11 11:02:03 -07:00
Zeke Sikelianos
5a796f62ab add .env.example 2018-07-11 11:00:21 -07:00
Jeremy Apthorp
c44cf88a6e build: [gn] fix include_dirs ordering error 2018-07-11 10:49:17 -07:00
Jeremy Apthorp
af7800bab1 build: [gn mac] only link libnode.dylib in component build 2018-07-11 10:46:48 -07:00
Jeremy Apthorp
7bec61bac5 build: [gn] fix dllimport warnings 2018-07-11 10:45:21 -07:00
Jeremy Apthorp
03131c5e77 build: [gn] node as a static lib 2018-07-11 10:43:52 -07:00
Jeremy Apthorp
98255ee413 chore: roll libcc DEPS 2018-07-11 10:39:01 -07:00
Jeremy Apthorp
bdceea6aca fix: enable spell checking, which broke in upgrade to ch66
Chromium commit [03563dd163][1] changed the way that the
spellcheck-enabled status was checked, defaulting to false.

Added the first (!) test for spellchecking, too.

Fixes #13608.

[1]: 03563dd163
2018-07-11 10:27:56 -07:00
Jeremy Apthorp
6fbec9d5a9 chore: [gn] support MAS build 2018-07-11 10:25:07 -07:00
Samuel Attard
addac43bbc fix: remember the render_process_id when permission requests occur on the IO thread (#13621)
Fixes #13620
2018-07-11 12:21:47 -05:00
John Kleinschmidt
376094fc0c Merge pull request #13515 from nornagon/gn-linux
chore: [gn] fix linux build
2018-07-11 08:02:42 -04:00
Shelley Vohr
d5d76c56ed address feedback 2018-07-10 14:20:03 -07:00
Jeremy Apthorp
9241645a4b build: [gn] depend on /gtk instead of /gtk3
(We still depend on gtk3, just via one extra layer of abstraction. The
/gtk target itself depends on /gtk3.)
2018-07-10 13:42:41 -07:00
Jeremy Apthorp
62f62264da build: [gn] move crashpad to mac-only 2018-07-10 13:42:40 -07:00
Jeremy Apthorp
1e1adef9b6 build: [gn] use clang and custom stdlib when building node on linux 2018-07-10 13:42:36 -07:00
Jeremy Apthorp
d4cf3cee22 build: [gn] use platform-appropriate shlib_suffix when building node 2018-07-10 13:42:33 -07:00
Jeremy Apthorp
99ecbfbd3b build: [gn] use consistent node configuration between gyp and build 2018-07-10 13:42:29 -07:00
John Kleinschmidt
4ebe71655b Merge pull request #13597 from electron/release-updates
build: Updates to the release process
2018-07-10 11:40:04 -04:00
Jeremy Apthorp
3a58545a59 chore: replace _ASSERT with DCHECK in toast.cc (#13598)
_ASSERT was triggering errors about unused values when in debug mode
2018-07-10 08:01:26 -07:00
John Kleinschmidt
2040095b96 Move github release checking to node.js
Our upload script was relying on an old python script to find the GitHub release for uploading.
2018-07-10 09:40:24 -04:00
John Kleinschmidt
90339b7260 Update to run new AppVeyor jobs
AppVeyor builds got split into two jobs, `electron-x64` and `electron-ia32`
2018-07-10 09:40:24 -04:00
John Kleinschmidt
bc2ea0e705 Merge pull request #13540 from electron/breakpad-compat
chore: breakpad #include compatibility between GN and GYP
2018-07-10 08:30:56 -04:00
Tomas Rycl
9b6a37ead7 test: Better path compare than just strings (#13548)
* Better path comparision than just strings

* Linter fix

* Resolving paths first to always obtain absolute path so path.relative() can work

* Using assert.ok which better fits the test

* No need to resolve parameters of path.resolve

* Added assertion to type of returned path for download item
2018-07-10 21:38:11 +10:00
Cheng Zhao
0ec4ad288d fix: fallback to FullSizeContentView for frameless window on mac (#13599)
fix: draggable regions not working on macOS
2018-07-10 11:43:42 +10:00
Jeremy Apthorp
810909425e chore: breakpad #include compatibility between GN and GYP 2018-07-09 16:53:06 -07:00
John Kleinschmidt
28d4f7f25a Update to latest libchromiumcontent (#13594) 2018-07-10 09:49:00 +10:00
Shelley Vohr
ab7a90e82f feat: ability to apply patch to clang-format errors (#13576)
* feat: ability to apply patch to clang-format errors

* improve error message formatting

* fix line length linting error
2018-07-09 10:26:10 -05:00
Cheng Zhao
35b867ff7d Fix failed devtools tests due to fs.statSyncNoException not working (#13584)
* Revert "spec: disable the i18nString test"

This reverts commit 86c79653de.

* update node to fix fs.statSyncNoException
2018-07-09 09:38:48 -05:00
John Kleinschmidt
17fc7bb9fd Merge pull request #13567 from electron/nightly-release-notifications
ci: Add/update slack notifications for nightly builds
2018-07-06 15:20:29 -04:00
Jeremy Apthorp
f50f8e3f3d chore: [gn] fix CSP warning in debugger API test (#13541)
There's an attempt to suppress the warning in `spec/static/main.js`, which
sets `process.env.ELECTRON_DISABLE_SECURITY_WARNINGS`. However, it sets the
variable too late in the boot process: by the time that line in main.js has
run, a child zygote has already been booted. `test.py` works around this by
setting that environment variable outside of the test process, to ensure that
it gets propagated to all children.

I've been running the GN tests directly with `./out/Default/electron
electron/spec`, rather than through the wrapper script, and the
`api-debugger-spec.js` tests were failing, because they depend on a particular
log message being the first one emitted, and the CSP warning was causing that
test to fail, since it wasn't being correctly suppressed.

Instead of writing another wrapper script, this just fixes the underlying thing
that the warning is complaining about, which I think is reasonable because the
test's pass/fail depends on this specific behaviour.
2018-07-06 15:01:33 -04:00
John Kleinschmidt
368da14581 Add/update slack notifications
Add slack notifications for CircleCI nightly releases
Update VSTS slack notifications to match other platforms.
2018-07-06 10:23:31 -04:00
Cheng Zhao
dd46b3ec85 Merge pull request #13562 from electron/fix-devtools
Fix devtools not functioning well
2018-07-06 10:11:43 +09:00
Cheng Zhao
86c79653de spec: disable the i18nString test
It is failed because of fs.statSyncNoException, I'll fix it in another
PR.
2018-07-06 09:07:56 +09:00
Cheng Zhao
56c24406d6 spec: enable back devtools tests 2018-07-06 09:07:56 +09:00
Cheng Zhao
61ea03ed2d fix: update devtools url 2018-07-06 09:07:56 +09:00
Cheng Zhao
705bbd31e9 add stubs for new devtools messages 2018-07-06 09:07:56 +09:00
Cheng Zhao
29ff9873f4 implement devtools showItemInFolder message 2018-07-06 09:07:56 +09:00
John Kleinschmidt
5aa136a23d run test.py with --rebuild_native_modules (#13570)
Fixes script\verify-ffmpeg crash
2018-07-05 16:53:11 -05:00
Andrew MacDonald
7639e4a32a Actually try building on Windows. 2018-07-03 01:03:05 -07:00
Andrew MacDonald
68541f2ae8 Ensure DirectX capturer is supported. 2018-07-02 21:37:10 -07:00
Cheng Zhao
cb6ab4de20 fix: update libcc to fix private APIs in mas build (#13529) 2018-07-03 11:24:43 +09:00
Hari Juturu
eb223f8bc3 Enable webview in sandbox renderer (#13435)
* Enable webview in sandbox renderer
Security: Inherit embedder prefs onto webview

* cache lastwebprefs
2018-07-03 02:06:26 +10:00
Shelley Vohr
42d173b343 spec: convert menu specs to expect (#13485)
* spec: convert menu-item spec to expect

* spec: convert menu spec to expect
2018-06-30 00:25:28 -07:00
Maxine Whitely
6cf68f8247 fix: tray setContextMenu crash (#13513)
Co-authored-by: Zhuo Lu <sethlu@mintkit.net>
Co-authored-by: Kristine Zhang <kzhang@slack-corp.com>
2018-06-29 14:48:26 -07:00
Jeremy Apthorp
67673cbf7f chore: fix chromium-style errors in native_mate
Also clang-format some stuff.
2018-06-29 12:01:09 -07:00
Jeremy Apthorp
180b41ab73 chore: [gn] use merged-in native_mate 2018-06-29 12:01:09 -07:00
Jeremy Apthorp
3d4487ccfd Merge pull request #13463 from electron/remove_wtl
refactor: Using win32 file open api instead of WTL
2018-06-29 10:00:50 -07:00
Jeremy Apthorp
1186f082db chore: [gn] roll libcc & node deps (#13508) 2018-06-29 09:24:58 -07:00
Jeremy Apthorp
9525c94b5e chore: [gn] remove now-meaningless skia-related #defines (#13496)
`SK_SUPPORT_LEGACY_GETTOPDEVICE` was removed in [Jan 2017](https://chromium.googlesource.com/skia/+/76467a11a0aa4ba15f0f2e3ee078ba9b6ecbaa91)

`SK_SUPPORT_LEGACY_SAFESIZE64` was removed in [Oct 2017](https://chromium.googlesource.com/skia/+/3bd0fece5fadd522c2e8c1b0ca9934d7455d9ccd)
2018-06-29 08:36:20 -07:00
Zac Walker
05096f8a65 Removed WTL include folder 2018-06-29 13:26:46 +02:00
Cheng Zhao
e42c6d3eb7 fix the crash when loading site with jquery (#13475) 2018-06-29 09:42:04 +09:00
Shelley Vohr
9489401e7d spec: convert smaller specs to expect 2018-06-28 15:40:30 -07:00
Jeremy Apthorp
8ad3a2cc42 chore: [gn] add electron_app target for windows (#13491)
This allows building electron.exe on windows 🎉
2018-06-28 14:58:43 -07:00
Jeremy Apthorp
59fb4eccb4 chore: [gn] link against debug node when in debug mode (#13490)
This is required on Windows, because in Debug mode, C++ stdlib containers have a different size to when in Release mode, so the code in `node.dll` thought that `node::Environment` was a different size to the code in `electron.exe`, which uh, caused problems.

It should also make debugging through node a bit easier on all platforms.
2018-06-28 14:42:09 -07:00
Jeremy Apthorp
733e495e91 chore: use full path for ui_unscaled_resources.h (#13492)
This is the path that resolves in Chromium, it also works fine in the gyp build.
2018-06-28 14:41:37 -07:00
Jeremy Apthorp
475eef01c3 chore: [gn] copy node.dll in addition to node.dll.lib (#13489)
On Windows, you need to link against the `.lib` but the `.dll` needs to be next to the `.exe` at runtime, so we need to copy both.
2018-06-28 14:25:56 -07:00
Jeremy Apthorp
6492732631 chore: [gn] fix link errors relating to static members (#13488)
I'm not 100% sure why this is working in the gyp build, but I was getting link errors with these variables being defined in the headers.
2018-06-28 14:25:26 -07:00
Jeremy Apthorp
d6af3bfcd2 chore: fix more chromium-style errors in windows code (#13487)
Finding more chromium-style linting errors as I build more of the windows code :)
2018-06-28 14:20:11 -07:00
Shelley Vohr
003a92e099 refactor: remove deprecated GetAs methods (#13425)
* refactor: remove deprecated GetAs methods

* restructure URLRequestAsyncAsarJob on win

* fix: add string conversion header
2018-06-27 14:52:48 -07:00
Shelley Vohr
fa0704665f test: temporarily disable failing specs (#13470) 2018-06-27 14:15:24 -07:00
Jeremy Apthorp
4f8acb0cdd docs: add link to Chromium windows debugging docs
I found this tidbit in particular helpful: 

```sh
> devenv /debugexe out\Debug\chrome.exe <options to Chromium can go here>
```
2018-06-27 23:06:30 +02:00
Samuel Attard
92588be2bd refactor: add promise helper and change whenReady to be native impl (#13115)
* Add promise helper and change whenReady to be native impl

* remove commented code

* add GetInner helper to dedupe promise code

* add Promise.reject helper to be consistent with JS

* fix linting

* update promise impl per feedback

* remove param name from unused isolate

* Use non-depreceated resolvers for promises

* Add thread dchecks for promise helper, intiialize promise pointer to nullptr
2018-06-27 16:06:08 -05:00
Shelley Vohr
e9971173d4 fix: inline vector allocation (#13449)
* fix: inline vector allocation

* remove size_t static cast
2018-06-27 12:57:10 -07:00
zacwalk
9db76394f7 Link gdi from gyp 2018-06-27 20:58:37 +02:00
Zac Walker
8151c90c6b Fix warnings as error fixes. 2018-06-27 16:28:12 +02:00
Zac Walker
f122c44b07 Using win32 file open dialogs instead of WTL 2018-06-27 13:09:18 +02:00
Samuel Attard
28d148b475 docs: add native_mate to source code directory structure doc (#13451) 2018-06-27 17:46:14 +10:00
Shelley Vohr
f9e2ec43d0 fix: deprecate properties in app.getAppMetrics() (#13446)
* fix: deprecate properties in app.getAppMetrics()

* address feedback from review

* fix deprecated property location

* simplify test
2018-06-26 23:47:01 -07:00
Milan Burda
08ccc2d624 refactor: rpc-server.js cleanup (#13420)
* refactor: don't declare variables C-style in JavaScript

* refactor: use new constructor(...args) in rpc-server.js
2018-06-27 11:00:05 +10:00
Cheng Zhao
44aad039c6 fix: do not expose Node's external strings (#13438) 2018-06-27 10:18:09 +10:00
Shelley Vohr
1dde9492c9 refactor: remove deprecated CreateWithCopiedBuffer (#13436)
* refactor: remove deprecated CreateWithCopiedBuffer

* fix: add missing vector includes

* fix std::vector<char> allocation
2018-06-26 15:08:27 -07:00
Jeremy Apthorp
39e6943f1e chore: [gn] changes to BUILD.gn for windows (#13434)
Grab basket of changes needed to get the `electron_lib` target building on Windows with GN.
2018-06-26 22:58:20 +02:00
Jeremy Apthorp
4b60efcaf8 chore: [gn] fix WTL include paths and namespace include (#13433)
As of libchromiumcontent#576, the WTL namespace isn't included by
default in the GN build.
2018-06-26 22:57:40 +02:00
Jeremy Apthorp
2d9a491771 chore: [gn] correct library paths for node on windows (#13429)
For some reason the windows node build needs `.dll` on the ends of these libraries, and also needs to be linked against `dbghelp`.

Additionally, copy the `WHOLEARCHIVE` hacks from common.gypi, which was doing the same thing.
2018-06-26 22:57:05 +02:00
Alexey Kuzmin
f4039d82c3 spec: rewrite and enable a webview's disableguestresize attr test (#13428) 2018-06-26 08:38:04 -07:00
Jeremy Apthorp
4255384abc chore: [gn] remove vendor/ from windows include paths (#13432) 2018-06-26 15:03:56 +10:00
Jeremy Apthorp
418c4e170c chore: [gn] only define WIN32_LEAN_AND_MEAN if not already defined (#13430)
Chromium's GN build already defines `WIN32_LEAN_AND_MEAN` and `NOMINMAX` (see [build/config/win/BUILD.gn](dbe762aaff/build/config/win/BUILD.gn (515)) in chrome), so we don't need to define them ourselves. Left as #ifndefs so as not to break the gyp build.
2018-06-26 02:00:50 +02:00
Jeremy Apthorp
78bc1081fd chore: fix some more warnings in windows build (#13431)
Remove an unused function and fix an int type comparison warning. Only showed up when building with GN.
2018-06-26 02:00:20 +02:00
Jeremy Apthorp
6f91af9343 chore: fix various chromium-style errors in windows (#13394)
These errors weren't previously picked up because the GN build wasn't running on Windows.
2018-06-25 22:30:00 +02:00
Shelley Vohr
1c64ac8c41 fix: repair fs.statSyncNoException throwing exceptions (#13390) 2018-06-23 00:01:28 -07:00
Samuel Attard
a96fc9170c Merge pull request #13379 from electron/native-mate-in-electron
Merge native_mate into electron/electron
2018-06-23 02:00:58 +10:00
John Kleinschmidt
1c4d20eb94 Merge pull request #13322 from electron/pepper_flash_feature
build: move pepper flash behind feature flag
2018-06-22 11:58:10 -04:00
John Kleinschmidt
a971cbf57d Merge pull request #13377 from electron/chromium-style-win
chore: fix chromium-style errors in windows code
2018-06-22 11:46:29 -04:00
John Kleinschmidt
8b6d4b6f0e Merge pull request #13376 from electron/gn-windows-deps
chore: [gn] fix DEPS to work on windows
2018-06-22 10:53:36 -04:00
Samuel Attard
d068ff3afb fix linting 2018-06-22 13:43:39 +10:00
Samuel Attard
daa64e21f6 rename back to expected values 2018-06-22 11:42:55 +10:00
Samuel Attard
ea4a497442 move native_mate script to the electron scripts dir 2018-06-22 11:38:36 +10:00
Samuel Attard
b6f063d954 update paths for native_mate 2018-06-22 11:36:03 +10:00
Samuel Attard
8b31886c77 remove native_mate submodule 2018-06-22 11:35:14 +10:00
Samuel Attard
d04cdbb367 Merge 'native_mate' into 'electron' 2018-06-22 11:32:08 +10:00
Samuel Attard
4cada5e845 prepare for merging to electron 2018-06-22 11:29:57 +10:00
Jeremy Apthorp
43c1a7778d chore: fix chromium-style errors in windows code 2018-06-21 16:50:58 -07:00
Jeremy Apthorp
0660fb3f25 chore: [gn] fix DEPS to work on windows 2018-06-21 16:43:41 -07:00
Jeremy Apthorp
57d365a9f4 Update build-instructions-windows.md 2018-06-21 12:10:33 -07:00
Jeremy Apthorp
aa4ca406c8 chore: update GN build for chrome 66 2018-06-21 11:30:43 -07:00
deepak1556
337cb7910e update libcc ref 2018-06-21 22:32:22 +05:30
Zeke Sikelianos
4a7dda7c45 Merge pull request #13366 from c960657/patch-1
docs: fix links to webview API doc
2018-06-21 09:10:31 -07:00
Jeremy Apthorp
f4d0cef619 chore: [gn] remove gclient hook for node config.gypi (#13354) 2018-06-22 00:44:19 +10:00
Alexey Kuzmin
10a174fc6a spec: refactor helper closeWindow() function (#13337) 2018-06-22 00:43:15 +10:00
Alexey Kuzmin
b9da1575f0 spec: enable a disabled test (#13346) 2018-06-22 00:42:55 +10:00
Christian Schmidt
cdd2bab7d5 Fix links to webview.md 2018-06-21 16:39:07 +02:00
Samuel Attard
e15ffd96eb Merge pull request #30 from electron/chromium-66-upgrade
Chromium 66 Updates
2018-06-21 22:35:49 +10:00
deepak1556
5e2406081e build: move pepper flash behind feature flag 2018-06-21 17:02:12 +05:30
Jeremy Apthorp
8ccb5cc6eb chore: Annotate fallthrough switch paths with FALLTHROUGH
The compiler was throwing errors about unannotated fallthroughs when
building with GN.
2018-06-20 14:38:18 -07:00
Jeremy Apthorp
3f40e93ba7 chore: fix chromium-style errors in frame_subscriber
The chromium-style linter we run in the GN build was throwing errors
about these issues.
2018-06-20 14:14:11 -07:00
Jeremy Apthorp
99b4aac979 chore: Roll DEPS for chrome 66 in GN build 2018-06-20 14:13:43 -07:00
Milan Burda
122d00f415 Revert "Drop support of Mac OS 10.9" (#13348)
This reverts commit efa0ec0263.
2018-06-20 13:40:18 -07:00
The Moses
6ecd8077e5 Fix broken link of electron-builder (#13341) 2018-06-20 09:42:46 -05:00
John Kleinschmidt
552399af2f Merge pull request #13334 from electron/mas-fix-linking
Fix linking error for MAS build
2018-06-20 09:59:46 -04:00
John Kleinschmidt
55d1dde0f7 Merge pull request #13327 from electron/fix-tls
fix: tls check shouldnt rely on an external service
2018-06-20 08:59:45 -04:00
Samuel Attard
79fbd6bab1 Revert "fix: Drop support for OS X Mavericks (version 10.9)" (#13333) 2018-06-20 07:27:55 -05:00
Cheng Zhao
2b080ab575 fix: link with crashpad_client for MAS build 2018-06-20 20:50:56 +09:00
Felix Rieseberg
562eddf0e9 test: Upgrade spec dependencies (#13310)
* 📦 Update mocha, mocha-junit-reporter

* 📦 Update graceful-fs, multiparty, q, walkdir

* 📦 Update basic-auth

* 📦 Update ws

* 📦 Update dbus-native

* 📦 Upgrade yargs

* 🔒 Run `npm audit fix`

* 🔧 Fix websocket API change
2018-06-20 17:18:24 +10:00
Samuel Attard
436b124fc8 fix linting in the tls script' 2018-06-20 17:12:09 +10:00
Samuel Attard
0ca2496481 fix: tls check shouldnt rely on an external service 2018-06-20 17:05:43 +10:00
Husayn
1a8c986fb1 set mac protocol to none (#13302) 2018-06-20 13:16:37 +10:00
gnahzak
951aa83bdf Disable node options in node config (#13311) 2018-06-20 13:08:24 +10:00
Shelley Vohr
c20e0c30a2 src: base::Value::HasKey(key) => base::Value::FindKey(key) (#13312) 2018-06-20 13:07:10 +10:00
Zeke Sikelianos
0802f82356 doc: add CSP examples (#13167)
* doc: add CSP examples

* Deafult to zero-permissions CSP
2018-06-20 10:36:37 +10:00
John Kleinschmidt
fc12b5cab3 Merge pull request #13283 from jack-teng1/fix-asar-pack-cant-find-module
fix: can't load module error when app is packaged
2018-06-19 14:58:37 -04:00
John Kleinschmidt
04a7a34c42 Merge pull request #13301 from electron/revert-frame-sub-deprecation
fix: revert frame subscriber deprecation and re-enable tests
2018-06-19 14:26:14 -04:00
Heilig Benedek
f643ce4f66 revert: frame subscriber deprecation and re-enable tests 2018-06-19 19:49:44 +02:00
Jack Teng
3044607746 spec: fix asar spec due to change in node.js
node.js rename the internalModuleReadFile to internalModuleReadJSON
change spec to reflect this change
2018-06-19 10:42:21 -07:00
Jack Teng
10df019075 fix: can't load module error when app is packaged
due to change in node.js(https://github.com/nodejs/node/issues/17076)
internalModuleReadFile has been renamed to internalModuleReadJSON, and
in vendor/node/lib/internal/modules/cjs/loader.js it will call
internalModuleReadJSON and result in can't read the package.json file.
2018-06-19 10:42:21 -07:00
John Kleinschmidt
295c823a1b Merge pull request #13298 from electron/update-libcc-ref
Update vendor/libchromiumcontent ref
2018-06-19 13:24:05 -04:00
John Kleinschmidt
d367b75680 Merge pull request #13296 from electron/miniak/drop-macos-10.9
fix: Drop support for OS X Mavericks (version 10.9)
2018-06-19 13:19:24 -04:00
Aleksei Kuzmin
e683af1eb6 Update vendor/libchromiumcontent ref 2018-06-19 18:12:41 +02:00
Milan Burda
794fe741e9 fix: Drop support for OS X Mavericks (version 10.9) 2018-06-19 17:49:27 +02:00
Jeremy Apthorp
c598272891 refactor: [gn] compile node with boringssl (#13285) 2018-06-19 10:39:43 -05:00
Justin Guze
137aaf2429 fix: pass down the bool value of enableAutoSize to setSize (#13282)
* fix: pass the boolean value of enableAutoSize to setSize

The webContents setSize API takes in an optional enableAutoSize boolean.
Looking in the code, if that property is set, regardless if you pass in
true or false, it will always set it to true. This change passes the
appropriate boolean value down properly.

* creating new bool for autosize
2018-06-19 10:38:55 -05:00
popod
13f97b4cae Add Sentry.io to 3rd party hosted solution list for crash reports (#13281)
* Add Sentry.io to 3rd party hosted solution list for crash reports

* Single link to sentry doc
2018-06-19 10:32:37 -05:00
Jeremy Apthorp
9e8f83e25c refactor: fix chromium-style in url_request_asar_job (#13284) 2018-06-19 10:31:55 -05:00
Jeremy Apthorp
e177117fa5 chore: [gn] add desktop capturer sources to GN build (#13286) 2018-06-19 10:29:36 -05:00
Danny Brown
dd6c776a19 docs: add note about how to remove a previously set aspect ratio (#13293) 2018-06-19 10:24:42 -05:00
John Kleinschmidt
36c1e4cd75 Merge pull request #13267 from electron/expect-debugger-spec
spec: convert debugger spec to expect
2018-06-19 11:22:47 -04:00
John Kleinschmidt
faef453df5 Merge branch 'master' into expect-debugger-spec 2018-06-19 11:22:25 -04:00
Shelley Vohr
cba3a9fcce spec: convert deprecations to expect (#13268)
* spec: convert deprecations to expect

* address feedback from review
2018-06-19 10:22:08 -05:00
Shelley Vohr
9a79889692 spec: convert ipc specs to expect (#13273)
* spec: convert ipc specs to expect

* fix buffer value comparison
2018-06-19 10:21:50 -05:00
John Kleinschmidt
0219ef0feb Merge pull request #13269 from electron/expect-desktop-capturer-spec
spec: convert desktop capturer to expect
2018-06-19 11:21:13 -04:00
John Kleinschmidt
be29a1973b Merge pull request #13291 from electron/slightly-rewrite-webview-tests
spec: slightly rewrite webview tests
2018-06-19 11:20:45 -04:00
John Kleinschmidt
0fdcc5d485 Merge pull request #13294 from electron/MarshallOfSound-patch-1
Mark browser window affinity as experimental
2018-06-19 11:20:22 -04:00
John Kleinschmidt
a3bc989426 Merge pull request #13292 from electron/fix-release-tests
build:Fix VSTS config for release builds
2018-06-19 11:00:07 -04:00
Samuel Attard
c58fa02e58 Mark browser window affinity as experimental 2018-06-20 00:33:24 +10:00
John Kleinschmidt
d2a950e054 Fix VSTS config for release builds 2018-06-19 10:19:51 -04:00
Aleksei Kuzmin
5151a04613 spec: slightly rewrite webview tests 2018-06-19 13:27:49 +02:00
Aleksei Kuzmin
bbc8d50799 spec: add helper functions for async/await tests 2018-06-19 13:27:43 +02:00
Samuel Attard
bcbcb4c643 Merge pull request #12477 from electron/upgrade-to-chromium-66
Chromium 66
2018-06-19 19:10:37 +10:00
Milan Burda
d5d5386017 use std::make_unique<T> 2018-06-19 10:20:39 +02:00
Samuel Attard
f0e2da7089 Link to the desktop_capture libs 2018-06-19 17:41:43 +10:00
Samuel Attard
906ef3da6a Fix windows desktop_capturer build 2018-06-19 17:41:43 +10:00
Samuel Attard
2720fa751b Fix windows desktop_capturer build 2018-06-19 15:29:16 +10:00
Samuel Attard
42c37cc26d Bump libcc for desktop capturer fix 2018-06-19 15:16:13 +10:00
John Kleinschmidt
56ae882bb8 Update libcc 2018-06-18 23:20:31 -04:00
Samuel Attard
9d18be8fde Remove removed variable popup_bounds_in_view_ 2018-06-19 11:58:26 +10:00
Samuel Attard
ed1f8d3646 Add missing network:: for net log switches 2018-06-19 11:52:17 +10:00
Samuel Attard
efdf4f44c8 Remove stray .only 2018-06-19 11:49:46 +10:00
Samuel Attard
650631421f re-enable desktop capturer 2018-06-19 11:49:46 +10:00
Samuel Attard
518f0005ad mark worker thread taskrunner as WithBaseSyncPrimitives 2018-06-19 11:49:46 +10:00
Samuel Attard
5a28759fea post all desktop capturer apis to worker threads 2018-06-19 11:49:46 +10:00
Aleksei Kuzmin
6c604e1eb3 Update vendor/libchromiumcontent ref 2018-06-19 11:49:46 +10:00
Aleksei Kuzmin
25e5c174f5 Disable a test 2018-06-19 11:49:46 +10:00
Aleksei Kuzmin
b70ca6309c Disable a test 2018-06-19 11:49:46 +10:00
Aleksei Kuzmin
8f4d6a1995 Rewrite and enable one of the webview tests 2018-06-19 11:49:46 +10:00
Aleksei Kuzmin
ad74fb9210 Enable a test 2018-06-19 11:49:46 +10:00
Aleksei Kuzmin
da7cfba357 Enable Desktop Capturer tests 2018-06-19 11:49:46 +10:00
Aleksei Kuzmin
10c5141da0 Enable a few tests 2018-06-19 11:49:46 +10:00
Samuel Attard
10160b369b FIXME: getAppMetrics fails on windows CI 2018-06-19 11:49:46 +10:00
Samuel Attard
76f26341bf powerMontor crashes linux ia32, re-disable 2018-06-19 11:49:46 +10:00
Samuel Attard
8200a132be Re-enable cookie specs and add custom cookie name/url validation 2018-06-19 11:49:46 +10:00
Samuel Attard
c4f80a6d89 Enable power monitor test for linux 2018-06-19 11:49:46 +10:00
Samuel Attard
10e0d9b198 Enable process resource test 2018-06-19 11:49:46 +10:00
Samuel Attard
e70b93ad91 Enable childprocess.fork asar specs, fixed during run_as_node fixes 2018-06-19 11:49:46 +10:00
Samuel Attard
bc8525d2f3 re-enable native module tests 2018-06-19 11:49:46 +10:00
Samuel Attard
c882b37a40 Bump node to fix native module rebuilding 2018-06-19 11:49:46 +10:00
Samuel Attard
d9ec885dbc Fixed the spawn tests with the RUN_AS_NODE tests 2018-06-19 11:49:46 +10:00
Samuel Attard
f43eafb94e Fixed the fork tests, remove comment 2018-06-19 11:49:46 +10:00
Samuel Attard
de5bdc8be4 Fix inspector tests, you can now have multiple inspector sessions
Refs: https://github.com/nodejs/node/pull/20137
2018-06-19 11:49:46 +10:00
Samuel Attard
b7d00e26bf Default LoadV8Snapshot changed in C66
CR Ref: https://chromium-review.googlesource.com/c/chromium/src/+/859577
2018-06-19 11:49:46 +10:00
Samuel Attard
9b37e7d988 Re-enable node fork specs 2018-06-19 11:49:46 +10:00
Aleksei Kuzmin
0b12e425bd FIXME: Disable powerMonitor tests 2018-06-19 11:49:46 +10:00
Samuel Attard
a64def5745 Bump node vendor to remove openssl compile warning 2018-06-19 11:49:46 +10:00
Aleksei Kuzmin
0c69b0e224 FIXME: Disable Desktop Capturer 2018-06-19 11:49:46 +10:00
Aleksei Kuzmin
03a63a485f FIXME: Disable some of the focus related tests
They all pass localy, so it must be a CI issue.
2018-06-19 11:49:46 +10:00
Aleksei Kuzmin
e96d8b664d Skip one of the "chromium feature" tests 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
1fae6a321c Skip crashReported tests on linux 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
f4a9575193 Drop support of Mac OS 10.9
- set minimum deployment target to 10.10
- set minimum system version to 10.10
2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
792bb9b4a8 Update vendor/libchromiumcontent ref 2018-06-19 11:49:45 +10:00
John Kleinschmidt
67558d65a6 Use Node.js 10 for CI builds 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
caed1c37e0 Update vendor/libchromiumcontent ref 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
de6a5de914 Disable all failing tests 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
cd428a047f Update vendor/libchromiumcontent ref 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
417fe29dc0 Fix the media events test
Playing a media now requires a user gesture.
See https://goo.gl/xX8pDD.
2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
a7d2f7531c Update vendor/node ref 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
c786abf1e9 Add gfx:PointF support to mate::Converter
It's needed by atom_api_screen, BuildPrototype function on Windows.
2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
622544a902 Check embedder_message_dispatcher_ before sending a message
HandleMessageFromDevToolsFrontend() might be called
after the WebContentsDestroyed() is.
2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
6481161ef2 Update vendor/libchromiumcontent ref 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
6e11494d0b Update vendor/node ref 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
7886cfe408 FIXME: Disable "node feature child_process.fork" tests 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
368734b8ab FIXME: Disable "node feature inspector" tests 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
e240a16a20 FIXME: Disable "ses.cookies calls back with an error when setting a cookie with missing required fields" test 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
4a08779bc8 FIXME: Disable a couple of "debugger module debugger.sendCommand" tests 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
3ca288aba4 FIXME: Disable "BrowserWindow module extensions and dev tools extensions works when used with partitions" test 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
6c0b5cd76c FIXME: Disable "BrowserWindow module beginFrameSubscription method" tests 2018-06-19 11:49:45 +10:00
Aleksei Kuzmin
c3ccd42a23 Update the vendor/libchromiumcontent ref 2018-06-19 11:49:45 +10:00
Tomas Rycl
f9278e518c Fix linker error on Windows
base_jumbo_7.obj, unresolved external symbol __imp_InitPropVariantFromCLSID
2018-06-19 11:49:44 +10:00
Tomas Rycl
40bf582c81 Use /guard:cf during both compile and link parts of the build on Windows
Thanks jack-teng1 for info.
2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
81398c1fde Use Chromium 66.0.3359.181 and Node.js 10.2.0 2018-06-19 11:49:44 +10:00
John Kleinschmidt
08ee965270 Fix pr builds 2018-06-19 11:49:44 +10:00
Heilig Benedek
65b8dd48d8 Update OSR code 2018-06-19 11:49:44 +10:00
Heilig Benedek
91d16c9b3a FIXME: comment out ppapi code that blocks compilation 2018-06-19 11:49:44 +10:00
Heilig Benedek
60ba2013c4 Re-add dirtyOnly to FrameSubscriber and document API change 2018-06-19 11:49:44 +10:00
Heilig Benedek
b9413fe59d Update FrameSubscriber implementation 2018-06-19 11:49:44 +10:00
Nitish Sakhawalkar
ca8843102a Fix duplicate RTCDispatcher console error for debug build.
The solution was to call CreateScreenCapturer from content, and not link the static library in.
2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
9b9a818c43 FIXME: Disable one of the <webview> tag tests. 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
7e4c0b304b Enable a few tests 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
90c3d87e21 Rename LocalSurfaceIdAllocator
https://chromium-review.googlesource.com/809886
2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
dd444fd429 Update vendor/libchromiumcontent ref 2018-06-19 11:49:44 +10:00
Nitish Sakhawalkar
58b9203b9b Update link lib in brightray 2018-06-19 11:49:44 +10:00
John Kleinschmidt
ddaf2cfdc5 Fix appveyor config 2018-06-19 11:49:44 +10:00
John Kleinschmidt
1321e8a6df Use vs2017 only vm for CI 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
6d7e281dc8 Update vendor/node ref 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
32ff2ff8fb FIXME: Disable some of <webview> tag tests 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
a45b1a9205 FIXME: Disable a couple of webContents module tests 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
123b35a7f1 FIXME: Disable "asar package child_process.fork" tests 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
77ae8b65f7 FIXME: Disable desktopCapturer tests 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
5656cb34b8 Use libpdfium_skia_shared.a 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
7616cb38a7 Update vendor/libchromiumcontent ref 2018-06-19 11:49:44 +10:00
Tomas Rycl
a9eb267f92 Update vendor/node ref 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
496dbb6b7e Set llvm_version to "7.0" 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
3e6e01eb94 Update vendor/libchromiumcontent ref 2018-06-19 11:49:44 +10:00
Aleksei Kuzmin
42d84bbd70 Use Node 10.0.0 2018-06-19 11:49:44 +10:00
Tomas Rycl
650f7a920a Correct windows header order 2018-06-19 11:49:44 +10:00
Tomas Rycl
7b17f15703 Fixing pdf print errors on Windows build 2018-06-19 11:49:43 +10:00
deepak1556
8f00240c73 chrome style plugin: remove check-auto-raw-pointer option
This is always enabled now, so the corresponding flag can be removed.
https://chromium-review.googlesource.com/734132
2018-06-19 11:49:43 +10:00
Nitish Sakhawalkar
3ac4c1f03f Update libcc and replace snapshot_blob.bin by v8_context_snapshot.bin 2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
a45862c93f Link against device_service and viz_service libs 2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
623ed84b23 Update vendor/libchromiumcontent ref 2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
000bbd45b8 Add ForceFeedback to the frameworks list on Mac 2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
016ac8ff6e Set CHROME_VERSION_STRING to 66.0.3359.117 2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
aaef07e637 Update vendor/libchromiumcontent ref 2018-06-19 11:49:43 +10:00
Tomas Rycl
101cd90d37 More pdf printing fixes for Windows 2018-06-19 11:49:43 +10:00
Tomas Rycl
32ebd9e221 Proper dpi parameter type for PdfRenderSettings 2018-06-19 11:49:43 +10:00
Tomas Rycl
bbd6b478ac Add missing header
For ThreadRestrictions class.
2018-06-19 11:49:43 +10:00
Tomas Rycl
7ca1b0704d Rename ScopedWindowsThreadEnvironment::succeeded() to Succeeded()
https://chromium-review.googlesource.com/742447
2018-06-19 11:49:43 +10:00
Tomas Rycl
1ac0ab2b71 Include missing "windows.h" and fix headers ordering
For PCWSTR on line 198.
2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
d6ffbc0148 Use an int for wm::ShadowElevation. Pick semantic constants.
https://chromium-review.googlesource.com/899886
2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
4a38c2d800 Remove deprecated View::SetLayoutManager
https://chromium-review.googlesource.com/844760
2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
f6648a0d4d Remove ScopedComPtr and scoped_comptr.h
https://chromium-review.googlesource.com/726461
2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
82d204e932 Wrap X11 headers in ui/gfx/x/x11.h
https://chromium-review.googlesource.com/756711
2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
97414cc931 Update vendor/libchromiumcontent ref 2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
5451635df0 Update vendor/node ref 2018-06-19 11:49:43 +10:00
Heilig Benedek
1de1ca906a Reimplement FrameSubscriber with mojo VideoCapture APIs 2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
28f6e10e5a Add "-fno-exceptions" to "cflags_cc" on linux 2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
ac33694028 Update chrome_version.h 2018-06-19 11:49:43 +10:00
Aleksei Kuzmin
9e3011dbcd Update libcc ref 2018-06-19 11:49:43 +10:00
deepak1556
c97706de50 Remove deps on libcommon.a and libjavascript.a 2018-06-19 11:49:43 +10:00
deepak1556
844ef4291c PepperFlashRendererHost to use SkFontStyle.
https://chromium-review.googlesource.com/c/chromium/src/+/602469
2018-06-19 11:49:43 +10:00
deepak1556
43ca4d5bfd Move HTTPBad flags into SSLStatus user data
https://chromium-review.googlesource.com/c/chromium/src/+/709458
2018-06-19 11:49:43 +10:00
deepak1556
3f7bb61b7f Convert base::UInt64ToString to base::NumberToString
https://chromium-review.googlesource.com/813101
2018-06-19 11:49:43 +10:00
deepak1556
39b30b76ea Printing: Remove PrintedPage on non-Windows
https://chromium-review.googlesource.com/c/chromium/src/+/804178
https://chromium-review.googlesource.com/c/chromium/src/+/770492
https://chromium-review.googlesource.com/c/chromium/src/+/704262
2018-06-19 11:49:42 +10:00
Aleksei Kuzmin
37d64e6a00 Update vendor/node ref
To get changes from
a635a8aa8f
2018-06-19 11:49:42 +10:00
Aleksei Kuzmin
4236c17654 Use native-mate from the Ch66 branch 2018-06-19 11:49:42 +10:00
Aleksei Kuzmin
24db18f34e Update libcc ref 2018-06-19 11:49:42 +10:00
deepak1556
405adb938b Permissions: Remove CONTENT_SETTINGS_TYPE_PUSH_MESSAGING
https://chromium-review.googlesource.com/c/chromium/src/+/758456
2018-06-19 11:49:42 +10:00
deepak1556
4068a62fa6 Define gfx::AcceleratedWidget to be uint64_t instead of NSView*
https://chromium-review.googlesource.com/c/chromium/src/+/792295
2018-06-19 11:49:42 +10:00
deepak1556
c4b8e106c0 Create network_converter for services/network/* types 2018-06-19 11:49:42 +10:00
deepak1556
f1e2304585 Remove OSCertHandle typedefs, use smart pointers for CRYPTO_BUFFER ownership.
https://chromium-review.googlesource.com/c/chromium/src/+/775540
2018-06-19 11:49:42 +10:00
deepak1556
77f427acc8 Check for key system support using new mojo service KeySystemSupport
https://chromium-review.googlesource.com/c/chromium/src/+/834764
2018-06-19 11:49:42 +10:00
Aleksei Kuzmin
e1f25253db REVIEW: Don't use removed and deprecated Value::To* APIs
See https://chromium-review.googlesource.com/848782 for removed APIs.
2018-06-19 11:49:42 +10:00
Aleksei Kuzmin
a218c9696c Fix error: no matching constructor for initialization of 'v8::TryCatch'
The deprecated constructor has been removed
in https://chromium-review.googlesource.com/848782
2018-06-19 11:49:42 +10:00
deepak1556
5df0362361 Remove obsolete ShouldHandleSystemCommands function.
https://chromium-review.googlesource.com/c/chromium/src/+/924315
2018-06-19 11:49:42 +10:00
deepak1556
2f7c413199 v8: set fatal error handler per isolate 2018-06-19 11:49:42 +10:00
deepak1556
66058c8cfe REVIEW: Use RenderWidgetHost api for event routing
https://chromium-review.googlesource.com/c/chromium/src/+/836267
2018-06-19 11:49:42 +10:00
deepak1556
d386ec0a2b Remove unused elements from RWHV::CopyFromSurface() API and dead code.
https://chromium-review.googlesource.com/c/chromium/src/+/929874
2018-06-19 11:49:42 +10:00
deepak1556
3ad0639b2e Surface synchronization: Implement auto-resize for OOPIF/BrowserPlugin
https://chromium-review.googlesource.com/c/chromium/src/+/753801
2018-06-19 11:49:42 +10:00
deepak1556
ea7e273a06 gin: Make gin/ remember external reference table
https://chromium-review.googlesource.com/c/chromium/src/+/778741
2018-06-19 11:49:42 +10:00
deepak1556
383b21e20a Change calls to GeolocationProvider::UserDidOptIntoLocationServices() to occur via Mojo.
https://chromium-review.googlesource.com/c/chromium/src/+/760239
2018-06-19 11:49:42 +10:00
deepak1556
a5bdb8103b Remove invalid include headers 2018-06-19 11:49:42 +10:00
deepak1556
0cbffb15cc NetworkService: Implement URLLoader::OnAuthRequired
https://chromium-review.googlesource.com/c/chromium/src/+/938960
2018-06-19 11:49:42 +10:00
deepak1556
27cb84eee0 NetworkService: Implement URLLoader::OnCertificateRequested
https://chromium-review.googlesource.com/c/chromium/src/+/848303
2018-06-19 11:49:42 +10:00
deepak1556
b268e37663 Simplify ShouldInterceptResourceAsStream to remove unneeded code path.
https://chromium-review.googlesource.com/c/chromium/src/+/939857
2018-06-19 11:49:42 +10:00
deepak1556
c9f20516ac Make reading blobs work through Blob mojo interface.
https://chromium-review.googlesource.com/c/chromium/src/+/773199
2018-06-19 11:49:42 +10:00
deepak1556
a1683eb4e8 Give the JS dialog manager the alerting frame.
https://chromium-review.googlesource.com/c/chromium/src/+/928828
https://chromium-review.googlesource.com/c/chromium/src/+/791517
2018-06-19 11:49:42 +10:00
deepak1556
eab4227cbf Make Origin(const GURL&) constructor private.
https://chromium-review.googlesource.com/c/chromium/src/+/729284
2018-06-19 11:49:42 +10:00
deepak1556
11fc8374c0 Move DownloadUrlParameters from content/public to components/download
https://chromium-review.googlesource.com/c/chromium/src/+/914232
2018-06-19 11:49:42 +10:00
deepak1556
8968c447f4 Include missing header 2018-06-19 11:49:41 +10:00
deepak1556
7b47d69efe Remove did-get-response-details and did-get-redirect-request events
https://chromium-review.googlesource.com/c/chromium/src/+/805008
https://chromium-review.googlesource.com/c/chromium/src/+/786320
2018-06-19 11:49:41 +10:00
Samuel Attard
3da6450b0c Bump libcc to get builds 2018-06-19 11:49:41 +10:00
deepak1556
2ea26cd4d7 Add MediaStoppedReason to WCO
https://chromium-review.googlesource.com/c/chromium/src/+/758583
2018-06-19 11:49:41 +10:00
deepak1556
100291ec42 OOPIF-ize hung renderers
https://chromium-review.googlesource.com/c/chromium/src/+/896343
2018-06-19 11:49:41 +10:00
deepak1556
2047929cb5 Convert ax_enums.idl to mojom.
https://chromium-review.googlesource.com/c/chromium/src/+/877417
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
7732da41ba Revert "Revert "Add support for OOPIF printing in renderer""
https://chromium-review.googlesource.com/924566
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
93fc60720a Feature Policy Onion Soup (1)
https://chromium-review.googlesource.com/726343
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
bb150185ac Fix includes in AtomQuotaPermissionContext 2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
c75f6f408e DevTools: remove the 'forced' attribute from the AgentHostClosed in DevToolsAgentHost.
https://chromium-review.googlesource.com/745301
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
4bb3e0da15 Rename buildflag_header targets in base for consistency
https://chromium-review.googlesource.com/930033
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
576bf8f6c0 Move resource_response.h to //services/network/public/cpp.
https://chromium-review.googlesource.com/865664
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
1a11bb936b ui::Display cleanup: some enums --> enum classes
https://chromium-review.googlesource.com/915211
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
4602d940cf Add missing header 2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
38f18d9aa2 FIXME: Disable OSR 2018-06-19 11:49:41 +10:00
deepak1556
b7bc3ec20d Update AtomBrowserClient::RenderProcessWillLaunch api
https://chromium-review.googlesource.com/c/chromium/src/+/742344
2018-06-19 11:49:41 +10:00
deepak1556
409ff41c03 Remove SetCookieWithDetailsAsync API in favor of SetCanonicalCookieAsync.
https://chromium-review.googlesource.com/c/chromium/src/+/777954
2018-06-19 11:49:41 +10:00
deepak1556
23f7ccbdda Remove old cookie enum values
https://chromium-review.googlesource.com/c/chromium/src/+/877515
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
2c4bbacec1 Remove base::Value::GetType()
https://chromium-review.googlesource.com/718458
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
343c42e4ef Remove redundant device::PowerSaveBlocker enums.
https://chromium-review.googlesource.com/754169

services/device: Fix enum naming in wake_lock.mojom.
https://chromium-review.googlesource.com/755884
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
37168c0a95 Move ResourceRequestBody to services/network in preparation of moving content/network.
https://chromium-review.googlesource.com/864422
2018-06-19 11:49:41 +10:00
deepak1556
d3c6aa12d1 Remove AtomAccessTokenStore
Its a dummy class since chromium 63,
https://chromium-review.googlesource.com/c/chromium/src/+/708494
2018-06-19 11:49:41 +10:00
deepak1556
bb36a26950 update native-mate ref 2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
6b77fa5b3b [desktop capture] remove dependencies on webrtc/desktop_capture from /chrome
https://chromium-review.googlesource.com/876723
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
5e320994f4 Remove content/linux_sandbox dependence on content_switches.h
https://chromium-review.googlesource.com/734265
2018-06-19 11:49:41 +10:00
Aleksei Kuzmin
160b165358 move DownloadInterruptReasons from content/ to components/download
https://chromium-review.googlesource.com/897967
2018-06-19 11:49:40 +10:00
Aleksei Kuzmin
7fc8814d13 move some files from content/public/browser to components/download/public/core
https://chromium-review.googlesource.com/891686
2018-06-19 11:49:40 +10:00
Aleksei Kuzmin
4e580d5b39 Move download_item.h from content/public to components/download
https://chromium-review.googlesource.com/907687
2018-06-19 11:49:40 +10:00
Aleksei Kuzmin
a315d6330c Remove base::Value::IsType
https://chromium-review.googlesource.com/659798
2018-06-19 11:49:40 +10:00
Aleksei Kuzmin
48c3340d95 Update the vendor/node reference 2018-06-19 11:49:40 +10:00
Aleksei Kuzmin
341f698ace Use latest libcc with Ch66 2018-06-19 11:49:40 +10:00
deepak1556
e3c580e905 Move away from BrowserThread::FILE
* Migrate TtsPlatformImplLinux away from using BrowserThread::FILE.
  https://chromium-review.googlesource.com/c/chromium/src/+/570022
* Move PdfConverter off the FILE thread.
  https://chromium-review.googlesource.com/c/chromium/src/+/592393
* https://chromium.googlesource.com/chromium/src/+/master/docs/task_scheduler_migration.md
2018-06-19 11:49:40 +10:00
deepak1556
6d241e972b Clean up net::HttpAuthPreferences.
https://chromium-review.googlesource.com/c/chromium/src/+/727399
2018-06-19 11:49:40 +10:00
deepak1556
83632f15a9 Fix session restore with network service.
https://chromium-review.googlesource.com/c/chromium/src/+/818486
2018-06-19 11:49:40 +10:00
deepak1556
bbb2393031 Remove base::SizeTToString
https://chromium-review.googlesource.com/c/chromium/src/+/799550
2018-06-19 11:49:40 +10:00
deepak1556
c31d7ef70a Implement SpecialStoragePolicy::ShouldDeleteCookieOnExit
https://chromium-review.googlesource.com/c/chromium/src/+/926369
2018-06-19 11:49:40 +10:00
deepak1556
3666935c06 [DevTools] Make Inspect Element work for OOPIF
https://chromium-review.googlesource.com/c/chromium/src/+/881522
2018-06-19 11:49:40 +10:00
deepak1556
8e125b2953 REVIEW: Remove the notification close-closure in favour of an explicit method
https://chromium-review.googlesource.com/c/chromium/src/+/744205
2018-06-19 11:49:40 +10:00
deepak1556
026e7bff40 Update NetworkDelegate
* Remove Deprecated OnResponseStarted.
  https://chromium-review.googlesource.com/c/chromium/src/+/763193
* Replace cookie lines with CanonicalCookie in CanSetCookie delegates.
  https://chromium-review.googlesource.com/c/chromium/src/+/775606
* Reporting: Check upload permissions asynchronously
  https://chromium-review.googlesource.com/c/chromium/src/+/937566
2018-06-19 11:49:40 +10:00
deepak1556
bf55d856d2 Cookie Store: Extract change notifications to separate classes.
https://chromium-review.googlesource.com/c/chromium/src/+/919159
2018-06-19 11:49:40 +10:00
deepak1556
806acbdf12 Move content/network to services/network.
https://chromium-review.googlesource.com/891646
2018-06-19 11:49:40 +10:00
Aleksei Kuzmin
fba2ab0996 Move throttling to network service
https://chromium-review.googlesource.com/703674
2018-06-19 11:46:59 +10:00
deepak1556
529ced80f2 Remove CancelRequest for PermissionManager
https://chromium-review.googlesource.com/c/chromium/src/+/876746
2018-06-19 11:46:59 +10:00
deepak1556
01fdfc4574 Remove Permission manager from brightray
Electron manages its own implementation, this was
missed out when merging the brightray/ component.
2018-06-19 11:46:59 +10:00
deepak1556
f6665edc73 Convert ColorChooser from ipc to mojo.
https://chromium-review.googlesource.com/c/chromium/src/+/800350
https://chromium-review.googlesource.com/c/chromium/src/+/821954
2018-06-19 11:46:59 +10:00
deepak1556
c29f08c53e DevTools: remove the 'forced' attribute from the AgentHostClosed in DevToolsAgentHost.
https://chromium-review.googlesource.com/c/chromium/src/+/745301
2018-06-19 11:46:59 +10:00
deepak1556
bf620363b9 Devtools: Remove session_id in browser
https://chromium-review.googlesource.com/c/chromium/src/+/866213
2018-06-19 11:46:59 +10:00
deepak1556
f32e59d4b2 Update devtools_file_system_indexer
* Switch DevToolsFileSystemIndexer to use SequencedTaskRunner
  https://chromium-review.googlesource.com/c/chromium/src/+/545200
* Remove dead code from devtools_file_system_indexer.cc
  https://codereview.chromium.org/2508443002
* Fix DCHECKs and a crash in DevToolsFileSystemIndexer
  https://chromium-review.googlesource.com/c/chromium/src/+/553958
* reset trigram cache when devtools window closes
  https://chromium-review.googlesource.com/c/chromium/src/+/969969
* Directly use base::File instead of FileProxy in DevToolsFileSystemIndexer
  https://chromium-review.googlesource.com/c/chromium/src/+/544793
2018-06-19 11:46:59 +10:00
Aleksei Kuzmin
deb8cd458d Use latest libcc with Ch66 2018-06-19 11:46:59 +10:00
Aleksei Kuzmin
7c95100180 Rename ProxyService class to ProxyResolutionService
https://chromium-review.googlesource.com/857421
2018-06-19 11:46:59 +10:00
Aleksei Kuzmin
079e5df740 Adds ability for BrowserMainParts::PreEarlyInitialization() to fail
https://chromium-review.googlesource.com/862964
2018-06-19 11:46:59 +10:00
Aleksei Kuzmin
2f11870970 Update Chrome version 2018-06-19 11:46:59 +10:00
Aleksei Kuzmin
11b96c214d Use latest libcc with Ch66 2018-06-19 11:46:59 +10:00
Aleksei Kuzmin
cb604026d6 DevTools: move remote debugging hosted URL to single location.
https://chromium-review.googlesource.com/905983
2018-06-19 11:46:59 +10:00
Aleksei Kuzmin
8020cd9994 Use the same GOOGLE_PROTOBUF_* defines for "brightray" as for Electron 2018-06-19 11:46:59 +10:00
Aleksei Kuzmin
70cc5d87af ResourceBundle → ui::ResourceBundle
Fixes "error: use of undeclared identifier 'ResourceBundle';
did you mean 'ui::ResourceBundle'?".
2018-06-19 11:46:59 +10:00
Aleksei Kuzmin
408b62bcc2 Move net/proxy to net/proxy_resolution
https://chromium-review.googlesource.com/868176

Also includes changes from:
Rename files relating to PAC (proxy auto config).
https://chromium-review.googlesource.com/836927
2018-06-19 11:46:58 +10:00
Aleksei Kuzmin
5a2de2108e Add ".../third_party/protobuf/src" to the include_dirs list
Fixes "fatal error: 'google/protobuf/stubs/common.h' file not found".
2018-06-19 11:46:58 +10:00
Aleksei Kuzmin
c7691d8a40 Use latest libcc with Ch66 2018-06-19 11:46:58 +10:00
Aleksei Kuzmin
f5b68b8950 Update crashpad ref 2018-06-19 11:46:58 +10:00
Aleksei Kuzmin
260908cb06 Update Clang revision for Chromium 66
https://chromium.googlesource.com/chromium/src.git/+/66.0.3359.66/tools/clang/scripts/update.py#30
2018-06-19 11:46:58 +10:00
Aleksei Kuzmin
79010b9e06 Set CHROME_VERSION_STRING to 66.0.3359.66 2018-06-19 11:46:58 +10:00
Aleksei Kuzmin
06410202d0 Use latest libcc with Chromium 66.0.3359.66 2018-06-19 11:46:58 +10:00
Aleksei Kuzmin
0c0d31e13a Use the same Crashpad as Chromium 66.0.3359.66 2018-06-19 11:46:58 +10:00
Samuel Attard
17b5870ca1 Change node ref 2018-06-19 11:46:58 +10:00
Samuel Attard
72c7fe5e56 Bump chromium version 2018-06-19 11:46:58 +10:00
Samuel Attard
a9db673cdf Bump libcc 2018-06-19 11:46:58 +10:00
Zhuo Lu
ab24a1e36d feat: netLog API for dynamic logging control (#13068)
* Introduce `net.{start|stop}Logging()`

- Slight regression right now as Electron won't automatically start logging net-logs at launch, will soon be fixed
- To implement callback for async controls

* Add `net.isLogging` & optional callback param for `net.stopLogging()`

* Fix small regression on --log-net-log

--log-net-log should work again

* Error on empty file path

* Only start with valid file path

* Remove unused var

* Allow setting log file path before URLRequestContextGetter starts logging

* Add net log tests

* Remove redundant checks

* Use brightray::NetLog

* Clean up code

* Should automatically stop listening

* 🎨 Attempt to fix styles

* Only run non-null callback

* Dump file to tmpdir

* Simplify net log spec

Spawned Electron process on Linux CI can fail to launch

* Separate netLog module

* Remove net logging test from net spec

* Add tests for netLog

* Fix header guard

* Clean up code

* Add netLog.currentlyLoggingPath

* Callback with filepath

* Add test for case when only .stopLogging() is called

* Add docs

* Reintroduce error on invalid arg

* Update copyright

* Update error message

* Juggle file path string types
2018-06-19 11:45:58 +10:00
Shelley Vohr
adea26bd8f docs: update pr template with checklist (#13270)
This PR updates the Pull Request template so that contributors see a clearer checklist of items they need to complete in order to have a given PR reviewed and landed.
2018-06-18 13:58:30 -07:00
Shelley Vohr
b4cce8e240 spec: convert IAP and GC specs to expect (#13272)
* spec: convert IAP and GC specs to expect

* address review
2018-06-18 09:50:37 -07:00
Shelley Vohr
c65844a7d0 address review feedback 2018-06-18 08:56:24 -07:00
Zeke Sikelianos
994f613450 Merge pull request #13099 from electron/breaking-changes
docs: improve breaking API changes docs
2018-06-18 08:52:53 -07:00
Heilig Benedek
90911a423a Fix autofill popup position when the popup is spawned from a webview (#13184) 2018-06-18 10:15:37 -05:00
Shelley Vohr
314071d79f feedback from review 2018-06-18 08:12:54 -07:00
Shelley Vohr
fe94bf7c1d spec: convert dialog spec to expect (#13271) 2018-06-18 07:56:03 -07:00
John Kleinschmidt
78e199b5d7 Merge pull request #13187 from LostPlayer99/patch-1
docs: update bluetooth example
2018-06-18 09:16:54 -04:00
Cheng Zhao
a564744cd0 Merge pull request #13110 from electron/entry-and-button
feat: add TextField and Button APIs
2018-06-18 18:29:35 +09:00
Cheng Zhao
18dde0a0bd load all pak files on macOS 2018-06-18 16:51:36 +09:00
Cheng Zhao
a11182ca84 feat: add SetText for TextField 2018-06-18 16:51:36 +09:00
Cheng Zhao
70e17b5f8f feat: add LabelButton API 2018-06-18 16:51:36 +09:00
Cheng Zhao
c8e8cb86ce feat: add Button API 2018-06-18 16:51:36 +09:00
Cheng Zhao
ba3700141f feat: add TextField API 2018-06-18 16:51:36 +09:00
Milan Burda
2eb5b751f3 exit HTML fullscreen when window leaves fullscreen (#13090) 2018-06-18 16:48:20 +09:00
Milan Burda
28fd571d0c refactoring: use std::make_unique<T> (#13245) 2018-06-18 16:32:55 +09:00
Shelley Vohr
2c2e8317de spec: convert desktop capturer to expect 2018-06-17 16:00:28 -07:00
Shelley Vohr
4dec5ec5f9 spec: update browser-view spec to expect (#13238)
* spec: update browser-view spec to expect
2018-06-17 15:56:04 -07:00
Shelley Vohr
79c2d22c25 remove assert require 2018-06-17 15:37:16 -07:00
Shelley Vohr
8d5fc61c12 spec: update browser-window-affinity spec to expect (#13239)
* spec: update browser-window-affinity spec to expect

* final cleanup
2018-06-17 15:36:30 -07:00
Shelley Vohr
e023035393 spec: convert debugger spec to expect 2018-06-17 15:35:24 -07:00
Shelley Vohr
c5c571f8ec spec: update callback registry spec to expect (#13263)
* spec: update callback-reg-spec to sexpect

* remove stray only

* remove redundant assertions
2018-06-17 15:08:17 -07:00
Shelley Vohr
0ef0e69f03 spec: convert clipboard spec to use expect (#13266) 2018-06-17 14:47:51 -07:00
Shelley Vohr
a0d252870c spec: update auto-updater spec to expect (#13237)
* spec: update auto-updater to expect
2018-06-16 00:28:28 -07:00
Michael Khalil
ef1e2d6fe0 fix: tray title not inverting when highlighted (#13085) 2018-06-16 16:24:26 +10:00
az-chris
83dc8cc13b docs: update remote.md (#13229)
* Update remote.md

Addressing Issue #9421

* Minor copyediting
2018-06-16 16:21:07 +10:00
Vlad Hashimoto
a67c992c36 docs: fix broken link to commit message guidelines (#13233)
* docs: fix broken link  to commit message guidelines

* Fix another broken links
2018-06-15 19:43:03 -05:00
Felix Rieseberg
1647c12c73 📝 Make appUserModelId requirement clearer (#13259) 2018-06-15 19:32:19 -05:00
Milan Burda
c4942d931c Add FILE_DIALOG_TREAT_PACKAGE_APP_AS_DIRECTORY to web open file dialog (#13220) 2018-06-15 15:51:38 -05:00
Charles Kerr
2d15b8fe78 change c++ std from gnu++14 to c++14 (#13248) 2018-06-15 11:12:49 -05:00
John Kleinschmidt
fa79b40946 Merge pull request #13241 from electron/test-releases
spec: run tests on release builds
2018-06-14 15:14:02 -04:00
Shelley Vohr
91559191c9 spec: update app spec to assert (#13155)
* convert app spec from assert to expect and add dirty-chai
2018-06-14 09:44:27 -07:00
John Kleinschmidt
832b5a36fa Add slack notifications 2018-06-14 11:12:35 -04:00
John Kleinschmidt
38ebf5ac9f Run tests on release builds
Also, added ability to call VSTS release builds via API.
2018-06-14 09:42:55 -04:00
Alexey Kuzmin
6a59b37bea spec: better texts for the Crash Reporter tests (#13227)
* Better failure messages for a Crash Reporter test

* Add a TODO
2018-06-14 19:24:28 +10:00
Alexey Kuzmin
dee9aef975 Add "enable_desktop_capturer" build flag (#13133)
* Make it possible to disable a module for a renderer

* Put DesktopCapturer API under a build flag

The name is "enable_desktop_capturer".
Enabled by default.
2018-06-13 11:15:34 -05:00
Thiago de Arruda
6ff111a141 perf: don't use JSON to send the result of ipcRenderer.sendSync. (#8953)
* Don't use JSON to send the result of `ipcRenderer.sendSync`.

- Change the return type of AtomViewHostMsg_Message_Sync from `base::string16`
  to `base::ListValue`
- Adjust lib/browser/api/web-contents.js and /lib/renderer/api/ipc-renderer.js
  to wrap/unwrap return values to/from array, instead of
  serializing/deserializing JSON.

This change can greatly improve `ipcRenderer.sendSync` calls where the return
value contains Buffer instances, because those are converted to Array before
being serialized to JSON(which has no efficient way of representing byte
arrays).

A simple benchmark where remote.require('fs') was used to read a 16mb file got
at least 5x faster, not to mention it used a lot less memory.  This difference
tends increases with larger buffers.

* Don't base64 encode Buffers

* Don't allocate V8ValueConverter on the heap

* Replace hidden global.sandbox with NodeBindings::IsInitialized()

* Refactoring: check NodeBindings::IsInitialized() in V8ValueConverter

* Refactor problematic test to make it more reliable

* Add tests for NaN and Infinity
2018-06-13 17:38:31 +10:00
Mateus Silva
1b3cd01851 Doc: Delete unnecessary require and update flag name 2018-06-12 20:17:16 +01:00
John Kleinschmidt
fa1a5f2a42 Merge pull request #13215 from electron/add-space
chore: add space in TLS version check log
2018-06-11 09:35:20 -04:00
Samuel Attard
fc1469175b chore: add space in log 2018-06-11 18:23:59 +10:00
Milan Burda
6ad0a22602 Add process.getHeapStatistics() (#13183) 2018-06-10 22:00:36 +10:00
Mateus Silva
370d790776 Doc: Update bluetooth example
Update event select-bluetooth-device example documentation.
2018-06-07 20:29:20 +01:00
mdpetuum
1b8790aeb2 fix: tray icon bounds didn't allow negative macOS (#13162) 2018-06-07 18:48:39 +02:00
Charles Kerr
828545c128 Merge pull request #13142 from pravdomil/patch-1
docs: clarify docs
2018-06-03 09:58:05 +02:00
pravdomil
fd6eeed5c4 clarify docs 2018-06-02 20:41:19 +02:00
Charles Kerr
6301582e77 Merge pull request #13124 from nornagon/node-configure
refactor: [gn] Build node by calling ./configure
2018-06-01 20:39:23 +02:00
Alexey Kuzmin
0d5e98a201 Slightly rewrite <webview> tag tests (#13122) 2018-06-01 10:56:48 +02:00
Jeremy Apthorp
4321db401c Build node by calling ./configure 2018-05-31 11:18:26 -07:00
Charles Kerr
c7d1f95240 Merge branch 'master' into breaking-changes 2018-05-31 12:12:02 +02:00
John Kleinschmidt
1eddb5cf98 Merge pull request #13052 from electron/fix-vs2017-release
build: update copy_vcruntime_binaries for VS2017
2018-05-30 10:46:40 -04:00
Charles Kerr
b89fe86fa1 Merge pull request #13050 from electron/3.0.0-deprecations
chore: removal of 3.0.0 deprecations
2018-05-30 09:25:36 +02:00
Zeke Sikelianos
cb9ab213bb Merge pull request #13005 from nornagon/gn-docs
docs: dev instructions for GN build
2018-05-29 15:17:16 -07:00
Zeke Sikelianos
326e379154 Merge pull request #13103 from dsandler/patch-1
fix: link to macOS notifications HIG
2018-05-29 15:14:19 -07:00
John Kleinschmidt
8a15231475 Update copy_vcruntime_binaries for VS2017 2018-05-29 17:25:47 -04:00
Jeremy Apthorp
886230f64f Roll libchromiumcontent (#13105) 2018-05-29 13:07:14 -07:00
Charles Kerr
d907f43e6e Merge pull request #13101 from electron/deprecate-property
feat: add deprecate.property()
2018-05-29 12:09:32 -05:00
Shelley Vohr
d40cce92bf remove deprecated signature tests 2018-05-29 11:42:03 -04:00
Dan Sandler
442ec7113e Fix link to macOS notifications HIG 2018-05-29 11:16:26 -04:00
Shelley Vohr
2660859434 update signature for setCertificateVerifyProc in session spec 2018-05-29 10:54:27 -04:00
Charles Kerr
6935addd38 fix: remove unused variable 2018-05-29 16:14:21 +02:00
Charles Kerr
2275625e1a feat: warn if deprecated property is already set 2018-05-29 15:58:02 +02:00
Charles Kerr
61fac1bbc1 test: add tests for deprecate.property() 2018-05-29 15:40:48 +02:00
Charles Kerr
0a614217ce feat: re-add deprecate.property() 2018-05-29 15:40:19 +02:00
Charles Kerr
57cda797f3 docs: copyediting of breaking-changes.md
Tweak the phrasing of sections' introductions
2018-05-29 11:42:20 +02:00
Charles Kerr
b0f1b5f65b Modify 2.0 section's phrasing to use past tense 2018-05-29 11:37:42 +02:00
Charles Kerr
b621321ea0 Re-add missing section 2018-05-29 11:24:39 +02:00
Charles Kerr
066b92c7cd docs: re-document the 2.0 breaking API changes 2018-05-29 11:23:28 +02:00
Charles Kerr
57ad506cde Reorder the version sections newest-to-oldest
This puts 4.0 before 3.0, making room to re-add
the 2.0 changes back in at the end of the file.
2018-05-29 11:17:26 +02:00
Charles Kerr
7f64dbc1ba Make FIXME and API Contract their own H1 sections
Previously they were inside the 3.0 section,
which doesn't really make sense
2018-05-29 11:15:30 +02:00
Charles Kerr
e943cce125 docs: tweak phrasing 2018-05-29 11:10:23 +02:00
Charles Kerr
ac03b81624 docs: add breaking-changes to README 2018-05-29 11:08:49 +02:00
Charles Kerr
bb4979a82e docs: move breaking-changes to api 2018-05-29 11:06:56 +02:00
hkhere
0f1fcc3f4b docs: fix a typo in remote.md (#13084) 2018-05-29 03:14:06 -05:00
Maksym Dogadailo
562831ec1a fix tls script path in documentation (#13089) 2018-05-29 03:12:27 -05:00
Milan Burda
45e78728bd chore: move more constants to options_switches.h/cc (#13093)
* Add options::kNativeWindowOpen

* Add options::kSandbox

* Add options::kPlugins

* Add options::kWebSecurity

* Add options::kAllowRunningInsecureContent

* Add options::kOffscreen
2018-05-29 03:09:51 -05:00
Sven Hüster
ec44fb79d8 updated path to widevine libraries on windows (#13063) 2018-05-28 16:11:51 +09:00
Mikael Finstad
86fcdd0bae docs: Simplify loading of html in example (#13013)
* Simplify loading of html

See new api: https://github.com/electron/electron/pull/11565

* Update first-app.md

* Update first-app.md
2018-05-25 13:05:15 -07:00
Shelley Vohr
104fa96d4d fix options switch for kBlinkFeatures 2018-05-25 11:13:15 -07:00
Shelley Vohr
8bb7525fe0 fix missing instance of kBlinkFeatures => kEnableBlinkFeatures 2018-05-25 11:12:40 -07:00
Shelley Vohr
b7e245aba1 remove atom_api_screen_mac from filenames.gypi 2018-05-25 11:01:05 -07:00
Shelley Vohr
265aa3da29 docs: deprecate UploadFileSystem (#13064)
Deprecate UploadFileSystem in preparation for its being phased out completely in Chromium 66 and correspondingly Electron 4.0.0.
2018-05-25 10:50:27 -07:00
Shelley Vohr
5beadd90ee update electron-typescript-definitions to 1.3.5 2018-05-25 10:41:26 -07:00
Zhuo Lu
fd25f594cd Do not capture cookies and credentials (#13065) 2018-05-24 14:46:54 -07:00
John Kleinschmidt
01a9b32637 Merge pull request #13066 from barinali/fix/dock-link
fix: Update broken dock link in app doc
2018-05-24 16:06:38 -04:00
John Kleinschmidt
46ed623dad Merge pull request #13067 from electron/docs--fix-wrapping-of-welcome-comment
fix wrapping of welcome comment
2018-05-24 16:05:43 -04:00
Zeke Sikelianos
de30defb62 docs: fix wrapping of welcome comment 2018-05-24 12:25:46 -07:00
Ali BARIN
b0b31e67da fix: Update broken dock link in app doc 2018-05-24 21:21:08 +02:00
Jeremy Apthorp
8ea864d6eb docs: dev instructions for GN build 2018-05-24 11:46:35 -07:00
John Kleinschmidt
8bf7ec0c21 Merge pull request #13058 from electron/symserver-posix
Update upload symbols script for posix
2018-05-24 14:10:08 -04:00
Milan Burda
4cfe5ecaa4 add proper support for typed arrays in remote (#13055) 2018-05-24 21:05:46 +09:00
Cheng Zhao
a798a40026 Merge pull request #13044 from electron/more-view-apis
Add layout support for View API
2018-05-24 16:34:03 +09:00
Cheng Zhao
0f7c25fc63 Put View APIs under a build flag 2018-05-24 15:44:07 +09:00
Cheng Zhao
2c8dc9e0bd Add View.addChildView API 2018-05-24 15:36:29 +09:00
Cheng Zhao
322bde526c Add LayoutManager/BoxLayout APIs 2018-05-24 15:36:29 +09:00
Nitish Sakhawalkar
55c8aa7f1c Update upload symbols script for posix 2018-05-23 23:16:03 -07:00
Shelley Vohr
322a303683 address changes from review 2018-05-23 15:57:58 -07:00
Shelley Vohr
5f5322c64e rename blinkFeatures to enableBlinkFeatures 2018-05-23 14:01:34 -07:00
Shelley Vohr
bc10be3de6 rename exposed session method to setCertificateVerifyProc 2018-05-23 13:51:28 -07:00
Shelley Vohr
fb4a8e9cb9 remove ses.setCertificateVerifyProc() deprecation 2018-05-23 09:47:14 -07:00
Shelley Vohr
22fed0c798 remove nativeImage.createFromBuffer() deprecation 2018-05-23 09:43:58 -07:00
Shelley Vohr
94e825378c remove webFrame.registerURLSchemeAsSecure() deprecation 2018-05-23 09:33:57 -07:00
Shelley Vohr
4a90056462 remove webContents.openDevTools() deprecation 2018-05-23 09:30:15 -07:00
Shelley Vohr
3deffa859d remove appcommand media-play_pause option deprecation 2018-05-23 09:24:32 -07:00
Shelley Vohr
003a5a0160 remove tray.setHighlightMode() deprecation 2018-05-23 09:20:39 -07:00
Shelley Vohr
72c63a10ee remove screen.getMenuBarHeight() deprecation 2018-05-23 09:11:48 -07:00
Shelley Vohr
cc30f4c4fd remove crashReporter deprecation 2018-05-23 09:07:14 -07:00
Shelley Vohr
438ac61ff7 remove clipboard deprecations 2018-05-23 09:04:39 -07:00
John Kleinschmidt
b3edfd7d89 Merge pull request #13042 from electron/nightly-release-builds
Updated CI configs for nightly release builds
2018-05-23 10:49:23 -04:00
John Kleinschmidt
6dff60b899 Updated CI configs for nightly builds
Add timestamp to s3 uploads
2018-05-23 10:23:28 -04:00
Aleš Pergl
93bee69266 Remove command line argument black-list (#13039)
* Remove command line argument black-list

Instead block all arguments following a URL.

* Updated tests
2018-05-22 11:51:03 -05:00
John Kleinschmidt
c320da5ec8 Merge pull request #13030 from electron/miniak/member-init
Refactoring: use C++11 class member variable initialization
2018-05-22 10:34:12 -04:00
Shelley Vohr
560c0e72e6 Fix vulnerabilities both top-level and in spec (#13029)
* fix dependency vulnerabilities

* fix vulnerabilities in spec
2018-05-21 21:15:18 -07:00
Milan Burda
2337237d58 Refactoring: use C++11 class member variable initialization 2018-05-22 00:18:38 +02:00
John Kleinschmidt
ee57c95aa6 Merge pull request #12999 from electron/miniak/native-mate
Bump vendor/native_mate
2018-05-21 14:16:53 -04:00
John Kleinschmidt
42ec7b317f Add a tag to libchromiumcontent when a release is created. (#12977) 2018-05-21 13:03:23 -05:00
Thiago de Arruda
6f076f7433 Refactor sandbox preload initialization. (#12877)
Use a single synchronous IPC call to retrieve data required by early
sandbox scripts. This has two purposes:

- Optimize preload script initialization by:
  - Using one synchronous IPC call to retrieve preload script,
  webContentsId (more on that later), process.{platform,execPath,env}
  - Lazy loading as many modules as possible.
- Fix #12316 for sandbox. @MarshallOfSound addressed the issue in
  #12342, but it was still present in sandbox mode. By loading
  webContentsId very early and skipping remote module at early
  startup, we fix it for sandbox.
2018-05-21 22:56:05 +10:00
Cheng Zhao
ef7947d176 Merge pull request #12995 from electron/web-contents-view-tests
Fix crashes and add tests for View API
2018-05-21 14:36:53 +09:00
Cheng Zhao
595b0663b2 WebContents may be managed by multiple owners 2018-05-21 10:53:09 +09:00
Cheng Zhao
300c7a4b04 add tests for View and WebContentsView 2018-05-21 10:53:09 +09:00
Cheng Zhao
3b81312cf7 clear pointer when WebContents is closed 2018-05-21 10:53:09 +09:00
Cheng Zhao
51db1efb8a prevent double-adding a WebContents to view 2018-05-21 10:53:09 +09:00
Cheng Zhao
aeeb2a259f destruct objects in stack order 2018-05-21 10:53:09 +09:00
Cheng Zhao
fd4a0626c5 destroy WebContents when view is destroyed 2018-05-21 10:53:08 +09:00
htk3
7c2303c758 Correct app-command name of APPCOMMAND_MEDIA_PLAY_PAUSE (#12408)
* correct app-command name

* add compatibility with old app-command name

* add temporary compatibility with old app-command name

* add a comment saying that media-play_pause is deprecated

* fix lint
2018-05-21 10:52:04 +09:00
Nitish Sakhawalkar
b842a4b133 update mac symbol dump (#12982)
* Update mac symbol dump

Update posix generate_breakpad_symbols.py file to use argparse instead of deprecated optparse.
Also, make changes to the posix generate_breakpad_symbols.py file to accept multiple binaries.
And update dump-symbols.py to get symbols for the mac helper app as well.

* Changes to appease the linter
2018-05-21 10:01:17 +09:00
Milan Burda
7c19ae302e replace isEventEmitter with instanceof EventEmitter (rpc-server) (#12998) 2018-05-21 10:00:56 +09:00
Heilig Benedek
8b2bffcf9e Only expand maximum size constraint if there was a constraint originally (#13003) 2018-05-21 10:56:45 +10:00
Jeremy Apthorp
156a97b80d fix: Menu.setApplicationMenu(null) crash on Linux (#12983) 2018-05-18 10:29:28 -07:00
Milan Burda
a0a5e4abb2 Bump vendor/native_mate 2018-05-18 16:30:20 +02:00
John Kleinschmidt
91173320e6 Merge pull request #12987 from electron/fix-arm-release-build
Fix ARM Release build
2018-05-18 08:17:06 -04:00
Felix Rieseberg
f087f8e205 docs: Document missing quit events during shutdown (#12986)
* docs: Document missing events during shutdown
2018-05-18 07:27:44 -04:00
John Kleinschmidt
7177e941eb Merge pull request #12993 from electron/electron-download-4.x
feat: upgrade electron-download to 4.x
2018-05-18 07:20:42 -04:00
John Kleinschmidt
3fbc3869dc Merge pull request #12991 from electron/drop-arm-alias-builds
build: don't upload aliased arm builds anymore
2018-05-18 07:19:17 -04:00
Mark Lee
cda13e5e79 feat: upgrade electron-download to 4.x
This is a breaking change, as it causes the `electron` module to require
Node 4.x (which has been EOL'd anyway).

Upgrading adds features such as a customizable cache location (via the
`ELECTRON_CACHE` environment variable).

Originally merged in https://github.com/electron/electron/pull/10922 but
was reverted because it was going into a version of Electron that did
not allow breaking changes.
2018-05-17 23:16:27 -07:00
Mark Lee
022ffe69e0 Don't upload aliased arm builds anymore
They are literally a copy/paste of the armv7l builds, and have been
deprecated ever since they were renamed 2 years ago.
2018-05-17 22:22:46 -07:00
Milan Burda
5a5eb43359 detect EventEmitter in removeRemoteListenersAndLogWarning (#12975) 2018-05-18 11:09:25 +09:00
Cheng Zhao
5f461cd5cd fix release build on arm 2018-05-18 10:50:31 +09:00
Milan Burda
850051463b don't use native_mate/compat.h macros (#12984) 2018-05-18 09:08:28 +09:00
Cheng Zhao
ddec87224c Merge pull request #34 from electron/remove-compat
Remove native_mate/compat.h
2018-05-18 09:07:24 +09:00
Milan Burda
d7b8cce162 Remove native_mate/compat.h 2018-05-17 23:39:40 +02:00
Shelley Vohr
83993fede8 update locale documentation (#12967) 2018-05-17 10:34:54 -07:00
Zhuo Lu
d2653e8192 Fix: Prevent menu update while it's open (#12809)
* Update application menu on default runloop

Menu change should be prevented while the menu is open

* Fix code style

* Memory safety
2018-05-17 11:19:28 +10:00
Shelley Vohr
f068ed9ee7 fix docs formatting for ts defs (#12968) 2018-05-16 14:59:44 -07:00
Felix Rieseberg
e8735cc005 docs: Document Python TLS requirements (#12276)
* 🔧 Add simple test script

* 📝 Add documentation

* 🔧 It works, use it

* 🔧 Make the linter happy

* 🔧 Check on bootstrap

* Trivial copyediting

s/operation system/operating system/
2018-05-16 14:19:49 -07:00
Jeremy Apthorp
b160093b91 refactor: GN builds on linux (#12957) 2018-05-16 12:51:11 -07:00
Jeremy Apthorp
da0fd10423 refactor: chromium-style warnings in linux code (#12949) 2018-05-16 14:12:45 -05:00
Mod John
2a161e1725 Fix broken link (#12387)
* Fix broken link

Link was producing a 404 error as the file no longer exists. Wasn't sure where this intended link used to go so took a guess at a appropriate target.

* Update quick-start.md
2018-05-16 10:23:46 -07:00
John Kleinschmidt
04855bc499 Merge pull request #12921 from electron/commit-package-lock
Add package-lock.json
2018-05-16 11:47:21 -04:00
John Kleinschmidt
2b26206ea2 Merge pull request #12844 from didrocks/fix-communitheme-session
fix: support multiple inherited ubuntu session for indicators
2018-05-16 11:44:04 -04:00
John Kleinschmidt
9488ef4867 Merge pull request #12496 from mikeykhalil/8952-ignore-tray-double-click-events
8952 option to ignore tray double click events
2018-05-16 10:17:36 -04:00
John Kleinschmidt
e1c374de6e Merge pull request #12954 from electron/web-dialog-helper
Fix empty description when only one extension is given (GetFileTypesFromAcceptType)
2018-05-16 10:15:54 -04:00
Didier Roche
6feec2e2a5 Fix linting error
Thx @MarshallOfSound
2018-05-16 14:34:13 +02:00
Milan Burda
211d7825d3 feat: DIP <-> screen coordinate conversions (#12879) 2018-05-16 18:34:09 +09:00
Milan Burda
9d9d6ca20b Fix empty description when only one extension is given 2018-05-16 01:58:58 +02:00
Jeremy Apthorp
73eb5af2cc refactor: remove unnecessary std::moves in linux code (#12951)
The compiler was complaining that the move was preventing copy elision.
2018-05-15 14:33:47 -07:00
Jeremy Apthorp
8fa48d1c04 fix: unused variable warnings in linux code (#12950) 2018-05-15 13:49:27 -05:00
Jeremy Apthorp
c4134c3516 refactor: breakpad #includes to work with GN and GYP (#12953) 2018-05-15 11:33:19 -07:00
Jeremy Apthorp
136105e353 fix: wrong list index type in file_dialog_gtk.cc (#12952) 2018-05-15 13:22:52 -05:00
Jeremy Apthorp
0fb6dc79d8 Merge pull request #12948 from nornagon/node-config
[gn] Include node/common.gypi when building node
2018-05-15 10:42:29 -07:00
Jeremy Apthorp
7a36322432 [gn] Include node/common.gypi when building node
Not sure how this ever worked, but the GN build certainly doesn't work
on Linux without this.
2018-05-15 09:53:24 -07:00
Milan Burda
6a4d9309b2 Remove unnecessary heap allocations of atom::V8ValueConverter instances (#12924) 2018-05-15 09:21:23 -05:00
Cheng Zhao
9fc6b9dda2 Merge pull request #12858 from electron/api-view
Refactor NativeWindow (Part 13): Add View and WebContentsView APIs
2018-05-15 22:05:27 +09:00
Cheng Zhao
2f3fcb9dbe give window a default content view
Certain APIs are expecting the window to have a content view, having a
default one simplifies our design.
2018-05-15 14:12:47 +09:00
Cheng Zhao
ea97f43145 check content view in SetMenuBarVisibility 2018-05-15 14:12:47 +09:00
Cheng Zhao
bb2715e7a5 feat: add TopLevelWindow.setContentView API 2018-05-15 14:12:47 +09:00
Cheng Zhao
2b24b26e59 refactor: do not pass WebContents to NativeWindow 2018-05-15 14:03:21 +09:00
Cheng Zhao
640877ebf8 attach native view after widget is created 2018-05-15 14:03:21 +09:00
Cheng Zhao
5a320222e2 feat: add WebContentsView API 2018-05-15 14:03:21 +09:00
Cheng Zhao
e058d11657 feat: add View API 2018-05-15 14:03:21 +09:00
Cheng Zhao
874af5c982 Merge pull request #12837 from nornagon/build-gn
GN build
2018-05-15 14:02:51 +09:00
Milan Burda
56cdf94f95 Fix contents.setSize(options) documentation in web-contents.md (#12922) 2018-05-15 10:17:04 +10:00
Alexey Kuzmin
fc34076c2b Refactor <webview> tag tests (#12886) 2018-05-14 17:00:49 -05:00
John Kleinschmidt
cc2cd95ec5 Release updates in prep for 3-0-x releases (#12916)
* Add autorelease logic

* Fix UnboundLocalError when using s3 upload
2018-05-14 16:21:51 -05:00
Thiago de Arruda
54a506c8eb Add package-lock.json
In order to have 100% reproducible builds, Electron needs
package-lock.json. This is necessary because some dependencies affect
the build output (browserify for example, is used to generate the common
js environment for sandboxed renderers).
2018-05-14 15:23:52 -03:00
Alexey Kuzmin
d5dfb19508 Update some tests (#12917)
* Use Chai for webview tests

* Slightly rewrite one of the <webview> tests

"dom-ready event" > "throws a custom error..."

* Use Chai for BrowserWindow tests

* Rewrite BrowserWindow.addDevToolsExtension tests
2018-05-14 13:17:31 -05:00
John Kleinschmidt
fe7947da90 Merge pull request #12805 from electron/update-blacklist-switches
update command-line backlist switches
2018-05-14 13:31:26 -04:00
John Kleinschmidt
14f4108e55 Merge pull request #12912 from chicoxyzzy/patch-1
Update installation instructions
2018-05-14 13:30:49 -04:00
John Kleinschmidt
6248aaf8dd Merge pull request #12913 from electron/update-libcc-ref
Update vendor/libchromiumcontent ref
2018-05-14 10:50:27 -04:00
John Kleinschmidt
0fd8513c80 Merge pull request #12904 from electron/fix-12875
Allow frameless transparent windows to be sized smaller than 64x64 on Windows
2018-05-14 10:46:40 -04:00
Aleksei Kuzmin
aec3c3fb66 Update vendor/libchromiumcontent ref 2018-05-14 14:18:58 +02:00
Sergey Rubanov
5d3692c16f Update installation instructions 2018-05-14 14:06:22 +03:00
Didier Roche
5df0fd9dc8 fix: more scalable code by factorizing appindicator support
- introduce a currentPlatformSupportsAppIndicator() function determining
  if app indicators are supported here.
- handle undefined process.env.XDG_CURRENT_DESKTOP
- added some comments to ensure that the intents are clear
Thanks MarshallOfSound
2018-05-14 11:00:41 +02:00
Heilig Benedek
ce8af7d499 #else instead of #elif 2018-05-12 22:05:25 +02:00
Heilig Benedek
c6bf39b283 Only include windows headers on windows 2018-05-12 21:33:47 +02:00
Heilig Benedek
f1fd457411 Format code with clang-format 2018-05-12 19:51:19 +02:00
Heilig Benedek
eae0674f61 Match chromium's workaround when setting size of unresizable windows 2018-05-12 17:37:31 +02:00
Samuel Attard
0bb29e092d fix: update docs for the ts parser (#12902) 2018-05-12 18:12:28 +10:00
John Kleinschmidt
bbba9ff906 Merge pull request #12900 from electron/make-httpReferrer-docs-consistent
fix broken doc errors
2018-05-11 14:57:22 -04:00
Charles Kerr
c2282ce4bd remove accidentally-commited changes 2018-05-11 13:33:27 -05:00
Charles Kerr
5354e804d0 Fix oops: remove duplicate doc from last commit 2018-05-11 13:27:35 -05:00
Charles Kerr
bdae243552 Reinstate docs for app.makeSingleInstance()
Since this method is mentioned in breaking-changes.md, we need
the docs to prevent create-typescript-definitions from failing with
"error TS2339: Property 'makeSingleInstance' does not exist on type 'App'."

The reinstated docs are marked with deprecation warnings
that refer the reader to the new API calls.
2018-05-11 13:17:11 -05:00
John Kleinschmidt
8a69a09868 Merge pull request #12896 from electron/remove-chai-as-promised-from-top-level-package-json
Remove chai-as-promised from the top-level package.json
2018-05-11 14:13:03 -04:00
Charles Kerr
13877ce2c8 Fix routingId type
Previous phrasing confused electron-typescript-definitions,
thinking that routingId was of type `unique` 😃
2018-05-11 13:05:05 -05:00
Charles Kerr
8acbfca06b Make Referrer.policy types parseable by e-t-d 2018-05-11 12:40:46 -05:00
Charles Kerr
cf6d36cb72 Consistent docs for LoadURLOptions.httpReferrer 2018-05-11 12:18:38 -05:00
John Kleinschmidt
e79751c8d4 Merge pull request #12892 from electron/skip_pdf_resource
build: don't ship pdf_viewer_resources.pak when feature flag is disabled
2018-05-11 11:46:45 -04:00
Charles Kerr
2c87dfef8a add fs-extra devDependency to spec 2018-05-11 10:36:25 -05:00
Aleksei Kuzmin
8f7a0ca90c Remove chai-as-promised from the top-level package.json
It's a tests dependency and its already present in spec/package.json.
2018-05-11 18:11:46 +03:00
deepak1556
3c76cc21ec build: don't ship pdf_viewer_resources.pak when feature flag is disabled 2018-05-11 16:00:43 +05:30
Jeremy Apthorp
9aa18d29a5 Merge pull request #12885 from nornagon/is-desktop-unity
Don't declare IsDesktopEnvironmentUnity on non-Linux
2018-05-10 14:41:29 -07:00
Jeremy Apthorp
cc386f2345 Merge pull request #12884 from nornagon/views-defines
Require !OS_MACOSX as well as TOOLKIT_VIEWS for views code
2018-05-10 14:13:19 -07:00
Jeremy Apthorp
72057bf7ef clang-format atom_api_web_contents.cc 2018-05-10 14:11:19 -07:00
Jeremy Apthorp
87d0175c76 Require !OS_MACOSX as well as TOOLKIT_VIEWS for views code 2018-05-10 14:11:19 -07:00
Jeremy Apthorp
3090550e53 Merge pull request #12882 from nornagon/gn-includes
Fix up #includes to work with both GYP and GN
2018-05-10 14:10:12 -07:00
Jeremy Apthorp
f2b1b3f6b8 Add GN build 2018-05-10 14:03:02 -07:00
Jeremy Apthorp
26f5390ac0 Don't declare IsDesktopEnvironmentUnity on non-Linux 2018-05-10 13:59:48 -07:00
Jeremy Apthorp
73ac019882 Fix up #includes to work with both GYP and GN 2018-05-10 13:38:40 -07:00
Zeke Sikelianos
1cc5492784 Merge pull request #12870 from electron/remove-macci-refs
Remove references to no longer used https://mac-ci.electronjs.org
2018-05-09 22:25:57 -07:00
John Kleinschmidt
fd8e330760 Remove references to no longer used https://mac-ci.electronjs.org 2018-05-09 16:41:24 -04:00
Shelley Vohr
daf75dd375 add app.isPackaged (#12656)
* add isPackaged method

* add false test case for app.isPackaged()

* document add.isPackaged()

* check isPackaged() without fs call

* convert to non-method property

* document app.isPackaged as a property

* update tests for app.isPackaged

* remove unused fs require

* clarify docs for isPackaged()
2018-05-07 23:15:31 -07:00
Charles Kerr
4d078fdb03 Remove more words (#12852)
* remove 'basically' from docs

* remove 'simply' from docs

* remove most uses of 'just' from docs
2018-05-08 00:16:09 -05:00
biuuu
86d023b02f fix: listeners out of limit warning (#12841)
When the Chrome Extension has too many content scripts (above default
10 counts), there will be a warning: possible EventEmitter memory leak
detected. 11 listeners added.
2018-05-08 14:10:11 +09:00
John Kleinschmidt
c13d1e8ae6 Merge pull request #12847 from electron/friendly-docs
Remove judgmental docs terms
2018-05-07 12:41:17 -04:00
Shelley Vohr
82dd5fee12 Update issue templates (#12848)
Move to prescribed templates for bugs and features
2018-05-07 09:30:44 -07:00
John Kleinschmidt
428f10f9ee Merge pull request #12532 from electron/native-arm-mksnapshot
Add native arm/arm64 mksnapshot
2018-05-07 11:48:53 -04:00
Shelley Vohr
52e3d5e4f0 remove some beginner-unfriendly terms from docs 2018-05-07 08:46:14 -07:00
Samuel Attard
5b5c161601 feat: new makeSingleInstance API (#12782)
* Refactor app.makeSingleInstance
* new API `app.isPrimaryInstance()`
* new API `app.isSingleInstance()`
* new event `app.on('second-instance')`
* deprecated old syntax `app.makeSingleInstance(cb)`
* deprecated old syntax of `app.makeSingleInstance() --> bool` in favor
of `app.isPrimaryInstance()`
* Fix spec, we don't need process.nextTick hacks any more
* Make deprecation TODO for the return value of makeSingleInstance
* Refactor makeSingleInstance to requestSingleInstanceLock and add appropriate deprecation comments
* I swear this isn't tricking the linter
* Make const
* Add deprecation warnings for release, and add to planned-breaking-changes

BREAKING CHANGE
2018-05-08 01:29:18 +10:00
Didier Roche
811ae1a936 Support multiple inherited ubuntu session for indicators
Multiple sessions inherits the "ubuntu" base settings properties in ubuntu.
One of the most popular one is communitheme: the next ubuntu default theme
has its dedicated session, with thus duplicated indicators for dropbox.
Rather than a string comparison for ubuntu, only match a substring then.
XDG_CURRENT_DESKTOP can be of form: "communitheme:ubuntu:GNOME",
"ubuntu:GNOME", …
Fixes: #12843.
2018-05-07 11:49:37 +02:00
Shelley Vohr
9c8952aef0 Add menu item order control (#12362)
Add four new optional properties to menus in Electron. The four properties are:
'before'
'after'
'beforeGroupContaining'
'afterGroupContaining'

'before/after' - provides a means for a single context menu item to declare its placement relative to another context menu item. These also imply that menu item in question should be placed in the same “group” as the item.

'beforeGroupContaining/afterGroupContaining - provides a means for a single menu item to declare the placement of its containing group, relative to the containing group of the specified item.
2018-05-05 09:37:29 -07:00
Jeremy Apthorp
118da36b52 Send document-start/end to the right context when contextIsolation=true (#12738) 2018-05-04 23:39:54 -07:00
John Kleinschmidt
022b6973b2 Merge pull request #12836 from electron/revert-12833-update-templates
Revert "Update issue templates"
2018-05-04 17:17:40 -04:00
Shelley Vohr
7aa101ba8b Revert "Update issue templates (#12833)"
This reverts commit dac584f7d6.
2018-05-04 13:54:07 -07:00
Shelley Vohr
dac584f7d6 Update issue templates (#12833)
Move to prescribed templates for bugs and features
2018-05-04 13:51:12 -07:00
Milan Burda
48fe013549 Expose events (EventEmitter) to sandboxed renderer (#12828) 2018-05-04 09:51:32 -07:00
Shelley Vohr
f67c625e6a don't filter out invisible menu separators (#12825) 2018-05-04 07:59:40 -07:00
Jeremy Apthorp
b280ea5579 chromium-style fixes (#12826) 2018-05-03 23:45:12 -07:00
Cheng Zhao
7be30bb249 Merge pull request #12787 from electron/mac-content-view
Refactor NativeWindow (Part 12): Do not use custom content view on macOS
2018-05-04 12:48:15 +09:00
Milan Burda
9b56ca3961 Fix optimizeSimpleObject for arrays of objects (#12815) 2018-05-03 22:34:30 -05:00
Cheng Zhao
a2c3db666e viewDidMoveToSuperview may not be implemented 2018-05-04 09:55:09 +09:00
Cheng Zhao
5547df6073 report correct content size in AtomNSWindow
The views framework relies on NSWindow to return content size of window,
since we don't use the borderless window, the original result would
include titlebar. We have to override the function to return correct
result for frameless window.
2018-05-04 09:55:09 +09:00
Cheng Zhao
28fc58067b remove usage of FullSizeContentView 2018-05-04 09:55:09 +09:00
Cheng Zhao
a9709a635c display WebContents as views::View on macOS 2018-05-04 09:55:09 +09:00
Cheng Zhao
ada884a129 refactor: setup contentView on initialization 2018-05-04 09:55:09 +09:00
mikeykhalil
3aba515bbc update docs for getIgnoreDoubleClickEvents method 2018-05-03 13:49:33 -07:00
mikeykhalil
94ffd4bfc0 add getter for ignoreDoubleClickEvents field 2018-05-03 13:49:33 -07:00
mikeykhalil
208374afa4 clean up ignore double click event implementation 2018-05-03 13:49:33 -07:00
mikeykhalil
664e14b91f fixed typo found in code review 2018-05-03 13:49:32 -07:00
mikeykhalil
e1dcd79e48 updated Tray API docs to include new setIgnoreDoubleClickEvents method 2018-05-03 13:49:32 -07:00
mikeykhalil
1f29124d11 updated Tray API to ignore double click events on macOS (#8952) 2018-05-03 13:49:32 -07:00
Zeke Sikelianos
a08b4f780c Merge pull request #12822 from stephanwlee/stephanwlee-patch-1
Fix the type information in in-app-purchase.md
2018-05-03 10:05:00 -07:00
Stephan Lee
6646ef71da docs: fix the type information in in-app-purchase
Method returns Boolean, Manually confirmed the
correctness by running `npm run create-api-json`.
2018-05-03 09:34:21 -07:00
Alexey Kuzmin
3fd0ec99ae Better OSR tests (#12817)
* Add features.isOffscreenRenderingEnabled()

* Use .isOffscreenRenderingEnabled() to determine if OSR is available

* Add a helper closeTheWindow() function

* Skip OSR tests if they are disabled
2018-05-03 11:10:25 -05:00
Charles Kerr
0a2dc1efb0 fix: lint is a devDependency, not a dependency (#12818) 2018-05-03 08:43:40 -07:00
Jeremy Apthorp
cdc5022305 Fix chromium-style errors (#12802) 2018-05-03 09:04:22 -05:00
Rahat Ahmed
5ba9f6a966 docs: Fix typo in transaction.md (#12804) 2018-05-03 00:01:49 -05:00
David Chawei Hsu
091ddb3c34 Fixed several broken links to the sections (#12797) 2018-05-02 21:51:37 -05:00
Charles Kerr
1b8b73ce71 update command-line backlist switches
part of the diff comes from the fact that we've bumped
to a new version of libcc.

another part comes from adding network_switch_list.h, whose
switch definitions follow a slightly different format.
2018-05-02 20:58:22 -05:00
Tim Fish
82329124ff Fixes #12710 (#12786) 2018-05-02 12:19:52 -04:00
Zeke Sikelianos
36c4519d7e Merge pull request #12781 from electron/more-code-signing
More code signing docs
2018-05-02 08:39:03 -07:00
Charles Kerr
c81dac774a Fix some broken documentation links (#12794) 2018-05-02 10:33:07 -05:00
Zeke Sikelianos
1957eb9429 summarize semantic commit requirements (#12665)
* summarize semantic commit requirements

* move semantic commit details into contributing docs

* keep those messages short
2018-05-02 09:47:26 -05:00
Samuel Attard
63d670c286 explain platform differences in code signing 2018-05-02 11:52:52 +10:00
Samuel Attard
94e6be6cae more code signing docs 2018-05-02 11:12:15 +10:00
Zeke Sikelianos
f1c7df8c28 add code signing tutorial (#12767)
* docs: add code signing tutorial

* docs: link to code signing tutorial from readme

* docs: remove unneeded use of "application" from docs readme
2018-05-01 19:56:44 -05:00
Jeremy Apthorp
78ab97ab04 Fix crash when releasing a script context that never had node injected (#12741) 2018-05-01 20:00:46 -04:00
John Kleinschmidt
d355bf0267 Merge pull request #12756 from electron/support-policy
Support policy
2018-05-01 15:40:55 -04:00
Charles Kerr
2cecc6ec2c Remove text about ia32 emulator 2018-05-01 14:31:01 -05:00
Charles Kerr
49cab41fdf Tweak ARM support with suggestion from jkleinsc 2018-05-01 14:25:18 -05:00
Charles Kerr
b0a8d825b3 Clarify the text on Windows for ARM support 2018-05-01 13:40:21 -05:00
Charles Kerr
af60a2fdf6 Add placeholder for supported-platforms.md 2018-05-01 13:32:11 -05:00
Charles Kerr
b602714e06 Use correct Slack channel name 2018-05-01 13:31:48 -05:00
Zeke Sikelianos
013a28a527 Merge pull request #12736 from electron/update-updates-tutorial
document update.electronjs.org in updates tutorial
2018-05-01 09:17:37 -07:00
Cheng Zhao
d46aa92f0b make security-warnings tests more robust (#12757) 2018-05-01 14:28:55 +09:00
bughit
55a7f6f0ce add did-frame-navigate event to WebContents (#12723)
* add did-frame-navigate event to WebContents, pass http response code to it and did-navigate

* docs for frame routing id related api changes on WebFrame and WebContents
2018-05-01 13:34:41 +09:00
Cheng Zhao
c67d1b62e3 refactor: NativeWindowViews should not be a View (#12750) 2018-05-01 13:28:22 +09:00
Cheng Zhao
e00b128a50 fix flaky security-warnings test (#12749) 2018-05-01 09:49:45 +09:00
Charles Kerr
400fb79dc2 Fix tyop 2018-04-30 18:36:17 -05:00
Charles Kerr
7c5b70d304 Fix broken link 2018-04-30 18:33:40 -05:00
Charles Kerr
221b103721 Finish consolidating the finding-support section 2018-04-30 18:26:08 -05:00
Charles Kerr
c0dc2d0238 Copyedit the 'finding support' section 2018-04-30 18:11:10 -05:00
Charles Kerr
37a68aebcf Link issues.md back to support.md 2018-04-30 18:06:29 -05:00
Charles Kerr
a332930cdf add 'finding support' section 2018-04-30 17:58:19 -05:00
Charles Kerr
e44b62d5a3 copyediting 2018-04-30 17:17:42 -05:00
Charles Kerr
d76b0223d9 add end-of-support policy 2018-04-30 17:16:15 -05:00
Samuel Attard
338a816ffd Screen Lock / Unlock events (#12714)
* initial lock-screen and unlock-screen event implementation for macOS

* Implementation of lock-screen and unlock-screen on windows
2018-05-01 02:04:27 +10:00
Samuel Attard
c1381ac598 Add sccache option to bootstrap (#12582)
* Add sccache option to bootstrap

Couldn't see a CC wrapper style option for gyp so we inject the sccache commands directly into the generated ninja files.

* Use CC_wrapper

* Update toolchain.gypi

* s/sccache/cc_wrapper
2018-05-01 01:03:43 +10:00
Cheng Zhao
51b7322a0f Merge pull request #12716 from electron/share-more-window-code
Refactor NativeWindow (Part 10): Share more code between NativeWindow implementations
2018-04-30 15:24:38 +09:00
Samuel Attard
b90ff86f8c Add missing chai-as-promised dep (#12746) 2018-04-29 22:46:29 -04:00
Cheng Zhao
089428857c remove unnecessary defines 2018-04-30 10:56:54 +09:00
Cheng Zhao
e07ea24610 remove unnecessary static_cast 2018-04-30 10:56:54 +09:00
Cheng Zhao
2225cc9608 refactor: manage widget_ in NativeWindow 2018-04-30 10:56:54 +09:00
Cheng Zhao
727cd68cee refactor: Use widget() instead of window_ 2018-04-30 10:56:54 +09:00
Cheng Zhao
6d18bd0633 refactor: Make NativeWindow inherit WidgetDelegate 2018-04-30 10:56:54 +09:00
Shelley Vohr
ee2c3607ad fix patch output filename (#12742) 2018-04-27 21:43:04 -04:00
Zeke Sikelianos
21ffcbddad document update.electronjs.org in updates tutorial 2018-04-27 10:49:42 -07:00
Shelley Vohr
21e5a2e071 Add clang-format script and precommit hook (#12651)
* add second arg to hook

* fix clang-format script

* remove format script

* help

* first pass at only checking formatting for changed files

* ensure clang-format only runs against changes

* add quiet option for print output

* fix script outputs for clang-format

* wrap conditional for exit error

* remove cpplint include ordering from brightray

* fix python style errors

* add clang-format to linting

* fix var error and add mm extension

* fix diff checking for commit hook

* show incorrectly formatted lines when linting fails

* don't try to check formatting for deleted files
2018-04-27 13:01:12 -04:00
Cheng Zhao
4cd7d11391 Merge pull request #33 from nornagon/build-gn
Don't copy things in Dictionary::Set
2018-04-27 08:41:09 +09:00
Zeke Sikelianos
cc98bd6b6d Merge pull request #12662 from electron/prevent-default
Stop overwriting prevent_default if default wasn't prevented
2018-04-26 12:12:18 -07:00
Jeremy Apthorp
dd7e0f80fe Turn off visual zoom by default (#12679) 2018-04-26 10:27:35 -05:00
Jeremy Apthorp
1a64b9f0c2 Disable navigating on drag/drop (#12655)
* Disable navigating on drag/drop

* Add a WebPreferences option to re-enable navigate on drag/drop
2018-04-26 10:23:27 -05:00
bughit
4fcd178c36 expose WebFrame#routingId (#12614)
* expose WebFrame#routingId and pass it to WebContents frame specific events along with frameProcessId; add WebContets.did-start-navigation event
* fix compilation error on ia32 Windows
2018-04-26 19:17:55 +09:00
Cheng Zhao
152422af81 Merge pull request #12696 from electron/mac-use-widget
Refactor NativeWindow (Part 9): Use views::Widget on macOS
2018-04-26 15:49:49 +09:00
Cheng Zhao
cf70267871 remove unnecessary overrides 2018-04-26 09:48:12 +09:00
Jeremy Apthorp
7733b87431 Don't copy things on Dictionary::Set 2018-04-25 15:18:27 -07:00
Cheng Zhao
5e48dd9d45 be aware of views::Widget's layer 2018-04-25 15:10:29 +09:00
Cheng Zhao
39242c978f fix failed BrowserWindow tests 2018-04-25 15:10:29 +09:00
Cheng Zhao
75a624434c refactor: use views::Widget on macOS 2018-04-25 15:10:29 +09:00
Shelley Vohr
7c4964fae6 revert to more graceful template structure check (#12699) 2018-04-24 11:21:26 -04:00
Tatsuya Hiroishi
9c65abd746 handle remote exception (#12694)
* add cause property to exception in callFunction

* update exceptionToMeta function

* add sender argument
* and cause property to return value

* update exception convert in metaToValue function

* add from and cause properties to the exception error

* unit test for remote exception
2018-04-24 08:40:19 -04:00
Nitish Sakhawalkar
2579071b98 Deprecate did-get-response-details and did-get-redirect-request (#12615)
* Deprecate webContents events did-get-response-details and did-get-redirect-request.

* Update guest view files

* Update webview tag docs and update specs

* Update deprecate.event function

* Update comment

* Update more

* Update documentation for other deprecated event
2018-04-23 14:46:12 -05:00
Leo MG Nesfield (LMGN)
975964f9f0 Not required. (#12682)
VS Code automatically executes from the `windows` object on win32.
2018-04-23 11:13:46 -05:00
James Wheare
bf2b4814e0 [docs] app.isDefaultProtocolClient is available on Linux now (#12674) 2018-04-23 01:16:43 +10:00
Shelley Vohr
12a57ff1c2 clang-format objc files (#12673) 2018-04-20 11:47:04 -07:00
Paul Frazee
94236bf4eb Create automated-testing-with-a-custom-driver.md (#12446)
* Create automated-testing-with-a-custom-driver.md

* Update automated-testing-with-a-custom-driver.md

* Add 'Automated Testing with Custom Driver' to ToC

* Update automated-testing-with-a-custom-driver.md
2018-04-20 12:39:13 -04:00
Shelley Vohr
f9ee24f8f0 Merge pull request #12627 from vijaypushkin/patch-1
Corrected the name of Capitalization Styles
2018-04-20 09:49:28 -04:00
Cheng Zhao
28b85762fd Merge pull request #12660 from electron/mac-views
Refactor NativeWindow (Part 8): Prepare work for using views::Widget on macOS
2018-04-20 21:31:28 +09:00
Robo
ff571f3b5d Part I: Move from base::Bind to base::BindOnce and remove unneeded base::Passed (#12661) 2018-04-20 19:55:05 +09:00
Cheng Zhao
aa5c80f8a6 Fix new clang warnings 2018-04-20 19:26:20 +09:00
Cheng Zhao
c44279bb10 Move AtomNSWindow to a new file 2018-04-20 19:26:20 +09:00
Cheng Zhao
569967ac21 Move QLPreviewPanelDataSource to AtomNSWindowDelegate 2018-04-20 19:17:08 +09:00
Cheng Zhao
f6a7e5ea23 Move NSTouchBarDelegate to AtomNSWindowDelegate 2018-04-20 19:15:45 +09:00
Cheng Zhao
8e9667d86c Manage AtomTouchBar in NativeWindow instead of AtomNSWindow 2018-04-20 19:15:01 +09:00
Cheng Zhao
ce54fd334d Move AtomNSWindowDelegate to a new file 2018-04-20 19:12:17 +09:00
Cheng Zhao
1c6c75da4f Merge the logic of managing ViewsDelegate 2018-04-20 19:10:37 +09:00
Cheng Zhao
9bc79f840e mac: Override NativeWidgetMac 2018-04-20 19:10:37 +09:00
Cheng Zhao
37a7df49d6 mac: Provide ViewsDelegate 2018-04-20 19:10:37 +09:00
Alexey Kuzmin
fcc82ebd35 Add "app.whenReady()" (#12652)
* Make "chai-as-promised" avaialble in tests

* Add "app.whenReady()"

Closes #9561.
2018-04-20 17:09:23 +10:00
Shelley Vohr
c7a0b419a9 Merge pull request #12669 from electron/MarshallOfSound-patch-1
Add last known working electron version
2018-04-20 00:25:36 -04:00
Samuel Attard
032b7c68d8 Add last known working electron version 2018-04-20 14:23:01 +10:00
Cheng Zhao
55e2dbdbc8 Merge pull request #12647 from nornagon/chromium-style
Fix a bunch of chromium-style errors
2018-04-20 08:15:51 +09:00
deepak1556
6d0ac6593c [chromium-style] Complex class/struct needs an explicit out-of-line copy constructor. 2018-04-19 11:12:58 -07:00
deepak1556
30f1d0991b enable chromium style checker plugin for electron and brightray targets 2018-04-19 11:12:58 -07:00
Jeremy Apthorp
7c5fcecbec Build mac code with -Wunguarded-availability -Wobjc-missing-property-sythesis 2018-04-19 11:12:58 -07:00
Jeremy Apthorp
eb7ccf8afa Bring mac code into conformance with -Wobjc-missing-property-synthesis 2018-04-19 11:12:58 -07:00
Jeremy Apthorp
f3c00e96aa Bring mac code into conformance with -Wunguarded-availability 2018-04-19 11:12:58 -07:00
Jeremy Apthorp
27cee90e5e [chromium-style] move methods out of headers 2018-04-19 11:12:58 -07:00
Jeremy Apthorp
f1587da480 [chromium-style] out-of-line default constructors and destructors 2018-04-19 11:12:58 -07:00
Jeremy Apthorp
6c26bb1cf8 [chromium-style] destructors of ref-counted objects should be private 2018-04-19 11:12:10 -07:00
Jeremy Apthorp
e6695cf2ec [chromium-style] override / virtual warnings 2018-04-19 11:12:10 -07:00
Jeremy Apthorp
a635f078c6 [chromium-style] auto variable type must not deduce to a raw pointer type 2018-04-19 11:10:52 -07:00
Shelley Vohr
667c43398c Merge pull request #12650 from electron/clang-format-chromium-src
clang-format chromium_src
2018-04-19 08:37:02 -04:00
Birunthan Mohanathas
cd407d1c3f Stop overwriting prevent_default if default wasn't prevented
This didn't actually cause any issues because there is only one listener
for the affected methods right now. Should we have added more, the last
called observer would have overwritten `prevent_default`. Lets only set
it when necessary to avoid this footgun in the future.
2018-04-19 12:45:21 +02:00
Cheng Zhao
6c9f3066fd Merge pull request #12637 from electron/expose-toplevel-window
Refactor NativeWindow (Part 7): Expose TopLevelWindow in JavaScript
2018-04-19 14:52:04 +09:00
Cheng Zhao
7473b612c5 Make Menu API accept TopLevelWindow 2018-04-19 13:08:37 +09:00
Cheng Zhao
1340b17424 Do not return TopLevelWindow in BrowserWindow.getAllWindows 2018-04-19 13:08:37 +09:00
Cheng Zhao
e38f511737 Make BrowserWindow inheirt TopLevelWindow in JS 2018-04-19 13:08:37 +09:00
Cheng Zhao
71ebd99dfa Expose TopLevelWindow to JavaScript 2018-04-19 13:08:36 +09:00
Cheng Zhao
cfed9fa4b9 Make sure we append parent->child_windows after InitWith 2018-04-19 12:45:48 +09:00
Shelley Vohr
e7bb7dd78b force windows above other includes 2018-04-18 23:33:15 -04:00
Shelley Vohr
f7d4437b3f format previously missed chromium_src .cc files 2018-04-18 22:59:34 -04:00
Shelley Vohr
8cc81509d7 clang-format chromium_src 2018-04-18 22:59:33 -04:00
Shelley Vohr
c090dd2f81 Merge pull request #12649 from electron/clang-format-brightray
clang-format brightray
2018-04-18 22:59:04 -04:00
Cheng Zhao
47826a1262 Merge pull request #12648 from electron/clang-format-atom
clang-format atom files
2018-04-19 11:49:35 +09:00
Cheng Zhao
89d909ab43 Only include UIAutomationCoreApi.h where necessary 2018-04-19 11:14:55 +09:00
Shelley Vohr
35a4a07320 fix include definition errors 2018-04-18 20:48:46 -04:00
Shelley Vohr
ec35966715 remove unused macro 2018-04-18 20:48:45 -04:00
Shelley Vohr
9f7a8832a1 remove include ordering filter 2018-04-18 20:48:45 -04:00
Shelley Vohr
c6f4bbd143 also format missing .cc files 2018-04-18 20:48:45 -04:00
Shelley Vohr
53bdf22c85 clang-format atom files 2018-04-18 20:48:45 -04:00
John Kleinschmidt
717f55b012 Merge pull request #11328 from electron/add-env-to-release-docs
expanded release docs
2018-04-18 11:28:16 -04:00
Shelley Vohr
f8e523b277 Merge pull request #12646 from electron/new-base-bind-converters
add converters for base::BindOnce and base::BindRepeating
2018-04-17 22:18:54 -04:00
Shelley Vohr
49c8c31220 format previously misses .cc files 2018-04-17 21:56:12 -04:00
Shelley Vohr
284aca68c0 clang-format brightray 2018-04-17 21:46:27 -04:00
Shelley Vohr
ca406637af add converters for base::BindOnce and base::BindRepeating 2018-04-17 18:47:12 -04:00
Alexey Kuzmin
a254f3d02c Update trop whitelist (#12642)
* Sort authorizedUsers alphabetically

* Add alexeykuzmin to the authorizedUsers list

* Add deepak1556 to the authorizedUsers list

* Add nornagon to the authorizedUsers list

* Add nitsakh to the authorizedUsers list

* Add zcbenz to the authorizedUsers list

* Add jkleinsc to the authorizedUsers list
2018-04-18 01:23:03 +10:00
Shelley Vohr
7a8a0f6b4b Merge pull request #12616 from electron/fix-copy-to
switch to sk_tool_utils::copy_to()
2018-04-16 22:18:23 -04:00
Zeke Sikelianos
40ff17c9f9 Merge pull request #12619 from electron/add-before-update-event
add new event to auto-updater
2018-04-16 12:43:15 -07:00
Shelley Vohr
354f872919 run clang-format 2018-04-16 15:08:17 -04:00
Shelley Vohr
a19ddfc578 fix copy_to conditional 2018-04-16 12:14:35 -04:00
Nitish Sakhawalkar
875706f660 Address breaking API 2018-04-16 15:40:50 +02:00
Shelley Vohr
59527165ec Merge pull request #31 from electron/fix-ci
Fix failing CI
2018-04-16 09:35:12 -04:00
Samuel Attard
d06c79f5d3 Correct the default of allowRunningInsecureContent as per docs (#12556)
* Correct the default of allowRunningInsecureContent as per docs

* fix linting

* Update calls to match native_mate API change
2018-04-16 08:28:54 -05:00
Alexey Kuzmin
d0c80b5b55 Remove mate::TryCatch (#26)
It's not used anywhere. We use v8::TryCatch instead.
2018-04-16 22:16:48 +09:00
Shelley Vohr
90a7b5ebce switch to simplified version of copy_to 2018-04-16 08:47:34 -04:00
Shelley Vohr
91f97ca02f Update appveyor settings
Use Visual Studio 2017.
2018-04-16 14:38:35 +02:00
Shelley Vohr
1e2828b80e Update travis settings
Use Node.js 9.7.0 and Xcode 9.3.
2018-04-16 14:37:44 +02:00
Shelley Vohr
4cb41ac425 clarify usage around before-quit-for-update event 2018-04-16 08:13:04 -04:00
Samuel Attard
8a94d4fcf9 Merge pull request #23 from electron/promise
Add mate::Promise
2018-04-16 20:18:33 +10:00
Samuel Attard
b180f18b7e Add mate::Promise 2018-04-16 20:08:04 +10:00
Vijay Pushkin
82cbd4327f Corrected the name of Capitalization Styles
Corrected CamelCase to PascalCase and 
mixedCase to camelCase
2018-04-16 13:14:11 +05:30
Shelley Vohr
bb2fb93355 Merge pull request #29 from electron/revert-c66-change
Revert "Address breaking API"
2018-04-15 13:48:22 -04:00
Shelley Vohr
a10564c3b1 Revert "Address breaking API"
This reverts commit e20cf8687e.
2018-04-15 13:26:35 -04:00
Samuel Attard
7cc3b877dc Fix event leak on reuse of touchbar item (#12527)
* fix event leak on reuse of touchbar item

* Clean up child touch bar item event listeners and escape item listeners
2018-04-15 10:24:47 -05:00
Birunthan Mohanathas
cd8278dceb Add missing event parameter to console-message (#12617) 2018-04-15 10:13:02 -05:00
Shelley Vohr
06892775d4 add new event to auto-updater 2018-04-14 21:29:36 -04:00
Shelley Vohr
43a9092c16 remove accidental file change 2018-04-14 21:24:19 -04:00
Shelley Vohr
1727a9eca9 pull up definition and remove include 2018-04-14 21:23:05 -04:00
Shelley Vohr
8b4a89c445 .deepCopyTo() => sk_tool_utils::copy_to() 2018-04-14 12:50:55 -04:00
Zeke Sikelianos
e606a74de3 Merge pull request #12595 from Zhangdroid/fix-broken-url
[doc] Fix broken url
2018-04-13 19:08:20 -07:00
Cheng Zhao
858828d343 Refactor NativeWindow (Part 6): Move NativeWindow bindings to api::TopLevelWindow (#12596)
* Add atom::api::TopLevelWindow

* Make BrowserWindow inherit TopLevelWindow

* Fix reading from wrong weak map

* Read options after setting content view

* OnWindowClosed is not guarenteed to run now

* Fix the offscreen hack in BrowserWindow

* Fix building on Linux

* Fix tests on Linux

* Fix building on Windows
2018-04-14 11:04:23 +09:00
Zhuo Zhang
de1eae288c doc: rename 'blink-feature-string' as 'runtime-enabled-features'
make it more meaningful :)
2018-04-14 08:49:30 +08:00
Charles Kerr
03d119d539 Address @jkleinsc's 2018-03-21 comments 2018-04-13 16:10:53 -05:00
John Kleinschmidt
7acbbf2ef3 Add logic to bundle native mksnapshot for arm/arm64 2018-04-13 15:52:08 -04:00
Zeke Sikelianos
23bb3bd963 Merge pull request #12577 from TiagoDanin-Forks/DeadURLs
[Docs] Fix dead urls
2018-04-13 11:04:11 -07:00
Zhuo Lu
a0cac05555 Clear cache storage data (#12546) 2018-04-13 13:03:16 -04:00
Charles Kerr
3edb1eed8d Merge pull request #27 from electron/fix-to-details-string-call
Fix Value::ToDetailString() call
2018-04-13 11:19:17 -05:00
Robo
ad2baccefa tools: pass custom template for js2c (#12593)
* Update node v9.7.0 ref

* tools: pass custom template to node/tools/js2c.py
2018-04-13 08:20:04 -04:00
Shelley Vohr
9e5c264012 Merge pull request #12601 from electron/makeunique-replace
Replace base::MakeUnique with std::make_unique
2018-04-13 08:19:26 -04:00
Shelley Vohr
d722008367 remove unnecessary ptr_util.h include 2018-04-12 22:34:26 -04:00
Aleksei Kuzmin
3dce1dd240 Fix Value::ToDetailString() call
See https://chromium-review.googlesource.com/848782
2018-04-12 15:36:44 +02:00
Shelley Vohr
b05932310b replace base::MakeUnique with std::make_unique 2018-04-12 08:48:32 -04:00
Jeremy Apthorp
97fb15ac49 Enable WebFrame method forwarding in sandboxed renderers (#12538)
* Enable WebFrame method forwarding in sandboxed renderers

Fixes #9073

* Non-change to kick CI
2018-04-12 11:57:40 +10:00
Zhuo Zhang
dd45473356 fix broken url for 'blink-feature-string' 2018-04-11 15:02:54 +08:00
Cheng Zhao
558d36c1f3 Merge pull request #12584 from electron/no-webcontents-in-constructor
Refactor NativeWindow (Part 5): Add NativeWindow::SetContentView
2018-04-11 15:34:29 +09:00
Cheng Zhao
311d730bce Merge pull request #25 from nitsakh/fix-update-ch
Address breaking API
2018-04-11 15:14:06 +09:00
Cheng Zhao
d706a30849 Fix crash when releasing window 2018-04-11 15:12:53 +09:00
Cheng Zhao
2b5bde4071 InstallView is no longer needed 2018-04-11 15:12:53 +09:00
Cheng Zhao
5a95aaaa54 kVibrancyType should be read in InitFromOptions 2018-04-11 15:12:53 +09:00
Cheng Zhao
cfd8ea8eb0 mac: Correctly unload previous content view 2018-04-11 15:12:53 +09:00
Cheng Zhao
56735d4ff5 Add NativeWindow::SetContentView 2018-04-11 15:12:53 +09:00
Cheng Zhao
13473ee138 web_view_ => content_view_ 2018-04-11 15:12:53 +09:00
Cheng Zhao
97e8800677 Remove web_contents from NativeWindow's constructor 2018-04-11 15:12:53 +09:00
Nitish Sakhawalkar
e20cf8687e Address breaking API 2018-04-10 16:17:20 -07:00
Nitish Sakhawalkar
6fc819dae1 Fix transparency in capturePage (#12561)
* Fix transparent window capture. Transparency is preserved and not converted to black pixels anymore

* Add test to make sure aplha channel exists in captured image
2018-04-10 19:07:15 +09:00
TiagoDanin
d7a003b0bc 📝 Fix dead urls 2018-04-09 17:58:10 -03:00
John Kleinschmidt
eca0436f58 Use CircleCI for Mac builds (#12572) 2018-04-09 14:19:54 -05:00
Andreas
6b5e09478c Mouse forward on macOS (#12281)
* Accept mouse events according to the forward parameter on macOS.

* Update BrowserWindow docs: mouse forward is available on macOS
2018-04-09 19:35:05 +09:00
Cheng Zhao
0e5aaab0b5 Merge pull request #11959 from yuya-oc/filter-for-mac-dialog
show file filter name for accessory view of file dialog
2018-04-09 19:32:29 +09:00
Cheng Zhao
41134f52d9 Fix memory leaks in file_dialog_mac.mm 2018-04-09 16:51:25 +09:00
Yuya Ochiai
2131dc839a Show file filter name for accessory view of file dialog
- Respect filters option of dialog.showOpenDialog() and
  dialog.showSaveDialog(). (#10335)
- Show "All Files" for <input> apart from "accept" attribute. (#11456)
2018-04-09 16:50:21 +09:00
OJ Kwon
4c51c03779 feat(performspellcheck): queue spell check request asynchronously (#12112)
* feat(spellcheckrequest): implement spellcheckrequest

* feat(performspellcheck): queue spell check request asynchronously
2018-04-09 15:18:50 +09:00
OJ Kwon
dabd61bf80 chore(build): support generating compilation db (#12104) 2018-04-09 14:54:14 +09:00
Andrew MacDonald
6bfb122cd1 Add a display_id parameter to the desktopCapturer API. (#12417)
* Add a screen_api_id parameter to the desktopCapturer API.

When using the DirectX capturer on Windows, there was previously no way
to associate desktopCapturer/getUserMedia and electron.screen API
screens. This new parameter provides the association.

* Fix non-Windows build.

* Fix Mac.

* Fix Mac harder.

* JS lint

* clang-format C++ code.

* IWYU

* display_id, Linux comment, better test

* lint

* Fix tests on Linux.

* Add display_id documentation.
2018-04-09 14:43:35 +09:00
Robo
89f2eb1023 asar: remove patch to support graceful-fs (#12562) 2018-04-07 10:13:32 -05:00
Nitish Sakhawalkar
970f79e32f Check for devtools in BrowserWindow.getFocusedWindow() (#12526) 2018-04-06 09:21:32 -04:00
loc
82f8914f9e remove defines from build-libchromiumcontent (#11927) 2018-04-06 08:22:15 -04:00
Robo
65e8199a93 Enable plznavigate aka browser side navigation (#12535)
* enable plznavigate code path

* AtomBrowserClient::GetGeolocationApiKey returns the right default

* use IsLoadingToDifferentDocument to identify top level navigation in mainFrame

* use candidate site instance when available

* spec: don't test httpReferrer option for file origin

* update libcc ref

* affinity: only group same site in this mode

* plznavigate: don't emit did-get-response-details event for blob scheme
2018-04-06 16:22:52 +09:00
Charles Kerr
f8b8dc1494 Simplify views/menu_bar focus management (#12536)
* Simplify views/menu_bar focus management

* Make the linter happy

* Remove NativeWindowView focus manager listener API

* remove unnecessary change

* MenuBar ctor now takes a views::View
2018-04-05 21:53:08 -05:00
Charles Kerr
cad8eed6e4 Use ui:view's Activate() on Linux (#12539)
In NativeWindowViews, we started rolling our own _NET_ACTIVE_WINDOW
event in June 2016 to raise windows because Chromium's implementation
wasn't working as expected. (See commit 32b692b6)

I'm not seeing this behavior in our current version of libcc,
so I wonder if this workaround is still needed?
2018-04-05 22:39:53 -04:00
Jeremy Apthorp
f0d08f4da1 Propagate referrer to new windows (#12397)
* Propagate referrer to new windows

Fixes #9205

* Rearrange -new-window event arguments for backwards-compatibility

* Plumb referrer policy through guest-window-manager

* Document the Referrer structure and its uses

* Add tests for referrer in new windows

* Docs nits
2018-04-05 18:13:24 -05:00
Vanessa Yuen
4316949a1d Merge pull request #12542 from natsuozawa/patch-1
Minor grammatical issue in first-app.md
2018-04-05 13:06:06 +02:00
Natsu
7a01ff11cd Fixed one minor grammatical issue
Line 93: "principals and methods" -> "principles and methods"
2018-04-05 19:26:26 +09:00
Kristof Mattei
c1439bb02b Use Visual Studio's vswhere to find Visual Studio, and use proper version numbers to locate (#12537) 2018-04-05 16:13:30 +09:00
Heilig Benedek
a14ebc80d2 Disable chromium's redraw locking on Windows when DWM is disabled (#12501)
* disable redraw locking on windows

* update libcc ref
2018-04-05 15:55:26 +09:00
Adrien Fery
5486a65702 Improve in-app purchase for MacOS (#12464)
* Add methods to finish transactions

* Add a method to get the product descriptions from the App Store

* Improve the documentation of a transaction structure

* Add a tutorial for In App Purchase

* Fix typo in In-App Purchase tutorial

* Fix style of In-App Purchase files

* Fix In-App-Purchase product structure conversion in amr64

* Fix code style in In-App Purchase tutorial documentation

* Fix typos in In-App Purchase documentation

* Fix typo in In-App Purchase spec

* Slight style fixes
2018-04-05 15:33:13 +09:00
Heilig Benedek
52b1065b3b Focus webview directly in offscreen mode (#12507) 2018-04-05 15:14:42 +09:00
Robo
c1404ff2c1 vendor: Update native mate to fix v8 DCHECK crash (#12534)
* update native_mate ref

* Remove MarkHighMemoryUsage api
2018-04-05 00:47:18 -05:00
Cheng Zhao
c75dd93b92 Move AutofillPopup from NativeWindow to WebContents (#12514) 2018-04-05 09:53:51 +09:00
Aleš Pergl
3a45d541f3 Expose IsOffScreen method always to JS. (#12530) 2018-04-04 12:19:08 -05:00
MadfishDT
200388ff96 add moveTop API to move window z-oder to top for win32, mac (#12485)
* add moveTop API to move window z-oder to top for win32, mac

* BrowserWindow::MoveTop SetMethod bug fix
2018-04-03 08:04:32 -05:00
Zeke Sikelianos
9d570dc645 add IDL and Mojo to glossary (#12504) 2018-04-03 07:58:25 -05:00
Cheng Zhao
8fc5c6c862 Refactor NativeWindow (Part 3): Remove is_offscreen_dummy from NativeWindow (#12503)
* Don't use is_offscreen_dummy in MessageBox

* Don't use is_offscreen_dummy in DownloadManagerDelegate

* Don't use is_offscreen_dummy in CommonWebContentsDelegate

* Remove is_offscreen_dummy from NativeWindow
2018-04-03 12:19:35 +09:00
Charles Kerr
1a649a6ac3 Handle in-app-purchase less fatally on non-Darwin (#12511)
Fixes #12311

Right now it throws a new error when the file is even require()d, but this isn't ideal as there are cases where everything is mass-required, such as Spectron. Instead, we should throw an error on non-Darwin environments only when the IAP methods are invoked.
2018-04-02 18:55:44 -05:00
Jeremy Apthorp
a7352e57d5 WebFrame.setVisualZoomLevelLimits sets user-agent scale constraints (#12488)
Fixes #11216.
2018-04-02 18:20:13 -04:00
Nitish Sakhawalkar
fbff355742 Support for navigator.languages (#12419) 2018-04-02 12:47:00 +09:00
Cheng Zhao
02693839ca Merge pull request #24 from electron/remove_independent_lifetime
Remove usage of MarkIndependent api
2018-03-31 21:42:13 +09:00
deepak1556
894c96f39f Remove usage of MarkIndependent api
https://bugs.chromium.org/p/chromium/issues/detail?id=780749
Use Active/Not Active as indicator whether the Scavenger can drop wrappers
2018-03-31 15:08:17 +05:30
Robo
171230e45d Cleanup destruction of URLRequestContextGetter (#12305)
- Add Leak detector
 - Indicate shutdown of request context from Browser Context
 - Change stored references to URLRequestContextGetter to use BrowserContext
 - Destroy session properties explicitly
2018-03-30 08:24:55 -05:00
Alexey Kuzmin
fc00a2ba32 Use latest libcc (#12476) 2018-03-29 16:35:07 -05:00
Shelley Vohr
a677c22e1f re-enable null check against menu item accelerators (#12449) 2018-03-27 20:32:55 -04:00
Sean
5f7c6ccfe4 update doc for setProgressBar (#12428)
* update doc for setProgressBar

The linter was unable to get `paused` as a possible value for `mode`

* update doc for setProgressBar

Addressing PR feedback
2018-03-28 10:29:31 +11:00
Jeremy Apthorp
22da843efa s/now/not/ in allowRunningInsecureContent documentation (#12452) 2018-03-28 10:15:29 +11:00
Samuel Attard
2e5cb930de Provide an easy way to use a local build of Electron (#12426)
* Provide an easy way to use a local build of Electron

For instance from ~/projects/electron/out/D

* document ELECTRON_OVERRIDE_DIST_PATH

* Make the linter happy

* Tweak ELECTRON_OVERRIDE_DIST_PATH docs
2018-03-25 00:03:17 -04:00
Charles Kerr
cfd91a3b56 Fix documentation tyop (#12422) 2018-03-23 18:35:14 -04:00
Cheng Zhao
6a3d238b7e Merge pull request #21 from yzgyyang/master
Add support for FreeBSD
2018-03-23 09:19:00 +09:00
Guangyuan Yang
31206cfa0a Add support for FreeBSD 2018-03-22 14:14:26 -04:00
Jeremy Apthorp
95cbd69e48 Update testing docs to reflect --grep syntax (#12400)
* Update testing docs to reflect --grep syntax

* Use @zeke's suggestion to s/suites/tests/
2018-03-22 13:19:53 -04:00
Cheng Zhao
f41cce96a3 Increase timeout for inAppPurchase test (#12403) 2018-03-22 08:47:29 -05:00
Zhuo Lu
c50a460ce6 Do not block main process for async dialog (#12404) 2018-03-22 08:57:33 -04:00
Clément Beffa
642f5a84d4 Workspace notifications support on macOS (#12093) 2018-03-22 18:41:03 +09:00
Nitish Sakhawalkar
9d1527b1df Fix context menu for sandbox devtools (#11933) 2018-03-22 16:15:57 +09:00
Cheng Zhao
67f052a6e1 Merge pull request #12168 from electron/easier-web-contents-preferences
Cleanup the static methods of WebContentsPreferences
2018-03-22 15:58:04 +09:00
Cheng Zhao
05fcec829e Use Clone explicitly instead of MergeDictionary 2018-03-22 15:29:20 +09:00
Cheng Zhao
0abbedcdae Fix error caused by refactor 2018-03-22 15:21:56 +09:00
Cheng Zhao
6df2326a30 Cleanup the static methods of WebContentsPreferences
The static methods are totally unnecessary, and it makes code harder to
understand since we are using different ways to do the same things.
2018-03-22 15:21:56 +09:00
Cheng Zhao
001275339b Hide WebContentPreferences::GetWebContentsFromProcessID from public 2018-03-22 15:20:03 +09:00
Cheng Zhao
3d47a8a2fd Remove the static getter methods from WebContentsPreferences 2018-03-22 15:20:03 +09:00
Cheng Zhao
887bc12350 Add WebContentsPreferences::From that checks parameter 2018-03-22 15:16:26 +09:00
Cheng Zhao
9772777919 web_prefrences() => dict()
Having property name being the same with class name is making code
harder to understand, and dict is much shorter.
2018-03-22 15:15:30 +09:00
Zeke Sikelianos
d323ce2c42 Merge pull request #12399 from electron/now-we-call-ourselves-electrocats
now we call ourselves electrocats
2018-03-21 17:06:59 -07:00
Zeke Sikelianos
7c0c798c90 now we call ourselves electrocats 2018-03-21 16:50:52 -07:00
Shelley Vohr
05dc04dacc don't check darkmode for drawStatusBarBackgroundInRect (#12395) 2018-03-21 19:03:57 -04:00
Charles Kerr
0d7becff87 Use the appname as the tray icon's default tooltip (#12388)
This makes an upstream DCHECK happy in AppIndicatorIcon::SetToolTip.
Empty tooltip strings are discouraged, as discussed in commit log
b6c510aa543193337041517c2d70113840189b06.

Fixes #12386.
2018-03-21 12:15:30 -05:00
htk3
6fa4ec22c5 fix broken fragment link in ipc-main.md (#12389) 2018-03-21 12:05:27 -05:00
bughit
37eccbcd33 Update 3 (of Visual Studio 2017) is leftover from 2015 (#12372)
does not apply to 2017
it's not clear to me that it's possible to download a non current version of vs2017
but if a specific version is required the directions should explain how to get it
2018-03-20 16:15:59 -05:00
Zeke Sikelianos
e3dfffb77b add docs/development/README.md (#12373) 2018-03-20 15:36:48 -04:00
John Kleinschmidt
060b592fc8 Merge pull request #12348 from electron/fix-browser-view-draggable-region
Update draggable regions when changing BrowserView
2018-03-20 10:40:27 -04:00
Cheng Zhao
cd30a4e2d4 Merge pull request #11459 from electron/upgrade-to-chromium-63
Upgrade to Chromium 63
2018-03-20 17:25:34 +09:00
Cheng Zhao
c70150847d Ignore warning LNK4199
We are now sharing the /DELAYLOAD settings between configurations.
2018-03-20 10:13:17 +03:00
Cheng Zhao
2e94a730cc Isolate the code using content::WebContentsImpl 2018-03-20 10:13:17 +03:00
Gellert Hegyi
a9cdd6614a fixes class name 2018-03-20 10:13:17 +03:00
Gellert Hegyi
0ad8815bbc fixes offscreen rendering issues 2018-03-20 10:13:17 +03:00
Cheng Zhao
d4969783d7 Avoid including web_contents_impl.h
This can fix the build error caused by duplicate typedefs.
2018-03-20 10:13:17 +03:00
deepak1556
f5e1ee010b FIXME: disable pdf viewer feature 2018-03-20 10:13:17 +03:00
deepak1556
e24c0dda5d add features module to detect availability of build time features at runtime 2018-03-20 10:13:17 +03:00
deepak1556
4b39d17e5f move pdf viewer behind feature flag 2018-03-20 10:13:17 +03:00
deepak1556
c1908147a9 Fix windows build 2018-03-20 10:13:17 +03:00
John Kleinschmidt
6aebae5a98 Remove custom appveyor config 2018-03-20 10:13:17 +03:00
Aleksei Kuzmin
714a793a0e Update to the latest libcc with Ch63 2018-03-20 10:13:17 +03:00
Cheng Zhao
94fce43ed9 Emit document-start for the correct env
This fixes the crash in RunScriptsAtDocumentStart when "affinity" option
is specified. Previously we were assuming only one main frame exists in
the renderer process, but the "affinity" option breaks this option.

There is also a bug that "node::Environment::GetCurrent" does not return
nullptr for context without a env in it, I'm not sure whether it is a
bug of Node or V8.
2018-03-20 10:13:17 +03:00
deepak1556
c3f8f6bc42 re-use request context from IOThread 2018-03-20 10:13:17 +03:00
Cheng Zhao
97fcf7079b Update chrome_version.h 2018-03-20 10:13:17 +03:00
Cheng Zhao
cb4c54eec1 Use 60 as module version for V8 6.3 2018-03-20 10:13:17 +03:00
deepak1556
9702898dcd AccessTokenStore is only needed to initialize network location service 2018-03-20 10:13:17 +03:00
deepak1556
97eb7f2c98 REVIEW: ContentBrowserClient now provides geolocation api key and request context 2018-03-20 10:13:16 +03:00
deepak1556
f9de29ed8c Enable node crypto spec 2018-03-20 10:13:16 +03:00
Cheng Zhao
246f6318e4 Fix release build on Windows 2018-03-20 10:13:16 +03:00
Aleksei Kuzmin
d5ecbfc539 spec: Do not assume en-US locale to be the current 2018-03-20 10:13:16 +03:00
John Kleinschmidt
750c3d05aa debug build issues 2018-03-20 10:13:16 +03:00
John Kleinschmidt
dfc4dbdbd3 Drop clone folder 2018-03-20 10:13:16 +03:00
John Kleinschmidt
d58b366123 Add whole appveyor config 2018-03-20 10:13:16 +03:00
John Kleinschmidt
d90b600bc1 Use visual studio 17 image 2018-03-20 10:13:16 +03:00
Aleksei Kuzmin
d3afb595dc Tab Capture in VIZ: CopyOutputRequest/Result API changes.
https://chromium-review.googlesource.com/637003
2018-03-20 10:13:16 +03:00
Aleksei Kuzmin
639be7f7bc Simplify transparent backgrounds
https://chromium-review.googlesource.com/669646
2018-03-20 10:13:16 +03:00
Cheng Zhao
b6b7707dc3 Fix Windows linking error 2018-03-20 10:13:16 +03:00
Cheng Zhao
624e09533c Avoid using deprecated skia size methods 2018-03-20 10:13:16 +03:00
Cheng Zhao
42938de973 Build with Visual Studio 2017 2018-03-20 10:13:16 +03:00
deepak1556
e6d38cb64e update node ref to fix --typed_array_max_size_in_heap error 2018-03-20 10:13:16 +03:00
Nitish Sakhawalkar
524f56354c Fix webview resize test 2018-03-20 10:13:16 +03:00
deepak1556
5e9da04ab7 update libcc ref to disable ScriptForbuddenScope check 2018-03-20 10:13:16 +03:00
deepak1556
f4ee48eaf4 v8-platform header is not required explicitly 2018-03-20 10:13:16 +03:00
Cheng Zhao
d141d2445d Fix build error caused by base::Passed changes 2018-03-20 10:13:16 +03:00
deepak1556
b08d086b0f fix stale rebase 2018-03-20 10:13:16 +03:00
Shelley Vohr
7e7634d344 Chromium 63 - upgrade to Node v9.7.0 (#12219)
* OPENSSL_PRODUCT => openssl_product

* node => node_lib and V8_BASE => v8_base

* build node target for <(node_lib_target_name)

* update node ref

* update node::Environment::TickInfo calls

* update node ref

* Use InternalCallbackScope for ticking event loop

* enter context scope before InternalCallbackScope

* don't lint v8 platform header
2018-03-20 10:13:16 +03:00
Cheng Zhao
ecefe41728 Linker behaves differently on arm 2018-03-20 10:13:16 +03:00
Cheng Zhao
34cb9cf1fe Use lld for linking on both Debug/Release builds
This follows Chromium's config, otherwise we get linking error:
/usr/bin/ld: shared_library/libmirclient.so.9: __cxa_finalize: invalid needed version 2
shared_library/libmirclient.so.9: error adding symbols: Bad value
2018-03-20 10:13:16 +03:00
Cheng Zhao
76ef6e3ecc CertificateList => ScopedCERTCertificateList 2018-03-20 10:13:16 +03:00
Cheng Zhao
0f9f04e4ec Fix cpplint warning 2018-03-20 10:13:16 +03:00
Cheng Zhao
aa25381651 Fix warning when building openssl-cli 2018-03-20 10:13:16 +03:00
Cheng Zhao
5f71fbc6b3 Fix warnings when building node 2018-03-20 10:13:16 +03:00
Nitish Sakhawalkar
ecd0f9d0e7 Fix build by adding define in node_includes.h 2018-03-20 10:13:15 +03:00
Tomas Rycl
f2116c50c0 Unity detection now works in all OSes - returns false. 2018-03-20 10:13:15 +03:00
Tomas Rycl
c15e09b71e rtc_base_approved renamed to generic 2018-03-20 10:13:15 +03:00
Aleksei Kuzmin
f68cba0c71 Update Chrome version 2018-03-20 10:13:15 +03:00
deepak1556
80772c2419 FIXME: Disable node crypto spec 2018-03-20 10:13:15 +03:00
deepak1556
b9bb4dfc06 FIXME: re-enable guest webcontents based on OOPIF feature 2018-03-20 10:13:15 +03:00
deepak1556
719980a948 REVIEW: remove device emulation ipc dependecny on rvh 2018-03-20 10:13:15 +03:00
deepak1556
5684f8886f REVIEW: move ipc use from rvh to rfh 2018-03-20 10:13:15 +03:00
deepak1556
b552ad7065 add taskpriority when creating sequences task runners 2018-03-20 10:13:15 +03:00
deepak1556
1f2d229862 re-use title information from NavigationEntry 2018-03-20 10:13:15 +03:00
Aleksei Kuzmin
fa3d9d32ae Use XDG_CURRENT_DESKTOP to determine if the desktop environment is Unity
https://chromium-review.googlesource.com/682615
2018-03-20 10:13:15 +03:00
Aleksei Kuzmin
e35b128fa3 Update crashpad to match Chromium 63.0.3239.108 2018-03-20 10:13:15 +03:00
deepak1556
6de49f515e FIXME: Disbale browser side navigation aka PlzNavigate 2018-03-20 10:13:15 +03:00
deepak1556
007ea500d0 REVIEW: Re-use devtools network throttling from content layer
https://chromium-review.googlesource.com/c/chromium/src/+/664356
2018-03-20 10:13:15 +03:00
Aleksei Kuzmin
490b1e2532 FIXME: Disable some tests to avoid crashes 2018-03-20 10:13:15 +03:00
Samuel Attard
8269a6dc37 Temporarily disable OnCursorChange
ScopedProfile is removed
https://chromium-review.googlesource.com/c/chromium/src/+/655147
2018-03-20 10:13:15 +03:00
Samuel Attard
78266db427 Fix webrtc linking issues 2018-03-20 10:13:15 +03:00
Samuel Attard
b0fe23072d Update chrome version 2018-03-20 10:13:15 +03:00
Samuel Attard
a21e0c652c Fix WorkerPool and IPC send inside print job/manager 2018-03-20 10:13:15 +03:00
Samuel Attard
0b6293e2f5 Pickle write methods now return void and use GE_CHECK instead 2018-03-20 10:13:15 +03:00
Samuel Attard
9181db1304 Disable tautological check for chromium code 2018-03-20 10:13:15 +03:00
Aleksei Kuzmin
dcece31519 FIXME: Disable OSR by default 2018-03-20 10:13:15 +03:00
Aleksei Kuzmin
aab6f27503 Move DrawQuads to components/viz/
https://chromium-review.googlesource.com/667539
2018-03-20 10:13:15 +03:00
Aleksei Kuzmin
74cedd3255 Move ReleaseCallbacks and CopyOutputRequests out of quads/
https://chromium-review.googlesource.com/682760
2018-03-20 10:13:15 +03:00
Aleksei Kuzmin
d1061692d5 Move CompositorFrame{Metadata} to viz/common/quads.
https://chromium-review.googlesource.com/676726
2018-03-20 10:13:14 +03:00
Aleksei Kuzmin
481c70311a Move SoftwareOutputDevice to the viz service display compositor.
https://chromium-review.googlesource.com/677463
2018-03-20 10:13:14 +03:00
Aleksei Kuzmin
4d234e3abc Update Node.js submodule to fix a compilation error 2018-03-20 10:13:14 +03:00
Samuel Attard
37a321a601 Fix super fast hash and blocking pool 2018-03-20 10:13:14 +03:00
Samuel Attard
7c8be94a6e IPC fixes for WebContents 2018-03-20 10:13:14 +03:00
Samuel Attard
1c648f9714 Add new includes for leveldb and webrtc 2018-03-20 10:13:14 +03:00
Samuel Attard
fdc7c183e8 Update libcc 2018-03-20 10:13:14 +03:00
Samuel Attard
f80b328937 WebExceptionCode has been removed 2018-03-20 10:13:14 +03:00
Samuel Attard
5a2f85600d Add support for size 64 skbitmap operations 2018-03-20 10:13:14 +03:00
Samuel Attard
7356be0164 Convert optional webpoint 2018-03-20 10:13:14 +03:00
Samuel Attard
a8e013dcb6 GetRenderProcessHost() has been removed for OOPI support, should use #include GetMainFrame()->GetProcess() 2018-03-20 10:13:14 +03:00
Samuel Attard
c3dec709ab PrintedPageSource has been removed 2018-03-20 10:08:58 +03:00
Samuel Attard
6402b23041 tracked_objects::Location --> base::Location 2018-03-20 10:08:58 +03:00
Samuel Attard
1158d35021 experimental_webgl_enabled is not supported, now use webgl1/2_enabled 2018-03-20 10:08:58 +03:00
Samuel Attard
e65815e34c Implement GetBackgroundFetchDelegate in brightray::BrowserContext 2018-03-20 10:08:58 +03:00
Samuel Attard
021e383418 GetBlockingPool has been removed 2018-03-20 10:08:58 +03:00
Samuel Attard
0291dc8214 Calling non-const callbacks requires some tricks 2018-03-20 10:08:58 +03:00
Samuel Attard
ce755483ba DialogClosedCallback are not const references anymore 2018-03-20 10:08:58 +03:00
Samuel Attard
de2981a767 Move proxy constructor to ProxyService namespace 2018-03-20 10:08:58 +03:00
Samuel Attard
41b9825f00 WebContents are no longer IPC Sender's 2018-03-20 10:08:58 +03:00
Samuel Attard
6f695b93d5 Fix system proxy config resolver constructor 2018-03-20 10:08:58 +03:00
Samuel Attard
f2edd5d068 v8 proxy service has been removed 2018-03-20 10:08:58 +03:00
Samuel Attard
f0ef11b856 BlockingPool has been removed 2018-03-20 10:08:58 +03:00
Samuel Attard
12066a60f3 make_scoped_refptr --> WrapRefCounted 2018-03-20 10:08:58 +03:00
Samuel Attard
4666879f94 WebContentsObserver no longer provides explicit_set, we can calculate it 2018-03-20 10:08:57 +03:00
Samuel Attard
fb55db665c AllowCertificateError no longer sends overridable 2018-03-20 10:08:57 +03:00
Samuel Attard
7f50c3d08e TracingController -> Coordinator -- content tracing now uses 'endpoints' instead of 'sinks' 2018-03-20 10:08:57 +03:00
Samuel Attard
461e33104e HandleCommand now takes session_id and returns success boolean. It is assumed a nullptr from the handler means failure 2018-03-20 10:08:57 +03:00
Samuel Attard
ed992ae6a1 trackable_object has moved to base namespace 2018-03-20 10:08:57 +03:00
Aleksei Kuzmin
b608152c41 Update Chrome version to 63.0.3239.84 2018-03-20 10:08:57 +03:00
Aleksei Kuzmin
5cf1ef7be0 Update clang revision to match Chromium 63.0.3239.70 2018-03-20 10:08:57 +03:00
Aleksei Kuzmin
6649a82776 Use libcc with Chromium 63 2018-03-20 10:08:57 +03:00
Samuel Attard
0ac883c6d4 Remove the race condition between new process creation and context release (#12342)
* Remove the race condition between new process creation and old process releasing remote context

Previously there was a race condition where the getId() method would return the new context ID even
though the release was for the old context.  This changes it to send the "initial" context ID with
the release message to ensure there is no race.

* fetch context ID from remote in sandbox mode
2018-03-20 15:54:47 +11:00
Birunthan Mohanathas
20a0508a16 Update draggable regions when changing BrowserView
Fixes #12150.
2018-03-19 20:45:42 +02:00
Birunthan Mohanathas
42934a1006 Make BrowserView DragRegionViews children of the WebContents view
Previously they were children of the `InspectableWebContentsView` view,
which caused this assertion to fail:

f993888424/brightray/browser/mac/bry_inspectable_web_contents_view.mm (L162)
2018-03-19 20:45:40 +02:00
Birunthan Mohanathas
3b8ddd0997 Use NSView convertRect:toView: for BrowserView DragRegionView positioning 2018-03-19 20:44:05 +02:00
Birunthan Mohanathas
377e6c3210 Rename system_drag_exclude_areas => drag_exclude_rects 2018-03-19 20:44:05 +02:00
Birunthan Mohanathas
61160ff9e5 Store InspectableWebContents instead of InspectableWebContentsView in NativeBrowserView 2018-03-19 20:44:05 +02:00
Shelley Vohr
9599615b23 Fix nil tray title crash (#12352)
* Add check for title_ being nil

* remove print stub
2018-03-19 10:49:39 -05:00
John Kleinschmidt
6b80865bfe Merge pull request #12351 from electron/update-to-node8
Update CI to use Node.js 8
2018-03-19 11:04:52 -04:00
John Kleinschmidt
ed1c84445c Update CI to use Node 8 2018-03-19 10:19:32 -04:00
Cheng Zhao
f993888424 Merge pull request #12328 from electron/delay_load
Use same delay-load settings in both debug and release
2018-03-17 11:32:30 +09:00
Birunthan Mohanathas
6f6f388f38 Fix non-draggable regions on macOS (#12327)
This was a regression in 503b0ba1.
2018-03-17 06:49:11 +09:00
Charles Kerr
558ef7352d Better GTK+ Menu color support (#12300)
* Better GTK+ Menu color support

 * Fix 'invisible menu' issue (#12275)

 * Now updates menu text color when focus changes!

 * Better caching of colors when system theme changes

 * Removed all GTK+ deprecation warnings from menubar

* Don't highlight menu text on mouseover in GTK+

* Fix textColor declaration scope error

* Simplify FocusManager connection management a bit

* Make the linter happy

* Decouple MenuBar view recoloring from rebuilding

This way we don't need to rebuild the subview each time a recolor
is needed, e.g. when window focus changes or the system theme changes

* Don't iterate child views if we don't need to

* Move variable declaration outside of a loop

* More efficient iteration of MenuBar children

* Cleaner MenuButton bounds testing

* Fix oops

* Add a nullptr check in MenuBar::GetItemCount()

* Simplify iteration in MenuBar::RebuildChildren()

* Make the linter happy

* Fix signed-unsigned comparison

* Remove declarations of nonexistent methods

* Make SubmenuButton accessor const

* Cleaner accelerator iteration

* Windows fixes
2018-03-17 06:37:36 +09:00
Shelley Vohr
31d688ad3d Check menu.popup options are an object (#12325)
* check menu.popup options are an object

* Add a spec for menu.popup options check

* remove stray .only
2018-03-17 06:31:10 +09:00
Ales Pergl
84ce3a9ea1 Use same delay-load settings in both debug and release 2018-03-16 17:10:38 +01:00
Robo
792837bd71 net: change mime type deduction in Change URLRequestAsarJob (#12319) 2018-03-16 16:48:26 +09:00
Samuel Attard
e93c587b8e Delete .node-version (#12304)
This removes the .node-version file, it is a source of confusion and not incredibly useful.

It doesn't actually indicate the version of node that Electron uses, it's like a development helper that sets the version of node you should be using locally when devving on Electron.  Not many major tools use it so too remove confusion I think we should remove it
2018-03-16 10:12:12 +09:00
zhao-lin-li
bb73a0e2cb Update example code (#12315)
path and url needed to be require'd
2018-03-16 07:20:51 +09:00
Felix Rieseberg
243ab45111 🔧 Fix security warning (#12309) 2018-03-16 06:21:38 +09:00
John Kleinschmidt
71c3483f55 Fix AttributeError: 'dict' object has no attribute 'required' 2018-03-15 13:20:41 -04:00
Samuel Attard
4b476f13bb Revert "Fixes electron/electron#12147" (#12293)
* Revert "Set appropriate defaults for webview options (#12271)"

This reverts commit c2673aa970.

* Revert "Fixes electron/electron#12147 (#12193)"

This reverts commit f54c94d6c9.
2018-03-15 16:18:36 +09:00
Birunthan Mohanathas
2681e769a6 Document BrowserView.{destroy,isDestroyed} (#12274) 2018-03-15 16:15:56 +09:00
Charles Kerr
c2673aa970 Set appropriate defaults for webview options (#12271)
* Persist defaults to webPreferences object to JS land can read the inferred values instead of just user defined values

* Test inherited default propogation

* Refactor to remove coupling from fetching values and defaults

* Test description type

* Fix up tests
2018-03-15 13:56:46 +09:00
nous-
f54c94d6c9 Fixes electron/electron#12147 (#12193) 2018-03-15 13:29:32 +09:00
Shelley Vohr
9aeb61181a Fix require on network share path (#12282)
* first pass at server/network require fix

* refactor for clarity
2018-03-15 11:45:13 +09:00
Jacob Groundwater
1f8de33e75 Change Contact Emails (#12278) 2018-03-15 04:37:40 +09:00
Samuel Attard
9ed9885c8d fix remote setInterval flake (#12263) 2018-03-14 14:51:47 +09:00
OJ Kwon
e7181eb89c feat(powerMonitor): expose interface to query system idle state (#11807)
* feat(BrowserWindow): expose interface to query system idle state

* test(BrowserWindow): update test cases for querySystemIdle interface

* docs(BrowserWindow): add querySystemIdle interface documentation

* refactor(powerMonitor): move querySystemIdle into powerMonitor

* test(powerMonitor): split test cases for all platform
2018-03-14 14:42:08 +09:00
Samuel Attard
90dc897f71 add missing report.length > 1 assertion (#12257) 2018-03-14 13:14:29 +09:00
Samuel Attard
8993a2c6ed Enable easy rebuild of native modules for unreleased electron (#12217)
* Enable easy rebuild of native modules for unreleased electron

Sometimes when developing locally (as I found this morning) you want to rebuild native modules
against an unreleased version of Electron (in this case local master).  This PR adds a simple
script to launch a local HTTP server that generates and hosts the required header and checksum
files to rebuild modules.  So far only tested on macOS but should work on all OS's

* Allow custom port

* clean up serve script

* make optionality more obvious
2018-03-14 12:59:18 +09:00
Hari Juturu
704af29543 Exposing process.env status (#12166) 2018-03-14 12:01:40 +09:00
Cheng Zhao
134872e9c1 Merge pull request #12198 from electron/fix_crash_handler
Fixed passing of exception to the system crash handler
2018-03-14 11:40:11 +09:00
Robo
e741bc0577 fix crash when using getWebPreferences api with devtools webContents (#12254) 2018-03-14 11:19:22 +09:00
Samuel Attard
e62349cffb Merge pull request #12253 from felixrieseberg/fix-last-crash-report
fix: Ensure that `getLastCrashReport()` is actually the last crash report
2018-03-14 10:36:27 +09:00
Samuel Attard
8664dd2139 Merge pull request #12190 from electron/fix-double-preload-master
Ensure that a document has been created before sending IPC messages
2018-03-14 10:34:05 +09:00
Felix Rieseberg
ee67211035 🔧 Linter's gotta lint 2018-03-13 17:41:02 -07:00
Felix Rieseberg
582ef30b4a 👷 Tests, how do they work 2018-03-13 17:35:55 -07:00
Felix Rieseberg
1b3568e66e 👷 Fancy test 2018-03-13 17:28:15 -07:00
Felix Rieseberg
3575dae75c 🔪 Cut typo 2018-03-13 16:58:40 -07:00
Felix Rieseberg
673335de4b 🔧 Actually test the method 2018-03-13 16:51:20 -07:00
Vanessa Yuen
48dd8f96b7 Fix broken links (#12232)
* Update system-preferences.md

* Fix broken documentation links.
2018-03-14 08:07:36 +09:00
Felix Rieseberg
72579f9bab 🔧 Sort crashes 2018-03-13 13:57:12 -07:00
John Kleinschmidt
5a81cfbbc6 Merge pull request #12241 from electron/sw-file-scheme-flaky-patch
spec: isolate sw file scheme spec storage with temp partition
2018-03-13 13:30:43 -04:00
deepak1556
c3bcb606a9 spec: isolate sw file scheme spec storage with temp partition 2018-03-14 02:03:55 +09:00
Samuel Attard
8e07e7483f Merge pull request #12228 from electron/fix-window-open-not-showing
Parent's visibility trumps inherited 'show' option
2018-03-13 17:41:00 +09:00
Charles Kerr
e400585a0e Apply further ES6 bikeshedding 2018-03-13 17:09:47 +09:00
Shelley Vohr
e648662cfd Add config for trop (backporting bot) (#12238)
* add config for trop

* backportWhitelist => authorizedUsers
2018-03-13 16:39:50 +09:00
Charles Kerr
2d90e763ad Use idiomatic ES6 when merging options 2018-03-13 16:23:39 +09:00
Charles Kerr
379bd79de4 Remove unnecessary work when merging options 2018-03-13 16:18:50 +09:00
Charles Kerr
e4d5ae53fc Add tests 2018-03-13 15:55:48 +09:00
Felix Rieseberg
71795ecc62 fix: Incorrect warnings in webviews (#12234)
* 🔧 Get correct webContents

* 🔧 Err, webPreferences
2018-03-13 10:55:32 +09:00
Charles Kerr
685948bcaa Parent's visibility trumps inherited 'show' option 2018-03-13 00:28:34 +09:00
Charles Kerr
dd2c2660b9 Fix desktop-id notification edge case (#12216)
* Fix desktop-id notification edge case

* Extract-method platform_util::GetDesktopName()

This removes duplicated code from libnotify_notifications.cc
and atom/common/linux/application_info.cc.

* Check for empty case in GetDesktopName().

* Move GetDesktopName() to brightray::util

* Remove unnecessary changes in platform_util

* Add a brightray::platform_util namespace
2018-03-12 16:02:47 +09:00
Charles Kerr
86af20ded0 Linux named notifications (#12192)
* Set name & desktop-entry on Linux notifications

* DBusMock now honors verbose mode flag

* Disable DBus Notification tests on ia32
2018-03-12 09:33:06 +09:00
Phil Freo
9d090e00f2 Make link to related guide/tutorial more obvious (#12204)
It's generally not a good practice to just link the word "here"
2018-03-10 23:04:07 +09:00
John Kleinschmidt
e085c01a2e Merge pull request #12202 from electron/readme-heading
Add heading for README
2018-03-09 14:29:42 -05:00
Vanessa Yuen
9c0e579bd3 Add heading for README 2018-03-09 20:16:56 +01:00
Robo
06bf72da67 remove process preference lock from AtomBrowserClient (#12194) 2018-03-09 12:37:26 -05:00
Ales Pergl
4673c67835 Fixed passing of exception to the system crash handler 2018-03-09 15:46:27 +01:00
John Kleinschmidt
f685e389d3 Merge pull request #12196 from electron/fix_run_as_node
Fixed Mac build when enable_run_as_node==false
2018-03-09 09:22:42 -05:00
Ales Pergl
94299f6cd8 Fixed Mac build when enable_run_as_node==false 2018-03-09 13:33:04 +01:00
deepak1556
2bf1131dab add NOLINT rule for include order in renderer_client_base 2018-03-09 15:19:07 +05:30
deepak1556
3cfe66e4c3 move ipc use from rvh to rfh 2018-03-09 15:01:09 +05:30
Charles Kerr
0d12fc3033 Make the linter happy 2018-03-09 17:03:00 +09:00
Cheng Zhao
30405a3441 Merge pull request #12101 from electron/upgrade-node-v9.7.0
Update to node v9.7.0
2018-03-09 16:41:23 +09:00
Cheng Zhao
e79b18762e Enter context scope before InternalCallbackScope 2018-03-09 16:14:24 +09:00
Cheng Zhao
83f01096c0 When a render process is crashed, it might be reused 2018-03-09 16:13:51 +09:00
Cheng Zhao
5d2452608d Use InternalCallbackScope for ticking event loop 2018-03-09 15:23:40 +09:00
deepak1556
50a5a69c46 update node ref fixing crash with buffer allocation 2018-03-09 15:23:40 +09:00
Shelley Vohr
1882b88c78 clean node ref and remove short circuit 2018-03-09 15:23:39 +09:00
deepak1556
3fea581ec8 build node target for <(node_lib_target_name) 2018-03-09 15:23:39 +09:00
Shelley Vohr
c8ef15cf40 update node::Environment::TickInfo calls 2018-03-09 15:23:39 +09:00
Shelley Vohr
e3bb3c3906 node => node_lib and V8_BASE => v8_base 2018-03-09 15:23:38 +09:00
Shelley Vohr
d88fa8b787 OPENSSL_PRODUCT => openssl_product 2018-03-09 15:23:38 +09:00
Shelley Vohr
068f0cce96 update node ref to electron-node-v9.7.0 2018-03-09 15:23:38 +09:00
Cheng Zhao
cf36fdecbf Skip client-certificate test for Linux (#12189) 2018-03-09 14:43:49 +09:00
Samuel Attard
a9dcce82ed Ensure that a document has been created before sending IPC messages
* Reverts 370476c4af in favor of moving the previous logic to the new RenderFrameObserver instead of RenderViewObserver

Fixes #12045
2018-03-09 14:24:56 +11:00
Charles Kerr
5f48f91d94 Newer CI images (#12188)
* Bump electronbuilds/electron* versions

The linux-appname branch has been gathering dust for awhile.
Some of the versions in `master` are higher, and some of the
versions in `linux-appname` are higher to add libnotify.

This commit takes the higher of the two numbers in each case.

* Add libnotify to the Dockerfiles
2018-03-08 22:07:50 -05:00
Cheng Zhao
15503a3b9e Merge pull request #12187 from electron/ia32-more-debug
Enable more debug info for electron-linux-ia32
2018-03-09 12:00:10 +09:00
Cheng Zhao
5c15d263e0 Enable more debug info for electron-linux-ia32 2018-03-09 11:06:42 +09:00
Cheng Zhao
cde0c1d418 Print detailed error for serviceWorker test (#12186) 2018-03-08 21:06:29 -05:00
Cheng Zhao
44c66fc284 Merge pull request #12167 from lyallh/menubar-autohide-fix
Fix menubar toggle alt key detection on focus
2018-03-09 10:13:32 +09:00
Cheng Zhao
3885674877 Merge pull request #12080 from electron/build-on-arm64-hw
Allow CI testing on arm64 hardware
2018-03-09 08:54:32 +09:00
Aleš Pergl
0937b84b01 Use content origin in screen coordinates for calculating popup menu position (#12180) 2018-03-09 05:48:35 +09:00
Cheng Zhao
51f89048d6 Use bundled freetype from Chromium 2018-03-08 10:47:19 -05:00
John Kleinschmidt
134d3f98c9 Allow CI building on arm64 hardware 2018-03-08 09:53:47 -05:00
Lyall Hamilton
ba24920fec Fix menubar toggle alt key detection on focus
Reset alt keypress flag on window blur so switching window via
Alt+* window manager keybindings can't incedentally trigger
annoying menubar toggles
2018-03-08 21:48:43 +13:00
Jake
569b87ff83 Added session-created event documentation (#12123)
* Added session-created event documentation 

Emitted at 1c0ea0286e/lib/browser/api/session.js (L21)

* Removed trailing spaces
2018-03-08 11:32:52 +09:00
Samuel Attard
8c138e74be More vibrancy fixes (#12157)
* Only set title bar to transparent when vibrant with a custom titlebar
* Correctly set the transparent state of the GpuSwitcher so vibrancy works on reload
* Document case where using frame: false without custom titleBarStyle and vibrant
2018-03-07 11:40:36 -05:00
Hari Juturu
2f4fd3324b Preload doesn't load in sandboxed render if preload path contains special chars (#12037)
* Adding missing headers

* adding ut

* Removing the file path exists check

* fixing test

* exposing window.require in UT
2018-03-07 11:40:00 -05:00
Andreas
69e7afee26 fix dev tools window interfering with mouse forward (#12132) 2018-03-07 07:44:55 -05:00
Samuel Attard
fdab98aa59 Merge pull request #12155 from electron/modify-deprecation-guarantee
Deprecations come >=1 major release before removal
2018-03-07 23:28:05 +11:00
Charles Kerr
35a512310a Merge branch 'master' into add-env-to-release-docs 2018-03-07 16:38:14 +09:00
Charles Kerr
3b2a494033 Update to master. 2018-03-07 16:32:36 +09:00
Charles Kerr
b0820e4886 Fix broken link 2018-03-07 16:18:47 +09:00
Charles Kerr
4ab7b2d2b1 Deprecations come >=1 major release before removal 2018-03-07 16:12:28 +09:00
Shelley Vohr
c31bf8474c clean planned breaking changes for 3.0 (#12145) 2018-03-07 16:06:33 +09:00
Cheng Zhao
cc6bcb6c81 Fix some flaky tests in CI (#12153)
* Guard whole InitPrefs with ScopedAllowIO

Saw a crash:
0 0x7f8d2f7d918d base::debug::StackTrace::StackTrace()
1 0x7f8d2f7d755c base::debug::StackTrace::StackTrace()
2 0x7f8d2f867caa logging::LogMessage::~LogMessage()
3 0x7f8d2fa157c7 base::ThreadRestrictions::AssertIOAllowed()
4 0x7f8d2f83453a base::OpenFile()
5 0x7f8d2f82a967 base::ReadFileToStringWithMaxSize()
6 0x7f8d2f82ad44 base::ReadFileToString()
7 0x7f8d2f846f73 JSONFileValueDeserializer::ReadFileToString()
8 0x7f8d2f84738c JSONFileValueDeserializer::Deserialize()
9 0x7f8d35a5d1f6 <unknown>
10 0x7f8d35a5c217 JsonPrefStore::ReadPrefs()
11 0x7f8d35a87d3e PrefService::InitFromStorage()
12 0x7f8d35a87c60 PrefService::PrefService()
13 0x7f8d35a91a10 PrefServiceFactory::Create()
14 0x000000e86e1b brightray::BrowserContext::InitPrefs()
15 0x000000c2bd64 atom::AtomBrowserContext::AtomBrowserContext()
16 0x000000c320db atom::AtomBrowserContext::From()
17 0x000000b4b8b5 atom::api::Session::FromPartition()

* Fix done being called twice in setInterval test

The callback passed to browser process is called asyncly, so it is
possible that multiple callbacks has already been scheduled before we
can clearInternval.

* Fix failing test when dir name has special chars

The pdfSource is not escaped while parsedURL.search is.

* Call done with Error instead of string

* Fix crash caused by not removing input observer

Solve crash:
0 libcontent.dylib content::RenderWidgetHostImpl::DispatchInputEventWithLatencyInfo(blink::WebInputEvent const&, ui::LatencyInfo*) + 214
1 libcontent.dylib content::RenderWidgetHostImpl::ForwardMouseEventWithLatencyInfo(blink::WebMouseEvent const&, ui::LatencyInfo const&) + 1350
2 libcontent.dylib content::RenderWidgetHostViewMac::ProcessMouseEvent(blink::WebMouseEvent const&, ui::LatencyInfo const&) + 44
3 libcontent.dylib content::RenderWidgetHostInputEventRouter::RouteMouseEvent(content::RenderWidgetHostViewBase*, blink::WebMouseEvent*, ui::LatencyInfo const&) + 1817

* Print detailed error

* Run tests after server is ready
2018-03-07 14:40:27 +09:00
Charles Kerr
65ee977a86 Exit gracefully on linux (#12139)
* Fix timing issue in singleton fixture.

Singleton now sends the "we've started" message out only after it's
received a `'ready'` event from `app`. Previously it sent the message
out immediately, resulting in the parent test trying to manipulate it
before Singleton's event loop was fully bootstrapped.

* Check for graceful exits on Linux, too.

Rewrite the "exits gracefully on macos" spec to run on Linux too.

* Check for graceful exits everywhere.

* Tweak comment

* Better error logging in api-app-spec.js. (#12122)

In the 'exits gracefully' test for app.exit(exitCode),
print the relevant error information if the test fails.

* Run the exit-gracefully test on macOS and Linux.

Windows does not support sending signals, but Node.js offers some
emulation with process.kill(), and subprocess.kill(). Sending signal 0
can be used to test for the existence of a process. Sending SIGINT,
SIGTERM, and SIGKILL cause the unconditional termination of the target
process.

So, we'll need a different approach if we want to test this in win32.
2018-03-06 22:01:17 -05:00
br0nstein
f170914def Fix getFocusedWindow return type (#12149) 2018-03-07 10:23:02 +09:00
Cheng Zhao
ea9d33374f Merge pull request #12140 from electron/native-window-no-web-contents
Refactor NativeWindow (Part 2):  NativeWindow is no longer WebContentsObserver
2018-03-07 10:12:37 +09:00
Vanessa Yuen
7f664aa18c Merge pull request #12105 from electron/update-references-to-renamed-i18n-repo
update references to renamed i18n repo
2018-03-06 19:08:20 +00:00
shelley vohr
1413f22095 Merge pull request #12103 from electron/fix-broken-links
[docs] switch footnote links to regular links syntax
2018-03-06 07:52:08 -08:00
shelley vohr
a3e33a313a Merge pull request #12131 from nitsakh/xcode-debugging
Add XCode debugging doc
2018-03-06 07:34:05 -08:00
Cheng Zhao
411da169ac Repect old logic in windowWillUseStandardFrame 2018-03-06 16:54:20 +09:00
Cheng Zhao
78468098c5 Don't store WebContents in NativeWindow 2018-03-06 16:21:18 +09:00
Cheng Zhao
9000bd6679 views: Explicitly set initially focused view 2018-03-06 16:21:18 +09:00
Cheng Zhao
413fdc6f0d views: Show menu on window's content view 2018-03-06 16:21:18 +09:00
Cheng Zhao
9c7854aef6 NativeWindow is no longer WebContentsObserver 2018-03-06 16:21:18 +09:00
Cheng Zhao
bf862d1d07 views: Focus webContents in BrowserWindow 2018-03-06 16:21:17 +09:00
Cheng Zhao
8bbe28e998 No need to get BrowserContext from NativeWindow 2018-03-06 16:21:17 +09:00
Cheng Zhao
702f1631a3 Remove NativeWindow::FromWebContents 2018-03-06 16:21:17 +09:00
Cheng Zhao
eea4e60b73 Remove NativeWindow's webview APIs 2018-03-06 16:20:37 +09:00
Cheng Zhao
5a4c2fb61d mac: Pass the view to install 2018-03-06 16:20:37 +09:00
Cheng Zhao
498f5d65fd mac: UninstallView is not used 2018-03-06 16:20:37 +09:00
Cheng Zhao
3b3e69f8b2 Save browser_view_ in the NativeWindow
No need to store it separately in subclasses.
2018-03-06 16:20:37 +09:00
Cheng Zhao
503b0ba1b1 mac: Move draggable region code to BrowserWindow
On macOS current draggable region implementation highly relies on
WebContents, the code is only meaningful for BrowserWindow.
2018-03-06 16:20:37 +09:00
Cheng Zhao
bc34ca9e25 mac: Call setMouseDownCanMoveWindow in BrowserWindow 2018-03-06 16:20:37 +09:00
Cheng Zhao
7d4ff3b061 mac: Call SetBackgroundOpaque in BrowserWindow 2018-03-06 16:20:37 +09:00
Cheng Zhao
8a1884c407 mac: AcceleratedWidget should be window's content view 2018-03-06 16:20:37 +09:00
Cheng Zhao
e7f175d578 Only mac needs to call SetActive 2018-03-06 16:20:37 +09:00
Cheng Zhao
4c7b48e596 mac: Window's native view should be its content view 2018-03-06 16:20:37 +09:00
Cheng Zhao
1681ee35db Set WebContents background color in BrowserWindow 2018-03-06 16:20:37 +09:00
Cheng Zhao
7b8890a4c9 web_contents can't be null 2018-03-06 16:20:37 +09:00
Cheng Zhao
2eaa6d0874 Move StoreFocus/RestoreFocus to BrowserWindow 2018-03-06 16:20:37 +09:00
Cheng Zhao
cad3d694ab mac: Remove access to webContents in windowWillUseStandardFrame 2018-03-06 16:20:37 +09:00
Cheng Zhao
e73326a324 Merge pull request #11613 from electron/safe-dialogs
Implement dialog (alert/confirm) blocking as a user switch after the first dialog
2018-03-06 14:28:53 +09:00
Cheng Zhao
90bd1fd7e9 Native confirm/alert throws differently 2018-03-06 14:06:29 +09:00
Cheng Zhao
ca42325ade Make OnMessageBoxCallback a method since it is accessing members 2018-03-06 11:35:53 +09:00
Cheng Zhao
7516b059fe Code style fixes 2018-03-06 11:31:56 +09:00
Cheng Zhao
d8f16f4116 docs: Default message is not localized 2018-03-06 11:24:42 +09:00
Cheng Zhao
26a071ea00 docs: Defaults of safeDialogs 2018-03-06 11:21:40 +09:00
Samuel Attard
7dec3c9320 Fixup cpplint 2018-03-06 11:19:15 +09:00
Samuel Attard
731240e0e9 Use USER_WANTS_NO_MORE_DIALOGS constant for -1 magic number 2018-03-06 11:19:15 +09:00
Charles Kerr
a5a068b2ee fix cpplint errors
atom/browser/atom_javascript_dialog_manager.cc:39:  Lines should be <= 80 characters long  [whitespace/line_length] [2]
atom/browser/atom_javascript_dialog_manager.cc:39:  If/else bodies with multiple statements require braces  [readability/braces] [4]
atom/browser/atom_javascript_dialog_manager.cc:62:  Lines should be <= 80 characters long  [whitespace/line_length] [2]
atom/browser/atom_javascript_dialog_manager.cc:89:  If/else bodies with multiple statements require braces  [readability/braces] [4]
2018-03-06 11:19:15 +09:00
Charles Kerr
2435ffaf09 fix cpplint error
atom/browser/atom_javascript_dialog_manager.h:9:  Include "map" not in alphabetical order  [build/include_alpha] [4]
2018-03-06 11:19:15 +09:00
Samuel Attard
795447f61a Implement dialog (alert/confirm) blocking as a user switch after the first dialog
* This is to enable more browser-like behavior so that users who run third-party code
  will not be DOS'ed with alerts and confirms.  This is already handled like this
  in most major browsers so this will greatly help these developers
2018-03-06 11:19:15 +09:00
shelley vohr
a3d4d461a3 Merge pull request #12135 from electron/deprecate-getMenuBarHeight
deprecate screen.getMenuBarHeight
2018-03-05 17:56:51 -08:00
Shelley Vohr
3635872f37 remove screen.getMenuBarHeight spec 2018-03-05 20:10:34 -05:00
Shelley Vohr
199cf31b9e deprecate screen.getMenuBarHeight 2018-03-05 19:45:51 -05:00
Nitish Sakhawalkar
dc29b3add1 Add XCode debugging doc 2018-03-06 00:03:14 +05:30
Charles Kerr
642dc96956 Add optional verbose switch '-v' to build script. (#12118)
* Add optional verbose switch '-v' to build script.

* Remove tracer comment.

* Add --ninja-path switch.

For compatiblity with https://github.com/electron/electron/pull/12120
2018-03-06 03:27:58 +09:00
Charles Kerr
e9808d138f Better error logging in api-app-spec.js. (#12122)
In the 'exits gracefully on macos' test for app.exit(exitCode),
print the relevant error information if the test fails.
2018-03-06 03:13:47 +09:00
Samuel Attard
b530d70a7b Merge pull request #12058 from philfreo/patch-1
Include backtrace i/o as a crash reporter backend option
2018-03-06 05:13:18 +11:00
John Kleinschmidt
1005a63130 Merge pull request #12127 from electron/set-dev-version-everywhere
Use version 0.0.0-dev everywhere
2018-03-05 12:28:55 -05:00
Aleksei Kuzmin
52c0864cb8 Use version 0.0.0-dev everywhere 2018-03-05 16:24:48 +01:00
John Kleinschmidt
3a55e5b384 Merge pull request #12113 from electron/FranzDeCopenhague-patch-1
Fix typo found during the Spanish translation
2018-03-05 10:08:17 -05:00
Franz de Copenhague
847cf17b77 Fix typo found during the Spanish translation 2018-03-04 10:07:46 -08:00
Zeke Sikelianos
e9de194b89 update references to renamed i18n repo 2018-03-02 12:05:49 -08:00
Sofia Nguy
e76d5bc7cf switch links to regular syntax 2018-03-02 10:41:55 -08:00
Adrien Fery
6d82966ebe Update inAppPurchase API doc (#12072)
* Update inAppPurchase API doc

`addTransactionsListener` is no longer supported. Users have to listen for the `transactions-updated` event instead.

* Tweak `transactions-updated` timing description

Make the documentation edit suggested by @felixrieseberg and thumbs-upped by @AdrienFery
2018-03-02 07:25:37 -06:00
Tiago Danin
efeabfe3ef 📝 Fix url to unity-launcher and tiny correction (#12084) 2018-02-28 18:28:40 -06:00
Phil Freo
738b10adea Include backtrace i/o as a crash reporter backend option
Note: I have no affiliation with this company - just thought this would be helpful for people
2018-02-28 14:21:14 -05:00
shelley vohr
dfa1dc43df Merge pull request #12059 from electron/add-tabbedwindow-warning
add warning when addTabbedWindow is called on self
2018-02-28 01:18:10 -08:00
Shelley Vohr
bf491de9fe fix styling and add spec 2018-02-28 00:22:42 -08:00
Shelley Vohr
2abc69780e move native-mate back into the api layer 2018-02-27 13:00:42 -08:00
Zeke Sikelianos
1db05a2655 Merge pull request #12067 from electron/fix-typo-in-inAppPurchase-API-doc
fix typo in inAppPurchase API doc
2018-02-27 11:07:45 -08:00
Zeke Sikelianos
b05d818f45 fix typo in inAppPurchase API doc 2018-02-27 10:22:29 -08:00
Shelley Vohr
837a2d4bbd appease the linter 2018-02-26 22:25:09 -08:00
Cheng Zhao
35cbe9d140 Fix dockMenu not being referenced in JavaScript (#12062)
* Fix dockMenu not being referenced in JavaScript

* spec: Test garbage collecting dock menu
2018-02-26 22:15:06 -08:00
Samuel Attard
b722150d87 Don't cast manually for NativeWindow* 2018-02-27 16:13:17 +11:00
Samuel Attard
5336b4a89c Pass arguments instance through the chain in order to throw error 2018-02-27 16:11:58 +11:00
Shelley Vohr
e84d7c0cda add warning when addTabbedWindow is called on self 2018-02-26 14:47:36 -08:00
Cheng Zhao
53229e3d6c Fix network delegate race condition (#12044)
* Fix race condition when getting network delegate

* Remove the evil URLRequestContextGetter::network_delegate

* Move the arguments instead of const referrencing

Safer and more efficient.
2018-02-26 06:23:59 -08:00
Cheng Zhao
fdd66bd76d Merge pull request #11607 from bughit/frame_navigation_api
frame navigation API
2018-02-26 15:50:11 +09:00
Cheng Zhao
ccf30e0934 Coding style fixes 2018-02-26 15:19:44 +09:00
Cheng Zhao
25f04d5b03 Fix descriptions to make docs parser happy 2018-02-26 15:05:46 +09:00
Cheng Zhao
f7786a9e48 Merge pull request #11230 from electron/upgrade-to-chromium-62
Upgrade to Chromium 62
2018-02-26 14:20:21 +09:00
shelley vohr
cc608a3fb0 Merge pull request #12043 from kaylieEB/fix-menu-item
Fix context menu click callback
2018-02-25 17:33:32 -08:00
kaylie
da9f12d1e2 restore old cb 2018-02-25 14:19:40 -08:00
Samuel Attard
35cc197d0b Quick typo (#12040) 2018-02-25 09:11:18 -06:00
shelley vohr
18362eb948 improve Menu and MenuItem testing (#12015)
* split menu/menuitem and add some tests

* fix ipc send issue

* feedback: make tests less brittle

* clean up MenuItem accelerator and label tests
2018-02-23 07:53:59 -06:00
Cheng Zhao
3948323a8c Update libcc to latest chrome62 2018-02-23 10:23:53 +09:00
Aleksei Kuzmin
7e3b690257 Update libcc revision 2018-02-23 10:22:00 +09:00
Cheng Zhao
b9ab2fe0fb Disable stack dumping for 32bit ARM 2018-02-23 10:22:00 +09:00
Cheng Zhao
81c23b84e7 Fix error when cross compilation 2018-02-23 10:22:00 +09:00
Cheng Zhao
b25175a19a Fix assertion when get X11 error in new thread 2018-02-23 10:22:00 +09:00
Cheng Zhao
39e0433570 Fix build error after rebasing 2018-02-23 10:22:00 +09:00
Cheng Zhao
9d05c59600 node.so should link with libc++.so 2018-02-23 10:22:00 +09:00
Cheng Zhao
2fcf2c81bf Make sure --sysroot is appended at last 2018-02-23 10:22:00 +09:00
Cheng Zhao
9fec1a3cb4 Link with libcc's libc++ on Linux 2018-02-23 10:22:00 +09:00
Cheng Zhao
b7b40d9c3a Fix linking error with atomic 2018-02-23 10:22:00 +09:00
shelley vohr
653ceb9860 update update submodule ref for updated node 9.3.0 (#11708) 2018-02-23 10:22:00 +09:00
shelley vohr
0e5b6f9300 Upgrade to node v9.3.0 (#11507)
* update submodule refs for node v9.3.0

* Define "llvm_version" for Node.js build

* NODE_MODULE_CONTEXT_AWARE_BUILTIN -> NODE_BUILTIN_MODULE_CONTEXT_AWARE

* update NodePlatform to MultiIsolatePlatform

* fix linting error

* update node ref

* REVIEW: Explicitly register builtin modules

https://github.com/nodejs/node/pull/16565

* update libcc ref

* switch libcc to c62

* REVIEW: Address node api changes

- Always start the inspector agent for https://github.com/nodejs/node/pull/17085
- Set the tracing controller for node https://github.com/nodejs/node/pull/15538
- Isolate data creation now requires plaform https://github.com/nodejs/node/pull/16700
2018-02-23 10:22:00 +09:00
Aleksei Kuzmin
31eb5e26e3 Update libcc reference 2018-02-23 10:21:24 +09:00
Cheng Zhao
12b37c7386 Update node: Fix crash when doing crypto operation 2018-02-23 10:21:24 +09:00
deepak1556
7cad5d0cd2 update libcc for loading service worker under file scheme 2018-02-23 10:21:24 +09:00
Cheng Zhao
e6bad6e183 Update sysroot images to fix linking error 2018-02-23 10:21:24 +09:00
Aleksei Kuzmin
f5d207f8f0 Improve process launch handle sharing API.
https://codereview.chromium.org/2950153002
2018-02-23 10:21:24 +09:00
Cheng Zhao
da7fc54e37 Update sysroot to Debian Stretch 2018-02-23 10:21:24 +09:00
Aleksei Kuzmin
0ec2eba2a3 Add init_webrtc lib to the list of static libraries 2018-02-23 10:21:24 +09:00
Aleksei Kuzmin
dcb369ee46 Fail "navigator.serviceWorker" tests if WebContents crashes 2018-02-23 10:21:24 +09:00
deepak1556
041b32b01f remove invalid cookie_details.h filename from brightray 2018-02-23 10:21:24 +09:00
deepak1556
cdab073614 FIX: add chrome-devtools:// to list of WebUI schemes
https://chromium-review.googlesource.com/c/chromium/src/+/617598
2018-02-23 10:21:24 +09:00
Aleksei Kuzmin
fbd5e4c2b3 Disable the "ffi" module test 2018-02-23 10:21:24 +09:00
deepak1556
5eb0a89579 REVIEW: let browser context manage cookie change sub list 2018-02-23 10:21:24 +09:00
Aleksei Kuzmin
9fa08fdbc0 Merge views::CustomButton into views::Button.
https://chromium-review.googlesource.com/617407
2018-02-23 10:21:24 +09:00
Aleksei Kuzmin
6f00e4a014 REVIEW: Implements core logic for Pixel Canvas
https://codereview.chromium.org/2877483003
2018-02-23 10:21:24 +09:00
deepak1556
f52f752acd fxedit is removed and pdfwindow renamed to pwl
https://pdfium-review.googlesource.com/c/pdfium/+/8552
https://pdfium-review.googlesource.com/c/pdfium/+/8791
2018-02-23 10:21:24 +09:00
deepak1556
d846c9006e Replace somemore uses of SetStringWithoutPathExpansion 2018-02-23 10:21:24 +09:00
deepak1556
69ca6ccdc1 Remove chrome_utility_messages.h, it's unused 2018-02-23 10:21:23 +09:00
deepak1556
25d966110e FIXME: PDF component IPC should be converted to Mojo.
https://codereview.chromium.org/2455543002
2018-02-23 10:21:23 +09:00
deepak1556
e03f7baa60 gfx::Image::SwapRepresentations is removed in favor of std::move
https://chromium-review.googlesource.com/c/chromium/src/+/588033
2018-02-23 10:21:23 +09:00
deepak1556
62635f43f4 base::LaunchOptions fds_to_remap is no longer a pointer
https://codereview.chromium.org/2950153002
2018-02-23 10:21:23 +09:00
deepak1556
248d572077 REVIEW: Subscribe to cookie store for changes in place of CookieMonsterDelegate 2018-02-23 10:21:23 +09:00
Tomas Rycl
60f69ad77b Removed QuitWhenIdle 2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
b02edd014a Rename CompositionUnderline to ImeTextSpan
https://chromium-review.googlesource.com/609524
2018-02-23 10:21:23 +09:00
Tomas Rycl
024f84f1be chromium_src print_job updated to match current chromium implementation in Quit method 2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
5d870837cf Remove WebCString from Blink
https://chromium-review.googlesource.com/594673
2018-02-23 10:21:23 +09:00
Shelley Vohr
de576fa82e Refactor Skia document type into an enum class
https://chromium-review.googlesource.com/619502
2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
412b9e9ad8 Move IDMap to base namespace.
https://chromium-review.googlesource.com/618801
2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
8f78bd3307 Remove was_ignored_by_handler from frame_messages.h
https://chromium-review.googlesource.com/587701
2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
91a339b625 viz: Move BeginFrame(Args|Ack) to components/viz/common/frame_sinks 2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
1a9b056e93 Move CompositorFrameSink and FrameSinkManager mojom from cc to viz 2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
abc6003640 viz: Move BeginFrameSource to components/viz/common/frame_sinks 2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
76683c0af5 viz: Move CopyOutput(Request|Result)=> components/viz/common/quads 2018-02-23 10:21:23 +09:00
Shelley Vohr
128cb7f5b2 updates to build flags and comp errors 2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
8c0c1e4ded media: Replace ENABLE_PEPPER_CDMS buildflag with ENABLE_LIBRARY_CDMS
https://chromium-review.googlesource.com/582309
2018-02-23 10:21:23 +09:00
Shelley Vohr
e59f788c43 Update submodule ref for node 2018-02-23 10:21:23 +09:00
Tomas Rycl
8d6c7955ad Add path to skia gpu 2018-02-23 10:21:23 +09:00
Shelley Vohr
233679865b fix some more compilation errors 2018-02-23 10:21:23 +09:00
Tomas Rycl
6a61ec7763 Add path to khrplatform.h file 2018-02-23 10:21:23 +09:00
Tomas Rycl
1b866e20c6 REVIEW: Disable warning 4275 on Windows
It prevents Brightray classes to be inherited from other classes
from V8, Chromium, etc...
2018-02-23 10:21:23 +09:00
deepak1556
75c17cf846 Use generic base::Value::SetKey
Remove base::Value::SetDoubleWithoutPathExpansion
https://chromium-review.googlesource.com/591654

Remove base::Value::SetStringWithoutPathExpansion
https://chromium-review.googlesource.com/592368

Remove base::Value::SetIntegerWithoutPathExpansion
https://chromium-review.googlesource.com/591655
2018-02-23 10:21:23 +09:00
Tomas Rycl
8250dbd172 Removing some function parameters 2018-02-23 10:21:23 +09:00
Tomas Rycl
0d83b69fe2 FIXME: Fix brightray::DevToolsNetworkTransaction compilation
See
https://chromium-review.googlesource.com/631119
https://chromium-review.googlesource.com/611089
2018-02-23 10:21:23 +09:00
Shelley Vohr
a6412d0690 Update submodule ref for crashpad 2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
dda64bd652 Use c++14
https://chromium-review.googlesource.com/c/chromium/src/+/583635
2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
9d6db65c7c Set minimum Mac SDK version to 10.12 2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
5783ce0b3c Update chrome_version.h 2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
8ef705ad10 Update clang revision to match Chromium 62.0.3202.89 2018-02-23 10:21:23 +09:00
Aleksei Kuzmin
381cf55434 Use libcc revision based on Chromium 62 2018-02-23 10:21:23 +09:00
Cheng Zhao
15ce235eed Merge pull request #12008 from electron/window-refactor-1
Refactor NativeWindow (Part 1): Remove WebContentsObserver methods
2018-02-23 10:06:34 +09:00
Cheng Zhao
3be92f550c Better clarity and fix typo 2018-02-23 09:15:13 +09:00
John Kleinschmidt
366638b1b9 Merge pull request #12013 from electron/release-fix
Fixes from running 2.0.0-beta.1 release
2018-02-22 10:43:29 -05:00
John Kleinschmidt
fa6510a90c Fixes from running 2.0.0-beta.1 release
This provides the following fixes:
1. Remove logic to delete release branch because that branch is no longer used.
2. Fix --validateRelease to not verifyShasums when release is in draft mode.
2018-02-22 08:53:32 -05:00
Cheng Zhao
816a96c2cc Update font settings in api::WebContents 2018-02-22 19:01:45 +09:00
Cheng Zhao
c87fc2426d Handle transparent WebContents in api::BrowserWindow 2018-02-22 19:01:45 +09:00
Cheng Zhao
c611eb061d Move InputEventObserver to api::BrowserWindow 2018-02-22 19:01:45 +09:00
Cheng Zhao
aa3eafcea1 Move closing logic to api::BrowserWindow
Closing a BrowserWindow is essentially closing a WebContents, the logic
should not be in NativeWindow.
2018-02-22 19:01:45 +09:00
Cheng Zhao
66fab65a1a Add NativeWindowObserver::OnCloseButtonClicked 2018-02-22 19:01:45 +09:00
Cheng Zhao
a25b49a127 Add ExtendedWebContentsObserver 2018-02-22 19:01:45 +09:00
Cheng Zhao
a3124e8873 Use observer to provide OnRendererUnresponsive 2018-02-22 19:01:45 +09:00
Cheng Zhao
bffb31c337 Remove OnMessageReceived from NativeWindow 2018-02-22 19:01:45 +09:00
Cheng Zhao
44e7282b4b The UpdateDraggableRegions does not share implementations 2018-02-22 19:01:45 +09:00
Cheng Zhao
c2aa312e0c Check weak ptr before using it 2018-02-22 19:01:45 +09:00
Cheng Zhao
384b03d49b UpdateDraggableRegionViews is redundant 2018-02-22 19:01:45 +09:00
Cheng Zhao
6650a06339 Move RenderViewCreated logic to api::BrowserWindow 2018-02-22 19:01:45 +09:00
Cheng Zhao
c256a43139 Move ready-to-show to api::BrowserWindow 2018-02-22 19:01:45 +09:00
Cheng Zhao
0d9a157914 Turn api::Window into a WebContentsObserver 2018-02-22 19:01:45 +09:00
Cheng Zhao
47950f7b97 Merge pull request #12004 from electron/window-rename
Rename api::Window to api::BrowserWindow
2018-02-22 19:00:51 +09:00
Cheng Zhao
f9c48e1fb0 Merge pull request #12003 from electron/tools-new-api
Fix deprecated API in tools/dump-version-info.js
2018-02-22 18:58:24 +09:00
Cheng Zhao
973647eaa2 Rename api::Window to api::BrowserWindow 2018-02-22 12:50:47 +09:00
Samuel Attard
3bda63c350 Remove needless quotes around electron key 2018-02-22 13:37:53 +11:00
bughit
88b887fe47 frame navigation API 2018-02-21 18:50:15 -05:00
Cheng Zhao
58e15c7755 Fix deprecated API in tools/dump-version-info.js 2018-02-22 08:43:39 +09:00
John Kleinschmidt
7365a45948 Merge pull request #11937 from electron/groundwater-patch-1
Use New Versioning Strategy
2018-02-21 16:54:25 -05:00
shelley vohr
e8a57376f0 Merge pull request #12000 from kalikiana/quoted-snap-version
tutorial: Surround the snap version in quotes
2018-02-21 16:42:49 -05:00
Vanessa Yuen
8e51659237 Merge pull request #11966 from electron/documentation-overhaul
Documentation Overhaul
2018-02-21 20:51:52 +01:00
Felix Rieseberg
c403968230 ❤️ One more feedback item 2018-02-21 10:29:17 -08:00
Felix Rieseberg
9d4c68d272 ❤️ Feedback 2018-02-21 10:12:19 -08:00
Christian Dywan
8268afdf33 tutorial: Surround the snap version in quotes 2018-02-21 18:08:39 +01:00
Felix Rieseberg
975e6e6194 ❤️ First round of feedback 2018-02-20 09:47:18 -06:00
Cheng Zhao
99d9e262eb Merge pull request #19 from electron/get-wrapper-const
GetWrapper should be const
2018-02-20 10:07:55 +09:00
Felix Rieseberg
037ee0cff3 📝 Fix the fix 2018-02-19 18:38:59 -06:00
Cheng Zhao
91ee99ab8a GetWrapper should be const 2018-02-20 09:29:02 +09:00
Felix Rieseberg
64fc523977 📝 Fix dead links 2018-02-19 18:25:02 -06:00
Felix Rieseberg
b869471068 📝 Add missing links 2018-02-19 18:20:35 -06:00
Felix Rieseberg
322f7dadc7 📝 Native drag & drop documentation 2018-02-19 18:20:21 -06:00
Felix Rieseberg
191463397b 📝 Cleanup this hot mess 2018-02-19 18:20:10 -06:00
Felix Rieseberg
683e02fbcd 📝 TIE IT ALL TOGETHER 2018-02-19 18:09:58 -06:00
Felix Rieseberg
ebbecce56d 📝 Document debugging 2018-02-19 18:09:38 -06:00
Felix Rieseberg
e98637596d 📝 Installation 2018-02-19 17:53:29 -06:00
Felix Rieseberg
3c66e810c0 📝 Document asar 2018-02-19 17:50:38 -06:00
Felix Rieseberg
20ca6b4a55 📝 Offscreen Rendering 2018-02-19 17:50:26 -06:00
Felix Rieseberg
69b0a358f3 📝 A11y documentation 2018-02-19 17:36:49 -06:00
Felix Rieseberg
8dd44f66ca 📝 Some consistency 2018-02-19 17:28:24 -06:00
Felix Rieseberg
eeb5845aac 📝 Documenting updates 2018-02-19 17:24:15 -06:00
Felix Rieseberg
fe4762588c 📝 Document the progress bar 2018-02-19 17:17:11 -06:00
Felix Rieseberg
c3362c7617 📝 Document the app architecture (main/renderer) 2018-02-19 17:16:51 -06:00
Felix Rieseberg
ffd607bb52 📝 Document the first app 2018-02-19 17:16:35 -06:00
Felix Rieseberg
d7360e3203 📝 Ensure that quick-start.md still exists 2018-02-19 17:14:31 -06:00
Felix Rieseberg
879d21c80e 📝 Document Unity Launcher 2018-02-19 17:14:07 -06:00
Felix Rieseberg
3623cf9729 📝 Windows Taskbar documentation 2018-02-19 17:10:25 -06:00
Felix Rieseberg
8d219e94dc 📝 Recent documents documentation 2018-02-19 17:09:58 -06:00
Felix Rieseberg
d552af97c3 📝 macOS Dock documentation 2018-02-19 17:09:43 -06:00
Felix Rieseberg
fc7e50dce2 📝 Add cli and boilerplate documentation 2018-02-19 15:34:33 -06:00
Felix Rieseberg
bdc0cd4418 📝 Document development environment 2018-02-19 12:25:38 -06:00
Jacob Groundwater
cdcd031192 Use New Versioning Strategy
The `package.json` file in master should always read `0.0.0-dev`. See https://electronjs.org/docs/tutorial/electron-versioning
2018-02-16 09:16:30 -08:00
Cheng Zhao
a38fb5df41 Merge pull request #18 from electron/upgrade-to-chromium-63
virtual members need a virtual destructor
2017-12-19 10:25:22 +09:00
Samuel Attard
66c0d6620b virtual members need a virtual destructor 2017-12-18 14:55:27 +11:00
Cheng Zhao
29b03fc242 Merge pull request #17 from sethlu/remove-getwrapper-dcheck
Remove WrappableBase::GetWrapper() DCHECK
2017-12-18 09:22:13 +09:00
Zhuo Lu
e0b77db46f Remove WrappableBase::GetWrapper() DCHECK 2017-12-13 13:26:51 -08:00
Charles Kerr
f0d9b93ede note that 'publish-to-npm' needs node 6 2017-12-05 09:10:26 -06:00
Charles Kerr
f398b5d843 add a tip for testing version number with 'bump-version.py --dry-run' 2017-12-05 08:51:37 -06:00
Charles Kerr
b8259a82c1 note that 'npm run release -- --validateRelease' must be run in release branch 2017-12-05 08:38:16 -06:00
Charles Kerr
7bcea57241 fix tyop 2017-12-04 21:09:12 -06:00
Charles Kerr
3cd6c2e9eb explain using the Electron S3 Bucket environment variables 2017-12-04 20:34:34 -06:00
Charles Kerr
455a61d210 in the npm upload step, explain the needed npm credentials 2017-12-04 20:32:24 -06:00
Charles Kerr
83e94f3de1 fix invocation of validateRelease pass 2017-12-04 20:19:43 -06:00
Charles Kerr
ffdd6ab821 add a troubleshooting note about branch checkout 2017-12-04 10:26:35 -06:00
Charles Kerr
60fe728c0f add section on environment variables 2017-12-04 10:13:22 -06:00
Charles Kerr
b209620514 trim whitespace 2017-12-04 09:51:12 -06:00
Charles Kerr
e5f4916e31 fix numbering of 'Edit the release draft' steps 2017-12-04 09:50:24 -06:00
Charles Kerr
5212b98c87 wrap lines at 80 characters 2017-12-04 09:48:06 -06:00
Cheng Zhao
88fa343387 Merge pull request #16 from brenca/mark-independent-high-only
Only use MarkIndependent if high_memory_ flag is set
2017-11-28 10:52:03 +09:00
Heilig Benedek
40bd3336a5 only mark handle as independent when it's a high memory user 2017-11-27 00:50:51 +01:00
Cheng Zhao
bf92fa88b7 Merge pull request #15 from mgc/muon-crash-workarounds
Upstream Muon changes to avoid crashing
2017-10-26 18:46:25 +09:00
Matt Crocker
6ea2755095 Upstream Muon changes to avoid crashing 2017-10-23 23:19:23 -07:00
Cheng Zhao
f047bb61bb Merge pull request #14 from enlight/nullptr-converter
Add a converter for `nullptr_t`
2017-08-17 16:01:27 +09:00
Vadim Macagon
747495e77c Add a converter for nullptr_t 2017-08-16 00:24:20 +07:00
Kevin Sawicki
159a25d8e7 Merge pull request #13 from tsekityam/patch-1
Fix broken link
2017-05-09 16:14:28 -07:00
Tse Kit Yam
c8cc021ea1 Fix broken link 2017-05-09 15:24:43 +08:00
Cheng Zhao
7d9c1a80f0 Merge pull request #12 from brenca/add-high-memory-option
Add a flag that skips the two round GC and instead uses only one
2017-05-01 16:06:50 +09:00
Heilig Benedek
ff8f439afd add ability to set high memory usage, skipping the second round of GC callbacks 2017-04-12 15:51:28 +02:00
Cheng Zhao
fd0e7dc4ab Use gin to manage FunctionTemplate
Sadly there is no way for us to know when V8 is closing, thus it is
impossible for us to clean the FunctionTemplate on exit at the right
time, which is critcal for multi-thread environment.
2017-03-08 17:11:29 +09:00
Cheng Zhao
ed909cd54c Make Wrappable thread safe 2017-03-08 16:33:05 +09:00
Kevin Sawicki
ad0fd82566 Merge pull request #10 from electron/five-argument-member-function
Remove template_util.h and use std functions
2017-02-17 10:25:02 -08:00
Kevin Sawicki
d2b9766886 Use std functions instead of template_util 2017-02-17 09:32:45 -08:00
Kevin Sawicki
f56ec818fb Support 5 argument member function 2017-02-17 09:32:45 -08:00
Kevin Sawicki
11a1b824c0 Merge pull request #11 from electron/ci
Add Travis/AppVeyor CI build through Electron
2017-02-17 09:32:30 -08:00
Kevin Sawicki
db542f2a26 Add CI build through Electron 2017-02-17 08:39:54 -08:00
Cheng Zhao
eb109cf905 Merge pull request #9 from renaesop/master
Add Converter<std::map<std::string, T>>::ToV8
2017-02-13 17:04:05 +09:00
renaesop
7197368c6d Add Converter<std::map<std::string, T>>::ToV8 2017-02-06 16:54:11 +08:00
Cheng Zhao
400d6c3de5 Merge pull request #8 from electron/set-read-only
Support setting read-only property value
2017-01-16 06:53:42 +09:00
Kevin Sawicki
c78a6fa7d4 Support setting read-only property value 2017-01-12 12:21:23 -08:00
Kevin Sawicki
6b7e73db92 Merge pull request #7 from deepak1556/empty_handle_converter_patch
create empty handle for null value
2016-12-12 12:55:31 -08:00
deepak1556
70092b493e create empty handle for null or undefined value 2016-12-07 16:41:45 +05:30
Cheng Zhao
912307386c Merge pull request #6 from enlight/add-readme
Add README
2016-08-12 20:48:19 +09:00
Vadim Macagon
03b4f57d23 Add README 2016-08-12 17:33:41 +07:00
Cheng Zhao
b5e5de626c Merge pull request #5 from kevinsawicki/detail-string
Use ToDetailString for arguments error message
2016-08-11 17:22:39 +09:00
Kevin Sawicki
8155da152f Add back empty handle string 2016-08-10 10:04:04 -07:00
Kevin Sawicki
1dbaec0edd Use ToDetailString for processing error message 2016-08-10 09:34:33 -07:00
Cheng Zhao
fa483e1fe0 Do not set constructor name in SetConstructor 2016-08-02 19:27:58 +09:00
Cheng Zhao
4dbe051494 Pass FunctionTemplate in BuildPrototype 2016-08-02 18:06:20 +09:00
Cheng Zhao
3a7a6efffb GetConstructor should init default constructor 2016-08-02 17:20:41 +09:00
Cheng Zhao
2d26eebca8 Remove the Constructor class 2016-08-02 17:01:19 +09:00
Cheng Zhao
a259d10bcb NewOperatorFactory is not used 2016-08-02 16:20:29 +09:00
Cheng Zhao
0a48af9ff7 Create objects from InstanceTemplate 2016-08-02 16:08:00 +09:00
Cheng Zhao
d55c3c5030 Turn Wrappable into using FunctionTemplate 2016-08-02 15:56:47 +09:00
Cheng Zhao
ab62755a88 Make InitWith virtual 2016-08-02 15:28:09 +09:00
Cheng Zhao
bd20bde1a2 Call the user call Init in Constructor 2016-08-02 15:14:48 +09:00
Cheng Zhao
d9bfe6a49d CHECK is not needed 2016-07-21 16:51:48 +09:00
Cheng Zhao
8a31e2d9c0 Update to API changes of V8 5.2 2016-07-04 15:08:08 +09:00
Cheng Zhao
a1efa28520 Setup v8::MicrotasksScope for callbacks 2016-06-24 14:40:47 +09:00
Cheng Zhao
e75f2aa087 Add converter for std::map 2016-06-13 09:26:48 +09:00
Cheng Zhao
4ad6ecd196 Handle.ToV8 should return Object 2016-05-20 15:38:51 +09:00
Cheng Zhao
ea07d4c6c8 Leak Wrappable's template
Since it is declared as static variable it will be released
automatically when process exits, which causes crashes in
renderer process because the template will then be released
later than V8 is closed.

This commit simply leaks the template so the crash won't happen,
this leak should be fine since leaking resource on exit is not
a bad thing.
2016-05-10 16:07:04 +09:00
Cheng Zhao
0df2d882ea Make Wrappable a template class 2016-04-25 10:17:39 +09:00
Cheng Zhao
553326b006 Merge pull request #4 from deepak1556/dictionary_patch
use v8::private symbols as identifiers for object properties
2016-03-31 10:18:26 +09:00
Robo
309887c444 use v8::private symbols as identifiers for object properties 2016-03-24 01:32:08 +05:30
Cheng Zhao
38834cb997 Merge pull request #3 from paulcbetts/chrome49
basictypes.h => macros.h
2016-03-08 17:43:54 +09:00
Paul Betts
16270fa080 basic_types.h => macros.h 2016-03-07 20:36:14 -08:00
Cheng Zhao
e719eab878 Clear internal field when Wrapper is destroyed 2016-02-02 19:50:27 +08:00
Cheng Zhao
26520c5cf4 Improve error message for type error
Close atom/electron#4307.
2016-02-02 10:10:59 +08:00
Cheng Zhao
a3dcf8ced6 Fix converter for std::set 2015-12-11 21:13:33 +08:00
Cheng Zhao
5e70868fd0 isDestroy => isDestroyed 2015-12-04 19:23:13 +08:00
Cheng Zhao
e859228db1 Do not manually destroy native resources 2015-12-03 15:38:14 +08:00
Cheng Zhao
9398494100 Add Dictionary::Delete 2015-11-11 00:25:10 +08:00
Cheng Zhao
21cda4e7fc Don't return v8::Maybe for std::vector 2015-11-02 20:45:29 +08:00
Cheng Zhao
b7387da085 Check whether key exists in Dictionary::Get 2015-09-10 15:57:30 +08:00
Cheng Zhao
8ca005eb41 Use the new SetWeak in Wrappable 2015-08-27 15:55:48 +08:00
Cheng Zhao
f5e34deb1a Add SetHidden for Dictionary 2015-08-27 15:21:27 +08:00
Cheng Zhao
b41635e809 Don't pass callback as const reference 2015-08-13 12:07:35 +08:00
Cheng Zhao
24d31e2046 Don't convert Function to Dictionary 2015-08-12 21:31:45 +08:00
Cheng Zhao
7160054927 GetNext should have no side effect when failed 2015-08-12 21:31:31 +08:00
Cheng Zhao
b6c353ee80 Add Dictionary::CreateEmpty 2015-08-12 21:18:59 +08:00
Cheng Zhao
67d9eaa215 Remove locker.h 2015-08-07 19:32:27 +08:00
Cheng Zhao
ebcf4c0224 Remove callback.h 2015-08-07 18:09:37 +08:00
Cheng Zhao
656e403f01 Use C++11 version of CreateFunctionTemplate 2015-07-23 14:59:32 +08:00
Cheng Zhao
41cd6d13c9 Allow specify methods that can be called after object is destroyed 2015-07-06 21:25:55 +08:00
Cheng Zhao
7b9926807d Add IsDestroyed method for Wrappable 2015-07-06 18:16:57 +08:00
Cheng Zhao
cc4e2fcd94 Check for null when converting Wrappable 2015-06-24 16:35:37 +08:00
Cheng Zhao
cad1fa50a9 Make isolate() public 2015-06-23 17:13:02 +08:00
Cheng Zhao
0586822808 Remember isolate in Wrappable 2015-06-23 17:09:20 +08:00
Cheng Zhao
f310222ce1 Allow converting Array 2015-06-10 11:14:42 +08:00
Cheng Zhao
ad207eeabb Enter context before calling callback 2015-05-29 13:41:59 +08:00
Cheng Zhao
1696237a3f Pass Handle to upper HandleScope when returning a V8 Handle 2015-05-22 21:23:16 +08:00
Cheng Zhao
269be86998 Use Local instead of Handle 2015-05-22 19:11:02 +08:00
Cheng Zhao
047a8de934 Merge pull request #1 from deepak1556/converter_patch
added std::set converter
2015-04-20 16:16:42 +08:00
deepak1556
39fae3a480 added std::set converter 2015-04-18 01:33:54 +05:30
Cheng Zhao
40da835cbb Don't reset handle before Wrappable is destroyed
It is possible that the user wants to use the V8 object in the destructor.

Fixes atom/atom-shell#1112.
2015-03-23 16:20:59 +08:00
Cheng Zhao
38aba07290 usigned long is uint64 on Linux 2015-03-14 18:47:36 +00:00
Cheng Zhao
a636fad51e Add converter for unsigned long 2015-03-10 16:46:54 -07:00
Cheng Zhao
d0db7bfb58 Add AfterInit method for Wrappable 2015-02-13 11:37:55 +08:00
Cheng Zhao
8d537ee2b6 Remove unneeded helper 2015-02-12 12:55:50 +08:00
Cheng Zhao
3387f33a8e Check internal field before converting 2015-02-11 22:09:42 +08:00
Cheng Zhao
1116a36c15 Avoid unnecessary copy in ConvertToV8 2015-01-14 18:55:38 -08:00
Cheng Zhao
bcf87fd3c9 OVERRIDE => override 2015-01-09 17:23:18 -08:00
Cheng Zhao
753d5675dd Fix ignored exception thrown from constructor. 2015-01-04 22:13:19 -08:00
Cheng Zhao
be2934d9b5 Fix throwing error in constructor 2015-01-02 18:05:25 -08:00
Cheng Zhao
4a1d11b2be Guard against non-constructor call in Constructor::New 2014-10-30 21:54:29 +08:00
Cheng Zhao
b1f7cfa9da Don't throw error in Constructor 2014-10-30 21:31:53 +08:00
Cheng Zhao
cc9d222923 Use NODE_VERSION_AT_LEAST to determine node version 2014-09-30 22:44:27 +08:00
Cheng Zhao
c5b39126ee Make throwing exception when parsing args easier 2014-09-23 23:28:52 +08:00
Cheng Zhao
12f4e9b7ea Add PersistentDictionary. 2014-09-09 14:12:59 +08:00
Cheng Zhao
742923c73d Remove unused constructor of Dictionary. 2014-09-09 13:32:41 +08:00
Cheng Zhao
980036b78a Make ScopedPersistent's interface consistent with V8. 2014-08-10 21:18:42 +08:00
Cheng Zhao
1387d3969e Add callback converter. 2014-08-10 19:05:25 +08:00
Cheng Zhao
5d6921ff2a Use pump to generate source files. 2014-08-10 16:59:50 +08:00
Cheng Zhao
cbb5004ff9 Fix compilation error of Constructor and ScopedPersistent in node 0.10. 2014-08-10 12:17:47 +08:00
Cheng Zhao
9145a08395 Fix compilation error with node 0.10. 2014-08-10 11:20:41 +08:00
Cheng Zhao
3d713baa4c Enable converting ScopedPersistent. 2014-07-21 13:07:56 +08:00
Cheng Zhao
14c851e9f8 Reset handle in weak callback.
This doesn't seem to be neccesary, but we had better follow what upstream does.
2014-07-18 09:37:07 +08:00
Cheng Zhao
e6db1875d0 Some more APIs fixes. 2014-06-28 22:32:35 +08:00
Cheng Zhao
8e056672bc Bring back ScopedPersistent.SetWeak. 2014-06-28 21:26:34 +08:00
Cheng Zhao
6f574c3802 Add APIs to match new V8 APIs. 2014-06-28 19:48:49 +08:00
Cheng Zhao
a5c4a2c7c6 Add .gitignore. 2014-06-23 21:50:00 +08:00
Cheng Zhao
bfd5f5d221 Strictly check for boolean type. 2014-06-23 21:47:39 +08:00
Cheng Zhao
94044b2950 Mark Dictionary.Get as const. 2014-06-23 21:39:03 +08:00
Cheng Zhao
51a55810b9 Enable creating empty Dictionary directly. 2014-06-23 21:38:46 +08:00
Cheng Zhao
1884b9a235 Add converter for const char*. 2014-06-23 21:24:18 +08:00
Cheng Zhao
730acd59c7 Add object() accessor for Dictionary. 2014-06-23 21:11:00 +08:00
Cheng Zhao
c79aecf64d Call object._init if we have one. 2014-05-27 08:47:06 +08:00
Cheng Zhao
f033e23ea3 No need to reset wrapper_ when we would run destructor. 2014-04-23 12:29:22 +08:00
Cheng Zhao
3d219b4be6 Do not wrap an object when it's already wrapped. 2014-04-22 15:57:23 +08:00
Cheng Zhao
d950fe3736 Add Arguments.Length method. 2014-04-22 15:57:11 +08:00
Cheng Zhao
9cc90ac7d5 Make ScopedPersistent do type conversion. 2014-04-18 16:45:44 +08:00
Cheng Zhao
94dec0ff85 Add v8::Handle<v8::String> to converter. 2014-04-16 15:28:43 +08:00
Cheng Zhao
c9fa29ef64 Enable setting method in Dictionary. 2014-04-16 15:13:44 +08:00
Cheng Zhao
213ac43721 Enable converting void*. 2014-04-16 14:56:33 +08:00
Cheng Zhao
d0bf1a842f Support function with 7 parameters. 2014-04-16 14:56:05 +08:00
Cheng Zhao
2d3af6fc38 Remove helper typedefs. 2014-04-16 14:29:45 +08:00
Cheng Zhao
ace550d6b2 Simplify Wrappable API. 2014-04-16 11:58:17 +08:00
Cheng Zhao
ac5be7dad7 Constructor should wrap the this pointer. 2014-04-16 10:36:54 +08:00
Cheng Zhao
bdfbef41c6 Cleanup. 2014-04-16 10:25:22 +08:00
Cheng Zhao
e2e1faa225 Make the Constructor accept arbitrary callback. 2014-04-16 09:50:51 +08:00
Cheng Zhao
78ab726ec7 Fix passing the wrong parameter. 2014-04-15 15:39:13 +08:00
Cheng Zhao
caa5ea0316 Add initial Constructor type. 2014-04-15 15:30:46 +08:00
Cheng Zhao
a20e02ee23 Fix compilation error of function_template. 2014-04-15 15:30:30 +08:00
Cheng Zhao
6ac926aa32 Enable modifying existing ObjectTemplate. 2014-04-15 11:34:07 +08:00
Cheng Zhao
4cada31f80 Do not rely on latest base/template_util. 2014-04-15 11:15:19 +08:00
Cheng Zhao
ff65b7dae1 Initial commit. 2014-04-15 11:04:36 +08:00
1553 changed files with 358446 additions and 57200 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,4 @@
*
!tools/xvfb-init.sh
!tools/run-electron.sh
!build/install-build-deps.sh

7
.env.example Normal file
View File

@@ -0,0 +1,7 @@
# These env vars are only necessary for creating Electron releases.
# See docs/development/releasing.md
APPVEYOR_CLOUD_TOKEN=
CIRCLE_TOKEN=
ELECTRON_GITHUB_TOKEN=
VSTS_TOKEN=

12
.eslintrc.json Normal file
View File

@@ -0,0 +1,12 @@
{
"extends": "standard",
"env": {
"browser": true
},
"rules": {
"no-var": "error",
"prefer-const": ["error", {
"destructuring": "all"
}]
}
}

3
.gitattributes vendored Normal file
View File

@@ -0,0 +1,3 @@
# `git apply` and friends don't understand CRLF, even on windows. Force those
# files to be checked out with LF endings even if core.autocrlf is true.
*.patch text eol=lf

33
.github/CODEOWNERS vendored
View File

@@ -3,19 +3,24 @@
# 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/hubbers
/default_app/ @electron/docs
/docs/ @electron/docs
/docs-translations/ @electron/i18n
/npm/ @electron/hubbers
# Upgrades WG
/patches/ @electron/wg-upgrades
# Releases WG
/npm/ @electron/wg-releases
/script/release-notes @electron/wg-releases
/script/prepare-release.js @electron/wg-releases
/script/bump-version.js @electron/wg-releases
/script/ci-release-build.js @electron/wg-releases
/script/release.js @electron/wg-releases
/script/upload-to-github.js @electron/wg-releases
/script/release-artifact-cleanup.js @electron/wg-releases
/script/get-last-major-for-master.js @electron/wg-releases
/script/find-release.js @electron/wg-releases
/script/download-circleci-artifacts.js @electron/wg-releases

View File

@@ -7,8 +7,11 @@ Thanks for opening an issue! A few things to keep in mind:
- If you need general advice, join our Slack: http://atom-slack.herokuapp.com
-->
* Electron version:
* Operating system:
* 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

32
.github/ISSUE_TEMPLATE/Bug_report.md vendored Normal file
View File

@@ -0,0 +1,32 @@
---
name: Bug report
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):
**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 a 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.

View File

@@ -0,0 +1,17 @@
---
name: Feature request
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.
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -0,0 +1,13 @@
---
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,9 @@
---
name: Security report
about: Do not create an issue for security reports, send an email to security@electronjs.org
---
Do not create an issue for security reports, send an email to:
security@electronjs.org

View File

@@ -1,8 +1,22 @@
##### Description of Change
<!--
Thank you for your Pull Request. Please provide a description above and review
the requirements below.
Bug fixes and new features should include tests and possibly benchmarks.
Contributors guide: https://github.com/electron/electron/blob/master/CONTRIBUTING.md
-->
-->
##### Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [ ] PR description included and stakeholders cc'd
- [ ] `npm test` passes
- [ ] 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)
##### 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-->

30
.github/config.yml vendored
View File

@@ -4,7 +4,7 @@
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#submitting-issues).
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
@@ -12,14 +12,22 @@ newIssueWelcomeComment: |
newPRWelcomeComment: |
💖 Thanks for opening this pull request! 💖
![typing cat](https://user-images.githubusercontent.com/2289/36400158-2c7c589e-1584-11e8-81c7-bd34fd3c392b.gif)
We use [semantic commit messages](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines) to streamline the release process. Before your pull request can be merged, you should **update your pull request title** to start with a semantic prefix.
Examples of commit messages with semantic prefixes:
- `fix: don't overwrite prevent_default if default wasn't prevented`
- `feat: add app.isPackaged() method`
- `docs: app.isDefaultProtocolClient is now available on Linux`
Things that will help get your PR across the finish line:
Here is a list of things that will help get it across the finish line:
- Follow the JavaScript, C++, and Python [coding style](https://github.com/electron/electron/blob/master/docs/development/coding-style.md).
- Run `npm run lint` locally to catch formatting errors earlier.
- Document any user-facing changes you've made following the [documentation styleguide](https://github.com/electron/electron/blob/master/docs/styleguide.md).
- Include tests when adding/changing behavior.
- Include screenshots and animated GIFs whenever possible.
We get a lot of pull requests on this repo, so please be patient and we will get back to you as soon as we can.
# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge
@@ -28,4 +36,18 @@ newPRWelcomeComment: |
firstPRMergeComment: >
Congrats on merging your first pull request! 🎉🎉🎉
# It is recommend to include as many gifs and emojis as possible
# Configuration for trop - https://github.com/codebytere/trop
watchedProject:
name: Backports
authorizedUsers:
- alexeykuzmin
- ckerr
- codebytere
- deepak1556
- jkleinsc
- MarshallOfSound
- nitsakh
- nornagon
- zcbenz

35
.gitignore vendored
View File

@@ -23,19 +23,15 @@
/brightray/brightray.v12.suo
/brightray/brightray.vcxproj*
/brightray/brightray.xcodeproj/
/build/
/dist/
/external_binaries/
/out/
/vendor/.gclient
/vendor/debian_jessie_amd64-sysroot/
/vendor/debian_jessie_arm-sysroot/
/vendor/debian_jessie_arm64-sysroot/
/vendor/debian_jessie_i386-sysroot/
/vendor/debian_jessie_mips64-sysroot/
/vendor/debian_wheezy_amd64-sysroot/
/vendor/debian_wheezy_arm-sysroot/
/vendor/debian_wheezy_i386-sysroot/
/vendor/debian_stretch_amd64-sysroot/
/vendor/debian_stretch_arm-sysroot/
/vendor/debian_stretch_arm64-sysroot/
/vendor/debian_stretch_i386-sysroot/
/vendor/gcc-4.8.3-d197-n64-loongson/
/vendor/readme-gcc483-loongson.txt
/vendor/download/
@@ -43,6 +39,27 @@
/vendor/llvm/
/vendor/npm/
/vendor/python_26/
/vendor/native_mksnapshot
/vendor/LICENSES.chromium.html
/vendor/pyyaml
node_modules/
SHASUMS256.txt
**/package-lock.json
**/yarn.lock
compile_commands.json
.envrc
# npm package
/npm/dist
/npm/path.txt
.npmrc
# Generated API definitions
electron-api.json
electron.d.ts
# Spec hash calculation
spec/.hash
# Eslint Cache
.eslintcache

24
.gitmodules vendored
View File

@@ -1,30 +1,6 @@
[submodule "vendor/node"]
path = vendor/node
url = https://github.com/electron/node.git
[submodule "vendor/depot_tools"]
path = vendor/depot_tools
url = https://chromium.googlesource.com/chromium/tools/depot_tools.git
[submodule "vendor/breakpad"]
path = vendor/breakpad
url = https://github.com/electron/chromium-breakpad.git
[submodule "vendor/native_mate"]
path = vendor/native_mate
url = https://github.com/electron/native-mate.git
[submodule "vendor/crashpad"]
path = vendor/crashpad
url = https://github.com/electron/crashpad.git
[submodule "vendor/requests"]
path = vendor/requests
url = https://github.com/kennethreitz/requests
[submodule "vendor/boto"]
path = vendor/boto
url = https://github.com/boto/boto.git
[submodule "vendor/pdf_viewer"]
path = vendor/pdf_viewer
url = https://github.com/electron/pdf-viewer.git
[submodule "vendor/gyp"]
path = vendor/gyp
url = https://github.com/electron/gyp
[submodule "vendor/libchromiumcontent"]
path = vendor/libchromiumcontent
url = https://github.com/electron/libchromiumcontent

View File

@@ -1 +0,0 @@
v8.2.1

View File

@@ -1,34 +0,0 @@
git:
depth: 10
notifications:
email: false
before_install:
- export BOTO_CONFIG=/dev/null
language: node_js
node_js:
- "4"
os:
- linux
- osx
env:
- TARGET_ARCH=x64
osx_image: xcode7.3
matrix:
include:
- os: linux
env: TARGET_ARCH=arm
- os: linux
env: TARGET_ARCH=ia32
- os: linux
env: TARGET_ARCH=arm64
allow_failures:
- os: osx
script: './script/cibuild'
branches:
only:
- master

1118
BUILD.gn Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [electron@github.com](mailto:electron@github.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [coc@electronjs.org](mailto:coc@electronjs.org). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

View File

@@ -4,7 +4,7 @@
This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDUCT.md).
By participating, you are expected to uphold this code. Please report unacceptable
behavior to electron@github.com.
behavior to coc@electronjs.org.
The following is a set of guidelines for contributing to Electron.
These are just guidelines, not rules, use your best judgment and feel free to
@@ -54,3 +54,7 @@ dependencies, and tools contained in the `electron/electron` repository.
See [Coding Style](https://electronjs.org/docs/development/coding-style) for information about which standards Electron adheres to in different parts of its codebase.
## Further Reading
For more in-depth guides on developing Electron, see
[/docs/development](/docs/development/README.md)

137
DEPS Normal file
View File

@@ -0,0 +1,137 @@
gclient_gn_args_file = 'src/build/config/gclient_args.gni'
gclient_gn_args = [
'build_with_chromium',
'checkout_android',
'checkout_android_native_support',
'checkout_libaom',
'checkout_nacl',
'checkout_oculus_sdk'
]
vars = {
'chromium_version':
'69.0.3497.128',
'node_version':
'8bc5d171a0873c0ba49f9433798bc8b67399788c',
'boto_version': 'f7574aa6cc2c819430c1f05e9a1a1a666ef8169b',
'pyyaml_version': '3.12',
'requests_version': 'e4d59bedfd3c7f4f254f4f5d036587bcd8152458',
'boto_git': 'https://github.com/boto',
'chromium_git': 'https://chromium.googlesource.com',
'electron_git': 'https://github.com/electron',
'requests_git': 'https://github.com/kennethreitz',
'yaml_git': 'https://github.com/yaml',
# 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,
# It's only needed to parse the native tests configurations.
'checkout_pyyaml': False,
# Python "requests" module is used for releases only.
'checkout_requests': False,
# It is always needed for normal Electron builds,
# but might be impossible for custom in-house builds.
'download_external_binaries': True,
'checkout_nacl':
False,
'checkout_libaom':
True,
'checkout_oculus_sdk':
False,
'build_with_chromium':
True,
'checkout_android':
False,
'checkout_android_native_support':
False,
}
deps = {
'src': {
'url': (Var("chromium_git")) + '/chromium/src.git@' + (Var("chromium_version")),
'condition': 'checkout_chromium',
},
'src/third_party/electron_node': {
'url': (Var("electron_git")) + '/node.git@' + (Var("node_version")),
'condition': 'checkout_node',
},
'src/electron/vendor/pyyaml': {
'url': (Var("yaml_git")) + '/pyyaml.git@' + (Var("pyyaml_version")),
'condition': 'checkout_pyyaml',
},
'src/electron/vendor/boto': {
'url': Var('boto_git') + '/boto.git' + '@' + Var('boto_version'),
'condition': 'checkout_boto',
},
'src/electron/vendor/requests': {
'url': Var('requests_git') + '/requests.git' + '@' + Var('requests_version'),
'condition': 'checkout_requests',
},
}
hooks = [
{
'name': 'patch_chromium',
'condition': 'checkout_chromium and apply_patches',
'pattern': 'src/electron',
'action': [
'python',
'src/electron/script/apply_all_patches.py',
'src/electron/patches/common/config.json',
],
},
{
'name': 'electron_external_binaries',
'pattern': 'src/electron/script/update-external-binaries.py',
'condition': 'download_external_binaries',
'action': [
'python',
'src/electron/script/update-external-binaries.py',
],
},
{
'name': 'electron_npm_deps',
'pattern': 'src/electron/package.json',
'action': [
'python',
'-c',
'import os, subprocess; os.chdir(os.path.join("src", "electron")); subprocess.check_call(["python", "script/lib/npm.py", "install"]);',
],
},
{
'name': 'setup_boto',
'pattern': 'src/electron',
'condition': 'checkout_boto',
'action': [
'python',
'-c',
'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',
'action': [
'python',
'-c',
'import os, subprocess; os.chdir(os.path.join("src", "electron", "vendor", "requests")); subprocess.check_call(["python", "setup.py", "build"]);',
],
},
]
recursedeps = [
'src',
]

View File

@@ -1,21 +1,47 @@
FROM electronbuilds/libchromiumcontent:0.0.4
FROM ubuntu:18.04
USER root
RUN groupadd --gid 1000 builduser \
&& useradd --uid 1000 --gid builduser --shell /bin/bash --create-home builduser
# Set up HOME directory
ENV HOME=/home
RUN chmod a+rwx /home
# Set up TEMP directory
ENV TEMP=/tmp
RUN chmod a+rwx /tmp
# Install node.js
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get update && apt-get install -y nodejs
# 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 apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
curl \
libnotify-bin \
locales \
lsb-release \
nano \
python-dbus \
python-pip \
python-setuptools \
sudo \
vim-nox \
wget \
&& /setup/install-build-deps.sh --syms --no-prompt --no-chromeos-fonts --lib32 --arm \
&& rm -rf /var/lib/apt/lists/*
# Install wget used by crash reporter
RUN apt-get install -y wget
# Install Node.js
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
# Install python-dbusmock
RUN apt-get install -y python-dbusmock
# 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
# Add xvfb init script
ADD tools/xvfb-init.sh /etc/init.d/xvfb
RUN chmod a+x /etc/init.d/xvfb
USER builduser
WORKDIR /home/builduser

61
Dockerfile.arm32v7 Normal file
View File

@@ -0,0 +1,61 @@
FROM arm32v7/ubuntu:18.04
RUN groupadd --gid 1000 builduser \
&& useradd --uid 1000 --gid builduser --shell /bin/bash --create-home builduser
# Set up TEMP directory
ENV TEMP=/tmp
RUN chmod a+rwx /tmp
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
bison \
build-essential \
clang \
curl \
gperf \
git \
libasound2 \
libasound2-dev \
libcap-dev \
libcups2-dev \
libdbus-1-dev \
libgconf-2-4 \
libgconf2-dev \
libgnome-keyring-dev \
libgtk2.0-0 \
libgtk2.0-dev \
libgtk-3-0 \
libgtk-3-dev \
libnotify-bin \
libnss3 \
libnss3-dev \
libxss1 \
libxtst-dev \
libxtst6 \
lsb-release \
locales \
nano \
python-setuptools \
python-pip \
python-dbusmock \
sudo \
unzip \
wget \
xvfb \
&& rm -rf /var/lib/apt/lists/*
# Install Node.js
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
# crcmod is required by gsutil, which is used for filling the gclient git cache
RUN pip install -U crcmod
ADD tools/xvfb-init.sh /etc/init.d/xvfb
RUN chmod a+x /etc/init.d/xvfb
RUN usermod -aG sudo builduser
RUN echo 'builduser ALL=(ALL:ALL) NOPASSWD:ALL' >> /etc/sudoers
WORKDIR /home/builduser

View File

@@ -1,34 +0,0 @@
FROM multiarch/debian-debootstrap:arm64-jessie
RUN apt-get update && apt-get install -y\
bison \
build-essential \
clang \
curl \
gperf \
libasound2 \
libasound2-dev \
libcap-dev \
libcups2-dev \
libdbus-1-dev \
libgconf-2-4 \
libgconf2-dev \
libgnome-keyring-dev \
libgtk-3-0 \
libgtk-3-dev \
libnotify-dev \
libnss3 \
libnss3-dev \
libx11-xcb-dev \
libxss1 \
libxtst-dev \
libxtst6 \
python-dbusmock \
wget \
xvfb
ADD tools/xvfb-init.sh /etc/init.d/xvfb
RUN chmod a+x /etc/init.d/xvfb
ADD tools/run-electron.sh /run-electron.sh
RUN chmod a+x /run-electron.sh
CMD sh /run-electron.sh

65
Dockerfile.arm64v8 Normal file
View File

@@ -0,0 +1,65 @@
FROM arm64v8/ubuntu:16.04
RUN groupadd --gid 1000 builduser \
&& useradd --uid 1000 --gid builduser --shell /bin/bash --create-home builduser
# Set up TEMP directory
ENV TEMP=/tmp
RUN chmod a+rwx /tmp
RUN dpkg --add-architecture armhf
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
bison \
build-essential \
clang \
curl \
gperf \
git \
libasound2 \
libasound2-dev \
libc6:armhf \
libcap-dev \
libcups2-dev \
libdbus-1-dev \
libgconf-2-4 \
libgconf2-dev \
libgnome-keyring-dev \
libgtk2.0-0 \
libgtk2.0-dev \
libgtk-3-0 \
libgtk-3-dev \
libnotify-bin \
libnss3 \
libnss3-dev \
libstdc++6:armhf \
libxss1 \
libxtst-dev \
libxtst6 \
lsb-release \
locales \
nano \
python-setuptools \
python-pip \
python-dbusmock \
sudo \
unzip \
wget \
xvfb \
&& rm -rf /var/lib/apt/lists/*
# Install Node.js
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
# crcmod is required by gsutil, which is used for filling the gclient git cache
RUN pip install -U crcmod
ADD tools/xvfb-init.sh /etc/init.d/xvfb
RUN chmod a+x /etc/init.d/xvfb
RUN usermod -aG sudo builduser
RUN echo 'builduser ALL=(ALL:ALL) NOPASSWD:ALL' >> /etc/sudoers
WORKDIR /home/builduser

View File

@@ -1,40 +0,0 @@
FROM multiarch/debian-debootstrap:armhf-jessie
RUN apt-get update && apt-get install -y\
bison \
build-essential \
clang \
curl \
gperf \
libasound2 \
libasound2-dev \
libcap-dev \
libcups2-dev \
libdbus-1-dev \
libgconf-2-4 \
libgconf2-dev \
libgnome-keyring-dev \
libgtk-3-0 \
libgtk-3-dev \
libnotify-dev \
libnss3 \
libnss3-dev \
libx11-xcb-dev \
libxss1 \
libxtst-dev \
libxtst6 \
python-dbusmock \
git \
wget \
xvfb
# Install node.js
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get update && apt-get install -y nodejs
ADD tools/xvfb-init.sh /etc/init.d/xvfb
RUN chmod a+x /etc/init.d/xvfb
ADD tools/run-electron.sh /run-electron.sh
RUN chmod a+x /run-electron.sh
CMD sh /run-electron.sh

View File

@@ -1,20 +0,0 @@
FROM electronbuilds/libchromiumcontent:0.0.4
USER root
# Install node.js
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get update && apt-get install -y nodejs
# Install wget used by crash reporter
RUN apt-get install -y wget
# Install python-dbusmock
RUN apt-get install -y python-dbusmock
# Add xvfb init script
ADD tools/xvfb-init.sh /etc/init.d/xvfb
RUN chmod a+x /etc/init.d/xvfb
USER builduser
WORKDIR /home/builduser

48
Jenkinsfile vendored
View File

@@ -1,48 +0,0 @@
pipeline {
agent none
stages {
stage('Build') {
parallel {
stage('electron-osx-x64') {
agent {
label 'osx'
}
steps {
timeout(60) {
sh 'script/bootstrap.py --target_arch=x64 --dev'
sh 'npm run lint'
sh 'script/build.py -c D'
sh 'script/test.py --ci --rebuild_native_modules'
}
}
post {
always {
cleanWs()
}
}
}
stage('electron-mas-x64') {
agent {
label 'osx'
}
environment {
MAS_BUILD = '1'
}
steps {
timeout(60) {
sh 'script/bootstrap.py --target_arch=x64 --dev'
sh 'npm run lint'
sh 'script/build.py -c D'
sh 'script/test.py --ci --rebuild_native_modules'
}
}
post {
always {
cleanWs()
}
}
}
}
}
}
}

View File

@@ -3,12 +3,11 @@
[![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)
[![Jenkins Build Status](https://mac-ci.electronjs.org/buildStatus/icon?job=Electron%20org/electron/master)](https://mac-ci.electronjs.org/blue/organizations/jenkins/Electron%20org%2Felectron/activity?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: 🇨🇳 🇹🇼 🇧🇷 🇪🇸 🇰🇷 🇯🇵 🇷🇺 🇫🇷 🇹🇭 🇳🇱 🇹🇷 🇮🇩 🇺🇦 🇨🇿 🇮🇹.
View these docs in other languages at [electron/electron-i18n](https://github.com/electron/electron-i18n/tree/master/content/).
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
using JavaScript, HTML and CSS. It is based on [Node.js](https://nodejs.org/) and
@@ -21,7 +20,7 @@ announcements.
This project adheres to the Contributor Covenant
[code of conduct](https://github.com/electron/electron/tree/master/CODE_OF_CONDUCT.md).
By participating, you are expected to uphold this code. Please report unacceptable
behavior to [electron@github.com](mailto:electron@github.com).
behavior to [coc@electronjs.org](mailto:coc@electronjs.org).
## Installation
@@ -30,19 +29,24 @@ The preferred method is to install Electron as a development dependency in your
app:
```sh
npm install electron --save-dev --save-exact
npm install electron --save-dev [--save-exact]
```
The `--save-exact` flag is recommended as Electron does not follow semantic
versioning. For info on how to manage Electron versions in your apps, see
The `--save-exact` flag is recommended for Electron prior to version 2, as it does not follow semantic
versioning. As of version 2.0.0, Electron follows semver, so you don't need `--save-exact` flag. For info on how to manage Electron versions in your apps, see
[Electron versioning](docs/tutorial/electron-versioning.md).
For more installation options and troubleshooting tips, see
[installation](docs/tutorial/installation.md).
## Quick start
## Quick start & Electron Fiddle
Clone and run the
Use [`Electron Fiddle`](https://github.com/electron/fiddle)
to build, run, and package small Electron experiments, to see code examples for all of Electron's APIs, and
to try out different versions of Electron. It's designed to make the start of your journey with
Electron easier.
Alternatively, clone and run the
[electron/electron-quick-start](https://github.com/electron/electron-quick-start)
repository to see a minimal Electron app in action:
@@ -56,6 +60,7 @@ npm start
## Resources for learning Electron
- [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
@@ -85,26 +90,12 @@ const child = proc.spawn(electron)
## Documentation Translations
Find documentation translations in [electron/electron-i18n](https://github.com/electron/electron-i18n).
Find documentation translations in [electron/i18n](https://github.com/electron/i18n).
## Community
You can ask questions and interact with the community in the following
locations:
- [`electron`](https://discuss.atom.io/c/electron) category on the Atom
forums
- `#atom-shell` channel on Freenode
- [`Atom`](https://atom-slack.herokuapp.com) channel on Slack
- [`electron-ru`](https://telegram.me/electron_ru) *(Russian)*
- [`electron-br`](https://electron-br.slack.com) *(Brazilian Portuguese)*
- [`electron-kr`](https://electron-kr.github.io/electron-kr) *(Korean)*
- [`electron-jp`](https://electron-jp.slack.com) *(Japanese)*
- [`electron-tr`](https://electron-tr.herokuapp.com) *(Turkish)*
- [`electron-id`](https://electron-id.slack.com) *(Indonesia)*
- [`electron-pl`](https://electronpl.github.io) *(Poland)*
Check out [awesome-electron](https://github.com/sindresorhus/awesome-electron)
for a community maintained list of useful example apps, tools and resources.
Info on reporting bugs, getting help, finding third-party tools and sample apps,
and more can be found in the [support document](docs/tutorial/support.md#finding-support).
## License

View File

@@ -2,7 +2,7 @@
The Electron team and community take security bugs in Electron seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.
To report a security issue, email [electron@github.com](mailto:electron@github.com) and include the word "SECURITY" in the subject line.
To report a security issue, email [security@electronjs.org](mailto:security@electronjs.org) and include the word "SECURITY" in the subject line.
The Electron team will send a response indicating the next steps in handling your report. After the initial reply to your report, the security team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance.

1
VERSION Normal file
View File

@@ -0,0 +1 @@
4.2.11

112
appveyor.yml Normal file
View File

@@ -0,0 +1,112 @@
# 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
version: 1.0.{build}
build_cloud: libcc-20
image: libcc-20-vs2017-15.7.4
environment:
GIT_CACHE_PATH: C:\Users\electron\libcc_cache
DISABLE_CRASH_REPORTER_TESTS: true
ELECTRON_OUT_DIR: Default
build_script:
- ps: >-
if($env:APPVEYOR_PROJECT_NAME -eq "electron-woa-testing") {
Write-warning "WOA builds not supported on older versions of Electron"; Exit-AppveyorBuild
}
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
}
- echo "Building $env:GN_CONFIG build"
- git config --global core.longpaths true
- cd ..
- md 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"
}
- >-
gclient config
--name "src\electron"
--unmanaged
%GCLIENT_EXTRA_ARGS%
"https://github.com/electron/electron"
- gclient sync --with_branch_heads --with_tags
- cd src
- ps: $env:BUILD_CONFIG_PATH="//electron/build/args/%GN_CONFIG%.gn"
- gn gen out/Default "--args=import(\"%BUILD_CONFIG_PATH%\") %GN_EXTRA_ARGS%"
- ninja -C out/Default electron:electron_app
- 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 electron:electron_mksnapshot_zip
- ninja -C out/Default electron:electron_chromedriver_zip
- ninja -C out/Default third_party/electron_node:headers
- appveyor PushArtifact out/Default/dist.zip
- appveyor PushArtifact out/Default/chromedriver.zip
- appveyor PushArtifact out/ffmpeg/ffmpeg.zip
- ps: >-
if ($env:GN_CONFIG -eq 'release') {
# 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
}
- ps: >-
if ($env:GN_CONFIG -eq 'release') {
python electron\script\zip-symbols.py
appveyor PushArtifact out/Default/symbols.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:
- ps: >-
if ((-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 )
- if "%RUN_TESTS%"=="true" ( echo Verifying mksnapshot & python electron\script\verify-mksnapshot.py --build-dir out\Default --source-root %cd% )
- ps: >-
if ($env:RUN_TESTS -eq 'true') {
New-Item .\out\Default\gen\node_headers\Release -Type directory
Copy-Item -path .\out\Default\electron.lib -destination .\out\Default\gen\node_headers\Release\node.lib
} else {
echo "Skipping tests for $env:GN_CONFIG build"
}
- cd electron
- if "%RUN_TESTS%"=="true" ( echo Running test suite & npm run test -- --ci )
- cd ..
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
} else {
Write-Output "Uploading Electron release distribution to github releases"
& python script\upload.py
}
}

View File

@@ -1 +0,0 @@
filter=+build/include_alpha

5
atom/app/BRANDING.json Normal file
View File

@@ -0,0 +1,5 @@
{
"project_name": "electron",
"product_name": "Electron",
"mac_bundle_id": "com.github.Electron"
}

View File

@@ -5,9 +5,10 @@
#include "atom/app/atom_content_client.h"
#include <string>
#include <utility>
#include <vector>
#include "atom/common/atom_constants.h"
#include "atom/browser/browser.h"
#include "atom/common/atom_version.h"
#include "atom/common/chrome_version.h"
#include "atom/common/options_switches.h"
@@ -15,24 +16,82 @@
#include "base/files/file_util.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "content/public/common/content_constants.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/pepper_plugin_info.h"
#include "content/public/common/user_agent.h"
#include "pdf/pdf.h"
#include "electron/buildflags/buildflags.h"
#include "ppapi/shared_impl/ppapi_permissions.h"
#include "third_party/widevine/cdm/stub/widevine_cdm_version.h"
#include "ui/base/l10n/l10n_util.h"
#include "url/url_constants.h"
// In SHARED_INTERMEDIATE_DIR.
#include "widevine_cdm_version.h" // NOLINT(build/include)
#if defined(WIDEVINE_CDM_AVAILABLE) && BUILDFLAG(ENABLE_PEPPER_CDMS)
#include "chrome/common/widevine_cdm_constants.h"
#endif
#if defined(WIDEVINE_CDM_AVAILABLE)
#include "base/native_library.h"
#include "content/public/common/cdm_info.h"
#include "media/base/video_codecs.h"
#endif // defined(WIDEVINE_CDM_AVAILABLE)
#if BUILDFLAG(ENABLE_PDF_VIEWER)
#include "atom/common/atom_constants.h"
#include "pdf/pdf.h"
#endif // BUILDFLAG(ENABLE_PDF_VIEWER)
namespace atom {
namespace {
#if defined(WIDEVINE_CDM_AVAILABLE)
bool IsWidevineAvailable(
base::FilePath* cdm_path,
std::vector<media::VideoCodec>* codecs_supported,
base::flat_set<media::CdmSessionType>* session_types_supported,
base::flat_set<media::EncryptionMode>* modes_supported) {
static enum {
NOT_CHECKED,
FOUND,
NOT_FOUND,
} widevine_cdm_file_check = NOT_CHECKED;
if (widevine_cdm_file_check == NOT_CHECKED) {
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
*cdm_path = command_line->GetSwitchValuePath(switches::kWidevineCdmPath);
if (!cdm_path->empty()) {
*cdm_path = cdm_path->AppendASCII(
base::GetNativeLibraryName(kWidevineCdmLibraryName));
widevine_cdm_file_check = base::PathExists(*cdm_path) ? FOUND : NOT_FOUND;
}
}
if (widevine_cdm_file_check == FOUND) {
// Add the supported codecs as if they came from the component manifest.
// This list must match the CDM that is being bundled with Chrome.
codecs_supported->push_back(media::VideoCodec::kCodecVP8);
codecs_supported->push_back(media::VideoCodec::kCodecVP9);
#if BUILDFLAG(USE_PROPRIETARY_CODECS)
codecs_supported->push_back(media::VideoCodec::kCodecH264);
#endif // BUILDFLAG(USE_PROPRIETARY_CODECS)
// TODO(crbug.com/767941): Push persistent-license support info here once
// we check in a new CDM that supports it on Linux.
session_types_supported->insert(media::CdmSessionType::kTemporary);
#if defined(OS_CHROMEOS)
session_types_supported->insert(media::CdmSessionType::kPersistentLicense);
#endif // defined(OS_CHROMEOS)
modes_supported->insert(media::EncryptionMode::kCenc);
return true;
}
return false;
}
#endif // defined(WIDEVINE_CDM_AVAILABLE)
#if BUILDFLAG(ENABLE_PEPPER_FLASH)
content::PepperPluginInfo CreatePepperFlashInfo(const base::FilePath& path,
const std::string& version) {
content::PepperPluginInfo plugin;
@@ -57,60 +116,38 @@ content::PepperPluginInfo CreatePepperFlashInfo(const base::FilePath& path,
flash_version_numbers.push_back("999");
// E.g., "Shockwave Flash 10.2 r154":
plugin.description = plugin.name + " " + flash_version_numbers[0] + "." +
flash_version_numbers[1] + " r" + flash_version_numbers[2];
flash_version_numbers[1] + " r" +
flash_version_numbers[2];
plugin.version = base::JoinString(flash_version_numbers, ".");
content::WebPluginMimeType swf_mime_type(
content::kFlashPluginSwfMimeType,
content::kFlashPluginSwfExtension,
content::kFlashPluginSwfDescription);
content::WebPluginMimeType swf_mime_type(content::kFlashPluginSwfMimeType,
content::kFlashPluginSwfExtension,
content::kFlashPluginSwfDescription);
plugin.mime_types.push_back(swf_mime_type);
content::WebPluginMimeType spl_mime_type(
content::kFlashPluginSplMimeType,
content::kFlashPluginSplExtension,
content::kFlashPluginSplDescription);
content::WebPluginMimeType spl_mime_type(content::kFlashPluginSplMimeType,
content::kFlashPluginSplExtension,
content::kFlashPluginSplDescription);
plugin.mime_types.push_back(spl_mime_type);
return plugin;
}
#if defined(WIDEVINE_CDM_AVAILABLE) && BUILDFLAG(ENABLE_PEPPER_CDMS)
content::PepperPluginInfo CreateWidevineCdmInfo(const base::FilePath& path,
const std::string& version) {
content::PepperPluginInfo widevine_cdm;
widevine_cdm.is_out_of_process = true;
widevine_cdm.path = path;
widevine_cdm.name = kWidevineCdmDisplayName;
widevine_cdm.description = kWidevineCdmDescription +
std::string(" (version: ") +
version + ")";
widevine_cdm.version = version;
content::WebPluginMimeType widevine_cdm_mime_type(
kWidevineCdmPluginMimeType,
kWidevineCdmPluginExtension,
kWidevineCdmPluginMimeTypeDescription);
void AddPepperFlashFromCommandLine(
base::CommandLine* command_line,
std::vector<content::PepperPluginInfo>* plugins) {
base::FilePath flash_path =
command_line->GetSwitchValuePath(switches::kPpapiFlashPath);
if (flash_path.empty())
return;
// Add the supported codecs as if they came from the component manifest.
std::vector<std::string> codecs;
codecs.push_back(kCdmSupportedCodecVp8);
codecs.push_back(kCdmSupportedCodecVp9);
#if BUILDFLAG(USE_PROPRIETARY_CODECS)
codecs.push_back(kCdmSupportedCodecAvc1);
#endif // BUILDFLAG(USE_PROPRIETARY_CODECS)
std::string codec_string = base::JoinString(
codecs, std::string(1, kCdmSupportedCodecsValueDelimiter));
widevine_cdm_mime_type.additional_param_names.push_back(
base::ASCIIToUTF16(kCdmSupportedCodecsParamName));
widevine_cdm_mime_type.additional_param_values.push_back(
base::ASCIIToUTF16(codec_string));
auto flash_version =
command_line->GetSwitchValueASCII(switches::kPpapiFlashVersion);
widevine_cdm.mime_types.push_back(widevine_cdm_mime_type);
widevine_cdm.permissions = kWidevineCdmPluginPermissions;
return widevine_cdm;
plugins->push_back(CreatePepperFlashInfo(flash_path, flash_version));
}
#endif
#endif // BUILDFLAG(ENABLE_PEPPER_FLASH)
void ComputeBuiltInPlugins(std::vector<content::PepperPluginInfo>* plugins) {
#if BUILDFLAG(ENABLE_PDF_VIEWER)
content::PepperPluginInfo pdf_info;
pdf_info.is_internal = true;
pdf_info.is_out_of_process = true;
@@ -127,71 +164,85 @@ void ComputeBuiltInPlugins(std::vector<content::PepperPluginInfo>* plugins) {
chrome_pdf::PPP_ShutdownModule;
pdf_info.permissions = ppapi::PERMISSION_PRIVATE | ppapi::PERMISSION_DEV;
plugins->push_back(pdf_info);
#endif // BUILDFLAG(ENABLE_PDF_VIEWER)
}
void ConvertStringWithSeparatorToVector(std::vector<std::string>* vec,
const char* separator,
const char* cmd_switch) {
auto command_line = base::CommandLine::ForCurrentProcess();
auto string_with_separator = command_line->GetSwitchValueASCII(cmd_switch);
if (!string_with_separator.empty())
*vec = base::SplitString(string_with_separator, separator,
base::TRIM_WHITESPACE,
base::SPLIT_WANT_NONEMPTY);
void AppendDelimitedSwitchToVector(const base::StringPiece cmd_switch,
std::vector<std::string>* append_me) {
auto* command_line = base::CommandLine::ForCurrentProcess();
auto switch_value = command_line->GetSwitchValueASCII(cmd_switch);
if (!switch_value.empty()) {
constexpr base::StringPiece delimiter(",", 1);
auto tokens =
base::SplitString(switch_value, delimiter, base::TRIM_WHITESPACE,
base::SPLIT_WANT_NONEMPTY);
append_me->reserve(append_me->size() + tokens.size());
std::move(std::begin(tokens), std::end(tokens),
std::back_inserter(*append_me));
}
}
std::string RemoveWhitespace(const std::string& str) {
std::string trimmed;
if (base::RemoveChars(str, " ", &trimmed))
return trimmed;
else
return str;
}
bool IsBrowserProcess() {
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
std::string process_type =
command_line->GetSwitchValueASCII(::switches::kProcessType);
return process_type.empty();
}
std::string BuildDefaultUserAgent() {
return "Chrome/" CHROME_VERSION_STRING " " ATOM_PRODUCT_NAME
"/" ATOM_VERSION_STRING;
}
} // namespace
void AddPepperFlashFromCommandLine(
std::vector<content::PepperPluginInfo>* plugins) {
auto command_line = base::CommandLine::ForCurrentProcess();
base::FilePath flash_path = command_line->GetSwitchValuePath(
switches::kPpapiFlashPath);
if (flash_path.empty())
return;
AtomContentClient::AtomContentClient() {}
auto flash_version = command_line->GetSwitchValueASCII(
switches::kPpapiFlashVersion);
plugins->push_back(CreatePepperFlashInfo(flash_path, flash_version));
}
#if defined(WIDEVINE_CDM_AVAILABLE) && BUILDFLAG(ENABLE_PEPPER_CDMS)
void AddWidevineCdmFromCommandLine(
std::vector<content::PepperPluginInfo>* plugins) {
auto command_line = base::CommandLine::ForCurrentProcess();
base::FilePath widevine_cdm_path = command_line->GetSwitchValuePath(
switches::kWidevineCdmPath);
if (widevine_cdm_path.empty())
return;
if (!base::PathExists(widevine_cdm_path))
return;
auto widevine_cdm_version = command_line->GetSwitchValueASCII(
switches::kWidevineCdmVersion);
if (widevine_cdm_version.empty())
return;
plugins->push_back(CreateWidevineCdmInfo(widevine_cdm_path,
widevine_cdm_version));
}
#endif
AtomContentClient::AtomContentClient() {
}
AtomContentClient::~AtomContentClient() {
}
AtomContentClient::~AtomContentClient() {}
std::string AtomContentClient::GetProduct() const {
return "Chrome/" CHROME_VERSION_STRING;
}
std::string AtomContentClient::GetUserAgent() const {
return content::BuildUserAgentFromProduct(
"Chrome/" CHROME_VERSION_STRING " "
ATOM_PRODUCT_NAME "/" ATOM_VERSION_STRING);
if (IsBrowserProcess()) {
if (user_agent_override_.empty()) {
auto* browser = Browser::Get();
std::string name = RemoveWhitespace(browser->GetName());
std::string user_agent;
if (name == ATOM_PRODUCT_NAME) {
user_agent = BuildDefaultUserAgent();
} 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);
}
return content::BuildUserAgentFromProduct(user_agent);
}
return user_agent_override_;
}
// In a renderer process the user agent should be provided on the CLI
// If it's not we just fallback to the default one, this should never happen
// but we want to handle it gracefully
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
std::string cli_user_agent = command_line->GetSwitchValueASCII("user-agent");
if (cli_user_agent.empty())
return BuildDefaultUserAgent();
return cli_user_agent;
}
void AtomContentClient::SetUserAgent(const std::string& user_agent) {
user_agent_override_ = user_agent;
}
base::string16 AtomContentClient::GetLocalizedString(int message_id) const {
@@ -199,27 +250,55 @@ base::string16 AtomContentClient::GetLocalizedString(int message_id) const {
}
void AtomContentClient::AddAdditionalSchemes(Schemes* schemes) {
AppendDelimitedSwitchToVector(switches::kRegisterServiceWorkerSchemes,
&schemes->service_worker_schemes);
AppendDelimitedSwitchToVector(switches::kSecureSchemes,
&schemes->secure_schemes);
schemes->standard_schemes.push_back("chrome-extension");
std::vector<std::string> splited;
ConvertStringWithSeparatorToVector(&splited, ",",
switches::kRegisterServiceWorkerSchemes);
for (const std::string& scheme : splited)
schemes->service_worker_schemes.push_back(scheme);
schemes->service_worker_schemes.push_back(url::kFileScheme);
ConvertStringWithSeparatorToVector(&splited, ",", switches::kSecureSchemes);
for (const std::string& scheme : splited)
schemes->secure_schemes.push_back(scheme);
}
void AtomContentClient::AddPepperPlugins(
std::vector<content::PepperPluginInfo>* plugins) {
AddPepperFlashFromCommandLine(plugins);
#if defined(WIDEVINE_CDM_AVAILABLE) && BUILDFLAG(ENABLE_PEPPER_CDMS)
AddWidevineCdmFromCommandLine(plugins);
#endif
#if BUILDFLAG(ENABLE_PEPPER_FLASH)
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
AddPepperFlashFromCommandLine(command_line, plugins);
#endif // BUILDFLAG(ENABLE_PEPPER_FLASH)
ComputeBuiltInPlugins(plugins);
}
void AtomContentClient::AddContentDecryptionModules(
std::vector<content::CdmInfo>* cdms,
std::vector<media::CdmHostFilePath>* cdm_host_file_paths) {
if (cdms) {
#if defined(WIDEVINE_CDM_AVAILABLE)
base::FilePath cdm_path;
std::vector<media::VideoCodec> video_codecs_supported;
base::flat_set<media::CdmSessionType> session_types_supported;
base::flat_set<media::EncryptionMode> encryption_modes_supported;
if (IsWidevineAvailable(&cdm_path, &video_codecs_supported,
&session_types_supported,
&encryption_modes_supported)) {
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
auto cdm_version_string =
command_line->GetSwitchValueASCII(switches::kWidevineCdmVersion);
// CdmInfo needs |path| to be the actual Widevine library,
// not the adapter, so adjust as necessary. It will be in the
// same directory as the installed adapter.
const base::Version version(cdm_version_string);
DCHECK(version.IsValid());
content::CdmCapability capability(
video_codecs_supported, encryption_modes_supported,
session_types_supported, base::flat_set<media::CdmProxy::Protocol>());
cdms->push_back(content::CdmInfo(
kWidevineCdmDisplayName, kWidevineCdmGuid, version, cdm_path,
kWidevineCdmFileSystemId, capability, kWidevineKeySystem, false));
}
#endif // defined(WIDEVINE_CDM_AVAILABLE)
}
}
} // namespace atom

View File

@@ -16,18 +16,25 @@ namespace atom {
class AtomContentClient : public brightray::ContentClient {
public:
AtomContentClient();
virtual ~AtomContentClient();
~AtomContentClient() override;
std::string GetUserAgent() const override;
void SetUserAgent(const std::string& user_agent);
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:
std::string user_agent_override_ = "";
DISALLOW_COPY_AND_ASSIGN(AtomContentClient);
};

View File

@@ -6,14 +6,17 @@
#define ATOM_APP_ATOM_LIBRARY_MAIN_H_
#include "build/build_config.h"
#include "electron/buildflags/buildflags.h"
#if defined(OS_MACOSX)
extern "C" {
__attribute__((visibility("default")))
int AtomMain(int argc, char* argv[]);
__attribute__((visibility("default"))) int AtomMain(int argc, char* argv[]);
__attribute__((visibility("default")))
int AtomInitializeICUandStartNode(int argc, char *argv[]);
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
__attribute__((visibility("default"))) int AtomInitializeICUandStartNode(
int argc,
char* argv[]);
#endif
}
#endif // OS_MACOSX

View File

@@ -14,7 +14,6 @@
#include "brightray/common/mac/main_application_bundle.h"
#include "content/public/app/content_main.h"
#if defined(OS_MACOSX)
int AtomMain(int argc, char* argv[]) {
atom::AtomMainDelegate delegate;
content::ContentMainParams params(&delegate);
@@ -24,7 +23,8 @@ int AtomMain(int argc, char* argv[]) {
return content::ContentMain(params);
}
int AtomInitializeICUandStartNode(int argc, char *argv[]) {
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
int AtomInitializeICUandStartNode(int argc, char* argv[]) {
base::AtExitManager atexit_manager;
base::mac::ScopedNSAutoreleasePool pool;
base::mac::SetOverrideFrameworkBundlePath(
@@ -35,4 +35,4 @@ int AtomInitializeICUandStartNode(int argc, char *argv[]) {
base::i18n::InitializeICU();
return atom::NodeMain(argc, argv);
}
#endif // OS_MACOSX
#endif

View File

@@ -3,7 +3,8 @@
int main(int argc, char* argv[]) {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSArray* pathComponents = [[[NSBundle mainBundle] bundlePath] pathComponents];
pathComponents = [pathComponents subarrayWithRange:NSMakeRange(0, [pathComponents count] - 4)];
pathComponents = [pathComponents
subarrayWithRange:NSMakeRange(0, [pathComponents count] - 4)];
NSString* path = [NSString pathWithComponents:pathComponents];
[[NSWorkspace sharedWorkspace] launchApplication:path];
[pool drain];

View File

@@ -25,9 +25,13 @@
#include "content/public/app/sandbox_helper_win.h"
#include "sandbox/win/src/sandbox_types.h"
#elif defined(OS_LINUX) // defined(OS_WIN)
#include <unistd.h>
#include <cstdio>
#include "atom/app/atom_main_delegate.h" // NOLINT
#include "content/public/app/content_main.h"
#else // defined(OS_LINUX)
#include <unistd.h>
#include <cstdio>
#include "atom/app/atom_library_main.h"
#endif // defined(OS_MACOSX)
@@ -35,14 +39,15 @@
#include "atom/common/atom_command_line.h"
#include "base/at_exit.h"
#include "base/i18n/icu_util.h"
#include "electron/buildflags/buildflags.h"
namespace {
#ifdef ENABLE_RUN_AS_NODE
const auto kRunAsNode = "ELECTRON_RUN_AS_NODE";
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
const char kRunAsNode[] = "ELECTRON_RUN_AS_NODE";
#endif
bool IsEnvSet(const char* name) {
ALLOW_UNUSED_TYPE bool IsEnvSet(const char* name) {
#if defined(OS_WIN)
size_t required_size;
getenv_s(&required_size, nullptr, 0, name);
@@ -53,6 +58,25 @@ bool IsEnvSet(const char* name) {
#endif
}
#if defined(OS_POSIX)
void FixStdioStreams() {
// libuv may mark stdin/stdout/stderr as close-on-exec, which interferes
// with chromium's subprocess spawning. As a workaround, we detect if these
// streams are closed on startup, and reopen them as /dev/null if necessary.
// Otherwise, an unrelated file descriptor will be assigned as stdout/stderr
// which may cause various errors when attempting to write to them.
//
// For details see https://github.com/libuv/libuv/issues/2062
struct stat st;
if (fstat(STDIN_FILENO, &st) < 0 && errno == EBADF)
ignore_result(freopen("/dev/null", "r", stdin));
if (fstat(STDOUT_FILENO, &st) < 0 && errno == EBADF)
ignore_result(freopen("/dev/null", "w", stdout));
if (fstat(STDERR_FILENO, &st) < 0 && errno == EBADF)
ignore_result(freopen("/dev/null", "w", stderr));
}
#endif
} // namespace
#if defined(OS_WIN)
@@ -69,7 +93,7 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd, int) {
#ifdef _DEBUG
// Don't display assert dialog boxes in CI test runs
static const auto kCI = "ELECTRON_CI";
static const char* kCI = "ELECTRON_CI";
bool is_ci = IsEnvSet(kCI);
if (!is_ci) {
for (int i = 0; i < arguments.argc; ++i) {
@@ -91,7 +115,7 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd, int) {
}
#endif
#ifdef ENABLE_RUN_AS_NODE
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
bool run_as_node = IsEnvSet(kRunAsNode);
#else
bool run_as_node = false;
@@ -115,12 +139,10 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd, int) {
// 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);
});
atexit([]() { OnThreadExit(nullptr, DLL_THREAD_DETACH, nullptr); });
#endif
#ifdef ENABLE_RUN_AS_NODE
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
if (run_as_node) {
std::vector<char*> argv(arguments.argc);
std::transform(
@@ -156,7 +178,9 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd, int) {
#elif defined(OS_LINUX) // defined(OS_WIN)
int main(int argc, char* argv[]) {
#ifdef ENABLE_RUN_AS_NODE
FixStdioStreams();
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
if (IsEnvSet(kRunAsNode)) {
base::i18n::InitializeICU();
base::AtExitManager atexit_manager;
@@ -175,7 +199,9 @@ int main(int argc, char* argv[]) {
#else // defined(OS_LINUX)
int main(int argc, char* argv[]) {
#ifdef ENABLE_RUN_AS_NODE
FixStdioStreams();
#if BUILDFLAG(ENABLE_RUN_AS_NODE)
if (IsEnvSet(kRunAsNode)) {
return AtomInitializeICUandStartNode(argc, argv);
}

View File

@@ -5,6 +5,7 @@
#include "atom/app/atom_main_delegate.h"
#include <iostream>
#include <memory>
#include <string>
#include "atom/app/atom_content_client.h"
@@ -21,7 +22,8 @@
#include "base/logging.h"
#include "chrome/common/chrome_paths.h"
#include "content/public/common/content_switches.h"
#include "ipc/ipc_features.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"
@@ -33,6 +35,10 @@
#include "atom/common/common_message_generator.h"
#endif
#if defined(OS_MACOSX)
#include "atom/app/atom_main_delegate_mac.h"
#endif
namespace atom {
namespace {
@@ -45,22 +51,23 @@ bool IsBrowserProcess(base::CommandLine* cmd) {
}
#if defined(OS_WIN)
void InvalidParameterHandler(const wchar_t*, const wchar_t*, const wchar_t*,
unsigned int, uintptr_t) {
void InvalidParameterHandler(const wchar_t*,
const wchar_t*,
const wchar_t*,
unsigned int,
uintptr_t) {
// noop.
}
#endif
} // namespace
AtomMainDelegate::AtomMainDelegate() {
}
AtomMainDelegate::AtomMainDelegate() {}
AtomMainDelegate::~AtomMainDelegate() {
}
AtomMainDelegate::~AtomMainDelegate() {}
bool AtomMainDelegate::BasicStartupComplete(int* exit_code) {
auto command_line = base::CommandLine::ForCurrentProcess();
auto* command_line = base::CommandLine::ForCurrentProcess();
logging::LoggingSettings settings;
#if defined(OS_WIN)
@@ -77,12 +84,12 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_code) {
#else
settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
#endif // defined(DEBUG)
#else // defined(OS_WIN)
#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.
std::unique_ptr<base::Environment> env(base::Environment::Create());
auto env = base::Environment::Create();
if (!command_line->HasSwitch(::switches::kEnableLogging) &&
!env->HasVar("ELECTRON_ENABLE_LOGGING")) {
settings.logging_dest = logging::LOG_NONE;
@@ -99,6 +106,11 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_code) {
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();
@@ -123,14 +135,7 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_code) {
void AtomMainDelegate::PreSandboxStartup() {
brightray::MainDelegate::PreSandboxStartup();
// Set google API key.
std::unique_ptr<base::Environment> env(base::Environment::Create());
if (!env->HasVar("GOOGLE_API_KEY"))
env->SetVar("GOOGLE_API_KEY", GOOGLEAPIS_API_KEY);
auto command_line = base::CommandLine::ForCurrentProcess();
std::string process_type = command_line->GetSwitchValueASCII(
::switches::kProcessType);
auto* command_line = base::CommandLine::ForCurrentProcess();
// Only append arguments for browser process.
if (!IsBrowserProcess(command_line))
@@ -140,10 +145,11 @@ void AtomMainDelegate::PreSandboxStartup() {
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(::switches::kDisableSetuidSandbox);
command_line->AppendSwitch(
service_manager::switches::kDisableSetuidSandbox);
} else {
// Disable renderer sandbox for most of node's functions.
command_line->AppendSwitch(::switches::kNoSandbox);
command_line->AppendSwitch(service_manager::switches::kNoSandbox);
}
}
@@ -156,17 +162,23 @@ void AtomMainDelegate::PreSandboxStartup() {
#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() {
AtomMainDelegate::CreateContentRendererClient() {
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableSandbox) ||
switches::kEnableSandbox) ||
!base::CommandLine::ForCurrentProcess()->HasSwitch(
::switches::kNoSandbox)) {
service_manager::switches::kNoSandbox)) {
renderer_client_.reset(new AtomSandboxedRendererClient);
} else {
renderer_client_.reset(new AtomRendererClient);
@@ -202,7 +214,7 @@ bool AtomMainDelegate::DelaySandboxInitialization(
std::unique_ptr<brightray::ContentClient>
AtomMainDelegate::CreateContentClient() {
return std::unique_ptr<brightray::ContentClient>(new AtomContentClient);
return std::make_unique<AtomContentClient>();
}
} // namespace atom

View File

@@ -5,6 +5,7 @@
#ifndef ATOM_APP_ATOM_MAIN_DELEGATE_H_
#define ATOM_APP_ATOM_MAIN_DELEGATE_H_
#include <memory>
#include <string>
#include "brightray/common/content_client.h"
@@ -15,12 +16,13 @@ namespace atom {
class AtomMainDelegate : public brightray::MainDelegate {
public:
AtomMainDelegate();
~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;

View File

@@ -0,0 +1,15 @@
// Copyright 2013 Slack Technologies, Inc. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ATOM_APP_ATOM_MAIN_DELEGATE_MAC_H_
#define ATOM_APP_ATOM_MAIN_DELEGATE_MAC_H_
namespace atom {
// Initializes NSApplication.
void RegisterAtomCrApp();
} // namespace atom
#endif // ATOM_APP_ATOM_MAIN_DELEGATE_MAC_H_

View File

@@ -4,9 +4,10 @@
#include "atom/app/atom_main_delegate.h"
#include "base/mac/bundle_locations.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"
@@ -20,16 +21,17 @@ namespace atom {
namespace {
base::FilePath GetFrameworksPath() {
return brightray::MainApplicationBundlePath().Append("Contents")
.Append("Frameworks");
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");
.Append("Contents")
.Append("MacOS")
.Append(name + " Helper");
}
} // namespace
@@ -41,14 +43,14 @@ void AtomMainDelegate::OverrideFrameworkBundlePath() {
void AtomMainDelegate::OverrideChildProcessPath() {
base::FilePath frameworks_path = GetFrameworksPath();
base::FilePath helper_path = GetHelperAppPath(frameworks_path,
ATOM_PRODUCT_NAME);
base::FilePath helper_path =
GetHelperAppPath(frameworks_path, ATOM_PRODUCT_NAME);
if (!base::PathExists(helper_path))
helper_path = GetHelperAppPath(frameworks_path,
brightray::GetApplicationName());
helper_path =
GetHelperAppPath(frameworks_path, brightray::GetApplicationName());
if (!base::PathExists(helper_path))
LOG(FATAL) << "Unable to find helper app";
PathService::Override(content::CHILD_PROCESS_EXE, helper_path);
base::PathService::Override(content::CHILD_PROCESS_EXE, helper_path);
}
void AtomMainDelegate::SetUpBundleOverrides() {
@@ -62,4 +64,9 @@ void AtomMainDelegate::SetUpBundleOverrides() {
base::mac::SetBaseBundleID(base_bundle_id.c_str());
}
void RegisterAtomCrApp() {
// Force the NSApplication subclass to be used.
[AtomApplication sharedApplication];
}
} // namespace atom

File diff suppressed because it is too large Load Diff

View File

@@ -14,4 +14,3 @@ bool CheckCommandLineArguments(int argc, base::CommandLine::CharType** argv);
} // namespace atom
#endif // ATOM_APP_COMMAND_LINE_ARGS_H_

View File

@@ -2,16 +2,18 @@
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifdef ENABLE_RUN_AS_NODE
#include "atom/app/node_main.h"
#include <memory>
#include <utility>
#include "atom/app/uv_task_runner.h"
#include "atom/browser/javascript_environment.h"
#include "atom/browser/node_debugger.h"
#include "atom/common/api/atom_bindings.h"
#include "atom/common/crash_reporter/crash_reporter.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "atom/common/node_bindings.h"
#include "base/command_line.h"
#include "base/feature_list.h"
#include "base/task_scheduler/task_scheduler.h"
@@ -25,7 +27,7 @@
namespace atom {
int NodeMain(int argc, char *argv[]) {
int NodeMain(int argc, char* argv[]) {
base::CommandLine::Init(argc, argv);
int exit_code = 1;
@@ -37,31 +39,34 @@ int NodeMain(int argc, char *argv[]) {
base::ThreadTaskRunnerHandle handle(uv_task_runner);
// Initialize feature list.
std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
auto feature_list = std::make_unique<base::FeatureList>();
feature_list->InitializeFromCommandLine("", "");
base::FeatureList::SetInstance(std::move(feature_list));
gin::V8Initializer::LoadV8Snapshot();
gin::V8Initializer::LoadV8Snapshot(
gin::V8Initializer::V8SnapshotFileType::kWithAdditionalContext);
gin::V8Initializer::LoadV8Natives();
// V8 requires a task scheduler apparently
base::TaskScheduler::CreateAndStartWithDefaultParams("Electron");
// Initialize gin::IsolateHolder.
JavascriptEnvironment gin_env;
JavascriptEnvironment gin_env(loop);
// Explicitly register electron's builtin modules.
NodeBindings::RegisterBuiltinModules();
int exec_argc;
const char** exec_argv;
node::Init(&argc, const_cast<const char**>(argv), &exec_argc, &exec_argv);
node::IsolateData isolate_data(gin_env.isolate(), loop);
node::Environment* env = node::CreateEnvironment(
&isolate_data, gin_env.context(), argc, argv,
exec_argc, exec_argv);
node::CreateIsolateData(gin_env.isolate(), loop, gin_env.platform()),
gin_env.context(), argc, argv, exec_argc, exec_argv);
// Enable support for v8 inspector.
NodeDebugger node_debugger(env);
node_debugger.Start(gin_env.platform());
node_debugger.Start();
mate::Dictionary process(gin_env.isolate(), env->process_object());
#if defined(OS_WIN)
@@ -79,6 +84,7 @@ int NodeMain(int argc, char *argv[]) {
bool more;
do {
more = uv_run(env->event_loop(), UV_RUN_ONCE);
gin_env.platform()->DrainTasks(env->isolate());
if (more == false) {
node::EmitBeforeExit(env);
@@ -92,6 +98,9 @@ int NodeMain(int argc, char *argv[]) {
exit_code = node::EmitExit(env);
node::RunAtExit(env);
gin_env.platform()->DrainTasks(env->isolate());
gin_env.platform()->CancelPendingDelayedTasks(env->isolate());
gin_env.platform()->UnregisterIsolate(env->isolate());
node::FreeEnvironment(env);
}
@@ -109,5 +118,3 @@ int NodeMain(int argc, char *argv[]) {
}
} // namespace atom
#endif // ENABLE_RUN_AS_NODE

View File

@@ -5,14 +5,10 @@
#ifndef ATOM_APP_NODE_MAIN_H_
#define ATOM_APP_NODE_MAIN_H_
#ifdef ENABLE_RUN_AS_NODE
namespace atom {
int NodeMain(int argc, char *argv[]);
int NodeMain(int argc, char* argv[]);
} // namespace atom
#endif // ENABLE_RUN_AS_NODE
#endif // ATOM_APP_NODE_MAIN_H_

View File

@@ -10,8 +10,7 @@
namespace atom {
UvTaskRunner::UvTaskRunner(uv_loop_t* loop) : loop_(loop) {
}
UvTaskRunner::UvTaskRunner(uv_loop_t* loop) : loop_(loop) {}
UvTaskRunner::~UvTaskRunner() {
for (auto& iter : tasks_) {
@@ -20,7 +19,7 @@ UvTaskRunner::~UvTaskRunner() {
}
}
bool UvTaskRunner::PostDelayedTask(const tracked_objects::Location& from_here,
bool UvTaskRunner::PostDelayedTask(const base::Location& from_here,
base::OnceClosure task,
base::TimeDelta delay) {
auto* timer = new uv_timer_t;
@@ -35,10 +34,9 @@ bool UvTaskRunner::RunsTasksInCurrentSequence() const {
return true;
}
bool UvTaskRunner::PostNonNestableDelayedTask(
const tracked_objects::Location& from_here,
base::OnceClosure task,
base::TimeDelta delay) {
bool UvTaskRunner::PostNonNestableDelayedTask(const base::Location& from_here,
base::OnceClosure task,
base::TimeDelta delay) {
return PostDelayedTask(from_here, std::move(task), delay);
}

View File

@@ -8,8 +8,9 @@
#include <map>
#include "base/callback.h"
#include "base/location.h"
#include "base/single_thread_task_runner.h"
#include "vendor/node/deps/uv/include/uv.h"
#include "uv.h" // NOLINT(build/include)
namespace atom {
@@ -17,19 +18,18 @@ namespace atom {
class UvTaskRunner : public base::SingleThreadTaskRunner {
public:
explicit UvTaskRunner(uv_loop_t* loop);
~UvTaskRunner() override;
// base::SingleThreadTaskRunner:
bool PostDelayedTask(const tracked_objects::Location& from_here,
bool PostDelayedTask(const base::Location& from_here,
base::OnceClosure task,
base::TimeDelta delay) override;
bool RunsTasksInCurrentSequence() const override;
bool PostNonNestableDelayedTask(
const tracked_objects::Location& from_here,
base::OnceClosure task,
base::TimeDelta delay) override;
bool PostNonNestableDelayedTask(const base::Location& from_here,
base::OnceClosure task,
base::TimeDelta delay) override;
private:
~UvTaskRunner() override;
static void OnTimeout(uv_timer_t* timer);
static void OnClose(uv_handle_t* handle);

View File

@@ -7,9 +7,11 @@
#include <string>
#include <vector>
#include "atom/app/atom_content_client.h"
#include "atom/browser/api/atom_api_menu.h"
#include "atom/browser/api/atom_api_session.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/api/gpuinfo_manager.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/login_handler.h"
@@ -20,8 +22,8 @@
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/image_converter.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "atom/common/native_mate_converters/network_converter.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/environment.h"
@@ -42,14 +44,23 @@
#include "content/public/browser/client_certificate_delegate.h"
#include "content/public/browser/gpu_data_manager.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/common/content_client.h"
#include "content/public/common/content_switches.h"
#include "media/audio/audio_manager.h"
#include "native_mate/object_template_builder.h"
#include "net/ssl/client_cert_identity.h"
#include "net/ssl/ssl_cert_request_info.h"
#include "services/network/public/cpp/network_switches.h"
#include "services/service_manager/sandbox/switches.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/gfx/image/image.h"
// clang-format off
// This header should be declared at the end to avoid
// redefinition errors.
#include "atom/common/node_includes.h" // NOLINT(build/include_alpha)
// clang-format on
#if defined(OS_WIN)
#include "atom/browser/ui/win/jump_list.h"
#include "base/strings/utf_string_conversions.h"
@@ -64,9 +75,10 @@ using atom::Browser;
namespace mate {
#if defined(OS_WIN)
template<>
template <>
struct Converter<Browser::UserTask> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
Browser::UserTask* out) {
mate::Dictionary dict;
if (!ConvertFromV8(isolate, val, &dict))
@@ -83,13 +95,14 @@ struct Converter<Browser::UserTask> {
}
};
using atom::JumpListItem;
using atom::JumpListCategory;
using atom::JumpListItem;
using atom::JumpListResult;
template<>
template <>
struct Converter<JumpListItem::Type> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
JumpListItem::Type* out) {
std::string item_type;
if (!ConvertFromV8(isolate, val, &item_type))
@@ -127,9 +140,10 @@ struct Converter<JumpListItem::Type> {
}
};
template<>
template <>
struct Converter<JumpListItem> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
JumpListItem* out) {
mate::Dictionary dict;
if (!ConvertFromV8(isolate, val, &dict))
@@ -189,9 +203,10 @@ struct Converter<JumpListItem> {
}
};
template<>
template <>
struct Converter<JumpListCategory::Type> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
JumpListCategory::Type* out) {
std::string category_type;
if (!ConvertFromV8(isolate, val, &category_type))
@@ -235,9 +250,10 @@ struct Converter<JumpListCategory::Type> {
}
};
template<>
template <>
struct Converter<JumpListCategory> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
JumpListCategory* out) {
mate::Dictionary dict;
if (!ConvertFromV8(isolate, val, &dict))
@@ -264,7 +280,7 @@ struct Converter<JumpListCategory> {
};
// static
template<>
template <>
struct Converter<JumpListResult> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, JumpListResult val) {
std::string result_code;
@@ -298,9 +314,10 @@ struct Converter<JumpListResult> {
};
#endif
template<>
template <>
struct Converter<Browser::LoginItemSettings> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
Browser::LoginItemSettings* out) {
mate::Dictionary dict;
if (!ConvertFromV8(isolate, val, &dict))
@@ -325,15 +342,16 @@ struct Converter<Browser::LoginItemSettings> {
}
};
template<>
template <>
struct Converter<content::CertificateRequestResultType> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
content::CertificateRequestResultType* out) {
bool b;
if (!ConvertFromV8(isolate, val, &b))
return false;
*out = b ? content::CERTIFICATE_REQUEST_RESULT_TYPE_CONTINUE :
content::CERTIFICATE_REQUEST_RESULT_TYPE_CANCEL;
*out = b ? content::CERTIFICATE_REQUEST_RESULT_TYPE_CONTINUE
: content::CERTIFICATE_REQUEST_RESULT_TYPE_CANCEL;
return true;
}
};
@@ -342,6 +360,16 @@ struct Converter<content::CertificateRequestResultType> {
namespace atom {
ProcessMetric::ProcessMetric(int type,
base::ProcessId pid,
std::unique_ptr<base::ProcessMetrics> metrics) {
this->type = type;
this->pid = pid;
this->metrics = std::move(metrics);
}
ProcessMetric::~ProcessMetric() = default;
namespace api {
namespace {
@@ -405,7 +433,9 @@ int GetPathConstant(const std::string& name) {
}
bool NotificationCallbackWrapper(
const ProcessSingleton::NotificationCallback& callback,
const base::Callback<
void(const base::CommandLine::StringVector& command_line,
const base::FilePath& current_directory)>& callback,
const base::CommandLine::StringVector& cmd,
const base::FilePath& cwd) {
// Make sure the callback is called after app gets ready.
@@ -415,7 +445,7 @@ bool NotificationCallbackWrapper(
scoped_refptr<base::SingleThreadTaskRunner> task_runner(
base::ThreadTaskRunnerHandle::Get());
task_runner->PostTask(
FROM_HERE, base::Bind(base::IgnoreResult(callback), cmd, cwd));
FROM_HERE, base::BindOnce(base::IgnoreResult(callback), cmd, cwd));
}
// ProcessSingleton needs to know whether current process is quiting.
return !Browser::Get()->is_shutting_down();
@@ -459,7 +489,7 @@ void OnClientCertificateSelected(
if (!certs.empty()) {
scoped_refptr<net::X509Certificate> cert(certs[0].get());
for (size_t i = 0; i < identities->size(); ++i) {
if (cert->Equals((*identities)[i]->certificate())) {
if (cert->EqualsExcludingChain((*identities)[i]->certificate())) {
net::ClientCertIdentity::SelfOwningAcquirePrivateKey(
std::move((*identities)[i]),
base::Bind(&GotPrivateKey, delegate, std::move(cert)));
@@ -479,12 +509,11 @@ void PassLoginInformation(scoped_refptr<LoginHandler> login_handler,
}
#if defined(USE_NSS_CERTS)
int ImportIntoCertStore(
CertificateManagerModel* model,
const base::DictionaryValue& options) {
int ImportIntoCertStore(CertificateManagerModel* model,
const base::DictionaryValue& options) {
std::string file_data, cert_path;
base::string16 password;
net::CertificateList imported_certs;
net::ScopedCERTCertificateList imported_certs;
int rv = -1;
options.GetString("certificate", &cert_path);
options.GetString("password", &password);
@@ -492,17 +521,13 @@ int ImportIntoCertStore(
if (!cert_path.empty()) {
if (base::ReadFileToString(base::FilePath(cert_path), &file_data)) {
auto module = model->cert_db()->GetPrivateSlot();
rv = model->ImportFromPKCS12(module.get(),
file_data,
password,
true,
rv = model->ImportFromPKCS12(module.get(), file_data, password, true,
&imported_certs);
if (imported_certs.size() > 1) {
auto it = imported_certs.begin();
++it; // skip first which would be the client certificate.
for (; it != imported_certs.end(); ++it)
rv &= model->SetCertTrust(it->get(),
net::CA_CERT,
rv &= model->SetCertTrust(it->get(), net::CA_CERT,
net::NSSCertDatabase::TRUSTED_SSL);
}
}
@@ -521,7 +546,7 @@ void OnIconDataAvailable(v8::Isolate* isolate,
callback.Run(v8::Null(isolate), *icon);
} else {
v8::Local<v8::String> error_message =
v8::String::NewFromUtf8(isolate, "Failed to get file icon.");
v8::String::NewFromUtf8(isolate, "Failed to get file icon.");
callback.Run(v8::Exception::Error(error_message), gfx::Image());
}
}
@@ -532,30 +557,33 @@ App::App(v8::Isolate* isolate) {
static_cast<AtomBrowserClient*>(AtomBrowserClient::Get())->set_delegate(this);
Browser::Get()->AddObserver(this);
content::GpuDataManager::GetInstance()->AddObserver(this);
base::ProcessId pid = base::GetCurrentProcId();
std::unique_ptr<atom::ProcessMetric> process_metric(
new atom::ProcessMetric(
content::PROCESS_TYPE_BROWSER,
pid,
base::ProcessMetrics::CreateCurrentProcessMetrics()));
auto process_metric = std::make_unique<atom::ProcessMetric>(
content::PROCESS_TYPE_BROWSER, pid,
base::ProcessMetrics::CreateCurrentProcessMetrics());
app_metrics_[pid] = std::move(process_metric);
Init(isolate);
}
App::~App() {
static_cast<AtomBrowserClient*>(AtomBrowserClient::Get())->set_delegate(
nullptr);
static_cast<AtomBrowserClient*>(AtomBrowserClient::Get())
->set_delegate(nullptr);
Browser::Get()->RemoveObserver(this);
content::GpuDataManager::GetInstance()->RemoveObserver(this);
content::BrowserChildProcessObserver::Remove(this);
}
void App::OnBeforeQuit(bool* prevent_default) {
*prevent_default = Emit("before-quit");
if (Emit("before-quit")) {
*prevent_default = true;
}
}
void App::OnWillQuit(bool* prevent_default) {
*prevent_default = Emit("will-quit");
if (Emit("will-quit")) {
*prevent_default = true;
}
}
void App::OnWindowAllClosed() {
@@ -573,7 +601,9 @@ void App::OnQuit() {
}
void App::OnOpenFile(bool* prevent_default, const std::string& file_path) {
*prevent_default = Emit("open-file", file_path);
if (Emit("open-file", file_path)) {
*prevent_default = true;
}
}
void App::OnOpenURL(const std::string& url) {
@@ -609,36 +639,37 @@ void App::OnAccessibilitySupportChanged() {
}
#if defined(OS_MACOSX)
void App::OnWillContinueUserActivity(
bool* prevent_default,
const std::string& type) {
*prevent_default = Emit("will-continue-activity", type);
void App::OnWillContinueUserActivity(bool* prevent_default,
const std::string& type) {
if (Emit("will-continue-activity", type)) {
*prevent_default = true;
}
}
void App::OnDidFailToContinueUserActivity(
const std::string& type,
const std::string& error) {
void App::OnDidFailToContinueUserActivity(const std::string& type,
const std::string& error) {
Emit("continue-activity-error", type, error);
}
void App::OnContinueUserActivity(
bool* prevent_default,
const std::string& type,
const base::DictionaryValue& user_info) {
*prevent_default = Emit("continue-activity", type, user_info);
void App::OnContinueUserActivity(bool* prevent_default,
const std::string& type,
const base::DictionaryValue& user_info) {
if (Emit("continue-activity", type, user_info)) {
*prevent_default = true;
}
}
void App::OnUserActivityWasContinued(
const std::string& type,
const base::DictionaryValue& user_info) {
void App::OnUserActivityWasContinued(const std::string& type,
const base::DictionaryValue& user_info) {
Emit("activity-was-continued", type, user_info);
}
void App::OnUpdateUserActivityState(
bool* prevent_default,
const std::string& type,
const base::DictionaryValue& user_info) {
*prevent_default = Emit("update-activity-state", type, user_info);
void App::OnUpdateUserActivityState(bool* prevent_default,
const std::string& type,
const base::DictionaryValue& user_info) {
if (Emit("update-activity-state", type, user_info)) {
*prevent_default = true;
}
}
void App::OnNewWindowForTab() {
@@ -646,20 +677,17 @@ void App::OnNewWindowForTab() {
}
#endif
void App::OnLogin(LoginHandler* login_handler,
void App::OnLogin(scoped_refptr<LoginHandler> login_handler,
const base::DictionaryValue& request_details) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
bool prevent_default = false;
content::WebContents* web_contents = login_handler->GetWebContents();
if (web_contents) {
prevent_default =
Emit("login",
WebContents::CreateFrom(isolate(), web_contents),
request_details,
login_handler->auth_info(),
base::Bind(&PassLoginInformation,
make_scoped_refptr(login_handler)));
prevent_default = Emit(
"login", WebContents::CreateFrom(isolate(), web_contents),
request_details, login_handler->auth_info(),
base::Bind(&PassLoginInformation, base::RetainedRef(login_handler)));
}
// Default behavior is to always cancel the auth.
@@ -679,7 +707,7 @@ bool App::CanCreateWindow(
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
const std::vector<std::string>& additional_features,
const scoped_refptr<content::ResourceRequestBody>& body,
const scoped_refptr<network::ResourceRequestBody>& body,
bool user_gesture,
bool opener_suppressed,
bool* no_javascript_access) {
@@ -689,8 +717,8 @@ bool App::CanCreateWindow(
content::WebContents::FromRenderFrameHost(opener);
if (web_contents) {
auto api_web_contents = WebContents::CreateFrom(isolate(), web_contents);
api_web_contents->OnCreateWindow(target_url, frame_name, disposition,
additional_features, body);
api_web_contents->OnCreateWindow(target_url, referrer, frame_name,
disposition, additional_features, body);
}
return false;
@@ -702,19 +730,15 @@ void App::AllowCertificateError(
const net::SSLInfo& ssl_info,
const GURL& request_url,
content::ResourceType resource_type,
bool overridable,
bool strict_enforcement,
bool expired_previous_decision,
const base::Callback<void(content::CertificateRequestResultType)>&
callback) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
bool prevent_default = Emit("certificate-error",
WebContents::CreateFrom(isolate(), web_contents),
request_url,
net::ErrorToString(cert_error),
ssl_info.cert,
callback);
bool prevent_default = Emit(
"certificate-error", WebContents::CreateFrom(isolate(), web_contents),
request_url, net::ErrorToString(cert_error), ssl_info.cert, callback);
// Deny the certificate by default.
if (!prevent_default)
@@ -726,8 +750,8 @@ void App::SelectClientCertificate(
net::SSLCertRequestInfo* cert_request_info,
net::ClientCertIdentityList identities,
std::unique_ptr<content::ClientCertificateDelegate> delegate) {
std::shared_ptr<content::ClientCertificateDelegate>
shared_delegate(delegate.release());
std::shared_ptr<content::ClientCertificateDelegate> shared_delegate(
delegate.release());
// Convert the ClientCertIdentityList to a CertificateList
// to avoid changes in the API.
@@ -757,7 +781,7 @@ void App::SelectClientCertificate(
void App::OnGpuProcessCrashed(base::TerminationStatus status) {
Emit("gpu-process-crashed",
status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED);
status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED);
}
void App::BrowserChildProcessLaunchedAndConnected(
@@ -770,18 +794,21 @@ void App::BrowserChildProcessHostDisconnected(
ChildProcessDisconnected(base::GetProcId(data.handle));
}
void App::BrowserChildProcessCrashed(const content::ChildProcessData& data,
int exit_code) {
void App::BrowserChildProcessCrashed(
const content::ChildProcessData& data,
const content::ChildProcessTerminationInfo& info) {
ChildProcessDisconnected(base::GetProcId(data.handle));
}
void App::BrowserChildProcessKilled(const content::ChildProcessData& data,
int exit_code) {
void App::BrowserChildProcessKilled(
const content::ChildProcessData& data,
const content::ChildProcessTerminationInfo& info) {
ChildProcessDisconnected(base::GetProcId(data.handle));
}
void App::RenderProcessReady(content::RenderProcessHost* host) {
ChildProcessLaunched(content::PROCESS_TYPE_RENDERER, host->GetHandle());
ChildProcessLaunched(content::PROCESS_TYPE_RENDERER,
host->GetProcess().Handle());
}
void App::RenderProcessDisconnected(base::ProcessId host_pid) {
@@ -799,9 +826,8 @@ void App::ChildProcessLaunched(int process_type, base::ProcessHandle handle) {
std::unique_ptr<base::ProcessMetrics> metrics(
base::ProcessMetrics::CreateProcessMetrics(handle));
#endif
std::unique_ptr<atom::ProcessMetric> process_metric(
new atom::ProcessMetric(process_type, pid, std::move(metrics)));
app_metrics_[pid] = std::move(process_metric);
app_metrics_[pid] = std::make_unique<atom::ProcessMetric>(process_type, pid,
std::move(metrics));
}
void App::ChildProcessDisconnected(base::ProcessId pid) {
@@ -821,7 +847,7 @@ base::FilePath App::GetPath(mate::Arguments* args, const std::string& name) {
base::FilePath path;
int key = GetPathConstant(name);
if (key >= 0)
succeed = PathService::Get(key, &path);
succeed = base::PathService::Get(key, &path);
if (!succeed)
args->ThrowError("Failed to get '" + name + "' path");
return path;
@@ -838,7 +864,8 @@ void App::SetPath(mate::Arguments* args,
bool succeed = false;
int key = GetPathConstant(name);
if (key >= 0)
succeed = PathService::OverrideAndCreateIfNeeded(key, path, true, false);
succeed =
base::PathService::OverrideAndCreateIfNeeded(key, path, true, false);
if (!succeed)
args->ThrowError("Failed to set path");
}
@@ -854,30 +881,43 @@ std::string App::GetLocale() {
return g_browser_process->GetApplicationLocale();
}
bool App::MakeSingleInstance(
const ProcessSingleton::NotificationCallback& callback) {
void App::OnSecondInstance(const base::CommandLine::StringVector& cmd,
const base::FilePath& cwd) {
Emit("second-instance", cmd, cwd);
}
bool App::HasSingleInstanceLock() const {
if (process_singleton_)
return false;
return true;
return false;
}
bool App::RequestSingleInstanceLock() {
if (HasSingleInstanceLock())
return true;
base::FilePath user_dir;
PathService::Get(brightray::DIR_USER_DATA, &user_dir);
base::PathService::Get(brightray::DIR_USER_DATA, &user_dir);
auto cb = base::Bind(&App::OnSecondInstance, base::Unretained(this));
process_singleton_.reset(new ProcessSingleton(
user_dir, base::Bind(NotificationCallbackWrapper, callback)));
user_dir, base::Bind(NotificationCallbackWrapper, cb)));
switch (process_singleton_->NotifyOtherProcessOrCreate()) {
case ProcessSingleton::NotifyResult::LOCK_ERROR:
case ProcessSingleton::NotifyResult::PROFILE_IN_USE:
case ProcessSingleton::NotifyResult::PROCESS_NOTIFIED: {
process_singleton_.reset();
return true;
return false;
}
case ProcessSingleton::NotifyResult::PROCESS_NONE:
default: // Shouldn't be needed, but VS warns if it is not there.
return false;
return true;
}
}
void App::ReleaseSingleInstance() {
void App::ReleaseSingleInstanceLock() {
if (process_singleton_) {
process_singleton_->Cleanup();
process_singleton_.reset();
@@ -906,7 +946,7 @@ bool App::Relaunch(mate::Arguments* js_args) {
if (exec_path.empty()) {
base::FilePath current_exe_path;
PathService::Get(base::FILE_EXE, &current_exe_path);
base::PathService::Get(base::FILE_EXE, &current_exe_path);
argv.push_back(current_exe_path.value());
} else {
argv.push_back(exec_path.value());
@@ -919,8 +959,9 @@ bool App::Relaunch(mate::Arguments* js_args) {
void App::DisableHardwareAcceleration(mate::Arguments* args) {
if (Browser::Get()->is_ready()) {
args->ThrowError("app.disableHardwareAcceleration() can only be called "
"before app is ready");
args->ThrowError(
"app.disableHardwareAcceleration() can only be called "
"before app is ready");
return;
}
content::GpuDataManager::GetInstance()->DisableHardwareAcceleration();
@@ -938,12 +979,19 @@ void App::DisableDomainBlockingFor3DAPIs(mate::Arguments* args) {
}
bool App::IsAccessibilitySupportEnabled() {
auto ax_state = content::BrowserAccessibilityState::GetInstance();
auto* ax_state = content::BrowserAccessibilityState::GetInstance();
return ax_state->IsAccessibleBrowser();
}
void App::SetAccessibilitySupportEnabled(bool enabled) {
auto ax_state = content::BrowserAccessibilityState::GetInstance();
void App::SetAccessibilitySupportEnabled(bool enabled, mate::Arguments* args) {
if (!Browser::Get()->is_ready()) {
args->ThrowError(
"app.setAccessibilitySupportEnabled() can only be called "
"after app is ready");
return;
}
auto* ax_state = content::BrowserAccessibilityState::GetInstance();
if (enabled) {
ax_state->OnScreenReaderDetected();
} else {
@@ -959,18 +1007,16 @@ Browser::LoginItemSettings App::GetLoginItemSettings(mate::Arguments* args) {
}
#if defined(USE_NSS_CERTS)
void App::ImportCertificate(
const base::DictionaryValue& options,
const net::CompletionCallback& callback) {
void App::ImportCertificate(const base::DictionaryValue& options,
const net::CompletionCallback& callback) {
auto browser_context = AtomBrowserContext::From("", false);
if (!certificate_manager_model_) {
std::unique_ptr<base::DictionaryValue> copy = options.CreateDeepCopy();
auto copy = base::DictionaryValue::From(
base::Value::ToUniquePtrValue(options.Clone()));
CertificateManagerModel::Create(
browser_context.get(),
base::Bind(&App::OnCertificateManagerModelCreated,
base::Unretained(this),
base::Passed(&copy),
callback));
base::Unretained(this), base::Passed(&copy), callback));
return;
}
@@ -983,8 +1029,8 @@ void App::OnCertificateManagerModelCreated(
const net::CompletionCallback& callback,
std::unique_ptr<CertificateManagerModel> model) {
certificate_manager_model_ = std::move(model);
int rv = ImportIntoCertStore(certificate_manager_model_.get(),
*(options.get()));
int rv =
ImportIntoCertStore(certificate_manager_model_.get(), *(options.get()));
callback.Run(rv);
}
#endif
@@ -1013,7 +1059,7 @@ JumpListResult App::SetJumpList(v8::Local<v8::Value> val,
std::vector<JumpListCategory> categories;
bool delete_jump_list = val->IsNull();
if (!delete_jump_list &&
!mate::ConvertFromV8(args->isolate(), val, &categories)) {
!mate::ConvertFromV8(args->isolate(), val, &categories)) {
args->ThrowError("Argument must be null or an array of categories");
return JumpListResult::ARGUMENT_ERROR;
}
@@ -1021,9 +1067,8 @@ JumpListResult App::SetJumpList(v8::Local<v8::Value> val,
JumpList jump_list(Browser::Get()->GetAppUserModelID());
if (delete_jump_list) {
return jump_list.Delete()
? JumpListResult::SUCCESS
: JumpListResult::GENERIC_ERROR;
return jump_list.Delete() ? JumpListResult::SUCCESS
: JumpListResult::GENERIC_ERROR;
}
// Start a transaction that updates the JumpList of this application.
@@ -1046,8 +1091,7 @@ JumpListResult App::SetJumpList(v8::Local<v8::Value> val,
}
#endif // defined(OS_WIN)
void App::GetFileIcon(const base::FilePath& path,
mate::Arguments* args) {
void App::GetFileIcon(const base::FilePath& path, mate::Arguments* args) {
mate::Dictionary options;
IconLoader::IconSize icon_size;
FileIconCallback callback;
@@ -1070,7 +1114,7 @@ void App::GetFileIcon(const base::FilePath& path,
return;
}
auto icon_manager = g_browser_process->GetIconManager();
auto* icon_manager = AtomBrowserMainParts::Get()->GetIconManager();
gfx::Image* icon =
icon_manager->LookupIconFromFilepath(normalized_path, icon_size);
if (icon) {
@@ -1089,31 +1133,19 @@ std::vector<mate::Dictionary> App::GetAppMetrics(v8::Isolate* isolate) {
for (const auto& process_metric : app_metrics_) {
mate::Dictionary pid_dict = mate::Dictionary::CreateEmpty(isolate);
mate::Dictionary memory_dict = mate::Dictionary::CreateEmpty(isolate);
mate::Dictionary cpu_dict = mate::Dictionary::CreateEmpty(isolate);
memory_dict.Set("workingSetSize",
static_cast<double>(
process_metric.second->metrics->GetWorkingSetSize() >> 10));
memory_dict.Set("peakWorkingSetSize",
static_cast<double>(
process_metric.second->metrics->GetPeakWorkingSetSize() >> 10));
pid_dict.SetHidden("simple", true);
cpu_dict.SetHidden("simple", true);
size_t private_bytes, shared_bytes;
if (process_metric.second->metrics->GetMemoryBytes(&private_bytes,
&shared_bytes)) {
memory_dict.Set("privateBytes", static_cast<double>(private_bytes >> 10));
memory_dict.Set("sharedBytes", static_cast<double>(shared_bytes >> 10));
}
pid_dict.Set("memory", memory_dict);
cpu_dict.Set("percentCPUUsage",
process_metric.second->metrics->GetPlatformIndependentCPUUsage()
/ processor_count);
cpu_dict.Set(
"percentCPUUsage",
process_metric.second->metrics->GetPlatformIndependentCPUUsage() /
processor_count);
#if !defined(OS_WIN)
cpu_dict.Set("idleWakeupsPerSecond",
process_metric.second->metrics->GetIdleWakeupsPerSecond());
process_metric.second->metrics->GetIdleWakeupsPerSecond());
#else
// Chrome's underlying process_metrics.cc will throw a non-fatal warning
// that this method isn't implemented on Windows, so set it to 0 instead
@@ -1123,8 +1155,8 @@ std::vector<mate::Dictionary> App::GetAppMetrics(v8::Isolate* isolate) {
pid_dict.Set("cpu", cpu_dict);
pid_dict.Set("pid", process_metric.second->pid);
pid_dict.Set("type",
content::GetProcessTypeNameInEnglish(process_metric.second->type));
pid_dict.Set("type", content::GetProcessTypeNameInEnglish(
process_metric.second->type));
result.push_back(pid_dict);
}
@@ -1133,26 +1165,43 @@ std::vector<mate::Dictionary> App::GetAppMetrics(v8::Isolate* isolate) {
v8::Local<v8::Value> App::GetGPUFeatureStatus(v8::Isolate* isolate) {
auto status = content::GetFeatureStatus();
return mate::ConvertToV8(isolate,
status ? *status : base::DictionaryValue());
base::DictionaryValue temp;
return mate::ConvertToV8(isolate, status ? *status : temp);
}
void App::EnableMixedSandbox(mate::Arguments* args) {
if (Browser::Get()->is_ready()) {
args->ThrowError("app.enableMixedSandbox() can only be called "
"before app is ready");
return;
v8::Local<v8::Promise> App::GetGPUInfo(v8::Isolate* isolate,
const std::string& info_type) {
auto* const gpu_data_manager = content::GpuDataManagerImpl::GetInstance();
scoped_refptr<util::Promise> promise = new util::Promise(isolate);
if (info_type != "basic" && info_type != "complete") {
promise->RejectWithErrorMessage(
"Invalid info type. Use 'basic' or 'complete'");
return promise->GetHandle();
}
std::string reason;
if (!gpu_data_manager->GpuAccessAllowed(&reason)) {
promise->RejectWithErrorMessage("GPU access not allowed. Reason: " +
reason);
return promise->GetHandle();
}
auto command_line = base::CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(::switches::kNoSandbox)) {
#if defined(OS_WIN)
const base::CommandLine::CharType* noSandboxArg = L"--no-sandbox";
auto* const info_mgr = GPUInfoManager::GetInstance();
if (info_type == "complete") {
#if defined(OS_WIN) || defined(OS_MACOSX)
info_mgr->FetchCompleteInfo(promise);
#else
const base::CommandLine::CharType* noSandboxArg = "--no-sandbox";
info_mgr->FetchBasicInfo(promise);
#endif
} else /* (info_type == "basic") */ {
info_mgr->FetchBasicInfo(promise);
}
return promise->GetHandle();
}
// Remove the --no-sandbox switch
static void RemoveNoSandboxSwitch(base::CommandLine* command_line) {
if (command_line->HasSwitch(service_manager::switches::kNoSandbox)) {
const base::CommandLine::CharType* noSandboxArg =
FILE_PATH_LITERAL("--no-sandbox");
base::CommandLine::StringVector modified_command_line;
for (auto& arg : command_line->argv()) {
if (arg.compare(noSandboxArg) != 0) {
@@ -1161,9 +1210,46 @@ void App::EnableMixedSandbox(mate::Arguments* args) {
}
command_line->InitFromArgv(modified_command_line);
}
}
void App::EnableSandbox(mate::Arguments* args) {
if (Browser::Get()->is_ready()) {
args->ThrowError(
"app.enableSandbox() can only be called "
"before app is ready");
return;
}
auto* command_line = base::CommandLine::ForCurrentProcess();
RemoveNoSandboxSwitch(command_line);
command_line->AppendSwitch(switches::kEnableSandbox);
}
void App::EnableMixedSandbox(mate::Arguments* args) {
if (Browser::Get()->is_ready()) {
args->ThrowError(
"app.enableMixedSandbox() can only be called "
"before app is ready");
return;
}
auto* command_line = base::CommandLine::ForCurrentProcess();
RemoveNoSandboxSwitch(command_line);
command_line->AppendSwitch(switches::kEnableMixedSandbox);
}
void App::SetUserAgentFallback(const std::string& user_agent) {
AtomContentClient* client =
static_cast<AtomContentClient*>(content::GetContentClient());
client->SetUserAgent(user_agent);
}
std::string App::GetUserAgentFallback() {
AtomContentClient* client =
static_cast<AtomContentClient*>(content::GetContentClient());
return client->GetUserAgent();
}
#if defined(OS_MACOSX)
bool App::MoveToApplicationsFolder(mate::Arguments* args) {
return ui::cocoa::AtomBundleMover::Move(args);
@@ -1180,8 +1266,8 @@ mate::Handle<App> App::Create(v8::Isolate* isolate) {
}
// static
void App::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
void App::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "App"));
auto browser = base::Unretained(Browser::Get());
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
@@ -1193,6 +1279,7 @@ void App::BuildPrototype(
.SetMethod("getName", base::Bind(&Browser::GetName, browser))
.SetMethod("setName", base::Bind(&Browser::SetName, browser))
.SetMethod("isReady", base::Bind(&Browser::is_ready, browser))
.SetMethod("whenReady", base::Bind(&Browser::WhenReady, browser))
.SetMethod("addRecentDocument",
base::Bind(&Browser::AddRecentDocument, browser))
.SetMethod("clearRecentDocuments",
@@ -1223,6 +1310,8 @@ void App::BuildPrototype(
base::Bind(&Browser::UpdateCurrentActivity, browser))
.SetMethod("setAboutPanelOptions",
base::Bind(&Browser::SetAboutPanelOptions, browser))
.SetMethod("showAboutPanel",
base::Bind(&Browser::ShowAboutPanel, browser))
#endif
#if defined(OS_WIN)
.SetMethod("setUserTasks", base::Bind(&Browser::SetUserTasks, browser))
@@ -1242,8 +1331,9 @@ void App::BuildPrototype(
#if defined(USE_NSS_CERTS)
.SetMethod("importCertificate", &App::ImportCertificate)
#endif
.SetMethod("makeSingleInstance", &App::MakeSingleInstance)
.SetMethod("releaseSingleInstance", &App::ReleaseSingleInstance)
.SetMethod("hasSingleInstanceLock", &App::HasSingleInstanceLock)
.SetMethod("requestSingleInstanceLock", &App::RequestSingleInstanceLock)
.SetMethod("releaseSingleInstanceLock", &App::ReleaseSingleInstanceLock)
.SetMethod("relaunch", &App::Relaunch)
.SetMethod("isAccessibilitySupportEnabled",
&App::IsAccessibilitySupportEnabled)
@@ -1256,15 +1346,19 @@ void App::BuildPrototype(
.SetMethod("getFileIcon", &App::GetFileIcon)
.SetMethod("getAppMetrics", &App::GetAppMetrics)
.SetMethod("getGPUFeatureStatus", &App::GetGPUFeatureStatus)
// TODO(juturu): Remove in 2.0, deprecate before then with warnings
#if defined(OS_MACOSX)
.SetMethod("getGPUInfo", &App::GetGPUInfo)
// TODO(juturu): Remove in 2.0, deprecate before then with warnings
#if defined(OS_MACOSX)
.SetMethod("moveToApplicationsFolder", &App::MoveToApplicationsFolder)
.SetMethod("isInApplicationsFolder", &App::IsInApplicationsFolder)
#endif
#if defined(MAS_BUILD)
#endif
#if defined(MAS_BUILD)
.SetMethod("startAccessingSecurityScopedResource",
&App::StartAccessingSecurityScopedResource)
#endif
#endif
.SetProperty("userAgentFallback", &App::GetUserAgentFallback,
&App::SetUserAgentFallback)
.SetMethod("enableSandbox", &App::EnableSandbox)
.SetMethod("enableMixedSandbox", &App::EnableMixedSandbox);
}
@@ -1272,15 +1366,14 @@ void App::BuildPrototype(
} // namespace atom
namespace {
void AppendSwitch(const std::string& switch_string, mate::Arguments* args) {
auto command_line = base::CommandLine::ForCurrentProcess();
auto* command_line = base::CommandLine::ForCurrentProcess();
if (base::EndsWith(switch_string, "-path",
base::CompareCase::INSENSITIVE_ASCII) ||
switch_string == switches::kLogNetLog) {
switch_string == network::switches::kLogNetLog) {
base::FilePath path;
args->GetNext(&path);
command_line->AppendSwitchPath(switch_string, path);
@@ -1309,18 +1402,19 @@ void DockSetMenu(atom::api::Menu* menu) {
}
#endif
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
v8::Isolate* isolate = context->GetIsolate();
auto command_line = base::CommandLine::ForCurrentProcess();
auto* command_line = base::CommandLine::ForCurrentProcess();
mate::Dictionary dict(isolate, exports);
dict.Set("App", atom::api::App::GetConstructor(isolate)->GetFunction());
dict.Set("app", atom::api::App::Create(isolate));
dict.SetMethod("appendSwitch", &AppendSwitch);
dict.SetMethod("appendArgument",
base::Bind(&base::CommandLine::AppendArg,
base::Unretained(command_line)));
dict.SetMethod("appendArgument", base::Bind(&base::CommandLine::AppendArg,
base::Unretained(command_line)));
#if defined(OS_MACOSX)
auto browser = base::Unretained(Browser::Get());
dict.SetMethod("dockBounce", &DockBounce);
@@ -1342,4 +1436,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_app, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_app, Initialize)

View File

@@ -7,6 +7,7 @@
#include <memory>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
@@ -15,6 +16,7 @@
#include "atom/browser/browser.h"
#include "atom/browser/browser_observer.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/promise_util.h"
#include "base/process/process_iterator.h"
#include "base/task/cancelable_task_tracker.h"
#include "chrome/browser/icon_manager.h"
@@ -52,11 +54,8 @@ struct ProcessMetric {
ProcessMetric(int type,
base::ProcessId pid,
std::unique_ptr<base::ProcessMetrics> metrics) {
this->type = type;
this->pid = pid;
this->metrics = std::move(metrics);
}
std::unique_ptr<base::ProcessMetrics> metrics);
~ProcessMetric();
};
namespace api {
@@ -67,8 +66,8 @@ class App : public AtomBrowserClient::Delegate,
public content::GpuDataManagerObserver,
public content::BrowserChildProcessObserver {
public:
using FileIconCallback = base::Callback<void(v8::Local<v8::Value>,
const gfx::Image&)>;
using FileIconCallback =
base::Callback<void(v8::Local<v8::Value>, const gfx::Image&)>;
static mate::Handle<App> Create(v8::Isolate* isolate);
@@ -101,21 +100,18 @@ class App : public AtomBrowserClient::Delegate,
void OnActivate(bool has_visible_windows) override;
void OnWillFinishLaunching() override;
void OnFinishLaunching(const base::DictionaryValue& launch_info) override;
void OnLogin(LoginHandler* login_handler,
void OnLogin(scoped_refptr<LoginHandler> login_handler,
const base::DictionaryValue& request_details) override;
void OnAccessibilitySupportChanged() override;
void OnPreMainMessageLoopRun() override;
#if defined(OS_MACOSX)
void OnWillContinueUserActivity(
bool* prevent_default,
const std::string& type) override;
void OnDidFailToContinueUserActivity(
const std::string& type,
const std::string& error) override;
void OnContinueUserActivity(
bool* prevent_default,
const std::string& type,
const base::DictionaryValue& user_info) override;
void OnWillContinueUserActivity(bool* prevent_default,
const std::string& type) override;
void OnDidFailToContinueUserActivity(const std::string& type,
const std::string& error) override;
void OnContinueUserActivity(bool* prevent_default,
const std::string& type,
const base::DictionaryValue& user_info) override;
void OnUserActivityWasContinued(
const std::string& type,
const base::DictionaryValue& user_info) override;
@@ -133,7 +129,6 @@ class App : public AtomBrowserClient::Delegate,
const net::SSLInfo& ssl_info,
const GURL& request_url,
content::ResourceType resource_type,
bool overridable,
bool strict_enforcement,
bool expired_previous_decision,
const base::Callback<void(content::CertificateRequestResultType)>&
@@ -154,7 +149,7 @@ class App : public AtomBrowserClient::Delegate,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
const std::vector<std::string>& additional_features,
const scoped_refptr<content::ResourceRequestBody>& body,
const scoped_refptr<network::ResourceRequestBody>& body,
bool user_gesture,
bool opener_suppressed,
bool* no_javascript_access) override;
@@ -168,9 +163,11 @@ class App : public AtomBrowserClient::Delegate,
void BrowserChildProcessHostDisconnected(
const content::ChildProcessData& data) override;
void BrowserChildProcessCrashed(
const content::ChildProcessData& data, int exit_code) override;
const content::ChildProcessData& data,
const content::ChildProcessTerminationInfo& info) override;
void BrowserChildProcessKilled(
const content::ChildProcessData& data, int exit_code) override;
const content::ChildProcessData& data,
const content::ChildProcessTerminationInfo& info) override;
private:
void SetAppPath(const base::FilePath& app_path);
@@ -185,25 +182,31 @@ class App : public AtomBrowserClient::Delegate,
void SetDesktopName(const std::string& desktop_name);
std::string GetLocale();
bool MakeSingleInstance(
const ProcessSingleton::NotificationCallback& callback);
void ReleaseSingleInstance();
void OnSecondInstance(const base::CommandLine::StringVector& cmd,
const base::FilePath& cwd);
bool HasSingleInstanceLock() const;
bool RequestSingleInstanceLock();
void ReleaseSingleInstanceLock();
bool Relaunch(mate::Arguments* args);
void DisableHardwareAcceleration(mate::Arguments* args);
void DisableDomainBlockingFor3DAPIs(mate::Arguments* args);
bool IsAccessibilitySupportEnabled();
void SetAccessibilitySupportEnabled(bool enabled);
void SetAccessibilitySupportEnabled(bool enabled, mate::Arguments* args);
Browser::LoginItemSettings GetLoginItemSettings(mate::Arguments* args);
#if defined(USE_NSS_CERTS)
void ImportCertificate(const base::DictionaryValue& options,
const net::CompletionCallback& callback);
#endif
void GetFileIcon(const base::FilePath& path,
mate::Arguments* args);
void GetFileIcon(const base::FilePath& path, mate::Arguments* args);
std::vector<mate::Dictionary> GetAppMetrics(v8::Isolate* isolate);
v8::Local<v8::Value> GetGPUFeatureStatus(v8::Isolate* isolate);
v8::Local<v8::Promise> GetGPUInfo(v8::Isolate* isolate,
const std::string& info_type);
void EnableSandbox(mate::Arguments* args);
void EnableMixedSandbox(mate::Arguments* args);
void SetUserAgentFallback(const std::string& user_agent);
std::string GetUserAgentFallback();
#if defined(OS_MACOSX)
bool MoveToApplicationsFolder(mate::Arguments* args);
@@ -211,7 +214,7 @@ class App : public AtomBrowserClient::Delegate,
#endif
#if defined(MAS_BUILD)
base::Callback<void()> StartAccessingSecurityScopedResource(
mate::Arguments* args);
mate::Arguments* args);
#endif
#if defined(OS_WIN)
@@ -234,8 +237,7 @@ class App : public AtomBrowserClient::Delegate,
base::FilePath app_path_;
using ProcessMetricMap =
std::unordered_map<base::ProcessId,
std::unique_ptr<atom::ProcessMetric>>;
std::unordered_map<base::ProcessId, std::unique_ptr<atom::ProcessMetric>>;
ProcessMetricMap app_metrics_;
DISALLOW_COPY_AND_ASSIGN(App);

View File

@@ -19,23 +19,27 @@ void OnStopAccessingSecurityScopedResource(NSURL* bookmarkUrl) {
}
// Get base64 encoded NSData, create a bookmark for it and start accessing it.
base::Callback<void ()> App::StartAccessingSecurityScopedResource(mate::Arguments* args) {
base::Callback<void()> App::StartAccessingSecurityScopedResource(
mate::Arguments* args) {
std::string data;
args->GetNext(&data);
NSString *base64str = base::SysUTF8ToNSString(data);
NSData *bookmarkData = [[NSData alloc] initWithBase64EncodedString: base64str options: 0];
NSString* base64str = base::SysUTF8ToNSString(data);
NSData* bookmarkData =
[[NSData alloc] initWithBase64EncodedString:base64str options:0];
// Create bookmarkUrl from NSData.
BOOL isStale = false;
NSError *error = nil;
NSURL *bookmarkUrl = [NSURL URLByResolvingBookmarkData: bookmarkData
options: NSURLBookmarkResolutionWithSecurityScope
relativeToURL: nil
bookmarkDataIsStale: &isStale
error: &error];
NSError* error = nil;
NSURL* bookmarkUrl =
[NSURL URLByResolvingBookmarkData:bookmarkData
options:NSURLBookmarkResolutionWithSecurityScope
relativeToURL:nil
bookmarkDataIsStale:&isStale
error:&error];
if (error != nil) {
NSString *err = [NSString stringWithFormat: @"NSError: %@ %@", error, [error userInfo]];
NSString* err =
[NSString stringWithFormat:@"NSError: %@ %@", error, [error userInfo]];
args->ThrowError(base::SysNSStringToUTF8(err));
}
@@ -54,6 +58,6 @@ base::Callback<void ()> App::StartAccessingSecurityScopedResource(mate::Argument
return base::Bind(&OnStopAccessingSecurityScopedResource, bookmarkUrl);
}
} // namespace atom
} // namespace atom
} // namespace api
} // namespace api

View File

@@ -16,12 +16,12 @@
namespace mate {
template<>
template <>
struct Converter<base::Time> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
const base::Time& val) {
v8::MaybeLocal<v8::Value> date = v8::Date::New(
isolate->GetCurrentContext(), val.ToJsTime());
v8::MaybeLocal<v8::Value> date =
v8::Date::New(isolate->GetCurrentContext(), val.ToJsTime());
if (date.IsEmpty())
return v8::Null(isolate);
else
@@ -49,21 +49,20 @@ void AutoUpdater::OnError(const std::string& message) {
v8::HandleScope handle_scope(isolate());
auto error = v8::Exception::Error(mate::StringToV8(isolate(), message));
mate::EmitEvent(
isolate(),
GetWrapper(),
"error",
isolate(), GetWrapper(), "error",
error->ToObject(isolate()->GetCurrentContext()).ToLocalChecked(),
// Message is also emitted to keep compatibility with old code.
message);
}
void AutoUpdater::OnError(const std::string& message,
const int code, const std::string& domain) {
const int code,
const std::string& domain) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
auto error = v8::Exception::Error(mate::StringToV8(isolate(), message));
auto errorObject = error->ToObject(
isolate()->GetCurrentContext()).ToLocalChecked();
auto errorObject =
error->ToObject(isolate()->GetCurrentContext()).ToLocalChecked();
// add two new params for better error handling
errorObject->Set(mate::StringToV8(isolate(), "code"),
@@ -104,6 +103,8 @@ void AutoUpdater::SetFeedURL(mate::Arguments* args) {
}
void AutoUpdater::QuitAndInstall() {
Emit("before-quit-for-update");
// If we don't have any window then quitAndInstall immediately.
if (WindowList::IsEmpty()) {
auto_updater::AutoUpdater::QuitAndInstall();
@@ -121,8 +122,8 @@ mate::Handle<AutoUpdater> AutoUpdater::Create(v8::Isolate* isolate) {
}
// static
void AutoUpdater::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
void AutoUpdater::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "AutoUpdater"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("checkForUpdates", &auto_updater::AutoUpdater::CheckForUpdates)
@@ -135,13 +136,14 @@ void AutoUpdater::BuildPrototype(
} // namespace atom
namespace {
using atom::api::AutoUpdater;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
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("autoUpdater", AutoUpdater::Create(isolate));
@@ -150,4 +152,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_auto_updater, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_auto_updater, Initialize)

View File

@@ -32,8 +32,9 @@ class AutoUpdater : public mate::EventEmitter<AutoUpdater>,
// Delegate implementations.
void OnError(const std::string& error) override;
void OnError(const std::string& message, const int code,
const std::string& domain);
void OnError(const std::string& message,
const int code,
const std::string& domain) override;
void OnCheckingForUpdate() override;
void OnUpdateAvailable() override;
void OnUpdateNotAvailable() override;

View File

@@ -51,8 +51,7 @@ namespace api {
BrowserView::BrowserView(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
const mate::Dictionary& options)
: api_web_contents_(nullptr) {
const mate::Dictionary& options) {
Init(isolate, wrapper, options);
}
@@ -67,15 +66,25 @@ void BrowserView::Init(v8::Isolate* isolate,
web_contents_.Reset(isolate, web_contents.ToV8());
api_web_contents_ = web_contents.get();
Observe(web_contents->web_contents());
view_.reset(NativeBrowserView::Create(
api_web_contents_->managed_web_contents()->GetView()));
view_.reset(
NativeBrowserView::Create(api_web_contents_->managed_web_contents()));
InitWith(isolate, wrapper);
}
BrowserView::~BrowserView() {
api_web_contents_->DestroyWebContents(true /* async */);
if (api_web_contents_) { // destroy() is called
// Destroy WebContents asynchronously unless app is shutting down,
// because destroy() might be called inside WebContents's event handler.
api_web_contents_->DestroyWebContents(!Browser::Get()->is_shutting_down());
}
}
void BrowserView::WebContentsDestroyed() {
api_web_contents_ = nullptr;
web_contents_.Reset();
}
// static
@@ -153,13 +162,13 @@ void Initialize(v8::Local<v8::Object> exports,
mate::Dictionary browser_view(
isolate, BrowserView::GetConstructor(isolate)->GetFunction());
browser_view.SetMethod("fromId",
&mate::TrackableObject<BrowserView>::FromWeakMapID);
&mate::TrackableObject<BrowserView>::FromWeakMapID);
browser_view.SetMethod("getAllViews",
&mate::TrackableObject<BrowserView>::GetAll);
&mate::TrackableObject<BrowserView>::GetAll);
mate::Dictionary dict(isolate, exports);
dict.Set("BrowserView", browser_view);
}
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_browser_view, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_browser_view, Initialize)

View File

@@ -10,6 +10,7 @@
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/native_browser_view.h"
#include "content/public/browser/web_contents_observer.h"
#include "native_mate/handle.h"
namespace gfx {
@@ -29,7 +30,8 @@ namespace api {
class WebContents;
class BrowserView : public mate::TrackableObject<BrowserView> {
class BrowserView : public mate::TrackableObject<BrowserView>,
public content::WebContentsObserver {
public:
static mate::WrappableBase* New(mate::Arguments* args);
@@ -47,6 +49,9 @@ class BrowserView : public mate::TrackableObject<BrowserView> {
const mate::Dictionary& options);
~BrowserView() override;
// content::WebContentsObserver:
void WebContentsDestroyed() override;
private:
void Init(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
@@ -59,7 +64,7 @@ class BrowserView : public mate::TrackableObject<BrowserView> {
v8::Local<v8::Value> GetWebContents();
v8::Global<v8::Value> web_contents_;
class WebContents* api_web_contents_;
class WebContents* api_web_contents_ = nullptr;
std::unique_ptr<NativeBrowserView> view_;

View File

@@ -0,0 +1,464 @@
// 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_browser_window.h"
#include <memory>
#include "atom/browser/browser.h"
#include "atom/browser/unresponsive_suppressor.h"
#include "atom/browser/web_contents_preferences.h"
#include "atom/browser/window_list.h"
#include "atom/common/api/api_messages.h"
#include "atom/common/api/constructor.h"
#include "atom/common/color_util.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/options_switches.h"
#include "base/threading/thread_task_runner_handle.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "native_mate/dictionary.h"
#include "ui/gl/gpu_switching_manager.h"
#include "atom/common/node_includes.h"
namespace atom {
namespace api {
BrowserWindow::BrowserWindow(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
const mate::Dictionary& options)
: TopLevelWindow(isolate, options), weak_factory_(this) {
mate::Handle<class WebContents> web_contents;
// Use options.webPreferences in WebContents.
mate::Dictionary web_preferences = mate::Dictionary::CreateEmpty(isolate);
options.Get(options::kWebPreferences, &web_preferences);
// Copy the backgroundColor to webContents.
v8::Local<v8::Value> value;
if (options.Get(options::kBackgroundColor, &value))
web_preferences.Set(options::kBackgroundColor, value);
v8::Local<v8::Value> transparent;
if (options.Get("transparent", &transparent))
web_preferences.Set("transparent", transparent);
if (options.Get("webContents", &web_contents) && !web_contents.IsEmpty()) {
// Set webPreferences from options if using an existing webContents.
// These preferences will be used when the webContent launches new
// render processes.
auto* existing_preferences =
WebContentsPreferences::From(web_contents->web_contents());
base::DictionaryValue web_preferences_dict;
if (mate::ConvertFromV8(isolate, web_preferences.GetHandle(),
&web_preferences_dict)) {
existing_preferences->Clear();
existing_preferences->Merge(web_preferences_dict);
}
} else {
// Creates the WebContents used by BrowserWindow.
web_contents = WebContents::Create(isolate, web_preferences);
}
web_contents_.Reset(isolate, web_contents.ToV8());
api_web_contents_ = web_contents->GetWeakPtr();
api_web_contents_->AddObserver(this);
Observe(api_web_contents_->web_contents());
// Keep a copy of the options for later use.
mate::Dictionary(isolate, web_contents->GetWrapper())
.Set("browserWindowOptions", options);
// Tell the content module to initialize renderer widget with transparent
// mode.
ui::GpuSwitchingManager::SetTransparent(window()->transparent());
// Associate with BrowserWindow.
web_contents->SetOwnerWindow(window());
auto* host = web_contents->web_contents()->GetRenderViewHost();
if (host)
host->GetWidget()->AddInputEventObserver(this);
InitWith(isolate, wrapper);
#if defined(OS_MACOSX)
OverrideNSWindowContentView(web_contents->managed_web_contents());
#endif
// Init window after everything has been setup.
window()->InitFromOptions(options);
}
BrowserWindow::~BrowserWindow() {
// FIXME This is a hack rather than a proper fix preventing shutdown crashes.
if (api_web_contents_)
api_web_contents_->RemoveObserver(this);
// Note that the OnWindowClosed will not be called after the destructor runs,
// since the window object is managed by the TopLevelWindow class.
if (web_contents())
Cleanup();
}
void BrowserWindow::OnInputEvent(const blink::WebInputEvent& event) {
switch (event.GetType()) {
case blink::WebInputEvent::kGestureScrollBegin:
case blink::WebInputEvent::kGestureScrollUpdate:
case blink::WebInputEvent::kGestureScrollEnd:
Emit("scroll-touch-edge");
break;
default:
break;
}
}
void BrowserWindow::RenderViewHostChanged(content::RenderViewHost* old_host,
content::RenderViewHost* new_host) {
if (old_host)
old_host->GetWidget()->RemoveInputEventObserver(this);
if (new_host)
new_host->GetWidget()->AddInputEventObserver(this);
}
void BrowserWindow::RenderViewCreated(
content::RenderViewHost* render_view_host) {
if (!window()->transparent())
return;
content::RenderWidgetHostImpl* impl = content::RenderWidgetHostImpl::FromID(
render_view_host->GetProcess()->GetID(),
render_view_host->GetRoutingID());
if (impl)
impl->SetBackgroundOpaque(false);
}
void BrowserWindow::DidFirstVisuallyNonEmptyPaint() {
if (window()->IsVisible())
return;
// When there is a non-empty first paint, resize the RenderWidget to force
// Chromium to draw.
auto* const view = web_contents()->GetRenderWidgetHostView();
view->Show();
view->SetSize(window()->GetContentSize());
// Emit the ReadyToShow event in next tick in case of pending drawing work.
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(
[](base::WeakPtr<BrowserWindow> self) {
if (self)
self->Emit("ready-to-show");
},
GetWeakPtr()));
}
void BrowserWindow::BeforeUnloadDialogCancelled() {
WindowList::WindowCloseCancelled(window());
// Cancel unresponsive event when window close is cancelled.
window_unresponsive_closure_.Cancel();
}
void BrowserWindow::OnRendererUnresponsive(content::RenderProcessHost*) {
// Schedule the unresponsive shortly later, since we may receive the
// responsive event soon. This could happen after the whole application had
// blocked for a while.
// Also notice that when closing this event would be ignored because we have
// explicitly started a close timeout counter. This is on purpose because we
// don't want the unresponsive event to be sent too early when user is closing
// the window.
ScheduleUnresponsiveEvent(50);
}
bool BrowserWindow::OnMessageReceived(const IPC::Message& message,
content::RenderFrameHost* rfh) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(BrowserWindow, message, rfh)
IPC_MESSAGE_HANDLER(AtomFrameHostMsg_UpdateDraggableRegions,
UpdateDraggableRegions)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
}
void BrowserWindow::OnCloseContents() {
// On some machines it may happen that the window gets destroyed for twice,
// checking web_contents() can effectively guard against that.
// https://github.com/electron/electron/issues/16202.
//
// TODO(zcbenz): We should find out the root cause and improve the closing
// procedure of BrowserWindow.
if (!web_contents())
return;
// Close all child windows before closing current window.
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
for (v8::Local<v8::Value> value : child_windows_.Values(isolate())) {
mate::Handle<BrowserWindow> child;
if (mate::ConvertFromV8(isolate(), value, &child) && !child.IsEmpty())
child->window()->CloseImmediately();
}
// When the web contents is gone, close the window immediately, but the
// memory will not be freed until you call delete.
// In this way, it would be safe to manage windows via smart pointers. If you
// want to free memory when the window is closed, you can do deleting by
// overriding the OnWindowClosed method in the observer.
window()->CloseImmediately();
// Do not sent "unresponsive" event after window is closed.
window_unresponsive_closure_.Cancel();
}
void BrowserWindow::OnRendererResponsive() {
window_unresponsive_closure_.Cancel();
Emit("responsive");
}
void BrowserWindow::RequestPreferredWidth(int* width) {
*width = web_contents()->GetPreferredSize().width();
}
void BrowserWindow::OnCloseButtonClicked(bool* prevent_default) {
// When user tries to close the window by clicking the close button, we do
// not close the window immediately, instead we try to close the web page
// first, and when the web page is closed the window will also be closed.
*prevent_default = true;
// Assume the window is not responding if it doesn't cancel the close and is
// not closed in 5s, in this way we can quickly show the unresponsive
// dialog when the window is busy executing some script withouth waiting for
// the unresponsive timeout.
if (window_unresponsive_closure_.IsCancelled())
ScheduleUnresponsiveEvent(5000);
if (!web_contents())
// Already closed by renderer
return;
if (web_contents()->NeedToFireBeforeUnload())
web_contents()->DispatchBeforeUnload();
else
web_contents()->Close();
}
void BrowserWindow::OnWindowClosed() {
Cleanup();
TopLevelWindow::OnWindowClosed();
}
void BrowserWindow::OnWindowBlur() {
web_contents()->StoreFocus();
#if defined(OS_MACOSX)
auto* rwhv = web_contents()->GetRenderWidgetHostView();
if (rwhv)
rwhv->SetActive(false);
#endif
TopLevelWindow::OnWindowBlur();
}
void BrowserWindow::OnWindowFocus() {
web_contents()->RestoreFocus();
#if defined(OS_MACOSX)
auto* rwhv = web_contents()->GetRenderWidgetHostView();
if (rwhv)
rwhv->SetActive(true);
#else
if (!api_web_contents_->IsDevToolsOpened())
web_contents()->Focus();
#endif
TopLevelWindow::OnWindowFocus();
}
void BrowserWindow::OnWindowResize() {
#if defined(OS_MACOSX)
if (!draggable_regions_.empty())
UpdateDraggableRegions(nullptr, draggable_regions_);
#endif
TopLevelWindow::OnWindowResize();
}
void BrowserWindow::OnWindowLeaveFullScreen() {
TopLevelWindow::OnWindowLeaveFullScreen();
#if defined(OS_MACOSX)
if (web_contents()->IsFullscreenForCurrentTab())
web_contents()->ExitFullscreen(true);
#endif
}
void BrowserWindow::Focus() {
if (api_web_contents_->IsOffScreen())
FocusOnWebView();
else
TopLevelWindow::Focus();
}
void BrowserWindow::Blur() {
if (api_web_contents_->IsOffScreen())
BlurWebView();
else
TopLevelWindow::Blur();
}
void BrowserWindow::SetBackgroundColor(const std::string& color_name) {
TopLevelWindow::SetBackgroundColor(color_name);
auto* view = web_contents()->GetRenderWidgetHostView();
if (view)
view->SetBackgroundColor(ParseHexColor(color_name));
}
void BrowserWindow::SetBrowserView(v8::Local<v8::Value> value) {
TopLevelWindow::SetBrowserView(value);
#if defined(OS_MACOSX)
UpdateDraggableRegions(nullptr, draggable_regions_);
#endif
}
void BrowserWindow::SetVibrancy(v8::Isolate* isolate,
v8::Local<v8::Value> value) {
std::string type = mate::V8ToString(value);
auto* render_view_host = web_contents()->GetRenderViewHost();
if (render_view_host) {
auto* impl = content::RenderWidgetHostImpl::FromID(
render_view_host->GetProcess()->GetID(),
render_view_host->GetRoutingID());
if (impl)
impl->SetBackgroundOpaque(type.empty() ? !window_->transparent() : false);
}
TopLevelWindow::SetVibrancy(isolate, value);
}
void BrowserWindow::FocusOnWebView() {
web_contents()->GetRenderViewHost()->GetWidget()->Focus();
}
void BrowserWindow::BlurWebView() {
web_contents()->GetRenderViewHost()->GetWidget()->Blur();
}
bool BrowserWindow::IsWebViewFocused() {
auto* host_view = web_contents()->GetRenderViewHost()->GetWidget()->GetView();
return host_view && host_view->HasFocus();
}
v8::Local<v8::Value> BrowserWindow::GetWebContents(v8::Isolate* isolate) {
if (web_contents_.IsEmpty())
return v8::Null(isolate);
return v8::Local<v8::Value>::New(isolate, web_contents_);
}
// Convert draggable regions in raw format to SkRegion format.
std::unique_ptr<SkRegion> BrowserWindow::DraggableRegionsToSkRegion(
const std::vector<DraggableRegion>& regions) {
auto sk_region = std::make_unique<SkRegion>();
for (const DraggableRegion& region : regions) {
sk_region->op(
region.bounds.x(), region.bounds.y(), region.bounds.right(),
region.bounds.bottom(),
region.draggable ? SkRegion::kUnion_Op : SkRegion::kDifference_Op);
}
return sk_region;
}
void BrowserWindow::ScheduleUnresponsiveEvent(int ms) {
if (!window_unresponsive_closure_.IsCancelled())
return;
window_unresponsive_closure_.Reset(
base::Bind(&BrowserWindow::NotifyWindowUnresponsive, GetWeakPtr()));
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
FROM_HERE, window_unresponsive_closure_.callback(),
base::TimeDelta::FromMilliseconds(ms));
}
void BrowserWindow::NotifyWindowUnresponsive() {
window_unresponsive_closure_.Cancel();
if (!window_->IsClosed() && window_->IsEnabled() &&
!IsUnresponsiveEventSuppressed()) {
Emit("unresponsive");
}
}
void BrowserWindow::Cleanup() {
auto* host = web_contents()->GetRenderViewHost();
if (host)
host->GetWidget()->RemoveInputEventObserver(this);
// Destroy WebContents asynchronously unless app is shutting down,
// because destroy() might be called inside WebContents's event handler.
api_web_contents_->DestroyWebContents(!Browser::Get()->is_shutting_down());
Observe(nullptr);
}
// static
mate::WrappableBase* BrowserWindow::New(mate::Arguments* args) {
if (!Browser::Get()->is_ready()) {
args->ThrowError("Cannot create BrowserWindow before app is ready");
return nullptr;
}
if (args->Length() > 1) {
args->ThrowError();
return nullptr;
}
mate::Dictionary options;
if (!(args->Length() == 1 && args->GetNext(&options))) {
options = mate::Dictionary::CreateEmpty(args->isolate());
}
return new BrowserWindow(args->isolate(), args->GetThis(), options);
}
// static
void BrowserWindow::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "BrowserWindow"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("focusOnWebView", &BrowserWindow::FocusOnWebView)
.SetMethod("blurWebView", &BrowserWindow::BlurWebView)
.SetMethod("isWebViewFocused", &BrowserWindow::IsWebViewFocused)
.SetProperty("webContents", &BrowserWindow::GetWebContents);
}
// static
v8::Local<v8::Value> BrowserWindow::From(v8::Isolate* isolate,
NativeWindow* native_window) {
auto* existing = TrackableObject::FromWrappedClass(isolate, native_window);
if (existing)
return existing->GetWrapper();
else
return v8::Null(isolate);
}
} // namespace api
} // namespace atom
namespace {
using atom::api::BrowserWindow;
using atom::api::TopLevelWindow;
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("BrowserWindow", mate::CreateConstructor<BrowserWindow>(
isolate, base::Bind(&BrowserWindow::New)));
}
} // namespace
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_window, Initialize)

View File

@@ -0,0 +1,127 @@
// 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_BROWSER_WINDOW_H_
#define ATOM_BROWSER_API_ATOM_API_BROWSER_WINDOW_H_
#include <memory>
#include <string>
#include <vector>
#include "atom/browser/api/atom_api_top_level_window.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "base/cancelable_callback.h"
namespace atom {
namespace api {
class BrowserWindow : public TopLevelWindow,
public content::RenderWidgetHost::InputEventObserver,
public content::WebContentsObserver,
public ExtendedWebContentsObserver {
public:
static mate::WrappableBase* New(mate::Arguments* args);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
// Returns the BrowserWindow object from |native_window|.
static v8::Local<v8::Value> From(v8::Isolate* isolate,
NativeWindow* native_window);
base::WeakPtr<BrowserWindow> GetWeakPtr() {
return weak_factory_.GetWeakPtr();
}
protected:
BrowserWindow(v8::Isolate* isolate,
v8::Local<v8::Object> wrapper,
const mate::Dictionary& options);
~BrowserWindow() override;
// content::RenderWidgetHost::InputEventObserver:
void OnInputEvent(const blink::WebInputEvent& event) override;
// content::WebContentsObserver:
void RenderViewHostChanged(content::RenderViewHost* old_host,
content::RenderViewHost* new_host) override;
void RenderViewCreated(content::RenderViewHost* render_view_host) override;
void DidFirstVisuallyNonEmptyPaint() override;
void BeforeUnloadDialogCancelled() override;
void OnRendererUnresponsive(content::RenderProcessHost*) override;
bool OnMessageReceived(const IPC::Message& message,
content::RenderFrameHost* rfh) override;
// ExtendedWebContentsObserver:
void OnCloseContents() override;
void OnRendererResponsive() override;
// NativeWindowObserver:
void RequestPreferredWidth(int* width) override;
void OnCloseButtonClicked(bool* prevent_default) override;
// TopLevelWindow:
void OnWindowClosed() override;
void OnWindowBlur() override;
void OnWindowFocus() override;
void OnWindowResize() override;
void OnWindowLeaveFullScreen() override;
void Focus() override;
void Blur() override;
void SetBackgroundColor(const std::string& color_name) override;
void SetBrowserView(v8::Local<v8::Value> value) override;
void SetVibrancy(v8::Isolate* isolate, v8::Local<v8::Value> value) override;
// BrowserWindow APIs.
void FocusOnWebView();
void BlurWebView();
bool IsWebViewFocused();
v8::Local<v8::Value> GetWebContents(v8::Isolate* isolate);
private:
#if defined(OS_MACOSX)
void OverrideNSWindowContentView(brightray::InspectableWebContents* iwc);
#endif
// Helpers.
// Called when the window needs to update its draggable region.
void UpdateDraggableRegions(content::RenderFrameHost* rfh,
const std::vector<DraggableRegion>& regions);
// Convert draggable regions in raw format to SkRegion format.
std::unique_ptr<SkRegion> DraggableRegionsToSkRegion(
const std::vector<DraggableRegion>& regions);
// Schedule a notification unresponsive event.
void ScheduleUnresponsiveEvent(int ms);
// Dispatch unresponsive event to observers.
void NotifyWindowUnresponsive();
// Cleanup our WebContents observers.
void Cleanup();
// Closure that would be called when window is unresponsive when closing,
// it should be cancelled when we can prove that the window is responsive.
base::CancelableClosure window_unresponsive_closure_;
#if defined(OS_MACOSX)
std::vector<DraggableRegion> draggable_regions_;
#endif
v8::Global<v8::Value> web_contents_;
base::WeakPtr<api::WebContents> api_web_contents_;
base::WeakPtrFactory<BrowserWindow> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(BrowserWindow);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_BROWSER_WINDOW_H_

View File

@@ -0,0 +1,135 @@
// 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_browser_window.h"
#import <Cocoa/Cocoa.h>
#include "atom/browser/native_browser_view.h"
#include "atom/browser/native_window_mac.h"
#include "atom/common/draggable_region.h"
#include "base/mac/scoped_nsobject.h"
#include "brightray/browser/inspectable_web_contents_view.h"
@interface NSView (WebContentsView)
- (void)setMouseDownCanMoveWindow:(BOOL)can_move;
@end
@interface ControlRegionView : NSView
@end
@implementation ControlRegionView
- (BOOL)mouseDownCanMoveWindow {
return NO;
}
- (NSView*)hitTest:(NSPoint)aPoint {
return nil;
}
@end
namespace atom {
namespace api {
namespace {
// Return a vector of non-draggable regions that fill a window of size
// |width| by |height|, but leave gaps where the window should be draggable.
std::vector<gfx::Rect> CalculateNonDraggableRegions(
std::unique_ptr<SkRegion> draggable,
int width,
int height) {
std::vector<gfx::Rect> result;
SkRegion non_draggable;
non_draggable.op(0, 0, width, height, SkRegion::kUnion_Op);
non_draggable.op(*draggable, SkRegion::kDifference_Op);
for (SkRegion::Iterator it(non_draggable); !it.done(); it.next()) {
result.push_back(gfx::SkIRectToRect(it.rect()));
}
return result;
}
} // namespace
void BrowserWindow::OverrideNSWindowContentView(
brightray::InspectableWebContents* iwc) {
// Make NativeWindow use a NSView as content view.
static_cast<NativeWindowMac*>(window())->OverrideNSWindowContentView();
// Add webview to contentView.
NSView* webView = iwc->GetView()->GetNativeView();
NSView* contentView = [window()->GetNativeWindow() contentView];
[webView setFrame:[contentView bounds]];
// ensure that buttons view is floated to top of view hierarchy
NSArray* subviews = [contentView subviews];
NSView* last = subviews.lastObject;
[contentView addSubview:webView positioned:NSWindowBelow relativeTo:last];
[contentView viewDidMoveToWindow];
}
void BrowserWindow::UpdateDraggableRegions(
content::RenderFrameHost* rfh,
const std::vector<DraggableRegion>& regions) {
if (window_->has_frame())
return;
// All ControlRegionViews should be added as children of the WebContentsView,
// because WebContentsView will be removed and re-added when entering and
// leaving fullscreen mode.
NSView* webView = web_contents()->GetNativeView();
NSInteger webViewWidth = NSWidth([webView bounds]);
NSInteger webViewHeight = NSHeight([webView bounds]);
if ([webView respondsToSelector:@selector(setMouseDownCanMoveWindow:)]) {
[webView setMouseDownCanMoveWindow:YES];
}
// Remove all ControlRegionViews that are added last time.
// Note that [webView subviews] returns the view's mutable internal array and
// it should be copied to avoid mutating the original array while enumerating
// it.
base::scoped_nsobject<NSArray> subviews([[webView subviews] copy]);
for (NSView* subview in subviews.get())
if ([subview isKindOfClass:[ControlRegionView class]])
[subview removeFromSuperview];
// Draggable regions is implemented by having the whole web view draggable
// (mouseDownCanMoveWindow) and overlaying regions that are not draggable.
draggable_regions_ = regions;
std::vector<gfx::Rect> drag_exclude_rects;
if (regions.empty()) {
drag_exclude_rects.push_back(gfx::Rect(0, 0, webViewWidth, webViewHeight));
} else {
drag_exclude_rects = CalculateNonDraggableRegions(
DraggableRegionsToSkRegion(regions), webViewWidth, webViewHeight);
}
if (window_->browser_view())
window_->browser_view()->UpdateDraggableRegions(drag_exclude_rects);
// Create and add a ControlRegionView for each region that needs to be
// excluded from the dragging.
for (const auto& rect : drag_exclude_rects) {
base::scoped_nsobject<NSView> controlRegion(
[[ControlRegionView alloc] initWithFrame:NSZeroRect]);
[controlRegion setFrame:NSMakeRect(rect.x(), webViewHeight - rect.bottom(),
rect.width(), rect.height())];
[webView addSubview:controlRegion];
}
// AppKit will not update its cache of mouseDownCanMoveWindow unless something
// changes. Previously we tried adding an NSView and removing it, but for some
// reason it required reposting the mouse-down event, and didn't always work.
// Calling the below seems to be an effective solution.
[[webView window] setMovableByWindowBackground:NO];
[[webView window] setMovableByWindowBackground:YES];
}
} // namespace api
} // namespace atom

View File

@@ -0,0 +1,24 @@
// 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_browser_window.h"
#include "atom/browser/native_window_views.h"
namespace atom {
namespace api {
void BrowserWindow::UpdateDraggableRegions(
content::RenderFrameHost* rfh,
const std::vector<DraggableRegion>& regions) {
if (window_->has_frame())
return;
static_cast<NativeWindowViews*>(window_.get())
->UpdateDraggableRegions(DraggableRegionsToSkRegion(regions));
}
} // namespace api
} // namespace atom

View File

@@ -7,6 +7,7 @@
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "base/bind.h"
#include "base/files/file_util.h"
#include "content/public/browser/tracing_controller.h"
@@ -18,20 +19,32 @@ using content::TracingController;
namespace mate {
template<>
template <>
struct Converter<base::trace_event::TraceConfig> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
base::trace_event::TraceConfig* out) {
// (alexeykuzmin): A combination of "categoryFilter" and "traceOptions"
// has to be checked first because none of the fields
// in the `memory_dump_config` dict below are mandatory
// and we cannot check the config format.
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;
if (ConvertFromV8(isolate, val, &options)) {
std::string category_filter, trace_options;
if (options.Get("categoryFilter", &category_filter) &&
options.Get("traceOptions", &trace_options)) {
*out = base::trace_event::TraceConfig(category_filter, trace_options);
return true;
}
}
base::DictionaryValue memory_dump_config;
if (ConvertFromV8(isolate, val, &memory_dump_config)) {
*out = base::trace_event::TraceConfig(memory_dump_config);
return true;
}
return false;
}
};
@@ -41,36 +54,39 @@ namespace {
using CompletionCallback = base::Callback<void(const base::FilePath&)>;
scoped_refptr<TracingController::TraceDataSink> GetTraceDataSink(
const base::FilePath& path, const CompletionCallback& callback) {
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::CreateFileSink(result_file_path,
base::Bind(callback,
result_file_path));
return TracingController::CreateFileEndpoint(
result_file_path, base::Bind(callback, result_file_path));
}
void StopRecording(const base::FilePath& path,
const CompletionCallback& callback) {
TracingController::GetInstance()->StopTracing(
GetTraceDataSink(path, callback));
GetTraceDataEndpoint(path, callback));
}
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
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("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));
dict.SetMethod(
"getTraceBufferUsage",
base::Bind(&TracingController::GetTraceBufferUsage, controller));
}
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_content_tracing, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_content_tracing, Initialize)

View File

@@ -4,7 +4,11 @@
#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"
@@ -14,18 +18,17 @@
#include "content/public/browser/browser_thread.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "net/cookies/cookie_monster.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 atom::AtomCookieDelegate;
using content::BrowserThread;
namespace mate {
template<>
template <>
struct Converter<atom::api::Cookies::Error> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
atom::api::Cookies::Error val) {
@@ -36,7 +39,7 @@ struct Converter<atom::api::Cookies::Error> {
}
};
template<>
template <>
struct Converter<net::CanonicalCookie> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
const net::CanonicalCookie& val) {
@@ -55,25 +58,22 @@ struct Converter<net::CanonicalCookie> {
}
};
template<>
struct Converter<net::CookieStore::ChangeCause> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
const net::CookieStore::ChangeCause& val) {
template <>
struct Converter<network::mojom::CookieChangeCause> {
static v8::Local<v8::Value> ToV8(
v8::Isolate* isolate,
const network::mojom::CookieChangeCause& val) {
switch (val) {
case net::CookieStore::ChangeCause::INSERTED:
case net::CookieStore::ChangeCause::EXPLICIT:
case net::CookieStore::ChangeCause::EXPLICIT_DELETE_BETWEEN:
case net::CookieStore::ChangeCause::EXPLICIT_DELETE_PREDICATE:
case net::CookieStore::ChangeCause::EXPLICIT_DELETE_SINGLE:
case net::CookieStore::ChangeCause::EXPLICIT_DELETE_CANONICAL:
case network::mojom::CookieChangeCause::INSERTED:
case network::mojom::CookieChangeCause::EXPLICIT:
return mate::StringToV8(isolate, "explicit");
case net::CookieStore::ChangeCause::OVERWRITE:
case network::mojom::CookieChangeCause::OVERWRITE:
return mate::StringToV8(isolate, "overwrite");
case net::CookieStore::ChangeCause::EXPIRED:
case network::mojom::CookieChangeCause::EXPIRED:
return mate::StringToV8(isolate, "expired");
case net::CookieStore::ChangeCause::EVICTED:
case network::mojom::CookieChangeCause::EVICTED:
return mate::StringToV8(isolate, "evicted");
case net::CookieStore::ChangeCause::EXPIRED_OVERWRITE:
case network::mojom::CookieChangeCause::EXPIRED_OVERWRITE:
return mate::StringToV8(isolate, "expired-overwrite");
default:
return mate::StringToV8(isolate, "unknown");
@@ -166,15 +166,16 @@ void GetCookiesOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
GetCookieStore(getter)->GetAllCookiesAsync(filtered_callback);
else
GetCookieStore(getter)->GetAllCookiesForURLAsync(GURL(url),
filtered_callback);
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 GURL& url,
const std::string& name,
const base::Closure& callback) {
GetCookieStore(getter)->DeleteCookieAsync(
url, name, base::Bind(RunCallbackInUI, callback));
url, name, base::BindOnce(RunCallbackInUI, callback));
}
// Callback of SetCookie.
@@ -187,7 +188,7 @@ void OnSetCookie(const Cookies::SetCallback& callback, bool success) {
void FlushCookieStoreOnIOThread(
scoped_refptr<net::URLRequestContextGetter> getter,
const base::Closure& callback) {
GetCookieStore(getter)->FlushStore(base::Bind(RunCallbackInUI, callback));
GetCookieStore(getter)->FlushStore(base::BindOnce(RunCallbackInUI, callback));
}
// Sets cookie with |details| in IO thread.
@@ -210,90 +211,107 @@ void SetCookieOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
base::Time creation_time;
if (details->GetDouble("creationDate", &creation_date)) {
creation_time = (creation_date == 0) ?
base::Time::UnixEpoch() :
base::Time::FromDoubleT(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);
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);
last_access_time = (last_access_date == 0)
? base::Time::UnixEpoch()
: base::Time::FromDoubleT(last_access_date);
}
GetCookieStore(getter)->SetCookieWithDetailsAsync(
GURL(url), name, value, domain, path, creation_time,
expiration_time, last_access_time, secure, http_only,
net::CookieSameSite::DEFAULT_MODE, net::COOKIE_PRIORITY_DEFAULT,
base::Bind(OnSetCookie, callback));
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)
: request_context_getter_(browser_context->url_request_context_getter()),
cookie_delegate_(browser_context->cookie_delegate()) {
Cookies::Cookies(v8::Isolate* isolate, AtomBrowserContext* browser_context)
: browser_context_(browser_context) {
Init(isolate);
cookie_delegate_->AddObserver(this);
cookie_change_subscription_ =
browser_context_->cookie_change_notifier()->RegisterCookieChangeCallback(
base::Bind(&Cookies::OnCookieChanged, base::Unretained(this)));
}
Cookies::~Cookies() {
cookie_delegate_->RemoveObserver(this);
}
Cookies::~Cookies() {}
void Cookies::Get(const base::DictionaryValue& filter,
const GetCallback& callback) {
std::unique_ptr<base::DictionaryValue> copied(filter.CreateDeepCopy());
auto getter = make_scoped_refptr(request_context_getter_);
auto copy = base::DictionaryValue::From(
base::Value::ToUniquePtrValue(filter.Clone()));
auto* getter = browser_context_->GetRequestContext();
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(GetCookiesOnIO, getter, Passed(&copied), callback));
base::BindOnce(GetCookiesOnIO, base::RetainedRef(getter), std::move(copy),
callback));
}
void Cookies::Remove(const GURL& url, const std::string& name,
void Cookies::Remove(const GURL& url,
const std::string& name,
const base::Closure& callback) {
auto getter = make_scoped_refptr(request_context_getter_);
auto* getter = browser_context_->GetRequestContext();
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(RemoveCookieOnIOThread, getter, url, name, callback));
base::BindOnce(RemoveCookieOnIOThread, base::RetainedRef(getter), url,
name, callback));
}
void Cookies::Set(const base::DictionaryValue& details,
const SetCallback& callback) {
std::unique_ptr<base::DictionaryValue> copied(details.CreateDeepCopy());
auto getter = make_scoped_refptr(request_context_getter_);
auto copy = base::DictionaryValue::From(
base::Value::ToUniquePtrValue(details.Clone()));
auto* getter = browser_context_->GetRequestContext();
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(SetCookieOnIO, getter, Passed(&copied), callback));
base::BindOnce(SetCookieOnIO, base::RetainedRef(getter), std::move(copy),
callback));
}
void Cookies::FlushStore(const base::Closure& callback) {
auto getter = make_scoped_refptr(request_context_getter_);
auto* getter = browser_context_->GetRequestContext();
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(FlushCookieStoreOnIOThread, getter, callback));
base::BindOnce(FlushCookieStoreOnIOThread, base::RetainedRef(getter),
callback));
}
void Cookies::OnCookieChanged(const net::CanonicalCookie& cookie,
bool removed,
net::CookieStore::ChangeCause cause) {
Emit("changed", cookie, cause, removed);
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) {
mate::Handle<Cookies> Cookies::Create(v8::Isolate* isolate,
AtomBrowserContext* browser_context) {
return mate::CreateHandle(isolate, new Cookies(isolate, browser_context));
}

View File

@@ -5,11 +5,12 @@
#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/atom_cookie_delegate.h"
#include "base/callback.h"
#include "atom/browser/net/cookie_details.h"
#include "base/callback_list.h"
#include "native_mate/handle.h"
#include "net/cookies/canonical_cookie.h"
@@ -27,8 +28,7 @@ class AtomBrowserContext;
namespace api {
class Cookies : public mate::TrackableObject<Cookies>,
public AtomCookieDelegate::Observer {
class Cookies : public mate::TrackableObject<Cookies> {
public:
enum Error {
SUCCESS,
@@ -50,19 +50,19 @@ class Cookies : public mate::TrackableObject<Cookies>,
~Cookies() override;
void Get(const base::DictionaryValue& filter, const GetCallback& callback);
void Remove(const GURL& url, const std::string& name,
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);
// AtomCookieDelegate::Observer:
void OnCookieChanged(const net::CanonicalCookie& cookie,
bool removed,
net::CookieStore::ChangeCause cause) override;
// CookieChangeNotifier subscription:
void OnCookieChanged(const CookieDetails*);
private:
net::URLRequestContextGetter* request_context_getter_;
scoped_refptr<AtomCookieDelegate> cookie_delegate_;
std::unique_ptr<base::CallbackList<void(const CookieDetails*)>::Subscription>
cookie_change_subscription_;
scoped_refptr<AtomBrowserContext> browser_context_;
DISALLOW_COPY_AND_ASSIGN(Cookies);
};

View File

@@ -4,18 +4,17 @@
#include "atom/browser/api/atom_api_debugger.h"
#include <memory>
#include <string>
#include <utility>
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "base/json/json_reader.h"
#include "base/json/json_writer.h"
#include "base/memory/ptr_util.h"
#include "content/public/browser/devtools_agent_host.h"
#include "content/public/browser/web_contents.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "atom/common/node_includes.h"
@@ -26,25 +25,22 @@ namespace atom {
namespace api {
Debugger::Debugger(v8::Isolate* isolate, content::WebContents* web_contents)
: web_contents_(web_contents),
previous_request_id_(0) {
: content::WebContentsObserver(web_contents), web_contents_(web_contents) {
Init(isolate);
}
Debugger::~Debugger() {
}
Debugger::~Debugger() {}
void Debugger::AgentHostClosed(DevToolsAgentHost* agent_host,
bool replaced_with_another_client) {
std::string detach_reason = "target closed";
if (replaced_with_another_client)
detach_reason = "replaced with devtools";
Emit("detach", detach_reason);
void Debugger::AgentHostClosed(DevToolsAgentHost* agent_host) {
DCHECK(agent_host == agent_host_);
agent_host_ = nullptr;
ClearPendingRequests();
Emit("detach", "target closed");
}
void Debugger::DispatchProtocolMessage(DevToolsAgentHost* agent_host,
const std::string& message) {
DCHECK(agent_host == agent_host_.get());
DCHECK(agent_host == agent_host_);
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
@@ -71,14 +67,26 @@ void Debugger::DispatchProtocolMessage(DevToolsAgentHost* agent_host,
return;
base::DictionaryValue* error_body = nullptr;
base::DictionaryValue error;
if (dict->GetDictionary("error", &error_body))
bool has_error;
if ((has_error = dict->GetDictionary("error", &error_body))) {
error.Swap(error_body);
}
base::DictionaryValue* result_body = nullptr;
base::DictionaryValue result;
if (dict->GetDictionary("result", &result_body))
result.Swap(result_body);
send_command_callback.Run(error, result);
send_command_callback.Run(has_error ? error.Clone() : base::Value(),
result);
}
}
void Debugger::RenderFrameHostChanged(content::RenderFrameHost* old_rfh,
content::RenderFrameHost* new_rfh) {
if (agent_host_) {
agent_host_->DisconnectWebContents();
auto* web_contents = content::WebContents::FromRenderFrameHost(new_rfh);
agent_host_->ConnectWebContents(web_contents);
}
}
@@ -86,38 +94,39 @@ void Debugger::Attach(mate::Arguments* args) {
std::string protocol_version;
args->GetNext(&protocol_version);
if (agent_host_) {
args->ThrowError("Debugger is already attached to the target");
return;
}
if (!protocol_version.empty() &&
!DevToolsAgentHost::IsSupportedProtocolVersion(protocol_version)) {
args->ThrowError("Requested protocol version is not supported");
return;
}
agent_host_ = DevToolsAgentHost::GetOrCreateFor(web_contents_);
if (!agent_host_.get()) {
if (!agent_host_) {
args->ThrowError("No target available");
return;
}
if (agent_host_->IsAttached()) {
args->ThrowError("Another debugger is already attached to this target");
return;
}
agent_host_->AttachClient(this);
}
bool Debugger::IsAttached() {
return agent_host_.get() ? agent_host_->IsAttached() : false;
return agent_host_ && agent_host_->IsAttached();
}
void Debugger::Detach() {
if (!agent_host_.get())
if (!agent_host_)
return;
agent_host_->DetachClient(this);
AgentHostClosed(agent_host_.get(), false);
agent_host_ = nullptr;
AgentHostClosed(agent_host_.get());
}
void Debugger::SendCommand(mate::Arguments* args) {
if (!agent_host_.get())
if (!agent_host_)
return;
std::string method;
@@ -136,17 +145,27 @@ void Debugger::SendCommand(mate::Arguments* args) {
request.SetInteger("id", request_id);
request.SetString("method", method);
if (!command_params.empty())
request.Set("params", base::WrapUnique(command_params.DeepCopy()));
request.Set("params",
base::Value::ToUniquePtrValue(command_params.Clone()));
std::string json_args;
base::JSONWriter::Write(request, &json_args);
agent_host_->DispatchProtocolMessage(this, json_args);
}
void Debugger::ClearPendingRequests() {
if (pending_requests_.empty())
return;
base::Value error(base::Value::Type::DICTIONARY);
base::Value error_msg("target closed while handling command");
error.SetKey("message", std::move(error_msg));
for (const auto& it : pending_requests_)
it.second.Run(error, base::Value());
}
// static
mate::Handle<Debugger> Debugger::Create(
v8::Isolate* isolate,
content::WebContents* web_contents) {
mate::Handle<Debugger> Debugger::Create(v8::Isolate* isolate,
content::WebContents* web_contents) {
return mate::CreateHandle(isolate, new Debugger(isolate, web_contents));
}
@@ -169,8 +188,10 @@ namespace {
using atom::api::Debugger;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
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(isolate, exports)
.Set("Debugger", Debugger::GetConstructor(isolate)->GetFunction());
@@ -178,4 +199,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_debugger, Initialize);
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_debugger, Initialize);

View File

@@ -12,12 +12,13 @@
#include "base/callback.h"
#include "base/values.h"
#include "content/public/browser/devtools_agent_host_client.h"
#include "content/public/browser/web_contents_observer.h"
#include "native_mate/handle.h"
namespace content {
class DevToolsAgentHost;
class WebContents;
}
} // namespace content
namespace mate {
class Arguments;
@@ -27,15 +28,15 @@ namespace atom {
namespace api {
class Debugger: public mate::TrackableObject<Debugger>,
public content::DevToolsAgentHostClient {
class Debugger : public mate::TrackableObject<Debugger>,
public content::DevToolsAgentHostClient,
public content::WebContentsObserver {
public:
using SendCommandCallback =
base::Callback<void(const base::DictionaryValue&,
const base::DictionaryValue&)>;
base::Callback<void(const base::Value&, const base::Value&)>;
static mate::Handle<Debugger> Create(
v8::Isolate* isolate, content::WebContents* web_contents);
static mate::Handle<Debugger> Create(v8::Isolate* isolate,
content::WebContents* web_contents);
// mate::TrackableObject:
static void BuildPrototype(v8::Isolate* isolate,
@@ -46,11 +47,14 @@ class Debugger: public mate::TrackableObject<Debugger>,
~Debugger() override;
// content::DevToolsAgentHostClient:
void AgentHostClosed(content::DevToolsAgentHost* agent_host,
bool replaced_with_another_client) override;
void AgentHostClosed(content::DevToolsAgentHost* agent_host) override;
void DispatchProtocolMessage(content::DevToolsAgentHost* agent_host,
const std::string& message) override;
// content::WebContentsObserver:
void RenderFrameHostChanged(content::RenderFrameHost* old_rfh,
content::RenderFrameHost* new_rfh) override;
private:
using PendingRequestMap = std::map<int, SendCommandCallback>;
@@ -58,12 +62,13 @@ class Debugger: public mate::TrackableObject<Debugger>,
bool IsAttached();
void Detach();
void SendCommand(mate::Arguments* args);
void ClearPendingRequests();
content::WebContents* web_contents_; // Weak Reference.
scoped_refptr<content::DevToolsAgentHost> agent_host_;
PendingRequestMap pending_requests_;
int previous_request_id_;
int previous_request_id_ = 0;
DISALLOW_COPY_AND_ASSIGN(Debugger);
};

View File

@@ -4,32 +4,44 @@
#include "atom/browser/api/atom_api_desktop_capturer.h"
using base::PlatformThreadRef;
#include <memory>
#include <utility>
#include <vector>
#include "atom/common/api/atom_api_native_image.h"
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/media/desktop_media_list.h"
#include "base/threading/thread_restrictions.h"
#include "chrome/browser/media/webrtc/desktop_media_list.h"
#include "content/public/browser/desktop_capture.h"
#include "native_mate/dictionary.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_capture_options.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h"
#if defined(OS_WIN)
#include "third_party/webrtc/modules/desktop_capture/win/dxgi_duplicator_controller.h"
#include "third_party/webrtc/modules/desktop_capture/win/screen_capturer_win_directx.h"
#include "ui/display/win/display_info.h"
#endif // defined(OS_WIN)
#include "atom/common/node_includes.h"
namespace mate {
template<>
struct Converter<DesktopMediaList::Source> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
const DesktopMediaList::Source& source) {
template <>
struct Converter<atom::api::DesktopCapturer::Source> {
static v8::Local<v8::Value> ToV8(
v8::Isolate* isolate,
const atom::api::DesktopCapturer::Source& source) {
mate::Dictionary dict(isolate, v8::Object::New(isolate));
content::DesktopMediaID id = source.id;
dict.Set("name", base::UTF16ToUTF8(source.name));
content::DesktopMediaID id = source.media_list_source.id;
dict.Set("name", base::UTF16ToUTF8(source.media_list_source.name));
dict.Set("id", id.ToString());
dict.Set(
"thumbnail",
atom::api::NativeImage::Create(isolate, gfx::Image(source.thumbnail)));
dict.Set("thumbnail",
atom::api::NativeImage::Create(
isolate, gfx::Image(source.media_list_source.thumbnail)));
dict.Set("display_id", source.display_id);
return ConvertToV8(isolate, dict);
}
};
@@ -44,48 +56,140 @@ DesktopCapturer::DesktopCapturer(v8::Isolate* isolate) {
Init(isolate);
}
DesktopCapturer::~DesktopCapturer() {
}
DesktopCapturer::~DesktopCapturer() {}
void DesktopCapturer::StartHandling(bool capture_window,
bool capture_screen,
const gfx::Size& thumbnail_size) {
webrtc::DesktopCaptureOptions options =
content::CreateDesktopCaptureOptions();
#if defined(OS_WIN)
if (content::desktop_capture::CreateDesktopCaptureOptions()
.allow_directx_capturer()) {
// DxgiDuplicatorController should be alive in this scope according to
// screen_capturer_win.cc.
auto duplicator = webrtc::DxgiDuplicatorController::Instance();
using_directx_capturer_ = webrtc::ScreenCapturerWinDirectx::IsSupported();
}
#endif // defined(OS_WIN)
std::unique_ptr<webrtc::DesktopCapturer> screen_capturer(
capture_screen ? webrtc::DesktopCapturer::CreateScreenCapturer(options)
: nullptr);
std::unique_ptr<webrtc::DesktopCapturer> window_capturer(
capture_window ? webrtc::DesktopCapturer::CreateWindowCapturer(options)
: nullptr);
media_list_.reset(new NativeDesktopMediaList(
std::move(screen_capturer), std::move(window_capturer)));
// clear any existing captured sources.
captured_sources_.clear();
media_list_->SetThumbnailSize(thumbnail_size);
media_list_->StartUpdating(this);
// Start listening for captured sources.
capture_window_ = capture_window;
capture_screen_ = capture_screen;
{
// Remove this once
// https://bugs.chromium.org/p/chromium/issues/detail?id=795340 is fixed.
base::ScopedAllowBaseSyncPrimitivesForTesting
scoped_allow_base_sync_primitives;
// Initialize the source list.
// Apply the new thumbnail size and restart capture.
if (capture_window) {
window_capturer_.reset(new NativeDesktopMediaList(
content::DesktopMediaID::TYPE_WINDOW,
content::desktop_capture::CreateWindowCapturer()));
window_capturer_->SetThumbnailSize(thumbnail_size);
window_capturer_->AddObserver(this);
window_capturer_->StartUpdating();
}
if (capture_screen) {
screen_capturer_.reset(new NativeDesktopMediaList(
content::DesktopMediaID::TYPE_SCREEN,
content::desktop_capture::CreateScreenCapturer()));
screen_capturer_->SetThumbnailSize(thumbnail_size);
screen_capturer_->AddObserver(this);
screen_capturer_->StartUpdating();
}
}
}
void DesktopCapturer::OnSourceAdded(int index) {
void DesktopCapturer::OnSourceAdded(DesktopMediaList* list, int index) {}
void DesktopCapturer::OnSourceRemoved(DesktopMediaList* list, int index) {}
void DesktopCapturer::OnSourceMoved(DesktopMediaList* list,
int old_index,
int new_index) {}
void DesktopCapturer::OnSourceNameChanged(DesktopMediaList* list, int index) {}
void DesktopCapturer::OnSourceThumbnailChanged(DesktopMediaList* list,
int index) {}
void DesktopCapturer::OnSourceUnchanged(DesktopMediaList* list) {
UpdateSourcesList(list);
}
void DesktopCapturer::OnSourceRemoved(int index) {
}
void DesktopCapturer::OnSourceMoved(int old_index, int new_index) {
}
void DesktopCapturer::OnSourceNameChanged(int index) {
}
void DesktopCapturer::OnSourceThumbnailChanged(int index) {
}
bool DesktopCapturer::OnRefreshFinished() {
Emit("finished", media_list_->GetSources());
bool DesktopCapturer::ShouldScheduleNextRefresh(DesktopMediaList* list) {
UpdateSourcesList(list);
return false;
}
void DesktopCapturer::UpdateSourcesList(DesktopMediaList* list) {
std::vector<DesktopCapturer::Source> window_sources;
if (capture_window_ &&
list->GetMediaListType() == content::DesktopMediaID::TYPE_WINDOW) {
capture_window_ = false;
const auto& media_list_sources = list->GetSources();
for (const auto& media_list_source : media_list_sources) {
window_sources.emplace_back(
DesktopCapturer::Source{media_list_source, std::string()});
}
std::move(window_sources.begin(), window_sources.end(),
std::back_inserter(captured_sources_));
}
std::vector<DesktopCapturer::Source> screen_sources;
if (capture_screen_ &&
list->GetMediaListType() == content::DesktopMediaID::TYPE_SCREEN) {
capture_screen_ = false;
const auto& media_list_sources = list->GetSources();
for (const auto& media_list_source : media_list_sources) {
screen_sources.emplace_back(
DesktopCapturer::Source{media_list_source, std::string()});
}
#if defined(OS_WIN)
// Gather the same unique screen IDs used by the electron.screen API in
// order to provide an association between it and
// desktopCapturer/getUserMedia. This is only required when using the
// DirectX capturer, otherwise the IDs across the APIs already match.
if (using_directx_capturer_) {
std::vector<std::string> device_names;
// Crucially, this list of device names will be in the same order as
// |media_list_sources|.
webrtc::DxgiDuplicatorController::Instance()->GetDeviceNames(
&device_names);
int device_name_index = 0;
for (auto& source : screen_sources) {
const auto& device_name = device_names[device_name_index++];
std::wstring wide_device_name;
base::UTF8ToWide(device_name.c_str(), device_name.size(),
&wide_device_name);
const int64_t device_id =
display::win::DisplayInfo::DeviceIdFromDeviceName(
wide_device_name.c_str());
source.display_id = base::Int64ToString(device_id);
}
}
#elif defined(OS_MACOSX)
// On Mac, the IDs across the APIs match.
for (auto& source : screen_sources) {
source.display_id = base::Int64ToString(source.media_list_source.id.id);
}
#endif // defined(OS_WIN)
// TODO(ajmacd): Add Linux support. The IDs across APIs differ but Chrome
// only supports capturing the entire desktop on Linux. Revisit this if
// individual screen support is added.
std::move(screen_sources.begin(), screen_sources.end(),
std::back_inserter(captured_sources_));
}
if (!capture_window_ && !capture_screen_)
Emit("finished", captured_sources_);
}
// static
mate::Handle<DesktopCapturer> DesktopCapturer::Create(v8::Isolate* isolate) {
return mate::CreateHandle(isolate, new DesktopCapturer(isolate));
@@ -93,7 +197,8 @@ mate::Handle<DesktopCapturer> DesktopCapturer::Create(v8::Isolate* isolate) {
// static
void DesktopCapturer::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "DesktopCapturer"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("startHandling", &DesktopCapturer::StartHandling);
@@ -105,8 +210,10 @@ void DesktopCapturer::BuildPrototype(
namespace {
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
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("desktopCapturer", atom::api::DesktopCapturer::Create(isolate));
@@ -114,4 +221,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_desktop_capturer, Initialize);
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_desktop_capturer, Initialize);

View File

@@ -5,18 +5,28 @@
#ifndef ATOM_BROWSER_API_ATOM_API_DESKTOP_CAPTURER_H_
#define ATOM_BROWSER_API_ATOM_API_DESKTOP_CAPTURER_H_
#include <memory>
#include <string>
#include <vector>
#include "atom/browser/api/event_emitter.h"
#include "chrome/browser/media/desktop_media_list_observer.h"
#include "chrome/browser/media/native_desktop_media_list.h"
#include "chrome/browser/media/webrtc/desktop_media_list_observer.h"
#include "chrome/browser/media/webrtc/native_desktop_media_list.h"
#include "native_mate/handle.h"
namespace atom {
namespace api {
class DesktopCapturer: public mate::EventEmitter<DesktopCapturer>,
public DesktopMediaListObserver {
class DesktopCapturer : public mate::EventEmitter<DesktopCapturer>,
public DesktopMediaListObserver {
public:
struct Source {
DesktopMediaList::Source media_list_source;
// Will be an empty string if not available.
std::string display_id;
};
static mate::Handle<DesktopCapturer> Create(v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
@@ -31,15 +41,27 @@ class DesktopCapturer: public mate::EventEmitter<DesktopCapturer>,
~DesktopCapturer() override;
// DesktopMediaListObserver overrides.
void OnSourceAdded(int index) override;
void OnSourceRemoved(int index) override;
void OnSourceMoved(int old_index, int new_index) override;
void OnSourceNameChanged(int index) override;
void OnSourceThumbnailChanged(int index) override;
bool OnRefreshFinished() override;
void OnSourceAdded(DesktopMediaList* list, int index) override;
void OnSourceRemoved(DesktopMediaList* list, int index) override;
void OnSourceMoved(DesktopMediaList* list,
int old_index,
int new_index) override;
void OnSourceNameChanged(DesktopMediaList* list, int index) override;
void OnSourceThumbnailChanged(DesktopMediaList* list, int index) override;
void OnSourceUnchanged(DesktopMediaList* list) override;
bool ShouldScheduleNextRefresh(DesktopMediaList* list) override;
private:
std::unique_ptr<DesktopMediaList> media_list_;
void UpdateSourcesList(DesktopMediaList* list);
std::unique_ptr<DesktopMediaList> window_capturer_;
std::unique_ptr<DesktopMediaList> screen_capturer_;
std::vector<DesktopCapturer::Source> captured_sources_;
bool capture_window_ = false;
bool capture_screen_ = false;
#if defined(OS_WIN)
bool using_directx_capturer_ = false;
#endif // defined(OS_WIN)
DISALLOW_COPY_AND_ASSIGN(DesktopCapturer);
};

View File

@@ -6,7 +6,7 @@
#include <utility>
#include <vector>
#include "atom/browser/api/atom_api_window.h"
#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"
@@ -21,7 +21,7 @@
namespace mate {
template<>
template <>
struct Converter<file_dialog::Filter> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
@@ -37,7 +37,7 @@ struct Converter<file_dialog::Filter> {
}
};
template<>
template <>
struct Converter<file_dialog::DialogSettings> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
@@ -54,9 +54,9 @@ struct Converter<file_dialog::DialogSettings> {
dict.Get("filters", &(out->filters));
dict.Get("properties", &(out->properties));
dict.Get("showsTagField", &(out->shows_tag_field));
#if defined(MAS_BUILD)
#if defined(MAS_BUILD)
dict.Get("securityScopedBookmarks", &(out->security_scoped_bookmarks));
#endif
#endif
return true;
}
};
@@ -80,8 +80,7 @@ void ShowMessageBox(int type,
mate::Arguments* args) {
v8::Local<v8::Value> peek = args->PeekNext();
atom::MessageBoxCallback callback;
if (mate::Converter<atom::MessageBoxCallback>::FromV8(args->isolate(),
peek,
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,
@@ -99,9 +98,8 @@ 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)) {
if (mate::Converter<file_dialog::OpenDialogCallback>::FromV8(
args->isolate(), peek, &callback)) {
file_dialog::ShowOpenDialog(settings, callback);
} else {
std::vector<base::FilePath> paths;
@@ -114,9 +112,8 @@ 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)) {
if (mate::Converter<file_dialog::SaveDialogCallback>::FromV8(
args->isolate(), peek, &callback)) {
file_dialog::ShowSaveDialog(settings, callback);
} else {
base::FilePath path;
@@ -125,8 +122,10 @@ void ShowSaveDialog(const file_dialog::DialogSettings& settings,
}
}
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
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);
@@ -140,4 +139,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_dialog, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_dialog, Initialize)

View File

@@ -19,22 +19,23 @@
namespace mate {
template<>
struct Converter<content::DownloadItem::DownloadState> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
content::DownloadItem::DownloadState state) {
template <>
struct Converter<download::DownloadItem::DownloadState> {
static v8::Local<v8::Value> ToV8(
v8::Isolate* isolate,
download::DownloadItem::DownloadState state) {
std::string download_state;
switch (state) {
case content::DownloadItem::IN_PROGRESS:
case download::DownloadItem::IN_PROGRESS:
download_state = "progressing";
break;
case content::DownloadItem::COMPLETE:
case download::DownloadItem::COMPLETE:
download_state = "completed";
break;
case content::DownloadItem::CANCELLED:
case download::DownloadItem::CANCELLED:
download_state = "cancelled";
break;
case content::DownloadItem::INTERRUPTED:
case download::DownloadItem::INTERRUPTED:
download_state = "interrupted";
break;
default:
@@ -57,7 +58,7 @@ std::map<uint32_t, v8::Global<v8::Object>> g_download_item_objects;
} // namespace
DownloadItem::DownloadItem(v8::Isolate* isolate,
content::DownloadItem* download_item)
download::DownloadItem* download_item)
: download_item_(download_item) {
download_item_->AddObserver(this);
Init(isolate);
@@ -75,18 +76,18 @@ DownloadItem::~DownloadItem() {
g_download_item_objects.erase(weak_map_id());
}
void DownloadItem::OnDownloadUpdated(content::DownloadItem* item) {
void DownloadItem::OnDownloadUpdated(download::DownloadItem* item) {
if (download_item_->IsDone()) {
Emit("done", item->GetState());
// Destroy the item once item is downloaded.
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, GetDestroyClosure());
base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
GetDestroyClosure());
} else {
Emit("updated", item->GetState());
}
}
void DownloadItem::OnDownloadDestroyed(content::DownloadItem* download_item) {
void DownloadItem::OnDownloadDestroyed(download::DownloadItem* download_item) {
download_item_ = nullptr;
// Destroy the native class immediately when downloadItem is destroyed.
delete this;
@@ -129,12 +130,11 @@ bool DownloadItem::HasUserGesture() const {
}
std::string DownloadItem::GetFilename() const {
return base::UTF16ToUTF8(net::GenerateFileName(GetURL(),
GetContentDisposition(),
std::string(),
download_item_->GetSuggestedFilename(),
GetMimeType(),
"download").LossyDisplayName());
return base::UTF16ToUTF8(
net::GenerateFileName(GetURL(), GetContentDisposition(), std::string(),
download_item_->GetSuggestedFilename(),
GetMimeType(), "download")
.LossyDisplayName());
}
std::string DownloadItem::GetContentDisposition() const {
@@ -149,7 +149,7 @@ const std::vector<GURL>& DownloadItem::GetURLChain() const {
return download_item_->GetUrlChain();
}
content::DownloadItem::DownloadState DownloadItem::GetState() const {
download::DownloadItem::DownloadState DownloadItem::GetState() const {
return download_item_->GetState();
}
@@ -206,9 +206,9 @@ void DownloadItem::BuildPrototype(v8::Isolate* isolate,
}
// static
mate::Handle<DownloadItem> DownloadItem::Create(
v8::Isolate* isolate, content::DownloadItem* item) {
auto existing = TrackableObject::FromWrappedClass(isolate, item);
mate::Handle<DownloadItem> DownloadItem::Create(v8::Isolate* isolate,
download::DownloadItem* item) {
auto* existing = TrackableObject::FromWrappedClass(isolate, item);
if (existing)
return mate::CreateHandle(isolate, static_cast<DownloadItem*>(existing));
@@ -226,8 +226,10 @@ mate::Handle<DownloadItem> DownloadItem::Create(
namespace {
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
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(isolate, exports)
.Set("DownloadItem",
@@ -236,4 +238,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_download_item, Initialize);
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_download_item, Initialize);

View File

@@ -10,7 +10,7 @@
#include "atom/browser/api/trackable_object.h"
#include "base/files/file_path.h"
#include "content/public/browser/download_item.h"
#include "components/download/public/common/download_item.h"
#include "native_mate/handle.h"
#include "url/gurl.h"
@@ -19,10 +19,10 @@ namespace atom {
namespace api {
class DownloadItem : public mate::TrackableObject<DownloadItem>,
public content::DownloadItem::Observer {
public download::DownloadItem::Observer {
public:
static mate::Handle<DownloadItem> Create(v8::Isolate* isolate,
content::DownloadItem* item);
download::DownloadItem* item);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
@@ -40,7 +40,7 @@ class DownloadItem : public mate::TrackableObject<DownloadItem>,
std::string GetContentDisposition() const;
const GURL& GetURL() const;
const std::vector<GURL>& GetURLChain() const;
content::DownloadItem::DownloadState GetState() const;
download::DownloadItem::DownloadState GetState() const;
bool IsDone() const;
void SetSavePath(const base::FilePath& path);
base::FilePath GetSavePath() const;
@@ -49,16 +49,16 @@ class DownloadItem : public mate::TrackableObject<DownloadItem>,
double GetStartTime() const;
protected:
DownloadItem(v8::Isolate* isolate, content::DownloadItem* download_item);
~DownloadItem();
DownloadItem(v8::Isolate* isolate, download::DownloadItem* download_item);
~DownloadItem() override;
// Override content::DownloadItem::Observer methods
void OnDownloadUpdated(content::DownloadItem* download) override;
void OnDownloadDestroyed(content::DownloadItem* download) override;
// Override download::DownloadItem::Observer methods
void OnDownloadUpdated(download::DownloadItem* download) override;
void OnDownloadDestroyed(download::DownloadItem* download) override;
private:
base::FilePath save_path_;
content::DownloadItem* download_item_;
download::DownloadItem* download_item_;
DISALLOW_COPY_AND_ASSIGN(DownloadItem);
};

View File

@@ -0,0 +1,26 @@
// 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/event_emitter.h"
#include "atom/common/node_includes.h"
#include "native_mate/dictionary.h"
namespace {
v8::Local<v8::Object> CreateWithSender(v8::Isolate* isolate,
v8::Local<v8::Object> sender) {
return mate::internal::CreateJSEvent(isolate, sender, nullptr, nullptr);
}
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("createWithSender", &CreateWithSender);
}
} // namespace
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_event, Initialize)

View File

@@ -6,15 +6,44 @@
#include <string>
#include "atom/browser/api/atom_api_system_preferences.h"
#include "atom/common/native_mate_converters/accelerator_converter.h"
#include "atom/common/native_mate_converters/callback.h"
#include "base/stl_util.h"
#include "base/strings/utf_string_conversions.h"
#include "native_mate/dictionary.h"
#include "atom/common/node_includes.h"
#if defined(OS_MACOSX)
#include "base/mac/mac_util.h"
#endif
using extensions::GlobalShortcutListener;
namespace {
#if defined(OS_MACOSX)
bool RegisteringMediaKeyForUntrustedClient(const ui::Accelerator& accelerator) {
if (base::mac::IsAtLeastOS10_14()) {
constexpr ui::KeyboardCode mediaKeys[] = {
ui::VKEY_MEDIA_PLAY_PAUSE, ui::VKEY_MEDIA_NEXT_TRACK,
ui::VKEY_MEDIA_PREV_TRACK, ui::VKEY_MEDIA_STOP};
if (std::find(std::begin(mediaKeys), std::end(mediaKeys),
accelerator.key_code()) != std::end(mediaKeys)) {
bool trusted =
atom::api::SystemPreferences::IsTrustedAccessibilityClient(false);
if (!trusted)
return true;
}
}
return false;
}
#endif
} // namespace
namespace atom {
namespace api {
@@ -31,7 +60,7 @@ void GlobalShortcut::OnKeyPressed(const ui::Accelerator& accelerator) {
if (accelerator_callback_map_.find(accelerator) ==
accelerator_callback_map_.end()) {
// This should never occur, because if it does, GlobalGlobalShortcutListener
// notifes us with wrong accelerator.
// notifies us with wrong accelerator.
NOTREACHED();
return;
}
@@ -40,8 +69,13 @@ void GlobalShortcut::OnKeyPressed(const ui::Accelerator& accelerator) {
bool GlobalShortcut::Register(const ui::Accelerator& accelerator,
const base::Closure& callback) {
if (!GlobalShortcutListener::GetInstance()->RegisterAccelerator(
accelerator, this)) {
#if defined(OS_MACOSX)
if (RegisteringMediaKeyForUntrustedClient(accelerator))
return false;
#endif
if (!GlobalShortcutListener::GetInstance()->RegisterAccelerator(accelerator,
this)) {
return false;
}
@@ -54,8 +88,8 @@ void GlobalShortcut::Unregister(const ui::Accelerator& accelerator) {
return;
accelerator_callback_map_.erase(accelerator);
GlobalShortcutListener::GetInstance()->UnregisterAccelerator(
accelerator, this);
GlobalShortcutListener::GetInstance()->UnregisterAccelerator(accelerator,
this);
}
bool GlobalShortcut::IsRegistered(const ui::Accelerator& accelerator) {
@@ -73,8 +107,8 @@ mate::Handle<GlobalShortcut> GlobalShortcut::Create(v8::Isolate* isolate) {
}
// static
void GlobalShortcut::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
void GlobalShortcut::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "GlobalShortcut"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("register", &GlobalShortcut::Register)
@@ -89,8 +123,10 @@ void GlobalShortcut::BuildPrototype(
namespace {
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
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("globalShortcut", atom::api::GlobalShortcut::Create(isolate));
@@ -98,4 +134,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_global_shortcut, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_global_shortcut, Initialize)

View File

@@ -45,6 +45,29 @@ struct Converter<in_app_purchase::Transaction> {
}
};
template <>
struct Converter<in_app_purchase::Product> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
const in_app_purchase::Product& val) {
mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
dict.SetHidden("simple", true);
dict.Set("productIdentifier", val.productIdentifier);
dict.Set("localizedDescription", val.localizedDescription);
dict.Set("localizedTitle", val.localizedTitle);
dict.Set("contentVersion", val.localizedTitle);
dict.Set("contentLengths", val.contentLengths);
// Pricing Information
dict.Set("price", val.price);
dict.Set("formattedPrice", val.formattedPrice);
// Downloadable Content Information
dict.Set("isDownloadable", val.downloadable);
return dict.GetHandle();
}
};
} // namespace mate
namespace atom {
@@ -64,15 +87,19 @@ void InAppPurchase::BuildPrototype(v8::Isolate* isolate,
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("canMakePayments", &in_app_purchase::CanMakePayments)
.SetMethod("getReceiptURL", &in_app_purchase::GetReceiptURL)
.SetMethod("purchaseProduct", &InAppPurchase::PurchaseProduct);
.SetMethod("purchaseProduct", &InAppPurchase::PurchaseProduct)
.SetMethod("finishAllTransactions",
&in_app_purchase::FinishAllTransactions)
.SetMethod("finishTransactionByDate",
&in_app_purchase::FinishTransactionByDate)
.SetMethod("getProducts", &in_app_purchase::GetProducts);
}
InAppPurchase::InAppPurchase(v8::Isolate* isolate) {
Init(isolate);
}
InAppPurchase::~InAppPurchase() {
}
InAppPurchase::~InAppPurchase() {}
void InAppPurchase::PurchaseProduct(const std::string& product_id,
mate::Arguments* args) {
@@ -112,4 +139,4 @@ void Initialize(v8::Local<v8::Object> exports,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_in_app_purchase, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_in_app_purchase, Initialize)

View File

@@ -11,14 +11,15 @@
#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 {
class InAppPurchase : public mate::EventEmitter<InAppPurchase>,
public in_app_purchase::TransactionObserver {
public:
static mate::Handle<InAppPurchase> Create(v8::Isolate* isolate);

View File

@@ -20,8 +20,7 @@ namespace atom {
namespace api {
Menu::Menu(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)
: model_(new AtomMenuModel(this)),
parent_(nullptr) {
: model_(new AtomMenuModel(this)) {
InitWith(isolate, wrapper);
model_->AddObserver(this);
}
@@ -42,6 +41,8 @@ void Menu::AfterInit(v8::Isolate* isolate) {
delegate.Get("isCommandIdEnabled", &is_enabled_);
delegate.Get("isCommandIdVisible", &is_visible_);
delegate.Get("getAcceleratorForCommandId", &get_accelerator_);
delegate.Get("shouldRegisterAcceleratorForCommandId",
&should_register_accelerator_);
delegate.Get("executeCommand", &execute_command_);
delegate.Get("menuWillShow", &menu_will_show_);
}
@@ -70,18 +71,23 @@ bool Menu::GetAcceleratorForCommandIdWithParams(
ui::Accelerator* accelerator) const {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
v8::Local<v8::Value> val = get_accelerator_.Run(
GetWrapper(), command_id, use_default_accelerator);
v8::Local<v8::Value> val =
get_accelerator_.Run(GetWrapper(), command_id, use_default_accelerator);
return mate::ConvertFromV8(isolate(), val, accelerator);
}
bool Menu::ShouldRegisterAcceleratorForCommandId(int command_id) const {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
return should_register_accelerator_.Run(GetWrapper(), command_id);
}
void Menu::ExecuteCommand(int command_id, int flags) {
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
execute_command_.Run(
GetWrapper(),
mate::internal::CreateEventFromFlags(isolate(), flags),
command_id);
execute_command_.Run(GetWrapper(),
mate::internal::CreateEventFromFlags(isolate(), flags),
command_id);
}
void Menu::MenuWillShow(ui::SimpleMenuModel* source) {
@@ -90,8 +96,9 @@ void Menu::MenuWillShow(ui::SimpleMenuModel* source) {
menu_will_show_.Run(GetWrapper());
}
void Menu::InsertItemAt(
int index, int command_id, const base::string16& label) {
void Menu::InsertItemAt(int index,
int command_id,
const base::string16& label) {
model_->InsertItemAt(index, command_id, label);
}
@@ -156,6 +163,12 @@ base::string16 Menu::GetSublabelAt(int index) const {
return model_->GetSublabelAt(index);
}
base::string16 Menu::GetAcceleratorTextAt(int index) const {
ui::Accelerator accelerator;
model_->GetAcceleratorAtWithParams(index, true, &accelerator);
return accelerator.GetShortcutText();
}
bool Menu::IsItemCheckedAt(int index) const {
return model_->IsItemCheckedAt(index);
}
@@ -196,6 +209,7 @@ void Menu::BuildPrototype(v8::Isolate* isolate,
.SetMethod("getCommandIdAt", &Menu::GetCommandIdAt)
.SetMethod("getLabelAt", &Menu::GetLabelAt)
.SetMethod("getSublabelAt", &Menu::GetSublabelAt)
.SetMethod("getAcceleratorTextAt", &Menu::GetAcceleratorTextAt)
.SetMethod("isItemCheckedAt", &Menu::IsItemCheckedAt)
.SetMethod("isEnabledAt", &Menu::IsEnabledAt)
.SetMethod("isVisibleAt", &Menu::IsVisibleAt)
@@ -207,13 +221,14 @@ void Menu::BuildPrototype(v8::Isolate* isolate,
} // namespace atom
namespace {
using atom::api::Menu;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
v8::Isolate* isolate = context->GetIsolate();
Menu::SetConstructor(isolate, base::Bind(&Menu::New));
@@ -228,4 +243,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_menu, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_menu, Initialize)

View File

@@ -8,7 +8,7 @@
#include <memory>
#include <string>
#include "atom/browser/api/atom_api_window.h"
#include "atom/browser/api/atom_api_top_level_window.h"
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/ui/atom_menu_model.h"
#include "base/callback.h"
@@ -18,8 +18,8 @@ namespace atom {
namespace api {
class Menu : public mate::TrackableObject<Menu>,
public AtomMenuModel::Delegate,
public AtomMenuModel::Observer {
public AtomMenuModel::Delegate,
public AtomMenuModel::Observer {
public:
static mate::WrappableBase* New(mate::Arguments* args);
@@ -51,15 +51,19 @@ class Menu : public mate::TrackableObject<Menu>,
int command_id,
bool use_default_accelerator,
ui::Accelerator* accelerator) const override;
bool ShouldRegisterAcceleratorForCommandId(int command_id) const override;
void ExecuteCommand(int command_id, int event_flags) override;
void MenuWillShow(ui::SimpleMenuModel* source) override;
virtual void PopupAt(Window* window, int x, int y, int positioning_item,
virtual void PopupAt(TopLevelWindow* window,
int x,
int y,
int positioning_item,
const base::Closure& callback) = 0;
virtual void ClosePopupAt(int32_t window_id) = 0;
std::unique_ptr<AtomMenuModel> model_;
Menu* parent_;
Menu* parent_ = nullptr;
// Observable:
void OnMenuWillClose() override;
@@ -88,6 +92,7 @@ class Menu : public mate::TrackableObject<Menu>,
int GetCommandIdAt(int index) const;
base::string16 GetLabelAt(int index) const;
base::string16 GetSublabelAt(int index) const;
base::string16 GetAcceleratorTextAt(int index) const;
bool IsItemCheckedAt(int index) const;
bool IsEnabledAt(int index) const;
bool IsVisibleAt(int index) const;
@@ -98,6 +103,7 @@ class Menu : public mate::TrackableObject<Menu>,
base::Callback<bool(v8::Local<v8::Value>, int)> is_visible_;
base::Callback<v8::Local<v8::Value>(v8::Local<v8::Value>, int, bool)>
get_accelerator_;
base::Callback<bool(v8::Local<v8::Value>, int)> should_register_accelerator_;
base::Callback<void(v8::Local<v8::Value>, v8::Local<v8::Value>, int)>
execute_command_;
base::Callback<void(v8::Local<v8::Value>)> menu_will_show_;
@@ -109,12 +115,12 @@ class Menu : public mate::TrackableObject<Menu>,
} // namespace atom
namespace mate {
template<>
template <>
struct Converter<atom::AtomMenuModel*> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
atom::AtomMenuModel** out) {
// null would be tranfered to NULL.
if (val->IsNull()) {

View File

@@ -21,8 +21,12 @@ namespace api {
class MenuMac : public Menu {
protected:
MenuMac(v8::Isolate* isolate, v8::Local<v8::Object> wrapper);
~MenuMac() override;
void PopupAt(Window* window, int x, int y, int positioning_item,
void PopupAt(TopLevelWindow* window,
int x,
int y,
int positioning_item,
const base::Closure& callback) override;
void PopupOnUI(const base::WeakPtr<NativeWindow>& native_window,
int32_t window_id,

View File

@@ -9,8 +9,6 @@
#include "base/mac/scoped_sending_event.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/sys_string_conversions.h"
#include "brightray/browser/inspectable_web_contents.h"
#include "brightray/browser/inspectable_web_contents_view.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
@@ -18,24 +16,33 @@
using content::BrowserThread;
namespace {
static scoped_nsobject<NSMenu> applicationMenu_;
} // namespace
namespace atom {
namespace api {
MenuMac::MenuMac(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)
: Menu(isolate, wrapper),
weak_factory_(this) {
}
: Menu(isolate, wrapper), weak_factory_(this) {}
void MenuMac::PopupAt(Window* window, int x, int y, int positioning_item,
MenuMac::~MenuMac() = default;
void MenuMac::PopupAt(TopLevelWindow* window,
int x,
int y,
int positioning_item,
const base::Closure& callback) {
NativeWindow* native_window = window->window();
if (!native_window)
return;
auto popup = base::Bind(&MenuMac::PopupOnUI, weak_factory_.GetWeakPtr(),
native_window->GetWeakPtr(), window->ID(), x, y,
positioning_item, callback);
native_window->GetWeakPtr(), window->weak_map_id(), x,
y, positioning_item, callback);
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, popup);
}
@@ -47,18 +54,15 @@ void MenuMac::PopupOnUI(const base::WeakPtr<NativeWindow>& native_window,
base::Closure callback) {
if (!native_window)
return;
brightray::InspectableWebContents* web_contents =
native_window->inspectable_web_contents();
if (!web_contents)
return;
NSWindow* nswindow = native_window->GetNativeWindow();
auto close_callback = base::Bind(
&MenuMac::OnClosed, weak_factory_.GetWeakPtr(), window_id, callback);
popup_controllers_[window_id] = base::scoped_nsobject<AtomMenuController>(
[[AtomMenuController alloc] initWithModel:model()
useDefaultAccelerator:NO]);
popup_controllers_[window_id] = base::scoped_nsobject<AtomMenuController>([
[AtomMenuController alloc] initWithModel:model()
useDefaultAccelerator:NO]);
NSMenu* menu = [popup_controllers_[window_id] menu];
NSView* view = web_contents->GetView()->GetNativeView();
NSView* view = [nswindow contentView];
// Which menu item to show.
NSMenuItem* item = nil;
@@ -68,7 +72,6 @@ void MenuMac::PopupOnUI(const base::WeakPtr<NativeWindow>& native_window,
// (-1, -1) means showing on mouse location.
NSPoint position;
if (x == -1 || y == -1) {
NSWindow* nswindow = native_window->GetNativeWindow();
position = [view convertPoint:[nswindow mouseLocationOutsideOfEventStream]
fromView:nil];
} else {
@@ -94,8 +97,7 @@ void MenuMac::PopupOnUI(const base::WeakPtr<NativeWindow>& native_window,
[popup_controllers_[window_id] setCloseCallback:close_callback];
// Make sure events can be pumped while the menu is up.
base::MessageLoop::ScopedNestableTaskAllower allow(
base::MessageLoop::current());
base::MessageLoop::ScopedNestableTaskAllower allow;
// One of the events that could be pumped is |window.close()|.
// User-initiated event-tracking loops protect against this by
@@ -132,10 +134,21 @@ void MenuMac::OnClosed(int32_t window_id, base::Closure callback) {
// static
void Menu::SetApplicationMenu(Menu* base_menu) {
MenuMac* menu = static_cast<MenuMac*>(base_menu);
base::scoped_nsobject<AtomMenuController> menu_controller(
[[AtomMenuController alloc] initWithModel:menu->model_.get()
useDefaultAccelerator:YES]);
[NSApp setMainMenu:[menu_controller menu]];
base::scoped_nsobject<AtomMenuController> menu_controller([
[AtomMenuController alloc] initWithModel:menu->model_.get()
useDefaultAccelerator:YES]);
NSRunLoop* currentRunLoop = [NSRunLoop currentRunLoop];
[currentRunLoop cancelPerformSelector:@selector(setMainMenu:)
target:NSApp
argument:applicationMenu_];
applicationMenu_.reset([[menu_controller menu] retain]);
[[NSRunLoop currentRunLoop]
performSelector:@selector(setMainMenu:)
target:NSApp
argument:applicationMenu_
order:0
modes:[NSArray arrayWithObject:NSDefaultRunLoopMode]];
// Ensure the menu_controller_ is destroyed after main menu is set.
menu_controller.swap(menu->menu_controller_);

View File

@@ -4,10 +4,10 @@
#include "atom/browser/api/atom_api_menu_views.h"
#include <memory>
#include "atom/browser/native_window_views.h"
#include "atom/browser/unresponsive_suppressor.h"
#include "brightray/browser/inspectable_web_contents.h"
#include "brightray/browser/inspectable_web_contents_view.h"
#include "ui/display/screen.h"
using views::MenuRunner;
@@ -17,26 +17,25 @@ namespace atom {
namespace api {
MenuViews::MenuViews(v8::Isolate* isolate, v8::Local<v8::Object> wrapper)
: Menu(isolate, wrapper),
weak_factory_(this) {
}
: Menu(isolate, wrapper), weak_factory_(this) {}
void MenuViews::PopupAt(Window* window, int x, int y, int positioning_item,
MenuViews::~MenuViews() = default;
void MenuViews::PopupAt(TopLevelWindow* window,
int x,
int y,
int positioning_item,
const base::Closure& callback) {
NativeWindow* native_window = static_cast<NativeWindow*>(window->window());
auto* native_window = static_cast<NativeWindowViews*>(window->window());
if (!native_window)
return;
auto* web_contents = native_window->inspectable_web_contents();
if (!web_contents)
return;
// (-1, -1) means showing on mouse location.
gfx::Point location;
if (x == -1 || y == -1) {
location = display::Screen::GetScreen()->GetCursorScreenPoint();
} else {
auto* view = web_contents->GetView()->GetWebView();
gfx::Point origin = view->bounds().origin();
gfx::Point origin = native_window->GetContentBounds().origin();
location = gfx::Point(origin.x() + x, origin.y() + y);
}
@@ -46,17 +45,14 @@ void MenuViews::PopupAt(Window* window, int x, int y, int positioning_item,
atom::UnresponsiveSuppressor suppressor;
// Show the menu.
int32_t window_id = window->ID();
int32_t window_id = window->weak_map_id();
auto close_callback = base::Bind(
&MenuViews::OnClosed, weak_factory_.GetWeakPtr(), window_id, callback);
menu_runners_[window_id] = std::unique_ptr<MenuRunner>(new MenuRunner(
model(), flags, close_callback));
menu_runners_[window_id] =
std::make_unique<MenuRunner>(model(), flags, close_callback);
menu_runners_[window_id]->RunMenuAt(
static_cast<NativeWindowViews*>(window->window())->widget(),
NULL,
gfx::Rect(location, gfx::Size()),
views::MENU_ANCHOR_TOPLEFT,
ui::MENU_SOURCE_MOUSE);
native_window->widget(), NULL, gfx::Rect(location, gfx::Size()),
views::MENU_ANCHOR_TOPLEFT, ui::MENU_SOURCE_MOUSE);
}
void MenuViews::ClosePopupAt(int32_t window_id) {

View File

@@ -6,6 +6,7 @@
#define ATOM_BROWSER_API_ATOM_API_MENU_VIEWS_H_
#include <map>
#include <memory>
#include "atom/browser/api/atom_api_menu.h"
#include "base/memory/weak_ptr.h"
@@ -19,9 +20,13 @@ namespace api {
class MenuViews : public Menu {
public:
MenuViews(v8::Isolate* isolate, v8::Local<v8::Object> wrapper);
~MenuViews() override;
protected:
void PopupAt(Window* window, int x, int y, int positioning_item,
void PopupAt(TopLevelWindow* window,
int x,
int y,
int positioning_item,
const base::Closure& callback) override;
void ClosePopupAt(int32_t window_id) override;

View File

@@ -58,4 +58,4 @@ void Initialize(v8::Local<v8::Object> exports,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_net, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_net, Initialize)

View File

@@ -0,0 +1,138 @@
// 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

@@ -0,0 +1,60 @@
// 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

@@ -9,6 +9,7 @@
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "atom/common/native_mate_converters/image_converter.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "base/guid.h"
#include "base/strings/utf_string_conversions.h"
#include "brightray/browser/browser_client.h"
#include "native_mate/constructor.h"
@@ -20,10 +21,11 @@
#include "atom/common/node_includes.h"
namespace mate {
template<>
template <>
struct Converter<brightray::NotificationAction> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
brightray::NotificationAction* out) {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
brightray::NotificationAction* out) {
mate::Dictionary dict;
if (!ConvertFromV8(isolate, val, &dict))
return false;
@@ -36,7 +38,7 @@ struct Converter<brightray::NotificationAction> {
}
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
brightray::NotificationAction val) {
brightray::NotificationAction val) {
mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
dict.Set("text", val.text);
dict.Set("type", val.type);
@@ -155,7 +157,7 @@ void Notification::SetSound(const base::string16& new_sound) {
}
void Notification::SetActions(
const std::vector<brightray::NotificationAction>& actions) {
const std::vector<brightray::NotificationAction>& actions) {
actions_ = actions;
}
@@ -179,8 +181,7 @@ void Notification::NotificationDisplayed() {
Emit("show");
}
void Notification::NotificationDestroyed() {
}
void Notification::NotificationDestroyed() {}
void Notification::NotificationClosed() {
Emit("close");
@@ -197,7 +198,7 @@ void Notification::Close() {
void Notification::Show() {
Close();
if (presenter_) {
notification_ = presenter_->CreateNotification(this);
notification_ = presenter_->CreateNotification(this, base::GenerateGUID());
if (notification_) {
brightray::NotificationOptions options;
options.title = title_;
@@ -232,14 +233,12 @@ void Notification::BuildPrototype(v8::Isolate* isolate,
.SetProperty("subtitle", &Notification::GetSubtitle,
&Notification::SetSubtitle)
.SetProperty("body", &Notification::GetBody, &Notification::SetBody)
.SetProperty("silent", &Notification::GetSilent,
&Notification::SetSilent)
.SetProperty("silent", &Notification::GetSilent, &Notification::SetSilent)
.SetProperty("hasReply", &Notification::GetHasReply,
&Notification::SetHasReply)
.SetProperty("replyPlaceholder", &Notification::GetReplyPlaceholder,
&Notification::SetReplyPlaceholder)
.SetProperty("sound", &Notification::GetSound,
&Notification::SetSound)
.SetProperty("sound", &Notification::GetSound, &Notification::SetSound)
.SetProperty("actions", &Notification::GetActions,
&Notification::SetActions)
.SetProperty("closeButtonText", &Notification::GetCloseButtonText,
@@ -270,4 +269,4 @@ void Initialize(v8::Local<v8::Object> exports,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_common_notification, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_common_notification, Initialize)

View File

@@ -5,26 +5,50 @@
#include "atom/browser/api/atom_api_power_monitor.h"
#include "atom/browser/browser.h"
#include "atom/common/native_mate_converters/callback.h"
#include "base/power_monitor/power_monitor.h"
#include "base/power_monitor/power_monitor_device_source.h"
#include "native_mate/dictionary.h"
#include "atom/common/node_includes.h"
namespace mate {
template <>
struct Converter<ui::IdleState> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
const ui::IdleState& in) {
switch (in) {
case ui::IDLE_STATE_ACTIVE:
return mate::StringToV8(isolate, "active");
case ui::IDLE_STATE_IDLE:
return mate::StringToV8(isolate, "idle");
case ui::IDLE_STATE_LOCKED:
return mate::StringToV8(isolate, "locked");
case ui::IDLE_STATE_UNKNOWN:
default:
return mate::StringToV8(isolate, "unknown");
}
}
};
} // namespace mate
namespace atom {
namespace api {
PowerMonitor::PowerMonitor(v8::Isolate* isolate) {
#if defined(OS_LINUX)
SetShutdownHandler(base::Bind(&PowerMonitor::ShouldShutdown,
base::Unretained(this)));
SetShutdownHandler(
base::Bind(&PowerMonitor::ShouldShutdown, base::Unretained(this)));
#elif defined(OS_MACOSX)
Browser::Get()->SetShutdownHandler(base::Bind(&PowerMonitor::ShouldShutdown,
base::Unretained(this)));
Browser::Get()->SetShutdownHandler(
base::Bind(&PowerMonitor::ShouldShutdown, base::Unretained(this)));
#endif
base::PowerMonitor::Get()->AddObserver(this);
Init(isolate);
#if defined(OS_MACOSX) || defined(OS_WIN)
InitPlatformSpecificMonitors();
#endif
}
PowerMonitor::~PowerMonitor() {
@@ -60,6 +84,21 @@ void PowerMonitor::OnResume() {
Emit("resume");
}
void PowerMonitor::QuerySystemIdleState(v8::Isolate* isolate,
int idle_threshold,
const ui::IdleCallback& callback) {
if (idle_threshold > 0) {
ui::CalculateIdleState(idle_threshold, callback);
} else {
isolate->ThrowException(v8::Exception::TypeError(mate::StringToV8(
isolate, "Invalid idle threshold, must be greater than 0")));
}
}
void PowerMonitor::QuerySystemIdleTime(const ui::IdleTimeCallback& callback) {
ui::CalculateIdleTime(callback);
}
// static
v8::Local<v8::Value> PowerMonitor::Create(v8::Isolate* isolate) {
if (!Browser::Get()->is_ready()) {
@@ -73,27 +112,32 @@ v8::Local<v8::Value> PowerMonitor::Create(v8::Isolate* isolate) {
}
// static
void PowerMonitor::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
void PowerMonitor::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "PowerMonitor"));
#if defined(OS_LINUX)
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
#if defined(OS_LINUX)
.SetMethod("blockShutdown", &PowerMonitor::BlockShutdown)
.SetMethod("unblockShutdown", &PowerMonitor::UnblockShutdown);
.SetMethod("unblockShutdown", &PowerMonitor::UnblockShutdown)
#endif
.SetMethod("querySystemIdleState", &PowerMonitor::QuerySystemIdleState)
.SetMethod("querySystemIdleTime", &PowerMonitor::QuerySystemIdleTime);
}
} // namespace api
} // namespace atom
namespace {
using atom::api::PowerMonitor;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
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("powerMonitor", PowerMonitor::Create(isolate));
@@ -103,4 +147,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_power_monitor, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_power_monitor, Initialize)

View File

@@ -9,6 +9,7 @@
#include "atom/browser/lib/power_observer.h"
#include "base/compiler_specific.h"
#include "native_mate/handle.h"
#include "ui/base/idle/idle.h"
namespace atom {
@@ -35,12 +36,43 @@ class PowerMonitor : public mate::TrackableObject<PowerMonitor>,
void UnblockShutdown();
#endif
#if defined(OS_MACOSX) || defined(OS_WIN)
void InitPlatformSpecificMonitors();
#endif
// base::PowerObserver implementations:
void OnPowerStateChange(bool on_battery_power) override;
void OnSuspend() override;
void OnResume() override;
private:
void QuerySystemIdleState(v8::Isolate* isolate,
int idle_threshold,
const ui::IdleCallback& callback);
void QuerySystemIdleTime(const ui::IdleTimeCallback& callback);
#if defined(OS_WIN)
// Static callback invoked when a message comes in to our messaging window.
static LRESULT CALLBACK WndProcStatic(HWND hwnd,
UINT message,
WPARAM wparam,
LPARAM lparam);
LRESULT CALLBACK WndProc(HWND hwnd,
UINT message,
WPARAM wparam,
LPARAM lparam);
// The window class of |window_|.
ATOM atom_;
// The handle of the module that contains the window procedure of |window_|.
HMODULE instance_;
// The window used for processing events.
HWND window_;
#endif
DISALLOW_COPY_AND_ASSIGN(PowerMonitor);
};

View File

@@ -0,0 +1,74 @@
// 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_power_monitor.h"
#include <ApplicationServices/ApplicationServices.h>
#import <Cocoa/Cocoa.h>
@interface MacLockMonitor : NSObject {
@private
std::vector<atom::api::PowerMonitor*> emitters;
}
- (void)addEmitter:(atom::api::PowerMonitor*)monitor_;
@end
@implementation MacLockMonitor
- (id)init {
if ((self = [super init])) {
NSDistributedNotificationCenter* distCenter =
[NSDistributedNotificationCenter defaultCenter];
[distCenter addObserver:self
selector:@selector(onScreenLocked:)
name:@"com.apple.screenIsLocked"
object:nil];
[distCenter addObserver:self
selector:@selector(onScreenUnlocked:)
name:@"com.apple.screenIsUnlocked"
object:nil];
}
return self;
}
- (void)dealloc {
[[NSDistributedNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
- (void)addEmitter:(atom::api::PowerMonitor*)monitor_ {
self->emitters.push_back(monitor_);
}
- (void)onScreenLocked:(NSNotification*)notification {
for (auto*& emitter : self->emitters) {
emitter->Emit("lock-screen");
}
}
- (void)onScreenUnlocked:(NSNotification*)notification {
for (auto*& emitter : self->emitters) {
emitter->Emit("unlock-screen");
}
}
@end
namespace atom {
namespace api {
static MacLockMonitor* g_lock_monitor = nil;
void PowerMonitor::InitPlatformSpecificMonitors() {
if (!g_lock_monitor)
g_lock_monitor = [[MacLockMonitor alloc] init];
[g_lock_monitor addEmitter:this];
}
} // namespace api
} // namespace atom

View File

@@ -0,0 +1,72 @@
// 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_power_monitor.h"
#include <windows.h>
#include <wtsapi32.h>
#include "base/win/wrapped_window_proc.h"
#include "ui/base/win/shell.h"
#include "ui/gfx/win/hwnd_util.h"
namespace atom {
namespace {
const wchar_t kPowerMonitorWindowClass[] = L"Electron_PowerMonitorHostWindow";
} // namespace
namespace api {
void PowerMonitor::InitPlatformSpecificMonitors() {
WNDCLASSEX window_class;
base::win::InitializeWindowClass(
kPowerMonitorWindowClass,
&base::win::WrappedWindowProc<PowerMonitor::WndProcStatic>, 0, 0, 0, NULL,
NULL, NULL, NULL, NULL, &window_class);
instance_ = window_class.hInstance;
atom_ = RegisterClassEx(&window_class);
// Create an offscreen window for receiving broadcast messages for the
// session lock and unlock events.
window_ = CreateWindow(MAKEINTATOM(atom_), 0, 0, 0, 0, 0, 0, HWND_MESSAGE, 0,
instance_, 0);
gfx::CheckWindowCreated(window_);
gfx::SetWindowUserData(window_, this);
// Tel windows we want to be notified with session events
WTSRegisterSessionNotification(window_, NOTIFY_FOR_THIS_SESSION);
}
LRESULT CALLBACK PowerMonitor::WndProcStatic(HWND hwnd,
UINT message,
WPARAM wparam,
LPARAM lparam) {
PowerMonitor* msg_wnd =
reinterpret_cast<PowerMonitor*>(GetWindowLongPtr(hwnd, GWLP_USERDATA));
if (msg_wnd)
return msg_wnd->WndProc(hwnd, message, wparam, lparam);
else
return ::DefWindowProc(hwnd, message, wparam, lparam);
}
LRESULT CALLBACK PowerMonitor::WndProc(HWND hwnd,
UINT message,
WPARAM wparam,
LPARAM lparam) {
if (message == WM_WTSSESSION_CHANGE) {
if (wparam == WTS_SESSION_LOCK) {
Emit("lock-screen");
} else if (wparam == WTS_SESSION_UNLOCK) {
Emit("unlock-screen");
}
}
return ::DefWindowProc(hwnd, message, wparam, lparam);
}
} // namespace api
} // namespace atom

View File

@@ -6,28 +6,26 @@
#include <string>
#include "content/public/browser/browser_thread.h"
#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"
using content::BrowserThread;
namespace mate {
template<>
struct Converter<device::PowerSaveBlocker::PowerSaveBlockerType> {
template <>
struct Converter<device::mojom::WakeLockType> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
device::PowerSaveBlocker::PowerSaveBlockerType* out) {
using device::PowerSaveBlocker;
device::mojom::WakeLockType* out) {
std::string type;
if (!ConvertFromV8(isolate, val, &type))
return false;
if (type == "prevent-app-suspension")
*out = PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension;
*out = device::mojom::WakeLockType::kPreventAppSuspension;
else if (type == "prevent-display-sleep")
*out = PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep;
*out = device::mojom::WakeLockType::kPreventDisplaySleep;
else
return false;
return true;
@@ -42,12 +40,11 @@ namespace api {
PowerSaveBlocker::PowerSaveBlocker(v8::Isolate* isolate)
: current_blocker_type_(
device::PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension) {
device::mojom::WakeLockType::kPreventAppSuspension) {
Init(isolate);
}
PowerSaveBlocker::~PowerSaveBlocker() {
}
PowerSaveBlocker::~PowerSaveBlocker() {}
void PowerSaveBlocker::UpdatePowerSaveBlocker() {
if (power_save_blocker_types_.empty()) {
@@ -55,38 +52,37 @@ void PowerSaveBlocker::UpdatePowerSaveBlocker() {
return;
}
// |kPowerSaveBlockPreventAppSuspension| keeps system active, but allows
// |WakeLockType::kPreventAppSuspension| keeps system active, but allows
// screen to be turned off.
// |kPowerSaveBlockPreventDisplaySleep| keeps system and screen active, has a
// higher precedence level than |kPowerSaveBlockPreventAppSuspension|.
// |WakeLockType::kPreventDisplaySleep| keeps system and screen active, has a
// higher precedence level than |WakeLockType::kPreventAppSuspension|.
//
// Only the highest-precedence blocker type takes effect.
device::PowerSaveBlocker::PowerSaveBlockerType new_blocker_type =
device::PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension;
device::mojom::WakeLockType new_blocker_type =
device::mojom::WakeLockType::kPreventAppSuspension;
for (const auto& element : power_save_blocker_types_) {
if (element.second ==
device::PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep) {
new_blocker_type =
device::PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep;
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_) {
std::unique_ptr<device::PowerSaveBlocker> new_blocker(
new device::PowerSaveBlocker(
new_blocker_type,
device::PowerSaveBlocker::kReasonOther,
ATOM_PRODUCT_NAME,
BrowserThread::GetTaskRunnerForThread(BrowserThread::UI),
BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE)));
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::PowerSaveBlocker::PowerSaveBlockerType type) {
int PowerSaveBlocker::Start(device::mojom::WakeLockType type) {
static int count = 0;
power_save_blocker_types_[count] = type;
UpdatePowerSaveBlocker();
@@ -110,7 +106,8 @@ mate::Handle<PowerSaveBlocker> PowerSaveBlocker::Create(v8::Isolate* isolate) {
// static
void PowerSaveBlocker::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "PowerSaveBlocker"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("start", &PowerSaveBlocker::Start)
@@ -124,8 +121,10 @@ void PowerSaveBlocker::BuildPrototype(
namespace {
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
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));
@@ -133,4 +132,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_power_save_blocker, Initialize);
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_power_save_blocker, Initialize);

View File

@@ -33,19 +33,18 @@ class PowerSaveBlocker : public mate::TrackableObject<PowerSaveBlocker> {
private:
void UpdatePowerSaveBlocker();
int Start(device::PowerSaveBlocker::PowerSaveBlockerType type);
int Start(device::mojom::WakeLockType type);
bool Stop(int id);
bool IsStarted(int id);
std::unique_ptr<device::PowerSaveBlocker> power_save_blocker_;
// Currnet blocker type used by |power_save_blocker_|
device::PowerSaveBlocker::PowerSaveBlockerType current_blocker_type_;
// 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 PowerSaveBlockerTypeMap =
std::map<int, device::PowerSaveBlocker::PowerSaveBlockerType>;
PowerSaveBlockerTypeMap power_save_blocker_types_;
using WakeLockTypeMap = std::map<int, device::mojom::WakeLockType>;
WakeLockTypeMap power_save_blocker_types_;
DISALLOW_COPY_AND_ASSIGN(PowerSaveBlocker);
};

View File

@@ -33,14 +33,6 @@ namespace {
// List of registered custom standard schemes.
std::vector<std::string> g_standard_schemes;
// Clear protocol handlers in IO thread.
void ClearJobFactoryInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter) {
auto job_factory = static_cast<AtomURLRequestJobFactory*>(
request_context_getter->job_factory());
job_factory->Clear();
}
} // namespace
std::vector<std::string> GetStandardSchemes() {
@@ -58,7 +50,7 @@ void RegisterStandardSchemes(const std::vector<std::string>& schemes,
// Dynamically register the schemes.
auto* policy = content::ChildProcessSecurityPolicy::GetInstance();
for (const std::string& scheme : schemes) {
url::AddStandardScheme(scheme.c_str(), url::SCHEME_WITHOUT_PORT);
url::AddStandardScheme(scheme.c_str(), url::SCHEME_WITH_HOST);
if (secure) {
url::AddSecureScheme(scheme.c_str());
}
@@ -71,45 +63,40 @@ void RegisterStandardSchemes(const std::vector<std::string>& schemes,
atom::switches::kStandardSchemes, base::JoinString(schemes, ","));
if (secure) {
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
atom::switches::kSecureSchemes, base::JoinString(schemes, ","));
atom::switches::kSecureSchemes, base::JoinString(schemes, ","));
}
}
Protocol::Protocol(v8::Isolate* isolate, AtomBrowserContext* browser_context)
: request_context_getter_(browser_context->GetRequestContext()),
weak_factory_(this) {
: browser_context_(browser_context), weak_factory_(this) {
Init(isolate);
}
Protocol::~Protocol() {
content::BrowserThread::PostTask(
content::BrowserThread::IO, FROM_HERE,
base::Bind(ClearJobFactoryInIO, request_context_getter_));
}
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) {
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::Bind(&Protocol::UnregisterProtocolInIO,
request_context_getter_, scheme),
base::Bind(&Protocol::OnIOCompleted,
GetWeakPtr(), callback));
base::BindOnce(&Protocol::UnregisterProtocolInIO,
base::RetainedRef(getter), scheme),
base::BindOnce(&Protocol::OnIOCompleted, GetWeakPtr(), callback));
}
// static
Protocol::ProtocolError Protocol::UnregisterProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
scoped_refptr<URLRequestContextGetter> request_context_getter,
const std::string& scheme) {
auto job_factory = static_cast<AtomURLRequestJobFactory*>(
request_context_getter->job_factory());
auto* job_factory = request_context_getter->job_factory();
if (!job_factory->HasProtocolHandler(scheme))
return PROTOCOL_NOT_REGISTERED;
job_factory->SetProtocolHandler(scheme, nullptr);
@@ -118,43 +105,46 @@ Protocol::ProtocolError Protocol::UnregisterProtocolInIO(
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,
request_context_getter_, scheme),
base::Bind(&Protocol::IsProtocolHandledInIO, base::RetainedRef(getter),
scheme),
callback);
}
// static
bool Protocol::IsProtocolHandledInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
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) {
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::Bind(&Protocol::UninterceptProtocolInIO,
request_context_getter_, scheme),
base::Bind(&Protocol::OnIOCompleted,
GetWeakPtr(), callback));
base::BindOnce(&Protocol::UninterceptProtocolInIO,
base::RetainedRef(getter), scheme),
base::BindOnce(&Protocol::OnIOCompleted, GetWeakPtr(), callback));
}
// static
Protocol::ProtocolError Protocol::UninterceptProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
scoped_refptr<URLRequestContextGetter> request_context_getter,
const std::string& scheme) {
return static_cast<AtomURLRequestJobFactory*>(
request_context_getter->job_factory())->UninterceptProtocol(scheme) ?
PROTOCOL_OK : PROTOCOL_NOT_INTERCEPTED;
return request_context_getter->job_factory()->UninterceptProtocol(scheme)
? PROTOCOL_OK
: PROTOCOL_NOT_INTERCEPTED;
}
void Protocol::OnIOCompleted(
const CompletionCallback& callback, ProtocolError error) {
void Protocol::OnIOCompleted(const CompletionCallback& callback,
ProtocolError error) {
// The completion callback is optional.
if (callback.is_null())
return;
@@ -172,31 +162,30 @@ void Protocol::OnIOCompleted(
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";
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";
}
}
AtomURLRequestJobFactory* Protocol::GetJobFactoryInIO() const {
request_context_getter_->GetURLRequestContext(); // Force init.
return static_cast<AtomURLRequestJobFactory*>(
static_cast<brightray::URLRequestContextGetter*>(
request_context_getter_.get())->job_factory());
}
// static
mate::Handle<Protocol> Protocol::Create(
v8::Isolate* isolate, AtomBrowserContext* browser_context) {
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) {
void Protocol::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Protocol"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("registerServiceWorkerSchemes",
@@ -232,19 +221,22 @@ void Protocol::BuildPrototype(
namespace {
void RegisterStandardSchemes(
const std::vector<std::string>& schemes, mate::Arguments* args) {
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");
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) {
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);
@@ -253,4 +245,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_protocol, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_protocol, Initialize)

View File

@@ -6,7 +6,9 @@
#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"
@@ -39,20 +41,20 @@ class Protocol : public mate::TrackableObject<Protocol> {
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 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();
~Protocol() override;
private:
// Possible errors.
enum ProtocolError {
PROTOCOL_OK, // no error
PROTOCOL_OK, // no error
PROTOCOL_FAIL, // operation failed, should never occur
PROTOCOL_REGISTERED,
PROTOCOL_NOT_REGISTERED,
@@ -62,14 +64,13 @@ class Protocol : public mate::TrackableObject<Protocol> {
// The protocol handler that will create a protocol handler for certain
// request job.
template<typename RequestJob>
template <typename RequestJob>
class CustomProtocolHandler
: public net::URLRequestJobFactory::ProtocolHandler {
public:
CustomProtocolHandler(
v8::Isolate* isolate,
net::URLRequestContextGetter* request_context,
const Handler& handler)
CustomProtocolHandler(v8::Isolate* isolate,
net::URLRequestContextGetter* request_context,
const Handler& handler)
: isolate_(isolate),
request_context_(request_context),
handler_(handler) {}
@@ -79,13 +80,13 @@ class Protocol : public mate::TrackableObject<Protocol> {
net::URLRequest* request,
net::NetworkDelegate* network_delegate) const override {
RequestJob* request_job = new RequestJob(request, network_delegate);
request_job->SetHandlerInfo(isolate_, request_context_.get(), handler_);
request_job->SetHandlerInfo(isolate_, request_context_, handler_);
return request_job;
}
private:
v8::Isolate* isolate_;
scoped_refptr<net::URLRequestContextGetter> request_context_;
net::URLRequestContextGetter* request_context_;
Protocol::Handler handler_;
DISALLOW_COPY_AND_ASSIGN(CustomProtocolHandler);
@@ -95,32 +96,31 @@ class Protocol : public mate::TrackableObject<Protocol> {
void RegisterServiceWorkerSchemes(const std::vector<std::string>& schemes);
// Register the protocol with certain request job.
template<typename RequestJob>
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::Bind(&Protocol::RegisterProtocolInIO<RequestJob>,
request_context_getter_, isolate(), scheme, handler),
base::Bind(&Protocol::OnIOCompleted,
GetWeakPtr(), callback));
base::BindOnce(&Protocol::RegisterProtocolInIO<RequestJob>,
base::RetainedRef(getter), isolate(), scheme, handler),
base::BindOnce(&Protocol::OnIOCompleted, GetWeakPtr(), callback));
}
template<typename RequestJob>
template <typename RequestJob>
static ProtocolError RegisterProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
scoped_refptr<URLRequestContextGetter> request_context_getter,
v8::Isolate* isolate,
const std::string& scheme,
const Handler& handler) {
auto job_factory = static_cast<AtomURLRequestJobFactory*>(
request_context_getter->job_factory());
auto* job_factory = request_context_getter->job_factory();
if (job_factory->IsHandledProtocol(scheme))
return PROTOCOL_REGISTERED;
std::unique_ptr<CustomProtocolHandler<RequestJob>> protocol_handler(
new CustomProtocolHandler<RequestJob>(
isolate, request_context_getter.get(), handler));
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
@@ -130,46 +130,45 @@ class Protocol : public mate::TrackableObject<Protocol> {
// Unregister the protocol handler that handles |scheme|.
void UnregisterProtocol(const std::string& scheme, mate::Arguments* args);
static ProtocolError UnregisterProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
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<brightray::URLRequestContextGetter> request_context_getter,
scoped_refptr<URLRequestContextGetter> request_context_getter,
const std::string& scheme);
// Replace the protocol handler with a new one.
template<typename RequestJob>
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::Bind(&Protocol::InterceptProtocolInIO<RequestJob>,
request_context_getter_, isolate(), scheme, handler),
base::Bind(&Protocol::OnIOCompleted,
GetWeakPtr(), callback));
base::BindOnce(&Protocol::InterceptProtocolInIO<RequestJob>,
base::RetainedRef(getter), isolate(), scheme, handler),
base::BindOnce(&Protocol::OnIOCompleted, GetWeakPtr(), callback));
}
template<typename RequestJob>
template <typename RequestJob>
static ProtocolError InterceptProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
scoped_refptr<URLRequestContextGetter> request_context_getter,
v8::Isolate* isolate,
const std::string& scheme,
const Handler& handler) {
auto job_factory = static_cast<AtomURLRequestJobFactory*>(
request_context_getter->job_factory());
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;
std::unique_ptr<CustomProtocolHandler<RequestJob>> protocol_handler(
new CustomProtocolHandler<RequestJob>(
isolate, request_context_getter.get(), handler));
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;
@@ -178,7 +177,7 @@ class Protocol : public mate::TrackableObject<Protocol> {
// Restore the |scheme| to its original protocol handler.
void UninterceptProtocol(const std::string& scheme, mate::Arguments* args);
static ProtocolError UninterceptProtocolInIO(
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter,
scoped_refptr<URLRequestContextGetter> request_context_getter,
const std::string& scheme);
// Convert error code to JS exception and call the callback.
@@ -187,13 +186,9 @@ class Protocol : public mate::TrackableObject<Protocol> {
// Convert error code to string.
std::string ErrorCodeToString(ProtocolError error);
AtomURLRequestJobFactory* GetJobFactoryInIO() const;
base::WeakPtr<Protocol> GetWeakPtr() { return weak_factory_.GetWeakPtr(); }
base::WeakPtr<Protocol> GetWeakPtr() {
return weak_factory_.GetWeakPtr();
}
scoped_refptr<brightray::URLRequestContextGetter> request_context_getter_;
scoped_refptr<AtomBrowserContext> browser_context_;
base::WeakPtrFactory<Protocol> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(Protocol);

View File

@@ -21,8 +21,8 @@ namespace {
bool IsWebContents(v8::Isolate* isolate, content::RenderProcessHost* process) {
content::WebContents* web_contents =
static_cast<AtomBrowserClient*>(AtomBrowserClient::Get())->
GetWebContentsFromProcessID(process->GetID());
static_cast<AtomBrowserClient*>(AtomBrowserClient::Get())
->GetWebContentsFromProcessID(process->GetID());
if (!web_contents)
return false;
@@ -41,8 +41,7 @@ RenderProcessPreferences::RenderProcessPreferences(
Init(isolate);
}
RenderProcessPreferences::~RenderProcessPreferences() {
}
RenderProcessPreferences::~RenderProcessPreferences() {}
int RenderProcessPreferences::AddEntry(const base::DictionaryValue& entry) {
return preferences_.AddEntry(entry);
@@ -54,7 +53,8 @@ void RenderProcessPreferences::RemoveEntry(int id) {
// static
void RenderProcessPreferences::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(
mate::StringToV8(isolate, "RenderProcessPreferences"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
@@ -65,10 +65,9 @@ void RenderProcessPreferences::BuildPrototype(
// static
mate::Handle<RenderProcessPreferences>
RenderProcessPreferences::ForAllWebContents(v8::Isolate* isolate) {
return mate::CreateHandle(
isolate,
new RenderProcessPreferences(isolate,
base::Bind(&IsWebContents, isolate)));
return mate::CreateHandle(isolate,
new RenderProcessPreferences(
isolate, base::Bind(&IsWebContents, isolate)));
}
} // namespace api
@@ -77,8 +76,10 @@ RenderProcessPreferences::ForAllWebContents(v8::Isolate* isolate) {
namespace {
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
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);
@@ -86,5 +87,5 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_render_process_preferences,
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_render_process_preferences,
Initialize)

View File

@@ -16,8 +16,8 @@ namespace api {
class RenderProcessPreferences
: public mate::Wrappable<RenderProcessPreferences> {
public:
static mate::Handle<RenderProcessPreferences>
ForAllWebContents(v8::Isolate* isolate);
static mate::Handle<RenderProcessPreferences> ForAllWebContents(
v8::Isolate* isolate);
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);

View File

@@ -7,6 +7,7 @@
#include <algorithm>
#include <string>
#include "atom/browser/api/atom_api_browser_window.h"
#include "atom/browser/browser.h"
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "base/bind.h"
@@ -16,6 +17,10 @@
#include "ui/display/screen.h"
#include "ui/gfx/geometry/point.h"
#if defined(OS_WIN)
#include "ui/display/win/screen_win.h"
#endif
#include "atom/common/node_includes.h"
namespace atom {
@@ -25,9 +30,9 @@ namespace api {
namespace {
// Find an item in container according to its ID.
template<class T>
template <class T>
typename T::iterator FindById(T* container, int id) {
auto predicate = [id] (const typename T::value_type& item) -> bool {
auto predicate = [id](const typename T::value_type& item) -> bool {
return item.id() == id;
};
return std::find_if(container->begin(), container->end(), predicate);
@@ -47,6 +52,19 @@ std::vector<std::string> MetricsToArray(uint32_t metrics) {
return array;
}
void DelayEmit(Screen* screen,
const base::StringPiece& name,
const display::Display& display) {
screen->Emit(name, display);
}
void DelayEmitWithMetrics(Screen* screen,
const base::StringPiece& name,
const display::Display& display,
const std::vector<std::string>& metrics) {
screen->Emit(name, display, metrics);
}
} // namespace
Screen::Screen(v8::Isolate* isolate, display::Screen* screen)
@@ -79,32 +97,54 @@ display::Display Screen::GetDisplayMatching(const gfx::Rect& match_rect) {
return screen_->GetDisplayMatching(match_rect);
}
#if defined(OS_WIN)
static gfx::Rect ScreenToDIPRect(atom::NativeWindow* window,
const gfx::Rect& rect) {
HWND hwnd = window ? window->GetAcceleratedWidget() : nullptr;
return display::win::ScreenWin::ScreenToDIPRect(hwnd, rect);
}
static gfx::Rect DIPToScreenRect(atom::NativeWindow* window,
const gfx::Rect& rect) {
HWND hwnd = window ? window->GetAcceleratedWidget() : nullptr;
return display::win::ScreenWin::DIPToScreenRect(hwnd, rect);
}
#endif
void Screen::OnDisplayAdded(const display::Display& new_display) {
Emit("display-added", new_display);
base::ThreadTaskRunnerHandle::Get()->PostNonNestableTask(
FROM_HERE, base::Bind(&DelayEmit, base::Unretained(this), "display-added",
new_display));
}
void Screen::OnDisplayRemoved(const display::Display& old_display) {
Emit("display-removed", old_display);
base::ThreadTaskRunnerHandle::Get()->PostNonNestableTask(
FROM_HERE, base::Bind(&DelayEmit, base::Unretained(this),
"display-removed", old_display));
}
void Screen::OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) {
Emit("display-metrics-changed", display, MetricsToArray(changed_metrics));
base::ThreadTaskRunnerHandle::Get()->PostNonNestableTask(
FROM_HERE, base::Bind(&DelayEmitWithMetrics, base::Unretained(this),
"display-metrics-changed", display,
MetricsToArray(changed_metrics)));
}
// static
v8::Local<v8::Value> Screen::Create(v8::Isolate* isolate) {
if (!Browser::Get()->is_ready()) {
isolate->ThrowException(v8::Exception::Error(mate::StringToV8(
isolate,
"Cannot require \"screen\" module before app is ready")));
isolate, "Cannot require \"screen\" module before app is ready")));
return v8::Null(isolate);
}
display::Screen* screen = display::Screen::GetScreen();
if (!screen) {
isolate->ThrowException(v8::Exception::Error(mate::StringToV8(
isolate, "Failed to get screen information")));
isolate->ThrowException(v8::Exception::Error(
mate::StringToV8(isolate, "Failed to get screen information")));
return v8::Null(isolate);
}
@@ -112,16 +152,19 @@ v8::Local<v8::Value> Screen::Create(v8::Isolate* isolate) {
}
// static
void Screen::BuildPrototype(
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
void Screen::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "Screen"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.SetMethod("getCursorScreenPoint", &Screen::GetCursorScreenPoint)
.SetMethod("getPrimaryDisplay", &Screen::GetPrimaryDisplay)
.SetMethod("getAllDisplays", &Screen::GetAllDisplays)
.SetMethod("getDisplayNearestPoint", &Screen::GetDisplayNearestPoint)
#if defined(OS_MACOSX)
.SetMethod("getMenuBarHeight", &Screen::getMenuBarHeight)
#if defined(OS_WIN)
.SetMethod("screenToDipPoint", &display::win::ScreenWin::ScreenToDIPPoint)
.SetMethod("dipToScreenPoint", &display::win::ScreenWin::DIPToScreenPoint)
.SetMethod("screenToDipRect", &ScreenToDIPRect)
.SetMethod("dipToScreenRect", &DIPToScreenRect)
#endif
.SetMethod("getDisplayMatching", &Screen::GetDisplayMatching);
}
@@ -134,8 +177,10 @@ namespace {
using atom::api::Screen;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
v8::Local<v8::Context> context, void* priv) {
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("screen", Screen::Create(isolate));
@@ -144,4 +189,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_common_screen, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_common_screen, Initialize)

View File

@@ -16,7 +16,7 @@ namespace gfx {
class Point;
class Rect;
class Screen;
}
} // namespace gfx
namespace atom {
@@ -40,10 +40,6 @@ class Screen : public mate::EventEmitter<Screen>,
display::Display GetDisplayNearestPoint(const gfx::Point& point);
display::Display GetDisplayMatching(const gfx::Rect& match_rect);
#if defined(OS_MACOSX)
int getMenuBarHeight();
#endif
// display::DisplayObserver:
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;

View File

@@ -1,18 +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.
#import "atom/browser/api/atom_api_screen.h"
#import <Cocoa/Cocoa.h>
namespace atom {
namespace api {
int Screen::getMenuBarHeight() {
return [[NSApp mainMenu] menuBarHeight];
}
}// namespace api
}// namespace atom

View File

@@ -5,11 +5,14 @@
#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"
@@ -24,19 +27,20 @@
#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 "atom/common/node_includes.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 "base/threading/thread_task_runner_handle.h"
#include "brightray/browser/media/media_device_id_salt.h"
#include "brightray/browser/net/devtools_network_conditions.h"
#include "brightray/browser/net/devtools_network_controller_handle.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"
@@ -46,13 +50,15 @@
#include "net/dns/host_cache.h"
#include "net/http/http_auth_handler_factory.h"
#include "net/http/http_auth_preferences.h"
#include "net/proxy/proxy_config_service_fixed.h"
#include "net/proxy/proxy_service.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;
@@ -94,6 +100,8 @@ uint32_t GetStorageMask(const std::vector<std::string>& storage_types) {
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;
}
@@ -137,7 +145,7 @@ void SetUserAgentInIO(scoped_refptr<net::URLRequestContextGetter> getter,
namespace mate {
template<>
template <>
struct Converter<ClearStorageDataOptions> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
@@ -176,37 +184,6 @@ struct Converter<ClearAuthCacheOptions> {
};
template <>
struct Converter<net::ProxyConfig> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
net::ProxyConfig* out) {
std::string proxy_rules, proxy_bypass_rules;
GURL pac_url;
mate::Dictionary options;
// Fallback to previous API when passed String.
// https://git.io/vuhjj
if (ConvertFromV8(isolate, val, &proxy_rules)) {
pac_url = GURL(proxy_rules); // Assume it is PAC script if it is URL.
} else if (ConvertFromV8(isolate, val, &options)) {
options.Get("pacScript", &pac_url);
options.Get("proxyRules", &proxy_rules);
options.Get("proxyBypassRules", &proxy_bypass_rules);
} else {
return false;
}
// pacScript takes precedence over proxyRules.
if (!pac_url.is_empty() && pac_url.is_valid()) {
out->set_pac_url(pac_url);
} else {
out->proxy_rules().ParseFromString(proxy_rules);
out->proxy_rules().bypass_rules.ParseFromString(proxy_bypass_rules);
}
return true;
}
};
template<>
struct Converter<atom::VerifyRequestParams> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
atom::VerifyRequestParams val) {
@@ -232,67 +209,14 @@ const char kPersistPrefix[] = "persist:";
// Referenced session objects.
std::map<uint32_t, v8::Global<v8::Object>> g_sessions;
class ResolveProxyHelper {
public:
ResolveProxyHelper(AtomBrowserContext* browser_context,
const GURL& url,
const Session::ResolveProxyCallback& callback)
: callback_(callback),
original_thread_(base::ThreadTaskRunnerHandle::Get()) {
scoped_refptr<net::URLRequestContextGetter> context_getter =
browser_context->url_request_context_getter();
context_getter->GetNetworkTaskRunner()->PostTask(
FROM_HERE,
base::Bind(&ResolveProxyHelper::ResolveProxy,
base::Unretained(this), context_getter, url));
}
void OnResolveProxyCompleted(int result) {
std::string proxy;
if (result == net::OK)
proxy = proxy_info_.ToPacString();
original_thread_->PostTask(FROM_HERE,
base::Bind(callback_, proxy));
delete this;
}
private:
void ResolveProxy(scoped_refptr<net::URLRequestContextGetter> context_getter,
const GURL& url) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
net::ProxyService* proxy_service =
context_getter->GetURLRequestContext()->proxy_service();
net::CompletionCallback completion_callback =
base::Bind(&ResolveProxyHelper::OnResolveProxyCompleted,
base::Unretained(this));
// Start the request.
int result = proxy_service->ResolveProxy(
url, "GET", &proxy_info_, completion_callback, &pac_req_, nullptr,
net::NetLogWithSource());
// Completed synchronously.
if (result != net::ERR_IO_PENDING)
completion_callback.Run(result);
}
Session::ResolveProxyCallback callback_;
net::ProxyInfo proxy_info_;
net::ProxyService::PacRequest* pac_req_;
scoped_refptr<base::SingleThreadTaskRunner> original_thread_;
DISALLOW_COPY_AND_ASSIGN(ResolveProxyHelper);
};
// Runs the callback in UI thread.
void RunCallbackInUI(const base::Callback<void()>& callback) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, callback);
}
template<typename ...T>
template <typename... T>
void RunCallbackInUI(const base::Callback<void(T...)>& callback, T... result) {
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE, base::Bind(callback, result...));
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::BindOnce(callback, result...));
}
// Callback of HttpCache::GetBackend.
@@ -304,8 +228,8 @@ void OnGetBackend(disk_cache::Backend** backend_ptr,
RunCallbackInUI(callback, result);
} else if (backend_ptr && *backend_ptr) {
if (action == Session::CacheAction::CLEAR) {
(*backend_ptr)->DoomAllEntries(base::Bind(&RunCallbackInUI<int>,
callback));
(*backend_ptr)
->DoomAllEntries(base::Bind(&RunCallbackInUI<int>, callback));
} else if (action == Session::CacheAction::STATS) {
base::StringPairs stats;
(*backend_ptr)->GetStats(&stats);
@@ -327,14 +251,14 @@ 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();
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);
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);
@@ -342,30 +266,19 @@ void DoCacheActionInIO(
on_get_backend.Run(net::OK);
}
void SetProxyInIO(net::URLRequestContextGetter* getter,
const net::ProxyConfig& config,
const base::Closure& callback) {
auto proxy_service = getter->GetURLRequestContext()->proxy_service();
proxy_service->ResetConfigService(base::WrapUnique(
new net::ProxyConfigServiceFixed(config)));
// Refetches and applies the new pac script if provided.
proxy_service->ForceReloadProxyConfig();
RunCallbackInUI(callback);
}
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);
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();
auto* request_context = context_getter->GetURLRequestContext();
auto* cache = request_context->host_resolver()->GetHostCache();
if (cache) {
cache->clear();
DCHECK_EQ(0u, cache->size());
@@ -378,21 +291,21 @@ 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 =
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();
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->ClearEntriesAddedWithin(base::TimeDelta::Max());
auth_cache->ClearAllEntries();
}
} else if (options.type == "clientCertificate") {
auto client_auth_cache = network_session->ssl_client_auth_cache();
auto* client_auth_cache = network_session->ssl_client_auth_cache();
client_auth_cache->Remove(net::HostPortPair::FromURL(options.origin));
}
network_session->CloseAllConnections();
@@ -404,13 +317,13 @@ void ClearAuthCacheInIO(
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();
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*>(
auto* auth_preferences = const_cast<net::HttpAuthPreferences*>(
auth_handler->http_auth_preferences());
if (auth_preferences)
auth_preferences->set_server_whitelist(domains);
auth_preferences->SetServerWhitelist(domains);
}
}
@@ -433,32 +346,37 @@ void DownloadIdCallback(content::DownloadManager* download_manager,
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(),
content::DownloadItem::INTERRUPTED,
content::DownloadDangerType::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
content::DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT, false,
base::Time(), false,
std::vector<content::DownloadItem::ReceivedSlice>());
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 SetDevToolsNetworkEmulationClientIdInIO(
brightray::URLRequestContextGetter* context_getter,
const std::string& client_id) {
if (!context_getter)
return;
auto network_delegate =
static_cast<AtomNetworkDelegate*>(context_getter->network_delegate());
if (network_delegate)
network_delegate->SetDevToolsNetworkEmulationClientId(client_id);
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)
: devtools_network_emulation_client_id_(base::GenerateGUID()),
: network_emulation_token_(base::UnguessableToken::Create()),
browser_context_(browser_context) {
// Observe DownloadManager to get download notifications.
content::BrowserContext::GetDownloadManager(browser_context)->
AddObserver(this);
content::BrowserContext::GetDownloadManager(browser_context)
->AddObserver(this);
new SessionPreferences(browser_context);
@@ -467,39 +385,58 @@ Session::Session(v8::Isolate* isolate, AtomBrowserContext* browser_context)
}
Session::~Session() {
content::BrowserContext::GetDownloadManager(browser_context())->
RemoveObserver(this);
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,
content::DownloadItem* item) {
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() == content::DownloadItem::INTERRUPTED)
if (item->GetState() == download::DownloadItem::INTERRUPTED)
handle->SetSavePath(item->GetTargetFilePath());
bool prevent_default = Emit("will-download", handle, item->GetWebContents());
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, ResolveProxyCallback callback) {
new ResolveProxyHelper(browser_context(), url, callback);
void Session::ResolveProxy(
const GURL& url,
const ResolveProxyHelper::ResolveProxyCallback& callback) {
browser_context_->GetResolveProxyHelper()->ResolveProxy(url, callback);
}
template<Session::CacheAction action>
void Session::GetCacheSize(const net::CompletionCallback& callback) {
content::BrowserContext::GetDefaultStoragePartition(browser_context_.get())
->GetNetworkContext()
->ComputeHttpCacheSize(
base::Time(), base::Time::Max(),
base::BindOnce(
[](const net::CompletionCallback& cb, bool is_upper_bound,
int64_t size_or_error) { cb.Run(size_or_error); },
callback));
}
template <Session::CacheAction action>
void Session::DoCacheAction(const net::CompletionCallback& callback) {
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&DoCacheActionInIO,
make_scoped_refptr(browser_context_->GetRequestContext()),
action,
callback));
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&DoCacheActionInIO,
WrapRefCounted(browser_context_->GetRequestContext()),
action, callback));
}
void Session::ClearStorageData(mate::Arguments* args) {
@@ -509,7 +446,7 @@ void Session::ClearStorageData(mate::Arguments* args) {
args->GetNext(&options);
args->GetNext(&callback);
auto storage_partition =
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.
@@ -518,80 +455,99 @@ void Session::ClearStorageData(mate::Arguments* args) {
}
storage_partition->ClearData(
options.storage_types, options.quota_types, options.origin,
content::StoragePartition::OriginMatcherFunction(),
base::Time(), base::Time::Max(),
base::Bind(&OnClearStorageDataDone, callback));
content::StoragePartition::OriginMatcherFunction(), base::Time(),
base::Time::Max(), base::Bind(&OnClearStorageDataDone, callback));
}
void Session::FlushStorageData() {
auto storage_partition =
auto* storage_partition =
content::BrowserContext::GetStoragePartition(browser_context(), nullptr);
storage_partition->Flush();
}
void Session::SetProxy(const net::ProxyConfig& config,
void Session::SetProxy(const mate::Dictionary& options,
const base::Closure& callback) {
auto getter = browser_context_->GetRequestContext();
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&SetProxyInIO, base::Unretained(getter), config, 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);
browser_context_->prefs()->SetFilePath(prefs::kDownloadDefaultDirectory,
path);
}
void Session::EnableNetworkEmulation(const mate::Dictionary& options) {
std::unique_ptr<brightray::DevToolsNetworkConditions> conditions;
bool offline = false;
double latency = 0.0, download_throughput = 0.0, upload_throughput = 0.0;
if (options.Get("offline", &offline) && offline) {
conditions.reset(new brightray::DevToolsNetworkConditions(offline));
} else {
options.Get("latency", &latency);
options.Get("downloadThroughput", &download_throughput);
options.Get("uploadThroughput", &upload_throughput);
conditions.reset(
new brightray::DevToolsNetworkConditions(false,
latency,
download_throughput,
upload_throughput));
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);
}
browser_context_->network_controller_handle()->SetNetworkState(
devtools_network_emulation_client_id_, std::move(conditions));
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(
&SetDevToolsNetworkEmulationClientIdInIO,
base::RetainedRef(browser_context_->url_request_context_getter()),
devtools_network_emulation_client_id_));
auto* network_context = content::BrowserContext::GetDefaultStoragePartition(
browser_context_.get())
->GetNetworkContext();
network_context->SetNetworkConditions(network_emulation_token_,
std::move(conditions));
}
void Session::DisableNetworkEmulation() {
std::unique_ptr<brightray::DevToolsNetworkConditions> conditions;
browser_context_->network_controller_handle()->SetNetworkState(
devtools_network_emulation_client_id_, std::move(conditions));
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(
&SetDevToolsNetworkEmulationClientIdInIO,
base::RetainedRef(browser_context_->url_request_context_getter()),
std::string()));
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) {
AtomCertVerifier::VerifyProc proc;
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::Bind(&SetCertVerifyProcInIO,
make_scoped_refptr(browser_context_->GetRequestContext()),
proc));
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,
@@ -601,19 +557,32 @@ void Session::SetPermissionRequestHandler(v8::Local<v8::Value> val,
args->ThrowError("Must pass null or function");
return;
}
auto permission_manager = static_cast<AtomPermissionManager*>(
browser_context()->GetPermissionManager());
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::Bind(&ClearHostResolverCacheInIO,
make_scoped_refptr(browser_context_->GetRequestContext()),
callback));
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&ClearHostResolverCacheInIO,
WrapRefCounted(browser_context_->GetRequestContext()),
callback));
}
void Session::ClearAuthCache(mate::Arguments* args) {
@@ -627,16 +596,17 @@ void Session::ClearAuthCache(mate::Arguments* args) {
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(&ClearAuthCacheInIO,
make_scoped_refptr(browser_context_->GetRequestContext()),
options, callback));
base::BindOnce(&ClearAuthCacheInIO,
WrapRefCounted(browser_context_->GetRequestContext()),
options, callback));
}
void Session::AllowNTLMCredentialsForDomains(const std::string& domains) {
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&AllowNTLMCredentialsForDomainsInIO,
make_scoped_refptr(browser_context_->GetRequestContext()),
domains));
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(&AllowNTLMCredentialsForDomainsInIO,
WrapRefCounted(browser_context_->GetRequestContext()),
domains));
}
void Session::SetUserAgent(const std::string& user_agent,
@@ -646,30 +616,27 @@ void Session::SetUserAgent(const std::string& user_agent,
std::string accept_lang = g_browser_process->GetApplicationLocale();
args->GetNext(&accept_lang);
scoped_refptr<brightray::URLRequestContextGetter> getter(
scoped_refptr<net::URLRequestContextGetter> getter(
browser_context_->GetRequestContext());
getter->GetNetworkTaskRunner()->PostTask(
FROM_HERE,
base::Bind(&SetUserAgentInIO, getter, accept_lang, user_agent));
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) {
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::Bind(&AtomBlobReader::StartReading,
base::Unretained(blob_reader),
uuid,
callback));
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) {
@@ -696,7 +663,7 @@ void Session::CreateInterruptedDownload(const mate::Dictionary& options) {
isolate(), "Must pass an offset value less than length.")));
return;
}
auto download_manager =
auto* download_manager =
content::BrowserContext::GetDownloadManager(browser_context());
download_manager->GetDelegate()->GetNextId(base::Bind(
&DownloadIdCallback, download_manager, path, url_chain, mime_type, offset,
@@ -740,15 +707,23 @@ v8::Local<v8::Value> Session::WebRequest(v8::Isolate* isolate) {
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);
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));
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.
@@ -760,7 +735,8 @@ mate::Handle<Session> Session::CreateFrom(
// static
mate::Handle<Session> Session::FromPartition(
v8::Isolate* isolate, const std::string& partition,
v8::Isolate* isolate,
const std::string& partition,
const base::DictionaryValue& options) {
scoped_refptr<AtomBrowserContext> browser_context;
if (partition.empty()) {
@@ -782,7 +758,7 @@ void Session::BuildPrototype(v8::Isolate* isolate,
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("resolveProxy", &Session::ResolveProxy)
.SetMethod("getCacheSize", &Session::DoCacheAction<CacheAction::STATS>)
.SetMethod("getCacheSize", &Session::GetCacheSize)
.SetMethod("clearCache", &Session::DoCacheAction<CacheAction::CLEAR>)
.SetMethod("clearStorageData", &Session::ClearStorageData)
.SetMethod("flushStorageData", &Session::FlushStorageData)
@@ -790,9 +766,11 @@ void Session::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setDownloadPath", &Session::SetDownloadPath)
.SetMethod("enableNetworkEmulation", &Session::EnableNetworkEmulation)
.SetMethod("disableNetworkEmulation", &Session::DisableNetworkEmulation)
.SetMethod("_setCertificateVerifyProc", &Session::SetCertVerifyProc)
.SetMethod("setCertificateVerifyProc", &Session::SetCertVerifyProc)
.SetMethod("setPermissionRequestHandler",
&Session::SetPermissionRequestHandler)
.SetMethod("setPermissionCheckHandler",
&Session::SetPermissionCheckHandler)
.SetMethod("clearHostResolverCache", &Session::ClearHostResolverCache)
.SetMethod("clearAuthCache", &Session::ClearAuthCache)
.SetMethod("allowNTLMCredentialsForDomains",
@@ -805,6 +783,7 @@ void Session::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setPreloads", &Session::SetPreloads)
.SetMethod("getPreloads", &Session::GetPreloads)
.SetProperty("cookies", &Session::Cookies)
.SetProperty("netLog", &Session::NetLog)
.SetProperty("protocol", &Session::Protocol)
.SetProperty("webRequest", &Session::WebRequest);
}
@@ -817,8 +796,8 @@ namespace {
using atom::api::Session;
v8::Local<v8::Value> FromPartition(
const std::string& partition, mate::Arguments* args) {
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());
@@ -828,8 +807,10 @@ v8::Local<v8::Value> FromPartition(
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) {
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());
@@ -839,4 +820,4 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
} // namespace
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_session, Initialize)
NODE_BUILTIN_MODULE_CONTEXT_AWARE(atom_browser_session, Initialize)

View File

@@ -10,6 +10,7 @@
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/atom_blob_reader.h"
#include "atom/browser/net/resolve_proxy_helper.h"
#include "base/values.h"
#include "content/public/browser/download_manager.h"
#include "native_mate/handle.h"
@@ -24,7 +25,7 @@ class FilePath;
namespace mate {
class Arguments;
class Dictionary;
}
} // namespace mate
namespace net {
class ProxyConfig;
@@ -36,23 +37,22 @@ class AtomBrowserContext;
namespace api {
class Session: public mate::TrackableObject<Session>,
public content::DownloadManager::Observer {
class Session : public mate::TrackableObject<Session>,
public content::DownloadManager::Observer {
public:
using ResolveProxyCallback = base::Callback<void(std::string)>;
enum class CacheAction {
CLEAR,
STATS,
};
// Gets or creates Session from the |browser_context|.
static mate::Handle<Session> CreateFrom(
v8::Isolate* isolate, AtomBrowserContext* browser_context);
static mate::Handle<Session> CreateFrom(v8::Isolate* isolate,
AtomBrowserContext* browser_context);
// Gets the Session of |partition|.
static mate::Handle<Session> FromPartition(
v8::Isolate* isolate, const std::string& partition,
v8::Isolate* isolate,
const std::string& partition,
const base::DictionaryValue& options = base::DictionaryValue());
AtomBrowserContext* browser_context() const { return browser_context_.get(); }
@@ -62,18 +62,22 @@ class Session: public mate::TrackableObject<Session>,
v8::Local<v8::FunctionTemplate> prototype);
// Methods.
void ResolveProxy(const GURL& url, ResolveProxyCallback callback);
template<CacheAction action>
void ResolveProxy(const GURL& url,
const ResolveProxyHelper::ResolveProxyCallback& callback);
template <CacheAction action>
void DoCacheAction(const net::CompletionCallback& callback);
void GetCacheSize(const net::CompletionCallback& callback);
void ClearStorageData(mate::Arguments* args);
void FlushStorageData();
void SetProxy(const net::ProxyConfig& config, const base::Closure& callback);
void SetProxy(const mate::Dictionary& options, const base::Closure& callback);
void SetDownloadPath(const base::FilePath& path);
void EnableNetworkEmulation(const mate::Dictionary& options);
void DisableNetworkEmulation();
void SetCertVerifyProc(v8::Local<v8::Value> proc, mate::Arguments* args);
void SetPermissionRequestHandler(v8::Local<v8::Value> val,
mate::Arguments* args);
void SetPermissionCheckHandler(v8::Local<v8::Value> val,
mate::Arguments* args);
void ClearHostResolverCache(mate::Arguments* args);
void ClearAuthCache(mate::Arguments* args);
void AllowNTLMCredentialsForDomains(const std::string& domains);
@@ -87,23 +91,25 @@ class Session: public mate::TrackableObject<Session>,
v8::Local<v8::Value> Cookies(v8::Isolate* isolate);
v8::Local<v8::Value> Protocol(v8::Isolate* isolate);
v8::Local<v8::Value> WebRequest(v8::Isolate* isolate);
v8::Local<v8::Value> NetLog(v8::Isolate* isolate);
protected:
Session(v8::Isolate* isolate, AtomBrowserContext* browser_context);
~Session();
~Session() override;
// content::DownloadManager::Observer:
void OnDownloadCreated(content::DownloadManager* manager,
content::DownloadItem* item) override;
download::DownloadItem* item) override;
private:
// Cached object.
v8::Global<v8::Value> cookies_;
v8::Global<v8::Value> protocol_;
v8::Global<v8::Value> web_request_;
v8::Global<v8::Value> net_log_;
// The X-DevTools-Emulate-Network-Conditions-Client-Id.
std::string devtools_network_emulation_client_id_;
// The client id to enable the network throttler.
base::UnguessableToken network_emulation_token_;
scoped_refptr<AtomBrowserContext> browser_context_;

Some files were not shown because too many files have changed in this diff Show More