================
WebKitGTK 2.27.2
================

What's new in WebKitGTK 2.27.2?

  - Add user messages API for the communication with the web extension.
  - Enable service workers by default.
  - Add support for saving data in Web Inspector.
  - More navigation gesture improvement.
  - Fix the build with WebDriver disabled.
  - Show also client EGL extensions in about:gpu.
  - Disable accelerated compositing when we fail to initialize the EGL dispaly under Wayland.
  - Fix several crashes and rendering issues.

================
WebKitGTK 2.27.1
================

What's new in WebKitGTK+ 2.27.1?

  - Enable async scrolling when accelerating compositing policy is 'always'.
  - Add about:gpu to show information about the graphics stack.
  - Add API to enable Process Swap on (Cross-site) Navigation, that is now disabled by default.
  - Add WebKitWebView:page-id property.
  - Improve swipe navigation gesture style.
  - Fix several crashes and rendering issues.

================
WebKitGTK 2.25.4
================

What's new in WebKitGTK+ 2.25.4?

  - Switch to use libsoup WebSockets API.
  - Add support for permessage-deflate WebSocket extension.
  - Add support for datalist element in text input fields.
  - Fix a crash with empty video source.
  - Fix several crashes and rendering issues.

================
WebKitGTK 2.25.3
================

What's new in WebKitGTK+ 2.25.3?

  - Remove support for GTK2 NPAPI plugins.
  - Fix web view updates after swapping web process if accelerated compositing mode is forced.
  - Make kinetic scrolling work again.
  - Fix position of emoji chooser when page is scrolled.
  - Fix web process deadlock when scrolling twitter timeline which contains HLS videos.
  - Make navigation gesture use dark fallback background color color on dark themes.
  - Make Previous/Next gesture work in RTL mode.
  - Support cancelling touchscreen back/forward gesture.
  - Add user agent quirk to make github work in FreeBSD.
  - Fix content disappearing when using CSS transforms.
  - Fix some radio streams that could not be played.
  - Fix video pause that sometimes caused to skip to finish.
  - Fix volume level changes when playing a video.
  - Fix several crashes and rendering issues.

================
WebKitGTK 2.25.2
================

What's new in WebKitGTK+ 2.25.2?

  - Enable process switch on cross site navigation.
  - Use libwpe with fdo backend to implement accelerated compositing under wayland.
  - Fix rendering artifacts in youtube volume button.
  - Fix trapezoid artifact in github comment box.
  - Ensure web extensions directory is readable when sandbox is enabled.
  - Fix the executable name of WebDriver process, renamed by mistake in 2.25.1.
  - Enable hyperlink auditing setting by default.
  - Remove the option to build without using the redirected XComposite window.
  - Fix HLS streams being slow to start.
  - Make accessibility work when sandbox is enabled.
  - Fix several crashes and rendering issues.

================
WebKitGTK 2.25.1
================

What's new in WebKitGTK+ 2.25.1?

  - Add support for subprocess sandboxing.
  - Add API to get the web process unique identifier of a WebKitFrame.
  - Add WebKitWebPage::did-associate-form-controls-for-frame signal and deprecate did-associate-form-controls.
  - Implement AtkComponentIface scroll_to methods.
  - Improve rendering of form controls when GTK theme is dark and enable prefers-color-scheme media query.
  - Show the emoji chooser popover for editable content.
  - Fix touch capabilities detection for websites checking touch events properties present in window or pointer media queries.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.23.3
=================

What's new in WebKitGTK+ 2.23.3?

  - Fix rendering of emoji sequences containing zero with joiner.
  - Fallback to a colored font when rendering emojis.
  - Fix rendering artifacts on Youtube while scrolling under X11.
  - Remove DConf permissions from sandbox.
  - Fix build from release tarball with gtkdoc enabled.
  - Fix several crashes and rendering issues.
  - Translation updates: Swedish

=================
WebKitGTK+ 2.23.2
=================

What's new in WebKitGTK+ 2.23.2?

  - Fix rendering artifacts in some websites with accelerated compositing enabled.
  - Add initial support for variation fonts.
  - Add new API to convert a URI to a format for display.
  - Make scrollbars follow gtk-primary-button-warps-slider setting.
  - Fix crashes when closing the WebDriver session.
  - Fix the build with OpenGL disabled.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.23.1
=================

What's new in WebKitGTK+ 2.23.1?

  - Add initial support for subprocess sandboxing in Linux.
  - Add new permission request type for media device information.
  - Make scrollbars follow gtk-primary-button-warps-slider setting.
  - Script dialogs are now modal to the current web view only.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.21.5
=================

What's new in WebKitGTK+ 2.21.5?

  - Add API to evaluate code in a new object to JavaScriptCore GLib API.
  - Add API to check for syntax errors in given code to JavaScriptCore GLib API.
  - Update jsc_context_evaluate_with_source_uri() to receive also a starting line number.
  - Add API to allow creating variadic functions to JavaScriptCore GLib API.
  - Add --host option to WebDriver process.
  - Handle acceptInsecureCertificates capability in WebDriver.
  - Fix video freezes when GStreamerGL is not installed.
  - Fix several crashes and rendering issues.
  - Translation updates: Ukrainian.

=================
WebKitGTK+ 2.21.4
=================

What's new in WebKitGTK+ 2.21.4?

  - Switch to use a popup window with a tree view instead of a menu for option menu default implementation.
  - Add API to run javascript from a WebKitWebView in an isolated world.
  - Fix UI process crash in WebKitFaviconDatabase when pageURL is unset.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.21.3
=================

What's new in WebKitGTK+ 2.21.3?

  - Ensure memory monitor properly notifies all child processes.
  - Add maximize, minimize and fullscreen window commands to WebDriver.
  - Fix a network process crash when trying to get cookies of about:blank page.
  - Fix UI process crash when closing the window under Wayland.
  - Disable Gigacage if mmap fails to allocate in Linux.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.21.2
=================

What's new in WebKitGTK+ 2.21.2?

  - Remove resource load statistics API, it's not ready yet.
  - Add initial implementation of WebDriver advance user insteraction commands.
  - Add introspectable alternatives for functions using vargars to JavaScriptCore GLib API.
  - Implement MouseEvent.buttons.
  - Do TLS error checking on GTlsConnection::accept-certificate to finish the load earlier in case of errors.
  - Fix downloads started by context menu failing in some websites due to missing user agent HTTP header.
  - Avoid painting backing stores for zero-opacity layers.
  - Fix the installation path of API documentation.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.21.1
=================

What's new in WebKitGTK+ 2.21.1?

  - Add initial JavaScriptCore GLib API.
  - Use JavaScriptCore GLib API in WebKit layer and deprecate most of the DOM bindings API as well as
    methods using the JavaScriptCore C API.
  - Switch to use complex text code path unconditionally.
  - Properly close the connection to the Wayland nested compositor in the WebProcess.
  - Implement support for Graphics ARIA roles.
  - Add playbin3 support to GStreamer media backend.
  - Fix a deadlock when destroying the media player in non accelerated compositing mode.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.19.6
=================

What's new in WebKitGTK+ 2.19.6?

  - Fix crashes due to duplicated symbols in libjavascriptcoregtk and libwebkit2gtk.
  - Fix parsing of timeout values in WebDriver.
  - Implement get timeouts command in WebDriver.
  - Fix deadlock in GStreamer video sink during shutdown when accelerated compositing is disabled.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.19.5
=================

What's new in WebKitGTK+ 2.19.5?

  - This is a follow up release to export webkit_dom_dom_window_webkit_message_handlers_post_message() symbol that
    was hidden in 2.19.4 by mistake.

=================
WebKitGTK+ 2.19.4
=================

What's new in WebKitGTK+ 2.19.4?

  - Add web process API to detect when form is submitted via JavaScript.
  - Add new API to replace webkit_form_submission_request_get_text_fields() that is now deprecated.
  - Add WebKitWebView::web-process-terminated signal and deprecate web-process-crashed.
  - Fix rendering issues when editing text areas.
  - Use FastMalloc based GstAllocator for GStreamer.
  - Fix several crashes and rendering issues.
  - Translation updates: Swedish.

=================
WebKitGTK+ 2.19.3
=================

What's new in WebKitGTK+ 2.19.3?

  - Fix web process crash at startup in bmalloc.
  - Fix several memory leaks in GStreamer media backend.
  - WebKitWebDriver process no longer links to libjavascriptcoregtk.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.19.2
=================

What's new in WebKitGTK+ 2.19.2?

  - Add new API to add, retrieve and delete cookies via WebKitCookieManager.
  - Add functions to WebSettings to convert font sizes between points and pixels.
  - Ensure cookie operations take effect when they happen before a web process has been spawned.
  - Automatically adjust font size when GtkSettings:gtk-xft-dpi changes.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.19.1
=================

What's new in WebKitGTK+ 2.19.1?

  - Add initial resource load statistics support.
  - Add API to expose availability of certain editing commands in WebKitEditorState.
  - Add API to query whether a WebKitNavigationAction is a redirect or not.
  - Improve complex text rendering.
  - Add support for the "system" CSS font family.
  - Implement low power mode.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.17.5
=================

What's new in WebKitGTK+ 2.17.5?

  - Add initial implementation of WebDriver.
  - Enable GStreamerGL by default when building with GStreamer >= 1.10.
  - Fix position of context menu in Wayland.
  - Properly close cookies database at network process exit.
  - Fix several crashes and rendering issues.
  - Translation updates: Ukrainian.

=================
WebKitGTK+ 2.17.4
=================

What's new in WebKitGTK+ 2.17.4?

  - Add API to allow overriding popup menus.
  - Add kinetic scrolling support.
  - Improve theme rendering performance when using GTK+ >= 3.20.
  - Improve error message when webkit_web_view_run_javascript() fails due to a JavaScript exception.
  - Fix artifacts when rendering large images.
  - Fix blob downloads.
  - Fix web process deadlock when seeking youtube videos.
  - Fix alpha premultiplying when using cairo to draw the video frames.
  - Fix web process deadlock when closing the remote inspector frontend.
  - Update several web inspector icons.
  - Fix several crashes and rendering issues.
  - Translation updates: Spanish.

=================
WebKitGTK+ 2.17.3
=================

What's new in WebKitGTK+ 2.17.3?

  - Add new API to create a WebKitContextMenuItem from a GAction.
  - Fix graphics repaint hungs in accelerated compositing mode after a resize.
  - Fix rendering glitches in HiDPI in long GitHub Gist pages when focusing the comments textarea.
  - Remove Firefox user agent quirk for Google domains.
  - Remove LATEST_RECORD_VERSION from GnuTLS priority string.
  - Improve colors of inspector SVG icons.
  - Fix several crashes and rendering issues.
  - Translation updates: French.

=================
WebKitGTK+ 2.17.2
=================

What's new in WebKitGTK+ 2.17.2?

  - Update user agent quirks to make Youtube and new Google login page work.
  - Fix URL shown in the title of beforeunload dialogs.
  - Focus first input field of HTTP authentication dialog.
  - Fix rendering of PNG images when decoded in more than one chunk.
  - Update several web inspector icons.
  - Fix the build with OpenGL disabled.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.17.1
=================

What's new in WebKitGTK+ 2.17.1?

  - Switch to use new remote inspector infraestructure instead of legacy Web Sockets based one.
  - Add API to enable and handle Web Automation.
  - Load large images asynchronously off the main theead.
  - Use GtkFileChooserNative for open/save dialogs when available.
  - Make file chooser run as modal by default if possible.
  - Fix position of dropdown menus in Wayland.
  - Keep URI fragments after a server redirection.
  - Implement support for aria-haspopup and aria-autocomplete.
  - Implement aria-value support for focusable separators.
  - Fix playing of some live streams.

=================
WebKitGTK+ 2.15.4
=================

What's new in WebKitGTK+ 2.15.4?

  - Make accelerating compositing mode on-demand again. By default it will only be used for websites
    that require it, saving a lot of memory on websites that don't need it.
  - Add API to manage hardware acceleration policy.
  - Enable CSS Grid Layout by default.
  - Add API to create ephemeral WebViews to replace the legacy private browsing setting that is now
    deprecated.
  - Handle HTTP authentication for downloads having a WebView associated.
  - Add API to WebKitWebsiteDataManager to handle websites data.
  - Fix BadDamage X errors happening when resizing the WebView.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.15.3
