# Each map in the list associates a patch file name with a target path and
# optional condition. All paths in the patch file must be relative to the
# target path. Each map should include a comment linking to the code review
# or bug report that the patch relates to. If a condition is provided the
# patch will only be applied if an environment variable with the specified
# name exists.

patches = [
  {
    # Necessary for grit integration.
    'name': 'gritsettings',
    'path': '../tools/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
    'name': 'gn_config',
    'path': '../',
  },
  {
    # Support loading of password protected zip archives.
    # https://bitbucket.org/chromiumembedded/cef/issues/496
    'name': 'zlib',
    'path': '../third_party/zlib/',
  },
  {
    # Avoid MessageLoop assertion on OS X.
    # https://bitbucket.org/chromiumembedded/cef/issues/443
    #
    # Revert change on Windows that removes MessageLoop::os_modal_loop().
    # https://codereview.chromium.org/1992243003
    'name': 'message_loop_443_1992243003',
    'path': '../base/message_loop/',
  },
  {
    # Enable popups in offscreen rendering on OS X.
    'name': 'webkit_popups',
    'path': '../third_party/WebKit/',
  },
  {
    # Fix export of UnderlayOpenGLHostingWindow for 64-bit OS X builds.
    # https://bitbucket.org/chromiumembedded/cef/issues/1051
    'name': 'underlay_1051',
    'path': '../ui/base/cocoa/',
  },
  {
    # 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
    #
    # 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
    'name': 'views_widget_180_1481_1677_1749',
    'path': '../',
  },
  {
    # Allow continued use of ContentRendererClient::HandleNavigation.
    # https://bitbucket.org/chromiumembedded/cef/issues/1129
    'name': 'content_nav_1129',
    'path': '../content/',
  },
  {
    # Allow specification of a custom WebContentsView.
    # https://bitbucket.org/chromiumembedded/cef/issues/1257
    'name': 'web_contents_1257',
    'path': '../',
  },
  {
    # Allow creation of a custom SoftwareOutputDevice.
    # https://bitbucket.org/chromiumembedded/cef/issues/1368
    'name': 'compositor_1368',
    'path': '../',
  },
  {
    # Allow specification of a custom WebContentsViewGuest implementation for
    # MimeHandlerView.
    # https://bitbucket.org/chromiumembedded/cef/issues/1565
    'name': 'mime_handler_view_1565',
    'path': '../extensions/browser/guest_view/mime_handler_view/',
  },
  {
    # Allow specification of a custom WebContentsViewGuest implementation for
    # BrowserPluginGuest.
    # https://bitbucket.org/chromiumembedded/cef/issues/1565
    'name': 'browser_plugin_guest_1565',
    'path': '../content/',
  },
  {
    # Allow customization of the WebView background color.
    # https://bitbucket.org/chromiumembedded/cef/issues/1161
    # https://codereview.chromium.org/228603007/
    'name': 'prefs_content_1161',
    'path': '../content/',
  },
  {
    # Fix drag&drop of combined text and URL data on Linux/Aura.
    # https://codereview.chromium.org/208313009
    'name': 'ui_dragdrop_355390',
    'path': '../ui/base/dragdrop/',
  },
  {
    # Fix AtExitManager assertion on SpellcheckServiceFactory destruction during
    # Windows multi-threaded message loop shutdown.
    # https://bitbucket.org/chromiumembedded/cef/issues/137
    'name': 'spellcheck_137',
    'path': '../chrome/browser/spellchecker/',
  },
  {
    # Fix AtExitManager assertion on PrefWatcherFactory destruction during
    # Windows multi-threaded message loop shutdown.
    # https://bitbucket.org/chromiumembedded/cef/issues/1680
    'name': 'prefs_tab_helper_1680',
    'path': '../chrome/browser/ui/prefs/',
  },
  {
    # Make URLRequest::set_is_pending() public so that it can be called from
    # CefRequestInterceptor::MaybeInterceptResponse().
    # https://bitbucket.org/chromiumembedded/cef/issues/1327
    'name': 'net_urlrequest_1327',
    'path': '../net/url_request/',
  },
  {
    # Remove NOTREACHED() that is hit when loading Flash in incognito mode.
    # https://bitbucket.org/chromiumembedded/cef/issue/1586
    'name': 'content_pepper_flash_1586',
    'path': '../content/browser/renderer_host/pepper/',
  },
  {
    # Fix placement of IME window on Windows.
    # https://bitbucket.org/chromiumembedded/cef/issue/1610
    'name': 'ime_1610',
    'path': '../ui/base/ime/',
  },
  {
    # Enable support for print header and footer.
    # https://bitbucket.org/chromiumembedded/cef/issue/1478
    #
    # Fix printing of PDF documents via PrintToPDF.
    # https://bitbucket.org/chromiumembedded/cef/issues/1565
    #
    # Revert ENABLE_PRINT_PREVIEW changes from the following changeset.
    # https://codereview.chromium.org/1556463003
    #
    # Add missing ENABLE_PRINT_PREVIEW checks in chrome/ on Mac.
    'name': 'print_header_footer_1478_1565',
    'path': '../',
  },
  {
    # Remove DCHECK on Linux when initialized CEF from a non-main thread.
    # https://bitbucket.org/chromiumembedded/cef/issue/1639
    'name': 'process_title_1639',
    'path': '../content/common/',
  },
  {
    # Fix rendering of the PDF extension with OSR when the device scale factor
    # is not 1.
    # https://bitbucket.org/chromiumembedded/cef/issues/1687
    'name': 'browser_frame_host_guest_1687',
    'path': '../content/browser/frame_host/',
  },
  {
    # Fix loading of the PDF extension with proxy BrowserContext.
    # https://bitbucket.org/chromiumembedded/cef/issues/1710
    'name': 'supports_user_data_1710',
    'path': '../base/',
  },
  {
    # Fix background color on Mac.
    # https://codereview.chromium.org/1070383005 (reverted)
    'name': 'render_widget_host_1070383005',
    'path': '../content/browser/renderer_host/',
  },
  {
    # 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',
    'path': '../chrome/browser/',
  },
  {
    # Expose the FontFamilyCache UserData key.
    # https://bitbucket.org/chromiumembedded/cef/issues/1501
    'name': 'font_family_cache_1501',
    'path': '../chrome/browser/',
  },
  {
    # Fix crash while printing on Windows by properly initializing V8 in the PDF
    # module.
    # https://bugs.chromium.org/p/chromium/issues/detail?id=549365#c17
    'name': 'pdfium_print_549365',
    'path': '../third_party/pdfium/',
  },
  {
    # Enable support for filtering resource responses.
    # https://bitbucket.org/chromiumembedded/cef/issues/515
    'name': 'net_filter_515',
    'path': '../',
  },
  {
    # Modify views::View to extend SupportsUserData.
    # Modify views::MenuButton behavior.
    # https://bitbucket.org/chromiumembedded/cef/issues/1749
    'name': 'views_1749',
    'path': '../ui/views/',
  },
  {
    # Expose RenderViewHostImpl swapped-out state.
    # https://bitbucket.org/chromiumembedded/cef/issues/1392
    'name': 'render_view_host_impl_1392',
    'path': '../content/browser/renderer_host/',
  },
  {
    # Expose ui::Compositor via BrowserCompositorMac for OSR.
    'name': 'browser_compositor_mac',
    'path': '../',
  },
  {
    # Fix chrome Widevine build on Linux.
    'name': 'chrome_widevine',
    'path': '../',
  },
  {
    # Make some methods of ProfileManager virtual.
    # Allow CEF to intercept GetBrowserContext*InIncognito functions.
    'name': 'chrome_profile',
    'path': '../',
  },
  {
    # Support StoragePartition proxy by:
    # (a) Exposing UserData keys for objects owned by BrowserContext;
    # (b) Adding BrowserContext::GetStoragePartitionProxy();
    # (c) Removing static_cast<> of StoragePartition to StoragePartitionImpl.
    # https://bitbucket.org/chromiumembedded/cef/issues/1973
    #
    # Clear RenderProcessHostImpl's |browser_context_| member when the
    # BrowserContext is deleted.
    # https://bitbucket.org/chromiumembedded/cef/issues/2032
    'name': 'storage_partition_1973',
    'path': '../',
  },
  {
    # Don't add TestDesktopScreenX11 dependency on Linux.
    # Revert ui_controls_factory_desktop_aurax11.cc changes from
    # https://codereview.chromium.org/2327623002
    'name': 'ui_views_test_640741',
    'path': '../',
  },
  {
    # Fix plugin placeholder blocked message.
    # https://bitbucket.org/chromiumembedded/cef/issues/2020/
    'name': 'webview_plugin_2020',
    'path': '../',
  },
  {
    # Support WebUI by:
    # (a) Exposing required UserData keys;
    # (b) Removing dependency on non-NULL IOThread* object.
    # https://bitbucket.org/chromiumembedded/cef/issues/2037
    'name': 'webui_2037',
    'path': '../',
  },
  {
    # Support an option to enable/disable net security expiration.
    # https://bitbucket.org/chromiumembedded/cef/issues/1994
    'name': 'net_security_expiration_1994',
    'path': '../',
  },
  {
    # Remove DCHECK hit during latency reporting when using OSR.
    # https://bitbucket.org/chromiumembedded/cef/issues/2060
    'name': 'render_widget_latency_2060',
    'path': '../',
  },
  {
    # Implement breakpad/crashpad customization required by CEF.
    # https://bitbucket.org/chromiumembedded/cef/issues/1995
    'name': 'crashpad_1995',
    'path': '../',
  },
  {
    # 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',
    'path': '../third_party/crashpad/',
  },
  {
    # Fix white flash during browser creation.
    # https://bitbucket.org/chromiumembedded/cef/issues/1984
    'name': 'rwh_background_color_1984',
    'path': '../',
  },
  {
    # 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
    'name': 'plugin_info_2015',
    'path': '../',
  },
  {
    # Pass is_main_frame to PluginServiceFilter::IsPluginAvailable.
    # https://bitbucket.org/chromiumembedded/cef/issues/2015
    'name': 'plugin_info_webkit_2015',
    'path': '../third_party/WebKit/',
  },
]