Compare commits

..

755 Commits

Author SHA1 Message Date
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
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
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
894 changed files with 104844 additions and 19227 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

View File

@@ -4,4 +4,4 @@
APPVEYOR_TOKEN=
CIRCLE_TOKEN=
ELECTRON_GITHUB_TOKEN=
VSTS_TOKEN=
VSTS_TOKEN=

9
.eslintrc Normal file
View File

@@ -0,0 +1,9 @@
{
"extends": "standard",
"env": {
"browser": true
},
"rules": {
"no-var": "error"
}
}

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

View File

@@ -7,11 +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 -->
* Last known working Electron version:
* Output of `node_modules/.bin/electron --version` on last known working Electron version (if applicable):
### Expected behavior

View File

@@ -1,32 +1,32 @@
---
name: Bug report
about: Create a report to help us improve Electron
---
* Electron Version:
* Operating System (Platform and Version):
* Last known working Electron version:
**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.
---
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

@@ -1,17 +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.
---
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,3 +1,4 @@
##### Description of Change
<!--
Thank you for your Pull Request. Please provide a description above and review
the requirements below.
@@ -12,4 +13,10 @@ Contributors guide: https://github.com/electron/electron/blob/master/CONTRIBUTIN
- [ ] `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
- [ ] commit messages or PR title follow semantic [commit guidelines](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines)
- [ ] 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-->

2
.github/config.yml vendored
View File

@@ -12,7 +12,7 @@ newIssueWelcomeComment: |
newPRWelcomeComment: |
💖 Thanks for opening this pull request! 💖
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, OR prefix at least one of your commit messages.
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:

13
.gitignore vendored
View File

@@ -41,6 +41,7 @@
/vendor/python_26/
/vendor/native_mksnapshot
/vendor/LICENSES.chromium.html
/vendor/pyyaml
node_modules/
SHASUMS256.txt
**/yarn.lock
@@ -50,3 +51,15 @@ compile_commands.json
# 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

21
.gitmodules vendored
View File

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

19
.vsts/lint.yml Normal file
View File

@@ -0,0 +1,19 @@
# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml
pool:
vmImage: 'Ubuntu 16.04'
steps:
- bash: |
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git "${AGENT_BUILDDIRECTORY}/third_party/depot_tools"
echo "##vso[task.setvariable variable=PATH]$PATH:${AGENT_BUILDDIRECTORY}/depot_tools"
name: Setup_depot_tools
- bash: |
export PATH="$PATH:${AGENT_BUILDDIRECTORY}/third_party/depot_tools"
echo "##vso[task.setvariable variable=PATH]$PATH"
npm install
npm run lint

839
BUILD.gn

File diff suppressed because it is too large Load Diff

84
DEPS
View File

@@ -1,43 +1,54 @@
vars = {
'chromium_version':
'63.0.3239.150',
'libchromiumcontent_revision':
'61d71f3f150c3ff5025560dee254a53313bfbaf6',
'67.0.3396.99',
'node_version':
'v9.7.0-33-g538a5023af',
'native_mate_revision':
'4cd7d113915de0cc08e9a218be35bff9c7361906',
'7295c611497c5e70d292e96e98f1180822b907a6',
'pyyaml_version':
'3.12',
'chromium_git':
'https://chromium.googlesource.com',
'electron_git':
'https://github.com/electron',
'yaml_git':
'https://github.com/yaml',
'checkout_nacl':
False,
'checkout_libaom':
True,
'checkout_oculus_sdk':
False,
}
deps = {
'src':
(Var("chromium_git")) + '/chromium/src.git@' + (Var("chromium_version")),
'src/libchromiumcontent':
(Var("electron_git")) + '/libchromiumcontent.git@' + (Var("libchromiumcontent_revision")),
'src/third_party/electron_node':
(Var("electron_git")) + '/node.git@' + (Var("node_version")),
'src/third_party/native_mate':
(Var("electron_git")) + '/native-mate.git@' + (Var("native_mate_revision")),
'src/electron/vendor/pyyaml':
(Var("yaml_git")) + '/pyyaml.git@' + (Var("pyyaml_version")),
}
hooks = [
{
'action': [
'src/libchromiumcontent/script/apply-patches'
'python',
'src/electron/script/apply-patches',
'--project-root=.',
'--commit'
],
'pattern':
'src/libchromiumcontent',
'src/electron',
'name':
'patch_chromium'
},
{
'action': [
'python',
'src/electron/script/update-external-binaries.py'
],
'pattern':
@@ -47,27 +58,50 @@ hooks = [
},
{
'action': [
'bash',
'python',
'-c',
# NOTE(nornagon): this ridiculous {{}} stuff is because these strings get
# variable-substituted twice by gclient.
'echo -e "#\\n{{{{\'variables\':{{{{}}}}}}}}" > src/third_party/electron_node/config.gypi',
],
'pattern': 'src/third_party/electron_node',
'name': 'touch_node_config_gypi'
},
{
'action': [
'bash',
'-c',
'cd src/electron; npm install',
'import os; os.chdir("src"); os.chdir("electron"); os.system("npm install")',
],
'pattern': 'src/electron/package.json',
'name': 'electron_npm_deps'
},
{
'action': [
'python',
'-c',
'import os; os.chdir("src"); os.chdir("electron"); os.system("git submodule update --init --recursive");',
],
'pattern': 'src/electron',
'name': 'electron_submodules'
},
{
'action': [
'python',
'-c',
'import os; os.chdir("src"); os.chdir("electron"); os.chdir("vendor"); os.chdir("boto"); os.system("python setup.py build");',
],
'pattern': 'src/electron',
'name': 'setup_boto',
},
{
'action': [
'python',
'-c',
'import os; os.chdir("src"); os.chdir("electron"); os.chdir("vendor"); os.chdir("requests"); os.system("python setup.py build");',
],
'pattern': 'src/electron',
'name': 'setup_requests',
}
]
recursedeps = [
'src',
'src/libchromiumcontent',
]
gclient_gn_args = [
'checkout_libaom',
'checkout_nacl',
'checkout_oculus_sdk'
]
gclient_gn_args_file = 'src/build/config/gclient_args.gni'

View File

@@ -1,24 +1,44 @@
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_10.x | bash -
RUN 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-dbusmock \
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
# Install libnotify
RUN apt-get install -y libnotify-bin
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

View File

@@ -1,23 +0,0 @@
FROM electronbuilds/libchromiumcontent:0.0.4
USER root
# Install node.js
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN 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
# Install libnotify
RUN apt-get install -y libnotify-bin
# 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

View File

@@ -39,9 +39,14 @@ versioning. As of version 2.0.0, Electron follows semver, so you don't need `--s
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:
@@ -55,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

1
VERSION Normal file
View File

@@ -0,0 +1 @@
4.0.0-nightly.20180929

View File