=================

What's new in WebKitGTK+ 2.15.3?

  - Add API to set network proxy settings.
  - Add API to set initial notification permissions.
  - Add WebKitSecurityOrigin to the API.
  - Add tag property to WebKitNotification.
  - Create GLX OpenGL contexts using version 3.2 (core profile) when available to reduce the memory
    consumption on Mesa based drivers.
  - Improve memory pressure handler to reduce the CPU usage on memory pressure situations.
  - Add support for key and code properties on keyboard events.
  - More user agent string improvements to improve compatibility with several websites.
  - Fix network process crashes when loading custom URI schemes.
  - Fix web process crash when closing the web view in X11.
  - Fix several crashes and rendering issues.
  - Translation updates: German.

=================
WebKitGTK+ 2.15.2
=================

What's new in WebKitGTK+ 2.15.2?

  - Add new API to notify about dynamically added forms to Web Extensions.
  - Implement selection interface and states for elements supporting aria-selected and for menu roles.
  - Expose STATE_SINGLE_LINE and STATE_MULTI_LINE for ARIA searchbox role.
  - Enable WebMemorySampler.
  - Downloads started by context menu actions now have a web view associated.
  - Fix a network process crash when main resource load is converted into a download.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.15.1
=================

What's new in WebKitGTK+ 2.15.1?

  - GObject DOM bindings API marked as unstable has been removed.
  - Expose WebKitDOMHTMLInputElement APIs for form autofill.
  - Properly update WebKitWebView and WebKitWebPage URI properties when request is modified by
    WebKitWebPage:send-request signal.
  - Switch to use GMenu internally in the context menu implementation.
  - Dot not leak the default WebKitWebsiteDataManager in WebKitWebContext.
  - The network backend now always sniff contents for Downloads.
  - Use eglGetPlatformDisplay when available instead of eglGetDisplay.
  - Avoid strstr() when checking (E)GL extensions.
  - Fix the build with ENABLE_OPENGL=OFF and allow to build on Wayland without OpenGL again.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.13.4
=================

What's new in WebKitGTK+ 2.13.4?

  - Switched to use the threaded compositor. Accelerated compositing mode is now always enabled by default
    and happens in a separate thread in the web process.
  - Make web view background colors work in accelerated compositing mode.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.13.3
=================

What's new in WebKitGTK+ 2.13.3?

  - Fix Web Process deadlocks when loading HLS videos.
  - Make videos work when painted into a canvas when accelerated compositing is enabled.
  - Fix flickering with animated GIFs.
  - Fix a Web Process crash when video repaint is requested with GStreamer GL enabled.
  - Reduce the amount of file descriptors that the Web Process keeps open.
  - Make memory pressure handler work when cgroups are not available.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.13.2
=================

What's new in WebKitGTK+ 2.13.2?

  - Properly redraw the web view when reparented in force compositing mode.
  - Flip the volume control layout in media controls on RTL.
  - Add support for video orientation to the GStreamer media backend.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.13.1
=================

What's new in WebKitGTK+ 2.13.1?

  - CSS Grid Layout has been unprefixed and can be enabled as an experimental feature at runtime.
  - The HTTP disk cache implements speculative resources revalidation.
  - Add a new WebKitSetting to allow universal access from file URLs.
  - Fix several crashes and rendering issues.

=================
WebKitGTK+ 2.11.5
=================

What's new in WebKitGTK+ 2.11.5?

  - Switch FTL to use B3 backend instead of LLVM.
  - Add support for windowless NPAPI plugins with no UI in non X11 platforms.
  - Fix a deadlock in the Web Process when JavaScript garbage collector was running for a web
    worker thread that made google maps to hang.
  - Fix a Web Process crash when quickly attempting many DnD operations.
  - Fix scrollbars rendering with older versions of GTK+.
  - Fix a crash when creating a WebKitWebView without providing a WebKitWebContext.

=================
WebKitGTK+ 2.11.4
=================

What's new in WebKitGTK+ 2.11.4?

  - Prefer to link to LLVM shared libraries when building with FTL enabled.
  - Fix runtime errors when serializing/deserializing session state.
  - Fix critical warnings when loading a URL after a session restore.
  - Fix the build with GTK+ < 3.14.
  - Fix the build with video support disabled.

=================
WebKitGTK+ 2.11.3
=================

What's new in WebKitGTK+ 2.11.3?

  - NetworkProcess is now used unconditionally. The shared secondary process model is now
    the same as using the multiple process model and setting a process limit of 1.
  - Disable DNS prefetch when a proxy is configured.
  - Reduce the maximum simultaneous network connections to match other browsers.
  - Extend notifications API to notify WebKit when a notification is clicked by the user.
  - Add new API to save and restore a WebView session.
  - Add Web Extensions API to be notified about console messages.
  - Add WebKitURIRequest API to get the HTTP method.
  - Add API to handle beforeunload events.
  - Make WebKitWebView always propagate motion-notify-event signal.
  - Add a way to force accelerating compositing mode at runtime using an environment variable.
  - Fix input elements and scrollbars rendering with GTK+ 3.19.
  - Fix a crash in the UI process when the WebView is destroyed while the screensaver DBus proxy
    is being created.
  - Fix a WebProcess crash when loading large contents with custom URI schemes API.
  - Fix UI process crashes related to not having a main resource response when the load is committed
    for pages restored from the history cache.
  - Translation updates: French, German, Turkish

=================
WebKitGTK+ 2.11.2
=================

What's new in WebKitGTK+ 2.11.2?

  - Enable FTL by default in JavaScriptCore for x86_64.
  - Improved media backend performance by better handling glib main loop sources.
  - Fix rendering of lines when using solid colors.
  - Fix web process crashes due to BadDrawable X errors in accelerated compositing mode.
  - Translation updates: Italian.

=================
WebKitGTK+ 2.11.1
=================

What's new in WebKitGTK+ 2.11.1?

  - Improved general performance by better handling glib main loop sources.
  - Add autocleanups support to GObjects exposed in public API.
  - Fixed dashed and dotted border painting.
  - Upload the accelerated canvas as a texture by copying via GPU directly.
  - Popup menus no longer use a nested main loop.

=================
WebKitGTK+  2.9.5
=================

What's new in WebKitGTK+ 2.9.5?

  - Add API to set the maximum number of web processes per WebKitWebContext.
  - Add API to allow executing editing commands that require an argument.
  - Prevent clipboard contents from being lost when web process finishes.
  - Always allow font matching for strong aliases
  - Move GStreamer missing plugins installer to the UI process.
  - Fix empty space in popup menus when first item is selected.
  - Fix a crash when SoupSession is destroyed in exit handler.
  - Disable NPAPI plugins when running on Wayland.
  - Translation updates: Swedish.

=================
WebKitGTK+  2.9.4
=================

What's new in WebKitGTK+ 2.9.4?

  - Fix the window size reported when the web view isn't realized yet. This fixes
    the layout of some websites when opening new tabs in the browser and anchor links
    when opened in new tabs too.
  - Add API to be notified about editor state changes.
  - Add selection-changed signal to the Web Extensions API.
  - Add initial WebKitWebsiteDataManager API for process configuration options.
  - Make WebSQL work by using a default quota instead of always failing in openDatabase
    with DOM Exception 18.
  - Correctly restore accelerated compositing after a WebProcess crash.
  - Only enable the input methods filter when there's an editable element focused.
  - Fix a crash on memory allocation using bmalloc on 32bit systems.
  - Allow to build with X11 and Wayland targets at the same time.
  - Fix a crash when spell checker returns no guesses.
  - Update and optimize some of the web inspector icons.
  - Translation updates: Swedish.

=================
WebKitGTK+  2.9.3
=================

What's new in WebKitGTK+ 2.9.3?

  - Inhibit screen saver when playing full screen video.
  - Fix DOCUMENT_VIEWER cache model to actually disable the memory cache.
  - Fix a regression that prevented the WebKitWebView::context-menu signal
    from being emitted.
  - Update web inspector icon so Rendering Frames timeline distinguish between
    layout and painting.
  - Ensure fragment identifier part of URI is not removed for custom URI scheme
    requests.
  - Improve performance of keyboard events handling.
  - Expose element tag name as an object attribute to accessibility.
  - Fix the build with Wayland target enabled.

=================
WebKitGTK+  2.9.2
=================

What's new in WebKitGTK+ 2.9.2?

  - Add IndexedDB support using a dedicated database process.
  - Add construct property to WebKitWebContext to set the IndexedDB database directory.
  - Add allow-file-access-from-file-urls to WebKitSettings.
  - Improve network process disk cache performance by mapping cached resources in the
    web process instead of sending the resources data via IPC.
  - Prevent WorkQueue objects from being leaked and ensure its worker thread always exits.
  - webkit_dom_html_element_get_children() has been deprecated in favor of
    webkit_dom_element_get_children() to match the DOM spec.
  - ARIA menu items no longer have anonymous block children.
  - Map pre element to ATK_ROLE_SECTION instead of ATK_ROLE_PANEL.
  - Always include rows in the tree of accessible tables.
  - Fix the build with Netscape plugins disabled.
  - Fix XPixmaps leaked by GLContext when using EGL on X11.
  - Translation updates: Catalan.

=================
WebKitGTK+  2.9.1
=================

What's new in WebKitGTK+ 2.9.1?

  - New disk cache implementation when using the network process.
  - Web inspector UI has been redesigned.
  - Add support for automatic hyphenation using libhyphen when it's available.
  - Fix network redirection to a non HTTP destination.

=================
WebKitGTK+  2.7.4
=================

What's new in WebKitGTK+ 2.7.4?

  - Add API to change the WebKitWebView background color.
  - Add an option to create WebKitWebView snapshots with transparent background.
  - Add API to make the WebKitWebView editable.
  - Add is-playing-audio property to WebKitWebView.
  - Do not resize the accelerating compositing window to the web size until accelerated
    compositing mode is activated.

=================
WebKitGTK+  2.7.3
=================

What's new in WebKitGTK+ 2.7.3?

  - Add API to support HTML5 notifications.
  - Add UserMedia Permission Request API.
  - GObject DOM bindings API now correctly returns NULL intead of empty strings to be
    able to differentiate between not present and present but empty.
  - Add support for text-decoration-skip.
  - Improve the HTTP authentication dialog.
  - Expose the ID attribute of Meter and Option elements to accessibility.
  - Use latin1 instead of UTF-8 for HTTP header values.
  - Update NavigationItemProbes inspector icon.
  - Add video/mp2t as alternative mimetype for MPEG TS.
  - Add application/x-mpegurl and video/flv to the list of supported mimetypes.
  - Add SCHEDULING query support to HTTP media source element.
  - Fix deadlock when shutting down AudioDestination.
  - Translation updates: Kannada, Assamese

=================
WebKitGTK+  2.7.2
=================

What's new in WebKitGTK+ 2.7.2?

  - Fix SSL connection issues with some websites after the POODLE vulnerability fix.
  - Add API to handle user script messages.
  - Add context menu API to Web Process Extensions.
  - Add API to create a WebKitWebContext.
  - Add API to override the default local storage directory.
  - Add WebKitWebResource::failed-with-tls-errors signal to notify about load failures
    due to TLS errors also in sub-resources.
  - Fix several crashes in accessibility implementation.
  - Fix XMLHttpRequest with a timeout when using the network process.
  - Fix XMLHttpRequest with cookies disabled when using the network process.
  - Fix a crash in the network process when a synchronous load redirects to a new url
    in a different security origin.
  - Fix a crash in TextureMapper when video resolution changes.
  - Correctly report the memory used by the media player to the garbage collector to
    make sure it’s freed when the video element is removed from the DOM.
  - Fix documentation of webkit_print_operation_get_page_setup().

=================
WebKitGTK+  2.7.1
=================

What's new in WebKitGTK+ 2.7.1?

  - Add initial gestures support. For now only drag, zoom and tap
    gestures are supported, but it's enough ot make WebKitGTK+ usable
    in touch screens. It requires GTK+ 3.14.
  - Add webkit_hit_test_result_context_is_selection().
  - The Web Inspector now uses a separate Web Process.
  - Add implementation of subtle crypto HMAC and digest algorithms.

