Compare commits

..

32 Commits

Author SHA1 Message Date
Electron Bot
adffa99e05 Bump v6.0.0-beta.13 2019-07-10 11:04:56 -07:00
Alexandre Lacheze
51f03033a4 docs: precise that node integration is enabled in natively opened window if nodeIntegrationInSubFrames is true (#19142) 2019-07-10 10:37:28 -05:00
trop[bot]
733251866c fix: use binding.ipc instead of binding.sendTo which is undefined (#19106) 2019-07-10 10:35:55 -05:00
trop[bot]
41a7d9e42b ci: do not use the MOCHA_FILE env variable (#19180)
It is not used in a expected way anyway.
2019-07-10 10:35:35 -05:00
trop[bot]
ddbbf34433 remove non-existent event (#19169) 2019-07-10 10:34:27 -05:00
Milan Burda
6f65dec6a2 ci: add check for dist zip file changes (#19172) 2019-07-09 16:01:16 -05:00
Electron Bot
a66657112c chore: bump chromium in DEPS to 76.0.3809.60 (#19165) 2019-07-09 12:54:07 -07:00
Jeremy Apthorp
f5c3394930 fix: dump correct breakpad symbols on macOS (#19155) 2019-07-09 09:47:11 +09:00
Electron Bot
84bae64def chore: bump chromium to 76.0.3809.59 (6-0-x) (#19134) 2019-07-08 16:03:40 -07:00
Milan Burda
4185b93abb Revert "feat: only allow bundled preload scripts (#17308)" (#19132)
This reverts commit 8cf15cc931.
2019-07-08 11:33:54 +09:00
trop[bot]
b1e9f50fad fix: check parent-child relationship in canAccessWindow (#19118) 2019-07-05 11:20:08 -07:00
Electron Bot
6bd901d9ca chore: bump chromium to 76.0.3809.56 (6-0-x) (#19111)
* chore: bump chromium in DEPS to 76.0.3809.55

* chore: bump chromium in DEPS to 76.0.3809.56
2019-07-05 11:13:16 -07:00
trop[bot]
1c2b8f8d9a fix: handle no env in externsion world set up (#19105)
Previously when GetEnvironment returned null this extension setup
crashed.
2019-07-03 16:36:30 -07:00
Electron Bot
cb9b288d8b Bump v6.0.0-beta.12 2019-07-03 14:08:45 -07:00
Shelley Vohr
69fe33a2b1 Revert "Bump v6.0.0-beta.12"
This reverts commit 8a285f29ed.
2019-07-03 14:06:12 -07:00
Electron Bot
52b42546ed chore: bump chromium in DEPS to 76.0.3809.54 (#19095) 2019-07-03 08:36:42 -07:00
Electron Bot
8a285f29ed Bump v6.0.0-beta.12 2019-07-02 11:25:31 -07:00
Shelley Vohr
92df6cc36c fix: only check darkMode effectiveAppearance in 10.15 (#19013) 2019-07-02 11:04:30 -07:00
Electron Bot
ab91656148 chore: bump chromium in DEPS to 76.0.3809.52 (#19079) 2019-07-02 10:44:16 -07:00
Electron Bot
1fb1e5b2b2 Revert "Bump v6.0.0-beta.12"
This reverts commit 54908b56e5.
2019-07-02 10:17:31 -07:00
Electron Bot
54908b56e5 Bump v6.0.0-beta.12 2019-07-02 10:11:38 -07:00
Shelley Vohr
48bc247ef7 fix: silent printing mode (#19037) 2019-07-02 10:03:00 -07:00
trop[bot]
19d9955125 fix: Correct modal focus behavior on macOS (#19062)
* wip: wish i could hack the main window focus away

* main -> key

* remove useless code

* test: Add focus event spec

* test: more robust spec

* test: simplify test

* duplicate non-firing macOS event listener 😳

* destroy 🚨
2019-07-01 16:39:45 -07:00
Electron Bot
24d79d9e5c chore: bump chromium in DEPS to 76.0.3809.51 (#19057) 2019-07-01 12:14:15 -07:00
Electron Bot
27d0a4d33d chore: bump chromium in DEPS to 76.0.3809.50 (#19054) 2019-06-30 21:38:51 -07:00
Electron Bot
48226f71ad chore: bump chromium to 76.0.3809.49 (6-0-x) (#19030)
* chore: bump chromium in DEPS to 76.0.3809.48

* chore: bump chromium in DEPS to 76.0.3809.49
2019-06-29 18:46:41 -07:00
Shelley Vohr
a4acc16e10 fix: make tray not block main process (#18880) (#18969)
* fix: make tray not block main process

* make AtomMenuModel refcounted
2019-06-28 14:10:45 -05:00
trop[bot]
d8dd94e3a3 fix: delay emitting screen events by a tick to avoid re-entrancy crash (#19022) 2019-06-28 16:23:19 +09:00
Electron Bot
eb48dcf0a3 chore: bump chromium in DEPS to 76.0.3809.47 (#19010) 2019-06-27 16:34:00 -07:00
Samuel Attard
adfe537e32 docs: fix heading level for power-monitor docs (#19015) 2019-06-27 13:21:09 -07:00
Electron Bot
0d5d54cbae chore: bump chromium in DEPS to 76.0.3809.45 (#18991) 2019-06-26 08:47:25 -07:00
Electron Bot
988ad92415 chore: bump chromium in DEPS to 76.0.3809.43 (#18974) 2019-06-25 23:57:02 -07:00
53 changed files with 1434 additions and 433 deletions

View File

@@ -35,6 +35,7 @@ env-debug-build: &env-debug-build
env-testing-build: &env-testing-build
GN_CONFIG: //electron/build/args/testing.gn
CHECK_DIST_MANIFEST: '1'
env-release-build: &env-release-build
GN_CONFIG: //electron/build/args/release.gn
@@ -279,6 +280,28 @@ step-electron-dist-build: &step-electron-dist-build
command: |
cd src
ninja -C out/Default electron:electron_dist_zip
if [ "$CHECK_DIST_MANIFEST" == "1" ]; then
if [ "`uname`" == "Darwin" ]; then
target_os=mac
target_cpu=x64
if [ x"$MAS_BUILD" == x"true" ]; then
target_os=mac_mas
fi
elif [ "`uname`" == "Linux" ]; then
target_os=linux
if [ x"$TARGET_ARCH" == x ]; then
target_cpu=x64
elif [ "$TARGET_ARCH" == "ia32" ]; then
target_cpu=x86
else
target_cpu="$TARGET_ARCH"
fi
else
echo "Unknown system: `uname`"
exit 1
fi
electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.$target_os.$target_cpu.manifest
fi
step-electron-dist-store: &step-electron-dist-store
store_artifacts:
@@ -427,25 +450,13 @@ step-mksnapshot-store: &step-mksnapshot-store
path: src/out/Default/mksnapshot.zip
destination: mksnapshot.zip
step-maybe-build-dump-syms: &step-maybe-build-dump-syms
run:
name: Build dump_syms binary
command: |
if [ "$GENERATE_SYMBOLS" == "true" ]; then
cd src
# Build needed dump_syms executable
ninja -C out/Default third_party/breakpad:dump_syms
fi
step-maybe-generate-breakpad-symbols: &step-maybe-generate-breakpad-symbols
run:
name: Generate breakpad symbols
command: |
if [ "$GENERATE_SYMBOLS" == "true" ]; then
cd src
export BUILD_PATH="$PWD/out/Default"
export DEST_PATH="$BUILD_PATH/breakpad_symbols"
electron/script/dump-symbols.py -b $BUILD_PATH -d $DEST_PATH -v
ninja -C out/Default electron:electron_symbols
fi
step-maybe-zip-symbols: &step-maybe-zip-symbols
@@ -653,7 +664,6 @@ steps-electron-build-for-tests: &steps-electron-build-for-tests
# Save all data needed for a further tests run.
- *step-persist-data-for-tests
- *step-maybe-build-dump-syms
- *step-maybe-generate-breakpad-symbols
- *step-maybe-zip-symbols
@@ -679,7 +689,6 @@ steps-electron-build-for-publish: &steps-electron-build-for-publish
- *step-maybe-electron-dist-strip
- *step-electron-dist-build
- *step-electron-dist-store
- *step-maybe-build-dump-syms
- *step-maybe-generate-breakpad-symbols
- *step-maybe-zip-symbols
@@ -792,7 +801,7 @@ steps-tests: &steps-tests
name: Run Electron tests
environment:
MOCHA_REPORTER: mocha-multi-reporters
MOCHA_FILE: junit/test-results.xml
ELECTRON_TEST_RESULTS_DIR: junit
MOCHA_MULTI_REPORTERS: mocha-junit-reporter, tap
ELECTRON_DISABLE_SECURITY_WARNINGS: 1
command: |
@@ -802,15 +811,13 @@ steps-tests: &steps-tests
- run:
name: Check test results existence
command: |
MOCHA_FILE='src/junit/test-results-remote.xml'
# Check if it exists and not empty.
if [ ! -s "$MOCHA_FILE" ]; then
cd src
# Check if test results exist and are not empty.
if [ ! -s "junit/test-results-remote.xml" ]; then
exit 1
fi
MOCHA_FILE='src/junit/test-results-main.xml'
# Check if it exists and not empty.
if [ ! -s "$MOCHA_FILE" ]; then
if [ ! -s "junit/test-results-main.xml" ]; then
exit 1
fi
- store_test_results:

116
BUILD.gn
View File

@@ -10,6 +10,7 @@ import("//tools/grit/repack.gni")
import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
import("//v8/gni/snapshot_toolchain.gni")
import("build/asar.gni")
import("build/extract_symbols.gni")
import("build/js_wrap.gni")
import("build/npm.gni")
import("build/tsc.gni")
@@ -712,6 +713,7 @@ if (is_mac) {
electron_helper_name = "$electron_product_name Helper"
electron_login_helper_name = "$electron_product_name Login Helper"
electron_framework_version = "A"
electron_version = read_file("ELECTRON_VERSION", "trim string")
mac_xib_bundle_data("electron_xibs") {
sources = [
@@ -840,7 +842,6 @@ if (is_mac) {
}
info_plist = "atom/common/resources/mac/Info.plist"
electron_version = read_file("ELECTRON_VERSION", "trim string")
extra_substitutions = [
"ATOM_BUNDLE_ID=$electron_mac_bundle_id.framework",
"ELECTRON_VERSION=$electron_version",
@@ -1014,6 +1015,76 @@ if (is_mac) {
"@executable_path/../Frameworks",
]
}
if (enable_dsyms) {
extract_symbols("electron_framework_syms") {
binary = "$root_out_dir/$electron_framework_name.framework/Versions/$electron_framework_version/$electron_framework_name"
symbol_dir = "$root_out_dir/breakpad_symbols"
dsym_file = "$root_out_dir/$electron_framework_name.dSYM/Contents/Resources/DWARF/$electron_framework_name"
deps = [
":electron_framework",
]
}
extract_symbols("electron_helper_syms") {
binary = "$root_out_dir/$electron_helper_name.app/Contents/MacOS/$electron_helper_name"
symbol_dir = "$root_out_dir/breakpad_symbols"
dsym_file = "$root_out_dir/$electron_helper_name.dSYM/Contents/Resources/DWARF/$electron_helper_name"
deps = [
":electron_helper_app",
]
}
extract_symbols("electron_app_syms") {
binary = "$root_out_dir/$electron_product_name.app/Contents/MacOS/$electron_product_name"
symbol_dir = "$root_out_dir/breakpad_symbols"
dsym_file = "$root_out_dir/$electron_product_name.dSYM/Contents/Resources/DWARF/$electron_product_name"
deps = [
":electron_app",
]
}
extract_symbols("swiftshader_egl_syms") {
binary = "$root_out_dir/libswiftshader_libEGL.dylib"
symbol_dir = "$root_out_dir/breakpad_symbols"
dsym_file = "$root_out_dir/libswiftshader_libEGL.dylib.dSYM/Contents/Resources/DWARF/libswiftshader_libEGL.dylib"
deps = [
"//third_party/swiftshader/src/OpenGL/libEGL:swiftshader_libEGL",
]
}
extract_symbols("swiftshader_gles_syms") {
binary = "$root_out_dir/libswiftshader_libGLESv2.dylib"
symbol_dir = "$root_out_dir/breakpad_symbols"
dsym_file = "$root_out_dir/libswiftshader_libGLESv2.dylib.dSYM/Contents/Resources/DWARF/libswiftshader_libGLESv2.dylib"
deps = [
"//third_party/swiftshader/src/OpenGL/libGLESv2:swiftshader_libGLESv2",
]
}
extract_symbols("crashpad_handler_syms") {
binary = "$root_out_dir/crashpad_handler"
symbol_dir = "$root_out_dir/breakpad_symbols"
dsym_file = "$root_out_dir/crashpad_handler.dSYM/Contents/Resources/DWARF/crashpad_handler"
deps = [
"//third_party/crashpad/crashpad/handler:crashpad_handler",
]
}
group("electron_symbols") {
deps = [
":crashpad_handler_syms",
":electron_app_syms",
":electron_framework_syms",
":electron_helper_syms",
":swiftshader_egl_syms",
":swiftshader_gles_syms",
]
}
} else {
group("electron_symbols") {
}
}
} else {
windows_manifest("electron_app_manifest") {
sources = [
@@ -1102,6 +1173,49 @@ if (is_mac) {
}
}
}
if (is_official_build) {
if (is_linux) {
_target_executable_suffix = ""
_target_shared_library_suffix = ".so"
} else if (is_win) {
_target_executable_suffix = ".exe"
_target_shared_library_suffix = ".dll"
}
extract_symbols("electron_app_symbols") {
binary = "$root_out_dir/$electron_project_name$_target_executable_suffix"
symbol_dir = "$root_out_dir/breakpad_symbols"
deps = [
":electron_app",
]
}
extract_symbols("swiftshader_egl_symbols") {
binary = "$root_out_dir/swiftshader/libEGL$_target_shared_library_suffix"
symbol_dir = "$root_out_dir/breakpad_symbols"
deps = [
"//third_party/swiftshader/src/OpenGL/libEGL:swiftshader_libEGL",
]
}
extract_symbols("swiftshader_gles_symbols") {
binary =
"$root_out_dir/swiftshader/libGLESv2$_target_shared_library_suffix"
symbol_dir = "$root_out_dir/breakpad_symbols"
deps = [
"//third_party/swiftshader/src/OpenGL/libGLESv2:swiftshader_libGLESv2",
]
}
group("electron_symbols") {
deps = [
":electron_app_symbols",
":swiftshader_egl_symbols",
":swiftshader_gles_symbols",
]
}
}
}
template("dist_zip") {

2
DEPS
View File

@@ -10,7 +10,7 @@ gclient_gn_args = [
vars = {
'chromium_version':
'76.0.3809.42',
'76.0.3809.60',
'node_version':
'0a300f60bce0c8f0cb3d846fcb0e1f55f26013ee',

View File

@@ -1 +1 @@
6.0.0-beta.11
6.0.0-beta.13

View File

@@ -72,14 +72,16 @@ build_script:
- appveyor PushArtifact out/ffmpeg/ffmpeg.zip
- ps: >-
if ($env:GN_CONFIG -eq 'release') {
ninja -C out/Default third_party/breakpad:dump_syms
# Needed for msdia140.dll on 64-bit windows
$env:Path += ";$pwd\third_party\llvm-build\Release+Asserts\bin"
ninja -C out/Default electron:electron_symbols
}
- if "%GN_CONFIG%"=="release" ( python electron\script\dump-symbols.py -d %cd%\out\Default\breakpad_symbols -v)
- ps: >-
if ($env:GN_CONFIG -eq 'release') {
python electron\script\zip-symbols.py
appveyor PushArtifact out/Default/symbols.zip
}
- python electron/script/zip_manifests/check-zip-manifest.py out/Default/dist.zip electron/script/zip_manifests/dist_zip.win.%TARGET_ARCH%.manifest
test_script:
# Workaround for https://github.com/appveyor/ci/issues/2420
- set "PATH=%PATH%;C:\Program Files\Git\mingw64\libexec\git-core"

View File

@@ -51,6 +51,19 @@ std::vector<std::string> MetricsToArray(uint32_t metrics) {
return array;
}
void DelayEmit(Screen* screen,
const base::StringPiece& name,
const display::Display& display) {
screen->Emit(name, display);
}
void DelayEmitWithMetrics(Screen* screen,
const base::StringPiece& name,
const display::Display& display,
const std::vector<std::string>& metrics) {
screen->Emit(name, display, metrics);
}
} // namespace
Screen::Screen(v8::Isolate* isolate, display::Screen* screen)
@@ -100,16 +113,23 @@ static gfx::Rect DIPToScreenRect(atom::NativeWindow* window,
#endif
void Screen::OnDisplayAdded(const display::Display& new_display) {
Emit("display-added", new_display);
base::ThreadTaskRunnerHandle::Get()->PostNonNestableTask(
FROM_HERE, base::Bind(&DelayEmit, base::Unretained(this), "display-added",
new_display));
}
void Screen::OnDisplayRemoved(const display::Display& old_display) {
Emit("display-removed", old_display);
base::ThreadTaskRunnerHandle::Get()->PostNonNestableTask(
FROM_HERE, base::Bind(&DelayEmit, base::Unretained(this),
"display-removed", old_display));
}
void Screen::OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) {
Emit("display-metrics-changed", display, MetricsToArray(changed_metrics));
base::ThreadTaskRunnerHandle::Get()->PostNonNestableTask(
FROM_HERE, base::Bind(&DelayEmitWithMetrics, base::Unretained(this),
"display-metrics-changed", display,
MetricsToArray(changed_metrics)));
}
// static

View File

@@ -625,7 +625,7 @@ void SystemPreferences::RemoveUserDefault(const std::string& name) {
}
bool SystemPreferences::IsDarkMode() {
if (@available(macOS 10.14, *)) {
if (@available(macOS 10.15, *)) {
return [[NSApplication sharedApplication].effectiveAppearance.name
isEqualToString:NSAppearanceNameDarkAqua];
}

View File

@@ -17,9 +17,9 @@
<key>CFBundleIconFile</key>
<string>electron.icns</string>
<key>CFBundleVersion</key>
<string>6.0.0-beta.11</string>
<string>6.0.0-beta.13</string>
<key>CFBundleShortVersionString</key>
<string>6.0.0-beta.11</string>
<string>6.0.0-beta.13</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.developer-tools</string>
<key>LSMinimumSystemVersion</key>

View File

@@ -50,8 +50,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 6,0,0,11
PRODUCTVERSION 6,0,0,11
FILEVERSION 6,0,0,13
PRODUCTVERSION 6,0,0,13
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L

View File

@@ -84,11 +84,11 @@
return frame;
}
- (void)windowDidBecomeMain:(NSNotification*)notification {
- (void)windowDidBecomeKey:(NSNotification*)notification {
shell_->NotifyWindowFocus();
}
- (void)windowDidResignMain:(NSNotification*)notification {
- (void)windowDidResignKey:(NSNotification*)notification {
shell_->NotifyWindowBlur();
}

View File

@@ -30,6 +30,7 @@ class TrayIconCocoa : public TrayIcon, public AtomMenuModel::Observer {
void SetHighlightMode(TrayIcon::HighlightMode mode) override;
void SetIgnoreDoubleClickEvents(bool ignore) override;
bool GetIgnoreDoubleClickEvents() override;
void PopUpOnUI(AtomMenuModel* menu_model);
void PopUpContextMenu(const gfx::Point& pos,
AtomMenuModel* menu_model) override;
void SetContextMenu(AtomMenuModel* menu_model) override;
@@ -49,6 +50,8 @@ class TrayIconCocoa : public TrayIcon, public AtomMenuModel::Observer {
// Used for unregistering observer.
AtomMenuModel* menu_model_ = nullptr; // weak ref.
base::WeakPtrFactory<TrayIconCocoa> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(TrayIconCocoa);
};

View File

@@ -8,7 +8,11 @@
#include "atom/browser/ui/cocoa/NSString+ANSI.h"
#include "atom/browser/ui/cocoa/atom_menu_controller.h"
#include "base/mac/sdk_forward_declarations.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/sys_string_conversions.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "ui/display/screen.h"
#include "ui/events/cocoa/cocoa_event_utils.h"
#include "ui/gfx/image/image.h"
@@ -145,7 +149,7 @@ const CGFloat kVerticalTitleMargin = 2;
}
- (BOOL)isDarkMode {
if (@available(macOS 10.14, *)) {
if (@available(macOS 10.15, *)) {
return [[NSApplication sharedApplication].effectiveAppearance.name
isEqualToString:NSAppearanceNameDarkAqua];
}
@@ -330,6 +334,9 @@ const CGFloat kVerticalTitleMargin = 2;
}
- (void)popUpContextMenu:(atom::AtomMenuModel*)menu_model {
// Make sure events can be pumped while the menu is up.
base::MessageLoopCurrent::ScopedNestableTaskAllower allow;
// Show a custom menu.
if (menu_model) {
base::scoped_nsobject<AtomMenuController> menuController(
@@ -337,6 +344,7 @@ const CGFloat kVerticalTitleMargin = 2;
useDefaultAccelerator:NO]);
forceHighlight_ = YES; // Should highlight when showing menu.
[self setNeedsDisplay:YES];
[statusItem_ popUpStatusItemMenu:[menuController menu]];
forceHighlight_ = NO;
[self setNeedsDisplay:YES];
@@ -344,8 +352,12 @@ const CGFloat kVerticalTitleMargin = 2;
}
if (menuController_ && ![menuController_ isMenuOpen]) {
// Ensure the UI can update while the menu is fading out.
base::ScopedPumpMessagesInPrivateModes pump_private;
// Redraw the tray icon to show highlight if it is enabled.
[self setNeedsDisplay:YES];
[statusItem_ popUpStatusItemMenu:[menuController_ menu]];
// The popUpStatusItemMenu returns only after the showing menu is closed.
// When it returns, we need to redraw the tray icon to not show highlight.
@@ -443,7 +455,7 @@ const CGFloat kVerticalTitleMargin = 2;
namespace atom {
TrayIconCocoa::TrayIconCocoa() {
TrayIconCocoa::TrayIconCocoa() : weak_factory_(this) {
status_item_view_.reset([[StatusItemView alloc] initWithIcon:this]);
}
@@ -485,9 +497,16 @@ bool TrayIconCocoa::GetIgnoreDoubleClickEvents() {
return [status_item_view_ getIgnoreDoubleClickEvents];
}
void TrayIconCocoa::PopUpOnUI(AtomMenuModel* menu_model) {
[status_item_view_ popUpContextMenu:menu_model];
}
void TrayIconCocoa::PopUpContextMenu(const gfx::Point& pos,
AtomMenuModel* menu_model) {
[status_item_view_ popUpContextMenu:menu_model];
base::PostTaskWithTraits(
FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(&TrayIconCocoa::PopUpOnUI, weak_factory_.GetWeakPtr(),
base::Unretained(menu_model)));
}
void TrayIconCocoa::SetContextMenu(AtomMenuModel* menu_model) {

View File

@@ -9,7 +9,7 @@
#define ATOM_MINOR_VERSION 0
#define ATOM_PATCH_VERSION 0
// clang-format off
#define ATOM_PRE_RELEASE_VERSION -beta.11
#define ATOM_PRE_RELEASE_VERSION -beta.13
// clang-format on
#ifndef ATOM_STRINGIFY

View File

@@ -200,8 +200,11 @@ void AtomRendererClient::SetupMainWorldOverrides(
node::FIXED_ONE_BYTE_STRING(isolate, "nodeProcess"),
node::FIXED_ONE_BYTE_STRING(isolate, "isolatedWorld")};
auto* env = GetEnvironment(render_frame);
DCHECK(env);
std::vector<v8::Local<v8::Value>> isolated_bundle_args = {
GetEnvironment(render_frame)->process_object(),
env->process_object(),
GetContext(render_frame->GetWebFrame(), isolate)->Global()};
node::per_process::native_module_loader.CompileAndCall(
@@ -220,8 +223,12 @@ void AtomRendererClient::SetupExtensionWorldOverrides(
node::FIXED_ONE_BYTE_STRING(isolate, "isolatedWorld"),
node::FIXED_ONE_BYTE_STRING(isolate, "worldId")};
auto* env = GetEnvironment(render_frame);
if (!env)
return;
std::vector<v8::Local<v8::Value>> isolated_bundle_args = {
GetEnvironment(render_frame)->process_object(),
env->process_object(),
GetContext(render_frame->GetWebFrame(), isolate)->Global(),
v8::Integer::New(isolate, world_id)};

52
build/dump_syms.py Normal file
View File

@@ -0,0 +1,52 @@
from __future__ import print_function
import collections
import os
import subprocess
import sys
import errno
# The BINARY_INFO tuple describes a binary as dump_syms identifies it.
BINARY_INFO = collections.namedtuple('BINARY_INFO',
['platform', 'arch', 'hash', 'name'])
def get_module_info(header_info):
# header info is of the form "MODULE $PLATFORM $ARCH $HASH $BINARY"
info_split = header_info.strip().split(' ', 4)
if len(info_split) != 5 or info_split[0] != 'MODULE':
return None
return BINARY_INFO(*info_split[1:])
def get_symbol_path(symbol_data):
module_info = get_module_info(symbol_data[:symbol_data.index('\n')])
if not module_info:
raise Exception("Couldn't get module info for binary '{}'".format(binary))
return os.path.join(module_info.name, module_info.hash, module_info.name + ".sym")
def mkdir_p(path):
"""Simulates mkdir -p."""
try:
os.makedirs(path)
except OSError as e:
if e.errno == errno.EEXIST and os.path.isdir(path):
pass
else: raise
def main(dump_syms, binary, out_dir, stamp_file, dsym_file=None):
args = [dump_syms]
if dsym_file:
args += ["-g", dsym_file]
args += [binary]
symbol_data = subprocess.check_output(args)
symbol_path = os.path.join(out_dir, get_symbol_path(symbol_data))
mkdir_p(os.path.dirname(symbol_path))
with open(symbol_path, 'w') as out:
out.write(symbol_data)
with open(stamp_file, 'w'):
pass
if __name__ == '__main__':
main(*sys.argv[1:])

55
build/extract_symbols.gni Normal file
View File

@@ -0,0 +1,55 @@
import("//build/toolchain/toolchain.gni")
# Extracts symbols from a binary into a symbol file using dump_syms.
#
# Args:
# binary: Path to the binary containing symbols to extract, e.g.:
# "$root_out_dir/electron"
# symbol_dir: Desired output directory for symbols, e.g.:
# "$root_out_dir/breakpad_symbols"
if (host_os == "win") {
_host_executable_suffix = ".exe"
} else {
_host_executable_suffix = ""
}
template("extract_symbols") {
action(target_name) {
forward_variables_from(invoker,
[
"deps",
"testonly",
])
assert(defined(invoker.binary), "Need binary to dump")
assert(defined(invoker.symbol_dir), "Need directory for symbol output")
dump_syms_label = "//third_party/breakpad:dump_syms($host_toolchain)"
dump_syms_binary = get_label_info(dump_syms_label, "root_out_dir") +
"/dump_syms$_host_executable_suffix"
script = "//electron/build/dump_syms.py"
inputs = [
invoker.binary,
dump_syms_binary,
]
stamp_file = "${target_gen_dir}/${target_name}.stamp"
outputs = [
stamp_file,
]
args = [
"./" + rebase_path(dump_syms_binary, root_build_dir),
rebase_path(invoker.binary, root_build_dir),
rebase_path(invoker.symbol_dir, root_build_dir),
rebase_path(stamp_file, root_build_dir),
]
if (defined(invoker.dsym_file)) {
args += [ rebase_path(invoker.dsym_file, root_build_dir) ]
}
if (!defined(deps)) {
deps = []
}
deps += [ dump_syms_label ]
}
}

View File

@@ -94,10 +94,6 @@ powerMonitor.querySystemIdleTime(callback)
const idleTime = getSystemIdleTime()
```
## Preload scripts outside of app path are not allowed
For security reasons, preload scripts can only be loaded from a subpath of the [app path](app.md#appgetapppath).
# Planned Breaking API Changes (5.0)
## `new BrowserWindow({ webPreferences })`
@@ -122,7 +118,7 @@ const w = new BrowserWindow({
### `nativeWindowOpen`
Child windows opened with the `nativeWindowOpen` option will always have Node.js integration disabled.
Child windows opened with the `nativeWindowOpen` option will always have Node.js integration disabled, unless `nodeIntegrationInSubFrames` is `true.
## Privileged Schemes Registration

View File

@@ -256,7 +256,7 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
enabled in web workers. Default is `false`. More about this can be found
in [Multithreading](../tutorial/multithreading.md).
* `nodeIntegrationInSubFrames` Boolean (optional) - Experimental option for
enabling NodeJS support in sub-frames such as iframes. All your preloads will load for
enabling Node.js support in sub-frames such as iframes and child windows. All your preloads will load for
every iframe, you can use `process.isMainFrame` to determine if you are
in the main frame or not.
* `preload` String (optional) - Specifies a script that will be loaded before other
@@ -266,8 +266,6 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
When node integration is turned off, the preload script can reintroduce
Node global symbols back to the global scope. See example
[here](process.md#event-loaded).
**Note:** For security reasons, preload scripts can only be loaded from
a subpath of the [app path](app.md#appgetapppath).
* `sandbox` Boolean (optional) - If set, this will sandbox the renderer
associated with the window, making it compatible with the Chromium
OS-level sandbox and disabling the Node.js engine. This is not the same as
@@ -355,7 +353,7 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
Console tab.
* `nativeWindowOpen` Boolean (optional) - Whether to use native
`window.open()`. Defaults to `false`. Child windows will always have node
integration disabled. **Note:** This option is currently
integration disabled unless `nodeIntegrationInSubFrames` is true. **Note:** This option is currently
experimental.
* `webviewTag` Boolean (optional) - Whether to enable the [`<webview>` tag](webview-tag.md).
Defaults to `false`. **Note:** The

View File

@@ -59,7 +59,7 @@ Emitted as soon as the systems screen is unlocked.
The `powerMonitor` module has the following methods:
#### `powerMonitor.querySystemIdleState(idleThreshold, callback)` _(Deprecated)_
### `powerMonitor.querySystemIdleState(idleThreshold, callback)` _(Deprecated)_
* `idleThreshold` Integer
* `callback` Function
@@ -70,14 +70,14 @@ before considered idle. `callback` will be called synchronously on some systems
and with an `idleState` argument that describes the system's state. `locked` is
available on supported systems only.
#### `powerMonitor.querySystemIdleTime(callback)` _(Deprecated)_
### `powerMonitor.querySystemIdleTime(callback)` _(Deprecated)_
* `callback` Function
* `idleTime` Integer - Idle time in seconds
Calculate system idle time in seconds.
#### `powerMonitor.getSystemIdleState(idleThreshold)`
### `powerMonitor.getSystemIdleState(idleThreshold)`
* `idleThreshold` Integer
@@ -86,7 +86,7 @@ Returns `String` - The system's current state. Can be `active`, `idle`, `locked`
Calculate the system idle state. `idleThreshold` is the amount of time (in seconds)
before considered idle. `locked` is available on supported systems only.
#### `powerMonitor.getSystemIdleTime()`
### `powerMonitor.getSystemIdleTime()`
Returns `Integer` - Idle time in seconds

View File

@@ -569,8 +569,6 @@ Returns `Promise<void>` - resolves when the sessions HTTP authentication cach
Adds scripts that will be executed on ALL web contents that are associated with
this session just before normal `preload` scripts run.
**Note:** For security reasons, preload scripts can only be loaded from a subpath of the [app path](app.md#appgetapppath).
#### `ses.getPreloads()`
Returns `String[]` an array of paths to preload scripts that have been

View File

@@ -41,14 +41,6 @@ Returns:
* `event` Event
* `highContrastColorScheme` Boolean - `true` if a high contrast theme is being used, `false` otherwise.
### Event: 'appearance-changed' _macOS_
Returns:
* `newAppearance` String - Can be `dark` or `light`
**NOTE:** This event is only emitted after you have called `startAppLevelAppearanceTrackingOS`
## Methods
### `systemPreferences.isDarkMode()` _macOS_

View File

@@ -162,9 +162,6 @@ When the guest page doesn't have node integration this script will still have
access to all Node APIs, but global objects injected by Node will be deleted
after this script has finished executing.
**Note:** For security reasons, preload scripts can only be loaded from
a subpath of the [app path](app.md#appgetapppath).
**Note:** This option will be appear as `preloadURL` (not `preload`) in
the `webPreferences` specified to the `will-attach-webview` event.

View File

@@ -61,7 +61,6 @@ filenames = {
"lib/common/error-utils.js",
"lib/common/init.ts",
"lib/common/parse-features-string.js",
"lib/common/path-utils.ts",
"lib/common/reset-search-paths.ts",
"lib/common/web-view-methods.js",
"lib/renderer/callbacks-registry.js",

View File

@@ -156,20 +156,27 @@ const getGuestWindow = function (guestContents) {
return guestWindow
}
const isChildWindow = function (sender, target) {
return target.getLastWebPreferences().openerId === sender.id
}
const isRelatedWindow = function (sender, target) {
return isChildWindow(sender, target) || isChildWindow(target, sender)
}
const isScriptableWindow = function (sender, target) {
return isRelatedWindow(sender, target) && isSameOrigin(sender.getURL(), target.getURL())
}
const isNodeIntegrationEnabled = function (sender) {
return sender.getLastWebPreferences().nodeIntegration === true
}
// Checks whether |sender| can access the |target|:
// 1. Check whether |sender| is the parent of |target|.
// 2. Check whether |sender| has node integration, if so it is allowed to
// do anything it wants.
// 3. Check whether the origins match.
//
// However it allows a child window without node integration but with same
// origin to do anything it wants, when its opener window has node integration.
// The W3C does not have anything on this, but from my understanding of the
// security model of |window.opener|, this should be fine.
const canAccessWindow = function (sender, target) {
return (target.getLastWebPreferences().openerId === sender.id) ||
(sender.getLastWebPreferences().nodeIntegration === true) ||
isSameOrigin(sender.getURL(), target.getURL())
return isChildWindow(sender, target) ||
isScriptableWindow(sender, target) ||
isNodeIntegrationEnabled(sender)
}
// Routed window.open messages with raw options

View File

@@ -3,7 +3,6 @@
const electron = require('electron')
const { EventEmitter } = require('events')
const fs = require('fs')
const path = require('path')
const util = require('util')
const v8Util = process.electronBinding('v8_util')
@@ -20,7 +19,6 @@ const guestViewManager = require('@electron/internal/browser/guest-view-manager'
const bufferUtils = require('@electron/internal/common/buffer-utils')
const errorUtils = require('@electron/internal/common/error-utils')
const clipboardUtils = require('@electron/internal/common/clipboard-utils')
const { isParentDir } = require('@electron/internal/common/path-utils')
const hasProp = {}.hasOwnProperty
@@ -500,24 +498,12 @@ ipcMainUtils.handle('ELECTRON_BROWSER_CLIPBOARD', function (event, method, ...ar
})
const readFile = util.promisify(fs.readFile)
const realpath = util.promisify(fs.realpath)
let absoluteAppPath
const getAppPath = async function () {
if (absoluteAppPath === undefined) {
absoluteAppPath = await realpath(electron.app.getAppPath())
}
return absoluteAppPath
}
const getPreloadScript = async function (preloadPath) {
let preloadSrc = null
let preloadError = null
if (preloadPath) {
try {
if (!isParentDir(await getAppPath(), await realpath(preloadPath))) {
throw new Error('Preload scripts outside of app path are not allowed')
}
preloadSrc = (await readFile(preloadPath)).toString()
} catch (err) {
preloadError = errorUtils.serialize(err)

View File

@@ -1,6 +0,0 @@
import * as path from 'path'
export const isParentDir = function (parent: string, dir: string) {
const relative = path.relative(parent, dir)
return !!relative && !relative.startsWith('..') && !path.isAbsolute(relative)
}

View File

@@ -1,5 +1,4 @@
import { EventEmitter } from 'events'
import * as fs from 'fs'
import * as path from 'path'
const Module = require('module')
@@ -188,22 +187,10 @@ if (nodeIntegration) {
}
const errorUtils = require('@electron/internal/common/error-utils')
const { isParentDir } = require('@electron/internal/common/path-utils')
let absoluteAppPath: string
const getAppPath = function () {
if (absoluteAppPath === undefined) {
absoluteAppPath = fs.realpathSync(appPath!)
}
return absoluteAppPath
}
// Load the preload scripts.
for (const preloadScript of preloadScripts) {
try {
if (!isParentDir(getAppPath(), fs.realpathSync(preloadScript))) {
throw new Error('Preload scripts outside of app path are not allowed')
}
require(preloadScript)
} catch (error) {
console.error(`Unable to load preload script: ${preloadScript}`)

View File

@@ -14,9 +14,9 @@ ipcRendererInternal.sendSync = function (channel, ...args) {
}
ipcRendererInternal.sendTo = function (webContentsId, channel, ...args) {
return binding.sendTo(internal, false, webContentsId, channel, args)
return binding.ipc.sendTo(internal, false, webContentsId, channel, args)
}
ipcRendererInternal.sendToAll = function (webContentsId, channel, ...args) {
return binding.sendTo(internal, true, webContentsId, channel, args)
return binding.ipc.sendTo(internal, true, webContentsId, channel, args)
}

View File

@@ -1,6 +1,6 @@
{
"name": "electron",
"version": "6.0.0-beta.11",
"version": "6.0.0-beta.13",
"repository": "https://github.com/electron/electron",
"description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
"devDependencies": {

View File

@@ -5,7 +5,7 @@ Subject: blink_world_context.patch
diff --git a/third_party/blink/public/web/web_local_frame.h b/third_party/blink/public/web/web_local_frame.h
index 82fb3fdfe6bfa8c8d885ee133270b6f2564325a8..f3bad71eab608d3b9ac0e08446c9e520f47e9b10 100644
index 3159bc7b495003292a7122f7097c7b80cd67d5f8..7409627f0c1faa977807566da702068bf5061715 100644
--- a/third_party/blink/public/web/web_local_frame.h
+++ b/third_party/blink/public/web/web_local_frame.h
@@ -355,6 +355,9 @@ class WebLocalFrame : public WebFrame {
@@ -19,10 +19,10 @@ index 82fb3fdfe6bfa8c8d885ee133270b6f2564325a8..f3bad71eab608d3b9ac0e08446c9e520
// that the script evaluated to with callback. Script execution can be
// suspend.
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
index b12520bc8d2f49d3bd03e4e9d228902e98785e3a..50fdbeec3d01cd16aa7a9f597fb4e6eb8451dffb 100644
index 290973c5aea619fbe1ea8c736535b40f5db28e2b..4a787e86dac8bd07563cd1b37afeb051901860eb 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -873,6 +873,13 @@ v8::Local<v8::Object> WebLocalFrameImpl::GlobalProxy() const {
@@ -867,6 +867,13 @@ v8::Local<v8::Object> WebLocalFrameImpl::GlobalProxy() const {
return MainWorldScriptContext()->Global();
}
@@ -37,10 +37,10 @@ index b12520bc8d2f49d3bd03e4e9d228902e98785e3a..50fdbeec3d01cd16aa7a9f597fb4e6eb
return BindingSecurity::ShouldAllowAccessToFrame(
CurrentDOMWindow(V8PerIsolateData::MainThreadIsolate()),
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.h b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
index b503bf7cef554dfb35c2123cba51c0fba7402c7e..2d38c4cebcd4040bbd417d4ae9189da954d9cfce 100644
index 96a8b2d9375524985a99c5d36fe9ba5c58db9a78..e9b95ef4e60c4f40c4fcbdb87996a86be5372ba8 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.h
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
@@ -146,6 +146,8 @@ class CORE_EXPORT WebLocalFrameImpl final
@@ -145,6 +145,8 @@ class CORE_EXPORT WebLocalFrameImpl final
int argc,
v8::Local<v8::Value> argv[]) override;
v8::Local<v8::Context> MainWorldScriptContext() const override;

View File

@@ -5,10 +5,10 @@ Subject: can_create_window.patch
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index bb48cb8d0ffe91df3e10e6bd5012a27acb3b37af..d766218e114c229da401a67503e24bcc524b752e 100644
index a68f8d369cc661b93780d1ac47456bc51ee8a194..b069caa25093ba92b1fa3fbf1287d8e86ae6c4d2 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -3717,6 +3717,7 @@ void RenderFrameHostImpl::CreateNewWindow(
@@ -3761,6 +3761,7 @@ void RenderFrameHostImpl::CreateNewWindow(
last_committed_origin_, params->window_container_type,
params->target_url, params->referrer.To<Referrer>(),
params->frame_name, params->disposition, *params->features,

View File

@@ -88,7 +88,7 @@ index 392cf3d58c64c088596e8d321a2ce37b0ec60b6e..43e30f47240dc10a3a9b950255d4e487
ui::Accelerator accelerator(
ui::KeyboardCodeFromXKeyEvent(x_event), modifiers);
diff --git a/ui/base/accelerators/media_keys_listener_mac.mm b/ui/base/accelerators/media_keys_listener_mac.mm
index 71b417ee8b64aa2ff7f1b2390851668ec1dcd7cf..1768af408d4cc3075e5bae046649e4955cc400b3 100644
index f4e3126a4efd66f05c4f13e40ba23db10b8cca96..bb4c1a891dd13855227b39a0e582fd4dbc342ec9 100644
--- a/ui/base/accelerators/media_keys_listener_mac.mm
+++ b/ui/base/accelerators/media_keys_listener_mac.mm
@@ -33,6 +33,12 @@ KeyboardCode MediaKeyCodeToKeyboardCode(int key_code) {
@@ -104,7 +104,7 @@ index 71b417ee8b64aa2ff7f1b2390851668ec1dcd7cf..1768af408d4cc3075e5bae046649e495
}
return VKEY_UNKNOWN;
}
@@ -192,7 +198,10 @@ static CGEventRef EventTapCallback(CGEventTapProxy proxy,
@@ -193,7 +199,10 @@ static CGEventRef EventTapCallback(CGEventTapProxy proxy,
int key_code = (data1 & 0xFFFF0000) >> 16;
if (key_code != NX_KEYTYPE_PLAY && key_code != NX_KEYTYPE_NEXT &&
key_code != NX_KEYTYPE_PREVIOUS && key_code != NX_KEYTYPE_FAST &&

View File

@@ -235,10 +235,10 @@ index c09ee4ccb619327a8723b389b758d200bf49a45c..40d6675f3f7901fc76bbcc2a4854de0a
network::switches::kExplicitlyAllowedPorts,
service_manager::switches::kDisableInProcessStackTraces,
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 33817ba20ae6cbfec8a28313092df9c10b1bf966..ea1a574c1f6d2a0f880391b21397c2cb342cbc77 100644
index a450561913e274b36ece94c22bae7b14930db36e..3b9a0a5cef0ec2fc02d4e2d1b0e4e1da8ad5b05e 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -2810,6 +2810,9 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings(
@@ -2822,6 +2822,9 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings(
settings.main_frame_before_activation_enabled =
cmd.HasSwitch(cc::switches::kEnableMainFrameBeforeActivation);

View File

@@ -6,10 +6,10 @@ Subject: disable_user_gesture_requirement_for_beforeunload_dialogs.patch
See https://github.com/electron/electron/issues/10754
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index 7be135720a40d819bf19afddce77670d721cfe59..1ceaf378636e16d5e93f5acc6ff42019fc87f680 100644
index 8e56cae5da0a5973c14a218e9207edc56511f245..aa82630fa95515c30e5084ee757d6d3df52a094c 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -3653,7 +3653,9 @@ bool Document::DispatchBeforeUnloadEvent(ChromeClient* chrome_client,
@@ -3637,7 +3637,9 @@ bool Document::DispatchBeforeUnloadEvent(ChromeClient* chrome_client,
"frame that never had a user gesture since its load. "
"https://www.chromestatus.com/feature/5082396709879808";
Intervention::GenerateReport(frame_, "BeforeUnloadNoGesture", message);

View File

@@ -353,10 +353,18 @@ index 1802034a6e15a6ad8b0d9591cfb79ba5873dc982..a827091facdb4f6b1d74ce826c3492ce
// Like PrintMsg_PrintPages, but using the print preview document's frame/node.
IPC_MESSAGE_ROUTED0(PrintMsg_PrintForSystemDialog)
diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc
index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..5c54aad4e874d723dd4b9e5733449d2af6d9e047 100644
index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..d842180c0d69b993971b50d5a1dcf8ad336dd7a9 100644
--- a/components/printing/renderer/print_render_frame_helper.cc
+++ b/components/printing/renderer/print_render_frame_helper.cc
@@ -1115,7 +1115,9 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) {
@@ -37,6 +37,7 @@
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
#include "printing/buildflags/buildflags.h"
#include "printing/metafile_skia.h"
+#include "printing/print_settings.h"
#include "printing/units.h"
#include "third_party/blink/public/common/frame/frame_owner_element_type.h"
#include "third_party/blink/public/common/frame/sandbox_flags.h"
@@ -1115,7 +1116,9 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) {
web_frame->DispatchBeforePrintEvent();
if (!weak_this)
return;
@@ -367,7 +375,7 @@ index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..5c54aad4e874d723dd4b9e5733449d2a
if (weak_this)
web_frame->DispatchAfterPrintEvent();
}
@@ -1163,7 +1165,10 @@ void PrintRenderFrameHelper::OnDestruct() {
@@ -1163,7 +1166,10 @@ void PrintRenderFrameHelper::OnDestruct() {
delete this;
}
@@ -379,7 +387,7 @@ index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..5c54aad4e874d723dd4b9e5733449d2a
if (ipc_nesting_level_ > 1)
return;
@@ -1176,7 +1181,8 @@ void PrintRenderFrameHelper::OnPrintPages() {
@@ -1176,7 +1182,8 @@ void PrintRenderFrameHelper::OnPrintPages() {
// If we are printing a PDF extension frame, find the plugin node and print
// that instead.
auto plugin = delegate_->GetPdfElement(frame);
@@ -389,7 +397,7 @@ index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..5c54aad4e874d723dd4b9e5733449d2a
if (weak_this)
frame->DispatchAfterPrintEvent();
// WARNING: |this| may be gone at this point. Do not do any more work here and
@@ -1193,7 +1199,7 @@ void PrintRenderFrameHelper::OnPrintForSystemDialog() {
@@ -1193,7 +1200,7 @@ void PrintRenderFrameHelper::OnPrintForSystemDialog() {
}
auto weak_this = weak_ptr_factory_.GetWeakPtr();
Print(frame, print_preview_context_.source_node(),
@@ -398,7 +406,7 @@ index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..5c54aad4e874d723dd4b9e5733449d2a
if (weak_this)
frame->DispatchAfterPrintEvent();
// WARNING: |this| may be gone at this point. Do not do any more work here and
@@ -1229,6 +1235,8 @@ void PrintRenderFrameHelper::OnPrintPreview(
@@ -1229,6 +1236,8 @@ void PrintRenderFrameHelper::OnPrintPreview(
if (ipc_nesting_level_ > 1)
return;
@@ -407,7 +415,7 @@ index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..5c54aad4e874d723dd4b9e5733449d2a
print_preview_context_.OnPrintPreview();
UMA_HISTOGRAM_ENUMERATION("PrintPreview.PreviewEvent",
@@ -1621,7 +1629,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
@@ -1621,7 +1630,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
auto self = weak_ptr_factory_.GetWeakPtr();
Print(duplicate_node.GetDocument().GetFrame(), duplicate_node,
@@ -419,7 +427,7 @@ index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..5c54aad4e874d723dd4b9e5733449d2a
// Check if |this| is still valid.
if (!self)
return;
@@ -1632,7 +1643,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
@@ -1632,7 +1644,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
const blink::WebNode& node,
@@ -431,7 +439,7 @@ index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..5c54aad4e874d723dd4b9e5733449d2a
// If still not finished with earlier print request simply ignore.
if (prep_frame_view_)
return;
@@ -1640,7 +1654,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
@@ -1640,7 +1655,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
FrameReference frame_ref(frame);
int expected_page_count = 0;
@@ -440,19 +448,21 @@ index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..5c54aad4e874d723dd4b9e5733449d2a
DidFinishPrinting(FAIL_PRINT_INIT);
return; // Failed to init print page settings.
}
@@ -1660,8 +1674,9 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
@@ -1660,8 +1675,11 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
PrintMsg_PrintPages_Params print_settings;
auto self = weak_ptr_factory_.GetWeakPtr();
- GetPrintSettingsFromUser(frame_ref.GetFrame(), node, expected_page_count,
- print_request_type, &print_settings);
+ if (!silent)
+ if (silent)
+ print_settings = *print_pages_params_.get();
+ else
+ GetPrintSettingsFromUser(frame_ref.GetFrame(), node, expected_page_count,
+ print_request_type, &print_settings);
// Check if |this| is still valid.
if (!self)
return;
@@ -1671,6 +1686,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
@@ -1671,6 +1689,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
? blink::kWebPrintScalingOptionSourceSize
: scaling_option;
SetPrintPagesParams(print_settings);
@@ -460,7 +470,7 @@ index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..5c54aad4e874d723dd4b9e5733449d2a
if (print_settings.params.dpi.IsEmpty() ||
!print_settings.params.document_cookie) {
DidFinishPrinting(OK); // Release resources and fail silently on failure.
@@ -1859,10 +1875,24 @@ std::vector<int> PrintRenderFrameHelper::GetPrintedPages(
@@ -1859,10 +1878,24 @@ std::vector<int> PrintRenderFrameHelper::GetPrintedPages(
return printed_pages;
}
@@ -488,7 +498,7 @@ index 74f26daa76a22c749007f06a7f4eeeafb8bb297b..5c54aad4e874d723dd4b9e5733449d2a
// Check if the printer returned any settings, if the settings is empty, we
// can safely assume there are no printer drivers configured. So we safely
// terminate.
@@ -1882,12 +1912,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) {
@@ -1882,12 +1915,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) {
return result;
}

View File

@@ -25,7 +25,7 @@ index a2902adc59b6b4083334130f3a8e29fca0c440d2..34673d9ab62311c458a581f98865014f
const blink::WebMouseEvent& event,
const ui::LatencyInfo& latency) {
diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/content/browser/renderer_host/render_widget_host_view_base.h
index 903131f45d4fa82af9a6315227505b54ee0f1560..6450a05a4829731d3dc2338fd51ef6d0720b7fcb 100644
index 81bdc91eb3513fc9ebf3a5fc93e1cdb02b0ac11a..db980868272e5398d2100d5968d1b35f0d48e3eb 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.h
+++ b/content/browser/renderer_host/render_widget_host_view_base.h
@@ -24,9 +24,11 @@
@@ -52,7 +52,7 @@ index 903131f45d4fa82af9a6315227505b54ee0f1560..6450a05a4829731d3dc2338fd51ef6d0
class WebCursor;
class DelegatedFrameHost;
struct TextInputState;
@@ -136,6 +140,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase
@@ -135,6 +139,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase
bool destination_is_loaded,
bool destination_is_frozen) final;
@@ -62,7 +62,7 @@ index 903131f45d4fa82af9a6315227505b54ee0f1560..6450a05a4829731d3dc2338fd51ef6d0
// This only needs to be overridden by RenderWidgetHostViewBase subclasses
// that handle content embedded within other RenderWidgetHostViews.
gfx::PointF TransformPointToRootCoordSpaceF(
@@ -364,6 +371,11 @@ class CONTENT_EXPORT RenderWidgetHostViewBase
@@ -363,6 +370,11 @@ class CONTENT_EXPORT RenderWidgetHostViewBase
virtual void ProcessGestureEvent(const blink::WebGestureEvent& event,
const ui::LatencyInfo& latency);

View File

@@ -111,7 +111,7 @@ index f17983a5cc70f8ab1e5c531de8e26fdec04a079b..16aefe38f0c674d97a89d3e511dc104a
"display_embedder/software_output_surface.h",
"display_embedder/viz_process_context_provider.cc",
diff --git a/components/viz/service/display_embedder/output_surface_provider_impl.cc b/components/viz/service/display_embedder/output_surface_provider_impl.cc
index 8fe397588eb47224d48a8642b814583d11cc9c09..a7072c8e16434d3b15db1599f43d8fab5a97bdf3 100644
index 1f8132354d2536c6371afeb9086626f5059b49bf..bbb0f95623958052cafb92f2534284af21a217e1 100644
--- a/components/viz/service/display_embedder/output_surface_provider_impl.cc
+++ b/components/viz/service/display_embedder/output_surface_provider_impl.cc
@@ -18,6 +18,7 @@
@@ -122,7 +122,7 @@ index 8fe397588eb47224d48a8642b814583d11cc9c09..a7072c8e16434d3b15db1599f43d8fab
#include "components/viz/service/display_embedder/software_output_surface.h"
#include "components/viz/service/display_embedder/viz_process_context_provider.h"
#include "components/viz/service/gl/gpu_service_impl.h"
@@ -243,6 +244,19 @@ OutputSurfaceProviderImpl::CreateSoftwareOutputDeviceForPlatform(
@@ -244,6 +245,19 @@ OutputSurfaceProviderImpl::CreateSoftwareOutputDeviceForPlatform(
if (headless_)
return std::make_unique<SoftwareOutputDevice>();
@@ -481,7 +481,7 @@ index 4e3f0255d5fe4991004a50768932c36c42d999ff..bf352091cef00482e3cec74cd523e469
return std::make_unique<SoftwareOutputDeviceWinDirect>(hwnd, backing);
}
diff --git a/services/viz/privileged/interfaces/compositing/display_private.mojom b/services/viz/privileged/interfaces/compositing/display_private.mojom
index deb327b7705462d2cc07edb9d37528035377af8b..bc6958aa7e4dc14d3e0cf040299642825194e2fc 100644
index cd8dd80230d199eb05c70710aa681c491ead1646..7b61f33156a4e182ee6ddffc267be798af335989 100644
--- a/services/viz/privileged/interfaces/compositing/display_private.mojom
+++ b/services/viz/privileged/interfaces/compositing/display_private.mojom
@@ -77,12 +77,14 @@ interface DisplayPrivate {

View File

@@ -5,7 +5,7 @@ Subject: web_contents.patch
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index f88cff5ab6d117c24cd827bdf30f8dff10b09ade..8ab7f889b7bed52c03d9061c1f061472eea1d599 100644
index 69c5bb6eaf68bfb81f86a3598091203cc98ea45f..893b8c059c986b0ec5b8602358a5eb0e8828333d 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -2070,6 +2070,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {

View File

@@ -1,98 +0,0 @@
#!/usr/bin/env python
import argparse
import os
import sys
from lib.config import PLATFORM, enable_verbose_mode, is_verbose_mode
from lib.util import get_electron_branding, execute, rm_rf, get_out_dir, \
SRC_DIR
ELECTRON_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
SOURCE_ROOT = os.path.abspath(os.path.dirname(ELECTRON_ROOT))
RELEASE_PATH = get_out_dir()
def main():
args = parse_args()
if args.verbose:
enable_verbose_mode()
rm_rf(args.destination)
source_root = os.path.abspath(args.source_root)
build_path = os.path.join(source_root, args.build_dir)
(project_name, product_name) = get_names_from_branding()
if PLATFORM in ['darwin', 'linux']:
if PLATFORM == 'darwin':
#macOS has an additional helper app; provide the path to that binary also
main_app = os.path.join(build_path, '{0}.app'.format(product_name),
'Contents', 'MacOS', product_name)
helper_name = product_name + " Helper"
helper_app = os.path.join(build_path, '{0}.app'.format(helper_name),
'Contents', 'MacOS', product_name + " Helper")
binaries = [main_app, helper_app]
for binary in binaries:
generate_posix_symbols(binary, source_root, build_path,
args.destination)
else:
binary = os.path.join(build_path, project_name)
generate_posix_symbols(binary, source_root, build_path,
args.destination)
else:
generate_breakpad_symbols = os.path.join(ELECTRON_ROOT, 'tools', 'win',
'generate_breakpad_symbols.py')
args = [
'--symbols-dir={0}'.format(args.destination),
'--jobs=16',
os.path.relpath(build_path),
]
if is_verbose_mode():
args += ['-v']
#Make sure msdia140.dll is in the path (needed for dump_syms.exe)
env = os.environ.copy()
msdia140_dll_path = os.path.join(SRC_DIR, 'third_party', 'llvm-build',
'Release+Asserts', 'bin')
env['PATH'] = os.path.pathsep.join(
[env.get('PATH', '')] + [msdia140_dll_path])
execute([sys.executable, generate_breakpad_symbols] + args, env)
def get_names_from_branding():
variables = get_electron_branding()
return (variables['project_name'], variables['product_name'])
def generate_posix_symbols(binary, source_root, build_dir, destination):
generate_breakpad_symbols = os.path.join(source_root, 'components', 'crash',
'content', 'tools',
'generate_breakpad_symbols.py')
args = [
'--build-dir={0}'.format(build_dir),
'--symbols-dir={0}'.format(destination),
'--jobs=16',
'--binary={0}'.format(binary),
]
if is_verbose_mode():
args += ['--verbose']
execute([sys.executable, generate_breakpad_symbols] + args)
def parse_args():
parser = argparse.ArgumentParser(description='Create breakpad symbols')
parser.add_argument('-b', '--build-dir',
help='Path to an Electron build folder.',
default=RELEASE_PATH,
required=False)
parser.add_argument('-d', '--destination',
help='Path to save symbols to.',
default=None,
required=True)
parser.add_argument('-s', '--source-root',
help='Path to the src folder.',
default=SOURCE_ROOT,
required=False)
parser.add_argument('-v', '--verbose',
action='store_true',
help='Prints the output of the subprocesses')
return parser.parse_args()
if __name__ == '__main__':
sys.exit(main())

14
script/generate-zip-manifest.py Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env python
import zipfile
import sys
def main(zip_path, manifest_out):
with open(manifest_out, 'w') as manifest, \
zipfile.ZipFile(zip_path, 'r', allowZip64=True) as z:
for name in sorted(z.namelist()):
manifest.write(name + '\n')
return 0
if __name__ == '__main__':
sys.exit(main(*sys.argv[1:]))

View File

@@ -80,25 +80,25 @@ function saveSpecHash ([newSpecHash, newSpecInstallHash]) {
async function runElectronTests () {
const errors = []
const runners = [
['Main process specs', 'main', runMainProcessElectronTests],
['Remote based specs', 'remote', runRemoteBasedElectronTests]
]
const runners = new Map([
['main', { description: 'Main process specs', run: runMainProcessElectronTests }],
['remote', { description: 'Remote based specs', run: runRemoteBasedElectronTests }]
])
const mochaFile = process.env.MOCHA_FILE
for (const runner of runners) {
if (runnersToRun && !runnersToRun.includes(runner[1])) {
console.info('\nSkipping:', runner[0])
const testResultsDir = process.env.ELECTRON_TEST_RESULTS_DIR
for (const [runnerId, { description, run }] of runners) {
if (runnersToRun && !runnersToRun.includes(runnerId)) {
console.info('\nSkipping:', description)
continue
}
try {
console.info('\nRunning:', runner[0])
if (mochaFile) {
process.env.MOCHA_FILE = mochaFile.replace('.xml', `-${runner[1]}.xml`)
console.info('\nRunning:', description)
if (testResultsDir) {
process.env.MOCHA_FILE = path.join(testResultsDir, `test-results-${runnerId}.xml`)
}
await runner[2]()
await run()
} catch (err) {
errors.push([runner[0], err])
errors.push([runnerId, err])
}
}

View File

@@ -0,0 +1,27 @@
#!/usr/bin/env python
import zipfile
import sys
def main(zip_path, manifest_in):
with open(manifest_in, 'r') as manifest, \
zipfile.ZipFile(zip_path, 'r', allowZip64=True) as z:
files_in_zip = set(z.namelist())
files_in_manifest = set([l.strip() for l in manifest.readlines()])
added_files = files_in_zip - files_in_manifest
removed_files = files_in_manifest - files_in_zip
if added_files:
print("Files added to bundle:")
for f in sorted(list(added_files)):
print('+' + f)
if removed_files:
print("Files removed from bundle:")
for f in sorted(list(removed_files)):
print('-' + f)
if added_files or removed_files:
return 1
else:
return 0
if __name__ == '__main__':
sys.exit(main(*sys.argv[1:]))

View File

@@ -0,0 +1,70 @@
LICENSE
LICENSES.chromium.html
chrome-sandbox
chrome_100_percent.pak
chrome_200_percent.pak
electron
icudtl.dat
libEGL.so
libGLESv2.so
libffmpeg.so
locales/am.pak
locales/ar.pak
locales/bg.pak
locales/bn.pak
locales/ca.pak
locales/cs.pak
locales/da.pak
locales/de.pak
locales/el.pak
locales/en-GB.pak
locales/en-US.pak
locales/es-419.pak
locales/es.pak
locales/et.pak
locales/fa.pak
locales/fi.pak
locales/fil.pak
locales/fr.pak
locales/gu.pak
locales/he.pak
locales/hi.pak
locales/hr.pak
locales/hu.pak
locales/id.pak
locales/it.pak
locales/ja.pak
locales/kn.pak
locales/ko.pak
locales/lt.pak
locales/lv.pak
locales/ml.pak
locales/mr.pak
locales/ms.pak
locales/nb.pak
locales/nl.pak
locales/pl.pak
locales/pt-BR.pak
locales/pt-PT.pak
locales/ro.pak
locales/ru.pak
locales/sk.pak
locales/sl.pak
locales/sr.pak
locales/sv.pak
locales/sw.pak
locales/ta.pak
locales/te.pak
locales/th.pak
locales/tr.pak
locales/uk.pak
locales/vi.pak
locales/zh-CN.pak
locales/zh-TW.pak
natives_blob.bin
resources.pak
resources/default_app.asar
resources/electron.asar
snapshot_blob.bin
v8_context_snapshot.bin
version

View File

@@ -0,0 +1,72 @@
LICENSE
LICENSES.chromium.html
chrome-sandbox
chrome_100_percent.pak
chrome_200_percent.pak
electron
icudtl.dat
libEGL.so
libGLESv2.so
libffmpeg.so
locales/am.pak
locales/ar.pak
locales/bg.pak
locales/bn.pak
locales/ca.pak
locales/cs.pak
locales/da.pak
locales/de.pak
locales/el.pak
locales/en-GB.pak
locales/en-US.pak
locales/es-419.pak
locales/es.pak
locales/et.pak
locales/fa.pak
locales/fi.pak
locales/fil.pak
locales/fr.pak
locales/gu.pak
locales/he.pak
locales/hi.pak
locales/hr.pak
locales/hu.pak
locales/id.pak
locales/it.pak
locales/ja.pak
locales/kn.pak
locales/ko.pak
locales/lt.pak
locales/lv.pak
locales/ml.pak
locales/mr.pak
locales/ms.pak
locales/nb.pak
locales/nl.pak
locales/pl.pak
locales/pt-BR.pak
locales/pt-PT.pak
locales/ro.pak
locales/ru.pak
locales/sk.pak
locales/sl.pak
locales/sr.pak
locales/sv.pak
locales/sw.pak
locales/ta.pak
locales/te.pak
locales/th.pak
locales/tr.pak
locales/uk.pak
locales/vi.pak
locales/zh-CN.pak
locales/zh-TW.pak
natives_blob.bin
resources.pak
resources/default_app.asar
resources/electron.asar
snapshot_blob.bin
swiftshader/libEGL.so
swiftshader/libGLESv2.so
v8_context_snapshot.bin
version

View File

@@ -0,0 +1,72 @@
LICENSE
LICENSES.chromium.html
chrome-sandbox
chrome_100_percent.pak
chrome_200_percent.pak
electron
icudtl.dat
libEGL.so
libGLESv2.so
libffmpeg.so
locales/am.pak
locales/ar.pak
locales/bg.pak
locales/bn.pak
locales/ca.pak
locales/cs.pak
locales/da.pak
locales/de.pak
locales/el.pak
locales/en-GB.pak
locales/en-US.pak
locales/es-419.pak
locales/es.pak
locales/et.pak
locales/fa.pak
locales/fi.pak
locales/fil.pak
locales/fr.pak
locales/gu.pak
locales/he.pak
locales/hi.pak
locales/hr.pak
locales/hu.pak
locales/id.pak
locales/it.pak
locales/ja.pak
locales/kn.pak
locales/ko.pak
locales/lt.pak
locales/lv.pak
locales/ml.pak
locales/mr.pak
locales/ms.pak
locales/nb.pak
locales/nl.pak
locales/pl.pak
locales/pt-BR.pak
locales/pt-PT.pak
locales/ro.pak
locales/ru.pak
locales/sk.pak
locales/sl.pak
locales/sr.pak
locales/sv.pak
locales/sw.pak
locales/ta.pak
locales/te.pak
locales/th.pak
locales/tr.pak
locales/uk.pak
locales/vi.pak
locales/zh-CN.pak
locales/zh-TW.pak
natives_blob.bin
resources.pak
resources/default_app.asar
resources/electron.asar
snapshot_blob.bin
swiftshader/libEGL.so
swiftshader/libGLESv2.so
v8_context_snapshot.bin
version

View File

@@ -0,0 +1,72 @@
LICENSE
LICENSES.chromium.html
chrome-sandbox
chrome_100_percent.pak
chrome_200_percent.pak
electron
icudtl.dat
libEGL.so
libGLESv2.so
libffmpeg.so
locales/am.pak
locales/ar.pak
locales/bg.pak
locales/bn.pak
locales/ca.pak
locales/cs.pak
locales/da.pak
locales/de.pak
locales/el.pak
locales/en-GB.pak
locales/en-US.pak
locales/es-419.pak
locales/es.pak
locales/et.pak
locales/fa.pak
locales/fi.pak
locales/fil.pak
locales/fr.pak
locales/gu.pak
locales/he.pak
locales/hi.pak
locales/hr.pak
locales/hu.pak
locales/id.pak
locales/it.pak
locales/ja.pak
locales/kn.pak
locales/ko.pak
locales/lt.pak
locales/lv.pak
locales/ml.pak
locales/mr.pak
locales/ms.pak
locales/nb.pak
locales/nl.pak
locales/pl.pak
locales/pt-BR.pak
locales/pt-PT.pak
locales/ro.pak
locales/ru.pak
locales/sk.pak
locales/sl.pak
locales/sr.pak
locales/sv.pak
locales/sw.pak
locales/ta.pak
locales/te.pak
locales/th.pak
locales/tr.pak
locales/uk.pak
locales/vi.pak
locales/zh-CN.pak
locales/zh-TW.pak
natives_blob.bin
resources.pak
resources/default_app.asar
resources/electron.asar
snapshot_blob.bin
swiftshader/libEGL.so
swiftshader/libGLESv2.so
v8_context_snapshot.bin
version

View File

@@ -0,0 +1,316 @@
Electron.app/
Electron.app/Contents/
Electron.app/Contents/Frameworks/
Electron.app/Contents/Frameworks/Electron Framework.framework/
Electron.app/Contents/Frameworks/Electron Framework.framework/Electron Framework
Electron.app/Contents/Frameworks/Electron Framework.framework/Libraries
Electron.app/Contents/Frameworks/Electron Framework.framework/Resources
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libEGL.dylib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libEGL.dylib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libGLESv2.dylib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Info.plist
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/MainMenu.nib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/am.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/am.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ar.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ar.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bg.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bg.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bn.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bn.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ca.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ca.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/chrome_100_percent.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/chrome_200_percent.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/crashpad_handler
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/cs.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/cs.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/da.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/da.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/de.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/de.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/el.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/el.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en_GB.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en_GB.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es_419.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es_419.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/et.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/et.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fa.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fa.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fi.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fi.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fil.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fil.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fr.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fr.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/gu.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/gu.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/he.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/he.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hi.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hi.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hr.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hr.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hu.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hu.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/icudtl.dat
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/id.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/id.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/it.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/it.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ja.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ja.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/kn.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/kn.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ko.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ko.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lt.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lt.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lv.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lv.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ml.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ml.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/mr.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/mr.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/natives_blob.bin
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nl.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nl.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pl.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pl.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_BR.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_BR.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_PT.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_PT.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/resources.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ro.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ro.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ru.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ru.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sk.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sk.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sl.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sl.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sr.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sr.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sv.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sv.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sw.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sw.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ta.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ta.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/te.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/te.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/th.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/th.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/tr.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/tr.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/uk.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/uk.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/v8_context_snapshot.bin
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/vi.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/vi.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_CN.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_CN.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_TW.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_TW.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/Current
Electron.app/Contents/Frameworks/Electron Helper.app/
Electron.app/Contents/Frameworks/Electron Helper.app/Contents/
Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist
Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS/
Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS/Electron Helper
Electron.app/Contents/Frameworks/Electron Helper.app/Contents/PkgInfo
Electron.app/Contents/Frameworks/Mantle.framework/
Electron.app/Contents/Frameworks/Mantle.framework/Headers
Electron.app/Contents/Frameworks/Mantle.framework/Mantle
Electron.app/Contents/Frameworks/Mantle.framework/Modules
Electron.app/Contents/Frameworks/Mantle.framework/Resources
Electron.app/Contents/Frameworks/Mantle.framework/Versions/
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLJSONAdapter.h
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLManagedObjectAdapter.h
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel+NSCoding.h
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLModel.h
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/MTLValueTransformer.h
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/Mantle.h
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSArray+MTLManipulationAdditions.h
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSDictionary+MTLManipulationAdditions.h
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSObject+MTLComparisonAdditions.h
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLInversionAdditions.h
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Headers/NSValueTransformer+MTLPredefinedTransformerAdditions.h
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Mantle
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Modules/
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Modules/module.modulemap
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Resources/
Electron.app/Contents/Frameworks/Mantle.framework/Versions/A/Resources/Info.plist
Electron.app/Contents/Frameworks/Mantle.framework/Versions/Current
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Headers
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Modules
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/ReactiveCocoa
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Resources
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTKeyPathCoding.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/EXTScope.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSArray+RACSequenceAdditions.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACCommandSupport.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSControl+RACTextSignalSupport.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSData+RACSupport.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSDictionary+RACSequenceAdditions.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSEnumerator+RACSequenceAdditions.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSFileHandle+RACSupport.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSIndexSet+RACSequenceAdditions.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSNotificationCenter+RACSupport.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACAppKitBindings.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACDeallocating.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACLifting.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACPropertySubscribing.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSObject+RACSelectorSignal.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSOrderedSet+RACSequenceAdditions.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSSet+RACSequenceAdditions.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSequenceAdditions.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSString+RACSupport.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSText+RACSignalSupport.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSURLConnection+RACSupport.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/NSUserDefaults+RACSupport.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBacktrace.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACBehaviorSubject.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACChannel.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCommand.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACCompoundDisposable.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACDisposable.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACEvent.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACGroupedSignal.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACKVOChannel.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACMulticastConnection.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler+Subclass.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACQueueScheduler.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACReplaySubject.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler+Subclass.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScheduler.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACScopedDisposable.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSequence.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSerialDisposable.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal+Operations.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSignal.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACStream.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubject.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriber.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACSubscriptingAssignmentTrampoline.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTargetQueueScheduler.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTestScheduler.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACTuple.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/RACUnit.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/ReactiveCocoa.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Headers/metamacros.h
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Modules/
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Modules/module.modulemap
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/ReactiveCocoa
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Resources/
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/A/Resources/Info.plist
Electron.app/Contents/Frameworks/ReactiveCocoa.framework/Versions/Current
Electron.app/Contents/Frameworks/Squirrel.framework/
Electron.app/Contents/Frameworks/Squirrel.framework/Headers
Electron.app/Contents/Frameworks/Squirrel.framework/Modules
Electron.app/Contents/Frameworks/Squirrel.framework/Resources
Electron.app/Contents/Frameworks/Squirrel.framework/Squirrel
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSBundle+SQRLVersionExtensions.h
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/NSProcessInfo+SQRLVersionExtensions.h
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLDownloadedUpdate.h
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdate.h
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/SQRLUpdater.h
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Headers/Squirrel.h
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Modules/
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Modules/module.modulemap
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Resources/
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Resources/Info.plist
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Resources/ShipIt
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/A/Squirrel
Electron.app/Contents/Frameworks/Squirrel.framework/Versions/Current
Electron.app/Contents/Info.plist
Electron.app/Contents/MacOS/
Electron.app/Contents/MacOS/Electron
Electron.app/Contents/PkgInfo
Electron.app/Contents/Resources/
Electron.app/Contents/Resources/am.lproj/
Electron.app/Contents/Resources/ar.lproj/
Electron.app/Contents/Resources/bg.lproj/
Electron.app/Contents/Resources/bn.lproj/
Electron.app/Contents/Resources/ca.lproj/
Electron.app/Contents/Resources/cs.lproj/
Electron.app/Contents/Resources/da.lproj/
Electron.app/Contents/Resources/de.lproj/
Electron.app/Contents/Resources/default_app.asar
Electron.app/Contents/Resources/el.lproj/
Electron.app/Contents/Resources/electron.asar
Electron.app/Contents/Resources/electron.icns
Electron.app/Contents/Resources/en.lproj/
Electron.app/Contents/Resources/en_GB.lproj/
Electron.app/Contents/Resources/es.lproj/
Electron.app/Contents/Resources/es_419.lproj/
Electron.app/Contents/Resources/et.lproj/
Electron.app/Contents/Resources/fa.lproj/
Electron.app/Contents/Resources/fi.lproj/
Electron.app/Contents/Resources/fil.lproj/
Electron.app/Contents/Resources/fr.lproj/
Electron.app/Contents/Resources/gu.lproj/
Electron.app/Contents/Resources/he.lproj/
Electron.app/Contents/Resources/hi.lproj/
Electron.app/Contents/Resources/hr.lproj/
Electron.app/Contents/Resources/hu.lproj/
Electron.app/Contents/Resources/id.lproj/
Electron.app/Contents/Resources/it.lproj/
Electron.app/Contents/Resources/ja.lproj/
Electron.app/Contents/Resources/kn.lproj/
Electron.app/Contents/Resources/ko.lproj/
Electron.app/Contents/Resources/lt.lproj/
Electron.app/Contents/Resources/lv.lproj/
Electron.app/Contents/Resources/ml.lproj/
Electron.app/Contents/Resources/mr.lproj/
Electron.app/Contents/Resources/ms.lproj/
Electron.app/Contents/Resources/nb.lproj/
Electron.app/Contents/Resources/nl.lproj/
Electron.app/Contents/Resources/pl.lproj/
Electron.app/Contents/Resources/pt_BR.lproj/
Electron.app/Contents/Resources/pt_PT.lproj/
Electron.app/Contents/Resources/ro.lproj/
Electron.app/Contents/Resources/ru.lproj/
Electron.app/Contents/Resources/sk.lproj/
Electron.app/Contents/Resources/sl.lproj/
Electron.app/Contents/Resources/sr.lproj/
Electron.app/Contents/Resources/sv.lproj/
Electron.app/Contents/Resources/sw.lproj/
Electron.app/Contents/Resources/ta.lproj/
Electron.app/Contents/Resources/te.lproj/
Electron.app/Contents/Resources/th.lproj/
Electron.app/Contents/Resources/tr.lproj/
Electron.app/Contents/Resources/uk.lproj/
Electron.app/Contents/Resources/vi.lproj/
Electron.app/Contents/Resources/zh_CN.lproj/
Electron.app/Contents/Resources/zh_TW.lproj/
LICENSE
LICENSES.chromium.html
version

View File

@@ -0,0 +1,210 @@
Electron.app/
Electron.app/Contents/
Electron.app/Contents/Frameworks/
Electron.app/Contents/Frameworks/Electron Framework.framework/
Electron.app/Contents/Frameworks/Electron Framework.framework/Electron Framework
Electron.app/Contents/Frameworks/Electron Framework.framework/Libraries
Electron.app/Contents/Frameworks/Electron Framework.framework/Resources
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libEGL.dylib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libEGL.dylib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libGLESv2.dylib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Info.plist
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/MainMenu.nib
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/am.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/am.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ar.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ar.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bg.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bg.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bn.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/bn.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ca.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ca.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/chrome_100_percent.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/chrome_200_percent.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/cs.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/cs.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/da.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/da.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/de.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/de.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/el.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/el.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en_GB.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/en_GB.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es_419.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/es_419.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/et.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/et.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fa.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fa.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fi.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fi.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fil.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fil.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fr.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/fr.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/gu.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/gu.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/he.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/he.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hi.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hi.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hr.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hr.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hu.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/hu.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/icudtl.dat
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/id.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/id.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/it.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/it.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ja.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ja.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/kn.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/kn.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ko.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ko.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lt.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lt.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lv.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/lv.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ml.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ml.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/mr.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/mr.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ms.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/natives_blob.bin
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nb.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nl.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/nl.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pl.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pl.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_BR.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_BR.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_PT.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/pt_PT.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/resources.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ro.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ro.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ru.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ru.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sk.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sk.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sl.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sl.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sr.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sr.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sv.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sv.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sw.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/sw.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ta.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/ta.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/te.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/te.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/th.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/th.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/tr.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/tr.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/uk.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/uk.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/v8_context_snapshot.bin
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/vi.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/vi.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_CN.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_CN.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_TW.lproj/
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/zh_TW.lproj/locale.pak
Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/Current
Electron.app/Contents/Frameworks/Electron Helper.app/
Electron.app/Contents/Frameworks/Electron Helper.app/Contents/
Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist
Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS/
Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS/Electron Helper
Electron.app/Contents/Frameworks/Electron Helper.app/Contents/PkgInfo
Electron.app/Contents/Info.plist
Electron.app/Contents/Library/
Electron.app/Contents/Library/LoginItems/
Electron.app/Contents/Library/LoginItems/Electron Login Helper.app/
Electron.app/Contents/Library/LoginItems/Electron Login Helper.app/Contents/
Electron.app/Contents/Library/LoginItems/Electron Login Helper.app/Contents/Info.plist
Electron.app/Contents/Library/LoginItems/Electron Login Helper.app/Contents/MacOS/
Electron.app/Contents/Library/LoginItems/Electron Login Helper.app/Contents/MacOS/Electron Login Helper
Electron.app/Contents/Library/LoginItems/Electron Login Helper.app/Contents/PkgInfo
Electron.app/Contents/MacOS/
Electron.app/Contents/MacOS/Electron
Electron.app/Contents/PkgInfo
Electron.app/Contents/Resources/
Electron.app/Contents/Resources/am.lproj/
Electron.app/Contents/Resources/ar.lproj/
Electron.app/Contents/Resources/bg.lproj/
Electron.app/Contents/Resources/bn.lproj/
Electron.app/Contents/Resources/ca.lproj/
Electron.app/Contents/Resources/cs.lproj/
Electron.app/Contents/Resources/da.lproj/
Electron.app/Contents/Resources/de.lproj/
Electron.app/Contents/Resources/default_app.asar
Electron.app/Contents/Resources/el.lproj/
Electron.app/Contents/Resources/electron.asar
Electron.app/Contents/Resources/electron.icns
Electron.app/Contents/Resources/en.lproj/
Electron.app/Contents/Resources/en_GB.lproj/
Electron.app/Contents/Resources/es.lproj/
Electron.app/Contents/Resources/es_419.lproj/
Electron.app/Contents/Resources/et.lproj/
Electron.app/Contents/Resources/fa.lproj/
Electron.app/Contents/Resources/fi.lproj/
Electron.app/Contents/Resources/fil.lproj/
Electron.app/Contents/Resources/fr.lproj/
Electron.app/Contents/Resources/gu.lproj/
Electron.app/Contents/Resources/he.lproj/
Electron.app/Contents/Resources/hi.lproj/
Electron.app/Contents/Resources/hr.lproj/
Electron.app/Contents/Resources/hu.lproj/
Electron.app/Contents/Resources/id.lproj/
Electron.app/Contents/Resources/it.lproj/
Electron.app/Contents/Resources/ja.lproj/
Electron.app/Contents/Resources/kn.lproj/
Electron.app/Contents/Resources/ko.lproj/
Electron.app/Contents/Resources/lt.lproj/
Electron.app/Contents/Resources/lv.lproj/
Electron.app/Contents/Resources/ml.lproj/
Electron.app/Contents/Resources/mr.lproj/
Electron.app/Contents/Resources/ms.lproj/
Electron.app/Contents/Resources/nb.lproj/
Electron.app/Contents/Resources/nl.lproj/
Electron.app/Contents/Resources/pl.lproj/
Electron.app/Contents/Resources/pt_BR.lproj/
Electron.app/Contents/Resources/pt_PT.lproj/
Electron.app/Contents/Resources/ro.lproj/
Electron.app/Contents/Resources/ru.lproj/
Electron.app/Contents/Resources/sk.lproj/
Electron.app/Contents/Resources/sl.lproj/
Electron.app/Contents/Resources/sr.lproj/
Electron.app/Contents/Resources/sv.lproj/
Electron.app/Contents/Resources/sw.lproj/
Electron.app/Contents/Resources/ta.lproj/
Electron.app/Contents/Resources/te.lproj/
Electron.app/Contents/Resources/th.lproj/
Electron.app/Contents/Resources/tr.lproj/
Electron.app/Contents/Resources/uk.lproj/
Electron.app/Contents/Resources/vi.lproj/
Electron.app/Contents/Resources/zh_CN.lproj/
Electron.app/Contents/Resources/zh_TW.lproj/
LICENSE
LICENSES.chromium.html
version

View File

@@ -0,0 +1,72 @@
LICENSE
LICENSES.chromium.html
chrome_100_percent.pak
chrome_200_percent.pak
d3dcompiler_47.dll
electron.exe
ffmpeg.dll
icudtl.dat
libEGL.dll
libGLESv2.dll
locales/am.pak
locales/ar.pak
locales/bg.pak
locales/bn.pak
locales/ca.pak
locales/cs.pak
locales/da.pak
locales/de.pak
locales/el.pak
locales/en-GB.pak
locales/en-US.pak
locales/es-419.pak
locales/es.pak
locales/et.pak
locales/fa.pak
locales/fi.pak
locales/fil.pak
locales/fr.pak
locales/gu.pak
locales/he.pak
locales/hi.pak
locales/hr.pak
locales/hu.pak
locales/id.pak
locales/it.pak
locales/ja.pak
locales/kn.pak
locales/ko.pak
locales/lt.pak
locales/lv.pak
locales/ml.pak
locales/mr.pak
locales/ms.pak
locales/nb.pak
locales/nl.pak
locales/pl.pak
locales/pt-BR.pak
locales/pt-PT.pak
locales/ro.pak
locales/ru.pak
locales/sk.pak
locales/sl.pak
locales/sr.pak
locales/sv.pak
locales/sw.pak
locales/ta.pak
locales/te.pak
locales/th.pak
locales/tr.pak
locales/uk.pak
locales/vi.pak
locales/zh-CN.pak
locales/zh-TW.pak
natives_blob.bin
resources.pak
resources/default_app.asar
resources/electron.asar
snapshot_blob.bin
swiftshader/libEGL.dll
swiftshader/libGLESv2.dll
v8_context_snapshot.bin
version

View File

@@ -0,0 +1,72 @@
LICENSE
LICENSES.chromium.html
chrome_100_percent.pak
chrome_200_percent.pak
d3dcompiler_47.dll
electron.exe
ffmpeg.dll
icudtl.dat
libEGL.dll
libGLESv2.dll
locales/am.pak
locales/ar.pak
locales/bg.pak
locales/bn.pak
locales/ca.pak
locales/cs.pak
locales/da.pak
locales/de.pak
locales/el.pak
locales/en-GB.pak
locales/en-US.pak
locales/es-419.pak
locales/es.pak
locales/et.pak
locales/fa.pak
locales/fi.pak
locales/fil.pak
locales/fr.pak
locales/gu.pak
locales/he.pak
locales/hi.pak
locales/hr.pak
locales/hu.pak
locales/id.pak
locales/it.pak
locales/ja.pak
locales/kn.pak
locales/ko.pak
locales/lt.pak
locales/lv.pak
locales/ml.pak
locales/mr.pak
locales/ms.pak
locales/nb.pak
locales/nl.pak
locales/pl.pak
locales/pt-BR.pak
locales/pt-PT.pak
locales/ro.pak
locales/ru.pak
locales/sk.pak
locales/sl.pak
locales/sr.pak
locales/sv.pak
locales/sw.pak
locales/ta.pak
locales/te.pak
locales/th.pak
locales/tr.pak
locales/uk.pak
locales/vi.pak
locales/zh-CN.pak
locales/zh-TW.pak
natives_blob.bin
resources.pak
resources/default_app.asar
resources/electron.asar
snapshot_blob.bin
swiftshader/libEGL.dll
swiftshader/libGLESv2.dll
v8_context_snapshot.bin
version

View File

@@ -2563,6 +2563,34 @@ describe('BrowserWindow module', () => {
})
})
describe('focus event', () => {
it('should not emit if focusing on a main window with a modal open', (done) => {
const childWindowClosed = false
const child = new BrowserWindow({
parent: w,
modal: true,
show: false
})
child.once('ready-to-show', () => {
child.show()
})
child.on('show', () => {
w.once('focus', () => {
expect(child.isDestroyed()).to.equal(true)
done()
})
w.focus() // this should not trigger the above listener
child.close()
})
// act
child.loadURL(server.url)
w.show()
})
})
describe('sheet-begin event', () => {
let sheet = null

View File

@@ -3,7 +3,6 @@
const assert = require('assert')
const ChildProcess = require('child_process')
const fs = require('fs')
const os = require('os')
const http = require('http')
const path = require('path')
const { closeWindow } = require('./window-helpers')
@@ -1089,16 +1088,6 @@ describe('webContents module', () => {
describe('preload-error event', () => {
const generateSpecs = (description, sandbox) => {
describe(description, () => {
const tmpPreload = path.join(os.tmpdir(), 'preload.js')
before((done) => {
fs.writeFile(tmpPreload, '', done)
})
after((done) => {
fs.unlink(tmpPreload, () => done())
})
it('is triggered when unhandled exception is thrown', async () => {
const preload = path.join(fixtures, 'module', 'preload-error-exception.js')
@@ -1158,26 +1147,6 @@ describe('webContents module', () => {
expect(preloadPath).to.equal(preload)
expect(error.message).to.contain('preload-invalid.js')
})
it('is triggered when preload script is outside of app path', async () => {
const preload = tmpPreload
w.destroy()
w = new BrowserWindow({
show: false,
webPreferences: {
sandbox,
preload
}
})
const promise = emittedOnce(w.webContents, 'preload-error')
w.loadURL('about:blank')
const [, preloadPath, error] = await promise
expect(preloadPath).to.equal(preload)
expect(error.message).to.contain('Preload scripts outside of app path are not allowed')
})
})
}

View File

@@ -1,138 +0,0 @@
#!/usr/bin/env python
# Copyright (c) 2013 GitHub, Inc.
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Convert pdb to sym for given directories"""
import errno
import glob
import optparse
import os
import Queue
import re
import subprocess
import sys
import threading
SRC_DIR = os.path.abspath(os.path.join(__file__, '..', '..', '..', '..'))
# Duplicated as this script lives in tools not script
def get_out_dir():
out_dir = 'Debug'
override = os.environ.get('ELECTRON_OUT_DIR')
if override is not None:
out_dir = override
return os.path.join(SRC_DIR, 'out', out_dir)
CONCURRENT_TASKS=4
OUT_DIR=get_out_dir()
DUMP_SYMS=os.path.join(OUT_DIR, 'dump_syms.exe')
def GetCommandOutput(command):
"""Runs the command list, returning its output.
Prints the given command (which should be a list of one or more strings),
then runs it and returns its output (stdout) as a string.
From chromium_utils.
"""
devnull = open(os.devnull, 'w')
proc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=devnull,
bufsize=1)
output = proc.communicate()[0]
return output
def mkdir_p(path):
"""Simulates mkdir -p."""
try:
os.makedirs(path)
except OSError as e:
if e.errno == errno.EEXIST and os.path.isdir(path):
pass
else: raise
def GenerateSymbols(options, binaries):
"""Dumps the symbols of binary and places them in the given directory."""
queue = Queue.Queue()
print_lock = threading.Lock()
def _Worker():
while True:
binary = queue.get()
if options.verbose:
with print_lock:
print "Generating symbols for %s" % binary
syms = GetCommandOutput([DUMP_SYMS, binary])
module_line = re.match("MODULE [^ ]+ [^ ]+ ([0-9A-Fa-f]+) (.*)\r\n", syms)
if module_line == None:
with print_lock:
print "Failed to get symbols for %s" % binary
queue.task_done()
continue
output_path = os.path.join(options.symbols_dir, module_line.group(2),
module_line.group(1))
mkdir_p(output_path)
symbol_file = "%s.sym" % module_line.group(2)[:-4] # strip .pdb
f = open(os.path.join(output_path, symbol_file), 'w')
f.write(syms)
f.close()
queue.task_done()
for binary in binaries:
queue.put(binary)
for _ in range(options.jobs):
t = threading.Thread(target=_Worker)
t.daemon = True
t.start()
queue.join()
def main():
parser = optparse.OptionParser()
parser.add_option('', '--symbols-dir', default='',
help='The directory where to write the symbols file.')
parser.add_option('', '--clear', default=False, action='store_true',
help='Clear the symbols directory before writing new '
'symbols.')
parser.add_option('-j', '--jobs', default=CONCURRENT_TASKS, action='store',
type='int', help='Number of parallel tasks to run.')
parser.add_option('-v', '--verbose', action='store_true',
help='Print verbose status output.')
(options, directories) = parser.parse_args()
if not options.symbols_dir:
print "Required option --symbols-dir missing."
return 1
if options.clear:
try:
shutil.rmtree(options.symbols_dir)
except:
pass
pdbs = []
for directory in directories:
pdbs += glob.glob(os.path.join(directory, '*.exe.pdb'))
pdbs += glob.glob(os.path.join(directory, '*.dll.pdb'))
GenerateSymbols(options, pdbs)
return 0
if '__main__' == __name__:
sys.exit(main())