cef/patch/patch.cfg
Marshall Greenblatt a12c2ab3e1 Add support for MimeHandlerViewInCrossProcessFrame (fixes issue #2727)
The PDF loading documentation in extension_system.cc has be updated to
describe the new code paths.

To support delivery of input events to the mime handler renderer process it is
now necessary to route events via the correct RWHV interface. For Aura-based
platforms (Windows/Linux) this means RWHVAura::On*Event and for macOS this
means RWHVMac::RouteOrProcess*Event. Since Aura uses UI event types these have
become the source of truth on Aura-based platforms with conversion to Web event
types when needed (primarily for OSR).

This change also adds a timeout for CefProcessHostMsg_GetNewBrowserInfo to
avoid a hung renderer process if the guest WebContents route is not
registered via CefMimeHandlerViewGuestDelegate::OnGuestDetached as expected
prior to CefBrowserInfoManager::OnGetNewBrowserInfo being called. This
timeout can be disabled for testing purposes by passing the
`--disable-new-browser-info-timeout` command-line flag.

The `--disable-features=MimeHandlerViewInCrossProcessFrame` command-line
flag can be used for a limited time to restore the previous implementation
based on BrowserPlugin. That implementation will be deleted starting with
the 3897 branch update.

Known issues:
- ExecuteJavaScript calls on the frame hosting the PDF extension will not
  be routed to the mime handler renderer process.
- The PDF extension will not load successfully if blocked by
  ChromePluginPlaceholder and then manually continued via the "Run this
  plugin" context menu option (see https://crbug.com/533069#c41).
2020-01-24 20:16:47 -05:00

490 lines
18 KiB
INI

# Patch configuration file. See the README.txt file in the patch directory for
# information on how this configuration is used.
#
# Each dictionary entry in the "patches" map represents a single patch file.
# Supported key/value pairs are as follows:
#
# - 'name' Required. The name of the patch file without the .patch
# extension that will be read from the patches subdirectory.
# - 'path' Optional. The repository root for the patch file. Defaults to
# the Chromium "src" root. All patch file contents must be
# relative to this repository root.
# - 'condition' Optional. The patch file will only be applied if an environment
# variable with this name exists.
#
# Each entry should also include a comment linking to the code review or bug
# report that the patch relates to.
patches = [
{
# Necessary for grit integration.
'name': 'gritsettings',
},
{
# Necessary for GN integration.
#
# Move chrome target locales output to a chrome/ directory to avoid
# conflicts with the CEF configuration.
#
# Support custom VS toolchain on Windows.
# https://bugs.chromium.org/p/chromium/issues/detail?id=623342
#
# Write environment.* files with the correct SDK version on Windows.
# https://bugs.chromium.org/p/chromium/issues/detail?id=634788
#
# Windows: Add cc_wrapper support for sccache builds.
# https://bitbucket.org/chromiumembedded/cef/issues/2432
'name': 'gn_config',
},
{
# Support component builds (GN is_component_build=true).
# https://bitbucket.org/chromiumembedded/cef/issues/1617
#
# Export GetUnicodeCharacterFromXKeySym and XKeySymToDomKey
# to fix component builds.
# https://bitbucket.org/chromiumembedded/cef/issues/2587
'name': 'component_build',
},
{
# Revert change on Windows that removes MessageLoop::os_modal_loop().
# https://codereview.chromium.org/1992243003
#
# Revert change that removes MessageLoopForUI constructor.
# https://chromium-review.googlesource.com/751322
#
# Add MessageLoop::ReleasePump to fix crashes during shutdown with multi-
# threaded message loop mode.
# https://bitbucket.org/chromiumembedded/cef/issues/2362
'name': 'message_loop',
},
{
# Add builtin trace event categories for CEF.
# Required due to https://crrev.com/331266377d.
'name': 'trace_event',
},
{
# Enable popups in offscreen rendering on OS X.
#
# Allow customization of the WebView background color.
# https://bitbucket.org/chromiumembedded/cef/issues/2345
'name': 'webkit_popups',
},
{
# Fix export of UnderlayOpenGLHostingWindow for 64-bit OS X builds.
# https://bitbucket.org/chromiumembedded/cef/issues/1051
'name': 'underlay_1051',
},
{
# Allow specification of a parent window handle for Widget creation.
# https://bitbucket.org/chromiumembedded/cef/issues/180
#
# Fix multiple handling of WM_MOUSEWHEEL messages on Windows.
# https://bitbucket.org/chromiumembedded/cef/issues/1481
#
# Support custom RenderWidgetHostViewOSR for BrowserPluginGuest.
# https://bitbucket.org/chromiumembedded/cef/issues/1565
#
# Fix focus/activation handling and keyboard input on Windows and Linux.
# https://bitbucket.org/chromiumembedded/cef/issues/1677
# https://bitbucket.org/chromiumembedded/cef/issues/1679
# https://bitbucket.org/chromiumembedded/cef/issues/1700
#
# Support creation of captionless windows with resizable borders.
# https://bitbucket.org/chromiumembedded/cef/issues/1749
#
# Windows: When |params.remove_standard_frame| is true remove WS_CAPTION
# and WS_SYSMENU styles. Otherwise Windows 10 enforces a minimum window
# width of ~116 units that cannot be overridden.
# Linux: Allow creation of activatable menu windows.
# Linux: Support CefWindowDelegate::CanResize restriction by specifying
# min/max Widget size values.
# https://bitbucket.org/chromiumembedded/cef/issues/1947
#
# Support configuration of RWHVGuest device scale factor.
# https://bitbucket.org/chromiumembedded/cef/issues/2078
'name': 'views_widget_180_1481_1565_1677_1749',
},
{
# Allow specification of a custom WebContentsView.
# https://bitbucket.org/chromiumembedded/cef/issues/1257
#
# Support custom RenderWidgetHostViewOSR for BrowserPluginGuest.
# https://bitbucket.org/chromiumembedded/cef/issues/1565
'name': 'web_contents_1257_1565',
},
{
# Support custom RenderWidgetHostViewOSR for MimeHandlerViewGuest and
# expose OnGuestAttached/Detached notifications.
# https://bitbucket.org/chromiumembedded/cef/issues/1565
# https://bitbucket.org/chromiumembedded/cef/issues/2727
'name': 'mime_handler_view_guest_1565_2727',
},
{
# Allow customization of the WebView background color.
# https://bitbucket.org/chromiumembedded/cef/issues/1161
# https://codereview.chromium.org/228603007/
'name': 'prefs_content_1161',
},
{
# Fix drag&drop of combined text and URL data on Linux/Aura.
# https://codereview.chromium.org/208313009
'name': 'ui_dragdrop_355390',
},
{
# Remove NOTREACHED() that is hit when loading Flash in incognito mode.
# https://bitbucket.org/chromiumembedded/cef/issue/1586
'name': 'content_pepper_flash_1586',
},
{
# Fix placement of IME window on Windows.
# https://bitbucket.org/chromiumembedded/cef/issue/1610
'name': 'ime_1610',
},
{
# Split service_manager::Main into the separate steps required by CEF.
# https://bugs.chromium.org/p/chromium/issues/detail?id=654986#c17
#
# Remove DCHECK on Linux when initialized CEF from a non-main thread.
# https://bitbucket.org/chromiumembedded/cef/issue/1639
'name': 'service_manager_654986',
},
{
# Fix missing check for defined(ENABLE_THEMES) in
# renderer_preferences_util.cc on Linux.
# https://bugs.chromium.org/p/chromium/issues/detail?id=545103
'name': 'renderer_preferences_util_545103',
},
{
# Expose the FontFamilyCache UserData key.
# https://bitbucket.org/chromiumembedded/cef/issues/1501
'name': 'font_family_cache_1501',
},
{
# Modify views::View to extend SupportsUserData.
# https://bitbucket.org/chromiumembedded/cef/issues/1749
#
# Don't add TestDesktopScreenX11 dependency on Linux.
# Reverts ui_controls_factory_desktop_aurax11.cc changes from
# https://codereview.chromium.org/2327623002
#
# Add InkDropHostView::ink_drop_mode method.
# Reverts ink_drop_host_view.h changes from
# https://codereview.chromium.org/2723843002
#
# Add LabelButton::SetFontList method.
# Reverts label_button.[cc|h] changes from
# https://codereview.chromium.org/2801583002
#
# Expose callbacks for mouse/keyboard events that trigger menu switching.
# Add accelerator display support to Label.
# https://bitbucket.org/chromiumembedded/cef/issues/2102
'name': 'views_1749_2102',
},
{
# Expose ui::Compositor via BrowserCompositorMac for OSR.
'name': 'browser_compositor_mac',
},
{
# Fix chrome Widevine build on Linux.
#
# Remove incorrect assertion on Windows/macOS by cherry-picking this commit:
# https://chromium.googlesource.com/chromium/src/+/ec992a43e7
'name': 'chrome_widevine',
},
{
# Support CEF changes in chrome/browser.
'name': 'chrome_browser',
},
{
# Support CEF changes in chrome/renderer.
'name': 'chrome_renderer',
},
{
# Don't initialize ExtensionSystemFactory when extensions are disabled.
# https://bitbucket.org/chromiumembedded/cef/issues/2359
'name': 'chrome_browser_content_settings',
},
{
# Don't initialize ExtensionSystemFactory when extensions are disabled.
# https://bitbucket.org/chromiumembedded/cef/issues/2852
'name': 'chrome_browser_themes',
},
{
# Make some methods of ProfileManager virtual.
#
# Don't create IdentityManager in RendererUpdater.
# https://bitbucket.org/chromiumembedded/cef/issues/1917
'name': 'chrome_browser_profiles',
},
{
# Show the CEF Save As dialog.
# https://bitbucket.org/chromiumembedded/cef/issues/2613
#
# Fix fatal error: 'components/printing/common/print.mojom.h' file not found
# From chrome/browser/ui/browser_commands.cc via
# chrome/browser/printing/print_view_manager_common.h
'name': 'chrome_browser_net_export',
},
{
# Support override of the User-Agent product component when NetworkService
# is enabled.
# https://bitbucket.org/chromiumembedded/cef/issues/2622
'name': 'chrome_browser_product_override',
},
{
# Fix Jumbo/component build dependency issue.
'name': 'chrome_browser_safe_browsing',
},
{
# Allow CEF to share Chrome plugin loading code.
'name': 'chrome_plugins',
},
{
# Don't create databases, blob_storage or VideoDecodeStats directories when
# cache_path is empty.
# https://bitbucket.org/chromiumembedded/cef/issues/2289
'name': 'storage_incognito_2289',
},
{
# Fix plugin placeholder blocked message.
# https://bitbucket.org/chromiumembedded/cef/issues/2020/
'name': 'webview_plugin_2020',
},
{
# Support WebUI by removing dependency on non-NULL IOThread* object.
# https://bitbucket.org/chromiumembedded/cef/issues/2037
'name': 'webui_2037',
},
{
# Implement breakpad/crashpad customization required by CEF.
# https://bitbucket.org/chromiumembedded/cef/issues/1995
'name': 'crashpad_1995',
},
{
# Support customization of crash report pruning limits.
# https://bugs.chromium.org/p/crashpad/issues/detail?id=142
#
# Implement better rate-limiting/retry logic.
# https://bugs.chromium.org/p/crashpad/issues/detail?id=23
'name': 'crashpad_tp_1995',
},
{
# Fix white flash during browser creation.
# https://bitbucket.org/chromiumembedded/cef/issues/1984
#
# Windows: Fix crash during window creation.
# https://bugs.chromium.org/p/chromium/issues/detail?id=761389
'name': 'rwh_background_color_1984',
},
{
# Pass is_main_frame to PluginServiceFilter::IsPluginAvailable.
# https://bitbucket.org/chromiumembedded/cef/issues/2015
#
# Pass the render process id to PluginServiceFilter::IsPluginAvailable.
# https://bugs.chromium.org/p/chromium/issues/detail?id=626728#c15
#
# Expose RFH via NavigationHandle for retrieval in DidFinishNavigation on
# network error.
# https://groups.google.com/a/chromium.org/d/msg/chromium-dev/6iAQPx_hwh8/gaTR5f1GAQAJ
#
# Add ContentRendererClient::RenderThreadConnected to fix sync IPC issue.
# https://bugs.chromium.org/p/chromium/issues/detail?id=728195
#
# Add RenderFrameObserver::FrameFocused method.
#
# Add ContentRendererClient::DevToolsAgent[Attached|Detached] methods.
#
# Always return the Chrome product value for DevTools.
# https://bitbucket.org/chromiumembedded/cef/issues/2300
#
# Add new ContentBrowserClient::HandleExternalProtocol variant for use with
# the NetworkService.
# https://bitbucket.org/chromiumembedded/cef/issues/2622
'name': 'content_2015',
},
{
# Pass is_main_frame to PluginServiceFilter::IsPluginAvailable.
# https://bitbucket.org/chromiumembedded/cef/issues/2015
#
# Add ContentRendererClient::DevToolsAgent[Attached|Detached] methods.
'name': 'webkit_plugin_info_2015',
},
{
# Linux: Attach routing IDs to PrintingContext.
# https://bitbucket.org/chromiumembedded/cef/issues/2196
'name': 'printing_context_2196',
},
{
# Linux: Fix 32-bit build fails with ld.gold: internal error in
# get_section_contents, at icf.cc:467
# https://bitbucket.org/chromiumembedded/cef/issues/2256
# Win: remove llvmlibthin as the combine_libs.py can't handle those
# https://bitbucket.org/chromiumembedded/cef/issues/2470
'name': 'build',
},
{
# Linux: Remove GTK build dependency.
# https://bitbucket.org/chromiumembedded/cef/issues/2014
'name': 'linux_gtk_2014',
},
{
# Changes necessary to support for chrome extensions. Add a new
# ExtensionHost constructor that allows CEF to create the WebContents.
# https://bitbucket.org/chromiumembedded/cef/issues/1947
#
# Don't initialize PrerenderContents object in StreamsPrivateAPI.
'name': 'extensions_1947',
},
{
# Don't enable sandbox::MITIGATION_STRICT_HANDLE_CHECKS in WinRT apps.
# https://bitbucket.org/chromiumembedded/cef/issues/2274
'name': 'win_rt_2274',
},
{
# Fix DCHECK running OSRTest.DragDropUpdateCursor.
# https://bugs.chromium.org/p/chromium/issues/detail?id=781966
'name': 'webkit_pointer_event_781966',
},
{
# macOS: Fix undesirable switch to discrete GPU during startup.
# https://bitbucket.org/chromiumembedded/cef/issues/2398
#
# macOS: Rely on symlinks to find the Libraries directory.
# https://bugs.chromium.org/p/chromium/issues/detail?id=757974#c23
'name': 'mac_gpu',
},
{
# macOS: Make the NativeEventProcessor protocol dependency optional.
# https://bitbucket.org/chromiumembedded/cef/issues/2539
'name': 'mac_event_observer_2539',
},
{
# macOS: Fix crash when scrolling in OSR mode.
# https://bitbucket.org/chromiumembedded/cef/issues/2540
'name': 'mac_fling_scheduler_2540',
},
{
# Linux: Use poll instead of select to fix crash during startup.
# https://bitbucket.org/chromiumembedded/cef/issues/2466
'name': 'linux_poll_2466',
},
{
# Allow ResourceBundle creation/destruction on the main thread and usage on
# the UI thread.
# https://bitbucket.org/chromiumembedded/cef/issues/2398
'name': 'resource_bundle_2512',
},
{
# Fix redraw of OSR PDF viewer.
# https://bitbucket.org/chromiumembedded/cef/issues/2507
# Partially reverts changes from https://crrev.com/17771fad93
'name': 'browser_child_frame_2507',
},
{
# macOS: Fix crash when showing a select popup with CefDoMessageLoopWork.
# https://bitbucket.org/chromiumembedded/cef/issues/2495
'name': 'message_pump_mac_2495',
},
{
# Linux: Load binaries from DIR_ASSETS.
# https://bitbucket.org/chromiumembedded/cef/issues/1936
'name': 'linux_assets_path_1936',
},
{
# Enhancements to NetworkService:
# - Add support for calling CookieMonster::SetCookieableSchemes.
# - Fix cache directory structure ("C:\temp\cache\cache\Cache" should be
# "C:\temp\cache\Cache").
# https://bitbucket.org/chromiumembedded/cef/issues/2622
'name': 'services_network_2622',
},
{
# Enhancements to NetworkService:
# - Support customization of request_id via SimpleURLLoader.
# - Remove the non-nullptr WebContents requirement from
# NetworkServiceClient::OnAuthRequired.
# https://bitbucket.org/chromiumembedded/cef/issues/2718
#
# Fix shutdown crash in InitNetworkContext with multi-threaded message loop.
# https://bitbucket.org/chromiumembedded/cef/issues/2703
'name': 'services_network_request_id_2718',
},
{
# Windows: Remove the base::Value is_standard_layout assert which will fail
# for the cef_sandbox build, and which is no longer required.
# https://bugs.chromium.org/p/chromium/issues/detail?id=646113#c173
# https://chromium.googlesource.com/chromium/src/+/2f28731c17
'name': 'base_value_646113',
},
{
# Restore WebView::SetResizeBackgroundColor() that was removed.
# http://crrev.com/3955c9f9eb
'name': 'set_resize_background_color',
},
{
# Restore WebUrlLoader Cancel method.
# https://chromium-review.googlesource.com/c/chromium/src/+/1617042
'name': 'web_url_loader_cancel_1617042',
},
{
# Avoid a shutdown crash with multi-threaded message loop caused by
# |g_browser_task_executor->browser_ui_thread_scheduler_| being null when
# BrowserTaskExecutor::Shutdown is called via CefContext::FinalizeShutdown.
# This crash was introduced by https://crrev.com/5f6212babf.
'name': 'browser_scheduler',
},
{
# Avoid a shutdown crash caused by PrefWatcher holding a reference to
# |g_browser_process->local_state()|, and the local_state being deleted
# before the PrefWatcher object (which is associated with a Profile).
# PrefWatcher::Shutdown will now be called from ChromeBrowserProcessStub::
# Shutdown for all Profiles before local_state deletion.
# This crash was introduced by https://crrev.com/7d032b378c.
'name': 'chrome_pref_watcher',
},
{
# Add support for OSR rendering with Viz.
# https://bitbucket.org/chromiumembedded/cef/issues/2575
'name': 'viz_osr_2575',
},
{
# Changes for print preview support:
# - Don't attach unnecessary Chrome-related handlers to constrained window.
# - Create file dialogs using the CEF code path.
# - Remove unsupported print preview UI options.
# https://bitbucket.org/chromiumembedded/cef/issues/123
'name': 'print_preview_123',
},
{
# Remove cef_sandbox dependency on boringssl MD5/SHA1 functions.
# https://bitbucket.org/chromiumembedded/cef/issues/2743
'name': 'base_sandbox_2743',
},
{
# Fix component build error due to ContentServiceManagerMainDelegate not
# being exported.
#
# Fix DiscardableSharedMemoryManager crash on shutdown with multi-threaded
# message loop.
# https://bitbucket.org/chromiumembedded/cef/issues/2798
'name': 'content_app_shutdown_2798',
},
{
# Add RenderWidgetHostImpl::SetCompositorForFlingScheduler to fix fling
# scrolling in OSR mode.
# https://bitbucket.org/chromiumembedded/cef/issues/2745
'name': 'osr_fling_2745',
},
{
# Windows: Fix ImportError: No module named win32file
# https://bugs.chromium.org/p/chromium/issues/detail?id=1033106#c7
'name': 'win_tool_wrapper_1033106',
},
{
# Windows: Build the double_conversion target as C++17 to avoid export of
# std::is_integral templates that should be inlined.
# https://bitbucket.org/chromiumembedded/cef/issues/2819
'name': 'win_double_conversion_2819',
}
]