=================
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.