=================
WebKitGTK+  2.5.3
=================

What's new in WebKitGTK+ 2.5.3?

  - Fix a crash when drag and drop to a WebKitWebView.
  - Fix slow motion rendering problem in GStreamer media backend due to integer rounding.
  - Make sure the plugins cache is always used even if the cache directory doesn't exist.
  - Fix the build on FreeBSD.
  - Install the HTML API docs for WebKit2 and WebKitDOM in a versioned directory.
  - Intall the GObject instrospection files to the correct path.

=================
WebKitGTK+  2.5.2
=================

What's new in WebKitGTK+ 2.5.2?

  - Make GTK+2 dependency optional.
  - Use the ld version script for non developer builds.
  - Add webkit_navigation_policy_decision_get_navigation_action() API
    and deprecated the methods and properties in WebKitNavigationPolicyDecision
    that are now redundant.
  - Add support for user scripts to WebKitUserContentManager.
  - Do not use GtkWindow:resize-grip-visible with recent GTK+ versions.
  - Fix caps negotiation failure in playback pipeline in GSTreamer media backend.
  - Rename translation domain to WebKit2GTK-4.0.
  - Install the processes in a versioned directory.

=================
WebKitGTK+  2.5.1
=================

What's new in WebKitGTK+ 2.5.1?

  - WebKit1 API has been removed.
  - Binary version bump to make WebKit1 and WebKit2 parallel installable.
  - Switch to CMake build system.
  - The WebKitWebView::create signal now receives a WebKitNavigationAction
    with information about the navigation action that triggered the signal.
  - WebKitWebViewGroup has been removed from the API and WebKitUserContentManager
    has been added to handle user stylesheets.
  - WebKitCertificateInfo has also been removed. WebKitWebView::load-failed-with-tls-errors
    signal now receives a GTlsCertificate and GTlsCertificateFlags, and
    webkit_web_context_allow_tls_certificate_for_host() receives a GTlsCertificate.
  - The view mode API (webkit_web_view_set_view_mode() and webkit_web_view_get_view_mode())
    has been removed, since WebCore doesn't support view source mode anymore.
  - The DOM bindings API has been split into stable and unstable parts,
    and all deprecated methods have been removed. The stable part will
    keep API/ABI backwards compatibility, while the unstable part might change.
  - Add API to load arbitrary data optionally giving the encoding and MIME Type.
  - Add support for plugins using GTK+ 3.
  - Add HighDPI support for non-accelerated compositing contents.
  - Use a different user agent string depending on the site.

=================
WebKitGTK+  2.3.4
=================

What's new in WebKitGTK+ 2.3.4?

  - Add API to WebKitResponsePolicyDecision to check if the MIME type
    can be shown.
  - Enable fullscreen API by default.
  - Fix handling of HTTP certificates with the network process enabled.
  - Fix downloads with the network process enabled.
  - Fix handling of cookies when network process is enabled.
  - Remove the partial file downloaded when the download operation
    fails or is cancelled.
  - Make WebKitWebPage::send-request signal work after a redirect.
  - Add xdg.origin.url extended attribute to downloads in WebKit2.
  - Fix WebGL with GLES.
  - Translation updates: Dutch, Brazilian Portuguese.

=================
WebKitGTK+  2.3.3
=================

What's new in WebKitGTK+ 2.3.3?

  - Initial Network Process support disabled by default.
  - CSS regions are now enabled by default.
  - Support right-side attachment of the inspector in WebKit2.
  - Add spatial navigation setting to WebKit2 GTK+ API.
  - Add media source setting to both WebKit1 and WebKit2.
  - Support custom types for drag and drop data.
  - Avoid extra copy when drawing images in cairo backend.
  - Fix scrolling in combo boxes when the dropdown menu is larger than
    the screen.
  - Render AC layers also when using GTK+ 2 in WebKit1.
  - Fix return value of webkit_web_view_get_view_source_mode() in
    WebKit1.
  - Emit stream-start, caps and segment events in webkitwebaudiosrc
    element.
  - Fix seeking on media content provided by servers not supporting
    range requests.
  - Fix a crash when using media source in GStreamer media backend.
  - Fix an X11 error when the backing store surface is destroyed.
  - Expose splitter elements with ATK_ROLE_SEPARATOR to accessibility.
  - Expose accessibility objects WAI-ARIA landmark roles.
  - Expose accessibility objects with ATK_ROLE_ARTICLE.
  - Expose accessibility objects with ATK_ROLE_CHECK_MENU_ITEM.
  - Remove support for GStreamer 0.10.
  - Memory leak due to incorrect use of gst_tag_list_merge in
    TextCombinerGStreamer.
  - Translation updates: Brazilian Portuguese.

=================
WebKitGTK+  2.3.2
=================

What's new in WebKitGTK+ 2.3.2?

  - Add enable-media-stream setting to WebKit2 GTK+ API.
  - Fix a crash when load fails due to SSL errors in WebKit2.
  - Fix a crash when printing via JavaScript in WebKit2.
  - Add support audio and video tracks to GStreamer media backend.
  - Properly expose video and audio elements to accessibility.
  - Fix invalid cairo matrix when drawing too small surfaces.
  - Avoid extra copy when drawing images using cairo.
  - Do not omit playback rate when seeking in GStreamer media backend.
  - Several build fixes on non-linux platforms.

=================
WebKitGTK+  2.3.1
=================

What's new in WebKitGTK+ 2.3.1?

  - Add WebKit2 API for TLS errors.
  - Make EventTarget interface introspectable in GObject DOM bindings.
  - Expose WheelEvent in the GObject DOM bindings API.
  - Generate API documentation for GObject DOM bindings.
  - Respect image orientation by default.
  - Enable text edition undo/redo operations support in WebKit2.
  - Add suppport for blob URLs to GStreamer media backend.
  - Add support for subtitles.
  - Allow running the web process with an arbitrary prefix command in
    debug builds.
  - Expose image links properly to accessibility.
  - Expose title and alternative text for links in image maps to
    accessibility.
  - Cancel the current active WebKitAuthenticationRequest on load
    fail.
  - Fix several memory leaks.

=================
WebKitGTK+  2.1.4
=================

What's new in WebKitGTK+ 2.1.4?

  - Add WebKitWebView::authenticate signal to WebKit2 GTK API.
  - Expose KeyboardEvent in GObject DOM bindings.
  - Implement attributesOfChildren() for AccessibilityUIElement.
  - Implement allAttributes() for AccessibilityUIElement.
  - Fix issues with edge cases when getting offsets for a text range
    in AtkText.
  - Remote inspector server now notifies about errors when loading
    resurces.
  - Disable HTTP request "Accept-Encoding:" header field on gstreamer
    source element to avoid receiving the wrong size when retrieving
    data.
  - Fix the final position when receiving several seek calls in a row,
    in GStreamer media backend.
  - When rendering accelerated video, upload onto the texture only the
    buffer to be painted.
  - Fix response property definition of WebKitResponsePolicyDecision.
  - Fix a crash in WebKit1 when the WebView is created and destroyed
    too fast.
  - Fix a crash in UI process when the web process crashes.
  - Fix a crash in WebKit2 when a context menu item is selected after
    the page has been closed.
  - Fix a crash when getting the editor command for a key event
    initiated by the web inspector.
  - Fix the build when building with GTK+ 2.
  - Fix several memory leaks.

=================
WebKitGTK+  2.1.3
=================

What's new in WebKitGTK+ 2.1.3?

  - Add support for preload="metadata" to GStreamer media backend.
  - Do not expose '\n' for wrapped lines with ATK_TEXT_BOUNDARY_CHAR.
  - Fix potential race condition in GStreamer media backend when
    getting the video sink caps.
  - Fix performance issues rendering a page with animations.
  - Several fixes and improvements in GStreamer video accelerated
    compositing support.
  - Adjust internal size on GStreamer HTTP source element when
    receiving data if necessary.
  - Actually disable the memory cache when DOCUMENT_VIEWER cache model
    is used in WebKit1.
  - Fix runtime critical warning in WebKit2 when unloading a module
    that failed to load.
  - Fix several memory leaks.

=================
WebKitGTK+  2.1.2
=================

What's new in WebKitGTK+ 2.1.2?

  - Set the subresources load priority using new libsoup API available
    in 2.43.
  - Do not use X11 WidgetBackingStore implementation in Wayland.
  - Support using GLContext from multiple threads.
  - Make sure gstreamer source element is thread-safe.
  - Prevent race condition when pad caps is set on gstreamer player.
  - Invalidate the ProcessLauncher when the process is terminated
    before it has finished launching
  - Use custom cairo code instead of Pango API for highlighting
    misspelled words.
  - Respect PKG_CONFIG env variable when generating gtk-doc.
  - Fix a crash due to an assert in gstreamer backend when seeking.
  - Fix memory leak when web process is terminated.
  - Translation updates: Telugu, Hindi, Kannada, Odia.

=================
WebKitGTK+  2.1.1
=================

What's new in WebKitGTK+ 2.1.1?

  - Add webkit_uri_scheme_request_finish_error to WebKit2 GTK+ API.
  - Add a setting to control whether or not accelerated 2D canvas is
    enabled in WebKit2.
  - Add a setting to WebKit2 to allow sending console log messages to
    stdout.
  - Always use EGL to create the GL context when running on Wayland.
  - Fix rendering of WebKitWebView child widgets with recent GTK+.
  - Notify the web process in WebKitURISchemeRequest when we fail to read
    from the user InputStream.
  - Fixed race conditions closing the socket descriptor when the web
    process crashes.
  - Add video accelerated compositing support to the GStreamer backend.
  - Add support for audio/speex MIME type to the GStreamer backend.
  - Fix seek after video finished in GStreamer backend.
  - Initialize WebKitWebPlugin path to prevent double-free in WebKit1.
  - Fix several GObject instrospection warnings.
  - Fixed several memory leaks.

=================
WebKitGTK+ 1.11.5
=================

What's new in WebKitGTK+ 1.11.5?

  - Fix crashes related to libsoup, gstreamer, and accessibility.
  - Implement the WebKit2 resources API using the injected bundle.
  - Add API to prefetch DNS of a given hostname to the WebKit2 API.
  - Move Authentication and Downloads from WebProcess to Shared in
    WebKit2.
  - Many improvements to the GStreamer backend including the resurrection of
    the native fullscreen mode for increased performance, support for
    setPreservesPitch, bug fixes, support for Opus files, and
    some other performance improvements.
  - New features enabled: CSS Image Resolution, CSS Image Orientation,
    and the performance timeline in the Web Inspector via resource timing
    and navigation timing.
  - Add support for blend modes to the Cairo backend.
  - Fix for checkSpellingOfString erroneously treating multiple words
    as spelled correctly.
  - Characters outside the BMP are now properly rendered.
  - Synthetic bold is now applied to fallback fonts properly.
  - Better drag and drop icons during drags on non-composited desktops.
  - The page title is now preserved in WebKit when disappearing when clicking on
    an anchor link.
  - The web database path setting in WebKit1 now also controls where IndexedDB
    databases are stored.
  - Fix various issues in the build tools, testing tools, Web Inspector, and
    MiniBrowser.


=================
WebKitGTK+ 1.11.4
=================

What's new in WebKitGTK+ 1.11.4?

  - Add support for loading web process extensions to WebKit2 GTK+.
  - Embed the HTTP authentication dialog into the WebView in WebKit2.
  - Add support for IME Composition to WebKit2.
  - Add API to notify about display/execution of insecure content to
    WebKit2 GTK+ API.
  - Add GTK+ API to set a WebKitWebView in view source mode to WebKit2.
  - Add API to set a TLS errors policy to WebKit2 GTK+ API.
  - Add WEBKIT_HIT_TEST_RESULT_CONTEXT_SCROLLBAR to WebKit2 GTK+ API.
  - Add support for remote Web Inspector to WebKit2.
  - Complete the documentation od sections in WebKit2 GTK+ API.
  - Fix cookies and custom URI requests when the web process is
    re-launched after a crash.
  - Fix a crash in WebKit2 when running inside Xvfb.
  - Fix a crash in WebKit2 when the WebView is resized with the
    inspector attached.
  - Use Harfbuzz instead of Pango in GTK+ port.
  - Add support for WebP image.
  - Port WebAudio backend to GStreamer 1.0 API.
  - Fix the buffering ranges reported with GStreamer 1.0.
  - Implement multipart/x-mixed-replace in the soup network backend.
  - Fix invalid entries for plugins in navigator.plugins.
  - Add implementation for AccessibilityUIElementGtk::isSelectable()
    and AccessibilityUIElementGtk::isMultiSelectable().
  - Expose ARIA roles for tab, tabpanel and tablist.
  - Fixed several memory leaks.

