From f9032316700c9d2158c5edc7035da4ccffecc6d8 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 11 Jul 2019 11:12:49 -0500 Subject: [PATCH] fix: silent printing mode --- patches/common/chromium/.patches | 3 +- .../chromium/browser_compositor_mac.patch | 2 +- .../common/chromium/color_chooser_mac.patch | 10 +- .../common/chromium/command-ismediakey.patch | 4 +- .../disable_detach_webview_frame.patch | 10 +- .../common/chromium/frame_host_manager.patch | 87 +-------- patches/common/chromium/mas-cfisobjc.patch | 6 +- .../chromium/mas_blink_no_private_api.patch | 6 +- .../common/chromium/mas_no_private_api.patch | 42 ++-- ...ash_when_detaching_oopif_from_portal.patch | 183 ------------------ patches/common/chromium/printing.patch | 107 +++------- .../render_widget_host_view_mac.patch | 8 +- .../common/chromium/webview_cross_drag.patch | 2 +- 13 files changed, 77 insertions(+), 393 deletions(-) delete mode 100644 patches/common/chromium/portals_fix_crash_when_detaching_oopif_from_portal.patch diff --git a/patches/common/chromium/.patches b/patches/common/chromium/.patches index 2794ba03b5f5c..97177729b07c8 100644 --- a/patches/common/chromium/.patches +++ b/patches/common/chromium/.patches @@ -1,4 +1,3 @@ -portals_fix_crash_when_detaching_oopif_from_portal.patch add_realloc.patch build_gn.patch dcheck.patch @@ -48,6 +47,7 @@ enable_widevine.patch chrome_key_systems.patch allow_nested_error_trackers.patch blink_initialization_order.patch +disable_detach_webview_frame.patch ssl_security_state_tab_helper.patch exclude-a-few-test-files-from-build.patch expose-net-observer-api.patch @@ -77,4 +77,3 @@ viz_osr.patch video_capturer_dirty_rect.patch unsandboxed_ppapi_processes_skip_zygote.patch autofill_size_calculation.patch -disable_detach_webview_frame.patch diff --git a/patches/common/chromium/browser_compositor_mac.patch b/patches/common/chromium/browser_compositor_mac.patch index a8af0c2dc7dd1..e8917c620b551 100644 --- a/patches/common/chromium/browser_compositor_mac.patch +++ b/patches/common/chromium/browser_compositor_mac.patch @@ -29,7 +29,7 @@ diff --git a/content/browser/renderer_host/browser_compositor_view_mac.mm b/cont index 0817b4eca4f4e6f7f5d250589c1e4dbcc068237c..dcc2340e59771e8d73de7e97fa2371d8bec7b149 100644 --- a/content/browser/renderer_host/browser_compositor_view_mac.mm +++ b/content/browser/renderer_host/browser_compositor_view_mac.mm -@@ -79,6 +79,12 @@ +@@ -79,6 +79,12 @@ BrowserCompositorMac::~BrowserCompositorMac() { DCHECK_EQ(1u, num_erased); } diff --git a/patches/common/chromium/color_chooser_mac.patch b/patches/common/chromium/color_chooser_mac.patch index 370a726aad958..9607c03010e36 100644 --- a/patches/common/chromium/color_chooser_mac.patch +++ b/patches/common/chromium/color_chooser_mac.patch @@ -63,7 +63,7 @@ diff --git a/chrome/browser/ui/cocoa/color_chooser_mac.mm b/chrome/browser/ui/co index bf47154f0a880f1c6143065e5c6d060f1df73765..e7cdab7a23d96345cc6e8ec578a8616d132b7d51 100644 --- a/chrome/browser/ui/cocoa/color_chooser_mac.mm +++ b/chrome/browser/ui/cocoa/color_chooser_mac.mm -@@ -39,16 +39,18 @@ +@@ -39,16 +39,18 @@ void ColorChooserMac::DidChooseColorInColorPanel(SkColor color) { web_contents_->DidChooseColorInColorChooser(color); } @@ -87,7 +87,7 @@ index bf47154f0a880f1c6143065e5c6d060f1df73765..e7cdab7a23d96345cc6e8ec578a8616d } void ColorChooserMac::SetSelectedColor(SkColor color) { -@@ -67,9 +69,14 @@ - (id)initWithChooser:(ColorChooserMac*)chooser { +@@ -67,9 +69,14 @@ void ColorChooserMac::SetSelectedColor(SkColor color) { chooser_ = chooser; NSColorPanel* panel = [NSColorPanel sharedColorPanel]; [panel setShowsAlpha:NO]; @@ -103,7 +103,7 @@ index bf47154f0a880f1c6143065e5c6d060f1df73765..e7cdab7a23d96345cc6e8ec578a8616d } return self; } -@@ -82,19 +89,21 @@ - (void)dealloc { +@@ -82,19 +89,21 @@ void ColorChooserMac::SetSelectedColor(SkColor color) { // the ColorPanelCocoa is still the target. BOOL respondsToPrivateTargetMethod = [panel respondsToSelector:@selector(__target)]; @@ -134,7 +134,7 @@ diff --git a/chrome/browser/ui/cocoa/color_panel_cocoa_unittest.mm b/chrome/brow index 83185ceb9bbd29bf38fce7f72c23f3a5b15ba6c8..823365fdfc0bceceeed6f5edc00b3462715a4751 100644 --- a/chrome/browser/ui/cocoa/color_panel_cocoa_unittest.mm +++ b/chrome/browser/ui/cocoa/color_panel_cocoa_unittest.mm -@@ -28,28 +28,6 @@ void SetUp() override { +@@ -28,28 +28,6 @@ class ColorPanelCocoaTest : public CocoaTest { } }; @@ -163,7 +163,7 @@ index 83185ceb9bbd29bf38fce7f72c23f3a5b15ba6c8..823365fdfc0bceceeed6f5edc00b3462 TEST_F(ColorPanelCocoaTest, ClearTargetOnEnd) { NSColorPanel* nscolor_panel = [NSColorPanel sharedColorPanel]; @autoreleasepool { -@@ -61,19 +39,12 @@ void SetUp() override { +@@ -61,19 +39,12 @@ TEST_F(ColorPanelCocoaTest, ClearTargetOnEnd) { // Confirm the NSColorPanel's configuration by the ColorChooserMac's // ColorPanelCocoa. diff --git a/patches/common/chromium/command-ismediakey.patch b/patches/common/chromium/command-ismediakey.patch index 38e5221c38b0e..f7a0f44ce39c9 100644 --- a/patches/common/chromium/command-ismediakey.patch +++ b/patches/common/chromium/command-ismediakey.patch @@ -18,7 +18,7 @@ diff --git a/chrome/browser/extensions/global_shortcut_listener_mac.mm b/chrome/ index befe726af9c10b1563a7fc0bb77cc55f65943d5c..46c6fe08bab8471007f78d3ef227e5195bfdf0e1 100644 --- a/chrome/browser/extensions/global_shortcut_listener_mac.mm +++ b/chrome/browser/extensions/global_shortcut_listener_mac.mm -@@ -21,6 +21,26 @@ +@@ -21,6 +21,26 @@ using extensions::GlobalShortcutListenerMac; namespace extensions { @@ -104,7 +104,7 @@ index b48fa8e63867021bdd77bf585a0e02c366980d91..bae9e24e7bcf7615be243bcb5629cc59 } return VKEY_UNKNOWN; } -@@ -190,7 +196,10 @@ static CGEventRef EventTapCallback(CGEventTapProxy proxy, +@@ -190,7 +196,10 @@ CGEventRef MediaKeysListenerImpl::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 && diff --git a/patches/common/chromium/disable_detach_webview_frame.patch b/patches/common/chromium/disable_detach_webview_frame.patch index ead99bf389f64..158e9cee22af2 100644 --- a/patches/common/chromium/disable_detach_webview_frame.patch +++ b/patches/common/chromium/disable_detach_webview_frame.patch @@ -12,19 +12,19 @@ this patch was introduced in Chrome 66. Update(zcbenz): The bug is still in Chrome 72. diff --git a/content/browser/frame_host/render_frame_proxy_host.cc b/content/browser/frame_host/render_frame_proxy_host.cc -index 075810f5553731b56b08b5e6e35854bdebed2021..8252a79c95c42f491fba28955993fff127e8c51a 100644 +index a5e18f465f79416c05fd3ab630b40b079a7a7cbc..d6f4717ee2122b86611d6149d5d1a9105d1baff1 100644 --- a/content/browser/frame_host/render_frame_proxy_host.cc +++ b/content/browser/frame_host/render_frame_proxy_host.cc -@@ -261,6 +261,12 @@ void RenderFrameProxyHost::SetDestructionCallback( +@@ -263,6 +263,12 @@ void RenderFrameProxyHost::SetDestructionCallback( void RenderFrameProxyHost::OnDetach() { - if (frame_tree_node_->render_manager()->IsMainFrameForInnerDelegate()) { + if (frame_tree_node_->render_manager()->ForInnerDelegate()) { + // Don't detach the frame for webview, we will manage the WebContents + // manually. + // We should revisit this bug after upgrading to newer versions of Chrome, + // this patch was introduced in Chrome 66. + return; + + // Only main frame proxy can detach for inner WebContents. + DCHECK(frame_tree_node_->IsMainFrame()); frame_tree_node_->render_manager()->RemoveOuterDelegateFrame(); - return; - } diff --git a/patches/common/chromium/frame_host_manager.patch b/patches/common/chromium/frame_host_manager.patch index 7f38ef46bbd92..d878c956e3ed8 100644 --- a/patches/common/chromium/frame_host_manager.patch +++ b/patches/common/chromium/frame_host_manager.patch @@ -6,45 +6,11 @@ Subject: frame_host_manager.patch Allows embedder to intercept site instances chosen by chromium and respond with custom instance. -diff --git a/content/browser/browsing_instance.cc b/content/browser/browsing_instance.cc -index 8aca9384edb69012628fc9afb98f647aeec7d593..10fe96e6c9bfc7f33a81ad9b75c75d4dda776d7c 100644 ---- a/content/browser/browsing_instance.cc -+++ b/content/browser/browsing_instance.cc -@@ -53,6 +53,13 @@ scoped_refptr BrowsingInstance::GetSiteInstanceForURL( - return instance; - } - -+scoped_refptr BrowsingInstance::CreateSiteInstanceForURL( -+ const GURL& url) { -+ scoped_refptr instance = new SiteInstanceImpl(this); -+ instance->SetSite(url); -+ return instance; -+} -+ - void BrowsingInstance::RegisterSiteInstance(SiteInstanceImpl* site_instance) { - DCHECK(site_instance->browsing_instance_.get() == this); - DCHECK(site_instance->HasSite()); -diff --git a/content/browser/browsing_instance.h b/content/browser/browsing_instance.h -index d439dfbb603876f942ff40fe1a505f9498f57c23..fd576eb894e06fe6c5cb21351b2b95b0a8444dce 100644 ---- a/content/browser/browsing_instance.h -+++ b/content/browser/browsing_instance.h -@@ -100,6 +100,11 @@ class CONTENT_EXPORT BrowsingInstance final - // SiteInstance per site. - scoped_refptr GetSiteInstanceForURL(const GURL& url); - -+ // Create a new SiteInstance for the given URL bound the current -+ // BrowsingInstance. -+ scoped_refptr CreateSiteInstanceForURL( -+ const GURL& url); -+ - // Adds the given SiteInstance to our map, to ensure that we do not create - // another SiteInstance for the same site. - void RegisterSiteInstance(SiteInstanceImpl* site_instance); diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc -index 0e3fc30fae933e0493920ed1823b086ac6ceee61..6dbb73c964601f0dae7ef6460a0ae2a048634a35 100644 +index f9f8e5204d1d92e87370f859c294919d2a1991c3..ff42619d67b916bacb63f99b2391c905cccde218 100644 --- a/content/browser/frame_host/render_frame_host_manager.cc +++ b/content/browser/frame_host/render_frame_host_manager.cc -@@ -1984,6 +1984,16 @@ bool RenderFrameHostManager::InitRenderView( +@@ -1978,6 +1978,16 @@ bool RenderFrameHostManager::InitRenderView( scoped_refptr RenderFrameHostManager::GetSiteInstanceForNavigationRequest( const NavigationRequest& request) { @@ -61,7 +27,7 @@ index 0e3fc30fae933e0493920ed1823b086ac6ceee61..6dbb73c964601f0dae7ef6460a0ae2a0 // First, check if the navigation can switch SiteInstances. If not, the // navigation should use the current SiteInstance. SiteInstance* current_site_instance = render_frame_host_->GetSiteInstance(); -@@ -2016,6 +2026,51 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest( +@@ -2010,6 +2020,51 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest( request.common_params().url); no_renderer_swap_allowed |= request.from_begin_navigation() && !can_renderer_initiate_transfer; @@ -84,7 +50,7 @@ index 0e3fc30fae933e0493920ed1823b086ac6ceee61..6dbb73c964601f0dae7ef6460a0ae2a0 + overriden_site_instance = + candidate_site_instance + ? candidate_site_instance -+ : current_site_instance->CreateRelatedSiteInstance( ++ : SiteInstance::CreateForURL(browser_context, + request.common_params().url); + break; + case ContentBrowserClient::SiteInstanceForNavigationType::FORCE_CURRENT: @@ -113,7 +79,7 @@ index 0e3fc30fae933e0493920ed1823b086ac6ceee61..6dbb73c964601f0dae7ef6460a0ae2a0 } else { // Subframe navigations will use the current renderer, unless specifically // allowed to swap processes. -@@ -2027,23 +2082,17 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest( +@@ -2021,23 +2076,17 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest( if (no_renderer_swap_allowed && !should_swap_for_error_isolation) return scoped_refptr(current_site_instance); @@ -141,33 +107,6 @@ index 0e3fc30fae933e0493920ed1823b086ac6ceee61..6dbb73c964601f0dae7ef6460a0ae2a0 return dest_site_instance; } -diff --git a/content/browser/site_instance_impl.cc b/content/browser/site_instance_impl.cc -index e1a7560631bd07f812315cb9932475cf890d8a6b..34b947c34a3eb676286f43fcb23100134f751dfb 100644 ---- a/content/browser/site_instance_impl.cc -+++ b/content/browser/site_instance_impl.cc -@@ -236,6 +236,10 @@ bool SiteInstanceImpl::HasRelatedSiteInstance(const GURL& url) { - return browsing_instance_->HasSiteInstance(url); - } - -+scoped_refptr SiteInstanceImpl::CreateRelatedSiteInstance(const GURL& url) { -+ return browsing_instance_->CreateSiteInstanceForURL(url); -+} -+ - scoped_refptr SiteInstanceImpl::GetRelatedSiteInstance( - const GURL& url) { - return browsing_instance_->GetSiteInstanceForURL(url); -diff --git a/content/browser/site_instance_impl.h b/content/browser/site_instance_impl.h -index da2696d679953096356e0c73891ff97854f76b54..c4c8e29a7723c4a22e6e52bd2f9ff792241b963a 100644 ---- a/content/browser/site_instance_impl.h -+++ b/content/browser/site_instance_impl.h -@@ -70,6 +70,7 @@ class CONTENT_EXPORT SiteInstanceImpl final : public SiteInstance, - BrowserContext* GetBrowserContext() const override; - const GURL& GetSiteURL() const override; - scoped_refptr GetRelatedSiteInstance(const GURL& url) override; -+ scoped_refptr CreateRelatedSiteInstance(const GURL& url) override; - bool IsRelatedSiteInstance(const SiteInstance* instance) override; - size_t GetRelatedActiveContentsCount() override; - bool RequiresDedicatedProcess() override; diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc index 64c4d9eb2dfb8f53f7a6c8f00140b0cf22f18a49..0aff71c4339d0eacecf6b6d86ab750738696c31e 100644 --- a/content/public/browser/content_browser_client.cc @@ -231,19 +170,3 @@ index fdb9d7b8859270b36453e25349f7d84c44a6ce92..9f0a966d8abf72b606906b14f00748b4 // Allows the embedder to set any number of custom BrowserMainParts // implementations for the browser startup code. See comments in // browser_main_parts.h. -diff --git a/content/public/browser/site_instance.h b/content/public/browser/site_instance.h -index 3b4c1cfacdad7ecc99b61cc0c2e4e71b72a855b6..d587f1e9211aa0e7636aa255a724ec9bb7399024 100644 ---- a/content/public/browser/site_instance.h -+++ b/content/public/browser/site_instance.h -@@ -116,6 +116,11 @@ class CONTENT_EXPORT SiteInstance : public base::RefCounted { - // corresponds to a site URL with the host "example.com". - virtual const GURL& GetSiteURL() const = 0; - -+ // Create a SiteInstance for the given URL that shares the current -+ // BrowsingInstance. -+ virtual scoped_refptr CreateRelatedSiteInstance( -+ const GURL& url) = 0; -+ - // Gets a SiteInstance for the given URL that shares the current - // BrowsingInstance, creating a new SiteInstance if necessary. This ensures - // that a BrowsingInstance only has one SiteInstance per site, so that pages diff --git a/patches/common/chromium/mas-cfisobjc.patch b/patches/common/chromium/mas-cfisobjc.patch index af20a85426dc8..8db115f805855 100644 --- a/patches/common/chromium/mas-cfisobjc.patch +++ b/patches/common/chromium/mas-cfisobjc.patch @@ -9,7 +9,7 @@ diff --git a/base/mac/foundation_util.mm b/base/mac/foundation_util.mm index 2d619e791c03a17d29ed47abe765a0a644b364bc..c36989c429344d85a0f5efe11754de13b12ec5df 100644 --- a/base/mac/foundation_util.mm +++ b/base/mac/foundation_util.mm -@@ -26,7 +26,6 @@ +@@ -26,7 +26,6 @@ CFTypeID SecKeyGetTypeID(); #if !defined(OS_IOS) CFTypeID SecACLGetTypeID(); CFTypeID SecTrustedApplicationGetTypeID(); @@ -17,7 +17,7 @@ index 2d619e791c03a17d29ed47abe765a0a644b364bc..c36989c429344d85a0f5efe11754de13 #endif } // extern "C" -@@ -326,8 +325,7 @@ void SetBaseBundleID(const char* new_base_bundle_id) { +@@ -326,8 +325,7 @@ NSFont* CFToNSCast(CTFontRef cf_val) { const_cast(reinterpret_cast(cf_val)); DCHECK(!cf_val || CTFontGetTypeID() == CFGetTypeID(cf_val) || @@ -27,7 +27,7 @@ index 2d619e791c03a17d29ed47abe765a0a644b364bc..c36989c429344d85a0f5efe11754de13 return ns_val; } -@@ -395,9 +393,6 @@ CTFontRef NSToCFCast(NSFont* ns_val) { +@@ -395,9 +393,6 @@ CFCast(const CFTypeRef& cf_val) { return (CTFontRef)(cf_val); } diff --git a/patches/common/chromium/mas_blink_no_private_api.patch b/patches/common/chromium/mas_blink_no_private_api.patch index 3870d2481d5d6..d687746c3eceb 100644 --- a/patches/common/chromium/mas_blink_no_private_api.patch +++ b/patches/common/chromium/mas_blink_no_private_api.patch @@ -18,7 +18,7 @@ index 94afefcee81b87c05bf9b1199d90d3d4b5ea84a6..2ec7f04c71824b47de1ddbf1f0e8625d extern "C" { // Kill ring calls. Would be better to use NSKillRing.h, but that's not -@@ -39,38 +40,53 @@ +@@ -39,38 +40,53 @@ NSString* _NSYankFromKillRing(); void _NSNewKillRingSequence(); void _NSSetKillRingToYankedState(); } @@ -92,7 +92,7 @@ index 7a1260db0a139f9f3f8a823af2c220f36162812a..bf9cf7046e2fc9cdfee5b92f2a348185 namespace blink { -@@ -73,10 +75,12 @@ void _NSDrawCarbonThemeListBox(NSRect frame, +@@ -73,10 +75,12 @@ bool ThemePainterMac::PaintTextField(const Node* node, // behavior change while remaining a fragile solution. // https://bugs.chromium.org/p/chromium/issues/detail?id=658085#c3 if (!use_ns_text_field_cell) { @@ -105,7 +105,7 @@ index 7a1260db0a139f9f3f8a823af2c220f36162812a..bf9cf7046e2fc9cdfee5b92f2a348185 return false; } -@@ -162,10 +166,12 @@ void _NSDrawCarbonThemeListBox(NSRect frame, +@@ -162,10 +166,12 @@ bool ThemePainterMac::PaintTextArea(const Node* node, const PaintInfo& paint_info, const IntRect& r) { LocalCurrentGraphicsContext local_context(paint_info.context, r); diff --git a/patches/common/chromium/mas_no_private_api.patch b/patches/common/chromium/mas_no_private_api.patch index 9e0fecdb982ef..e08739ee9186d 100644 --- a/patches/common/chromium/mas_no_private_api.patch +++ b/patches/common/chromium/mas_no_private_api.patch @@ -41,7 +41,7 @@ diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/cont index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad6e989746 100644 --- a/content/browser/accessibility/browser_accessibility_cocoa.mm +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm -@@ -135,6 +135,7 @@ +@@ -135,6 +135,7 @@ NSDictionary* attributeToMethodNameMap = nil; // VoiceOver uses -1 to mean "no limit" for AXResultsLimit. const int kAXResultsLimitNoLimit = -1; @@ -49,7 +49,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad extern "C" { // The following are private accessibility APIs required for cursor navigation -@@ -341,6 +342,7 @@ void AddMisspelledTextAttributes( +@@ -341,6 +342,7 @@ NSAttributedString* GetAttributedTextForTextMarkerRange( AddMisspelledTextAttributes(text_only_objects, attributed_text); return [attributed_text attributedSubstringFromRange:range]; } @@ -57,7 +57,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad // Returns an autoreleased copy of the AXNodeData's attribute. NSString* NSStringForStringAttribute( -@@ -595,7 +597,9 @@ + (void)initialize { +@@ -595,7 +597,9 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; {NSAccessibilityDOMIdentifierAttribute, @"domIdentifier"}, {NSAccessibilityEditableAncestorAttribute, @"editableAncestor"}, {NSAccessibilityEnabledAttribute, @"enabled"}, @@ -67,7 +67,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad {NSAccessibilityExpandedAttribute, @"expanded"}, {NSAccessibilityFocusableAncestorAttribute, @"focusableAncestor"}, {NSAccessibilityFocusedAttribute, @"focused"}, -@@ -630,13 +634,17 @@ + (void)initialize { +@@ -630,13 +634,17 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; {NSAccessibilityRowsAttribute, @"rows"}, // TODO(aboxhall): expose // NSAccessibilityServesAsTitleForUIElementsAttribute @@ -85,7 +85,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad {NSAccessibilitySizeAttribute, @"size"}, {NSAccessibilitySortDirectionAttribute, @"sortDirection"}, {NSAccessibilitySubroleAttribute, @"subrole"}, -@@ -1052,6 +1060,7 @@ - (NSNumber*)enabled { +@@ -1052,6 +1060,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; ax::mojom::Restriction::kDisabled]; } @@ -93,7 +93,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad // Returns a text marker that points to the last character in the document that // can be selected with VoiceOver. - (id)endTextMarker { -@@ -1062,6 +1071,7 @@ - (id)endTextMarker { +@@ -1062,6 +1071,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; BrowserAccessibilityPositionInstance position = root->CreatePositionAt(0); return CreateTextMarker(position->CreatePositionAtEndOfAnchor()); } @@ -101,7 +101,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad - (NSNumber*)expanded { if (![self instanceActive]) -@@ -1922,6 +1932,7 @@ - (NSValue*)selectedTextRange { +@@ -1922,6 +1932,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; return [NSValue valueWithRange:NSMakeRange(selStart, selLength)]; } @@ -109,7 +109,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad - (id)selectedTextMarkerRange { if (![self instanceActive]) return nil; -@@ -1954,6 +1965,7 @@ - (id)selectedTextMarkerRange { +@@ -1954,6 +1965,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; anchorAffinity, *focusObject, focusOffset, focusAffinity)); } @@ -117,7 +117,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad - (NSValue*)size { if (![self instanceActive]) -@@ -1986,6 +1998,7 @@ - (NSString*)sortDirection { +@@ -1986,6 +1998,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; return nil; } @@ -125,7 +125,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad // Returns a text marker that points to the first character in the document that // can be selected with VoiceOver. - (id)startTextMarker { -@@ -1996,6 +2009,7 @@ - (id)startTextMarker { +@@ -1996,6 +2009,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; BrowserAccessibilityPositionInstance position = root->CreatePositionAt(0); return CreateTextMarker(position->CreatePositionAtStartOfAnchor()); } @@ -133,7 +133,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad // Returns a subrole based upon the role. - (NSString*) subrole { -@@ -2301,12 +2315,14 @@ - (NSAttributedString*)attributedValueForRange:(NSRange)range { +@@ -2301,12 +2315,14 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; NSMutableAttributedString* attributedValue = [[[NSMutableAttributedString alloc] initWithString:value] autorelease]; @@ -148,7 +148,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad return [attributedValue attributedSubstringFromRange:range]; } -@@ -2392,6 +2408,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute +@@ -2392,6 +2408,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; return ToBrowserAccessibilityCocoa(cell); } @@ -156,7 +156,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad if ([attribute isEqualToString:@"AXUIElementForTextMarker"]) { BrowserAccessibilityPositionInstance position = CreatePositionFromTextMarker(parameter); -@@ -2569,6 +2586,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute +@@ -2569,6 +2586,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; NSString* text = GetTextForTextMarkerRange(parameter); return [NSNumber numberWithInt:[text length]]; } @@ -164,7 +164,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad if ([attribute isEqualToString: NSAccessibilityBoundsForRangeParameterizedAttribute]) { -@@ -2602,6 +2620,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute +@@ -2602,6 +2620,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; return nil; } @@ -172,7 +172,7 @@ index d1e716429cd96588c2df06d7c55ed6053d190f64..e1f41179b1cb3f9c68900ad0f0b0dbad if ([attribute isEqualToString: NSAccessibilityLineTextMarkerRangeForTextMarkerParameterizedAttribute]) { BrowserAccessibilityPositionInstance position = -@@ -2677,6 +2696,7 @@ AXPlatformRange range(position->CreatePreviousLineStartPosition( +@@ -2677,6 +2696,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired"; return @(child->GetIndexInParent()); } @@ -184,7 +184,7 @@ diff --git a/content/browser/accessibility/browser_accessibility_manager_mac.mm index 242a86ddd00517adc5e09310a25739ee34b3d23c..aa95e8ba159e5e185f0814d13d8743f3e5be9b67 100644 --- a/content/browser/accessibility/browser_accessibility_manager_mac.mm +++ b/content/browser/accessibility/browser_accessibility_manager_mac.mm -@@ -463,6 +463,7 @@ void PostAnnouncementNotification(NSString* announcement) { +@@ -463,6 +463,7 @@ NSDictionary* BrowserAccessibilityManagerMac:: [user_info setObject:native_focus_object forKey:NSAccessibilityTextChangeElement]; @@ -192,7 +192,7 @@ index 242a86ddd00517adc5e09310a25739ee34b3d23c..aa95e8ba159e5e185f0814d13d8743f3 id selected_text = [native_focus_object selectedTextMarkerRange]; if (selected_text) { NSString* const NSAccessibilitySelectedTextMarkerRangeAttribute = -@@ -470,6 +471,7 @@ void PostAnnouncementNotification(NSString* announcement) { +@@ -470,6 +471,7 @@ NSDictionary* BrowserAccessibilityManagerMac:: [user_info setObject:selected_text forKey:NSAccessibilitySelectedTextMarkerRangeAttribute]; } @@ -216,7 +216,7 @@ index b7142c2871faf4a0ba8be79266e9515d81585bdd..3d80c332e9af280a166612f6be54b6f7 namespace content { -@@ -35,6 +37,7 @@ +@@ -35,6 +37,7 @@ namespace { // verifies there are no existing open connections), and then indicates that // Chrome should continue execution without access to launchservicesd. void DisableSystemServices() { @@ -244,7 +244,7 @@ index 6299846975301964c4066dff1a7eec40778e8d7f..c9c64e9ea8af9c02099695db38c27871 extern "C" { // Undocumented IOBluetooth Preference API [1]. Used by `blueutil` [2] and // `Karabiner` [3] to programmatically control the Bluetooth state. Calling the -@@ -49,6 +50,7 @@ +@@ -49,6 +50,7 @@ extern "C" { // [4] https://support.apple.com/kb/PH25091 void IOBluetoothPreferenceSetControllerPowerState(int state); } @@ -252,7 +252,7 @@ index 6299846975301964c4066dff1a7eec40778e8d7f..c9c64e9ea8af9c02099695db38c27871 namespace { -@@ -128,8 +130,10 @@ CBCentralManagerState GetCBManagerState(CBCentralManager* manager) { +@@ -128,8 +130,10 @@ BluetoothAdapterMac::BluetoothAdapterMac() controller_state_function_( base::BindRepeating(&BluetoothAdapterMac::GetHostControllerState, base::Unretained(this))), @@ -263,7 +263,7 @@ index 6299846975301964c4066dff1a7eec40778e8d7f..c9c64e9ea8af9c02099695db38c27871 should_update_name_(true), classic_discovery_manager_( BluetoothDiscoveryManagerMac::CreateClassic(this)), -@@ -327,8 +331,12 @@ CBCentralManagerState GetCBManagerState(CBCentralManager* manager) { +@@ -327,8 +331,12 @@ bool BluetoothAdapterMac::IsLowEnergyAvailable() { } bool BluetoothAdapterMac::SetPoweredImpl(bool powered) { diff --git a/patches/common/chromium/portals_fix_crash_when_detaching_oopif_from_portal.patch b/patches/common/chromium/portals_fix_crash_when_detaching_oopif_from_portal.patch deleted file mode 100644 index ba3980226699b..0000000000000 --- a/patches/common/chromium/portals_fix_crash_when_detaching_oopif_from_portal.patch +++ /dev/null @@ -1,183 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Alexandre=20Lach=C3=A8ze?= -Date: Tue, 25 Jun 2019 17:36:08 +0200 -Subject: Portals: Fix crash when detaching OOPIF from portal. - -Prior to this change, any detachment of a proxy would cause the -inner WebContents to get detached from the outer WebContents. After -this change, we only detach the inner WebContents from the outer -WebContents when the main frame's proxy is detached. - -Bug: 955392 -Change-Id: I41fe61961a26636132ce2f17153b2c08b93af1e1 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1577636 -Commit-Queue: Lucas Gadani -Reviewed-by: Charlie Reis -Cr-Commit-Position: refs/heads/master@{#654071} - -diff --git a/content/browser/frame_host/cross_process_frame_connector.cc b/content/browser/frame_host/cross_process_frame_connector.cc -index ae486a29d07b773464dc3071dde2a33c8375f3a6..9967d0657c6ab7d72649a82b1f9c3839043b4cda 100644 ---- a/content/browser/frame_host/cross_process_frame_connector.cc -+++ b/content/browser/frame_host/cross_process_frame_connector.cc -@@ -386,7 +386,7 @@ void CrossProcessFrameConnector::OnVisibilityChanged(bool visible) { - // Show/Hide on all the RenderWidgetHostViews (including this) one. - if (frame_proxy_in_parent_renderer_->frame_tree_node() - ->render_manager() -- ->ForInnerDelegate()) { -+ ->IsMainFrameForInnerDelegate()) { - view_->host()->delegate()->OnRenderFrameProxyVisibilityChanged(visible); - return; - } -diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc -index f9f8e5204d1d92e87370f859c294919d2a1991c3..0e3fc30fae933e0493920ed1823b086ac6ceee61 100644 ---- a/content/browser/frame_host/render_frame_host_manager.cc -+++ b/content/browser/frame_host/render_frame_host_manager.cc -@@ -132,14 +132,15 @@ RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const { - return nullptr; - } - --bool RenderFrameHostManager::ForInnerDelegate() { -- return delegate_->GetOuterDelegateFrameTreeNodeId() != -- FrameTreeNode::kFrameTreeNodeInvalidId; -+bool RenderFrameHostManager::IsMainFrameForInnerDelegate() { -+ return frame_tree_node_->IsMainFrame() && -+ delegate_->GetOuterDelegateFrameTreeNodeId() != -+ FrameTreeNode::kFrameTreeNodeInvalidId; - } - - RenderWidgetHostImpl* - RenderFrameHostManager::GetOuterRenderWidgetHostForKeyboardInput() { -- if (!ForInnerDelegate() || !frame_tree_node_->IsMainFrame()) -+ if (!IsMainFrameForInnerDelegate()) - return nullptr; - - FrameTreeNode* outer_contents_frame_tree_node = -@@ -168,6 +169,8 @@ RenderFrameProxyHost* RenderFrameHostManager::GetProxyToParent() { - } - - RenderFrameProxyHost* RenderFrameHostManager::GetProxyToOuterDelegate() { -+ // Only the main frame should be able to reach the outer WebContents. -+ DCHECK(frame_tree_node_->IsMainFrame()); - int outer_contents_frame_tree_node_id = - delegate_->GetOuterDelegateFrameTreeNodeId(); - FrameTreeNode* outer_contents_frame_tree_node = -@@ -183,6 +186,9 @@ RenderFrameProxyHost* RenderFrameHostManager::GetProxyToOuterDelegate() { - } - - void RenderFrameHostManager::RemoveOuterDelegateFrame() { -+ // Removing the outer delegate frame will destroy the inner WebContents. This -+ // should only be called on the main frame. -+ DCHECK(frame_tree_node_->IsMainFrame()); - FrameTreeNode* outer_delegate_frame_tree_node = - FrameTreeNode::GloballyFindByID( - delegate_->GetOuterDelegateFrameTreeNodeId()); -@@ -1880,7 +1886,7 @@ int RenderFrameHostManager::CreateRenderFrameProxy(SiteInstance* instance) { - - void RenderFrameHostManager::CreateProxiesForChildFrame(FrameTreeNode* child) { - RenderFrameProxyHost* outer_delegate_proxy = -- ForInnerDelegate() ? GetProxyToOuterDelegate() : nullptr; -+ IsMainFrameForInnerDelegate() ? GetProxyToOuterDelegate() : nullptr; - for (const auto& pair : proxy_hosts_) { - // Do not create proxies for subframes in the outer delegate's process, - // since the outer delegate does not need to interact with them. -@@ -1944,7 +1950,7 @@ void RenderFrameHostManager::SwapOuterDelegateFrame( - - void RenderFrameHostManager::SetRWHViewForInnerContents( - RenderWidgetHostView* child_rwhv) { -- DCHECK(ForInnerDelegate() && frame_tree_node_->IsMainFrame()); -+ DCHECK(IsMainFrameForInnerDelegate()); - GetProxyToOuterDelegate()->SetChildRWHView(child_rwhv, nullptr); - } - -@@ -2587,7 +2593,7 @@ void RenderFrameHostManager::SendPageMessage(IPC::Message* msg, - // When sending a PageMessage for an inner WebContents, we don't want to also - // send it to the outer WebContent's frame as well. - RenderFrameProxyHost* outer_delegate_proxy = -- ForInnerDelegate() ? GetProxyToOuterDelegate() : nullptr; -+ IsMainFrameForInnerDelegate() ? GetProxyToOuterDelegate() : nullptr; - for (const auto& pair : proxy_hosts_) { - if (outer_delegate_proxy != pair.second.get()) { - send_msg(pair.second.get(), pair.second->GetRoutingID(), msg, -diff --git a/content/browser/frame_host/render_frame_host_manager.h b/content/browser/frame_host/render_frame_host_manager.h -index 644175178623ec26f6dfcf51db5833cdb03bd5ae..937ce66cedc2ab6b14b6ba9c247597a2d757613e 100644 ---- a/content/browser/frame_host/render_frame_host_manager.h -+++ b/content/browser/frame_host/render_frame_host_manager.h -@@ -203,9 +203,9 @@ class CONTENT_EXPORT RenderFrameHostManager - // there is no current one. - RenderWidgetHostView* GetRenderWidgetHostView() const; - -- // Returns whether this manager belongs to a FrameTreeNode that belongs to an -- // inner WebContents. -- bool ForInnerDelegate(); -+ // Returns whether this manager is a main frame and belongs to a FrameTreeNode -+ // that belongs to an inner WebContents. -+ bool IsMainFrameForInnerDelegate(); - - // Returns the RenderWidgetHost of the outer WebContents (if any) that can be - // used to fetch the last keyboard event. -@@ -213,8 +213,9 @@ class CONTENT_EXPORT RenderFrameHostManager - // remote frames. - RenderWidgetHostImpl* GetOuterRenderWidgetHostForKeyboardInput(); - -- // Return the FrameTreeNode for the frame in the outer WebContents (if any) -- // that contains the inner WebContents. -+ // If this is a RenderFrameHostManager for a main frame, this method returns -+ // the FrameTreeNode for the frame in the outer WebContents (if any) that -+ // contains the inner WebContents. - FrameTreeNode* GetOuterDelegateNode(); - - // Return a proxy for this frame in the parent frame's SiteInstance. Returns -@@ -222,13 +223,13 @@ class CONTENT_EXPORT RenderFrameHostManager - // example, if this frame is same-site with its parent). - RenderFrameProxyHost* GetProxyToParent(); - -- // Returns the proxy to inner WebContents in the outer WebContents's -- // SiteInstance. Returns nullptr if this WebContents isn't part of inner/outer -- // relationship. -+ // If this is a RenderFrameHostManager for a main frame, returns the proxy to -+ // inner WebContents in the outer WebContents's SiteInstance. Returns nullptr -+ // if this WebContents isn't part of inner/outer relationship. - RenderFrameProxyHost* GetProxyToOuterDelegate(); - -- // Removes the FrameTreeNode in the outer WebContents that represents this -- // FrameTreeNode. -+ // If this is a RenderFrameHostManager for a main frame, removes the -+ // FrameTreeNode in the outer WebContents that represents this FrameTreeNode. - // TODO(lazyboy): This does not belong to RenderFrameHostManager, move it to - // somehwere else. - void RemoveOuterDelegateFrame(); -diff --git a/content/browser/frame_host/render_frame_proxy_host.cc b/content/browser/frame_host/render_frame_proxy_host.cc -index a5e18f465f79416c05fd3ab630b40b079a7a7cbc..075810f5553731b56b08b5e6e35854bdebed2021 100644 ---- a/content/browser/frame_host/render_frame_proxy_host.cc -+++ b/content/browser/frame_host/render_frame_proxy_host.cc -@@ -68,8 +68,7 @@ RenderFrameProxyHost::RenderFrameProxyHost(SiteInstance* site_instance, - RenderFrameProxyHostID(GetProcess()->GetID(), routing_id_), - this)).second); - CHECK(render_view_host || -- (frame_tree_node_->render_manager()->ForInnerDelegate() && -- frame_tree_node_->IsMainFrame())); -+ frame_tree_node_->render_manager()->IsMainFrameForInnerDelegate()); - if (render_view_host) - frame_tree_node_->frame_tree()->AddRenderViewHostRef(render_view_host_); - -@@ -79,8 +78,7 @@ RenderFrameProxyHost::RenderFrameProxyHost(SiteInstance* site_instance, - ->current_frame_host() - ->GetSiteInstance() == site_instance; - bool is_proxy_to_outer_delegate = -- frame_tree_node_->IsMainFrame() && -- frame_tree_node_->render_manager()->ForInnerDelegate(); -+ frame_tree_node_->render_manager()->IsMainFrameForInnerDelegate(); - - // If this is a proxy to parent frame or this proxy is for the inner - // WebContents's FrameTreeNode in outer WebContents's SiteInstance, then we -@@ -262,9 +260,7 @@ void RenderFrameProxyHost::SetDestructionCallback( - } - - void RenderFrameProxyHost::OnDetach() { -- if (frame_tree_node_->render_manager()->ForInnerDelegate()) { -- // Only main frame proxy can detach for inner WebContents. -- DCHECK(frame_tree_node_->IsMainFrame()); -+ if (frame_tree_node_->render_manager()->IsMainFrameForInnerDelegate()) { - frame_tree_node_->render_manager()->RemoveOuterDelegateFrame(); - return; - } diff --git a/patches/common/chromium/printing.patch b/patches/common/chromium/printing.patch index 000e773550ad1..498ebc629f712 100644 --- a/patches/common/chromium/printing.patch +++ b/patches/common/chromium/printing.patch @@ -9,7 +9,7 @@ majority of changes originally come from these PRs: * https://github.com/electron/electron/pull/8596 diff --git a/chrome/browser/printing/print_job_worker.cc b/chrome/browser/printing/print_job_worker.cc -index 961e1560aa914942c01372c354059d6d6b72c50f..5e364fa6637e8453b0be701637c7d5b96aa77b7b 100644 +index 961e1560aa914942c01372c354059d6d6b72c50f..aa51b2b2b0e1950f7a660d48bda5e61ecea8951c 100644 --- a/chrome/browser/printing/print_job_worker.cc +++ b/chrome/browser/printing/print_job_worker.cc @@ -21,12 +21,12 @@ @@ -26,28 +26,8 @@ index 961e1560aa914942c01372c354059d6d6b72c50f..5e364fa6637e8453b0be701637c7d5b9 #include "printing/print_job_constants.h" #include "printing/printed_document.h" #include "printing/printing_utils.h" -@@ -265,10 +265,18 @@ void PrintJobWorker::GetSettingsDone(PrintingContext::Result result) { - // We can't use OnFailure() here since query_ does not support notifications. - - DCHECK(query_); -- query_->PostTask(FROM_HERE, -+ if (result == PrintingContext::CANCEL) { -+ print_job_->PostTask( -+ FROM_HERE, -+ base::BindOnce(&NotificationCallback, base::RetainedRef(print_job_), -+ JobEventDetails::USER_INIT_CANCELED, 0, -+ base::RetainedRef(document_))); -+ } else { -+ query_->PostTask(FROM_HERE, - base::BindOnce(&PrinterQuery::GetSettingsDone, - base::WrapRefCounted(query_), - printing_context_->settings(), result)); -+ } - } - - void PrintJobWorker::GetSettingsWithUI( diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc -index 007b003dd58d44acd6e1351c237fca6463d90602..da7c14d03a740e5d2ca2099a15c6105b74c101b4 100644 +index 007b003dd58d44acd6e1351c237fca6463d90602..4ddbf18e335609623aba42cc39a7c977fe8c5229 100644 --- a/chrome/browser/printing/print_view_manager_base.cc +++ b/chrome/browser/printing/print_view_manager_base.cc @@ -27,10 +27,7 @@ @@ -141,31 +121,6 @@ index 007b003dd58d44acd6e1351c237fca6463d90602..da7c14d03a740e5d2ca2099a15c6105b #endif ReleasePrinterQuery(); -@@ -436,9 +441,12 @@ void PrintViewManagerBase::OnNotifyPrintJobEvent( - content::NotificationService::NoDetails()); - break; - } -- case JobEventDetails::USER_INIT_DONE: -- case JobEventDetails::DEFAULT_INIT_DONE: - case JobEventDetails::USER_INIT_CANCELED: { -+ ReleasePrintJob(); -+ break; -+ } -+ case JobEventDetails::USER_INIT_DONE: -+ case JobEventDetails::DEFAULT_INIT_DONE: { - NOTREACHED(); - break; - } -@@ -532,9 +540,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(PrinterQuery* query) { - DCHECK(!quit_inner_loop_); - DCHECK(query); - -- // Disconnect the current |print_job_|. -- DisconnectFromCurrentPrintJob(); -- - // We can't print if there is no renderer. - if (!web_contents()->GetRenderViewHost() || - !web_contents()->GetRenderViewHost()->IsRenderViewLive()) { @@ -594,6 +599,9 @@ void PrintViewManagerBase::ReleasePrintJob() { content::RenderFrameHost* rfh = printing_rfh_; printing_rfh_ = nullptr; @@ -176,26 +131,6 @@ index 007b003dd58d44acd6e1351c237fca6463d90602..da7c14d03a740e5d2ca2099a15c6105b if (!print_job_) return; -@@ -604,7 +612,7 @@ void PrintViewManagerBase::ReleasePrintJob() { - } - - registrar_.Remove(this, chrome::NOTIFICATION_PRINT_JOB_EVENT, -- content::Source(print_job_.get())); -+ content::NotificationService::AllSources()); - // Don't close the worker thread. - print_job_ = nullptr; - } -@@ -678,6 +686,10 @@ bool PrintViewManagerBase::PrintNowInternal( - // Don't print / print preview interstitials or crashed tabs. - if (web_contents()->ShowingInterstitialPage() || web_contents()->IsCrashed()) - return false; -+ -+ registrar_.Add(this, chrome::NOTIFICATION_PRINT_JOB_EVENT, -+ content::NotificationService::AllSources()); -+ - return rfh->Send(message.release()); - } - diff --git a/chrome/browser/printing/print_view_manager_base.h b/chrome/browser/printing/print_view_manager_base.h index a2569836d04ff968e690215f56f6de3b6d884874..6ddec22641b74d5484c2e0d4f62e5d71d8d783e9 100644 --- a/chrome/browser/printing/print_view_manager_base.h @@ -348,10 +283,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 d51abda693de7fc701928e29fe35154169f41651..051958321c9b95d5951f76ee822dd67a17d18324 100644 +index d51abda693de7fc701928e29fe35154169f41651..cd402f729a69a749e19255ce1a9d55a2c30eee11 100644 --- a/components/printing/renderer/print_render_frame_helper.cc +++ b/components/printing/renderer/print_render_frame_helper.cc -@@ -1109,7 +1109,9 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) { +@@ -36,6 +36,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/metafile_skia_wrapper.h" + #include "printing/units.h" + #include "third_party/blink/public/common/frame/frame_owner_element_type.h" +@@ -1109,7 +1110,9 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) { web_frame->DispatchBeforePrintEvent(); if (!weak_this) return; @@ -362,7 +305,7 @@ index d51abda693de7fc701928e29fe35154169f41651..051958321c9b95d5951f76ee822dd67a if (weak_this) web_frame->DispatchAfterPrintEvent(); } -@@ -1157,7 +1159,10 @@ void PrintRenderFrameHelper::OnDestruct() { +@@ -1157,7 +1160,10 @@ void PrintRenderFrameHelper::OnDestruct() { delete this; } @@ -374,7 +317,7 @@ index d51abda693de7fc701928e29fe35154169f41651..051958321c9b95d5951f76ee822dd67a if (ipc_nesting_level_ > 1) return; -@@ -1170,7 +1175,8 @@ void PrintRenderFrameHelper::OnPrintPages() { +@@ -1170,7 +1176,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); @@ -384,7 +327,7 @@ index d51abda693de7fc701928e29fe35154169f41651..051958321c9b95d5951f76ee822dd67a if (weak_this) frame->DispatchAfterPrintEvent(); // WARNING: |this| may be gone at this point. Do not do any more work here and -@@ -1187,7 +1193,7 @@ void PrintRenderFrameHelper::OnPrintForSystemDialog() { +@@ -1187,7 +1194,7 @@ void PrintRenderFrameHelper::OnPrintForSystemDialog() { } auto weak_this = weak_ptr_factory_.GetWeakPtr(); Print(frame, print_preview_context_.source_node(), @@ -393,7 +336,7 @@ index d51abda693de7fc701928e29fe35154169f41651..051958321c9b95d5951f76ee822dd67a if (weak_this) frame->DispatchAfterPrintEvent(); // WARNING: |this| may be gone at this point. Do not do any more work here and -@@ -1223,6 +1229,8 @@ void PrintRenderFrameHelper::OnPrintPreview( +@@ -1223,6 +1230,8 @@ void PrintRenderFrameHelper::OnPrintPreview( if (ipc_nesting_level_ > 1) return; @@ -402,7 +345,7 @@ index d51abda693de7fc701928e29fe35154169f41651..051958321c9b95d5951f76ee822dd67a print_preview_context_.OnPrintPreview(); UMA_HISTOGRAM_ENUMERATION("PrintPreview.PreviewEvent", -@@ -1616,7 +1624,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { +@@ -1616,7 +1625,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { auto self = weak_ptr_factory_.GetWeakPtr(); Print(duplicate_node.GetDocument().GetFrame(), duplicate_node, @@ -414,7 +357,7 @@ index d51abda693de7fc701928e29fe35154169f41651..051958321c9b95d5951f76ee822dd67a // Check if |this| is still valid. if (!self) return; -@@ -1627,7 +1638,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { +@@ -1627,7 +1639,10 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, const blink::WebNode& node, @@ -426,7 +369,7 @@ index d51abda693de7fc701928e29fe35154169f41651..051958321c9b95d5951f76ee822dd67a // If still not finished with earlier print request simply ignore. if (prep_frame_view_) return; -@@ -1635,7 +1649,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, +@@ -1635,7 +1650,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, FrameReference frame_ref(frame); int expected_page_count = 0; @@ -435,19 +378,21 @@ index d51abda693de7fc701928e29fe35154169f41651..051958321c9b95d5951f76ee822dd67a DidFinishPrinting(FAIL_PRINT_INIT); return; // Failed to init print page settings. } -@@ -1655,8 +1669,9 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, +@@ -1655,8 +1670,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; -@@ -1666,6 +1681,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, +@@ -1666,6 +1684,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, ? blink::kWebPrintScalingOptionSourceSize : scaling_option; SetPrintPagesParams(print_settings); @@ -455,7 +400,7 @@ index d51abda693de7fc701928e29fe35154169f41651..051958321c9b95d5951f76ee822dd67a if (print_settings.params.dpi.IsEmpty() || !print_settings.params.document_cookie) { DidFinishPrinting(OK); // Release resources and fail silently on failure. -@@ -1854,10 +1870,24 @@ std::vector PrintRenderFrameHelper::GetPrintedPages( +@@ -1854,10 +1873,24 @@ std::vector PrintRenderFrameHelper::GetPrintedPages( return printed_pages; } @@ -483,7 +428,7 @@ index d51abda693de7fc701928e29fe35154169f41651..051958321c9b95d5951f76ee822dd67a // 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. -@@ -1877,12 +1907,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) { +@@ -1877,12 +1910,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) { return result; } diff --git a/patches/common/chromium/render_widget_host_view_mac.patch b/patches/common/chromium/render_widget_host_view_mac.patch index c0e987d6d20d8..e0681cb57edff 100644 --- a/patches/common/chromium/render_widget_host_view_mac.patch +++ b/patches/common/chromium/render_widget_host_view_mac.patch @@ -20,7 +20,7 @@ index 89939596b253bbd55b117328fd822b087607d8e3..aba0a33ec9a7f87a1f7f57ffed4c697d // These are not documented, so use only after checking -respondsToSelector:. @interface NSApplication (UndocumentedSpeechMethods) - (void)speakString:(NSString*)string; -@@ -403,6 +408,9 @@ - (BOOL)acceptsMouseEventsWhenInactive { +@@ -403,6 +408,9 @@ void ExtractUnderlines(NSAttributedString* string, } - (BOOL)acceptsFirstMouse:(NSEvent*)theEvent { @@ -30,7 +30,7 @@ index 89939596b253bbd55b117328fd822b087607d8e3..aba0a33ec9a7f87a1f7f57ffed4c697d return [self acceptsMouseEventsWhenInactive]; } -@@ -765,6 +773,10 @@ - (void)keyEvent:(NSEvent*)theEvent wasKeyEquivalent:(BOOL)equiv { +@@ -765,6 +773,10 @@ void ExtractUnderlines(NSAttributedString* string, eventType == NSKeyDown && !(modifierFlags & NSCommandKeyMask); @@ -41,7 +41,7 @@ index 89939596b253bbd55b117328fd822b087607d8e3..aba0a33ec9a7f87a1f7f57ffed4c697d // We only handle key down events and just simply forward other events. if (eventType != NSKeyDown) { clientHelper_->ForwardKeyboardEvent(event, latency_info); -@@ -1513,9 +1525,11 @@ - (id)accessibilityFocusedUIElement { +@@ -1513,9 +1525,11 @@ void ExtractUnderlines(NSAttributedString* string, // Since this implementation doesn't have to wait any IPC calls, this doesn't // make any key-typing jank. --hbono 7/23/09 // @@ -53,7 +53,7 @@ index 89939596b253bbd55b117328fd822b087607d8e3..aba0a33ec9a7f87a1f7f57ffed4c697d - (NSArray*)validAttributesForMarkedText { // This code is just copied from WebKit except renaming variables. -@@ -1524,7 +1538,10 @@ - (NSArray*)validAttributesForMarkedText { +@@ -1524,7 +1538,10 @@ extern NSString* NSTextInputReplacementRangeAttributeName; initWithObjects:NSUnderlineStyleAttributeName, NSUnderlineColorAttributeName, NSMarkedClauseSegmentAttributeName, diff --git a/patches/common/chromium/webview_cross_drag.patch b/patches/common/chromium/webview_cross_drag.patch index 9520f92a12219..9f48e3abfa883 100644 --- a/patches/common/chromium/webview_cross_drag.patch +++ b/patches/common/chromium/webview_cross_drag.patch @@ -20,7 +20,7 @@ diff --git a/content/browser/web_contents/web_drag_dest_mac.mm b/content/browser index 9423f9c8a225f9d18f6dcd0b9f7de033cbe495df..e7fe311327f698a760c09db2c7677a10c59f5224 100644 --- a/content/browser/web_contents/web_drag_dest_mac.mm +++ b/content/browser/web_contents/web_drag_dest_mac.mm -@@ -336,6 +336,7 @@ - (void)setDragStartTrackersForProcess:(int)processID { +@@ -336,6 +336,7 @@ content::GlobalRoutingID GetRenderViewHostID(content::RenderViewHost* rvh) { } - (bool)isValidDragTarget:(content::RenderWidgetHostImpl*)targetRWH {