From b179c93cfc944f2359dd331933bbfd06ec04bb13 Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Thu, 15 Nov 2018 23:18:02 +0530 Subject: [PATCH] chore: add patch to disable CORB --- patches/common/chromium/.patches | 1 + ...cross_site_document_resource_handler.patch | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 patches/common/chromium/cross_site_document_resource_handler.patch diff --git a/patches/common/chromium/.patches b/patches/common/chromium/.patches index 69a8b3b650206..d16e224a767f1 100644 --- a/patches/common/chromium/.patches +++ b/patches/common/chromium/.patches @@ -76,3 +76,4 @@ verbose_generate_breakpad_symbols.patch fix_zoom_display.patch chrome_process_finder.patch customizable_app_indicator_id_prefix.patch +cross_site_document_resource_handler.patch diff --git a/patches/common/chromium/cross_site_document_resource_handler.patch b/patches/common/chromium/cross_site_document_resource_handler.patch new file mode 100644 index 0000000000000..79e2248a20755 --- /dev/null +++ b/patches/common/chromium/cross_site_document_resource_handler.patch @@ -0,0 +1,52 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: deepak1556 +Date: Thu, 15 Nov 2018 22:04:34 +0530 +Subject: cross_site_document_resource_handler.patch + +Add a content layer hook to disable CORB for a renderer process, +this patch can be removed once we switch to network service, +where the embedders have a chance to design their URLLoaders. + +diff --git a/content/browser/loader/cross_site_document_resource_handler.cc b/content/browser/loader/cross_site_document_resource_handler.cc +index 907922701280b589bf11691342de0ec95cdec6a1..eaf8bac18f8e3a2735ce7ded606199092a3746d3 100644 +--- a/content/browser/loader/cross_site_document_resource_handler.cc ++++ b/content/browser/loader/cross_site_document_resource_handler.cc +@@ -593,6 +593,9 @@ bool CrossSiteDocumentResourceHandler::ShouldBlockBasedOnHeaders( + return false; + } + ++ if (GetContentClient()->browser()->ShouldBypassCORB(info->GetChildID())) ++ return false; ++ + return true; + } + +diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc +index 2d0633f38ddfc0fa1999674903b1d5e8952e22d5..f6d805520c2c65d02a426391ec1309b8664a14ca 100644 +--- a/content/public/browser/content_browser_client.cc ++++ b/content/public/browser/content_browser_client.cc +@@ -57,6 +57,10 @@ ContentBrowserClient::ShouldOverrideSiteInstanceForNavigation( + return SiteInstanceForNavigationType::ASK_CHROMIUM; + } + ++bool ContentBrowserClient::ShouldBypassCORB(int render_process_id) { ++ return false; ++} ++ + BrowserMainParts* ContentBrowserClient::CreateBrowserMainParts( + const MainFunctionParams& parameters) { + return nullptr; +diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h +index 0554de92d81e54367e6f430bfe0c93e3a486ea66..64732e916ae5b40ec216f3fed5a85324aaff69fb 100644 +--- a/content/public/browser/content_browser_client.h ++++ b/content/public/browser/content_browser_client.h +@@ -224,6 +224,9 @@ class CONTENT_EXPORT ContentBrowserClient { + content::RenderFrameHost* rfh, + content::SiteInstance* pending_site_instance){}; + ++ // Electron: Allows bypassing CORB checks for a renderer process. ++ virtual bool ShouldBypassCORB(int render_process_id); ++ + // Allows the embedder to set any number of custom BrowserMainParts + // implementations for the browser startup code. See comments in + // browser_main_parts.h.