=================
WebKitGTK+ 1.11.2
=================

What's new in WebKitGTK+ 1.11.2?

  - Implement inspector server on Linux for remote debugging.
  - Add support for password remembering to HTTP authentication
    dialog in WebKit2 using libsecret.
  - Add API to get favicons to WebKit2 GTK+ API.
  - Add API to get the WebKitWebView associated to a WebKitDownload to
    WebKit2 GTK+.
  - Add GObject introspection support to WebKit2 GTK+ API.

=================
WebKitGTK+ 1.11.1
=================

What's new in WebKitGTK+ 1.11.1?

  - Make WebKitWebView work again inside a GtkOverlay by not using a
    native window for Accelerated Compositing implementation.
  - Use XDamage to improve accelerated compositing performance.
  - Enable the edge distance anti-aliasing for accelerated compositing
    layers.
  - Add support to build with EGL OpenGL backend.
  - Add support for WebAudio.
  - Fix several API breaks in DOM bindings introduced in 1.9.6.
  - Save the original URI for downloaded files as GIO metadata of the
    destination file.
  - Add API for controlling the user agent to WebKit2.
  - Add API to WebKit2 to allow running JavaScripts from a
    WebKitWebView using a GResource containing the script.
  - Add Undo/Redo and SelectAll predefined editing commands to WebKit2
    GTK+ API.
  - Add a setting to enable/disable smooth scrolling to WebKit2 GTK+
    API.
  - Add API to get the web view that initiated a custom URI request to
    WebKit2 GTK+.
  - Implement ViewState methods of WebKitWebView in WebKit2.
  - Add API to get/set the security policy of a given URI scheme to
    WebKit2 GTK+.
  - Add WebKitWebView:is-loading property to WebKit2 GTK+ API.
  - Change spellchecker languages API in WebKit2 to use a GStrv for
    the list of languages to make the API more consistent and
    convenient to use.
  - Add destroy notify parameter to
    webkit_web_context_register_uri_scheme in WebKit2 GTK+ API.
  - Replace webkit_web_view_replace_content with
    webkit_web_view_load_alternate_html in WebKit2 GTK+ API.
  - Rename WebKitWebView "print-requested" signal to "print" in
    WebKit2 GTK+ API for consistenty.
  - Add API to set preferred languages to WebKit2 GTK+.
  - Add webkit_uri_response_get_suggested_filename to WebKit2 GTK+
    API.
  - Add API to save a web page in MHTML format to WebKit2 GTK+.
  - Implement smart separators for context menu in WebKit2 GTK+.
  - Sanitize the suggested filename when building the download
    destination URI in WebKit2.
  - Fix disk cache in WebKit2 to actually dump the contents to disk.
  - Fix a crash in WebKit2 when navigating between pages in the
    history cache.
  - Fix a crash in WebKit2 when a download initiated by the policy
    checker fails.
  - Fix a crash in network backend with non-UTF8 HTTP header names.
  - Properly close audio device after playing sound.
  - Purge unused favicons from IconDatabase after 30 days.
  - Properly expose <legend> elements to ATs.
  - The new accessibility CanvasRole is now mapped to ATK_ROLE_CANVAS.
  - Fix an infinite loop in accessibility code.
  - Fix a crash in
    AccessibilityObject::accessibilityPlatformIncludesObject().
  - Fix a crash in WebCore::HTMLSelectElement::selectedIndex().
  - Fix caret-moved events not emitted for certain content.
  - Fix incorrect/unexpected characters in the text of certain
    accessibles.
  - Implement AccessibilityUIElement::titleUIElement() and
    AccessibilityUIElement::stringValue().
  - Expose ROLE_TOGGLE_BUTTON instead of ROLE_PUSH_BUTTON when
    aria-pressed is present.
  - Fix LLint build with -g -02.
  - Properly process GDK_SMOOTH_SCROLL events.
  - Fix several memory leaks.

=================
WebKitGTK+ 1.9.6
=================

What's new in WebKitGTK+ 1.9.6?

  - Add spell checker API to WebKit2 GTK+ API.
  - Add WebKitWebView::submit-form signal to WebKit2 GTK+ API.
  - Add API to get the suggested filename from a
    WebKitNetworkResponse.
  - Add webkit_web_view_get_snapshot() to WebKit1 API.
  - Paste primary selection when middle clicking in X11 WebKit2.
  - Make sure WebKitWebView always has a main resource and it has
    already been set when the load has been committed, even for pages
    loaded from the history cache in WebKit2.
  - Fix a run time critical warning when gdk_window_get_cursor() is
    called before WebKitWebView has been realized in WebKit2.
  - Fix continuous insertion of newlines in Etherpad.
  - Fix several memory leaks.

=================
WebKitGTK+ 1.9.5
=================

What's new in WebKitGTK+ 1.9.5?

  - Add API to get HTTPS status to WebKit2 GTK+.
  - Add API to clear the cache to WebKit2 GTK+.
  - Add webkit_cookie_manager_set_persistent_storage() to WebKit2 GTK+
    API.
  - Improve performance of searching in WebKit2.
  - Implement disk cache in WebKit2.
  - Add site specific quirks setting to WebKit2 GTK+ API.
  - Add a setting to enable/disable page cache to WebKit2 GTK+ API.
  - Add WebKitWebView::context-menu-dismissed signal to WebKit2 GTK+
    API.
  - Add webkit_web_frame_get_dom_document() to WebKit GTK+ API.
  - Use soup_cookie_jar_is_persistent() to set whether cookie is a
    session one or not.
  - Fix recognition of contractions (apostrophes) in spell checker.
  - Fix a crash when showing the context menu in the Web Inspector.
  - WebKitWebView::mouse-target-changed is not emitted when moved
    to/from editable content.
  - Fix inspector detach when inspector was attached by the client in
    WebKit2.
  - Don't show accel labels in WebKit2 context menu items.
  - Cache the video dimensions to not query the video-sink sink-pad
    caps every time.
  - Fix several memory leaks.

=================
WebKitGTK+ 1.9.4
=================

What's new in WebKitGTK+ 1.9.4?

  - Add an accelerated compositing implementation for WebKit2.
  - Add API to register custom URI schemes to WebKit2 GTK+ API.
  - Add support for window.showModalDialog in WebKit2 GTK+ API.
  - Add webkit_download_get_received_data_length to WebKit2 GTK+ API.
  - Add ContextMenu API to WebKit2 GTK+.
  - Add Geolocation permission requests API to WebKit2 GTK.
  - Add API to get the library version to WebKit2 GTK+.
  - Add WebKitWebView::run-file-chooser signal to WebKit1 API.
  - Port the video sink to GStreamer 0.11 API.
  - Add TextureMapper ImageBuffer support as a fallback from the
    hardware accelerated path
  - Add input methods submenu item to the default context menu for
    editable content.
  - Unmark highlighted text matches when find operation finishes.
  - Honor the device scale factor property when drawing.
  - Prevent setting or editing httpOnly cookies from JavaScript.
  - Fix several memory leaks.

=================
WebKitGTK+ 1.9.3
=================

What's new in WebKitGTK+ 1.9.3?

  - Add webkit_download_get_request to WebKit2 GTK+ API.
  - Add API to get the list of plugins to WebKit2 GTK+.
  - Add webkit_web_view_can_show_mime_type() to WebKit2 GTK+ API.
  - Add GCancellable parameter to all methods using gio async pattern
    in WebKit2 GTK+ API.
  - Add settings to enable and disable composited layer indicators to
    WebKit2 GTK+ API.
  - Add generic permission requests API to WebKit2 GTK+ API.
  - Add initial inspector API to WebKit2 GTK+.
  - Allow to attach/detach the inspector in WebKit2.
  - Add media-playback-requires-user-gesture and
    media-playback-allows-inline settings to WebKit1 and WebKit2 GTK+.
  - Use defers loading instead of pausing the soup message in
    WebKitDownload.
  - Properly set the input method context window location.
  - Fix a crash in the WebProcess when a download is started from
    an existing ResourceHandle.
  - Fix cursor used for ne-resize.
  - Fix contractions recognition by the spell checker.
  - Fix a crash rendering scrollbars on GTK wxWebkit.
  - Fix URL::fileSystemPath() implementation to strip the query part
    of the uri.
  - Check for GTK2/GTK3 symbol mismatch earlier to fix plugins run
    with nspluginwrapper.
  - Fix thin archives support while building GTK+ port.
  - Fix several memory leaks.
  - Fix several compilation warnings.

=================
WebKitGTK+ 1.9.2
=================

What's new in WebKitGTK+ 1.9.2?

  - Fix exceeding arguments list build problem, by splitting more
    files off libWebCore into the new libWebCoreModules convenience
    library.
  - Remove left over soup_session_pause_message() and properly handle
    that case for defersLoading.
  - Fix response being the new one instead of the one that caused the
    redirect when emitting WebKitWebView::resource-request-starting.
  - Refactor of IME handling to fix bugs and prepare for sharing with
    WebKit2.
  - Add file chooser API to WebKit2.

=================
WebKitGTK+ 1.9.1
=================

What's new in WebKitGTK+ 1.9.1?

  - Geolocation support is built by default now. Use
    --disable-geolocation during build to disable it.
  - LINGUAS environment variable is honored now.
  - Throttle DNS prefetching to avoid overloading the resolver.
  - Remove defunct WebInspector GSettings mapping.
  - Fix a crash when emitting signals with a GError parameter when
    using GObject Introspection.
  - Fix flickering during scrolling and resizing in newer versions of
    GTK+.
  - Fix a bug where the Content-Length header was not sent for certain
    XMLHttpRequests.
  - Fix a WebProcess segmentation fault related to clipboard handling.
  - Fix a repainting error that occurred during interior frame
    scrolling.
  - Fix a crash when WebKitWebView is created without a WebContext.
  - Fix a crash that could occur during synchronous XMLHttpRequests.
  - Fix rendering of combobox / menulist buttons that do not have
    separators.
  - Fix the rendering of toggle buttons with larger-than-default
    widths and heights with the Adwaita theme.
  - Fix misrendering of text shadow extents in some situations.
  - Fix a crash when closing browser with inspector window opened.
  - Now interpret plugin metadata as UTF-8.
  - Fix rendering of GtkWidgets embedded on WebKitWebView.
  - Web content (except plugins) should no longer steal focus from
    other GTK+ widgets.
  - WebKit will try to use the default libsoup proxy resolver
    automatically.
  - Performance improvements in WebKitWebView by avoiding doing a lot
    of work in size_allocate when the view is not mapped.
  - Web Timing is now enabled.
  - Add support for smooth scrolling.
  - Implement unicode submenu items.
  - FFTFrame implementation in GStreamer backend.
  - More work on GStreamer 0.11 support.
  - Add support for windowed plugins in WebKit2.
  - Add full printing support to WebKit2.
  - Add a new favicon database API that corrects the problems of the
    old one.
  - Add WebKitWebView::context-menu signal to allow applications to
    handle its own context menu. WebKitWebView::populate-popup signal
    and default-context setting are now deprecated.
  - Well known names for menu items in the default context menu are
    now exposed in an enumeration.
  - Add entering/leaving fullscreen signals to WebKit API.
  - Add enable-webaudio setting to WebKit2 GTK+ API.
  - Add support for registering custom uri schemes in WebKit2.
  - Add WebKitWebView::mouse-target-changed signal to WebKit2 GTK+
    API.
  - Add enter/leave fullscreen signals to WebKit2 GTK+ API.
  - Add find API to WebKit2 GTK+ API.
  - Use a single signal for script dialogs in WebKit2 GTK+ API.
  - Add cookies API to WebKit2 GTK+ API.
  - Add webkit_print_operation_print() to WebKit2 GTK+ API.
  - Add resources API to WebKit2 GTK+ API.
  - Add support for Response policy decisions to WebKit2 GTK+ API.
  - Add javascript clipboard functionality settings to WebKit2 GTK+
    API.
  - Add cut, copy and paste methods to WebKit2 GTK+ API.
  - Add zoom-text-only setting to WebKit2 GTK+ API.
  - Add webkit_web_view_run_javascript() to WebKit2 GTK+ API.

