chore: remove app.allowRendererProcessReuse (#26874)

This commit is contained in:
Samuel Attard 2021-04-21 13:59:11 -07:00 committed by GitHub
parent 4ca518468d
commit 79077f6df9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 43 additions and 392 deletions

View file

@ -1457,13 +1457,6 @@ std::string App::GetUserAgentFallback() {
return ElectronBrowserClient::Get()->GetUserAgent();
}
void App::SetBrowserClientCanUseCustomSiteInstance(bool should_disable) {
ElectronBrowserClient::Get()->SetCanUseCustomSiteInstance(should_disable);
}
bool App::CanBrowserClientUseCustomSiteInstance() {
return ElectronBrowserClient::Get()->CanUseCustomSiteInstance();
}
#if defined(OS_MAC)
bool App::MoveToApplicationsFolder(gin_helper::ErrorThrower thrower,
gin::Arguments* args) {
@ -1665,10 +1658,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuilder(v8::Isolate* isolate) {
#endif
.SetProperty("userAgentFallback", &App::GetUserAgentFallback,
&App::SetUserAgentFallback)
.SetMethod("enableSandbox", &App::EnableSandbox)
.SetProperty("allowRendererProcessReuse",
&App::CanBrowserClientUseCustomSiteInstance,
&App::SetBrowserClientCanUseCustomSiteInstance);
.SetMethod("enableSandbox", &App::EnableSandbox);
}
const char* App::GetTypeName() {

View file

@ -213,8 +213,6 @@ class App : public ElectronBrowserClient::Delegate,
void EnableSandbox(gin_helper::ErrorThrower thrower);
void SetUserAgentFallback(const std::string& user_agent);
std::string GetUserAgentFallback();
void SetBrowserClientCanUseCustomSiteInstance(bool should_disable);
bool CanBrowserClientUseCustomSiteInstance();
#if defined(OS_MAC)
void SetActivationPolicy(gin_helper::ErrorThrower thrower,

View file

@ -2008,23 +2008,14 @@ void WebContents::Stop() {
}
void WebContents::GoBack() {
if (!ElectronBrowserClient::Get()->CanUseCustomSiteInstance()) {
electron::ElectronBrowserClient::SuppressRendererProcessRestartForOnce();
}
web_contents()->GetController().GoBack();
}
void WebContents::GoForward() {
if (!ElectronBrowserClient::Get()->CanUseCustomSiteInstance()) {
electron::ElectronBrowserClient::SuppressRendererProcessRestartForOnce();
}
web_contents()->GetController().GoForward();
}
void WebContents::GoToOffset(int offset) {
if (!ElectronBrowserClient::Get()->CanUseCustomSiteInstance()) {
electron::ElectronBrowserClient::SuppressRendererProcessRestartForOnce();
}
web_contents()->GetController().GoToOffset(offset);
}

View file

@ -353,10 +353,6 @@ int GetCrashSignalFD(const base::CommandLine& command_line) {
} // namespace
// static
void ElectronBrowserClient::SuppressRendererProcessRestartForOnce() {
g_suppress_renderer_process_restart = true;
}
ElectronBrowserClient* ElectronBrowserClient::Get() {
return g_browser_client;
}
@ -488,46 +484,13 @@ bool ElectronBrowserClient::RendererDisablesPopups(int process_id) const {
return it != process_preferences_.end() && it->second.disable_popups;
}
std::string ElectronBrowserClient::GetAffinityPreference(
content::RenderFrameHost* rfh) const {
auto* web_contents = content::WebContents::FromRenderFrameHost(rfh);
auto* web_preferences = WebContentsPreferences::From(web_contents);
std::string affinity;
if (web_preferences &&
web_preferences->GetPreference("affinity", &affinity) &&
!affinity.empty()) {
affinity = base::ToLowerASCII(affinity);
}
return affinity;
}
content::SiteInstance* ElectronBrowserClient::GetSiteInstanceFromAffinity(
content::BrowserContext* browser_context,
const GURL& url,
content::RenderFrameHost* rfh) const {
std::string affinity = GetAffinityPreference(rfh);
if (!affinity.empty()) {
auto iter = site_per_affinities_.find(affinity);
GURL dest_site = GetSiteForURL(browser_context, url).site_url();
if (iter != site_per_affinities_.end() &&
IsSameWebSite(browser_context, iter->second, dest_site)) {
return iter->second;
}
}
return nullptr;
}
void ElectronBrowserClient::ConsiderSiteInstanceForAffinity(
content::RenderFrameHost* rfh,
content::SiteInstance* site_instance) {
std::string affinity = GetAffinityPreference(rfh);
if (!affinity.empty()) {
site_per_affinities_[affinity] = site_instance;
}
}
bool ElectronBrowserClient::IsRendererSubFrame(int process_id) const {
return base::Contains(renderer_is_subframe_, process_id);
}
@ -612,8 +575,7 @@ void ElectronBrowserClient::OverrideWebkitPrefs(
SessionPreferences::GetValidPreloads(web_contents->GetBrowserContext());
if (!preloads.empty())
prefs->preloads = preloads;
if (CanUseCustomSiteInstance())
prefs->disable_electron_site_instance_overrides = true;
prefs->disable_electron_site_instance_overrides = true;
SetFontDefaults(prefs);
@ -624,14 +586,6 @@ void ElectronBrowserClient::OverrideWebkitPrefs(
}
}
void ElectronBrowserClient::SetCanUseCustomSiteInstance(bool should_disable) {
disable_process_restart_tricks_ = should_disable;
}
bool ElectronBrowserClient::CanUseCustomSiteInstance() {
return disable_process_restart_tricks_;
}
content::ContentBrowserClient::SiteInstanceForNavigationType
ElectronBrowserClient::ShouldOverrideSiteInstanceForNavigation(
content::RenderFrameHost* current_rfh,
@ -686,9 +640,6 @@ ElectronBrowserClient::ShouldOverrideSiteInstanceForNavigation(
void ElectronBrowserClient::RegisterPendingSiteInstance(
content::RenderFrameHost* rfh,
content::SiteInstance* pending_site_instance) {
// Do we have an affinity site to manage?
ConsiderSiteInstanceForAffinity(rfh, pending_site_instance);
// Remember the original web contents for the pending renderer process.
auto* web_contents = content::WebContents::FromRenderFrameHost(rfh);
auto* pending_process = pending_site_instance->GetProcess();
@ -1015,16 +966,6 @@ bool ElectronBrowserClient::ArePersistentMediaDeviceIDsAllowed(
void ElectronBrowserClient::SiteInstanceDeleting(
content::SiteInstance* site_instance) {
// We are storing weak_ptr, is it fundamental to maintain the map up-to-date
// when an instance is destroyed.
for (auto iter = site_per_affinities_.begin();
iter != site_per_affinities_.end(); ++iter) {
if (iter->second == site_instance) {
site_per_affinities_.erase(iter);
break;
}
}
#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
// Don't do anything if we're shutting down.
if (content::BrowserMainRunner::ExitedMainMessageLoop())
@ -1794,6 +1735,10 @@ ElectronBrowserClient::GetPluginMimeTypesWithExternalHandlers(
return mime_types;
}
bool ElectronBrowserClient::CanUseCustomSiteInstance() {
return true;
}
content::SerialDelegate* ElectronBrowserClient::GetSerialDelegate() {
if (!serial_delegate_)
serial_delegate_ = std::make_unique<ElectronSerialDelegate>();

View file

@ -51,9 +51,6 @@ class ElectronBrowserClient : public content::ContentBrowserClient,
// 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,
@ -87,9 +84,8 @@ class ElectronBrowserClient : public content::ContentBrowserClient,
std::string GetUserAgent() override;
void SetUserAgent(const std::string& user_agent);
void SetCanUseCustomSiteInstance(bool should_disable);
bool CanUseCustomSiteInstance() override;
content::SerialDelegate* GetSerialDelegate() override;
bool CanUseCustomSiteInstance() override;
content::BluetoothDelegate* GetBluetoothDelegate() override;
@ -310,13 +306,10 @@ class ElectronBrowserClient : public content::ContentBrowserClient,
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;
@ -325,9 +318,6 @@ class ElectronBrowserClient : public content::ContentBrowserClient,
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_;
@ -337,8 +327,6 @@ class ElectronBrowserClient : public content::ContentBrowserClient,
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;