mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
* chore: bump chromium in DEPS to 90.0.4430.19 * build: add 'use_rts' definition Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2694187 (cherry picked from commitb820b4078d) * chore: bump chromium in DEPS to 91.0.4441.0 * chore: update patches (cherry picked from commit55e50a0879) * chore: media_internal_resources becomes resources Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2699022 (cherry picked from commite715b9c921) * chore: update patches (cherry picked from commitc8148febfa) * refactor: extensions::ViewType moved to mojom Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2710351 (cherry picked from commit87df2766ba) * chore: might_have_observers has been removed Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2667839 (cherry picked from commite900271bea) * refactor: CertVerifier is not in the network namespace anymore Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2689805 (cherry picked from commiteccfa516c5) * refactor: ExtensionUserScriptManager is now UserScriptManager Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2657617 (cherry picked from commit2fed02556d) * refactor: content::SiteInstance::GetSiteForURL was removed Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2680274 (cherry picked from commit0d94e0d1d9) * refactor: MenuItemType was moved to mojom Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2071443 (cherry picked from commit1a296e59c2) * refactor: extensions::ViewType was moved to mojom Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2710351 (cherry picked from commitdc36e8e6fc) * refacotr: grit::ResourceMap replaced with webui::ResourcePath Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2685601 (cherry picked from commit59669e99cb) * refactor: blink::MenuItem::Type was moved to mojom Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2071443 (cherry picked from commitbe627568b2) * refactor: CreateDataPipe deprecated form was removed Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2698090 (cherry picked from commit77ad17b383) * refactor: DesktopMediaList::Type replaces content::DesktopMediaType_* Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2700637 (cherry picked from commit4e02d9407a) * chore: wire up activation_time in OSR Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2638372 (cherry picked from commitf51f427646) * chore: remove deleted file from chromium_src list (cherry picked from commit59432fe30a) * chore: fix lint (cherry picked from commit54cc68dd7a) * update patches (cherry picked from commite99e6a5a8a) * chore: update patches (cherry picked from commit1e16606524) * fixup gn check (cherry picked from commit8f4e362d8f) * update to xcode 12.4.0 Needed because of8008deb41c(cherry picked from commitfae4d87a5a) * 2752406: [LSC] Replace base::string16 with std::u16string in //ui https://chromium-review.googlesource.com/c/chromium/src/+/2752406 (cherry picked from commitd4bec23bde) * 2752406: [LSC] Replace base::string16 with std::u16string in //ui https://chromium-review.googlesource.com/c/chromium/src/+/2752406 (cherry picked from commit9e336f5d0c) * 2752932: Associate each AwProxyingURLLoaderFactory with a frame tree node id. https://chromium-review.googlesource.com/c/chromium/src/+/2752932 (cherry picked from commit08036802cb) * 2651385: Moving Profile::shared_cors_origin_access_list_ into //content layer. https://chromium-review.googlesource.com/c/chromium/src/+/2651385 (cherry picked from commit676f74f3dc) * 2734095: Introduce StoragePartitionId type to wrap current string representation. https://chromium-review.googlesource.com/c/chromium/src/+/2734095 (cherry picked from commit76538d2d38) * chore: bump chromium in DEPS to 90.0.4430.19 * chore: bump chromium in DEPS to 90.0.4430.30 * chore: bump chromium in DEPS to 90.0.4430.40 * chore: bump chromium in DEPS to 90.0.4430.51 * chore: bump chromium in DEPS to 91.0.4446.0 * chore: bump chromium in DEPS to 91.0.4448.0 (cherry picked from commit003dd6c16c) * Update patches (cherry picked from commit9f5e3f6685) * 2743594: Remove WebSize from blink. https://chromium-review.googlesource.com/c/chromium/src/+/2743594 (cherry picked from commitb15b820bca) * 2725403: Add URLLoaderClient::OnReceiveEarlyHints() https://chromium-review.googlesource.com/c/chromium/src/+/2725403 (cherry picked from commit185c343b22) * 2651385: Moving Profile::shared_cors_origin_access_list_ into //content layer. https://chromium-review.googlesource.com/c/chromium/src/+/2651385 (cherry picked from commit88bbe2a352) * 2721718: Move HostID to extensions::mojom::HostID https://chromium-review.googlesource.com/c/chromium/src/+/2721718 (cherry picked from commit3010dd93e3) * 2733070: Rename observer to URLLoaderNetworkServiceObserver https://chromium-review.googlesource.com/c/chromium/src/+/2733070 (cherry picked from commitd54bee03d0) * Use nogncheck for content/browser/site_instance_impl.h This is needed because //content/browser:browser is not a visible target (cherry picked from commit5fc298ee5f) * 2648046: Introduce alert notification helper .app https://chromium-review.googlesource.com/c/chromium/src/+/2648046 (cherry picked from commit2cd53eb46a) * 2752406: [LSC] Replace base::string16 with std::u16string in //ui https://chromium-review.googlesource.com/c/chromium/src/+/2752406 (cherry picked from commitf1bb6be4b9) * only include mac notifications on mac (cherry picked from commit3160e608e2) * add additional skipping of atk toolchain check (cherry picked from commit86d23cee40) * 2757472: Reland "Reland "[LSC] Remove base::string16 alias"" https://chromium-review.googlesource.com/c/chromium/src/+/2757472 (cherry picked from commit22d8f22cfb) * 2757472: Reland "Reland "[LSC] Remove base::string16 alias"" https://chromium-review.googlesource.com/c/chromium/src/+/2757472 (cherry picked from commitec893f8322) * 2720306: [api] Remove deprecated [Shared]ArrayBuffer API https://chromium-review.googlesource.com/c/v8/v8/+/2720306 (cherry picked from commitd0989802bd) * Fixup 2721718: Move HostID to extensions::mojom::HostID (cherry picked from commit29dfabadfd) * fixup 2651385: Moving Profile::shared_cors_origin_access_list_ into //content layer (cherry picked from commit97b6868e9c) * Fixup 2752406: [LSC] Replace base::string16 with std::u16string in //ui (cherry picked from commitb6d2ae0455) * Fixup 2725403: Add URLLoaderClient::OnReceiveEarlyHints() (cherry picked from commit7e961d8a37) * update node headers (cherry picked from commitc49bc282d5) * 2693008: Fix loading non-system cursors on Windows on browser_tests https://chromium-review.googlesource.com/c/chromium/src/+/2693008 (cherry picked from commit3b183854ff) * 2757472: Reland "Reland "[LSC] Remove base::string16 alias"" https://chromium-review.googlesource.com/c/chromium/src/+/2757472 (cherry picked from commit2d3c65beca) * undo changes to WebContentsPreferences::GetPreloadPath to fix mac build (cherry picked from commitdeeb2de14b) * fix StrCat issue (cherry picked from commit451e0931bf) * incantations for WebContentsPreferences::GetPreloadPath wide strings (cherry picked from commit205f572181) * bump nan (cherry picked from commit74318705c2) * fix GetAsString maybe? (cherry picked from commitea62ecd188) * windows build fixes (cherry picked from commit5b598037bb) * more windows build fix (cherry picked from commit61cf1abd4d) * SetAppUserModelID -> wstring (cherry picked from commit83d93bcbdc) * upgrade nan dep in tests (cherry picked from commit4f97b9303c) * update patch * wstrings are cross-platform (cherry picked from commit7f7b1f6c8a) * linter (cherry picked from commitaaf03765ed) * only bind setAppUserModelId on windows (cherry picked from commit640a145112) * well that was an odyssey (cherry picked from commitdd975328a0) * backport fcdf35e from v8 to fix nan crash (cherry picked from commit606fd87d1e) * disable typedarrays-test.js (cherry picked from commit01ca00ec82) * don't defer in NSWindow creation https://chromium-review.googlesource.com/c/chromium/src/+/2707696 (cherry picked from commit3122820e58) * use PartitionAllocator for ArrayBuffers in the main process (cherry picked from commit1f575ca3af) * fix patches (cherry picked from commit54e72fa8e3) * chore: omit some unnecessary conversions (cherry picked from commit0f3620099a) * refactor: make LoginItemSettings::path a wstring (cherry picked from commit9127cff58b) * refactor: make ShowTaskDialog take a wstr (cherry picked from commit1594c54933) * Revert "refactor: make LoginItemSettings::path a wstring" This reverts commit9127cff58b. (cherry picked from commit9684d85101) * fixup patches This reverts commit0cc08813a6. * update patches after merge Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> Co-authored-by: Charles Kerr <charles@charleskerr.com>
350 lines
15 KiB
C++
350 lines
15 KiB
C++
// Copyright (c) 2013 GitHub, Inc.
|
|
// Use of this source code is governed by the MIT license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef SHELL_BROWSER_ELECTRON_BROWSER_CLIENT_H_
|
|
#define SHELL_BROWSER_ELECTRON_BROWSER_CLIENT_H_
|
|
|
|
#include <map>
|
|
#include <memory>
|
|
#include <set>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "base/files/file_path.h"
|
|
#include "base/synchronization/lock.h"
|
|
#include "content/public/browser/content_browser_client.h"
|
|
#include "content/public/browser/render_process_host_observer.h"
|
|
#include "content/public/browser/web_contents.h"
|
|
#include "electron/buildflags/buildflags.h"
|
|
#include "net/ssl/client_cert_identity.h"
|
|
#include "services/metrics/public/cpp/ukm_source_id.h"
|
|
#include "shell/browser/bluetooth/electron_bluetooth_delegate.h"
|
|
#include "shell/browser/serial/electron_serial_delegate.h"
|
|
|
|
namespace content {
|
|
class ClientCertificateDelegate;
|
|
class QuotaPermissionContext;
|
|
} // namespace content
|
|
|
|
namespace net {
|
|
class SSLCertRequestInfo;
|
|
}
|
|
|
|
namespace electron {
|
|
|
|
class NotificationPresenter;
|
|
class PlatformNotificationService;
|
|
|
|
class ElectronBrowserClient : public content::ContentBrowserClient,
|
|
public content::RenderProcessHostObserver {
|
|
public:
|
|
static ElectronBrowserClient* Get();
|
|
static void SetApplicationLocale(const std::string& locale);
|
|
|
|
ElectronBrowserClient();
|
|
~ElectronBrowserClient() override;
|
|
|
|
using Delegate = content::ContentBrowserClient;
|
|
void set_delegate(Delegate* delegate) { delegate_ = delegate; }
|
|
|
|
// Returns the WebContents for pending render processes.
|
|
content::WebContents* GetWebContentsFromProcessID(int process_id);
|
|
|
|
// Don't force renderer process to restart for once.
|
|
static void SuppressRendererProcessRestartForOnce();
|
|
|
|
NotificationPresenter* GetNotificationPresenter();
|
|
|
|
void WebNotificationAllowed(int render_process_id,
|
|
base::OnceCallback<void(bool, bool)> callback);
|
|
|
|
// content::NavigatorDelegate
|
|
std::vector<std::unique_ptr<content::NavigationThrottle>>
|
|
CreateThrottlesForNavigation(content::NavigationHandle* handle) override;
|
|
|
|
// content::ContentBrowserClient:
|
|
std::string GetApplicationLocale() override;
|
|
base::FilePath GetFontLookupTableCacheDir() override;
|
|
bool ShouldEnableStrictSiteIsolation() override;
|
|
void BindHostReceiverForRenderer(
|
|
content::RenderProcessHost* render_process_host,
|
|
mojo::GenericPendingReceiver receiver) override;
|
|
void RegisterBrowserInterfaceBindersForFrame(
|
|
content::RenderFrameHost* render_frame_host,
|
|
mojo::BinderMapWithContext<content::RenderFrameHost*>* map) override;
|
|
#if defined(OS_LINUX)
|
|
void GetAdditionalMappedFilesForChildProcess(
|
|
const base::CommandLine& command_line,
|
|
int child_process_id,
|
|
content::PosixFileDescriptorInfo* mappings) override;
|
|
#endif
|
|
|
|
std::string GetUserAgent() override;
|
|
void SetUserAgent(const std::string& user_agent);
|
|
|
|
void SetCanUseCustomSiteInstance(bool should_disable);
|
|
bool CanUseCustomSiteInstance() override;
|
|
content::SerialDelegate* GetSerialDelegate() override;
|
|
|
|
content::BluetoothDelegate* GetBluetoothDelegate() override;
|
|
|
|
protected:
|
|
void RenderProcessWillLaunch(content::RenderProcessHost* host) override;
|
|
content::SpeechRecognitionManagerDelegate*
|
|
CreateSpeechRecognitionManagerDelegate() override;
|
|
content::TtsPlatform* GetTtsPlatform() override;
|
|
|
|
void OverrideWebkitPrefs(content::WebContents* web_contents,
|
|
blink::web_pref::WebPreferences* prefs) override;
|
|
SiteInstanceForNavigationType ShouldOverrideSiteInstanceForNavigation(
|
|
content::RenderFrameHost* current_rfh,
|
|
content::RenderFrameHost* speculative_rfh,
|
|
content::BrowserContext* browser_context,
|
|
const GURL& url,
|
|
bool has_navigation_started,
|
|
bool has_response_started,
|
|
content::SiteInstance** affinity_site_instance) const override;
|
|
void RegisterPendingSiteInstance(
|
|
content::RenderFrameHost* render_frame_host,
|
|
content::SiteInstance* pending_site_instance) override;
|
|
void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
|
|
int child_process_id) override;
|
|
void DidCreatePpapiPlugin(content::BrowserPpapiHost* browser_host) override;
|
|
std::string GetGeolocationApiKey() override;
|
|
scoped_refptr<content::QuotaPermissionContext> CreateQuotaPermissionContext()
|
|
override;
|
|
content::GeneratedCodeCacheSettings GetGeneratedCodeCacheSettings(
|
|
content::BrowserContext* context) override;
|
|
void AllowCertificateError(
|
|
content::WebContents* web_contents,
|
|
int cert_error,
|
|
const net::SSLInfo& ssl_info,
|
|
const GURL& request_url,
|
|
bool is_main_frame_request,
|
|
bool strict_enforcement,
|
|
base::OnceCallback<void(content::CertificateRequestResultType)> callback)
|
|
override;
|
|
base::OnceClosure SelectClientCertificate(
|
|
content::WebContents* web_contents,
|
|
net::SSLCertRequestInfo* cert_request_info,
|
|
net::ClientCertIdentityList client_certs,
|
|
std::unique_ptr<content::ClientCertificateDelegate> delegate) override;
|
|
bool CanCreateWindow(content::RenderFrameHost* opener,
|
|
const GURL& opener_url,
|
|
const GURL& opener_top_level_frame_url,
|
|
const url::Origin& source_origin,
|
|
content::mojom::WindowContainerType container_type,
|
|
const GURL& target_url,
|
|
const content::Referrer& referrer,
|
|
const std::string& frame_name,
|
|
WindowOpenDisposition disposition,
|
|
const blink::mojom::WindowFeatures& features,
|
|
const std::string& raw_features,
|
|
const scoped_refptr<network::ResourceRequestBody>& body,
|
|
bool user_gesture,
|
|
bool opener_suppressed,
|
|
bool* no_javascript_access) override;
|
|
#if BUILDFLAG(ENABLE_PICTURE_IN_PICTURE)
|
|
std::unique_ptr<content::OverlayWindow> CreateWindowForPictureInPicture(
|
|
content::PictureInPictureWindowController* controller) override;
|
|
#endif
|
|
void GetAdditionalAllowedSchemesForFileSystem(
|
|
std::vector<std::string>* additional_schemes) override;
|
|
void GetAdditionalWebUISchemes(
|
|
std::vector<std::string>* additional_schemes) override;
|
|
void SiteInstanceDeleting(content::SiteInstance* site_instance) override;
|
|
std::unique_ptr<net::ClientCertStore> CreateClientCertStore(
|
|
content::BrowserContext* browser_context) override;
|
|
std::unique_ptr<device::LocationProvider> OverrideSystemLocationProvider()
|
|
override;
|
|
void ConfigureNetworkContextParams(
|
|
content::BrowserContext* browser_context,
|
|
bool in_memory,
|
|
const base::FilePath& relative_partition_path,
|
|
network::mojom::NetworkContextParams* network_context_params,
|
|
cert_verifier::mojom::CertVerifierCreationParams*
|
|
cert_verifier_creation_params) override;
|
|
network::mojom::NetworkContext* GetSystemNetworkContext() override;
|
|
content::MediaObserver* GetMediaObserver() override;
|
|
content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() override;
|
|
content::PlatformNotificationService* GetPlatformNotificationService(
|
|
content::BrowserContext* browser_context) override;
|
|
std::unique_ptr<content::BrowserMainParts> CreateBrowserMainParts(
|
|
const content::MainFunctionParams&) override;
|
|
base::FilePath GetDefaultDownloadDirectory() override;
|
|
scoped_refptr<network::SharedURLLoaderFactory>
|
|
GetSystemSharedURLLoaderFactory() override;
|
|
void OnNetworkServiceCreated(
|
|
network::mojom::NetworkService* network_service) override;
|
|
std::vector<base::FilePath> GetNetworkContextsParentDirectory() override;
|
|
std::string GetProduct() override;
|
|
void RegisterNonNetworkNavigationURLLoaderFactories(
|
|
int frame_tree_node_id,
|
|
ukm::SourceIdObj ukm_source_id,
|
|
NonNetworkURLLoaderFactoryMap* factories) override;
|
|
void RegisterNonNetworkWorkerMainResourceURLLoaderFactories(
|
|
content::BrowserContext* browser_context,
|
|
NonNetworkURLLoaderFactoryMap* factories) override;
|
|
void RegisterNonNetworkSubresourceURLLoaderFactories(
|
|
int render_process_id,
|
|
int render_frame_id,
|
|
NonNetworkURLLoaderFactoryMap* factories) override;
|
|
void CreateWebSocket(
|
|
content::RenderFrameHost* frame,
|
|
WebSocketFactory factory,
|
|
const GURL& url,
|
|
const net::SiteForCookies& site_for_cookies,
|
|
const base::Optional<std::string>& user_agent,
|
|
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
|
|
handshake_client) override;
|
|
bool WillInterceptWebSocket(content::RenderFrameHost*) override;
|
|
bool WillCreateURLLoaderFactory(
|
|
content::BrowserContext* browser_context,
|
|
content::RenderFrameHost* frame,
|
|
int render_process_id,
|
|
URLLoaderFactoryType type,
|
|
const url::Origin& request_initiator,
|
|
base::Optional<int64_t> navigation_id,
|
|
ukm::SourceIdObj ukm_source_id,
|
|
mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
|
|
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
|
|
header_client,
|
|
bool* bypass_redirect_checks,
|
|
bool* disable_secure_dns,
|
|
network::mojom::URLLoaderFactoryOverridePtr* factory_override) override;
|
|
bool ShouldTreatURLSchemeAsFirstPartyWhenTopLevel(
|
|
base::StringPiece scheme,
|
|
bool is_embedded_origin_secure) override;
|
|
void OverrideURLLoaderFactoryParams(
|
|
content::BrowserContext* browser_context,
|
|
const url::Origin& origin,
|
|
bool is_for_isolated_world,
|
|
network::mojom::URLLoaderFactoryParams* factory_params) override;
|
|
#if defined(OS_WIN)
|
|
bool PreSpawnChild(sandbox::TargetPolicy* policy,
|
|
sandbox::policy::SandboxType sandbox_type,
|
|
ChildSpawnFlags flags) override;
|
|
#endif
|
|
bool BindAssociatedReceiverFromFrame(
|
|
content::RenderFrameHost* render_frame_host,
|
|
const std::string& interface_name,
|
|
mojo::ScopedInterfaceEndpointHandle* handle) override;
|
|
|
|
bool HandleExternalProtocol(
|
|
const GURL& url,
|
|
content::WebContents::OnceGetter web_contents_getter,
|
|
int child_id,
|
|
int frame_tree_node_id,
|
|
content::NavigationUIData* navigation_data,
|
|
bool is_main_frame,
|
|
ui::PageTransition page_transition,
|
|
bool has_user_gesture,
|
|
const base::Optional<url::Origin>& initiating_origin,
|
|
mojo::PendingRemote<network::mojom::URLLoaderFactory>* out_factory)
|
|
override;
|
|
std::unique_ptr<content::LoginDelegate> CreateLoginDelegate(
|
|
const net::AuthChallengeInfo& auth_info,
|
|
content::WebContents* web_contents,
|
|
const content::GlobalRequestID& request_id,
|
|
bool is_main_frame,
|
|
const GURL& url,
|
|
scoped_refptr<net::HttpResponseHeaders> response_headers,
|
|
bool first_auth_attempt,
|
|
LoginAuthRequiredCallback auth_required_callback) override;
|
|
void SiteInstanceGotProcess(content::SiteInstance* site_instance) override;
|
|
std::vector<std::unique_ptr<blink::URLLoaderThrottle>>
|
|
CreateURLLoaderThrottles(
|
|
const network::ResourceRequest& request,
|
|
content::BrowserContext* browser_context,
|
|
const base::RepeatingCallback<content::WebContents*()>& wc_getter,
|
|
content::NavigationUIData* navigation_ui_data,
|
|
int frame_tree_node_id) override;
|
|
base::flat_set<std::string> GetPluginMimeTypesWithExternalHandlers(
|
|
content::BrowserContext* browser_context) override;
|
|
bool IsSuitableHost(content::RenderProcessHost* process_host,
|
|
const GURL& site_url) override;
|
|
bool ShouldUseProcessPerSite(content::BrowserContext* browser_context,
|
|
const GURL& effective_url) override;
|
|
bool ArePersistentMediaDeviceIDsAllowed(
|
|
content::BrowserContext* browser_context,
|
|
const GURL& scope,
|
|
const GURL& site_for_cookies,
|
|
const base::Optional<url::Origin>& top_frame_origin) override;
|
|
|
|
// content::RenderProcessHostObserver:
|
|
void RenderProcessHostDestroyed(content::RenderProcessHost* host) override;
|
|
void RenderProcessReady(content::RenderProcessHost* host) override;
|
|
void RenderProcessExited(
|
|
content::RenderProcessHost* host,
|
|
const content::ChildProcessTerminationInfo& info) override;
|
|
|
|
private:
|
|
struct ProcessPreferences {
|
|
bool sandbox = false;
|
|
bool native_window_open = false;
|
|
bool disable_popups = false;
|
|
bool web_security = true;
|
|
content::BrowserContext* browser_context = nullptr;
|
|
};
|
|
|
|
bool ShouldForceNewSiteInstance(content::RenderFrameHost* current_rfh,
|
|
content::RenderFrameHost* speculative_rfh,
|
|
content::BrowserContext* browser_context,
|
|
const GURL& dest_url,
|
|
bool has_response_started) const;
|
|
bool NavigationWasRedirectedCrossSite(
|
|
content::BrowserContext* browser_context,
|
|
content::SiteInstance* current_instance,
|
|
content::SiteInstance* speculative_instance,
|
|
const GURL& dest_url,
|
|
bool has_response_started) const;
|
|
void AddProcessPreferences(int process_id, ProcessPreferences prefs);
|
|
void RemoveProcessPreferences(int process_id);
|
|
bool IsProcessObserved(int process_id) const;
|
|
bool IsRendererSandboxed(int process_id) const;
|
|
bool RendererUsesNativeWindowOpen(int process_id) const;
|
|
bool RendererDisablesPopups(int process_id) const;
|
|
std::string GetAffinityPreference(content::RenderFrameHost* rfh) const;
|
|
content::SiteInstance* GetSiteInstanceFromAffinity(
|
|
content::BrowserContext* browser_context,
|
|
const GURL& url,
|
|
content::RenderFrameHost* rfh) const;
|
|
void ConsiderSiteInstanceForAffinity(content::RenderFrameHost* rfh,
|
|
content::SiteInstance* site_instance);
|
|
|
|
bool IsRendererSubFrame(int process_id) const;
|
|
|
|
// pending_render_process => web contents.
|
|
std::map<int, content::WebContents*> pending_processes_;
|
|
|
|
std::set<int> renderer_is_subframe_;
|
|
|
|
// list of site per affinity. weak_ptr to prevent instance locking
|
|
std::map<std::string, content::SiteInstance*> site_per_affinities_;
|
|
|
|
std::unique_ptr<PlatformNotificationService> notification_service_;
|
|
std::unique_ptr<NotificationPresenter> notification_presenter_;
|
|
|
|
Delegate* delegate_ = nullptr;
|
|
|
|
std::map<int, ProcessPreferences> process_preferences_;
|
|
|
|
std::string user_agent_override_ = "";
|
|
|
|
bool disable_process_restart_tricks_ = true;
|
|
|
|
// Simple shared ID generator, used by ProxyingURLLoaderFactory and
|
|
// ProxyingWebSocket classes.
|
|
uint64_t next_id_ = 0;
|
|
|
|
std::unique_ptr<ElectronSerialDelegate> serial_delegate_;
|
|
std::unique_ptr<ElectronBluetoothDelegate> bluetooth_delegate_;
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(ElectronBrowserClient);
|
|
};
|
|
|
|
} // namespace electron
|
|
|
|
#endif // SHELL_BROWSER_ELECTRON_BROWSER_CLIENT_H_
|