=================
WebKitGTK+ 1.7.5
=================

What's new in WebKitGTK+ 1.7.5?

  - Add new signals to track resources loading.
  - Add --no-timeout command line option to DumpRenderTree.
  - Expose accessibility hierarchy in WebKit2 to ATK/AT-SPI based ATs.
  - Allow to build using extra jhbuild modulesets.
  - Fix emission of ATK text-caret-moved and text-selection-changed
    events.
  - Update primary clipboard with the current selection in X11
    platforms in WebKit2.
  - Implement the policy client in WebKit2 GTK+ API.
  - Add basic printing support to WebKit2.
  - Do not add unnecessary blanks at the end of a line of text to fix.
    the line returned by atk_text_get_text_at_offset().
  - Make sure input text field is repainted when value is changed.
  - Add print-backgrounds setting to WebKit2 GTK+ API.
  - Respect the has-backward-stepper and has-forward-stepper
    properties when drawing scrollbars.
  - WebKit-3.0.gir now includes information about C includes or
    exported packages.
  - WebKit1 API documentation was not generated when building with
    gtk-2.0.
  - Make WebKitWebView work inside a GtkOffscreenWindow.
  - Implement DownloadClient and add downloads API to WebKit2 GTK+
    API.

=================
WebKitGTK+ 1.7.4
=================

What's new in WebKitGTK+ 1.7.4?

  - Fix a11y regression: text-inserted events lack text inserted and
    current line.
  - Fix scrollbars in WebKit2 that were drawn behind the window resize
    grip.
  - Fix a memory leak in WebKitWebSourceGStreamer.
  - Slider thumb is not centered on the track with the unico theme.
  - Fix context menu in WebKit2 to not dissapear right after it's shown.
  - Use GtkOrientable style class in GTK+ 3 theming code.
  - Change default WebSocket protocol to the latest one (hybi-17).
  - Fix scrollbars size with GTK+ 3.x to follow the current theme.
  - Use gdk_screen_get_monitor_workarea() when available for
    screenAvailableRect().
  - Rename webkit_web_view_load_alternate_html as
    webkit_web_view_replace_content in WebKit2 GTK+.
  - Fix emission of ATK text-caret-moved and text-selection-changed events.
  - Add methods to get/set the WebView zoom level to WebKit2 GTK+ API.
  - Make WebProcess and PluginProcess use the same locale as the UI process.
  - Simplify WebKit2 loader client API.

=================
WebKitGTK+ 1.7.3
=================

What's new in WebKitGTK+ 1.7.3?

  - WebGL is now enabled by default.
  - Initial support for accelerated compositing has been added.
  - Add fullscreen setting to WebKit2 GTK+ API.
  - Fix regression of Push buttons that didn't expose their displayed
    text/name to accessibility toolkit.
  - Initial UI client implementation for WebKit2 GTK+ API.
  - Implement HTML5 History APIs.
  - Implement cookies management in WebKit2.
  - Fix a crash when a download fails.
  - Add support for javascript dialogs in WebKit2 GTK+ API.
  - Add 'enable-dns-prefetching' setting to WebKit2 GTK+ API.
  - Initial support for WebAudio data playback.
  - Add enable-webaudio setting.
  - Links are now focused with Tab by default in WebKit2.
  - Fix HTML5 Youtube video fullscreen button.
  - Improve description of WebSocket errors.
  - Add WebKitWindowProperties to WebKit2 GTK+ API.
  - Fullscreen controller support for the new WebKit Fullscreen API.
  - Add WebKitURIResponse to WebKit2 GTK+ API.
  - Fix random crash in pages containing plugins.
  - Fix loading of custom fonts in some web sites like surlybikes.com
    or boingboing.net.

=================
WebKitGTK+ 1.7.2
=================

What's new in WebKitGTK+ 1.7.2?

  - Fix process freeze when right-clicking on windowless Flash.
  - Performance improvements by avoiding unnecessary clips while
    painting.
  - Notify errors happening on downloads not started by a web view.
  - Allow building with GLib >= 2.31.
  - Significant JavaScript performance improvements on x86 and x86-64.
  - Fix application cache directory in WebKit2.
  - Add initial support for cookies in WebKit2.
  - Implement support for downloads in WebKit2.
  - Add methods to load HTML and plain text to WebKit2 GTK+ API.
  - Add webkit_web_view_get_uri() to WebKit2 GTK+ API.
  - Don't show items in option elements with display:none.
  - Add webkit_web_view_load_request() to WebKit2 GTK+ API.
  - Add support for WebAudio AudioFileReader.
  - Port MiniBrowser to use WebKit2 GTK+ API instead of the C API.
  - Add more settings to WebKitSettings in WebKit2 GTK+ API: Private
    browsing, developer extras, resizable text areas, tabs to links,
    caret mode, font settings, default charset.
  - Fix windowless plugins drawing in WebKit2.
  - Fix memory leak when fullscreening a video.
  - Remove visited links from page's page group when clearing back
    forward list.
  - Switch to a backing store approach for painting WebKitWebView. It
    improves scrolling performance.
  - Add methods to get/set the settings of a web view to WebKit2 GTK+
    API.
  - Add webkit_settings_new_with_settings() to WebKit2 GTK+ API.
  - Add title property to WebKitWebView in WebKit2 GTK+ API.

=================
WebKitGTK+ 1.7.1
=================

What's new in WebKitGTK+ 1.7.1?

  - Fix a problem with scroll adjustments tha made scrollbars become
    out of sync with the page contents.
  - Show title of option control items in a tooltip.
  - Improve scrolling performance for pages containing windowed
    plugins.
  - Use GtkGrid instead of GtkTable in authentication dialogs.
  - Fix compatibility issues with DOM bindings.
  - Fix video pause/play in fullscreen.
  - Add support for pseudo-italics on freetype fonts when italic font
    is requested but Fontconfig gives one that is neither oblique
    nor italic.
  - Fix test rendering issues due to custom fonts which use synthetic
    oblique rendering.
  - Support for client-based geolocation.
  - Add support for sending encoded blob data during network requests.
  - Use SOCK_SEQPACKET when available for sockets used to communicate
    processes in WebKit2.
  - Add gtk-doc support to generate WebKit2 GTK+ API documentation.
  - Implement default error pages in WebKit2.
  - Initial implementation of WebInspector for WebKit2.
  - Implement drag and drop support in WebKit2.
  - TextChecker implementation for WebKit2.
  - Initial implementation of back forward list for WebKit2 GTK+ API.
  - Initial implementation of view settings for WebKit2 GTK+ API.
  - Initial implementation of loader client for WebKit2 GTK+ API.
  - Implement cache model for WebKit2
  - Initial implementation of web context for WebKit2 GTK+ API.
  - Add methods to get/set a custom text enconding to WebKit2 GTK+
    API.
  - Add WebKitError to WebKit2 GTK+ API.

This is the first release providing a minimal working WebKit2 GTK+
API. This API is still under design and development, so use it
carefully and take into account that it might change.

=================
WebKitGTK+ 1.5.90
=================

What's new in WebKitGTK+ 1.5.90?

  - Bumped GStreamer requirement to 0.10.30.
  - Switch to GTK+3 by default. GTK+2 is still required for the
    WebKit2 plugin process though.
  - Create pot files in builddir.
  - Improvements in the WebKit2GTK+ port.
  - Lots of bugfixes.

================
WebKitGTK+ 1.5.2
================

What's new in WebKitGTK+ 1.5.2?

  - Remove G_CONST_RETURN usage througout WebKit, it's deprecated in
    glib.
  - Add plugin process support in WebKit2. Now (GTK+2) plugins can
    work again with a GTK+3 build.
  - Add API to set local storage database path.
  - Further UA spoofing for Google Calendar, since it assumes
    Linux+WebKit means mobile (ugh).
  - Lots of bugfixes.

================
WebKitGTK+ 1.5.1
================

What's new in WebKitGTK+ 1.5.1?

  - The JSC library is now available independently. It's called
    "libjavascriptcoregtk", and it comes with its own pkg-config file.
  - New spellchecking APIs, useful to implement spellchecking features
    in the UAs.
  - New DOM methods to check if editable areas have been modified by
    the user (webkit_dom_html_{input,text_area}_is_edited).
  - Lots of improvements in the WebKit2GTK+ port.
  - Lots of bugfixes.

=================
WebKitGTK+ 1.3.13
=================

What's new in WebKitGTK+ 1.3.13?

In this release the GObject DOM Bindings contain a major change. Explicit
invocation of DOM objects' addEventListener methods has replaced the GObject
signal method of DOM event handling. For intance, where before a developer
would connect to the "click-event" signal, a developer must now call:
webkit_dom_event_target_add_event_listener. For a more illustrative example see:
http://trac.webkit.org/changeset/81486/trunk/Source/WebKit/gtk/tests/testdomdomwindow.c

Added API to control the IconDatabase and the cache database APIs.

WebKit bugs mostly relevant with the GTK+ port fixed since 1.3.12:

Bug 23526 - [CAIRO] Support ImageBuffers clip operation on all Cairo ports (Martin Robinson)
Bug 56180 - [GTK] JSC crashes in 32bit Release bots after r80743 (Martin Robinson)
Bug 56180 - [GTK] JSC crashes in 32bit Release bots after r80743 (Geoffrey Garen)
Bug 49649 - [GTK] On-demand event-listeners for DOM event signals (David Keijser)
Bug 56333 - [GTK] [WebKit2] The UIProcess never changes the mouse cursor (Martin Robinson)
Bug 55989 - [GTK] Possible leaks after splitting TextCheckerClientEnchant. (Ryuan Choi)
Bug 50497 - Add all web audio auto-generated files to GTK make system (Chris Rogers)
Bug 56180 - [GTK] JSC crashes in 32bit Release bots after r80743 (Sergio Villar Senin)
Bug 55932 - [GTK] close-web-view emitted on disposed WebView (Philippe Normand)
Bug 53098 - [GTK] Implement spin buttons for GTK+ 2.x (Martin Robinson)
Bug 56125 - [GTK] [Webkit2] There are no scrollbars visible in the MiniBrowser (Martin Robinson)
Bug 41903 - [GTK] plugins/return-negative-one-from-write.html crashes (Martin Robinson)
Bug 32510 - [GTK] provide an API to control the IconDatabase (Christian Dywan)
Bug 55868 - [GTK] Do not set juntion sides on scrollbar stepper buttons (Carlos Garcia Campos)
Bug 55866 - [GTK] Use doubles instead of integers for coordinates when rendering arrows (Carlos Garcia Campos)
Bug 55878 - [Gtk] toDataURL uses incorrect quality value when saving GdkPixbuf to buffer (Zan Dobersek)
Bug 55531 - [GTK] Windowless plugins override the view cursor (Martin Robinson)
Bug 55136 - Enable Copy Image Address context menu item in the Gtk port (Christian Dywan)
Bug 53960 - [GTK] DRT needs implementation of EventSender.scheduleAsynchronousClick (Carlos Garcia Campos)
Bug 55335 - [GTK] Extended application cache database API and added unit tests file. (Lukasz Slachciak)
Bug 53146 - [GTK] Combo boxes should emit object:selection-changed even when collapsed (Mario Sanchez Prada)
Bug 55473 - [GTK] Add support for external protocol handlers (Sergio Villar Senin)
Bug 53228 - [Gtk] Resource size is incorrectly reported to WebCore (Sergio Villar Senin)
Bug 48510 - [GTK] Implement WebContext and NativeKeyboardEvent classes for WebKit2 (Amruth Raj)
Bug 48509 - [GTK] Implement WebView and WebKitWebView classes for WebKit2 (Amruth Raj)
Bug 48510 - [GTK] Implement WebEventFactory, WebErrors classes for WebKit2 ( Amruth Raj)
Bug 54658 - [gtk] Failing collinear arcTo canvas tests (Zan Dobersek)
Bug 37769 - [Gtk] Flash item placed on wrong location right after load (Martin Robinson)
Bug 54981 - [GTK] position:fixed elements flicker while scrolling after r74196 (Martin Robinson)
Bug 56180 - [GTK] JSC crashes in 32bit Release bots after r80743 (Oliver Hunt)
Bug 56737 - [GTK] [Stable] AtkHypertext exposes wrong offsets for links placed inside <span> nodes (Mario Sanchez Prada)
Bug 56201 - WebKitIconDatabase may trigger crash in cairoImageSurfaceToGdkPixbuf (Christian Dywan)
Bug 56690 - Stop inserting when the parent is removed (Justin Schuh)

