* refactor: bundle the browser and renderer process electron code
* Bundles browser/init and renderer/init
* Improves load performance of main process by ~40%
* Improves load performance of renderer process by ~30%
* Prevents users from importing our "requiring" our internal logic such
as ipc-main-internal. This makes those message buses safer as they are
less accessible, there is still some more work to be done though to lock
down those buses completely.
* The electron.asar file now only contains 2 files, as a future
improvement maybe we can use atom_natives to ship these two files
embedded in the binary
* This also removes our dependency on browserify which had some strange
edge cases that caused us to have to hack around require-order and
stopped us using certain ES6/7 features we should have been able to use
(async / await in some files in the sandboxed renderer init script)
TLDR: Things are faster and better :)
* fix: I really do not want to talk about it
* chore: add performance improvements from debugging
* fix: resolve the provided path so webpack thinks it is absolute
* chore: fixup per PR review
* fix: use webpacks ProvidePlugin to keep global, process and Buffer alive after deletion from global scope for use in internal code
* fix: bundle worker/init as well to make node-in-workers work
* chore: update wording as per feedback
* chore: make the timers hack work when yarn is not used
* build: ensure consistent package-lock across multiple machines
* build: fix linting errors and use npm ci instead of npm install
* build: use a yarn.lock and yarn instead of package-lock and npm
* chore: replace package-lock.json files with yarn.lock
* chore: replace last instance of `npm install`
* build: optimize the happy path when syncing on CI
This adds a new cache for the "src" directory that is only ever used if
the cache key matches exactly. If there is no exact match we fall back
to the old strategy of using the git cache.
On the happy path this can make the checkout on linux/macOS take around
5-6 minutes which is **significantly** faster than the original 15-18
minutes.
* build: sort readdir result to ensure stability
* build: increment cache key
* Update config.yml
* build: ensure that the cleanly checked out Electron has had hooks run on it
* build: do not remove deps/v8
* build: ensure clean git directory when generating deps hash
* chore: add comments to caching logic
* Update .circleci/config.yml
Co-Authored-By: MarshallOfSound <samuel.r.attard@gmail.com>
* spec: add tests for the autoUpdater on macOS that actually test if it works
* spec: add express as dep
* spec: add logic to auto-trust self-signed certificate and not run autoupdate specs on MAS
* build: fix the step name for importing the codesign cert
* chore: update updater spec PR as per feedback
* fix: s/atomBinding/electronBinding
* build: use spawn instead of exec
On windows removeSync randomly seems to fail with DIRNOTEMPTY. By using
the async version fs-extra will do some back-off-retry logic to
hopefully get this dir deleted
* build: upgrade asar to ^1.0.0
This is to remove a transitive security vulnerability.
The API changed from callbacks to Promises, so `script/gn-asar.js`
needed to be changed.
* build: add klaw to package.json
`klaw` is used in `script/lint.js`, but it was a transitive dependency.
* build: add fs-extra to package.json
`fs-extra` is used in `script/gn-asar.js`, but it was a transitive
dependency.
* refactor: remove js2asar.py and port logic to JS in more readable / GN-style way
* refactor: further clean up ASAR impl, add new node_action GN template
* fix: Note detection in PR
* fix: 'BREAKING CHANGE' detection in PR body
* fix: when to include PRs that landed in other branches too
* fix: when available, use clerk's notes
* Update timeout for native_mksnapshot and use bigger machines
* Revert "build: temporarily disable arm to unblock nightlies (#16479)"
This reverts commit 51961fccfa.
* fix: use version name in release notes
* fix: omit previously-released notes
* fix: sniff semantic commit types from PR subjects
instead of only from commit messages
* fix: do not use unrecognized semantic commit types
* chore: do not hardcode Release-Notes comment text
It used to be '<!-- One-line Change Summary Here-->',
it's currently a link to a best-practices page, and
it'll probably change again in the future. Let's just
match on <!--.*--> instead.
* chore: copyedit the help page
* chore: use clerk's OMIT_FROM_RELEASE_NOTES_KEYS
* chore: tweak comments
* chore: rename 'breaks' property as 'breaking'
* fix: use PR 'Notes' comment in release notes
* fix: follow links in roller-bot PRs
* refactor: better reference point version selection
* if we're a stable release, use the current brnach's previous stable
* if we're a beta release, use the current branch's previous beta
* if no match found, use the newest stable that precedes this branch
* refactor: dedup the caching functions' code
* refactor: partially rewrite release note generator
* parse release notes comments from PRs
* do not display no-notes PRs
* handle roller-bot commits by following cross-repo commits/PRs
* minor tweaks to note rendering, e.g. capitalization
* fix: fix lint:js script typo
* fix: copy originalPr value to rollerbot PR chains
* fix: handle more cases in release notes generator
* handle force-pushes where no PR
* better type guessing on pre-semantic commits
* fix: handle more edge cases in the note generator
* better removal of commits that landed before the reference point
* ensure '<!-- One-line Change Summary Here-->' is removed from notes
* handle more legacy commit body notes e.g. "Chore(docs)"
* check for fix markdown in PR body e.g. a link to the issue page
* chore: tweak code comments
* refactor: easier note generator command-line args
* refactor: group related notes together
* feat: query commits locally for gyp and gn deps
* chore: slightly better filtering of old commits
* feat: omit submodule commits for .0.0 releases
More specifically, only include them if generating release
notes relative to another release on the same branch.
Before that first release, there's just too much churn.
* refactor: make release-notes usable as a module
Calling it from the command line and from require()() now
do pretty much the same thing.
* refactor: passing command-line args means use HEAD
* chore: plug in the release note generator
* feat: support multiline 'Notes:' messages.
xref: https://github.com/electron/trop/pull/56
xref: https://github.com/electron/clerk/pull/16
* remove accidental change in package.json
* simplify an overcomplicated require() call
* Don't use PascalCase on releaseNotesGenerator()
* Remove code duplication in release notes warnings
* remove commented-out code.
* don't use single-character variable names.
For example, use 'tag' instead of 't'. The latter was being
used for map/filter arrow function args.
* Look for 'backport' rather than 'ackport'.
* Wrap all block statements in curly braces.
* fix tyop
* fix oops
* Check semver validity before calling semver.sort()
* test: add an option to native tests runner to run also disabled tests
* ci: run all native tests on clean Chromium
* ci: update the disabled tests list for native unittests
* ci: run unittests on clean Chromium
* test: add '--run-only-disabled-tests' flag to "script/native-tests.py"
* ci: add a job to run only disabled unittests
* test: use a different GN config for the native tests
* test: enable blink_common_unittests
* test: disable WeakPtrDeathTest*
* feat: convenience to apply all formatter patches
run-clang-format.py can create multiple patchfiles.
This change prints a command that can be pasted into
a shell to apply all of them together.
* feat: put all generated style diffs in one file
This way it will be easier to `git apply` fixes to multiple
fixed files at once.
* build: make external binaries download action more flexible
* chore: reformat DEPS
Make it look more like Chromium //DEPS:
- use name-pattern-condition-action order for hooks
- add trailing commas
- remove some line breaks
Also remove redundant entry from "recursedeps".
* Update to Chromium 68.0.3440.128 and Node 10.10.0
* update v8, ffmpeg, chromium, crashpad, boringssl, and webrtc patches
* fix SSL_get_tlsext_status_type patch
* pass encryption_modes_supported to CdmInfo
* kNoSandbox moved into service_manager
* bump CHROME_VERSION_STRING
TODO: automatically pull in the real chrome version
* PathService -> base::PathService
* net::X509Certificate::Equals -> net::X509Certificate::EqualsExcludingChain
* use content::ChildProcessTerminationInfo
* GetHandle() -> GetProcess().Handle()
* ScopedNestableTaskAllower doesn't take an argument
* net::HttpAuthCache::ClearEntriesAddedWithin -> ClearAllEntries
* std::unique_ptr<WebContents>
* blink::WebFullscreenOptions
* OnAudioStateChanged doesn't take a WebContents
* content::RESULT_CODE_NORMAL_EXIT -> service_manager::RESULT_CODE_NORMAL_EXIT
* MessageLoopCurrent
* WasResized -> SynchronizeVisualProperties
* SetTimeStamp takes a base::TimeTicks
* ExecuteScriptInIsolatedWorld is single-script only
* DispatchNonPersistentCloseEvent takes a callback now
* expose URLRequestContextGetter::{Add,Remove}Observer
* test: remove no longer existing Chromium test deps
cc_blink_unittests has been removed in
https://chromium-review.googlesource.com/1053765
mojo_common_unittests has been removed in
https://chromium-review.googlesource.com/1028000
* SetFdLimit -> IncreaseFdLimitTo
NOTE: the behaviour of this API has changed slightly, and we should
mention that in the notes.
* MessageLoop::QuitWhenIdleClosure -> RunLoop::QuitCurrentWhenIdleClosureDeprecated
* certificate_transparency moved out of net/
pending a clearer decision about what to do with CT
in the mean time, copy CreateLogVerifiersForKnownLogs from deleted chromium source
* add secure_origin_whitelist to chrome source list
NOTE: is this something we actually want? cc @deepak1556
* DrainBackgroundTasks -> DrainTasks
* use new node options parser
* fix disable_scroll_begin_dcheck.patch
* ViewsDelegate::CreateWebContents went away
see https://chromium-review.googlesource.com/c/chromium/src/+/1031314
* kZygoteProcess moved into service_manager
* test: minor improvements to the Node spec
- reformat some parts
- better failures reporting with `expect`
- skip some tests instead of marking them as passed
* chromium removed *_posix.cc from the source filters
* test: fix :electron_tests compilation
* better crash diagnostics in ffmpeg test
* fix: enable back a DCHECK in viz::ServerSharedBitmapManager
Fixes#14327.
Backports https://chromium-review.googlesource.com/802574.
* chore: update linux sysroots
* chore: remove obsolete "install-sysroot.py" script
* test: fix frame-subscriber test on Mac
* disable OSR for now
* test: make before-input-event test more robust
* test: make run-as-node --inspect test more robust on windows
* roll node to v10.11.0
* avoid duplicate files when building a zip
* disable failing assert in beginFrameSubscription dirty-rectangle test
* experiment with is_cfi = false
* fix: build torque with x64 toolchain
Co-Authored-By: Alexey Kuzmin <github@alexeykuzmin.com>
* test: disable the "app.relaunch" test on Linux
* chore: bump node to get header tar file
* chore: bump node to fix tar.py line endings
* chore: add GN linter
* chore: fix GN lint errors
* try some crazy bash to get a gn exe
* base64 on linux is different
* cloning build_tools doesn't download GN
* download_from_google_storage needs depot_tools in the path
* fixup! chore: add GN linter
* 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
* 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 6a1a50aa690124626b4357751949397298aeac95.
* Try specifying v8_snapshot_toolchain
* Fix v8_snapshot_toolchain reference
* Fix artifact locations
* Test native mksnapshot
* 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
* 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
* 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.
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.