30e992dec4
* chore: bump chromium in DEPS to 115.0.5772.0
* chore: update disable_color_correct_rendering.patch
no manual changes; patch succeeded with fuzz 2.
* chore: update chromium/build_libc_as_static_library.patch
no manual changes; patch succeeded with fuzz 2 (offset 1 line).
* chore: update chromium/feat_configure_launch_options_for_service_process.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4518747
patch manually reapplied due to upstream code shear
* chore: update chromium/chore_patch_out_profile_methods_in_profile_selections_cc.patch
https://chromium-review.googlesource.com/c/chromium/src/+/4502965
patch manually reapplied due to upstream code shear
* chore: update bundle_locations #include location
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4525355
* chore: Remove `extension_name` from DesktopStreamsRegistry
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4514081
* chore: bump chromium in DEPS to 115.0.5778.0
* chore: add chromium/chore_patch_out_profile_methods_in_chrome_browser_pdf.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4482679
Another instance of patching out upstream references to Profile code
* refactor: add WebViewGuestDelegate::GetGuestDelegateWeakPtr()
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4515455
This approach copied from GuestViewBase::GetGuestDelegateWeakPtr() approach in that same commit.
* fixup! chore: update bundle_locations #include location
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4525355
Sync namespace use to upstream base::mac -> base::apple changes
* fixup! chore: update bundle_locations #include location
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4525355
Sync namespace use to upstream base::mac -> base::apple changes
* chore: update chromium/mas_disable_remote_accessibility.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4530546
patch manually reapplied due to upstream code shear
* chore: update chromium/printing.patch
no manual changes; patch succeeded with fuzz
* chore: update chromium/build_add_electron_tracing_category.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4517872
no manual changes; patch succeeded with fuzz
* chore: update chromium/feat_ensure_mas_builds_of_the_same_application_can_use_safestorage.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4529098
patch manually reapplied due to upstream code shear
* chromium/build_only_use_the_mas_build_config_in_the_required_components.patch
https://chromium-review.googlesource.com/c/chromium/src/+/4529098
patch manually reapplied due to upstream code shear
* chore: update chromium/mas-cgdisplayusesforcetogray.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4529475
no manual changes; patch succeeded with fuzz
* chore: update chromium/build_only_use_the_mas_build_config_in_the_required_components.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4429011
no manual changes; patch succeeded with fuzz
* chore: remove chromium/cherry-pick-48a136e77e6d.patch
already present upstream
* chore: remove chromium/cherry-pick-e6e23ba00379.patch
already present upstream
* [Code Health] Remove value based RegisterPref for Dict and List
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4533537
* Remove `cxx17_backports.h` and adjust unittest file
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4534916
Notes: mostly just removing #include and s/base::clamp/std::clamp/
* refactor: add FakeBrowserProcess helper class
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4424072
Used in ElectronBrowserMainParts' fake_browser_process_ field. Previously
this was an BrowserProcessImpl instance, but upstream 4424072 makes that
an abstract base class. `FakeBrowserProcess` is a thin subclass with the
minimum code needed to make it concrete.
`ElectronBrowserMainParts::fake_browser_process_` is now a `shared_ptr`
instead of a `unique_ptr` so we can avoid exposing `FakeBrowserProcess`
in the header.
* fixup! refactor: add FakeBrowserProcess helper class
remove unnecessary unique_ptr
* fix: Browser::SetDockIcon() when !Browser.is_ready()
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4410741
An alternative fix for https://github.com/electron/electron/pull/36279 .
The previous fix was to call `SetSupportedScales()` ourselves (1b1609a
),
but upstream has removed this API.
CC @codebytere
* fixup! chore: remove chromium/cherry-pick-e6e23ba00379.patch
* chore: update chromium/export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4517404
patch manually reapplied due to upstream code shear
* chore: update patches
* chore: add dep: resource_coordinator:mojo_bindings
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4521464
* fixup! chore: add dep: resource_coordinator:mojo_bindings
chore: make lint happy
* chore: patch out Profile methods in titlebar_config
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4508143 (primary)
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4534461 (followup)
* chore: bump chromium in DEPS to 115.0.5780.0
* chore: update chromium/disable_hidden.patch
no manual changes; patch succeeded with fuzz
* chore: update chromium/sysroot.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4535715
no manual changes; patch succeeded with fuzz
* chore: update chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4403623
patch manually reapplied due to upstream code shear
* chore: update chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4547380
patch manually reapplied due to upstream code shear
* chore: update patches
* fixup! fix: Browser::SetDockIcon() when !Browser.is_ready()
chore: iwyu image.h
* chore: bump chromium in DEPS to 115.0.5782.0
* chore: bump chromium in DEPS to 115.0.5784.0
* 4514181: CR2023: Update filled cr-input styles.
https://chromium-review.googlesource.com/c/chromium/src/+/4514181
* 4521894: Remove SiteInstanceDeleting usage outside of tests.
https://chromium-review.googlesource.com/c/chromium/src/+/4521894
* 4525355: Move backup_util and bundle_locations to base/apple
https://chromium-review.googlesource.com/c/chromium/src/+/4525355
* 4484743: webauthn: add underlying support for calling iCloud Keychain on macOS.
https://chromium-review.googlesource.com/c/chromium/src/+/4484743
* chore: fixup patch indices
* 4546398: Convert /chrome/browser to use ARC
https://chromium-review.googlesource.com/c/chromium/src/+/4546398
* chore: bump chromium in DEPS to 115.0.5786.0
* chore: update patches
* 4540682: Initialize PDF SDK with policy in chrome_pdf::RenderPDFPageToDC()
https://chromium-review.googlesource.com/c/chromium/src/+/4540682
* Don't import ObjC++ fn headers into electron_api_app
* 4535715: Refactor sysroot-creator.sh
https://chromium-review.googlesource.com/c/chromium/src/+/4535715
* fixup! refactor: add FakeBrowserProcess helper class
* 4531903: [string][test] Create/Copy strings to old space before externalization
https://chromium-review.googlesource.com/c/v8/v8/+/4531903
* 59645: Add APIs to support RSA keys with large e.
https://boringssl-review.googlesource.com/c/boringssl/+/59645
---------
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
95 lines
3.2 KiB
Text
95 lines
3.2 KiB
Text
// Copyright (c) 2013 GitHub, Inc.
|
|
// Use of this source code is governed by the MIT license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "shell/browser/electron_browser_main_parts.h"
|
|
|
|
#include <string>
|
|
|
|
#include "base/apple/bundle_locations.h"
|
|
#include "base/mac/foundation_util.h"
|
|
#include "base/path_service.h"
|
|
#include "services/device/public/cpp/geolocation/system_geolocation_source_mac.h"
|
|
#include "shell/browser/browser_process_impl.h"
|
|
#import "shell/browser/mac/electron_application.h"
|
|
#include "shell/browser/mac/electron_application_delegate.h"
|
|
#include "shell/common/electron_paths.h"
|
|
#include "ui/base/l10n/l10n_util_mac.h"
|
|
|
|
namespace electron {
|
|
|
|
void ElectronBrowserMainParts::PreCreateMainMessageLoop() {
|
|
// Set our own application delegate.
|
|
ElectronApplicationDelegate* delegate =
|
|
[[ElectronApplicationDelegate alloc] init];
|
|
[NSApp setDelegate:delegate];
|
|
|
|
PreCreateMainMessageLoopCommon();
|
|
|
|
// Prevent Cocoa from turning command-line arguments into
|
|
// |-application:openFiles:|, since we already handle them directly.
|
|
[[NSUserDefaults standardUserDefaults]
|
|
setObject:@"NO"
|
|
forKey:@"NSTreatUnknownArgumentsAsOpen"];
|
|
|
|
if (!g_browser_process->geolocation_manager()) {
|
|
g_browser_process->SetGeolocationManager(
|
|
device::SystemGeolocationSourceMac::CreateGeolocationManagerOnMac());
|
|
}
|
|
}
|
|
|
|
void ElectronBrowserMainParts::FreeAppDelegate() {
|
|
[[NSApp delegate] release];
|
|
[NSApp setDelegate:nil];
|
|
}
|
|
|
|
void ElectronBrowserMainParts::RegisterURLHandler() {
|
|
[[AtomApplication sharedApplication] registerURLHandler];
|
|
}
|
|
|
|
// Replicates NSApplicationMain, but doesn't start a run loop.
|
|
void ElectronBrowserMainParts::InitializeMainNib() {
|
|
auto infoDictionary = base::apple::OuterBundle().infoDictionary;
|
|
|
|
auto principalClass =
|
|
NSClassFromString([infoDictionary objectForKey:@"NSPrincipalClass"]);
|
|
auto application = [principalClass sharedApplication];
|
|
|
|
NSString* mainNibName = [infoDictionary objectForKey:@"NSMainNibFile"];
|
|
|
|
NSNib* mainNib;
|
|
|
|
@try {
|
|
mainNib = [[NSNib alloc] initWithNibNamed:mainNibName
|
|
bundle:base::apple::FrameworkBundle()];
|
|
// Handle failure of initWithNibNamed on SMB shares
|
|
// TODO(codebytere): Remove when
|
|
// https://bugs.chromium.org/p/chromium/issues/detail?id=932935 is fixed
|
|
} @catch (NSException* exception) {
|
|
NSString* nibPath =
|
|
[NSString stringWithFormat:@"Resources/%@.nib", mainNibName];
|
|
nibPath = [base::apple::FrameworkBundle().bundlePath
|
|
stringByAppendingPathComponent:nibPath];
|
|
|
|
NSData* data = [NSData dataWithContentsOfFile:nibPath];
|
|
mainNib = [[NSNib alloc] initWithNibData:data
|
|
bundle:base::apple::FrameworkBundle()];
|
|
}
|
|
|
|
[mainNib instantiateWithOwner:application topLevelObjects:nil];
|
|
[mainNib release];
|
|
}
|
|
|
|
std::string ElectronBrowserMainParts::GetCurrentSystemLocale() {
|
|
NSString* systemLocaleIdentifier =
|
|
[[NSLocale currentLocale] localeIdentifier];
|
|
|
|
// Mac OS X uses "_" instead of "-", so swap to get a real locale value.
|
|
std::string locale_value = [[systemLocaleIdentifier
|
|
stringByReplacingOccurrencesOfString:@"_"
|
|
withString:@"-"] UTF8String];
|
|
|
|
return locale_value;
|
|
}
|
|
|
|
} // namespace electron
|