=================
WebKitGTK+ 1.3.12
=================

What's new in WebKitGTK+ 1.3.12?

  - Removed mandatory Enchant dependency.
  - Libsoup required version bumped to 2.33.6.
  - HTML5 media volume managment improvements.
  - Updated translations.
  - A11y bugfixes.
  - Many other bugfixes.


WebKit bugs mostly relevant with the GTK+ port fixed since 1.3.11:

Bug 42496 - Update Simplified Chinese (zh_CN) translation of WebKitGtk (Christian Dywan)
Bug 53771 - [GTK] fast/events/pagehide-timeout.html fails (Martin Robinson)
Bug 13343 - getComputedStyle returns wrong value for margin-right (Jarred Nicholls)
Bug 53797 - [GTK] WebKitWebFrame can return a stale frame name when calling webkit_web_frame_get_name (Martin Robinson)
Bug 52775 - WebKit2: add support for drag and drop on Windows (Enrica Casucci)
Bug 54312 - Allow controlling minimum DOMTimer interval on a per-page basis (Kenneth Russell)
Bug 54323 - [Freetype] Better map CSS font weight to Fontconfig font weight (Martin Robinson)
Bug 50237 - [Gtk] Implement layoutTestController.findString (Joone Hur)
Bug 53686 - Web Inspector: remove settings related methods from InspectorClient (Yury Semikhatsky)
Bug 53833 - [GTK] plugins/plugin-document-back-forward.html fails (Martin Robinson, Adam Barth)
Bug 54860 - [GTK] [REGRESSION] After r79130, spell tests did not work (Alejandro G. Castro)
Bug 54352 - [GTK] Match more various WebKit API enum values with WebCore enum values (Joone Hur)
Bug 54116 - [GTK] Add support in DRT to log "accessibility events" (Mario Sanchez Prada)
Bug 52836 - [GTK] Move scrollbar rendering out of gtk2drawing.c (Martin Robinson)
Bug 39022 - [GTK] Some test results are one pixel different between the x86_64 and i386 bots (Alejandro G. Castro)
Bug 54895 - [GTK] editing/pasteboard/dataTransfer-setData-getData.html fails (Martin Robinson, Alejandro G. Castro)
Bug 54389 - [GTK] http/tests/misc/generated-content-inside-table.html does not work in the bots (Alejandro G. Castro)
Bug 54410 - SVG animation doesn't support attribute value 'inherit' (Dirk Schulze)
Bug 54414 - [GTK] testwebdatasource test fails in the bots (Alejandro G. Castro)
Bug 52880 - [GTK] Implement PlatformKeyboardEvent::getCurrentModifierState() (Carlos Garcia Campos)
Bug 54418 - r78499 causes assertion failure in http/tests/xmlhttprequest/cache-override.html (Mario Sanchez Prada)
Bug 54427 - [Chromium] Rendering error of spin buttons on layers (Kent Tamura)
Bug 52384 - Plumb mixed script URL to FrameLoaderClient (Adam Langley)
Bug 53104 - Intermittent crash in fast/files/read-blob-async.html on the GTK+ debug bots (Jian Li)
Bug 54437 - Web Inspector: move rest of the tests off old harness. (Pavel Feldman)
Bug 54449 - notImplemented() should behave identical in WebCore and WebKit2 (Balazs Kelemen)
Bug 34482 - Please add Greek translation of WebkitGTK+ (Christian Dywan)
Bug 51379 - Convert <keygen> option elements to a shadow DOM (Dominic Cooney)
Bug 52919 - Stop instantiating legacy editing Positions in VisiblePosition (Levi Weintraub)
Bug 54458 - [Gtk] Cleanup in the canvas tests (Zan Dobersek)
Bug 53436 - [Gtk] atk_text_get_caret_offset fails for list items (Mario Sanchez Prada)
Bug 53962 - [GTK] EventSender.keyDown does not support non-array modifier arguments (Martin Robinson)
Bug 52417 - Add EditorClient callbacks to override isDOMPasteAllowed and javaScriptCanAccessClipboard (Ryosuke Niwa)
Bug 53954 - Move the sputnik test suite out of fast/js/ (James Robinson)
Bug 54470 - [GTK] svg/text/select-textLength-spacing-squeeze-1.svg crashes due to ASSERT failing (Mario Sanchez Prada)
Bug 54474 - Pixel tests differences on 10.6.6 32bit vs. 64bit (Nikolas Zimmermann)
Bug 53453 - [Gtk] atk_text_get_selection/atk_text_set_selection fails for list items (Mario Sanchez Prada)
Bug 54491 - [cairo][canvas] Drawing from/into float rectangles with width or height in range 0 to 1 fails (Zan Dobersek)
Bug 54495 - Crash in EventHandler::sendContextMenuEventForKey (Emil A Eklund)
Bug 53984 - Remove orphan code from old parser (Adam Barth)
Bug 3812 - XMLHttpRequest: PUT, DELETE, HEAD and all other methods but POST actually do a GET (Sergio Villar Senin)
Bug 53989 - svg/custom/use-multiple-on-nested-disallowed-font.html sometimes fails an assertion in StyleSelectorParentPusher (Mario Sanchez Prada)
Bug 50918 - [GStreamer] media/video-zoom-controls.html fails (Philippe Normand)
Bug 25831 - [GTK] events missing when a document is (re)loaded (Mario Sanchez Prada)
Bug 53992 - fast/loader/onload-willSendRequest-null-for-frame.html times out in GTK 32-bit debug bot (Mario Sanchez Prada)
Bug 53995 - editing/selection/end-of-document.html is failing in the GTK 64-bit debug bot (Mario Sanchez Prada)
Bug 34543 - [Gtk] Please add Hungarian translation (Christian Dywan)
Bug 44784 - [GTK] fast/history/history-subframe-with-name.html fails with GTK DRT (Martin Robinson)
Bug 54517 - Ensure loading has stopped in HistoryController::goToItem (Charlie Reis)
Bug 54011 - [GTK] Fix after r77874, m_isConnected is initialized before the socket is opened (Alejandro G. Castro)
Bug 54014 - [GTK] Incorrect assertion in WorkQueueGtk, we need to register more than one handle (Alejandro G. Castro)
Bug 54015 - [GTK] Avoid WebProcessMain compilation, we are used a gtk specific main (Alejandro G. Castro)
Bug 39168 - Canvas: 2d.fillStyle.parse.system.html fails (Andreas Kling)
Bug 52997 - [GTK] DRT's TextInputController is unimplemented on GTK (Carlos Garcia Campos)
Bug 49414 - Implement ECMAScript I18N APIs (proposed) (Nebojsa Ciric)
Bug 54537 - [Gtk] Add support for layoutTestController.setWillSendRequestClearHeader (Sergio Villar Senin)
Bug 54033 - [GTK] DRT needs an implementation of LayoutTestController.setIconDatabaseEnabled (Martin Robinson)
Bug 54035 - [GTK] Remove the last remnants of the Mozilla theme drawing code (Martin Robinson)
Bug 53529 - [fileapi] Add support for filesystem: URI handling (Adam Klein)
Bug 54557 - [GTK] libsoup critical warnings (Philippe Normand)
Bug 54057 - [GTK] Build break with 2.18.3 (Ryuan Choi)
Bug 50489 - Move DocumentWriter to DocumentLoader (Nate Chapin)
Bug 53898 - Add built-in decoder for UTF-8 for improved performance (Darin Adler)
Bug 54078 - [GTK] Add WebGraphicsContext stub to the compilation (Alejandro G. Castro)
Bug 54080 - [GTK] Implement UpdateChunk, ChunkedUpdateDrawingArea/Proxy classes for WebKit2 (Chandra Vallala  <chandra.vallala@motorola.com> and Alejandro G. Castro)
Bug 54081 - [GTK] Implement WKBaseGtk API for Webkit2 (Chandra Vallala  <chandra.vallala@motorola.com> and Alejandro G. Castro)
Bug 54600 - [PATCH] GTK documentation fails to build due to changed paths (Robert Ancell)
Bug 42833 - Brazilian Portuguese Translation Update (Christian Dywan)
Bug 50518 - [GTK] media/controls-without-preload.html is flacky on 32-bits Debug (Philippe Normand)
Bug 54106 - frames/flattening/iframe-flattening-crash.html fails on GTK. (Yael Aharon)
Bug 54622 - Rename Position::node() to Position::deprecatedNode() (Ryosuke Niwa)
Bug 54626 - [GTK] accessibility/canvas-fallback-content.html is failing on GTK bots (Mario Sanchez Prada)
Bug 54627 - [GStreamer] URI queries support in webkitwebsrc (Andoni Morales Alastruey)
Bug 54628 - [GStreamer] Add 'location' property in webkitwebsrc (Andoni Morales Alastruey)
Bug 54117 - Replace static_cast<HTMLElement*> with toHTMLElement (Yael Aharon)
Bug 54631 - [GTK] media/video-controls-in-media-document.html potentially flaky (Philippe Normand)
Bug 53991 - fast/frames/sandboxed-iframe-storage.html is flaky (Mario Sanchez Prada)
Bug 54637 - [GTK] media/video-display-toggle.html is flaky on debug bots (Philippe Normand)
Bug 44400 - Attached is the Bulgarian translation of WebKit Gtk (Christian Dywan)
Bug 30580 - [GTK] Failing canvas security tests (Sergio Villar Senin)
Bug 46455 - [l10n] Indonesian translation (Christian Dywan)
Bug 52090 - [Soup] ResourceHandleSoup does not ever call didSendData for file uploads (Martin Robinson)
Bug 54140 - [GStreamer] Video player sets system volume to 100% (Philippe Normand)
Bug 48510 - [GTK] Implement WebEventFactory, WebErrors classes for WebKit2 (Amruth Raj  <amruthraj@motorola.com> and Ravi Phaneendra Kasibhatla)
Bug 54592 - [GTK] r78718 introduced some assertion failures in some HTTP tests (Martin Robinson)
Bug 51587 - [GTK] Remove mandatory Enchant dependency (Ryuan Choi)
Bug 53125 - [GTK] LayoutTests/media/audio-mpeg4-supported.html fails (Philippe Normand)
Bug 54157 - [GTK] Default error page is interfering with tests which require failed loads (Martin Robinson)
Bug 51602 - [GStreamer] wrong media duration report in media/controls-after-reload.html (Philippe Normand)
Bug 53146 - [GTK] Combo boxes should emit object:selection-changed even when collapsed (Philippe Normand, Mario Sanchez Prada)
Bug 53487 - [Gtk] No need to set text encoding in the provisional phase (Joone Hur)
Bug 53667 - [GTK] fast/history/timed-refresh-in-cached-frame.html fails after r77355 (Philippe Normand)
Bug 54185 - [GTK] Reset GTK' DRT's AccessibilityController to consistent value before every test (Mario Sanchez Prada)
Bug 53680 - [GTK] fast/frames/sandboxed-iframe-scripting.html is flaky (Philippe Normand)
Bug 53169 - Web Inspector: move InspectorController's methods from InspectorAgent to InspectorController (Ilya Tikhonovsky)
Bug 53683 - [GTK] Flaky websocket tests on 32-bits Release (Philippe Normand)
Bug 54198 - [GTK] Log signals from AtkDocument interface also in AccessibilityController (Mario Sanchez Prada)
Bug 36340 - Arabic translation (Christian Dywan)
Bug 54210 - [GTK] fast/text/atsui* tests failing on 32-bit Debug (Philippe Normand)
Bug 54212 - [GTK] fast/text/international/hindi-whitespace.html fails (Philippe Normand)
Bug 50126 - Fallback content in canvas element not focusable (Dominic Mazzoni)
Bug 53716 - JSC::Bindings m_rootObject->isValid() assert fails when running layout tests (Michael Saboff, Martin Robinson)
Bug 54231 - [GDOM] Video element needs proper wrapping (Gustavo Noronha Silva)
Bug 53213 - Refactoring: Extract TextCheckerClient from EditorClient (MORITA Hajime)
Bug 54244 - Convert the line box tree to floating point and eliminate font rounding hacks (David Hyatt)
Bug 53733 - Timers can fire after a frame has been put into the page cache (Sergio Villar Senin)
Bug 46567 - [l10n] Polish translation of WebKitGTK+ (Christian Dywan)
Bug 54260 - HTML5 <details> and <summary>: localized text (Luiz Agostini)
Bug 53673 - [GTK] fast/files/workers/worker-read-blob-async.html is flaky (Philippe Normand)
Bug 26108 - French translation for Webkit/GTK (Christian Dywan)
Bug 53247 - [GTK] media/audio-delete-while-slider-thumb-clicked.html is flaky (Philippe Normand)