@@ -1,73 +1,72 @@
build_cloud: electron-16
image: electron-16-vs2017-15.4.5
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: >-
echo "Build worker image $env:APPVEYOR_BUILD_WORKER_IMAGE"
- ps: >-
if(($env:APPVEYOR_PULL_REQUEST_HEAD_REPO_NAME -split "/")[0] -eq ($env:APPVEYOR_REPO_NAME -split "/")[0]) {
Write-warning "Skipping PR build for branch"; Exit-AppveyorBuild
}
- 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"
- >-
gclient config
--name "src\electron"
--unmanaged
"https://github.com/electron/electron"
- gclient sync --with_branch_heads --with_tags
- cd src
- gn gen out/Default "--args=import(\"//electron/build/args/%GN_CONFIG%.gn\") %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
&"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"
if($env:SKIP_GYP_BUILD -eq "true") {
Write-warning "Skipping debug build for older branch"; Exit-AppveyorBuild
} elseif(($env:APPVEYOR_PULL_REQUEST_HEAD_REPO_NAME -split "/")[0] -eq ($env:APPVEYOR_REPO_NAME -split "/")[0]) {
Write-warning "Skipping PR build for branch"; Exit-AppveyorBuild
} else {
Add-Path "$env:ProgramFiles (x86)\Windows Kits\10\Debuggers\x64"
$env:path = "$env:ProgramFiles (x86)\Windows Kits\10\Debuggers\x64;$env:path"
if($env:APPVEYOR_SCHEDULED_BUILD -eq 'True') {
$env:RUN_RELEASE_BUILD = "1"
- appveyor PushArtifact out/ffmpeg/ffmpeg.zip
- ps: >-
if ($env:GN_CONFIG -eq 'release') {
ninja -C out/Default third_party/breakpad:dump_syms
}
$Message = (git log --format=%B -n 1 HEAD) | Out-String
if ((Test-Path Env:\RUN_RELEASE_BUILD)) {
$env:ELECTRON_RELEASE = '1'
Write-Output "release build triggered from api"
- if "%GN_CONFIG%"=="release" ( python electron\script\dump-symbols.py -d %cd%\out\Default\electron.breakpad.syms -v)
- ps: >-
if ($env:GN_CONFIG -eq 'release') {
python electron\script\zip-symbols.py
appveyor PushArtifact out/Default/symbols.zip
}
if ((Test-Path Env:\ELECTRON_RELEASE)) {
Write-Output "Running release build"
python script\bootstrap.py --target_arch=$env:TARGET_ARCH
python script\build.py -c R
python script\create-dist.py
} else {
Write-Output "Running debug build"
python script\bootstrap.py --target_arch=$env:TARGET_ARCH --dev
python script\build.py -c D
}
if ($? -ne 'True') {
throw "Build failed with exit code $?"
} else {
"Build succeeded."
}
Push-AppveyorArtifact out
}
test_script:
- ps: >-
if (Test-Path Env:\ELECTRON_RELEASE) {
Write-Output "Skipping tests for release build"
} else {
Write-Output "Running tests for debug build"
python script\test.py --ci --rebuild_native_modules
if ($LASTEXITCODE -ne '0') {
throw "Tests failed with exit code $LASTEXITCODE"
- if "%GN_CONFIG%"=="testing" ( echo Verifying non proprietary ffmpeg & python electron\script\verify-ffmpeg.py --build-dir out\Default --source-root %cd% --ffmpeg-path out\ffmpeg )
- ps: >-
if ($env:GN_CONFIG -eq 'testing') {
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 {
Write-Output "Tests succeeded."
echo "Skipping tests for $env:GN_CONFIG build"
}
python script\verify-ffmpeg.py
if ($LASTEXITCODE -ne '0') {
throw "Verify ffmpeg failed with exit code $LASTEXITCODE"
} else {
"Verify ffmpeg succeeded."
}
}
artifacts:
- path: test-results.xml
name: test-results.xml
- cd electron
- if "%GN_CONFIG%"=="testing" ( echo Running test suite & npm run test -- --ci )
- cd ..
deploy_script:
- ps: >-
if (Test-Path Env:\ELECTRON_RELEASE) {
if (Test-Path Env:\RUN_RELEASE_BUILD) {
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
- 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
}
}
}

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

@@ -18,16 +18,14 @@
#include "content/public/common/content_constants.h"
#include "content/public/common/pepper_plugin_info.h"
#include "content/public/common/user_agent.h"
#include "media/media_features.h"
#include "ppapi/shared_impl/ppapi_permissions.h"
#include "third_party/widevine/cdm/widevine_cdm_common.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)
#include "base/native_library.h"
#include "base/strings/stringprintf.h"
#include "chrome/common/widevine_cdm_constants.h"
#include "content/public/common/cdm_info.h"
#include "media/base/video_codecs.h"
#endif // defined(WIDEVINE_CDM_AVAILABLE)
@@ -42,63 +40,38 @@ namespace atom {
namespace {
#if defined(WIDEVINE_CDM_AVAILABLE)
bool IsWidevineAvailable(base::FilePath* adapter_path,
base::FilePath* cdm_path,
bool IsWidevineAvailable(base::FilePath* cdm_path,
std::vector<media::VideoCodec>* codecs_supported) {
static enum {
NOT_CHECKED,
FOUND,
NOT_FOUND,
} widevine_cdm_file_check = NOT_CHECKED;
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
*adapter_path = command_line->GetSwitchValuePath(switches::kWidevineCdmPath);
if (!adapter_path->empty()) {
*cdm_path = adapter_path->DirName().AppendASCII(
base::GetNativeLibraryName(kWidevineCdmLibraryName));
if (widevine_cdm_file_check == NOT_CHECKED) {
widevine_cdm_file_check =
(base::PathExists(*adapter_path) && base::PathExists(*cdm_path))
? FOUND
: NOT_FOUND;
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 (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);
codecs_supported->push_back(media::VideoCodec::kCodecH264);
#endif // BUILDFLAG(USE_PROPRIETARY_CODECS)
return true;
}
return true;
}
return false;
}
void AddWidevineAdapterFromCommandLine(
base::CommandLine* command_line,
std::vector<content::PepperPluginInfo>* plugins) {
base::FilePath adapter_path;
base::FilePath cdm_path;
std::vector<media::VideoCodec> video_codecs_supported;
if (IsWidevineAvailable(&adapter_path, &cdm_path, &video_codecs_supported)) {
auto cdm_version_string =
command_line->GetSwitchValueASCII(switches::kWidevineCdmVersion);
content::PepperPluginInfo info;
info.is_out_of_process = true;
info.path = adapter_path;
info.name = kWidevineCdmDisplayName;
info.description =
base::StringPrintf("%s (version: %s)", kWidevineCdmDescription,
cdm_version_string.c_str());
info.version = cdm_version_string;
info.permissions = kWidevineCdmPluginPermissions;
content::WebPluginMimeType mime_type(kWidevineCdmPluginMimeType,
kWidevineCdmPluginExtension,
kWidevineCdmPluginMimeTypeDescription);
info.mime_types.push_back(mime_type);
plugins->push_back(info);
}
}
#endif // defined(WIDEVINE_CDM_AVAILABLE)
#if defined(ENABLE_PEPPER_FLASH)
@@ -228,9 +201,6 @@ void AtomContentClient::AddPepperPlugins(
#if defined(ENABLE_PEPPER_FLASH)
AddPepperFlashFromCommandLine(command_line, plugins);
#endif // defined(ENABLE_PEPPER_FLASH)
#if defined(WIDEVINE_CDM_AVAILABLE)
AddWidevineAdapterFromCommandLine(command_line, plugins);
#endif // defined(WIDEVINE_CDM_AVAILABLE)
ComputeBuiltInPlugins(plugins);
}
@@ -239,12 +209,10 @@ void AtomContentClient::AddContentDecryptionModules(
std::vector<media::CdmHostFilePath>* cdm_host_file_paths) {
if (cdms) {
#if defined(WIDEVINE_CDM_AVAILABLE)
base::FilePath adapter_path;
base::FilePath cdm_path;
std::vector<media::VideoCodec> video_codecs_supported;
bool supports_persistent_license = false;
if (IsWidevineAvailable(&adapter_path, &cdm_path,
&video_codecs_supported)) {
if (IsWidevineAvailable(&cdm_path, &video_codecs_supported)) {
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
auto cdm_version_string =
command_line->GetSwitchValueASCII(switches::kWidevineCdmVersion);

View File

@@ -71,7 +71,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) {

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,7 @@
#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"
@@ -131,8 +132,6 @@ void AtomMainDelegate::PreSandboxStartup() {
brightray::MainDelegate::PreSandboxStartup();
auto* command_line = base::CommandLine::ForCurrentProcess();
std::string process_type =
command_line->GetSwitchValueASCII(::switches::kProcessType);
// Only append arguments for browser process.
if (!IsBrowserProcess(command_line))

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"

View File

@@ -6,6 +6,9 @@
#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"
@@ -65,7 +68,7 @@ int NodeMain(int argc, char* 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)

View File

@@ -10,6 +10,7 @@
#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"
@@ -548,6 +549,7 @@ 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();
auto process_metric = std::make_unique<atom::ProcessMetric>(
content::PROCESS_TYPE_BROWSER, pid,
@@ -990,7 +992,8 @@ 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,
@@ -1111,26 +1114,11 @@ 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() /
@@ -1162,6 +1150,25 @@ v8::Local<v8::Value> App::GetGPUFeatureStatus(v8::Isolate* isolate) {
return mate::ConvertToV8(isolate, status ? *status : temp);
}
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") ||
!gpu_data_manager->GpuAccessAllowed(nullptr)) {
promise->Reject("Error fetching GPU Info");
return promise->GetHandle();
}
auto* const info_mgr = GPUInfoManager::GetInstance();
if (info_type == "complete") {
info_mgr->FetchCompleteInfo(promise);
} else /* (info_type == "basic") */ {
info_mgr->FetchBasicInfo(promise);
}
return promise->GetHandle();
}
void App::EnableMixedSandbox(mate::Arguments* args) {
if (Browser::Get()->is_ready()) {
args->ThrowError(
@@ -1219,6 +1226,7 @@ void App::BuildPrototype(v8::Isolate* isolate,
.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",
@@ -1283,6 +1291,7 @@ void App::BuildPrototype(v8::Isolate* isolate,
.SetMethod("getFileIcon", &App::GetFileIcon)
.SetMethod("getAppMetrics", &App::GetAppMetrics)
.SetMethod("getGPUFeatureStatus", &App::GetGPUFeatureStatus)
.SetMethod("getGPUInfo", &App::GetGPUInfo)
// TODO(juturu): Remove in 2.0, deprecate before then with warnings
#if defined(OS_MACOSX)
.SetMethod("moveToApplicationsFolder", &App::MoveToApplicationsFolder)

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"
@@ -197,6 +199,8 @@ class App : public AtomBrowserClient::Delegate,
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 EnableMixedSandbox(mate::Arguments* args);
#if defined(OS_MACOSX)

View File

@@ -4,6 +4,8 @@
#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"
@@ -55,7 +57,7 @@ BrowserWindow::BrowserWindow(v8::Isolate* isolate,
base::DictionaryValue web_preferences_dict;
if (mate::ConvertFromV8(isolate, web_preferences.GetHandle(),
&web_preferences_dict)) {
existing_preferences->dict()->Clear();
existing_preferences->Clear();
existing_preferences->Merge(web_preferences_dict);
}
} else {

View File

@@ -5,6 +5,7 @@
#ifndef ATOM_BROWSER_API_ATOM_API_BROWSER_WINDOW_H_
#define ATOM_BROWSER_API_ATOM_API_BROWSER_WINDOW_H_
#include <memory>
#include <string>
#include <vector>

View File

@@ -4,6 +4,9 @@
#include "atom/browser/api/atom_api_cookies.h"
#include <memory>
#include <utility>
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/request_context_delegate.h"
#include "atom/common/native_mate_converters/callback.h"
@@ -264,12 +267,13 @@ Cookies::~Cookies() {}
void Cookies::Get(const base::DictionaryValue& filter,
const GetCallback& callback) {
std::unique_ptr<base::DictionaryValue> copied(filter.CreateDeepCopy());
auto copy = base::DictionaryValue::From(
base::Value::ToUniquePtrValue(filter.Clone()));
auto* getter = browser_context_->GetRequestContext();
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(GetCookiesOnIO, base::RetainedRef(getter),
std::move(copied), callback));
base::BindOnce(GetCookiesOnIO, base::RetainedRef(getter), std::move(copy),
callback));
}
void Cookies::Remove(const GURL& url,
@@ -284,12 +288,13 @@ void Cookies::Remove(const GURL& url,
void Cookies::Set(const base::DictionaryValue& details,
const SetCallback& callback) {
std::unique_ptr<base::DictionaryValue> copied(details.CreateDeepCopy());
auto copy = base::DictionaryValue::From(
base::Value::ToUniquePtrValue(details.Clone()));
auto* getter = browser_context_->GetRequestContext();
content::BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::BindOnce(SetCookieOnIO, base::RetainedRef(getter),
std::move(copied), callback));
base::BindOnce(SetCookieOnIO, base::RetainedRef(getter), std::move(copy),
callback));
}
void Cookies::FlushStore(const base::Closure& callback) {

View File

@@ -5,6 +5,7 @@
#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"

View File

@@ -4,7 +4,9 @@
#include "atom/browser/api/atom_api_debugger.h"
#include <memory>
#include <string>
#include <utility>
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/value_converter.h"
@@ -65,14 +67,17 @@ 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);
}
}
@@ -140,7 +145,8 @@ 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);

View File

@@ -4,6 +4,8 @@
#include "atom/browser/api/atom_api_desktop_capturer.h"
#include <memory>
#include <utility>
#include <vector>
using base::PlatformThreadRef;
@@ -63,7 +65,7 @@ void StartHandlingTask(bool capture_window,
atom::api::DesktopCapturer* cap) {
#if defined(OS_WIN)
if (content::desktop_capture::CreateDesktopCaptureOptions()
.allow_directx_capturer()) {
.allow_directx_capturer()) {
// DxgiDuplicatorController should be alive in this scope according to
// screen_capturer_win.cc.
auto duplicator = webrtc::DxgiDuplicatorController::Instance();

View File

@@ -5,6 +5,7 @@
#ifndef ATOM_BROWSER_API_ATOM_API_DESKTOP_CAPTURER_H_
#define ATOM_BROWSER_API_ATOM_API_DESKTOP_CAPTURER_H_
#include <memory>
#include <string>
#include "atom/browser/api/event_emitter.h"

View File

@@ -4,6 +4,8 @@
#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 "ui/display/screen.h"

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"

View File

@@ -3,6 +3,9 @@
// found in the LICENSE file.
#include "atom/browser/api/atom_api_net_log.h"
#include <utility>
#include "atom/browser/atom_browser_client.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/file_path_converter.h"

View File

@@ -8,7 +8,7 @@
#import <Cocoa/Cocoa.h>
@interface MacLockMonitor : NSObject {
@private
@private
std::vector<atom::api::PowerMonitor*> emitters;
}
@@ -21,15 +21,15 @@
- (id)init {
if ((self = [super init])) {
NSDistributedNotificationCenter* distCenter =
[NSDistributedNotificationCenter defaultCenter];
[NSDistributedNotificationCenter defaultCenter];
[distCenter addObserver:self
selector:@selector(onScreenLocked:)
name:@"com.apple.screenIsLocked"
object:nil];
selector:@selector(onScreenLocked:)
name:@"com.apple.screenIsLocked"
object:nil];
[distCenter addObserver:self
selector:@selector(onScreenUnlocked:)
name:@"com.apple.screenIsUnlocked"
object:nil];
selector:@selector(onScreenUnlocked:)
name:@"com.apple.screenIsUnlocked"
object:nil];
}
return self;
}

View File

@@ -4,17 +4,18 @@
#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"
#include "Wtsapi32.h"
namespace atom {
namespace {
const wchar_t kPowerMonitorWindowClass[] =
L"Electron_PowerMonitorHostWindow";
const wchar_t kPowerMonitorWindowClass[] = L"Electron_PowerMonitorHostWindow";
} // namespace
@@ -24,8 +25,8 @@ 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);
&base::win::WrappedWindowProc<PowerMonitor::WndProcStatic>, 0, 0, 0, NULL,
NULL, NULL, NULL, NULL, &window_class);
instance_ = window_class.hInstance;
atom_ = RegisterClassEx(&window_class);
@@ -41,11 +42,11 @@ void PowerMonitor::InitPlatformSpecificMonitors() {
}
LRESULT CALLBACK PowerMonitor::WndProcStatic(HWND hwnd,
UINT message,
WPARAM wparam,
LPARAM lparam) {
PowerMonitor* msg_wnd = reinterpret_cast<PowerMonitor*>(
GetWindowLongPtr(hwnd, GWLP_USERDATA));
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
@@ -53,9 +54,9 @@ LRESULT CALLBACK PowerMonitor::WndProcStatic(HWND hwnd,
}
LRESULT CALLBACK PowerMonitor::WndProc(HWND hwnd,
UINT message,
WPARAM wparam,
LPARAM lparam) {
UINT message,
WPARAM wparam,
LPARAM lparam) {
if (message == WM_WTSSESSION_CHANGE) {
if (wparam == WTS_SESSION_LOCK) {
Emit("lock-screen");

View File

@@ -61,10 +61,8 @@ void PowerSaveBlocker::UpdatePowerSaveBlocker() {
device::mojom::WakeLockType new_blocker_type =
device::mojom::WakeLockType::kPreventAppSuspension;
for (const auto& element : power_save_blocker_types_) {
if (element.second ==
device::mojom::WakeLockType::kPreventDisplaySleep) {
new_blocker_type =
device::mojom::WakeLockType::kPreventDisplaySleep;
if (element.second == device::mojom::WakeLockType::kPreventDisplaySleep) {
new_blocker_type = device::mojom::WakeLockType::kPreventDisplaySleep;
break;
}
}

View File

@@ -50,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());
}

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"

View File

@@ -5,7 +5,9 @@
#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"
@@ -47,7 +49,9 @@
#include "net/http/http_auth_handler_factory.h"
#include "net/http/http_auth_preferences.h"
#include "net/proxy_resolution/proxy_config_service_fixed.h"
#include "net/proxy_resolution/proxy_service.h"
#include "net/proxy_resolution/proxy_config_with_annotation.h"
#include "net/proxy_resolution/proxy_resolution_service.h"
#include "net/traffic_annotation/network_traffic_annotation.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"
@@ -349,7 +353,8 @@ void SetProxyInIO(scoped_refptr<net::URLRequestContextGetter> getter,
auto* proxy_service =
getter->GetURLRequestContext()->proxy_resolution_service();
proxy_service->ResetConfigService(
base::WrapUnique(new net::ProxyConfigServiceFixed(config)));
base::WrapUnique(new net::ProxyConfigServiceFixed(
net::ProxyConfigWithAnnotation(config, NO_TRAFFIC_ANNOTATION_YET))));
// Refetches and applies the new pac script if provided.
proxy_service->ForceReloadProxyConfig();
RunCallbackInUI(callback);
@@ -627,6 +632,18 @@ void Session::SetPermissionRequestHandler(v8::Local<v8::Value> val,
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()->GetPermissionManager());
permission_manager->SetPermissionCheckHandler(handler);
}
void Session::ClearHostResolverCache(mate::Arguments* args) {
base::Closure callback;
args->GetNext(&callback);
@@ -814,6 +831,8 @@ void Session::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setCertificateVerifyProc", &Session::SetCertVerifyProc)
.SetMethod("setPermissionRequestHandler",
&Session::SetPermissionRequestHandler)
.SetMethod("setPermissionCheckHandler",
&Session::SetPermissionCheckHandler)
.SetMethod("clearHostResolverCache", &Session::ClearHostResolverCache)
.SetMethod("clearAuthCache", &Session::ClearAuthCache)
.SetMethod("allowNTLMCredentialsForDomains",

View File

@@ -75,6 +75,8 @@ class Session : public mate::TrackableObject<Session>,
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);

View File

@@ -77,6 +77,12 @@ void SystemPreferences::BuildPrototype(
.SetMethod("removeUserDefault", &SystemPreferences::RemoveUserDefault)
.SetMethod("isSwipeTrackingFromScrollEventsEnabled",
&SystemPreferences::IsSwipeTrackingFromScrollEventsEnabled)
.SetMethod("getEffectiveAppearance",
&SystemPreferences::GetEffectiveAppearance)
.SetMethod("getAppLevelAppearance",
&SystemPreferences::GetAppLevelAppearance)
.SetMethod("setAppLevelAppearance",
&SystemPreferences::SetAppLevelAppearance)
#endif
.SetMethod("isInvertedColorScheme",
&SystemPreferences::IsInvertedColorScheme)

View File

@@ -5,6 +5,7 @@
#ifndef ATOM_BROWSER_API_ATOM_API_SYSTEM_PREFERENCES_H_
#define ATOM_BROWSER_API_ATOM_API_SYSTEM_PREFERENCES_H_
#include <memory>
#include <string>
#include "atom/browser/api/event_emitter.h"
@@ -50,11 +51,6 @@ class SystemPreferences : public mate::EventEmitter<SystemPreferences>
#if defined(OS_WIN)
bool IsAeroGlassEnabled();
typedef HRESULT(STDAPICALLTYPE* DwmGetColorizationColor)(DWORD*, BOOL*);
DwmGetColorizationColor dwmGetColorizationColor =
(DwmGetColorizationColor)GetProcAddress(LoadLibraryW(L"dwmapi.dll"),
"DwmGetColorizationColor");
std::string GetAccentColor();
std::string GetColor(const std::string& color, mate::Arguments* args);
@@ -93,6 +89,12 @@ class SystemPreferences : public mate::EventEmitter<SystemPreferences>
mate::Arguments* args);
void RemoveUserDefault(const std::string& name);
bool IsSwipeTrackingFromScrollEventsEnabled();
// TODO(MarshallOfSound): Write tests for these methods once we
// are running tests on a Mojave machine
v8::Local<v8::Value> GetEffectiveAppearance(v8::Isolate* isolate);
v8::Local<v8::Value> GetAppLevelAppearance(v8::Isolate* isolate);
void SetAppLevelAppearance(mate::Arguments* args);
#endif
bool IsDarkMode();
bool IsInvertedColorScheme();

View File

@@ -8,13 +8,58 @@
#import <Cocoa/Cocoa.h>
#include "atom/browser/mac/atom_application.h"
#include "atom/browser/mac/dict_util.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "base/strings/sys_string_conversions.h"
#include "base/values.h"
#include "native_mate/object_template_builder.h"
#include "net/base/mac/url_conversions.h"
namespace mate {
template <>
struct Converter<NSAppearance*> {
static bool FromV8(v8::Isolate* isolate,
v8::Local<v8::Value> val,
NSAppearance** out) {
if (val->IsNull()) {
*out = nil;
return true;
}
std::string name;
if (!mate::ConvertFromV8(isolate, val, &name)) {
return false;
}
if (name == "light") {
*out = [NSAppearance appearanceNamed:NSAppearanceNameAqua];
return true;
} else if (name == "dark") {
*out = [NSAppearance appearanceNamed:NSAppearanceNameDarkAqua];
return true;
}
return false;
}
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, NSAppearance* val) {
if (val == nil) {
return v8::Null(isolate);
}
if (val.name == NSAppearanceNameAqua) {
return mate::ConvertToV8(isolate, "light");
}
if (val.name == NSAppearanceNameDarkAqua) {
return mate::ConvertToV8(isolate, "dark");
}
return mate::ConvertToV8(isolate, "unknown");
}
};
} // namespace mate
namespace atom {
namespace api {
@@ -323,6 +368,35 @@ bool SystemPreferences::IsSwipeTrackingFromScrollEventsEnabled() {
return [NSEvent isSwipeTrackingFromScrollEventsEnabled];
}
v8::Local<v8::Value> SystemPreferences::GetEffectiveAppearance(
v8::Isolate* isolate) {
if (@available(macOS 10.14, *)) {
return mate::ConvertToV8(
isolate, [NSApplication sharedApplication].effectiveAppearance);
}
return v8::Null(isolate);
}
v8::Local<v8::Value> SystemPreferences::GetAppLevelAppearance(
v8::Isolate* isolate) {
if (@available(macOS 10.14, *)) {
return mate::ConvertToV8(isolate,
[NSApplication sharedApplication].appearance);
}
return v8::Null(isolate);
}
void SystemPreferences::SetAppLevelAppearance(mate::Arguments* args) {
if (@available(macOS 10.14, *)) {
NSAppearance* appearance;
if (args->GetNext(&appearance)) {
[[NSApplication sharedApplication] setAppearance:appearance];
} else {
args->ThrowError("Invalid app appearance provided as first argument");
}
}
}
} // namespace api
} // namespace atom

View File

@@ -2,6 +2,7 @@
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include <dwmapi.h>
#include <iomanip>
#include "atom/browser/api/atom_api_system_preferences.h"
@@ -38,7 +39,7 @@ std::string SystemPreferences::GetAccentColor() {
DWORD color = 0;
BOOL opaque = FALSE;
if (FAILED(dwmGetColorizationColor(&color, &opaque))) {
if (FAILED(DwmGetColorizationColor(&color, &opaque))) {
return "";
}

View File

@@ -199,10 +199,24 @@ void TopLevelWindow::OnWindowRestore() {
Emit("restore");
}
void TopLevelWindow::OnWindowWillResize(const gfx::Rect& new_bounds,
bool* prevent_default) {
if (Emit("will-resize", new_bounds)) {
*prevent_default = true;
}
}
void TopLevelWindow::OnWindowResize() {
Emit("resize");
}
void TopLevelWindow::OnWindowWillMove(const gfx::Rect& new_bounds,
bool* prevent_default) {
if (Emit("will-move", new_bounds)) {
*prevent_default = true;
}
}
void TopLevelWindow::OnWindowMove() {
Emit("move");
}
@@ -363,6 +377,14 @@ gfx::Rect TopLevelWindow::GetBounds() {
return window_->GetBounds();
}
bool TopLevelWindow::IsNormal() {
return window_->IsNormal();
}
gfx::Rect TopLevelWindow::GetNormalBounds() {
return window_->GetNormalBounds();
}
void TopLevelWindow::SetContentBounds(const gfx::Rect& bounds,
mate::Arguments* args) {
bool animate = false;
@@ -689,8 +711,13 @@ void TopLevelWindow::SetOverlayIcon(const gfx::Image& overlay,
window_->SetOverlayIcon(overlay, description);
}
void TopLevelWindow::SetVisibleOnAllWorkspaces(bool visible) {
return window_->SetVisibleOnAllWorkspaces(visible);
void TopLevelWindow::SetVisibleOnAllWorkspaces(bool visible,
mate::Arguments* args) {
mate::Dictionary options;
bool visibleOnFullScreen = false;
args->GetNext(&options) &&
options.Get("visibleOnFullScreen", &visibleOnFullScreen);
return window_->SetVisibleOnAllWorkspaces(visible, visibleOnFullScreen);
}
bool TopLevelWindow::IsVisibleOnAllWorkspaces() {
@@ -747,6 +774,13 @@ void TopLevelWindow::AddTabbedWindow(NativeWindow* window,
args->ThrowError("AddTabbedWindow cannot be called by a window on itself.");
}
void TopLevelWindow::SetWindowButtonVisibility(bool visible,
mate::Arguments* args) {
if (!window_->SetWindowButtonVisibility(visible)) {
args->ThrowError("Not supported for this window");
}
}
void TopLevelWindow::SetAutoHideMenuBar(bool auto_hide) {
window_->SetAutoHideMenuBar(auto_hide);
}
@@ -819,7 +853,7 @@ bool TopLevelWindow::SetThumbarButtons(mate::Arguments* args) {
args->ThrowError();
return false;
}
auto window = static_cast<NativeWindowViews*>(window_.get());
auto* window = static_cast<NativeWindowViews*>(window_.get());
return window->taskbar_host().SetThumbarButtons(
window_->GetAcceleratedWidget(), buttons);
#else
@@ -958,6 +992,8 @@ void TopLevelWindow::BuildPrototype(v8::Isolate* isolate,
.SetMethod("isFullScreen", &TopLevelWindow::IsFullscreen)
.SetMethod("setBounds", &TopLevelWindow::SetBounds)
.SetMethod("getBounds", &TopLevelWindow::GetBounds)
.SetMethod("isNormal", &TopLevelWindow::IsNormal)
.SetMethod("getNormalBounds", &TopLevelWindow::GetNormalBounds)
.SetMethod("setSize", &TopLevelWindow::SetSize)
.SetMethod("getSize", &TopLevelWindow::GetSize)
.SetMethod("setContentBounds", &TopLevelWindow::SetContentBounds)
@@ -1040,6 +1076,8 @@ void TopLevelWindow::BuildPrototype(v8::Isolate* isolate,
.SetMethod("moveTabToNewWindow", &TopLevelWindow::MoveTabToNewWindow)
.SetMethod("toggleTabBar", &TopLevelWindow::ToggleTabBar)
.SetMethod("addTabbedWindow", &TopLevelWindow::AddTabbedWindow)
.SetMethod("setWindowButtonVisibility",
&TopLevelWindow::SetWindowButtonVisibility)
#endif
.SetMethod("setAutoHideMenuBar", &TopLevelWindow::SetAutoHideMenuBar)
.SetMethod("isMenuBarAutoHide", &TopLevelWindow::IsMenuBarAutoHide)

View File

@@ -61,7 +61,11 @@ class TopLevelWindow : public mate::TrackableObject<TopLevelWindow>,
void OnWindowUnmaximize() override;
void OnWindowMinimize() override;
void OnWindowRestore() override;
void OnWindowWillResize(const gfx::Rect& new_bounds,
bool* prevent_default) override;
void OnWindowResize() override;
void OnWindowWillMove(const gfx::Rect& new_bounds,
bool* prevent_default) override;
void OnWindowMove() override;
void OnWindowMoved() override;
void OnWindowScrollTouchBegin() override;
@@ -109,6 +113,8 @@ class TopLevelWindow : public mate::TrackableObject<TopLevelWindow>,
std::vector<int> GetContentSize();
void SetContentBounds(const gfx::Rect& bounds, mate::Arguments* args);
gfx::Rect GetContentBounds();
bool IsNormal();
gfx::Rect GetNormalBounds();
void SetMinimumSize(int width, int height);
std::vector<int> GetMinimumSize();
void SetMaximumSize(int width, int height);
@@ -162,7 +168,7 @@ class TopLevelWindow : public mate::TrackableObject<TopLevelWindow>,
void SetProgressBar(double progress, mate::Arguments* args);
void SetOverlayIcon(const gfx::Image& overlay,
const std::string& description);
void SetVisibleOnAllWorkspaces(bool visible);
void SetVisibleOnAllWorkspaces(bool visible, mate::Arguments* args);
bool IsVisibleOnAllWorkspaces();
void SetAutoHideCursor(bool auto_hide);
virtual void SetVibrancy(v8::Isolate* isolate, v8::Local<v8::Value> value);
@@ -175,6 +181,7 @@ class TopLevelWindow : public mate::TrackableObject<TopLevelWindow>,
void MoveTabToNewWindow();
void ToggleTabBar();
void AddTabbedWindow(NativeWindow* window, mate::Arguments* args);
void SetWindowButtonVisibility(bool visible, mate::Arguments* args);
void SetAutoHideMenuBar(bool auto_hide);
bool IsMenuBarAutoHide();
void SetMenuBarVisibility(bool visible);
@@ -216,7 +223,7 @@ class TopLevelWindow : public mate::TrackableObject<TopLevelWindow>,
// Remove this window from parent window's |child_windows_|.
void RemoveFromParentChildWindows();
template<typename... Args>
template <typename... Args>
void EmitEventSoon(base::StringPiece eventName) {
content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE,

View File

@@ -26,9 +26,7 @@ View::~View() {
#if defined(ENABLE_VIEW_API)
void View::SetLayoutManager(mate::Handle<LayoutManager> layout_manager) {
layout_manager_.Reset(isolate(), layout_manager->GetWrapper());
// TODO(zcbenz): New versions of Chrome takes std::unique_ptr instead of raw
// pointer, remove the "release()" call when we upgraded to it.
view()->SetLayoutManager(layout_manager->TakeOver().release());
view()->SetLayoutManager(layout_manager->TakeOver());
}
void View::AddChildView(mate::Handle<View> child) {

View File

@@ -8,7 +8,7 @@
#include <memory>
#include <vector>
#include "atom/browser/api/atom_api_layout_manager.h"
#include "atom/browser/api/views/atom_api_layout_manager.h"
#include "native_mate/handle.h"
#include "ui/views/view.h"

View File

@@ -4,18 +4,10 @@
#include "atom/browser/api/atom_api_web_contents.h"
#include <memory>
#include <set>
#include <string>
// We have problems with redefinition of ssize_t between node.h and
// port_chromium.h, and the latter was introduced by leveldb.mojom.h.
// The best solution is to not include content/browser/frame_host/ headers
// and node.h in the same file, but for now I'm just working around the
// problem.
#if defined(OS_WIN)
#define COMPONENTS_SERVICES_LEVELDB_PUBLIC_INTERFACES_LEVELDB_MOJOM_H_
#define COMPONENTS_LEVELDB_PUBLIC_INTERFACES_LEVELDB_MOJOM_H_
#endif
#include <utility>
#include "atom/browser/api/atom_api_browser_window.h"
#include "atom/browser/api/atom_api_debugger.h"
@@ -24,6 +16,7 @@
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/atom_javascript_dialog_manager.h"
#include "atom/browser/atom_navigation_throttle.h"
#include "atom/browser/child_web_contents_tracker.h"
#include "atom/browser/lib/bluetooth_chooser.h"
#include "atom/browser/native_window.h"
@@ -57,6 +50,7 @@
#include "atom/common/options_switches.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/thread_restrictions.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/values.h"
#include "brightray/browser/inspectable_web_contents.h"
@@ -92,8 +86,8 @@
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "net/url_request/url_request_context.h"
#include "third_party/WebKit/public/platform/WebInputEvent.h"
#include "third_party/WebKit/public/web/WebFindOptions.h"
#include "third_party/blink/public/platform/web_input_event.h"
#include "third_party/blink/public/web/web_find_options.h"
#include "ui/display/screen.h"
#include "ui/events/base_event_utils.h"
@@ -302,7 +296,7 @@ struct WebContents::FrameDispatchHelper {
api_web_contents->OnGetZoomLevel(rfh, reply_msg);
}
void OnRendererMessageSync(const base::string16& channel,
void OnRendererMessageSync(const std::string& channel,
const base::ListValue& args,
IPC::Message* message) {
api_web_contents->OnRendererMessageSync(rfh, channel, args, message);
@@ -315,7 +309,8 @@ WebContents::WebContents(v8::Isolate* isolate,
: content::WebContentsObserver(web_contents), type_(type) {
const mate::Dictionary options = mate::Dictionary::CreateEmpty(isolate);
if (type == REMOTE) {
web_contents->SetUserAgentOverride(GetBrowserContext()->GetUserAgent());
web_contents->SetUserAgentOverride(GetBrowserContext()->GetUserAgent(),
false);
Init(isolate);
AttachAsUserData(web_contents);
InitZoomController(web_contents, options);
@@ -456,7 +451,8 @@ void WebContents::InitWithSessionAndOptions(v8::Isolate* isolate,
// Initialize zoom controller.
InitZoomController(web_contents, options);
web_contents->SetUserAgentOverride(GetBrowserContext()->GetUserAgent());
web_contents->SetUserAgentOverride(GetBrowserContext()->GetUserAgent(),
false);
if (IsGuest()) {
NativeWindow* owner_window = nullptr;
@@ -718,10 +714,15 @@ void WebContents::FindReply(content::WebContents* web_contents,
Emit("found-in-page", result);
}
bool WebContents::CheckMediaAccessPermission(content::WebContents* web_contents,
const GURL& security_origin,
content::MediaStreamType type) {
return true;
bool WebContents::CheckMediaAccessPermission(
content::RenderFrameHost* render_frame_host,
const GURL& security_origin,
content::MediaStreamType type) {
auto* web_contents =
content::WebContents::FromRenderFrameHost(render_frame_host);
auto* permission_helper =
WebContentsPermissionHelper::FromWebContents(web_contents);
return permission_helper->CheckMediaAccessPermission(security_origin, type);
}
void WebContents::RequestMediaAccessPermission(
@@ -755,6 +756,11 @@ content::JavaScriptDialogManager* WebContents::GetJavaScriptDialogManager(
return dialog_manager_.get();
}
void WebContents::OnAudioStateChanged(content::WebContents* web_contents,
bool audible) {
Emit("-audio-state-changed", audible);
}
void WebContents::BeforeUnloadFired(const base::TimeTicks& proceed_time) {
// Do nothing, we override this method just to avoid compilation error since
// there are two virtual functions named BeforeUnloadFired.
@@ -841,7 +847,8 @@ void WebContents::DidStopLoading() {
Emit("did-stop-loading");
}
void WebContents::DidStartNavigation(
bool WebContents::EmitNavigationEvent(
const std::string& event,
content::NavigationHandle* navigation_handle) {
bool is_main_frame = navigation_handle->IsInMainFrame();
int frame_tree_node_id = navigation_handle->GetFrameTreeNodeId();
@@ -862,8 +869,18 @@ void WebContents::DidStartNavigation(
}
bool is_same_document = navigation_handle->IsSameDocument();
auto url = navigation_handle->GetURL();
Emit("did-start-navigation", url, is_same_document, is_main_frame,
frame_process_id, frame_routing_id);
return Emit(event, url, is_same_document, is_main_frame, frame_process_id,
frame_routing_id);
}
void WebContents::DidStartNavigation(
content::NavigationHandle* navigation_handle) {
EmitNavigationEvent("did-start-navigation", navigation_handle);
}
void WebContents::DidRedirectNavigation(
content::NavigationHandle* navigation_handle) {
EmitNavigationEvent("did-redirect-navigation", navigation_handle);
}
void WebContents::DidFinishNavigation(
@@ -1022,6 +1039,7 @@ bool WebContents::OnMessageReceived(const IPC::Message& message,
IPC_MESSAGE_HANDLER(AtomFrameHostMsg_Message, OnRendererMessage)
IPC_MESSAGE_FORWARD_DELAY_REPLY(AtomFrameHostMsg_Message_Sync, &helper,
FrameDispatchHelper::OnRendererMessageSync)
IPC_MESSAGE_HANDLER(AtomFrameHostMsg_Message_To, OnRendererMessageTo)
IPC_MESSAGE_FORWARD_DELAY_REPLY(
AtomFrameHostMsg_SetTemporaryZoomLevel, &helper,
FrameDispatchHelper::OnSetTemporaryZoomLevel)
@@ -1078,23 +1096,12 @@ void WebContents::NavigationEntryCommitted(
details.is_same_document, details.did_replace_entry);
}
int64_t WebContents::GetIDForContents(content::WebContents* web_contents) {
int64_t process_id = web_contents->GetMainFrame()->GetProcess()->GetID();
int64_t routing_id = web_contents->GetMainFrame()->GetRoutingID();
int64_t rv = (process_id << 32) + routing_id;
return rv;
}
int64_t WebContents::GetID() const {
return WebContents::GetIDForContents(web_contents());
}
int WebContents::GetProcessID() const {
return web_contents()->GetMainFrame()->GetProcess()->GetID();
}
base::ProcessId WebContents::GetOSProcessID() const {
auto process_handle =
base::ProcessHandle process_handle =
web_contents()->GetMainFrame()->GetProcess()->GetHandle();
return base::GetProcId(process_handle);
}
@@ -1104,7 +1111,7 @@ WebContents::Type WebContents::GetType() const {
}
bool WebContents::Equal(const WebContents* web_contents) const {
return GetID() == web_contents->GetID();
return ID() == web_contents->ID();
}
void WebContents::LoadURL(const GURL& url, const mate::Dictionary& options) {
@@ -1126,7 +1133,7 @@ void WebContents::LoadURL(const GURL& url, const mate::Dictionary& options) {
std::string user_agent;
if (options.Get("userAgent", &user_agent))
web_contents()->SetUserAgentOverride(user_agent);
web_contents()->SetUserAgentOverride(user_agent, false);
std::string extra_headers;
if (options.Get("extraHeaders", &extra_headers))
@@ -1156,8 +1163,8 @@ void WebContents::LoadURL(const GURL& url, const mate::Dictionary& options) {
if (view) {
auto* web_preferences = WebContentsPreferences::From(web_contents());
std::string color_name;
if (web_preferences->dict()->GetString(options::kBackgroundColor,
&color_name)) {
if (web_preferences->GetPreference(options::kBackgroundColor,
&color_name)) {
view->SetBackgroundColor(ParseHexColor(color_name));
} else {
view->SetBackgroundColor(SK_ColorTRANSPARENT);
@@ -1236,7 +1243,7 @@ bool WebContents::IsCrashed() const {
void WebContents::SetUserAgent(const std::string& user_agent,
mate::Arguments* args) {
web_contents()->SetUserAgentOverride(user_agent);
web_contents()->SetUserAgentOverride(user_agent, false);
}
std::string WebContents::GetUserAgent() {
@@ -1396,7 +1403,8 @@ void WebContents::UnregisterServiceWorker(
void WebContents::SetIgnoreMenuShortcuts(bool ignore) {
auto* web_preferences = WebContentsPreferences::From(web_contents());
DCHECK(web_preferences);
web_preferences->dict()->SetBoolean("ignoreMenuShortcuts", ignore);
web_preferences->preference()->SetKey("ignoreMenuShortcuts",
base::Value(ignore));
}
void WebContents::SetAudioMuted(bool muted) {
@@ -1407,6 +1415,10 @@ bool WebContents::IsAudioMuted() {
return web_contents()->IsAudioMuted();
}
bool WebContents::IsCurrentlyAudible() {
return web_contents()->IsCurrentlyAudible();
}
void WebContents::Print(mate::Arguments* args) {
PrintSettings settings = {false, false, base::string16()};
if (args->Length() >= 1 && !args->GetNext(&settings)) {
@@ -1448,7 +1460,7 @@ void WebContents::AddWorkSpace(mate::Arguments* args,
args->ThrowError("path cannot be empty");
return;
}
DevToolsAddFileSystem(path);
DevToolsAddFileSystem(std::string(), path);
}
void WebContents::RemoveWorkSpace(mate::Arguments* args,
@@ -1562,12 +1574,19 @@ void WebContents::TabTraverse(bool reverse) {
}
bool WebContents::SendIPCMessage(bool all_frames,
const base::string16& channel,
const std::string& channel,
const base::ListValue& args) {
return SendIPCMessageWithSender(all_frames, channel, args);
}
bool WebContents::SendIPCMessageWithSender(bool all_frames,
const std::string& channel,
const base::ListValue& args,
int32_t sender_id) {
auto* frame_host = web_contents()->GetMainFrame();
if (frame_host) {
return frame_host->Send(new AtomFrameMsg_Message(
frame_host->GetRoutingID(), all_frames, channel, args));
frame_host->GetRoutingID(), all_frames, channel, args, sender_id));
}
return false;
}
@@ -1835,7 +1854,7 @@ void WebContents::SetZoomLevel(double level) {
zoom_controller_->SetZoomLevel(level);
}
double WebContents::GetZoomLevel() {
double WebContents::GetZoomLevel() const {
return zoom_controller_->GetZoomLevel();
}
@@ -1844,7 +1863,7 @@ void WebContents::SetZoomFactor(double factor) {
SetZoomLevel(level);
}
double WebContents::GetZoomFactor() {
double WebContents::GetZoomFactor() const {
auto level = GetZoomLevel();
return content::ZoomLevelToZoomFactor(level);
}
@@ -1875,22 +1894,23 @@ v8::Local<v8::Value> WebContents::GetPreloadPath(v8::Isolate* isolate) const {
return v8::Null(isolate);
}
v8::Local<v8::Value> WebContents::GetWebPreferences(v8::Isolate* isolate) {
v8::Local<v8::Value> WebContents::GetWebPreferences(
v8::Isolate* isolate) const {
auto* web_preferences = WebContentsPreferences::From(web_contents());
if (!web_preferences)
return v8::Null(isolate);
return mate::ConvertToV8(isolate, *web_preferences->dict());
return mate::ConvertToV8(isolate, *web_preferences->preference());
}
v8::Local<v8::Value> WebContents::GetLastWebPreferences(v8::Isolate* isolate) {
WebContentsPreferences* web_preferences =
WebContentsPreferences::FromWebContents(web_contents());
v8::Local<v8::Value> WebContents::GetLastWebPreferences(
v8::Isolate* isolate) const {
auto* web_preferences = WebContentsPreferences::From(web_contents());
if (!web_preferences)
return v8::Null(isolate);
return mate::ConvertToV8(isolate, *web_preferences->last_dict());
return mate::ConvertToV8(isolate, *web_preferences->last_preference());
}
v8::Local<v8::Value> WebContents::GetOwnerBrowserWindow() {
v8::Local<v8::Value> WebContents::GetOwnerBrowserWindow() const {
if (owner_window())
return BrowserWindow::From(isolate(), owner_window());
else
@@ -1966,13 +1986,30 @@ void WebContents::GrantOriginAccess(const GURL& url) {
url::Origin::Create(url));
}
bool WebContents::TakeHeapSnapshot(const base::FilePath& file_path,
const std::string& channel) {
base::ThreadRestrictions::ScopedAllowIO allow_io;
base::File file(file_path,
base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE);
if (!file.IsValid())
return false;
auto* frame_host = web_contents()->GetMainFrame();
if (!frame_host)
return false;
return frame_host->Send(new AtomFrameMsg_TakeHeapSnapshot(
frame_host->GetRoutingID(),
IPC::TakePlatformFileForTransit(std::move(file)), channel));
}
// static
void WebContents::BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype) {
prototype->SetClassName(mate::StringToV8(isolate, "WebContents"));
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
.MakeDestroyable()
.SetMethod("getId", &WebContents::GetID)
.SetMethod("getProcessId", &WebContents::GetProcessID)
.SetMethod("getOSProcessId", &WebContents::GetOSProcessID)
.SetMethod("equal", &WebContents::Equal)
@@ -2002,6 +2039,7 @@ void WebContents::BuildPrototype(v8::Isolate* isolate,
.SetMethod("setIgnoreMenuShortcuts", &WebContents::SetIgnoreMenuShortcuts)
.SetMethod("setAudioMuted", &WebContents::SetAudioMuted)
.SetMethod("isAudioMuted", &WebContents::IsAudioMuted)
.SetMethod("isCurrentlyAudible", &WebContents::IsCurrentlyAudible)
.SetMethod("undo", &WebContents::Undo)
.SetMethod("redo", &WebContents::Redo)
.SetMethod("cut", &WebContents::Cut)
@@ -2062,6 +2100,7 @@ void WebContents::BuildPrototype(v8::Isolate* isolate,
.SetMethod("getWebRTCIPHandlingPolicy",
&WebContents::GetWebRTCIPHandlingPolicy)
.SetMethod("_grantOriginAccess", &WebContents::GrantOriginAccess)
.SetMethod("_takeHeapSnapshot", &WebContents::TakeHeapSnapshot)
.SetProperty("id", &WebContents::ID)
.SetProperty("session", &WebContents::Session)
.SetProperty("hostWebContents", &WebContents::HostWebContents)
@@ -2074,18 +2113,31 @@ AtomBrowserContext* WebContents::GetBrowserContext() const {
}
void WebContents::OnRendererMessage(content::RenderFrameHost* frame_host,
const base::string16& channel,
const std::string& channel,
const base::ListValue& args) {
// webContents.emit(channel, new Event(), args...);
Emit(base::UTF16ToUTF8(channel), args);
Emit(channel, args);
}
void WebContents::OnRendererMessageSync(content::RenderFrameHost* frame_host,
const base::string16& channel,
const std::string& channel,
const base::ListValue& args,
IPC::Message* message) {
// webContents.emit(channel, new Event(sender, message), args...);
EmitWithSender(base::UTF16ToUTF8(channel), frame_host, message, args);
EmitWithSender(channel, frame_host, message, args);
}
void WebContents::OnRendererMessageTo(content::RenderFrameHost* frame_host,
bool send_to_all,
int32_t web_contents_id,
const std::string& channel,
const base::ListValue& args) {
auto* web_contents = mate::TrackableObject<WebContents>::FromWeakMapID(
isolate(), web_contents_id);
if (web_contents) {
web_contents->SendIPCMessageWithSender(send_to_all, channel, args, ID());
}
}
// static

View File

@@ -5,6 +5,7 @@
#ifndef ATOM_BROWSER_API_ATOM_API_WEB_CONTENTS_H_
#define ATOM_BROWSER_API_ATOM_API_WEB_CONTENTS_H_
#include <memory>
#include <string>
#include <vector>
@@ -97,12 +98,9 @@ class WebContents : public mate::TrackableObject<WebContents>,
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
static int64_t GetIDForContents(content::WebContents* web_contents);
// Notifies to destroy any guest web contents before destroying self.
void DestroyWebContents(bool async);
int64_t GetID() const;
int GetProcessID() const;
base::ProcessId GetOSProcessID() const;
Type GetType() const;
@@ -142,6 +140,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
void SetIgnoreMenuShortcuts(bool ignore);
void SetAudioMuted(bool muted);
bool IsAudioMuted();
bool IsCurrentlyAudible();
void Print(mate::Arguments* args);
std::vector<printing::PrinterBasicInfo> GetPrinterList();
void SetEmbedder(const WebContents* embedder);
@@ -180,9 +179,14 @@ class WebContents : public mate::TrackableObject<WebContents>,
// Send messages to browser.
bool SendIPCMessage(bool all_frames,
const base::string16& channel,
const std::string& channel,
const base::ListValue& args);
bool SendIPCMessageWithSender(bool all_frames,
const std::string& channel,
const base::ListValue& args,
int32_t sender_id = 0);
// Send WebInputEvent to the page.
void SendInputEvent(v8::Isolate* isolate, v8::Local<v8::Value> input_event);
@@ -215,9 +219,9 @@ class WebContents : public mate::TrackableObject<WebContents>,
// Methods for zoom handling.
void SetZoomLevel(double level);
double GetZoomLevel();
double GetZoomLevel() const;
void SetZoomFactor(double factor);
double GetZoomFactor();
double GetZoomFactor() const;
// Callback triggered on permission response.
void OnEnterFullscreenModeForTab(content::WebContents* source,
@@ -236,16 +240,19 @@ class WebContents : public mate::TrackableObject<WebContents>,
v8::Local<v8::Value> GetPreloadPath(v8::Isolate* isolate) const;
// Returns the web preferences of current WebContents.
v8::Local<v8::Value> GetWebPreferences(v8::Isolate* isolate);
v8::Local<v8::Value> GetLastWebPreferences(v8::Isolate* isolate);
v8::Local<v8::Value> GetWebPreferences(v8::Isolate* isolate) const;
v8::Local<v8::Value> GetLastWebPreferences(v8::Isolate* isolate) const;
// Returns the owner window.
v8::Local<v8::Value> GetOwnerBrowserWindow();
v8::Local<v8::Value> GetOwnerBrowserWindow() const;
// Grants the child process the capability to access URLs with the origin of
// the specified URL.
void GrantOriginAccess(const GURL& url);
bool TakeHeapSnapshot(const base::FilePath& file_path,
const std::string& channel);
// Properties.
int32_t ID() const;
v8::Local<v8::Value> Session(v8::Isolate* isolate);
@@ -262,6 +269,9 @@ class WebContents : public mate::TrackableObject<WebContents>,
observers_.RemoveObserver(obs);
}
bool EmitNavigationEvent(const std::string& event,
content::NavigationHandle* navigation_handle);
protected:
WebContents(v8::Isolate* isolate,
content::WebContents* web_contents,
@@ -327,7 +337,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
const gfx::Rect& selection_rect,
int active_match_ordinal,
bool final_update) override;
bool CheckMediaAccessPermission(content::WebContents* web_contents,
bool CheckMediaAccessPermission(content::RenderFrameHost* render_frame_host,
const GURL& security_origin,
content::MediaStreamType type) override;
void RequestMediaAccessPermission(
@@ -342,6 +352,8 @@ class WebContents : public mate::TrackableObject<WebContents>,
const content::BluetoothChooser::EventHandler& handler) override;
content::JavaScriptDialogManager* GetJavaScriptDialogManager(
content::WebContents* source) override;
void OnAudioStateChanged(content::WebContents* web_contents,
bool audible) override;
// content::WebContentsObserver:
void BeforeUnloadFired(const base::TimeTicks& proceed_time) override;
@@ -360,6 +372,8 @@ class WebContents : public mate::TrackableObject<WebContents>,
void DidStopLoading() override;
void DidStartNavigation(
content::NavigationHandle* navigation_handle) override;
void DidRedirectNavigation(
content::NavigationHandle* navigation_handle) override;
void DidFinishNavigation(
content::NavigationHandle* navigation_handle) override;
bool OnMessageReceived(const IPC::Message& message) override;
@@ -412,15 +426,22 @@ class WebContents : public mate::TrackableObject<WebContents>,
// Called when received a message from renderer.
void OnRendererMessage(content::RenderFrameHost* frame_host,
const base::string16& channel,
const std::string& channel,
const base::ListValue& args);
// Called when received a synchronous message from renderer.
void OnRendererMessageSync(content::RenderFrameHost* frame_host,
const base::string16& channel,
const std::string& channel,
const base::ListValue& args,
IPC::Message* message);
// Called when received a message from renderer to be forwarded.
void OnRendererMessageTo(content::RenderFrameHost* frame_host,
bool send_to_all,
int32_t web_contents_id,
const std::string& channel,
const base::ListValue& args);
// Called when received a synchronous message from renderer to
// set temporary zoom level.
void OnSetTemporaryZoomLevel(content::RenderFrameHost* frame_host,

View File

@@ -5,6 +5,7 @@
#include "atom/browser/api/atom_api_web_request.h"
#include <string>
#include <utility>
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/net/atom_network_delegate.h"

View File

@@ -1,9 +1,12 @@
// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include <string>
#include "atom/browser/api/event_subscriber.h"
#include <string>
#include <utility>
#include "atom/common/native_mate_converters/callback.h"
namespace {

View File

@@ -6,7 +6,9 @@
#define ATOM_BROWSER_API_EVENT_SUBSCRIBER_H_
#include <map>
#include <memory>
#include <string>
#include <utility>
#include "atom/common/api/event_emitter_caller.h"
#include "base/synchronization/lock.h"

View File

@@ -83,7 +83,7 @@ void FrameSubscriber::Done(const gfx::Rect& damage, const SkBitmap& frame) {
: frame;
size_t rgb_row_size = bitmap.width() * bitmap.bytesPerPixel();
auto source = static_cast<const char*>(bitmap.getPixels());
auto* source = static_cast<const char*>(bitmap.getPixels());
v8::MaybeLocal<v8::Object> buffer =
node::Buffer::Copy(isolate_, source, rgb_row_size * bitmap.height());

View File

@@ -29,7 +29,7 @@ class FrameSubscriber : public content::WebContentsObserver {
content::WebContents* web_contents,
const FrameCaptureCallback& callback,
bool only_dirty);
~FrameSubscriber();
~FrameSubscriber() override;
private:
gfx::Rect GetDamageRect();

View File

@@ -0,0 +1,102 @@
// 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/gpu_info_enumerator.h"
#include <utility>
namespace atom {
GPUInfoEnumerator::GPUInfoEnumerator()
: value_stack(), current(std::make_unique<base::DictionaryValue>()) {}
GPUInfoEnumerator::~GPUInfoEnumerator() {}
void GPUInfoEnumerator::AddInt64(const char* name, int64_t value) {
current->SetInteger(name, value);
}
void GPUInfoEnumerator::AddInt(const char* name, int value) {
current->SetInteger(name, value);
}
void GPUInfoEnumerator::AddString(const char* name, const std::string& value) {
if (!value.empty())
current->SetString(name, value);
}
void GPUInfoEnumerator::AddBool(const char* name, bool value) {
current->SetBoolean(name, value);
}
void GPUInfoEnumerator::AddTimeDeltaInSecondsF(const char* name,
const base::TimeDelta& value) {
current->SetInteger(name, value.InMilliseconds());
}
void GPUInfoEnumerator::BeginGPUDevice() {
value_stack.push(std::move(current));
current = std::make_unique<base::DictionaryValue>();
}
void GPUInfoEnumerator::EndGPUDevice() {
auto& top_value = value_stack.top();
// GPUDevice can be more than one. So create a list of all.
// The first one is the active GPU device.
if (top_value->HasKey(kGPUDeviceKey)) {
base::ListValue* list;
top_value->GetList(kGPUDeviceKey, &list);
list->Append(std::move(current));
} else {
auto gpus = std::make_unique<base::ListValue>();
gpus->Append(std::move(current));
top_value->SetList(kGPUDeviceKey, std::move(gpus));
}
current = std::move(top_value);
value_stack.pop();
}
void GPUInfoEnumerator::BeginVideoDecodeAcceleratorSupportedProfile() {
value_stack.push(std::move(current));
current = std::make_unique<base::DictionaryValue>();
}
void GPUInfoEnumerator::EndVideoDecodeAcceleratorSupportedProfile() {
auto& top_value = value_stack.top();
top_value->SetDictionary(kVideoDecodeAcceleratorSupportedProfileKey,
std::move(current));
current = std::move(top_value);
value_stack.pop();
}
void GPUInfoEnumerator::BeginVideoEncodeAcceleratorSupportedProfile() {
value_stack.push(std::move(current));
current = std::make_unique<base::DictionaryValue>();
}
void GPUInfoEnumerator::EndVideoEncodeAcceleratorSupportedProfile() {
auto& top_value = value_stack.top();
top_value->SetDictionary(kVideoEncodeAcceleratorSupportedProfileKey,
std::move(current));
current = std::move(top_value);
value_stack.pop();
}
void GPUInfoEnumerator::BeginAuxAttributes() {
value_stack.push(std::move(current));
current = std::make_unique<base::DictionaryValue>();
}
void GPUInfoEnumerator::EndAuxAttributes() {
auto& top_value = value_stack.top();
top_value->SetDictionary(kAuxAttributesKey, std::move(current));
current = std::move(top_value);
value_stack.pop();
}
std::unique_ptr<base::DictionaryValue> GPUInfoEnumerator::GetDictionary() {
return std::move(current);
}
} // namespace atom

View File

@@ -0,0 +1,53 @@
// 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_GPU_INFO_ENUMERATOR_H_
#define ATOM_BROWSER_API_GPU_INFO_ENUMERATOR_H_
#include <memory>
#include <stack>
#include <string>
#include "base/values.h"
#include "gpu/config/gpu_info.h"
namespace atom {
// This class implements the enumerator for reading all the attributes in
// GPUInfo into a dictionary.
class GPUInfoEnumerator final : public gpu::GPUInfo::Enumerator {
const char* kGPUDeviceKey = "gpuDevice";
const char* kVideoDecodeAcceleratorSupportedProfileKey =
"videoDecodeAcceleratorSupportedProfile";
const char* kVideoEncodeAcceleratorSupportedProfileKey =
"videoEncodeAcceleratorSupportedProfile";
const char* kAuxAttributesKey = "auxAttributes";
public:
GPUInfoEnumerator();
~GPUInfoEnumerator() override;
void AddInt64(const char* name, int64_t value) override;
void AddInt(const char* name, int value) override;
void AddString(const char* name, const std::string& value) override;
void AddBool(const char* name, bool value) override;
void AddTimeDeltaInSecondsF(const char* name,
const base::TimeDelta& value) override;
void BeginGPUDevice() override;
void EndGPUDevice() override;
void BeginVideoDecodeAcceleratorSupportedProfile() override;
void EndVideoDecodeAcceleratorSupportedProfile() override;
void BeginVideoEncodeAcceleratorSupportedProfile() override;
void EndVideoEncodeAcceleratorSupportedProfile() override;
void BeginAuxAttributes() override;
void EndAuxAttributes() override;
std::unique_ptr<base::DictionaryValue> GetDictionary();
private:
// The stack is used to manage nested values
std::stack<std::unique_ptr<base::DictionaryValue>> value_stack;
std::unique_ptr<base::DictionaryValue> current;
};
} // namespace atom
#endif // ATOM_BROWSER_API_GPU_INFO_ENUMERATOR_H_

View File

@@ -0,0 +1,93 @@
// 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/gpuinfo_manager.h"
#include "atom/browser/api/gpu_info_enumerator.h"
#include "base/memory/singleton.h"
#include "base/threading/thread_task_runner_handle.h"
#include "content/public/browser/browser_thread.h"
#include "gpu/config/gpu_info_collector.h"
namespace atom {
GPUInfoManager* GPUInfoManager::GetInstance() {
return base::Singleton<GPUInfoManager>::get();
}
GPUInfoManager::GPUInfoManager()
: gpu_data_manager_(content::GpuDataManagerImpl::GetInstance()) {
gpu_data_manager_->AddObserver(this);
}
GPUInfoManager::~GPUInfoManager() {
content::GpuDataManagerImpl::GetInstance()->RemoveObserver(this);
}
// Based on
// https://chromium.googlesource.com/chromium/src.git/+/66.0.3359.181/content/browser/gpu/gpu_data_manager_impl_private.cc#810
bool GPUInfoManager::NeedsCompleteGpuInfoCollection() {
#if defined(OS_MACOSX)
return gpu_data_manager_->GetGPUInfo().gl_vendor.empty();
#elif defined(OS_WIN)
const auto& gpu_info = gpu_data_manager_->GetGPUInfo();
return (gpu_info.dx_diagnostics.values.empty() &&
gpu_info.dx_diagnostics.children.empty());
#else
return false;
#endif
}
// Should be posted to the task runner
void GPUInfoManager::ProcessCompleteInfo() {
const auto result = EnumerateGPUInfo(gpu_data_manager_->GetGPUInfo());
// We have received the complete information, resolve all promises that
// were waiting for this info.
for (const auto& promise : complete_info_promise_set_) {
promise->Resolve(*result);
}
complete_info_promise_set_.clear();
}
void GPUInfoManager::OnGpuInfoUpdate() {
// Ignore if called when not asked for complete GPUInfo
if (NeedsCompleteGpuInfoCollection())
return;
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(&GPUInfoManager::ProcessCompleteInfo,
base::Unretained(this)));
}
// Should be posted to the task runner
void GPUInfoManager::CompleteInfoFetcher(scoped_refptr<util::Promise> promise) {
complete_info_promise_set_.push_back(promise);
if (NeedsCompleteGpuInfoCollection()) {
gpu_data_manager_->RequestCompleteGpuInfoIfNeeded();
} else {
GPUInfoManager::OnGpuInfoUpdate();
}
}
void GPUInfoManager::FetchCompleteInfo(scoped_refptr<util::Promise> promise) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(&GPUInfoManager::CompleteInfoFetcher,
base::Unretained(this), promise));
}
// This fetches the info synchronously, so no need to post to the task queue.
// There cannot be multiple promises as they are resolved synchronously.
void GPUInfoManager::FetchBasicInfo(scoped_refptr<util::Promise> promise) {
gpu::GPUInfo gpu_info;
CollectBasicGraphicsInfo(&gpu_info);
promise->Resolve(*EnumerateGPUInfo(gpu_info));
}
std::unique_ptr<base::DictionaryValue> GPUInfoManager::EnumerateGPUInfo(
gpu::GPUInfo gpu_info) const {
GPUInfoEnumerator enumerator;
gpu_info.EnumerateFields(&enumerator);
return enumerator.GetDictionary();
}
} // namespace atom

View File

@@ -0,0 +1,49 @@
// 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_GPUINFO_MANAGER_H_
#define ATOM_BROWSER_API_GPUINFO_MANAGER_H_
#include <memory>
#include <unordered_set>
#include <vector>
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/promise_util.h"
#include "content/browser/gpu/gpu_data_manager_impl.h"
#include "content/public/browser/gpu_data_manager.h"
#include "content/public/browser/gpu_data_manager_observer.h"
namespace atom {
// GPUInfoManager is a singleton used to manage and fetch GPUInfo
class GPUInfoManager : public content::GpuDataManagerObserver {
public:
static GPUInfoManager* GetInstance();
GPUInfoManager();
~GPUInfoManager() override;
bool NeedsCompleteGpuInfoCollection();
void FetchCompleteInfo(scoped_refptr<util::Promise> promise);
void FetchBasicInfo(scoped_refptr<util::Promise> promise);
void OnGpuInfoUpdate() override;
private:
std::unique_ptr<base::DictionaryValue> EnumerateGPUInfo(
gpu::GPUInfo gpu_info) const;
// These should be posted to the task queue
void CompleteInfoFetcher(scoped_refptr<util::Promise> promise);
void ProcessCompleteInfo();
// This set maintains all the promises that should be fulfilled
// once we have the complete information data
std::vector<scoped_refptr<util::Promise>> complete_info_promise_set_;
content::GpuDataManager* gpu_data_manager_;
DISALLOW_COPY_AND_ASSIGN(GPUInfoManager);
};
} // namespace atom
#endif // ATOM_BROWSER_API_GPUINFO_MANAGER_H_

View File

@@ -4,6 +4,8 @@
#include "atom/browser/api/trackable_object.h"
#include <memory>
#include "atom/browser/atom_browser_main_parts.h"
#include "base/bind.h"
#include "base/supports_user_data.h"

View File

@@ -2,7 +2,7 @@
// 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_box_layout.h"
#include "atom/browser/api/views/atom_api_box_layout.h"
#include <string>

View File

@@ -2,10 +2,10 @@
// 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_BOX_LAYOUT_H_
#define ATOM_BROWSER_API_ATOM_API_BOX_LAYOUT_H_
#ifndef ATOM_BROWSER_API_VIEWS_ATOM_API_BOX_LAYOUT_H_
#define ATOM_BROWSER_API_VIEWS_ATOM_API_BOX_LAYOUT_H_
#include "atom/browser/api/atom_api_layout_manager.h"
#include "atom/browser/api/views/atom_api_layout_manager.h"
#include "native_mate/handle.h"
#include "ui/views/layout/box_layout.h"
@@ -37,4 +37,4 @@ class BoxLayout : public LayoutManager {
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_BOX_LAYOUT_H_
#endif // ATOM_BROWSER_API_VIEWS_ATOM_API_BOX_LAYOUT_H_

View File

@@ -2,7 +2,7 @@
// 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_button.h"
#include "atom/browser/api/views/atom_api_button.h"
#include "atom/common/api/constructor.h"
#include "native_mate/dictionary.h"

View File

@@ -2,8 +2,8 @@
// 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_BUTTON_H_
#define ATOM_BROWSER_API_ATOM_API_BUTTON_H_
#ifndef ATOM_BROWSER_API_VIEWS_ATOM_API_BUTTON_H_
#define ATOM_BROWSER_API_VIEWS_ATOM_API_BUTTON_H_
#include "atom/browser/api/atom_api_view.h"
#include "native_mate/handle.h"
@@ -35,4 +35,4 @@ class Button : public View, public views::ButtonListener {
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_BUTTON_H_
#endif // ATOM_BROWSER_API_VIEWS_ATOM_API_BUTTON_H_

View File

@@ -2,7 +2,7 @@
// 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_label_button.h"
#include "atom/browser/api/views/atom_api_label_button.h"
#include "atom/common/api/constructor.h"
#include "base/strings/utf_string_conversions.h"

View File

@@ -2,12 +2,12 @@
// 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_LABEL_BUTTON_H_
#define ATOM_BROWSER_API_ATOM_API_LABEL_BUTTON_H_
#ifndef ATOM_BROWSER_API_VIEWS_ATOM_API_LABEL_BUTTON_H_
#define ATOM_BROWSER_API_VIEWS_ATOM_API_LABEL_BUTTON_H_
#include <string>
#include "atom/browser/api/atom_api_button.h"
#include "atom/browser/api/views/atom_api_button.h"
namespace atom {
@@ -33,4 +33,4 @@ class LabelButton : public Button {
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_LABEL_BUTTON_H_
#endif // ATOM_BROWSER_API_VIEWS_ATOM_API_LABEL_BUTTON_H_

View File

@@ -2,7 +2,7 @@
// 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_layout_manager.h"
#include "atom/browser/api/views/atom_api_layout_manager.h"
#include "atom/common/api/constructor.h"
#include "native_mate/dictionary.h"

View File

@@ -2,8 +2,8 @@
// 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_LAYOUT_MANAGER_H_
#define ATOM_BROWSER_API_ATOM_API_LAYOUT_MANAGER_H_
#ifndef ATOM_BROWSER_API_VIEWS_ATOM_API_LAYOUT_MANAGER_H_
#define ATOM_BROWSER_API_VIEWS_ATOM_API_LAYOUT_MANAGER_H_
#include <memory>
@@ -41,4 +41,4 @@ class LayoutManager : public mate::TrackableObject<LayoutManager> {
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_LAYOUT_MANAGER_H_
#endif // ATOM_BROWSER_API_VIEWS_ATOM_API_LAYOUT_MANAGER_H_

View File

@@ -2,7 +2,7 @@
// 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_text_field.h"
#include "atom/browser/api/views/atom_api_text_field.h"
#include "atom/common/api/constructor.h"
#include "native_mate/dictionary.h"

View File

@@ -2,8 +2,8 @@
// 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_TEXT_FIELD_H_
#define ATOM_BROWSER_API_ATOM_API_TEXT_FIELD_H_
#ifndef ATOM_BROWSER_API_VIEWS_ATOM_API_TEXT_FIELD_H_
#define ATOM_BROWSER_API_VIEWS_ATOM_API_TEXT_FIELD_H_
#include "atom/browser/api/atom_api_view.h"
#include "native_mate/handle.h"
@@ -39,4 +39,4 @@ class TextField : public View {
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_TEXT_FIELD_H_
#endif // ATOM_BROWSER_API_VIEWS_ATOM_API_TEXT_FIELD_H_

View File

@@ -4,6 +4,8 @@
#include "atom/browser/atom_blob_reader.h"
#include <utility>
#include "content/browser/blob_storage/chrome_blob_storage_context.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/io_buffer.h"

View File

@@ -5,6 +5,7 @@
#ifndef ATOM_BROWSER_ATOM_BLOB_READER_H_
#define ATOM_BROWSER_ATOM_BLOB_READER_H_
#include <memory>
#include <string>
#include "base/callback.h"

View File

@@ -8,11 +8,15 @@
#include <shlobj.h>
#endif
#include <memory>
#include <utility>
#include "atom/browser/api/atom_api_app.h"
#include "atom/browser/api/atom_api_protocol.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/atom_navigation_throttle.h"
#include "atom/browser/atom_quota_permission_context.h"
#include "atom/browser/atom_resource_dispatcher_host_delegate.h"
#include "atom/browser/atom_speech_recognition_manager_delegate.h"
@@ -24,14 +28,16 @@
#include "atom/browser/window_list.h"
#include "atom/common/google_api_key.h"
#include "atom/common/options_switches.h"
#include "atom/common/platform_util.h"
#include "base/command_line.h"
#include "base/environment.h"
#include "base/files/file_util.h"
#include "base/no_destructor.h"
#include "base/stl_util.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/printing/printing_message_filter.h"
#include "chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h"
#include "chrome/browser/speech/tts_message_filter.h"
#include "content/public/browser/browser_ppapi_host.h"
#include "content/public/browser/client_certificate_delegate.h"
@@ -46,6 +52,7 @@
#include "content/public/common/url_constants.h"
#include "content/public/common/web_preferences.h"
#include "device/geolocation/public/cpp/location_provider.h"
#include "net/base/escape.h"
#include "net/ssl/ssl_cert_request_info.h"
#include "ppapi/host/ppapi_host.h"
#include "services/network/public/cpp/resource_request_body.h"
@@ -62,6 +69,10 @@
#include "net/ssl/client_cert_store.h"
#endif
#if defined(ENABLE_PEPPER_FLASH)
#include "chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h"
#endif // defined(ENABLE_PEPPER_FLASH)
#if defined(OVERRIDE_LOCATION_PROVIDER)
#include "atom/browser/fake_location_provider.h"
#endif // defined(OVERRIDE_LOCATION_PROVIDER)
@@ -76,7 +87,7 @@ namespace {
bool g_suppress_renderer_process_restart = false;
// Custom schemes to be registered to handle service worker.
std::string g_custom_service_worker_schemes = "";
base::NoDestructor<std::string> g_custom_service_worker_schemes;
bool IsSameWebSite(content::BrowserContext* browser_context,
const GURL& src_url,
@@ -99,7 +110,7 @@ void AtomBrowserClient::SuppressRendererProcessRestartForOnce() {
void AtomBrowserClient::SetCustomServiceWorkerSchemes(
const std::vector<std::string>& schemes) {
g_custom_service_worker_schemes = base::JoinString(schemes, ",");
*g_custom_service_worker_schemes = base::JoinString(schemes, ",");
}
AtomBrowserClient::AtomBrowserClient() {}
@@ -253,11 +264,11 @@ void AtomBrowserClient::OverrideSiteInstanceForNavigation(
return;
// Do we have an affinity site to manage ?
std::string affinity;
auto* web_contents = content::WebContents::FromRenderFrameHost(rfh);
auto* web_preferences = WebContentsPreferences::From(web_contents);
std::string affinity;
if (web_preferences &&
web_preferences->dict()->GetString("affinity", &affinity) &&
web_preferences->GetPreference("affinity", &affinity) &&
!affinity.empty()) {
affinity = base::ToLowerASCII(affinity);
auto iter = site_per_affinities.find(affinity);
@@ -320,9 +331,9 @@ void AtomBrowserClient::AppendExtraCommandLineSwitches(
arraysize(kCommonSwitchNames));
// The registered service worker schemes.
if (!g_custom_service_worker_schemes.empty())
if (!g_custom_service_worker_schemes->empty())
command_line->AppendSwitchASCII(switches::kRegisterServiceWorkerSchemes,
g_custom_service_worker_schemes);
*g_custom_service_worker_schemes);
#if defined(OS_WIN)
// Append --app-user-model-id.
@@ -349,8 +360,10 @@ void AtomBrowserClient::AppendExtraCommandLineSwitches(
}
void AtomBrowserClient::DidCreatePpapiPlugin(content::BrowserPpapiHost* host) {
#if defined(ENABLE_PEPPER_FLASH)
host->GetPpapiHost()->AddHostFactoryFilter(
base::WrapUnique(new chrome::ChromeBrowserPepperHostFactory(host)));
base::WrapUnique(new ChromeBrowserPepperHostFactory(host)));
#endif
}
void AtomBrowserClient::GetGeolocationRequestContext(
@@ -556,4 +569,57 @@ void AtomBrowserClient::RenderProcessExited(content::RenderProcessHost* host,
}
}
void OnOpenExternal(const GURL& escaped_url, bool allowed) {
if (allowed)
platform_util::OpenExternal(
#if defined(OS_WIN)
base::UTF8ToUTF16(escaped_url.spec()),
#else
escaped_url,
#endif
true);
}
void HandleExternalProtocolInUI(
const GURL& url,
const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
bool has_user_gesture) {
content::WebContents* web_contents = web_contents_getter.Run();
if (!web_contents)
return;
auto* permission_helper =
WebContentsPermissionHelper::FromWebContents(web_contents);
if (!permission_helper)
return;
GURL escaped_url(net::EscapeExternalHandlerValue(url.spec()));
auto callback = base::Bind(&OnOpenExternal, escaped_url);
permission_helper->RequestOpenExternalPermission(callback, has_user_gesture,
url);
}
bool AtomBrowserClient::HandleExternalProtocol(
const GURL& url,
content::ResourceRequestInfo::WebContentsGetter web_contents_getter,
int child_id,
content::NavigationUIData* navigation_data,
bool is_main_frame,
ui::PageTransition page_transition,
bool has_user_gesture) {
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::BindOnce(&HandleExternalProtocolInUI, url, web_contents_getter,
has_user_gesture));
return true;
}
std::vector<std::unique_ptr<content::NavigationThrottle>>
AtomBrowserClient::CreateThrottlesForNavigation(
content::NavigationHandle* handle) {
std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
throttles.push_back(std::make_unique<AtomNavigationThrottle>(handle));
return throttles;
}
} // namespace atom

View File

@@ -6,6 +6,7 @@
#define ATOM_BROWSER_ATOM_BROWSER_CLIENT_H_
#include <map>
#include <memory>
#include <set>
#include <string>
#include <vector>
@@ -46,6 +47,9 @@ class AtomBrowserClient : public brightray::BrowserClient,
static void SetCustomServiceWorkerSchemes(
const std::vector<std::string>& schemes);
std::vector<std::unique_ptr<content::NavigationThrottle>>
CreateThrottlesForNavigation(content::NavigationHandle* handle) override;
protected:
// content::ContentBrowserClient:
void RenderProcessWillLaunch(
@@ -122,6 +126,14 @@ class AtomBrowserClient : public brightray::BrowserClient,
void RenderProcessExited(content::RenderProcessHost* host,
base::TerminationStatus status,
int exit_code) override;
bool HandleExternalProtocol(
const GURL& url,
content::ResourceRequestInfo::WebContentsGetter web_contents_getter,
int child_id,
content::NavigationUIData* navigation_data,
bool is_main_frame,
ui::PageTransition page_transition,
bool has_user_gesture) override;
private:
struct ProcessPreferences {

View File

@@ -10,6 +10,7 @@
#include "atom/browser/atom_permission_manager.h"
#include "atom/browser/browser.h"
#include "atom/browser/request_context_delegate.h"
#include "atom/browser/special_storage_policy.h"
#include "atom/browser/web_view_manager.h"
#include "atom/common/atom_version.h"
#include "atom/common/chrome_version.h"
@@ -42,7 +43,8 @@ AtomBrowserContext::AtomBrowserContext(const std::string& partition,
bool in_memory,
const base::DictionaryValue& options)
: brightray::BrowserContext(partition, in_memory),
url_request_context_getter_(nullptr) {
url_request_context_getter_(nullptr),
storage_policy_(new SpecialStoragePolicy) {
// Construct user agent string.
Browser* browser = Browser::Get();
std::string name = RemoveWhitespace(browser->GetName());
@@ -98,6 +100,10 @@ content::PermissionManager* AtomBrowserContext::GetPermissionManager() {
return permission_manager_.get();
}
storage::SpecialStoragePolicy* AtomBrowserContext::GetSpecialStoragePolicy() {
return storage_policy_.get();
}
void AtomBrowserContext::RegisterPrefs(PrefRegistrySimple* pref_registry) {
pref_registry->RegisterFilePathPref(prefs::kSelectFileLastDirectory,
base::FilePath());

View File

@@ -5,17 +5,24 @@
#ifndef ATOM_BROWSER_ATOM_BROWSER_CONTEXT_H_
#define ATOM_BROWSER_ATOM_BROWSER_CONTEXT_H_
#include <memory>
#include <string>
#include <vector>
#include "base/memory/scoped_refptr.h"
#include "brightray/browser/browser_context.h"
namespace storage {
class SpecialStoragePolicy;
}
namespace atom {
class AtomBlobReader;
class AtomDownloadManagerDelegate;
class AtomPermissionManager;
class RequestContextDelegate;
class SpecialStoragePolicy;
class WebViewManager;
class AtomBrowserContext : public brightray::BrowserContext {
@@ -35,6 +42,7 @@ class AtomBrowserContext : public brightray::BrowserContext {
content::DownloadManagerDelegate* GetDownloadManagerDelegate() override;
content::BrowserPluginGuestManager* GetGuestManager() override;
content::PermissionManager* GetPermissionManager() override;
storage::SpecialStoragePolicy* GetSpecialStoragePolicy() override;
// brightray::BrowserContext:
void RegisterPrefs(PrefRegistrySimple* pref_registry) override;
@@ -58,6 +66,7 @@ class AtomBrowserContext : public brightray::BrowserContext {
std::unique_ptr<AtomDownloadManagerDelegate> download_manager_delegate_;
std::unique_ptr<WebViewManager> guest_manager_;
std::unique_ptr<AtomPermissionManager> permission_manager_;
scoped_refptr<storage::SpecialStoragePolicy> storage_policy_;
std::unique_ptr<AtomBlobReader> blob_reader_;
std::unique_ptr<RequestContextDelegate> request_context_delegate_;
std::string user_agent_;

View File

@@ -4,6 +4,8 @@
#include "atom/browser/atom_browser_main_parts.h"
#include <utility>
#include "atom/browser/api/atom_api_app.h"
#include "atom/browser/api/trackable_object.h"
#include "atom/browser/atom_browser_client.h"
@@ -144,7 +146,7 @@ void AtomBrowserMainParts::PostEarlyInitialization() {
// Enable support for v8 inspector
node_debugger_.reset(new NodeDebugger(env));
node_debugger_->Start(js_env_->platform());
node_debugger_->Start();
// Add Electron extended APIs.
atom_bindings_->BindTo(js_env_->isolate(), env->process_object());

View File

@@ -6,6 +6,7 @@
#define ATOM_BROWSER_ATOM_BROWSER_MAIN_PARTS_H_
#include <list>
#include <memory>
#include <string>
#include "base/callback.h"

View File

@@ -150,8 +150,8 @@ bool AtomDownloadManagerDelegate::DetermineDownloadTarget(
if (!save_path.empty()) {
callback.Run(save_path,
download::DownloadItem::TARGET_DISPOSITION_OVERWRITE,
download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
save_path, download::DOWNLOAD_INTERRUPT_REASON_NONE);
download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, save_path,
download::DOWNLOAD_INTERRUPT_REASON_NONE);
return true;
}

View File

@@ -5,6 +5,7 @@
#include "atom/browser/atom_javascript_dialog_manager.h"
#include <string>
#include <utility>
#include <vector>
#include "atom/browser/api/atom_api_web_contents.h"
@@ -62,7 +63,7 @@ void AtomJavaScriptDialogManager::RunJavaScriptDialog(
std::string checkbox;
if (origin_counts_[origin] > 1 && web_preferences &&
web_preferences->IsEnabled("safeDialogs") &&
!web_preferences->dict()->GetString("safeDialogsMessage", &checkbox)) {
!web_preferences->GetPreference("safeDialogsMessage", &checkbox)) {
checkbox = "Prevent this app from creating additional dialogs";
}

View File

@@ -0,0 +1,44 @@
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "atom/browser/atom_navigation_throttle.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "content/public/browser/navigation_handle.h"
namespace atom {
AtomNavigationThrottle::AtomNavigationThrottle(
content::NavigationHandle* navigation_handle)
: content::NavigationThrottle(navigation_handle) {}
AtomNavigationThrottle::~AtomNavigationThrottle() {}
const char* AtomNavigationThrottle::GetNameForLogging() {
return "AtomNavigationThrottle";
}
content::NavigationThrottle::ThrottleCheckResult
AtomNavigationThrottle::WillRedirectRequest() {
auto* handle = navigation_handle();
auto* contents = handle->GetWebContents();
if (!contents) {
NOTREACHED();
return PROCEED;
}
auto api_contents =
atom::api::WebContents::CreateFrom(v8::Isolate::GetCurrent(), contents);
if (api_contents.IsEmpty()) {
NOTREACHED();
return PROCEED;
}
if (api_contents->EmitNavigationEvent("will-redirect", handle)) {
return CANCEL;
}
return PROCEED;
}
} // namespace atom

View File

@@ -0,0 +1,27 @@
// Copyright (c) 2018 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_ATOM_NAVIGATION_THROTTLE_H_
#define ATOM_BROWSER_ATOM_NAVIGATION_THROTTLE_H_
#include "content/public/browser/navigation_throttle.h"
namespace atom {
class AtomNavigationThrottle : public content::NavigationThrottle {
public:
explicit AtomNavigationThrottle(content::NavigationHandle* handle);
~AtomNavigationThrottle() override;
AtomNavigationThrottle::ThrottleCheckResult WillRedirectRequest() override;
const char* GetNameForLogging() override;
private:
DISALLOW_COPY_AND_ASSIGN(AtomNavigationThrottle);
};
} // namespace atom
#endif // ATOM_BROWSER_ATOM_NAVIGATION_THROTTLE_H_

View File

@@ -4,6 +4,7 @@
#include "atom/browser/atom_permission_manager.h"
#include <memory>
#include <vector>
#include "atom/browser/atom_browser_client.h"
@@ -100,6 +101,11 @@ void AtomPermissionManager::SetPermissionRequestHandler(
request_handler_ = handler;
}
void AtomPermissionManager::SetPermissionCheckHandler(
const CheckHandler& handler) {
check_handler_ = handler;
}
int AtomPermissionManager::RequestPermission(
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
@@ -223,4 +229,26 @@ int AtomPermissionManager::SubscribePermissionStatusChange(
void AtomPermissionManager::UnsubscribePermissionStatusChange(
int subscription_id) {}
bool AtomPermissionManager::CheckPermissionWithDetails(
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
const base::DictionaryValue* details) const {
if (check_handler_.is_null()) {
return true;
}
auto* web_contents =
content::WebContents::FromRenderFrameHost(render_frame_host);
return check_handler_.Run(web_contents, permission, requesting_origin,
*details);
}
blink::mojom::PermissionStatus
AtomPermissionManager::GetPermissionStatusForFrame(
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin) {
return blink::mojom::PermissionStatus::GRANTED;
}
} // namespace atom

View File

@@ -6,6 +6,7 @@
#define ATOM_BROWSER_ATOM_PERMISSION_MANAGER_H_
#include <map>
#include <memory>
#include <vector>
#include "base/callback.h"
@@ -31,9 +32,14 @@ class AtomPermissionManager : public content::PermissionManager {
content::PermissionType,
const StatusCallback&,
const base::DictionaryValue&)>;
using CheckHandler = base::Callback<bool(content::WebContents*,
content::PermissionType,
const GURL& requesting_origin,
const base::DictionaryValue&)>;
// Handler to dispatch permission requests in JS.
void SetPermissionRequestHandler(const RequestHandler& handler);
void SetPermissionCheckHandler(const CheckHandler& handler);
// content::PermissionManager:
int RequestPermission(
@@ -66,6 +72,15 @@ class AtomPermissionManager : public content::PermissionManager {
const base::DictionaryValue* details,
const base::Callback<
void(const std::vector<blink::mojom::PermissionStatus>&)>& callback);
blink::mojom::PermissionStatus GetPermissionStatusForFrame(
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin) override;
bool CheckPermissionWithDetails(content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
const base::DictionaryValue* details) const;
protected:
void OnPermissionResponse(int request_id,
@@ -93,6 +108,7 @@ class AtomPermissionManager : public content::PermissionManager {
using PendingRequestsMap = base::IDMap<std::unique_ptr<PendingRequest>>;
RequestHandler request_handler_;
CheckHandler check_handler_;
PendingRequestsMap pending_requests_;

View File

@@ -5,9 +5,7 @@
#include "atom/browser/atom_resource_dispatcher_host_delegate.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/web_contents_permission_helper.h"
#include "atom/browser/web_contents_preferences.h"
#include "atom/common/platform_util.h"
#include "base/strings/utf_string_conversions.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/download_manager.h"
@@ -28,36 +26,6 @@ namespace atom {
namespace {
void OnOpenExternal(const GURL& escaped_url, bool allowed) {
if (allowed)
platform_util::OpenExternal(
#if defined(OS_WIN)
base::UTF8ToUTF16(escaped_url.spec()),
#else
escaped_url,
#endif
true);
}
void HandleExternalProtocolInUI(
const GURL& url,
const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
bool has_user_gesture) {
content::WebContents* web_contents = web_contents_getter.Run();
if (!web_contents)
return;
auto* permission_helper =
WebContentsPermissionHelper::FromWebContents(web_contents);
if (!permission_helper)
return;
GURL escaped_url(net::EscapeExternalHandlerValue(url.spec()));
auto callback = base::Bind(&OnOpenExternal, escaped_url);
permission_helper->RequestOpenExternalPermission(callback, has_user_gesture,
url);
}
#if defined(ENABLE_PDF_VIEWER)
void OnPdfResourceIntercepted(
const GURL& original_url,
@@ -103,16 +71,6 @@ void OnPdfResourceIntercepted(
AtomResourceDispatcherHostDelegate::AtomResourceDispatcherHostDelegate() {}
bool AtomResourceDispatcherHostDelegate::HandleExternalProtocol(
const GURL& url,
content::ResourceRequestInfo* info) {
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
base::BindOnce(&HandleExternalProtocolInUI, url,
info->GetWebContentsGetterForRequest(),
info->HasUserGesture()));
return true;
}
bool AtomResourceDispatcherHostDelegate::ShouldInterceptResourceAsStream(
net::URLRequest* request,
const std::string& mime_type,

View File

@@ -17,8 +17,6 @@ class AtomResourceDispatcherHostDelegate
AtomResourceDispatcherHostDelegate();
// content::ResourceDispatcherHostDelegate:
bool HandleExternalProtocol(const GURL& url,
content::ResourceRequestInfo* info) override;
bool ShouldInterceptResourceAsStream(net::URLRequest* request,
const std::string& mime_type,
GURL* origin,

View File

@@ -5,6 +5,7 @@
#include "atom/browser/atom_speech_recognition_manager_delegate.h"
#include <string>
#include <utility>
#include "base/callback.h"

View File

@@ -4,6 +4,8 @@
#include "atom/browser/bridge_task_runner.h"
#include <utility>
#include "base/message_loop/message_loop.h"
namespace atom {

View File

@@ -4,6 +4,7 @@
#include "atom/browser/browser.h"
#include <memory>
#include <string>
#include "atom/browser/atom_browser_main_parts.h"
@@ -155,10 +156,23 @@ void Browser::DidFinishLaunching(const base::DictionaryValue& launch_info) {
base::CreateDirectoryAndGetError(user_data, nullptr);
is_ready_ = true;
if (ready_promise_) {
ready_promise_->Resolve();
}
for (BrowserObserver& observer : observers_)
observer.OnFinishLaunching(launch_info);
}
util::Promise* Browser::WhenReady(v8::Isolate* isolate) {
if (!ready_promise_) {
ready_promise_ = new util::Promise(isolate);
if (is_ready()) {
ready_promise_->Resolve();
}
}
return ready_promise_;
}
void Browser::OnAccessibilitySupportChanged() {
for (BrowserObserver& observer : observers_)
observer.OnAccessibilitySupportChanged();

View File

@@ -5,11 +5,13 @@
#ifndef ATOM_BROWSER_BROWSER_H_
#define ATOM_BROWSER_BROWSER_H_
#include <memory>
#include <string>
#include <vector>
#include "atom/browser/browser_observer.h"
#include "atom/browser/window_list_observer.h"
#include "atom/common/promise_util.h"
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/observer_list.h"
@@ -190,6 +192,10 @@ class Browser : public WindowListObserver {
base::string16 description;
base::FilePath icon_path;
int icon_index;
UserTask();
UserTask(const UserTask&);
~UserTask();
};
// Add a custom task to jump list.
@@ -240,6 +246,7 @@ class Browser : public WindowListObserver {
bool is_shutting_down() const { return is_shutdown_; }
bool is_quiting() const { return is_quiting_; }
bool is_ready() const { return is_ready_; }
util::Promise* WhenReady(v8::Isolate* isolate);
protected:
// Returns the version of application bundle or executable file.
@@ -275,6 +282,8 @@ class Browser : public WindowListObserver {
int badge_count_ = 0;
util::Promise* ready_promise_ = nullptr;
#if defined(OS_MACOSX)
base::DictionaryValue about_panel_options_;
#endif

View File

@@ -336,10 +336,9 @@ void Browser::SetAboutPanelOptions(const base::DictionaryValue& options) {
for (base::DictionaryValue::Iterator iter(options); !iter.IsAtEnd();
iter.Advance()) {
std::string key = iter.key();
std::string value;
if (!key.empty() && iter.value().GetAsString(&value)) {
if (!key.empty() && iter.value().is_string()) {
key[0] = base::ToUpperASCII(key[0]);
about_panel_options_.SetString(key, value);
about_panel_options_.SetString(key, iter.value().GetString());
}
}
}

View File

@@ -84,6 +84,10 @@ bool FormatCommandLineString(base::string16* exe,
} // namespace
Browser::UserTask::UserTask() = default;
Browser::UserTask::UserTask(const UserTask&) = default;
Browser::UserTask::~UserTask() = default;
void Browser::Focus() {
// On Windows we just focus on the first window found for this process.
DWORD pid = GetCurrentProcessId();

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