In the registerFileProtocol docs the "headers" argument of the callback was described as being a list. In fact is has to be an Object mapping header-entries to values. This can be seen in Line 326 of `/spec/api-protocol-spec.js` [fe618631f1/spec/api-protocol-spec.js (L326)].
We now create a new instance of atom::api::DesktopCapturer for every
request instead of weirdly re-using the same instance and queuing
requests. This means there is now a 1:1 relationship between request
and DesktopCapturer so there isn't a race condition between the observer
for one request calling back before the observer of another. This is an
issue ever since the backing APIs moved to worker threads.
This also does a few things to ensure memory management
* Only ever listen to one event per-request, after that we wipe the emit
function to ignore all future events
* Ensures we clean up the window_capturer_, screen_capturer_ and
captured_sources_ in native land once the request is over.
This _in theory_ fixes a flake we've been seeing on CI where we try to
resolve the promise for a request that no longerr exists.
* Pass protocol type and handler to factory
* Add converter for network::ResourceRequest
* Implement Buffer and String protocol handler
* Implement file protocol
* fix: add boringssl backport to support node upgrade
* fix: Update node_includes.h, add DCHECK macros
* fix: Update node Debug Options parser usage
* fix: Fix asar setup
* fix: using v8Util in isolated context
* fix: make "process" available in preload scripts
* fix: use proper options parser and remove setting of _breakFirstLine
_breakFirstLine was being set on the process, but that has changed in node 12 and so is no longer needed. Node will handle it properly when --inspect-brk is provided
* chore: update node dep sha
* fix: process.binding => _linkedBinding in sandboxed isolated preload
* fix: make original-fs work with streams
* build: override node module version
* fix: use _linkedBinding in content_script/init.js
* chore: update node ref in DEPS
* build: node_module_version should be 73
* 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>
* chore: bump chromium in DEPS to 1e9f9a24aa12bea9cf194a82a7e249bd1242ec4f
* chore: update patches
* Make WebContents' theme color a base::Optional<SkColor>
1540022
* update autofill patch for incorrect header includes
* Move Shell messages to web_test and rename to BlinkTest.
1525181
* Make PlatformNotificationServiceImpl a KeyedService.
1336150
* Move MediaPlayerId to its own file.
1547057
* Remove net/base/completion_callback.h, which is no longer used
1552821
* AW NS: support file scheme cookies
1533486
* Remove SecurityInfo and adapt remaining consumers
1509455
* Remove deprecated type-specific number to string conversion functions
1545881
* DevTools: Adding new performance histograms for launch of top 4 tools
1506388
* Update include paths for //base/hash/hash.h
1544630
* build: Disable ensure_gn_version gclient hook for mac CI checkout
* update patches
* use maybe version of v8::String::NewFromTwoByte
* bump appveyor image version
* fix mac ci hopefully
* Convert enum to enum class for MenuAnchorPosition
1530508
* use maybe version of ToObject
* RenderViewHost::GetProcess is no longer const
* Unrefcount AuthChallengeInfo
1550631
* MenuButtonController takes Button rather than MenuButton
1500935
* add //ui/views_bridge_mac to deps to fix link error
* forward declare views::Button in atom::MenuDelegate
* more v8 patches
* base/{=> hash}/md5.h
1535124
* gfx::{PlatformFontWin => win}::*
1534178
* fix v8 patches
* [base] Rename TaskScheduler to ThreadPool
1561552
* use internal_config_base for bytecode_builtins_list_generator
avoids windows link errors
* FIXME: temporarily disable v8/breakpad integration
* FIXME: temporarily disable prevent-will-redirect test
* FIXME: disable neon on aarch64 pending crbug.com/953815
* update to account for WebCursor refactor
1562755
* enable stack dumping on appveyor
* Revert "FIXME: disable neon on aarch64 pending crbug.com/953815"
This reverts commit 57f082026be3d83069f2a2814684abf4dc9e7b53.
* fix: remove const qualifiers to match upstream
* fix: remove const qualifiers to match upstream in cc files as well
* don't throw an error when testing if an object is an object
* use non-deprecated Buffer constructor
* Remove net::CookieSameSite::DEFAULT_MODE enum value
1567955
* depend on modded dbus-native to work around buffer deprecation
https://github.com/sidorares/dbus-native/pull/262
* revert clang roll to fix arm build on linux
* fixup! depend on modded dbus-native to work around buffer deprecation
need more coffee
* update coffee-script
* robustify verify-mksnapshot w.r.t. command-line parameters
* Revert "robustify verify-mksnapshot w.r.t. command-line parameters"
This reverts commit a49af01411f684f6025528d604895c3696e0bc57.
* fix mksnapshot by matching args
* update patches
* TMP: enable rdp on appveyor
* Changed ContentBrowserClient::CreateQuotaPermissionContext() to return scoped_refptr.
1569376
* Make content::ResourceType an enum class.
1569345
* fixup! Make content::ResourceType an enum class.
* turn off rdp
* use net::CompletionRepeatingCallback instead of base::Callback<void(int)>
* remove disable_ensure_gn_version_gclient_hook.patch
* copy repeating callback instead of std::move
* fix lint
* add completion_repeating_callback.h include
This turns the AtomViewMsg_Offscreen message, which only called the global setter blink::WebView::SetUseExternalPopupMenus(false) to get Chrome to render popup menus in the renderer instead of externally on macOS, into a command-line renderer flag --offscreen which does the same thing, except at render thread startup time, which is where Chromium sets the flag: https://chromium.googlesource.com/chromium/src/+/refs/tags/75.0.3755.3/content/renderer/render_thread_impl.cc#728.
This was the last usage of RenderViewObserver in our codebase, so this PR also removes that class.
* Comparison using is when operands support __eq__
Comparison using 'is' when equivalence is not the same as identity
When you compare two values using the is or is not operator, it is the object identities of the two values that is tested rather than their equality. If the class of either of the values in the comparison redefines equality then the is operator may return False even though the objects compare as equal. Equality is defined by the __eq__ or, in Python2, __cmp__ method. To compare two objects for equality, use the == or != operator instead.
Recommendation
When you want to compare the value of two literals, use the comparison operator == or != in place of is or is not.
If the uniqueness property or performance are important then use an object that does not redefine equality.
* fix: Comparison using is when operands support __eq__
Comparison using 'is' when equivalence is not the same as identity
When you compare two values using the is or is not operator, it is the object identities of the two values that is tested rather than their equality. If the class of either of the values in the comparison redefines equality then the is operator may return False even though the objects compare as equal. Equality is defined by the __eq__ or, in Python2, __cmp__ method. To compare two objects for equality, use the == or != operator instead.
Recommendation
When you want to compare the value of two literals, use the comparison operator == or != in place of is or is not.
If the uniqueness property or performance are important then use an object that does not redefine equality.
Previously, we were creating the app logs folder at a predefined location during initial electron startup, which meant that it had to be manually removed and prevented clean app portability. This refactors that implementation such that it's now an opt-in feature and developers must call app.setAppLogsPath(path) with an optional custom path in order to set this directory.