=================
WebKitGTK+ 1.3.11
=================

What's new in WebKitGTK+ 1.3.11?

  - Add a beginDragWithFiles implementation for the GTK+ event sender.
  - ResourceHandleSoup do not wait for streams to close to issue
    didFinishLoading.
  - Move the request/cache code to libsoup.
  - A11y bugfixes.
  - Many other bugfixes.

=================
WebKitGTK+ 1.3.10
=================

What's new in WebKitGTK+ 1.3.10?

  - Port form control theming code to GtkStyleContext.
  - Add a new 'make jsc' target to build only JavaScriptCore and the jsc binary.
  - Initial support for drag-and-drop file uploads.
  - WOFF font face support.
  - Many other bugfixes.

================
WebKitGTK+ 1.3.9
================

What's new in WebKitGTK+ 1.3.9?

  - Compilation fixes for the final GTK+ 2.91.7 release.

================
WebKitGTK+ 1.3.8
================

What's new in WebKitGTK+ 1.3.8?

  - New WebKitWebPluginDatabase and WebKitWebPlugin classes for plugin
    management.
  - The usual fixes for GTK+ 3.x API changes. We are still using the
    old GtkStyle APIs, that should be gone by the next release.
  - Add support for Mozilla-style JS fullscreen API.
  - Add support for the viewport metatag.
  - Many other bugfixes.

================
WebKitGTK+ 1.3.7
================

What's new in WebKitGTK+ 1.3.7?

  - Fix error pages template's not being filled properly.
  - Fix context menu activation through keyboard.
  - Add automatic garbage collection for most GObject DOM objects (all
    those that are actually in the DOM tree). This gets rid of most of
    the leaks when using the bindings.
  - Add an Inspector API to inspect a DOM node.
  - Tons of a11y bugfixes.
  - Tons of fixes for the in-tree SoupCache, should work much better
    now.
  - Many other bugfixes.

================
WebKitGTK+ 1.3.6
================

What's new in WebKitGTK+ 1.3.6?

  - Update to compile with GTK+ 3.x 2.91.4.
  - Many, many other bugfixes.

================
WebKitGTK+ 1.3.5
================

What's new in WebKitGTK+ 1.3.5?

  - Add a HTTP cache implementation. This will be eventually
    integrated in libsoup itself, but for now it can be accessed from
    WebKit through the WebKitSoupCache APIs.
  - Updated to work with GTK+ 3.x 2.91.1.
  - Add frame-flattening support, used by some mobile browser sto
    merge all frames in a page into a continuous view.
  - Many other bugfixes.

================
WebKitGTK+ 1.3.4
================

What's new in WebKitGTK+ 1.3.4?

  - File reader/writer APIs are now enabled.
  - The javascript JIT is now enabled by default on ARM.
  - Clipboard data is no longer lost when the process exists.
  - Image DnD support.
  - GSettings support to save/restore Web Inspector settings.
  - Add WebSocket support, now enabled by default.
  - Added WebKitWebView::frame-created signal, emitted when a frame
    other than the main frame is created in a view.
  - Added WebKitWebView::view-mode, holding information about how the
    view is being presented. See the property documentation and
    http://www.w3.org/TR/view-mode/ for details.
  - Fullscreen support for HTML5 media player.
  - Identify as WebKit/Safari in Google domains when
    enable-site-specific-quirks is activated. Otherwise we'll get a
    degraded user experience due to their poor UA detection
    algorihtms.
  - Added simple media playback options in the context menu for the
    media elements.
  - Update (and require) to work with gobjet-introspection 0.9.5.
  - Updated to work with GTK+ 3.x 2.90.7 when in GTK+ 3.x mode.
  - Make --disable-jit actually work.
  - Add --enable-opcode-stats configure flag. When enabled, statistics
    about opcode generation will be printed by JSC.
  - Many a11y fixes, particularly in the AtkText interface.
  - CSS box shadows render much faster in many cases.
  - Many other bugfixes.

================
WebKitGTK+ 1.3.3
================

What's new in WebKitGTK+ 1.3.3?

  - Fixes to compile with latest GTK+ 2.90.x.
  - Add support for dropping content in WebKitWebViews.
  - Many other bugfixes.

================
WebKitGTK+ 1.3.2
================

What's new in WebKitGTK+ 1.3.2?

*** This release is an ABI break ***

The library has been renamed to libwebkitgtk, so you'll need to
recompile your applications when upgrading to 1.3.2.

  - Add support for GTK+ 3.x. A new configure flag, --with-gtk, has
    been added, which allows to control which GTK+ version you want to
    build against. The default value is '2.0', for GTK+ 2.x
    support. With '3.0' the library will be compiled against GTK+ 3.x
    (2.90.4 or newer required). In the 3.x mode the .pc file has been
    renamed from webkit-X.X.pc to webkitgtk-X.X.pc, so you'll need to
    update your autotools setup accordingly.
  - Many fixes for the DOM bindings, including support to dispatch
    events to any Node through webkit_event_target_dispatch_event.
  - Added a 'inner-node' property to WebKitHitTestResult, carrying the
    DOM node where the hit test happened.
  - Many DnD fixes, including a fix for the infamous hang-of-death
    while dragging the mouse.
  - Support for <input type="range">.
  - Many other bugfixes.

================
WebKitGTK+ 1.3.1
================

What's new in WebKitGTK+ 1.3.1?

  - Initial support for GObject DOM bindings. Present in this release
    is a substantial subset of the basic DOM APIs (Document, HTML
    elements, Node, etc) including access to the DOM events through
    GObject signals. Keep in mind that all the APIs are still
    unstable, and will probably be subject to changes before the next
    stable release.
  - Add webkit_web_back_forward_list_clear, to completely clear the
    BackForward list.
  - Lots of improvements in DOM clipboard and drag-drop access.
  - Add support for GTK+ key themes.
  - Significant improvements in a11y, including improved role support
    and many bugfixes.

=================
WebKitGTK+ 1.1.90
=================

What's new in WebKitGTK+ 1.1.90?

  - Display server side messages during HTTP auth, since they
    sometimes contain important information for the authentication
    process.
  - Reduce creation time for WebKitWebView widgets by reusing
    dictionary structs used for spell-checking instead of creating a
    new one for each instance.
  - Implement WebKitWebView::geolocation-policy-decision-requested,
    emitted when a frame inside the WebView wants to get its position
    through geolocation.
  - Add WebKitWebSettings::enable-spatial-navigation to control
    whether Spatial Navigation is enabled or not. Spatial Navigation
    allows the user to move through the elements in a page using only
    the keyboard; this is similar to caret browsing, but with less
    focus on accessibility since instead of presenting the exact
    layout of the page to the user a more "logical" way of browsing
    through its contents is allowed. A specification of this feature
    can be seen at
    http://www.w3.org/TR/WICD/#current-focus-point-algorithm
  - Add a new build option, --enable-fast-mobile-scrolling. At the
    moment this only disables fixed backgrounds when there are no
    other fixed elements in a page, since they generally make
    scrolling very slow and thus are a big burden in some mobile
    environments.
  - GTK+ Input Method support has received a big overhaul, and most of
    them should work pretty well now.
  - All known redraw issues in the plugin support (especially with the
    Java plugin) have been fixed.
  - Various fixes to the MediaPlayer code to improve responsiveness
    and avoid lagging on position reporting.
  - Lots of bugfixes and other improvements.

=================
WebKitGTK+ 1.1.22
=================

What's new in WebKitGTK+ 1.1.22?

  - Preliminary support for Java plugins. Basic functionality is
    there, but there are still a few rough edges. Also newly
    introduced is a new WebKitWebSetting, 'enable-java-applet', which
    controls whether WebKit will recognize the non-standard <applet>
    tag.
  - Add WebKitWebSettings::auto-resize-window; when enabled, WebKit
    will act upon the DOM methods that change the size and/or position
    of the window containing a WebView (window.{moveTo, resizeTo,
    moveBy, resizeBy}).
  - Add WebKitWebSettings::enable-file-access-from-file-uris; when
    enabled, each file:// URI will be assigned its own security
    domain.
  - Lots of bugfixes, especially in the PageCache support.

=================
WebKitGTK+ 1.1.21
=================

What's new in WebKitGTK+ 1.1.21?

  - New custom-made GStreamer source element that uses the WebCore
    network layer to download media data; this makes sure any headers
    and cookies will automatically get added when making requests.
  - WebKit will now let libsoup know who the first party for a given
    message is, making it possible to implement accept/deny policies in
    Soup.
  - The usual stream of fixes, and improvements

=================
WebKitGTK+ 1.1.20
=================

What's new in WebKitGTK+ 1.1.20?

  - Fixes to the HTML5 Media Player infrastructure to satisfy sites
    that require cookies, and Referer to be sent; this makes
    WebKitGTK+ able to support the new HTML5 support added to Youtube,
    and Vimeo, for instance.
  - Windowless plugin support is finally here, making it possible to
    get plugins to behave on various web pages.
  - The usual stream of fixes, and improvements

=================
WebKitGTK+ 1.1.19
=================

What's new in WebKitGTK+ 1.1.19?

  - Improvements to AtkText implementation
  - RGBA colormap support has been added
  - Improvements to the HTML5 media player
  - Crashes related to clipboard handling, which were hitting many
    users and seemed to be random have been fixed

=================
WebKitGTK+ 1.1.18
=================

What's new in WebKitGTK+ 1.1.18?

  - Add methods to set and get a cache model in WebKitGTK+. We offer
    two possibilites: document viewer (no caches are used) and browser
    (similar to the previous defaults).
  - Add WebKitWebSettings::enable-page-cache. Controls whether the
    Page Cache is enabled or not. For details about what the page
    cache is and does see
    http://webkit.org/blog/427/webkit-page-cache-i-the-basics/
    The page cache is disabled by default, since the gtk+ port still
    presents some small bugs when it's enabled.
  - Add WebKitWebSettings::enable-site-specific-quirks. Controls
    whether a series of page-specific workarounds are used by WebKit.
  - Use Content-Encoding support available in libsoup 2.28.2 and
    newer.
  - Add WebKitWebSettings::enable-default-context-menu. Controls
    whether webkitgtk+ will show a default context menu on right click
    in the view. Note that even with the property set to FALSE right
    clicks can be handled by the page, either by actions or by
    ad-hoc in-page context menus.
  - Make the WebKitWebView::icon-loaded signal carry a string with the
    favicon's URI. This is an API break, but the signal already had a
    broken signature and was useless anyway, so it's extremely
    unlikely that anybody was using it. Also, add the 'icon-uri'
    property to the view, holding the URI for its current favicon.
  - Respect Content-Disposition header in downloads (fixes downloads
    in gmail).
  - Various accessibility improvements.
  - Many bugfixes.

