# 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.
    #
    # Add public_deps support to the GN repack template.
    # TODO(cef): Remove this once all grit includes are relative to the "gen"
    # directory.
    # https://bugs.chromium.org/p/chromium/issues/detail?id=623085
    #
    # Use a unique output path for the compile_xibs template on Mac.
    # https://bugs.chromium.org/p/chromium/issues/detail?id=623237
    #
    # Support custom VS toolchain on Windows.
    # https://bugs.chromium.org/p/chromium/issues/detail?id=623342
    'name': 'gn_config',
    'path': '../',
  },
  {
    # Disable use of the sysroot image for CEF because it does not include
    # the GTK dependency required by cefclient. It would be nice to enable
    # this functionality in the future. See http://crbug.com/504446.
    # TODO(cef): Remove this patch when GYP support is removed.
    'name': 'build',
    'path': '../build/',
  },
  {
    # 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/',
  },
  {
    # Fix ninja output for localization directories on OS X.
    # https://bugs.chromium.org/p/gyp/issues/detail?id=331
    # TODO(cef): Remove this patch when GYP support is removed.
    'name': 'gyp_331',
    'path': '../tools/gyp/pylib/',
  },
  {
    # 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': 'public_browser_1257',
    'path': '../content/public/browser/',
  },
  {
    # Allow creation of a custom SoftwareOutputDevice.
    # https://bitbucket.org/chromiumembedded/cef/issues/1368
    'name': 'compositor_1368',
    'path': '../',
  },
  {
    # Allow specification of a custom WebContentsView.
    # https://bitbucket.org/chromiumembedded/cef/issues/1257
    'name': 'browser_web_contents_1257',
    'path': '../content/browser/web_contents/',
  },
  {
    # Allow specification of a custom WebContentsView.
    # This change is required due to chrome_browser_process_stub.h indirectly
    # including chrome/browser/ui/browser.h on OS X.
    # https://bitbucket.org/chromiumembedded/cef/issues/1257
    'name': 'chrome_browser_1257',
    'path': '../chrome/browser/',
  },
  {
    # Allow specification of a custom WebContentsView.
    # https://bitbucket.org/chromiumembedded/cef/issues/1257
    'name': 'ui_webview_1257',
    'path': '../ui/views/controls/webview/',
  },
  {
    # Allow specification of a custom WebContentsView.
    # https://bitbucket.org/chromiumembedded/cef/issues/1257
    'name': 'extensions_1257',
    'path': '../extensions/',
  },
  {
    # 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
    'name': 'print_header_footer_1478_1565',
    'path': '../components/',
  },
  {
    # 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': 'stream_context_1710',
    'path': '../content/browser/streams/',
  },
  {
    # 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': '../net/',
  },
  {
    # 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/',
  },
  {
    # Fix GYP build error on Linux.
    # https://bugs.chromium.org/p/chromium/issues/detail?id=626150
    # TODO(cef): Remove this patch when GYP support is removed.
    'name': 'gyp_build_626150',
    'path': '../',
  },
  {
    # Expose ui::Compositor via BrowserCompositorMac for OSR.
    'name': 'browser_compositor_mac',
    'path': '../',
  },
]