# 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.
    #
    # 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',
  },
  {
    # Patches that must be applied after `gclient sync --nohooks` and before
    # `gclient runhooks`.
    #
    # Support custom VS toolchain on Windows.
    # https://bugs.chromium.org/p/chromium/issues/detail?id=623342
    'name': 'runhooks',
  },
  {
    # 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
    #
    # Add WebContentsObserver::OnFrameFocused.
    '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 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',
  },
  {
    # 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',
  },
  {
    # 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:
    # - 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
    #
    # Compute correct default quota when cache_path is unspecified.
    'name': 'services_network_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': 'win_base_msvc_sandbox',
  },
  {
    # 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.
    # - macOS: Fix error: no member named 'kCloudPrinterHandler' in namespace
    #   'printing::features',
    # 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: Build targets as C++17 to avoid export of std::is_integral
    # templates in cef_sandbox that should be inlined.
    # https://bitbucket.org/chromiumembedded/cef/issues/2819
    'name': 'win_cpp17_msvc_sandbox_2819',
  },
  {
    # libxml access is now limited to targets audited by the Security Team.
    # https://chromium-review.googlesource.com/c/chromium/src/+/1884750
    'name': 'libxml_visibility',
  },
  {
    # Fix ScreenlockMonitorDeviceSource window creation error.
    # https://bugs.chromium.org/p/chromium/issues/detail?id=1058556
    'name': 'win_screenlock_1058556',
  },
  {
    # Fix unbound AssociatedRemote error in SetBackgroundOpaque.
    # https://bugs.chromium.org/p/chromium/issues/detail?id=1070713
    'name': 'renderer_host_1070713',
  },
  {
    # Allow the loading of non-standard non-local WebSafe custom schemes in
    # iframes.
    # https://bugs.chromium.org/p/chromium/issues/detail?id=1081397#c9
    'name': 'browser_security_policy_1081397',
  },
  {
    # Linux: Fix undefined symbol: ui::GtkUiDelegate::SetInstance in
    # ChromeBrowserMainExtraPartsViewsLinux::ToolkitInitialized.
    # https://bugs.chromium.org/p/chromium/issues/detail?id=1085806
    'name': 'linux_chrome_views_1085806',
  }
]