=================
WebKitGTK+ 1.1.17
=================

What's new in WebKitGTK+ 1.1.17?

  - New APIs to show and close the web inspector and to inspect an
    element at the given coordinates.
  - New property, WebKitWebSettings::tab-key-cycles-through-elements,
    controls whether TAB is simply interpreted as another keystroke or
    is used to cycle through the elements in a page.
  - Many a11y improvements.
  - The usual amount of random bugfixes.

=================
WebKitGTK+ 1.1.16
=================

What's new in WebKitGTK+ 1.1.16?

  - Add optional support to generate the gobject-introspection
    gir/typelib files. Enable with --enable-introspection, it's off by
    default.
  - Add a new load status value, WEBKIT_LOAD_FAILED, emitted when
    there's an error during the load process. This is the natural
    companion to WEBKIT_LOAD_FINISHED, which is only emitted when the
    load finished succesfuly.
  - Ensure that keyboard events filtered by GtkIMContext still create
    the proper DOM events.
  - Many a11y improvements: caret browsing fixes, expose heading
    levels, more accessible roles supported, more work in correctly
    showing the element's ancestry list, improved support for lists,
    etc.
  - Many improvements to our media support.
  - Add a new setting to control DOM pastes
    (document.execCommand("Paste"))
  - Many, many bugfixes all over the place.

=================
WebKitGTK+ 1.1.15
=================

What's new in WebKitGTK+ 1.1.15?

  - New API to get the subresources from a WebKitWebDataSource. This
    provides a way of accessing all the resources that compose the
    view to which the data source is attached.
  - A new function, webkit_web_view_get_hit_test_result, which allows
    to do a 'hit test' on the coordinates specified by a mouse
    event. A hit test provides context information about that point in
    the document, like whether it's an image, a link, an input box,
    etc.
  - Our DumpRenderTree implementation now supports eventSender, which
    allows us to run many more LayoutTests and make WebKitGTK+ more
    stable and feature-complete.
  - JSNES runs 6x faster: http://trac.webkit.org/changeset/48573
  - The usual small improvements and bugfixes.

=================
WebKitGTK+ 1.1.14
=================

What's new in WebKitGTK+ 1.1.14?

  - New API has been added to WebKitWebFrame to allow applying
    scrollbars policy as requested by web applications to the main
    frame; if the parent of the WebKitWebView widget is a
    GtkScrolledWindow, policy is applied by the default handler.
  - A new API has been added to help dealing with the various
    resources that are downloaded to compose the final rendering; you
    can now obtain the source code for a page that is loaded, for
    instance.
  - A new property has been added to WebKitWebView to allow setting it
    to "View Source" mode.
  - HTML5 database has gained API to manage the individual databases,
    including usage and quota.
  - A new signal `resource-request-starting' has been added to the
    WebKitWebView to allow modification of outgoing requests for every
    resource.
  - Connection limit has been increased to 60 total connections, 6
    per-host, matching other browsers more closely; this seems to have
    improved loading time of some sites.
  - Undo/redo support has been added to editable texts.
  - The usual stream of small improvements and bug fixes.

=================
WebKitGTK+ 1.1.13
=================

What's new in WebKitGTK+ 1.1.13?

  - GNOME Keyring support was removed in favor of the new Password
    Manager soup feature; to get exactly the same behavior,
    applications should use SoupPasswordManagerGNOME. This requires
    libsoup 2.27.91 or newer.
  - Several accessibility improvements, including support for testing
    the a11y infrastructure in our layout tests.
  - You can now enable/disable HTML5 offline application cache using a
    new setting added to WebKitWebSettings.
  - Drag support has landed, meaning you can start playing with HTML5
    drag and drop support; drop support is still missing.
  - A crash with scripts closing windows has been fixed.
  - Image cursors support has been added.
  - The usual stream of small improvements and bug fixes.

=================
WebKitGTK+ 1.1.12
=================

What's new in WebKitGTK+ 1.1.12?

  - Fix WebKitSoupAuthDialog to only save passwords in gnome-keyring
    (if enabled) when authentication succeeds.
  - Implement a proper size_request method for WebKitWebView. The
    widget will request the size of the whole page as its size
    requisition.
  - Many a11y improvements.
  - The usual amount of other misc fixes.
  - WEBKIT_DEBUG variable now accepts channel names in any case
    again.

=================
WebKitGTK+ 1.1.11
=================

What's new in WebKitGTK+ 1.1.11?

  - WebKit has got a new feature - a XSS auditor, that should improve
    security; this feature is still experimental, and disabled by
    default, but applications can enable it using the setting.
  - The hackish content sniffing code that was beig used to avoid
    pages requesting downloads instead of displaying content has been
    replaced by usage of a new Soup feature, which implements proper
    content sniffing.
  - More accessibility work, including fixes for problems which were
    critical for a possible GNOME 2.28 release.
  - Pasting rich text from other browsers should now work as expected.
  - The usual amount of misc fixes.

=================
WebKitGTK+ 1.1.10
=================

What's new in WebKitGTK+ 1.1.10?

  - WebKitNetworkRequest has now GObject properties for its URI and
    the SoupMessage that backs it up.
  - Fix AtkText methods get_selection and get_n_selections to not use
    the global selection but only the selection that belongs to the
    object being used.
  - Fix a crasher when emitting the a11y signal 'text-caret-moved' in
    some situations with debug builds.

================
WebKitGTK+ 1.1.9
================

What's new in WebKitGTK+ 1.1.9?

  - Scrolling once again received a lot of love, and many subtle
    problems and bugs were killed, and we now get correct behavior in
    acid2; a number of smaller improvements are in the queue.
  - Accessibility keeps gaining better support. On this release a lot
    of work was done on the AtkText interface implementation.
  - WebKitNetworkRequest now carries with it all the information
    regarding the request, not only the URI. This means you will no
    longer miss headers such as Referer when passing NetworkRequest
    objects from a callback to webkit_web_frame_load_request.

================
WebKitGTK+ 1.1.8
================

What's new in WebKitGTK+ 1.1.8?

  - We found out that WebKitWebHistoryItems were being kept with a
    reference count of 2 instead of 1 as they should; nobody should be
    relying on that, but if you hit reference counting problems with
    items you were creating yourself, this is for you.
  - You can now copy images from the web page to the clipboard.
  - Improvements were made to the Plugin handling code.
  - Scroll events will now be correctly reported to web applications.
  - You can now embed arbitrary widgets as if it was a plugin, with
    the new "create-plugin-widget" signal.
  - The atk_text_get_text_{at,after,before}_offset methods are now
    implemented for all boundary types except LINE_AFTER and
    LINE_BEFORE.
  - The usual stream of minor fixes and improvements, as always.

================
WebKitGTK+ 1.1.7
================

What's new in WebKitGTK+ 1.1.7?

  - This release includes a security fix:
    SVGList::insertItemBefore would not perform a bounds check on the
    index it was provided, potentially leading to a buffer overflow.
  - New frame loading properties supersede various load-* signals, and
    are also accessible in the WebView, for convenience, making this
    API saner.
  - JIT is now supported for X86-64 on Linux, and enabled by default!
  - A regression on webkit_web_view_load_string has been fixed, making
    it work correctly again when the document uses encodings which may
    use more than 1 byte per character.
  - Yet more work has been done to the ATK support, caret browsing
    support improvements in particular.
  - Filenames suggested by the Download functionality now correctly
    use the filename given by the host, if available.
  - Build fixes for IA64, and AMD64
  - gtk-doc support has also improved, and you should now be able to
    cd WebKit/gtk/docs and type make docs, if you --enable-gtk-doc on
    configure, as long as you build  with srcdir == builddir.
  - More crashes and other bugs fixed, and small improvements made
    under the hood.

================
WebKitGTK+ 1.1.6
================

What's new in WebKitGTK+ 1.1.6?

  - Several ATK support additions and fixes got landed, with many
    roles being now implemented, providing better accessibility.
  - Caret browsing is now available.
  - Spelling check has been implemented using Enchant; the API is
    still lacking, and some of the functionality still needs to be
    improved, though.
  - Error reporting is now available, with default error pages, and
    API that allows the application to override the default behavior;
    localization of those pages is still not supported, but planned.
  - More crashes and other bugs fixed.

================
WebKitGTK+ 1.1.5
================

What's new in WebKitGTK+ 1.1.5?

  - Added gtk-doc support to the build system. It is not fully
    integrated yet, so some manual tweaking is still needed.
  - Minimum required GTK+ version is now 2.10.
  - Added l10n support with gettext. Translations are stored in
    WebKit/gtk/po/.
  - Many improvements to the ATK support. It's good enough to provide
    a basic user experience with Accerciser now, but we'll keep
    improving it in further releases.
  - New printing API that allows applications to control and monitor
    the printing process, when requested by javascript or started by
    the user.
  - Many bugfixes.

================
WebKitGTK+ 1.1.4
================

What's new in WebKitGTK+ 1.1.4?

  - WebKitWebView gained uri and title properties, deprecating the
    usage of the title-changed signal.
  - Basic functionality for HTML5 media tags has been achieved; there
    are many unimplented methods, and rough edges still, though.
  - Font rendering received quite some love, with layouting, and
    memory handling fixes, and at least one less crash.
  - A new signal, new-window-policy-decision-requested, has been added
    to WebKitWebView, that makes it possible for the application to
    correctly decide what to do when new windows are requested.
  - A bug that made tooltips for consecutive links not update their
    location was fixed.
  - Several improvements were made to the HTTP backend, including
    making it more robust when talking to servers which send bad
    Content-Type headers.
  - WebKitWebView now uses the GtkBinding system to handle key events,
    which means that the user is now able to customize the keys used
    for various operations, and that many subtle bugs have been fixed.

================
WebKitGTK+ 1.1.3
================

The 1.1.3 release was just a quick bug fix release, because we made a
mistake in library versioning.

================
WebKitGTK+ 1.1.2
================

What's new in WebKitGTK+ 1.1.2?

  - Added support for downloads: a new signal, 'download-requested',
    will be emitted by WebKit when a dowload is requested. On top of
    that, the download process has been encapsulated in a new object,
    WebKitDownload, which allows the user to control it or to start
    new downloads from the client side.
  - Added webkit_web_view_get_encoding to get the automatic encoding
    of the current page.
  - Added GObject properties for 'encoding' and 'custom-encoding'.
  - Added 'javascript-profiling-enabled' property to the WebInspector,
    which allows to enable and disable the profiling functionality.
  - Added API to create and add history items to WebKit's history.
  - Improved debugging support with WEBKIT_DEBUG environment
    variable. Most of the settings will only give useful output for
    debug builds, but WEBKIT_DEBUG=Network will log all HTTP traffic
    form libsoup to console. See WebCore/platform/gtk/LoggingGtk.cpp
    for all the options available.
  - Lots of bugfixes.

================
WebKitGTK+ 1.1.1
================

What's new in WebKitGTK+ 1.1.1?

  - ABI compatibility with 1.0.3 was broken, so you will need to
    recompile your application against 1.1.1
  - Support for the CURL backend was dropped, libsoup is the only HTTP
    backend now.
  - webkit_get_default_session, to get the SoupSession used internally
    by WebKit.
  - 'create-web-view' signal, emitted when the creation of a new
    window is requested.
  - 'navigation-policy-decision-requested' signal, emitted when a
    navigation to another page is requested.
  - 'mime-type-policy-decision-requested' signal, emitted each time
    WebKit is about to show a URI with a given MIME type.
  - Support for the Web Inspector
    (see http://webkit.org/blog/197/web-inspector-redesign/)
  - HTTP authentication support, with optional gnome-keyring storage.
  - New load functions: webkit_web_view_open, webkit_web_view_load_uri
    and webkit_web_view_load_request. The old
    webkit_web_view_load_string and webkit_web_view_load_html_string
    are now deprecated.
  - webkit_web_view_reload_bypass_cache
  - webkit_web_view_{get,set}_custom_encoding, to override the
    encoding of the current page.
  - Improved stability and lots of bugfixes.

