2013-05-15  Patrick Gansterer  <paroga@webkit.org>

        Consolidate lists in WTF CMake files
        https://bugs.webkit.org/show_bug.cgi?id=116142

        Reviewed by Martin Robinson.

        Move common files into the CMakeLists.txt to avoid duplicating the list of files.
        Also rebase the recently added GTK files to match the other CMake ports, since
        the submitted patch was based on an older version of the source tree.

        * Source/cmake/OptionsGTK.cmake:

2013-05-14  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Move generated ColorData.cpp, WebKitFontFamilyNames.(cpp|h) build targets into libPlatform
        https://bugs.webkit.org/show_bug.cgi?id=115921

        Reviewed by Gustavo Noronha Silva.

        * GNUmakefile.am: Add GENSOURCES_PLATFORM, platform_built_sources variables.

2013-05-11  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Add a basic cmake build for WTF and JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=115967

        Reviewed by Laszlo Gombos.

        * CMakeLists.txt: Add GTK+ to the list of ports.
        * Source/CMakeLists.txt: We do not try to build WebCoreTestSupport when WebCore is disabled.
        * Source/cmake/FindGAIL3.cmake: Added.
        * Source/cmake/FindGDK3.cmake: Added.
        * Source/cmake/FindGStreamer.cmake: Use the passed in minimum version.
        * Source/cmake/FindGTK3.cmake: Added.
        * Source/cmake/FindXt.cmake: Added.
        * Source/cmake/OptionsEfl.cmake: Pass in the minimum version.
        * Source/cmake/OptionsGTK.cmake: Added.

2013-05-11  Martin Robinson  <mrobinson@igalia.com>

        Move defines to platform

        [GTK] Move defines that will never be configured to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=115965

        Reviewed by Andreas Kling.

        * Source/autotools/SetupAutoconfHeader.m4: Move some unchanging defines to Platform.h.

2013-05-09  Christophe Dumez  <ch.dumez@sisa.samsung.com>

        Add support for [NoInterfaceObject] Web IDL extended attribute
        https://bugs.webkit.org/show_bug.cgi?id=115714

        Reviewed by Kentaro Hara.

        Update GENERATE_BINDINGS macro to take an additional _window_constructors_file
        optional argument.

        * Source/cmake/WebKitMacros.cmake:

2013-05-08  José Dapena Paz  <jdapena@igalia.com> and Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Plumb the Automake build system for the Battery Status API feature
        https://bugs.webkit.org/show_bug.cgi?id=115718

        Reviewed by Martin Robinson.

        * Source/autotools/FindDependencies.m4: Check for the upower-glib dependency if the feature is enabled.
        * Source/autotools/PrintBuildConfiguration.m4: Print out the feature status.
        * Source/autotools/ReadCommandLineArguments.m4: Check for the --enable-battery-status option. The deafult,
        when the option is not given, is to disable the feature.
        * Source/autotools/SetupWebKitFeatures.m4: Treat the ENABLE_BATTERY_STATUS define as configurable.
        * Source/autotools/symbols.filter: Export a couple of symbols that are used in the WebCore internals library.

2013-05-08  Zan Dobersek  <zdobersek@igalia.com>

        [Automake] Pass --no-demangle to the linker by default to get the mangled symbols
        https://bugs.webkit.org/show_bug.cgi?id=115732

        Reviewed by Gustavo Noronha Silva.

        * GNUmakefile.am: Pass the --no-demangle option to the linker by default. This is done by appending
        the flag to the LDFLAGS variable. While the AM_LDFLAGS variable would be more appropriate, it's not
        at all used when linking installable libraries like libwebkitgtk and libwebkit2gtk, so the LDFLAGS
        variable is used instead.

2013-05-07  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CMAKE] Remove SHADOW_DOM from cmakeconfig.h.cmake
        https://bugs.webkit.org/show_bug.cgi?id=115712

        Reviewed by Andreas Kling.

        Nobody uses SHADOW_DOM in cmake.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-05-06  Mike Lattanzio  <mlattanzio@blackberry.com>

        [BlackBerry] Enable and Expose Text Autosizing through BlackBerry::WebKit::WebSettings
        https://bugs.webkit.org/show_bug.cgi?id=113808

        Reviewed by Rob Buis.

        Set the ENABLE_TEXT_AUTOSIZING default to ON for BlackBerry.

        * Source/cmake/OptionsBlackBerry.cmake:

2013-05-06  Christophe Dumez  <ch.dumez@sisa.samsung.com>

        [EFL] Shadow DOM should be disabled at compile time
        https://bugs.webkit.org/show_bug.cgi?id=115635

        Reviewed by Andreas Kling.

        Disable Shadow DOM at compile time for EFL port. Shadow DOM code
        is being removed from the tree.

        * Source/cmake/OptionsEfl.cmake:

2013-05-04  Dean Jackson  <dino@apple.com>

        Animations and Transitions should not start when globally suspended
        https://bugs.webkit.org/show_bug.cgi?id=114915

        Reviewed by Sam Weinig.

        Export AnimationController::isSuspended().

        * Source/autotools/symbols.filter:

2013-05-01  Benjamin Poulain  <benjamin@webkit.org>

        Remove the remaining wscript
        https://bugs.webkit.org/show_bug.cgi?id=115459

        Reviewed by Andreas Kling.

        * wscript: Removed.

2013-05-01  Sergio Villar Senin  <svillar@igalia.com>

        Show a block cursor in overtype mode
        https://bugs.webkit.org/show_bug.cgi?id=114819

        Reviewed by Ryosuke Niwa.

        * Source/autotools/symbols.filter: export some extra symbols for
        testing purposes.

2013-04-30  Christophe Dumez  <ch.dumez@sisa.samsung.com>

        [EFL] Enable scaled cursors
        https://bugs.webkit.org/show_bug.cgi?id=106242

        Reviewed by Gyuyoung Kim.

        Enable MOUSE_CURSOR_SCALE flag for EFL port.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2013-04-29  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Disable Shadow DOM feature
        https://bugs.webkit.org/show_bug.cgi?id=115374

        Reviewed by Martin Robinson.

        Disable the Shadow DOM feature on the GTK port, the feature is planned for removal.

        * Source/autotools/SetupWebKitFeatures.m4:

2013-04-28  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][CMAKE] Build break after r149259
        https://bugs.webkit.org/show_bug.cgi?id=115339

        Reviewed by Gyuyoung Kim.

        r149259 used c++11 features(Right angle bracket, Range-based for-loop).
        This patch enforces c++0x when cmake based ports build WebKit2 using gcc.

        * Source/cmake/WebKitHelpers.cmake:

2013-04-22  Benjamin Poulain  <benjamin@webkit.org>

        Remove the memory instrumentation code
        https://bugs.webkit.org/show_bug.cgi?id=114931

        Reviewed by Andreas Kling.

        * Source/autotools/symbols.filter:

2013-04-22  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Enable introspection always for developer builds
        https://bugs.webkit.org/show_bug.cgi?id=114983

        Reviewed by Gustavo Noronha Silva.

        * Source/autotools/SetupAutoconfHeader.m4: No longer expose the ENABLE_INTROSPECTION
        autoconf header variable. It isn't used and it means that when introspection is enabled
        or disabled, there is an unnecessary full rebuild.

2013-04-22  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Set up libPlatform.la
        https://bugs.webkit.org/show_bug.cgi?id=114168

        Reviewed by Martin Robinson.

        * GNUmakefile.am: Define the platform_cppflags and platform_sources variables.

2013-04-20  Zan Dobersek  <zdobersek@igalia.com>

        Enable sub-pixel layout for the GTK port
        https://bugs.webkit.org/show_bug.cgi?id=94792

        Reviewed by Martin Robinson.

        * Source/autotools/SetupWebKitFeatures.m4: Enable the subpixel layout.

2013-04-20  Andras Becsi  <andras.becsi@digia.com>

        [Qt][Mac] Remove obsolete workaround for debug builds
        https://bugs.webkit.org/show_bug.cgi?id=114750

        Reviewed by Jocelyn Turcotte.

        This workaround made default builds fail with recent Qt5 because
        it removed the major version number from the library name, producing
        QtWebKitWidgets, whereas the linking command line tried to link
        against Qt5WebKitWidgets.
        Debug builds are possible with and without framework-enabled builds
        of Qt, but the debug versions of the Qt libraries have to be present.
        Debug builds with a release version of Qt are not possible on Mac
        since for debug builds qmake produces a linker command line where
        all the Qt libraries have the "_debug" suffix, therefore if the debug
        libraries are missing the build fails.

        * Source/widgetsapi.pri:

2013-04-19  Martin Robinson  <mrobinson@igalia.com>

        [GTK] JSCore.gir.in has a few problems
        https://bugs.webkit.org/show_bug.cgi?id=114710

        Reviewed by Philippe Normand.

        * GNUmakefile.am: Move common GIR initialization here from WebKit1.
        * configure.ac: Updated to reflect new JSC gir file location.

2013-04-18  Ryuan Choi  <ryuan.choi@gmail.com>

        [EFL] Build break when using cmake without CMAKE_BUILD_TYPE
        https://bugs.webkit.org/show_bug.cgi?id=114835

        Unreviewed build fix.

        * Source/cmake/OptionsEfl.cmake:

2013-04-16  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Do not use JAVASCRIPTCORE_DIR in add_custom_command() of JavaScriptcore project
        https://bugs.webkit.org/show_bug.cgi?id=114265

        Reviewed by Brent Fulgham.

        * Source/cmake/WebKitMacros.cmake: Removed macro GENERATE_HASH_LUT.

2013-04-16  Andy Estes  <aestes@apple.com>

        Changed the default debugger from GDB to LLDB for the 'All Source' scheme in WebKit.xcworkspace.

        Rubber-stamped by Dan Bernstein.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2013-04-16  Manuel Rego Casasnovas  <rego@igalia.com>

        [EFL] Bump libsoup dependency to 2.42.0
        https://bugs.webkit.org/show_bug.cgi?id=113927

        Reviewed by Gyuyoung Kim.

        Update libsoup required version to v2.42.0 and GLib to v2.36.0 as
        required by libsoup for EFL port.

        * Source/cmake/OptionsEfl.cmake:

2013-04-15  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Add WTF_USE_*_UNICODE variables
        https://bugs.webkit.org/show_bug.cgi?id=114556

        Reviewed by Brent Fulgham.

        WTF_USE_ICU_UNICODE and WTF_USE_WCHAR_UNICODE are used to
        reduce duplication in the platform specific CMake files.

        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsWinCE.cmake:

2013-04-15  Martin Robinson  <mrobinson@igalia.com>

        [GTK] REGRESSION(r147499): HTTP auth dialog doesn't remember passwords anymore
        https://bugs.webkit.org/show_bug.cgi?id=114613

        Reviewed by Carlos Garcia Campos.

        * Source/autotools/SetupAutoconfHeader.m4: Correct definition of ENABLE_CREDENTIAL_STORAGE
        so that the ENABLE(CREDENTIAL_STORAGE) macro work properly.

2013-04-12  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Lower the pango dependency
        https://bugs.webkit.org/show_bug.cgi?id=114520

        Reviewed by Carlos Garcia Campos.

        * Source/autotools/Versions.m4: Only depend on Pango 1.30.0 instead of
        Pango 1.32.0. 1.32.0 isn't strictly necessary and the version of GTK+ that
        we depend on (3.6.0) depends on 1.30.0.

2013-04-12  Jer Noble  <jer.noble@apple.com>

        TimeRanges::nearest() returns incorrect results.
        https://bugs.webkit.org/show_bug.cgi?id=114483

        Reviewed by Eric Carlson.

        Add symbols needed by WebCoreTestSupport to exports list.

        * Source/autotools/symbols.filter:

2013-04-12  Commit Queue  <rniwa@webkit.org>

        Unreviewed, rolling out r148262.
        http://trac.webkit.org/changeset/148262
        https://bugs.webkit.org/show_bug.cgi?id=114493

        Cairo dep should now build, rolling r148247 back in (Requested
        by zdobersek on #webkit).

        * Source/autotools/FindDependencies.m4:
        * Source/autotools/PrintBuildConfiguration.m4:
        * Source/autotools/SetupWebKitFeatures.m4:

2013-04-11  Commit Queue  <rniwa@webkit.org>

        Unreviewed, rolling out r148247.
        http://trac.webkit.org/changeset/148247
        https://bugs.webkit.org/show_bug.cgi?id=114490

        Cairo dep fails to build on builders due to missing EGL
        headers (Requested by zdobersek on #webkit).

        * Source/autotools/FindDependencies.m4:
        * Source/autotools/PrintBuildConfiguration.m4:
        * Source/autotools/SetupWebKitFeatures.m4:

2013-04-11  Paweł Forysiuk  <tuxator@o2.pl>

        [GTK] Webkit fails to build with MinGW compiler after changeset 146468
        https://bugs.webkit.org/show_bug.cgi?id=114473

        Reviewed by Martin Robinson.

        * Source/autotools/CheckSystemAndBasicDependencies.m4: Fix typo.

2013-04-11  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Add accelerated 2D canvas support using cairo-gl
        https://bugs.webkit.org/show_bug.cgi?id=104672

        Reviewed by Alejandro G. Castro.

        Detect that we can activate accelerated canvas when CairoGL is present and
        TextureMapperGL is enabled.

        * Source/autotools/FindDependencies.m4: Look for CairoGL.
        * Source/autotools/PrintBuildConfiguration.m4: Print the status of accelerated canvas activation.
        * Source/autotools/SetupWebKitFeatures.m4: Set the feature.

2013-04-11  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed.

        * Source/autotools/symbols.filter: Stop exporting redundant symbols.

2013-04-11  Rune Lillesveen  <rune@opera.com>

        Incorrect evaluation of resolution media queries
        https://bugs.webkit.org/show_bug.cgi?id=114029

        Reviewed by Kenneth Rohde Christiansen.

        Removed setResolutionOverride from exports.

        * Source/autotools/symbols.filter:

2013-04-10  Anton Obzhirov  <a.obzhirov@samsung.com>

        [GTK] Add support for Page Visibility
        https://bugs.webkit.org/show_bug.cgi?id=97324

        Reviewed by Sam Weinig.

        Page Visibility has been enabled for GTK port.
        New GTK unittest has been added.

        * Source/autotools/SetupWebKitFeatures.m4:

2013-04-09  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        [EFL] Declare TEST_THEME_DIR in a single place.
        https://bugs.webkit.org/show_bug.cgi?id=114285

        Reviewed by Anders Carlsson.

        Instead of adding the `THEME_DIR' preprocessor variable in many
        different CMakeList.txt files in the tree, declare it in
        OptionsEfl.cmake so that we avoid needlessly duplicating code around.

        While here, rename it to `TEST_THEME_DIR', which is the name used our
        WebKit2 infrastructure, to better reflect the purpose of this value.

        * Source/cmake/OptionsEfl.cmake: Add the TEST_THEME_DIR preprocessor
        definition.

2013-04-09  ChangSeok Oh  <changseok.oh@collabora.com>

        [GTK][AC] upversion of clutter and its dependecy
        https://bugs.webkit.org/show_bug.cgi?id=114016

        Reviewed by Gustavo Noronha Silva.

        Upversion of clutter to 1.14, cogl to 1.14 and clutter-gtk to 1.4.4.

        * Source/autotools/Versions.m4:

2013-04-09  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [WK2] Drop WebProcess capabilities on Linux using seccomp filters
        https://bugs.webkit.org/show_bug.cgi?id=89875

        Reviewed by Maciej Stachowiak.

        Added the bits to EFL/CMake buildsystem to find the libseccomp
        library.

        * Source/cmake/FindLibSeccomp.cmake: Added.
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-04-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ 32 bit build.

        * Source/autotools/symbols.filter: Add some symbols that are
        mangled differently in 32 bits due to size_t.

2013-04-09  Patrick Gansterer  <paroga@webkit.org>

        Do not set CMAKE_BUILD_TYPE if it is not defined
        https://bugs.webkit.org/show_bug.cgi?id=114243

        Reviewed by Geoffrey Garen.

        Setting the CMAKE_BUILD_TYPE causes some problem with Visual Studio.
        Adopt the current usage of the variable to better CMake style.

        * CMakeLists.txt:
        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsEfl.cmake:

2013-03-31  Martin Robinson  <mrobinson@igalia.com>

        Bug 110293 uses read -d which is a non-portable bashism
        https://bugs.webkit.org/show_bug.cgi?id=113349

        Reviewed by Gustavo Noronha Silva.

        * Source/autotools/SetupWebKitFeatures.m4: Pass the default feature set to the
        feature script in a more portable way.

2013-04-08  Jeff Rogers  <jrogers@rim.com>

        [BlackBerry] Update BlackBerry JavaScript API
        https://bugs.webkit.org/show_bug.cgi?id=114065

        Reviewed by Rob Buis.

        Internal PR 317350
        Export JSC symbols in BlackBerry build.

        * Source/cmake/OptionsBlackBerry.cmake:

2013-04-08  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Configure should verify ICU is installed on mingw
        https://bugs.webkit.org/show_bug.cgi?id=113645

        Reviewed by Gustavo Noronha Silva.

        * Source/autotools/FindDependencies.m4: When falling back to hard-coded compiler flags
        for ICU and mingw, check that headers do exist on the system and error out otherwise.

2013-04-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Build Platform as a separate static library
        https://bugs.webkit.org/show_bug.cgi?id=114164

        Reviewed by Martin Robinson.

        * GNUmakefile.am: Add webkit2platform_sources definition.

2013-04-08  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK build fix.

        * Source/autotools/symbols.filter: Exporting a bunch of symbols.

2013-04-07  Vivek Galatage  <vivek.vg@samsung.com>

        Modify .gitignore file to remove entries for chromium generated files
        https://bugs.webkit.org/show_bug.cgi?id=114141

        Reviewed by Gyuyoung Kim.

        * .gitignore:

2013-04-07  Patrick Gansterer  <paroga@webkit.org>

        Remove references to Skia and V8 from CMake files
        https://bugs.webkit.org/show_bug.cgi?id=114130

        Reviewed by Geoffrey Garen.

        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmake/WebKitPackaging.cmake:

2013-04-07  David Kilzer  <ddkilzer@apple.com>

        Remove the rest of SVG_DOM_OBJC_BINDINGS
        <http://webkit.org/b/114112>

        Reviewed by Geoffrey Garen.

        * Source/autotools/SetupWebKitFeatures.m4:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        - Remove references to ENABLE_SVG_DOM_OBJC_BINDINGS.

2013-04-05  Ed Bartosh  <bartosh@gmail.com>

        [EFL] --no-tiled-backing-store build fails because of not used #if USE(ACCELERATED_COMPOSITING)
        https://bugs.webkit.org/show_bug.cgi?id=113627

        Reviewed by Simon Fraser.

        * Source/cmake/OptionsEfl.cmake: Disabled 3D_GRAPHICS and WEB_GL when accelerated compositing is on

2013-04-05  Rijubrata Bhaumik  <rijubrata.bhaumik@intel.com>

        [EFL] Enable indexed database
        https://bugs.webkit.org/show_bug.cgi?id=107248

        Reviewed by Alexis Menard.

        * Source/cmake/OptionsEfl.cmake:

2013-04-05  Benjamin Poulain  <benjamin@webkit.org>

        Fix GTK+ for real after r147712

        Reviewed by Ryosuke Niwa.

        * GNUmakefile.am:
        * Source/Platform: Added.
        * Source/Platform/GNUmakefile.am: Added.

2013-04-05  Benjamin Poulain  <benjamin@webkit.org>

        Fix GTK+ build after r147712

        Unreviewed.

        * GNUmakefile.am: remove the reference to
        Source/Platform/GNUmakefile.am. The file has been removed.

2013-04-05  Benjamin Poulain  <bpoulain@apple.com>

        Remove WTFURL from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=113994

        Reviewed by Ryosuke Niwa.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-04-04  Ryosuke Niwa  <rniwa@webkit.org>

        Remove the top level gyp directory and Platform/chromium
        https://bugs.webkit.org/show_bug.cgi?id=113999

        Reviewed by Benjamin Poulain.

        * Source/Platform: Removed.
        * Source/gyp: Removed.

2013-04-04  Geoffrey Garen  <ggaren@apple.com>

        Nixed the defunct chromium folder from ManualTests
        https://bugs.webkit.org/show_bug.cgi?id=113995

        Reviewed by Benjamin Poulain.

        * ManualTests/chromium: Removed.
        * ManualTests/chromium/autofill-popup-shiftupdown.hml: Removed.
        * ManualTests/chromium/drag-image-accounts-for-device-scale.html: Removed.
        * ManualTests/chromium/modifiers-during-drag-and-drop.html: Removed.
        * ManualTests/chromium/no-autofill-on-readonly.html: Removed.
        * ManualTests/chromium/onchange-reload-popup.html: Removed.
        * ManualTests/chromium/popup-menu-crash.html: Removed.
        * ManualTests/chromium/select-close-popup-value-change.html: Removed.
        * ManualTests/chromium/suggestions-popup-font-change.html: Removed.

2013-04-04  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer] Virtual modifier for MediaPlayer::simulateAudioInterruption must go
        https://bugs.webkit.org/show_bug.cgi?id=113851

        Reviewed by Eric Carlson.

        * Source/autotools/symbols.filter: Added
        _ZN7WebCore11MediaPlayer25simulateAudioInterruptionEv symbol.

2013-04-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Bump required versions of some dependencies
        https://bugs.webkit.org/show_bug.cgi?id=113282

        Reviewed by Martin Robinson.

        This patch updates the following dependencies:

         - libsoup 2.42.0: is the current stable release.

         - glib 2.36.0: libsoup 2.42 requires 2.35.0, but we don't want to
           depend on unstable versions and 2.36 is the next stable version
           after 2.35.

         - gtk+ 3.6.0: this is the previous stable release. We don't
           currently have any code using newer API, so we will be able to
           remove all the #ifdefed code.

         - at-spi2 2.5.3: is the version required by gtk+ 3.6.

         - GObject introspection 1.32.0: is the version required by gtk+ 3.6.

         - Pango 1.32.0: it's the current stable version and the first one
           depending on Harfbuzz.

         - Fontconfig 2.5: required by pango 1.32.0 when using Harfbuzz.

         - gtk+ 2.24.10: it allows us to remove a lot of deprecated code
           and #ifdefs.

        * Source/autotools/Versions.m4:

2013-04-02  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Make libsecret optional
        https://bugs.webkit.org/show_bug.cgi?id=113821

        Reviewed by Gustavo Noronha Silva.

        Add a configuration option to disable credential storage and thus remove
        the libsecret dependency. This should make it possible to build WebKit 2.x
        on Windows again.

        * Source/autotools/FindDependencies.m4: Only look for libsecret if credential storage is active.
        * Source/autotools/PrintBuildConfiguration.m4: Print whether or not credential storage is active.
        * Source/autotools/ReadCommandLineArguments.m4: Added an option to control credential storage.
        * Source/autotools/SetupAutoconfHeader.m4: Expose credential storage setting to code.

2013-04-02  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r147401.
        http://trac.webkit.org/changeset/147401
        https://bugs.webkit.org/show_bug.cgi?id=113767

        The patch makes it extremely hard to set up the dependencies
        properly on the GTK builders (Requested by zdobersek on
        #webkit).

        * Source/autotools/Versions.m4:

2013-04-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Bump required versions of some dependencies
        https://bugs.webkit.org/show_bug.cgi?id=113282

        Reviewed by Martin Robinson.

        This patch updates the following dependencies:

         - libsoup 2.42.0: is the current stable release.

         - glib 2.36.0: libsoup 2.42 requires 2.35.0, but we don't want to
           depend on unstable versions and 2.36 is the next stable version
           after 2.35.

         - gtk+ 3.6.0: this is the previous stable release. We don't
           currently have any code using newer API, so we will be able to
           remove all the #ifdefed code.

         - at-spi2 2.5.3: is the version required by gtk+ 3.6.

         - GObject introspection 1.32.0: is the version required by gtk+ 3.6.

         - Pango 1.32.0: it's the current stable version and the first one
           depending on Harfbuzz.

         - Fontconfig 2.5: required by pango 1.32.0 when using Harfbuzz.

         - gtk+ 2.24.10: it allows us to remove a lot of deprecated code
           and #ifdefs.

        * Source/autotools/Versions.m4:

2013-04-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        [EFL][CMAKE] Move MOZ_X11 definition from OptionsCommon to OptionsEfl
        https://bugs.webkit.org/show_bug.cgi?id=113685

        Reviewed by Martin Robinson.

        MOZ_X11 is added unconditionally in OptionsCommon for UNIX
        platforms, but not all UNIX platforms use X11 for plugins,
        BlackBerry doesn't. The only port using cmake that uses X11 is EFL
        and it already has checks for X11, so we can just move the
        definition to OptionsEfl.

        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsEfl.cmake:

2013-04-01  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL] Enable user-select:all for EFL port
        https://bugs.webkit.org/show_bug.cgi?id=113494

        Reviewed by Gyuyoung Kim.
        
        Add a feature flag for user-select:all and enable it for EFL port.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-03-29  Charles Wei  <charles.wei@torchmobile.com.cn>

        [BlackBerry] Cleanup the CONTEXT_MENUS in BlackBerry porting
        https://bugs.webkit.org/show_bug.cgi?id=113562

        Reviewed by George Staikos.
        Internally reviewed by Mike Fenton and Gen Mak.

        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-03-28  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Build GTK-specific, non-layer-violating source code into WebCore-independent libPlatformGtk.la
        https://bugs.webkit.org/show_bug.cgi?id=112546

        Reviewed by Martin Robinson.

        * GNUmakefile.am: Define the new platform_webcore_cppflags.

2013-03-28  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK build fix after r147039.

        * Source/autotools/symbols.filter: Export the missing symbols.

2013-03-27  Patrick Gansterer  <paroga@webkit.org>

        Set WTF_ARM_ARCH_VERSION to correct value when used with MSVC
        https://bugs.webkit.org/show_bug.cgi?id=113436

        Reviewed by Benjamin Poulain.

        * Source/cmake/OptionsWinCE.cmake: CPU(ARM_TRADITIONAL) is now set correctly by Platform.h.

2013-03-27  Timothy Hatcher  <timothy@apple.com>

        Add support for dock-to-right of the Web Inspector in the Mac port.

        Unfortunately this requires Safari changes, so it is disabled in the nightly builds.

        https://webkit.org/b/113341
        rdar://problem/10368152

        Reviewed by Joseph Pecoraro.

        * Source/autotools/symbols.filter:

2013-03-27  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r146864.
        http://trac.webkit.org/changeset/146864
        https://bugs.webkit.org/show_bug.cgi?id=113391

        causes crashes on Wk2 EFL release bot (Requested by drott on
        #webkit).

        * Source/cmake/OptionsEfl.cmake:

2013-03-26  Rijubrata Bhaumik  <rijubrata.bhaumik@intel.com>

        [EFL] Enable IndexedDB by default
        https://bugs.webkit.org/show_bug.cgi?id=107248

        Reviewed by Laszlo Gombos.

        * Source/cmake/OptionsEfl.cmake:
        Enable IndexedDB by default on EFL.

2013-03-25  Kent Tamura  <tkent@chromium.org>

        Rename ENABLE_INPUT_TYPE_DATETIME
        https://bugs.webkit.org/show_bug.cgi?id=113254

        Reviewed by Kentaro Hara.

        Rename ENABLE_INPUT_TYPE_DATETIME to ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE.
        Actually I'd like to remove the code, but we shouldn't remove it yet
        because we shipped products with it on some platforms.

        * Source/autotools/SetupWebKitFeatures.m4:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-03-25  Daniel Cheng  <dcheng@chromium.org>

        Don't allow drags to start after a mouse press that creates a context menu
        https://bugs.webkit.org/show_bug.cgi?id=112079

        Reviewed by Tony Chang.

        * ManualTests/context-menu-during-drag-selection.html: Added.

2013-03-22  Yuki Sekiguchi  <yuki.sekiguchi@access-company.com>

        Cannot run All Source (target WebProcess) on Xcode.
        https://bugs.webkit.org/show_bug.cgi?id=111042

        Reviewed by Alexey Proskuryakov.

        WebProcessShim is renamed by r139066.
        However, WebProcessShim is not renamed to SecItemShim in WebKit.xcworkspace.
        This make WebProcess.app load WebProcessShim.dylib, and it cause dyld loading error.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme: Renamed WebProcessShim to SecItemShim.

2013-03-21  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Move libLevelDB.la setup into a separate GNUmakefile.am
        https://bugs.webkit.org/show_bug.cgi?id=112947

        Reviewed by Martin Robinson.

        * GNUmakefile.am: Include the new GNUmakefile.am, located under Source/ThirdParty/leveldb.

2013-03-21  Martin Robinson  <mrobinson@igalia.com>

        Source/ThirdParty/leveldb/db/builder.cc does not build on systems without <endian.h>
        https://bugs.webkit.org/show_bug.cgi?id=111817

        Reviewed by Gustavo Noronha Silva.

        Improve processing of the autoconf host variable.  Setup up the wiring to detect
        whether or not we are compiling for Darwin.

        * Source/autotools/CheckSystemAndBasicDependencies.m4: Improve host detection.
        * Source/autotools/SetupAutomake.m4: Tell automake if we are compiling for Darwin or not.

2013-03-20  Michael Pruett  <michael@68k.org>

        [JSC] Implement EnforceRange IDL attribute for integer conversions
        https://bugs.webkit.org/show_bug.cgi?id=112506

        Reviewed by Kentaro Hara.

        * Source/autotools/symbols.filter:

2013-03-20  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Build ANGLE sources into a separate library from libWebCore.la
        https://bugs.webkit.org/show_bug.cgi?id=112778

        Reviewed by Martin Robinson.

        * GNUmakefile.am: Include the GNUmakefile.am covering the libANGLE.la library.

2013-03-20  Jocelyn Turcotte  <jocelyn.turcotte@digia.com>

        [Qt] Define MODULE_VERSION
        https://bugs.webkit.org/show_bug.cgi?id=112808

        Reviewed by Allan Sandfeld Jensen.

        Upstream http://codereview.qt-project.org/49052
        Use 5.2.0 as this is the next release that will be branched from trunk.

        * .qmake.conf:

2013-03-20  Rouslan Solomakhin  <rouslan@chromium.org>

        Copy-paste should not spellcheck when continuous spellcheck is turned off
        https://bugs.webkit.org/show_bug.cgi?id=112464

        Reviewed by Ryosuke Niwa.

        * Source/autotools/symbols.filter: Export WebCore::Editor::isContinuousSpellCheckingEnabled() and WebCore::Editor::toggleContinuousSpellChecking() for use by internals.

2013-03-20  JungJik Lee  <jungjik.lee@samsung.com>

        [EFL] Disable REQUEST_ANIMATION_FRAME_TIMER to render a new animation frame.
        https://bugs.webkit.org/show_bug.cgi?id=112114

        Reviewed by Kenneth Rohde Christiansen.

        Add a manual test to check the running of scripted transition animation.

        * ManualTests/animation/transition-on-and-offscreen-animation.html: Added.

2013-03-19  David Rosca  <nowrep@gmail.com>

        [Qt] QStyle: Set State_Enabled by default when painting style widgets.
        https://bugs.webkit.org/show_bug.cgi?id=112688

        Reviewed by Jocelyn Turcotte.

        All Qt style widgets were painted with a disabled state, even when
        they actually were enabled.
        This change fixes it by setting State_Enabled as a default state,
        which is then correctly removed when element is disabled.

        * Source/WebCore/platform/qt/RenderThemeQStyle.cpp:

2013-03-17  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] Exports leveldb symbols
        https://bugs.webkit.org/show_bug.cgi?id=112526

        Reviewed by Carlos Garcia Campos.

        * Source/autotools/symbols.filter: make leveldb symbols local.

2013-03-15  Jae Hyun Park  <jae.park@company100.net>

        [GTK] acceleration_backend_description does not concatenate "(gles2"
        https://bugs.webkit.org/show_bug.cgi?id=112405

        Reviewed by Martin Robinson.

        In FindDependencies.m4, acceleration_backend_description string does not
        concatenate if there is a space between the operator and the operand.

        * Source/autotools/FindDependencies.m4:

2013-03-15  Allan Sandfeld Jensen  <allan.jensen@digia.com>

        [Qt] Build error with building with Qt 5.1
        https://bugs.webkit.org/show_bug.cgi?id=112435

        Reviewed by Noam Rosenthal.

        QAccessibleWidget has moved to private.

        * Source/widgetsapi.pri:

2013-03-14  Tobias Mueller  <tobiasmue@gnome.org>

        Build: Remove XSLT option and depend hard on XSLT.
        You will now not be able to give --disable-xslt or --enable-xslt
        because it is not optional anymore.
        https://bugs.webkit.org/show_bug.cgi?id=112368

        Reviewed by Martin Robinson.

        * Source/autotools/FindDependencies.m4:
            Always check for libxslt
        
        * Source/autotools/PrintBuildConfiguration.m4:
            Removed printing out the value of XSLT

        * Source/autotools/ReadCommandLineArguments.m4:
            Removed reading XSLT options

2013-03-14  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>

        [EFL] Use CROSS_PLATFORM_CONTEXT_MENU
        https://bugs.webkit.org/show_bug.cgi?id=111877

        Reviewed by Caio Marcelo de Oliveira Filho.

        * Source/cmake/OptionsEfl.cmake: add -DWTF_USE_CROSS_PLATFORM_CONTEXT_MENUS=1

2013-03-14  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Improve the handling of mock geolocation, device orientation and motion clients

        Reviewed by Tor Arne Vestbø.

        The mock versions of these web facing features should be instantiated when
        running in DumpRenderTree only. In order for them to work, no extra Qt modules
        such as QtLocation are actually needed.

        This patch decouples enabling device orientation/motion and geolocation from
        the underlying Qt modules and makes them available in developer builds
        (!production_build) and backed by mock backends when running in drt.

        So if the Qt 5 modules are available, they'll be used (unless drtRun). For
        developers the web facing features are always enabled (although requests will
        time out) and the mock backends are enabled inside DRT, allowing for the layout
        tests to run with less dependencies.

        In addition this also enables the mock device motion client, which was
        previously never instantiated.

        * Source/widgetsapi.pri:

2013-03-13  Ryosuke Niwa  <rniwa@webkit.org>

        Threaded HTML Parser is missing feature define flags in all but Chromium port's build files
        https://bugs.webkit.org/show_bug.cgi?id=112277

        Reviewed by Adam Barth.

        * Source/autotools/SetupWebKitFeatures.m4:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-03-13  Nate Chapin  <japhet@chromium.org>

        Expose symbols for internals
        https://bugs.webkit.org/show_bug.cgi?id=112194

        Reviewed by Alexey Proskuryakov.

        * Source/autotools/symbols.filter:

2013-03-12  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] 'unrecognized command line option "-Wno-c++11-extensions"' warning reported when using gcc
        https://bugs.webkit.org/show_bug.cgi?id=111936

        Reviewed by Martin Robinson.

        * Source/autotools/SetupCompilerFlags.m4: Only use the -Wno-c++11-extensions warning when building
        with Clang as GCC does not support the warning just yet. Also enhance the comment about using libstdc++
        as the standard C++ library when compiling with Clang.

2013-03-12  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Set up the libPlatformGtk.la library
        https://bugs.webkit.org/show_bug.cgi?id=111738

        Reviewed by Martin Robinson.

        * GNUmakefile.am: Define the two variables that will hold sources list and cppflags as required for the new library.
        Include the new GNUmakefile.am that's now available under Source/Platform.

2013-03-11  Tobias Mueller  <tobiasmue@gnome.org>

        [Autotools] Set ENABLE_GTK_DOC to false if gtk-doc is not installed
        https://bugs.webkit.org/show_bug.cgi?id=111980
        
        Reviewed by Martin Robinson.

        WebKit did not configure if gtk-doc-am was not installed with the error:
        Tools/GNUmakefile.am:419: ENABLE_GTK_DOC does not appear in AM_CONDITIONAL

        * Source/autotools/FindDependencies.m4:

2013-03-11  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK] Bump version
        https://bugs.webkit.org/show_bug.cgi?id=112055

        Reviewed by Martin Robinson.

        * Source/autotools/Versions.m4: Bump to 2.1.0

2013-03-11  Jeff Rogers  <jrogers@rim.com>

        [BlackBerry] Disable MathML support
        https://bugs.webkit.org/show_bug.cgi?id=111929

        Reviewed by Rob Buis.

        * Source/cmake/OptionsBlackBerry.cmake:

2013-03-09  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Versions.m4 is missing some key dependencies version definitions
        https://bugs.webkit.org/show_bug.cgi?id=111903

        Reviewed by Carlos Garcia Campos.

        * Source/autotools/Versions.m4: Add missing required version
        definitions.

2013-03-08  Dean Jackson  <dino@apple.com>

        Don't snapshot Java plugins
        https://bugs.webkit.org/show_bug.cgi?id=111899

        Reviewed by Tim Horton.

        Export MIMETypeRegistry::isJavaAppletMIMEType symbol.

        * Source/autotools/symbols.filter:

2013-03-08  Chandra Shekar Vallala  <brk376@motorola.com>

        [chromium] Keydown event for 'shift+alt' returns win keycode instead of 'alt'
        https://bugs.webkit.org/show_bug.cgi?id=111112

        Reviewed by Tony Chang.

        Return windows keycode of Alt incase of GDK_META_L, GDK_META_R.

        Try press Shift then alt key. The test passes if the shiftKey, altKey values
        of JSKeyEvent are true and keycode/which is 18.

        * ManualTests/shift-alt-key-event.html: Added.

2013-03-08  Zan Dobersek  <zdobersek@igalia.com>

        [Autotools] Remove definitions of unnecessary Automake conditionals
        https://bugs.webkit.org/show_bug.cgi?id=111830

        Reviewed by Philippe Normand.

        The following Automake conditionals are not used anywhere and should have their
        definitions in SetupAutomake.m4 removed:
        ENABLE_GAMEPAD, ENABLE_XSLT, ENABLE_GEOLOCATION, ENABLE_SVG_FONTS,
        ENABLE_OPCODE_STATS, ENABLE_CSS_FILTERS, ENABLE_CSS_SHADERS.

        * Source/autotools/SetupAutomake.m4:

2013-03-08  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Remove media stream support from the configuration options
        https://bugs.webkit.org/show_bug.cgi?id=111813

        Reviewed by Philippe Normand.

        Remove the media-stream configuration flag. The feature is incomplete and
        thus unsupported, so it really shouldn't be possible to enable it.

        * Source/autotools/PrintBuildConfiguration.m4:
        * Source/autotools/ReadCommandLineArguments.m4:
        * Source/autotools/SetupAutomake.m4:
        * Source/autotools/SetupWebKitFeatures.m4:

2013-03-07  Keishi Hattori  <keishi@webkit.org>

        Update calendar picker UI
        https://bugs.webkit.org/show_bug.cgi?id=109439

        Reviewed by Kent Tamura.

        * ManualTests/forms/calendar-picker.html: New test file with more options.
        * ManualTests/forms/date-suggestion-picker.html: Copied from ManualTests/forms/calendar-picker.html. Old one kept for dat/time suggestion picker testing.

2013-03-07  Christophe Dumez  <ch.dumez@sisa.samsung.com>

        [EFL] Bump libsoup dependency to 2.40.3 to fix regressions
        https://bugs.webkit.org/show_bug.cgi?id=111756

        Reviewed by Kenneth Rohde Christiansen.

        Update libsoup required version to v2.40.3 for EFL port.

        * Source/cmake/OptionsEfl.cmake:

2013-03-07  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Limit the supported compilers to GCC >= 4.7 and Clang >= 3.0
        https://bugs.webkit.org/show_bug.cgi?id=109932

        Reviewed by Martin Robinson.

        * Source/autotools/CheckSystemAndBasicDependencies.m4: Strictly check for one of the two compilers.
        * Source/autotools/SetupCompilerFlags.m4: Set up C++11-specific compiler flags. Force the C99 standard for the C code.
        Use the -Qunused-arguments flag when using Clang, it reduces irrelevant errors when using ccache.

2013-03-05  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] Enable translations for WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=111398

        Reviewed by Martin Robinson.

        * GNUmakefile.am: adjust path for i18n GNUmakefile.am.
        * configure.ac: generate the i18n makefile unconditionally, the translations are
        used by both WebKitGTK+ and WebKit2GTK+.

2013-03-06  Adam Klein  <adamk@chromium.org>

        [V8] Use implicit references instead of object groups to keep registered MutationObservers alive
        https://bugs.webkit.org/show_bug.cgi?id=111382

        Reviewed by Adam Barth.

        * ManualTests/mutation-observer-leaks-nodes.html: Added.

2013-03-06  Gustavo Noronha Silva  <gns@gnome.org>

        Build fix. Fixes problems building code that uses deprecated functions from GTK+ 2,
        such as RenderThemeGtk2.cpp, in debug mode. RenderThemeGtk2.cpp tries to allow usage
        of deprecated functions by undefining GTK_DISABLE_DEPRECATED, but it ended up being
        redefined because autotoolsconfig.h was included again by headers that came after
        config.h.

        Reviewed by Martin Robinson.

        * Source/autotools/SetupWebKitFeatures.m4: add checks to ensure the
        autotoolsconfig.h header is only included once.

2013-03-05  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Build break with latest EFL libraries
        https://bugs.webkit.org/show_bug.cgi?id=111028

        Reviewed by Dirk Pranke.

        In latest EFL trunk, include path of ecore sub modules are changed from
        ecore-1 to ecore-XXX-1.
        So, this patch adds missing ECORE_XXX_INCLUDE_DIRS.

        * Source/cmake/FindEcore.cmake: Added additional path suffixes to find include directories of ecore-XXX
        * Source/cmake/FindElementary.cmake: Checked Ecore_Con dependency which Elementary requires.
        * Source/cmake/OptionsEfl.cmake: Made Imf and Imf_Evas mandatory.

2013-03-05  Shawn Singh  <shawnsingh@chromium.org>

        Fix default background of a dragged image.
        https://bugs.webkit.org/show_bug.cgi?id=110512

        Reviewed by Tony Chang.

        * ManualTests/drag-background-with-padding.html: Added.

2013-03-05  Gustavo Noronha Silva  <gns@gnome.org>

        Unreviewed build fix.

        * GNUmakefile.am: remove bad path for generate-feature-defines-files from EXTRA_DIST.

2013-03-04  Ruslan Abdikeev  <aruslan@chromium.org>

        <link rel="apple-touch-icon"> tag is not honored on CNN.com, workflowy.com etc
        https://bugs.webkit.org/show_bug.cgi?id=109061

        Reviewed by Adam Barth.

        * Source/autotools/symbols.filter:

2013-03-04  Kunihiko Sakamoto  <ksakamoto@chromium.org>

        Add build flag for FontLoader
        https://bugs.webkit.org/show_bug.cgi?id=111289

        Reviewed by Benjamin Poulain.

        Add ENABLE_FONT_LOAD_EVENTS build flag (disabled by default).

        * Source/autotools/SetupWebKitFeatures.m4:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-03-03  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r144567.
        http://trac.webkit.org/changeset/144567
        https://bugs.webkit.org/show_bug.cgi?id=111266

        Does not compile on apple-win (Requested by abarth on
        #webkit).

        * Source/autotools/symbols.filter:

2013-03-03  Ruslan Abdikeev  <aruslan@chromium.org>

        <link rel="apple-touch-icon"> tag is not honored on CNN.com, workflowy.com etc
        https://bugs.webkit.org/show_bug.cgi?id=109061

        Reviewed by Adam Barth.

        * Source/autotools/symbols.filter:

2013-03-01  Elliott Sprehn  <esprehn@gmail.com>

        Don't leak Documents when using MutationObserver from extensions
        https://bugs.webkit.org/show_bug.cgi?id=111234

        Reviewed by Adam Barth.

        * ManualTests/leak-observer-nonmain-world.html: Added.

2013-02-27  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Disable MathML support in release builds
        https://bugs.webkit.org/show_bug.cgi?id=110981

        Reviewed by Martin Robinson.

        * Source/autotools/SetupWebKitFeatures.m4: Disable the MathML support in release builds
        as the code is not yet deemed production-ready.

2013-02-27  Glenn Adams  <glenn@skynav.com>

        Add ENABLE_CSS3_TEXT_LINE_BREAK flag.
        https://bugs.webkit.org/show_bug.cgi?id=110944

        Reviewed by Dean Jackson.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-02-24  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Rename ENABLE_REGIONS to ENABLE_CSS_REGIONS
        https://bugs.webkit.org/show_bug.cgi?id=110699

        Reviewed by Andreas Kling.

        Fix a typo. ENABLE_REGIONS is called ENABLE_CSS_REGIONS
        throughout the project.

        * Source/cmake/OptionsEfl.cmake:

2013-02-24  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Stop generating UserAgentGtk.h
        https://bugs.webkit.org/show_bug.cgi?id=110582

        Reviewed by Martin Robinson.

        * configure.ac: Provide the USER_AGENT_GTK_(MAJOR|MINOR)_VERSION defines in the autotoolsconfig.h
        header, containing the user agent versions that are to be used in the user agent string. The
        WEBKIT_USER_AGENT_(MAJOR|MINOR)_VERSION name is avoided as the same defines are specified in the
        webkitversion.h API header (but are not accessible from the WebCore layer). The UserAgentGtk.h
        header is also not generated anymore from the input file.

2013-02-21  Tony Chang  <tony@chromium.org>

        Autogenerate Settings that call setNeedsRecalcStyleInAllFrames when set
        https://bugs.webkit.org/show_bug.cgi?id=109989

        Reviewed by Ryosuke Niwa.

        Add setters to export symbols.

        * Source/autotools/symbols.filter:

2013-02-21  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Move feature overriding to the configure phase
        https://bugs.webkit.org/show_bug.cgi?id=110293

        Reviewed by Gustavo Noronha Silva.

        Rework the feature overrides logic so all feature defines go into a
        header rather than the command line. This has a few benefits. Most
        notably, we can reuse the header in the gyp build. Another nice result
        is that changes to the configuration automatically result in a full
        rebuild and Debug and Release builds can have different configurations.

        All feature define processing happens now during the configuration phase,
        instead of when running autogen.sh. This means that we need to distribute
        the feature processing script.

        * GNUmakefile.am: Read feature defines from WebKitFeatures.txt when kicking
        off a build. Also include generate-feature-defines-files in the distribution.
        * Source/autotools/SetupAutoconfHeader.m4: Remove an extra ENABLE_3D_RENDERING
        from the autoconf header, as it is already provided by the feature configuration.
        * Source/autotools/SetupWebKitFeatures.m4: Added.
        * Source/autotools/webkitfeature.m4: Removed. The functionality has been moved
        to SetupWebKitFeatures.m4.
        * autogen.sh: Remove the call to override-feature-defines.
        * configure.ac: Now include SetupWebKitFeatures.

2013-02-20  Dirk Schulze  <krit@webkit.org>

        Enable CANVAS_PATH flag
        https://bugs.webkit.org/show_bug.cgi?id=108508

        Reviewed by Simon Fraser.

        Enable CANVAS_PATH flag on trunk.

        Existing tests cover the feature.

        * Source/cmake/WebKitFeatures.cmake:

2013-02-19  Claudio Saavedra  <csaavedra@igalia.com>

        Unreviewed build fix.

        * Source/autotools/FindDependencies.m4:
        * Source/autotools/Versions.m4:
        * Source/cmake/FindHarfBuzz.cmake:

        Bump gtk and efl dependencies on harfbuzz
        to 0.9.7. See bug 110145.

2013-02-19  Changhun Kang  <temoochin@company100.net>

        Only depend on xrender if x11 is being used
        https://bugs.webkit.org/show_bug.cgi?id=84095

        Reviewed by Martin Robinson.

        * Source/autotools/FindDependencies.m4:

2013-02-18  ChangSeok Oh  <shivamidow@gmail.com>

        [GTK] Fix nits for configuration
        https://bugs.webkit.org/show_bug.cgi?id=110083

        Reviewed by Martin Robinson.

        Remove unicode backend printing option. The only backend for unicode is icu
        after changeset 142724.

        * Source/autotools/PrintBuildConfiguration.m4:

2013-02-15  Gustavo Noronha Silva  <gns@gnome.org>

        Unreviewed build fix.

        * Source/autotools/SetupLibtool.m4: Move AR_FLAGS definition so it comes before dolt
        and libtool initialization, thus having an effect once again.

2013-02-15  Keishi Hattori  <keishi@webkit.org>

        Add setValue and closePopup methods to PagePopupController
        https://bugs.webkit.org/show_bug.cgi?id=109897

        Reviewed by Kent Tamura.

        * ManualTests/forms/calendar-picker.html: Added mock setValue and closePopup implementation.
        * ManualTests/forms/color-suggestion-picker.html: Ditto.

2013-02-15  Allan Sandfeld Jensen  <allan.jensen@digia.com>

        Simplify hitTestResultAtPoint and nodesFromRect APIs
        https://bugs.webkit.org/show_bug.cgi?id=95720

        Reviewed by Julien Chaffraix.

        Update exported symbols.

        * Source/autotools/symbols.filter:

2013-02-08  Andrey Kosyakov  <caseq@chromium.org>

        Web Inspector: expose did{Begin,Cancel}Frame() and {will,did}Composite() on WebDebToolsAgent
        https://bugs.webkit.org/show_bug.cgi?id=109192

        Reviewed by Pavel Feldman.

        * Source/autotools/symbols.filter:

2013-02-13  Martin Robinson  <mrobinson@igalia.com>

        Try once again to fix the build after r142756

        * Source/autotools/PrintBuildConfiguration.m4: Do not try to print the GStreamer version
        in the build output.
        * Source/autotools/SetupAutoconfHeader.m4: Remove the last reference to have_gstreamer.

2013-02-13  Martin Robinson  <mrobinson@igalia.com>

        Try to fix the build after r142756

        * Source/autotools/SetupAutomake.m4: Instead of using the (now gone) have_gstreamer
        variable, activate GStreamer if either web audio or web video is enabled.

2013-02-13  Xianzhu Wang  <wangxianzhu@chromium.org>

        Heap-use-after-free in WebCore::ScrollingCoordinator::hasVisibleSlowRepaintViewportConstrainedObjects.
        https://bugs.webkit.org/show_bug.cgi?id=108695

        Add a manual test. Unable to write a normal layout test because
        1) must waitUntilDone() to reproduce the crash but the redirected URL can't notifyDone();
        2) Can't use a frame to contain the test because ScrollingCoordinator handles only the main frame.

        Reviewed by Abhishek Arya.

        * ManualTests/scrolling-coordinator-viewport-constrained-crash.html: Added.

2013-02-13  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove support for compiling with GStreamer 0.10
        https://bugs.webkit.org/show_bug.cgi?id=109593

        Reviewed by Philippe Normand.

        Remove support for building WebKitGTK+ with GStreamer 0.10. We
        can simplify things greatly because we don't have to worry any
        longer about selecting one GStreamer API set.

        * Source/autotools/FindDependencies.m4:
        * Source/autotools/ReadCommandLineArguments.m4:
        * Source/autotools/SetupAutoconfHeader.m4:
        * Source/autotools/Versions.m4:

2013-02-12  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove the GLib unicode backend
        https://bugs.webkit.org/show_bug.cgi?id=109627

        Reviewed by Benjamin Poulain.

        Remove references to the GLib unicode backend from configuration.

        * Source/autotools/FindDependencies.m4:
        * Source/autotools/ReadCommandLineArguments.m4:
        * Source/autotools/SetupAutoconfHeader.m4:
        * Source/autotools/SetupAutomake.m4:

2013-02-12  Christophe Dumez  <ch.dumez@sisa.samsung.com>

        Remove remaining traces of Web Intents
        https://bugs.webkit.org/show_bug.cgi?id=109586

        Reviewed by Eric Seidel.

        Remove references to Web Intents from CMake files as the functionality
        was removed in r142549.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-02-12  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove the enable-debug-feature configuration option
        https://bugs.webkit.org/show_bug.cgi?id=109539

        Reviewed by Philippe Normand.

        Remove the --enable-debug-feature option from configuration. It doesn't
        do anything that --enable-debug doesn't.

        * Source/autotools/PrintBuildConfiguration.m4: Remove references to --enable-debug-features.
        * Source/autotools/ReadCommandLineArguments.m4: Ditto.
        * Source/autotools/SetupAutoconfHeader.m4: Ditto.
        * Source/autotools/SetupAutomake.m4: Ditto.

2013-02-12  Zan Dobersek  <zdobersek@igalia.com>

        Remove ENABLE_XHR_RESPONSE_BLOB handling from various build systems
        https://bugs.webkit.org/show_bug.cgi?id=109481

        Reviewed by Daniel Bates.

        The ENABLE_XHR_RESPONSE_BLOB feature define was removed from the code
        back in r120574. There are still occurrences of it in various build systems
        which should all be removed as they are useless.

        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmakeconfig.h.cmake:

2013-02-11  Eric Carlson  <eric.carlson@apple.com>

        [Mac] Track language selection should be sticky
        https://bugs.webkit.org/show_bug.cgi?id=109466

        Reviewed by Dean Jackson.

        * Source/autotools/symbols.filter: Export PageGroup::captionPreferences and Page::initGroup.

2013-02-11  Benjamin Poulain  <benjamin@webkit.org>

        Kill TestRunner::setMinimumTimerInterval; implement the feature with InternalSettings
        https://bugs.webkit.org/show_bug.cgi?id=109349

        Reviewed by Sam Weinig.

        * Source/autotools/symbols.filter:

2013-02-11  Zan Dobersek  <zdobersek@igalia.com>

        * Source/WebCore: Modified property svn:ignore, adding GNUmakefile.features.am
        to the list of paths to be ignored.

2013-02-10  Laszlo Gombos  <l.gombos@samsung.com>

        Consolidate the way WTF_USE_PTHREADS is enabled
        https://bugs.webkit.org/show_bug.cgi?id=108191

        Reviewed by Benjamin Poulain.

        Remove duplicated definition of WTF_USE_PTHREADS.

        WTF_USE_PTHREADS is defined to 1 on all OS(UNIX) environments in 
        Platform.h.

        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmake/OptionsEfl.cmake:

2013-02-10  Jae Hyun Park  <jae.park08@gmail.com>

        Rename ENABLE(GLIB_SUPPORT) to USE(GLIB)
        https://bugs.webkit.org/show_bug.cgi?id=104266

        Reviewed by Philippe Normand.

        Using USE(GLIB) instead of ENABLE(GLIB_SUPPORT) is more consistent with
        the existing macro naming conventions.

        From Platform.h
        USE() - use a particular third-party library or optional OS service
        ENABLE() - turn on a specific feature of WebKit

        * Source/autotools/SetupAutoconfHeader.m4:
        * Source/cmake/OptionsEfl.cmake:

2013-02-09  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, another GTK+ build fix after r142343.

        * Source/autotools/symbols.filter: Expose the InlineBox delete operator.

2013-02-08  Benjamin Poulain  <bpoulain@apple.com>

        Move workerThreadCount from TestRunner to WebCore Internals
        https://bugs.webkit.org/show_bug.cgi?id=109239

        Reviewed by Darin Adler.

        * Source/autotools/symbols.filter:

2013-02-08  Dean Jackson  <dino@apple.com>

        Only a fool would cut and paste from a terminal showing truncated git logs.
        I am that fool.

        Export the full symbol for InlineBox::nodeAtPoint.

        * Source/autotools/symbols.filter:

2013-02-08  Dean Jackson  <dino@apple.com>

        Snapshotted plug-in should use shadow root
        https://bugs.webkit.org/show_bug.cgi?id=108284

        Unreviewed GTK+ build fix.

        * Source/autotools/symbols.filter: Export InlineBox symbols.

2013-02-08  Seulgi Kim  <seulgikim@company100.net>

        Update .gitignore for vim swap files.
        https://bugs.webkit.org/show_bug.cgi?id=109252

        Reviewed by Dirk Pranke.

        When opening the same files multiple with vim, vim creates a .*.sw[a-p]
        file as the swap file.

        * .gitignore:

2013-02-08  Tomas Popela  <tpopela@redhat.com>

        [GTK] Include files from DerivedSources/webkitdom for introspection
        https://bugs.webkit.org/show_bug.cgi?id=108631

        Reviewed by Martin Robinson.

        Include files from DerivedSources/webkitdom for introspection

        * /Source/WebKit/gtk/GNUmakefile.am:
        * /Source/WebKit2/GNUmakefile.am:

2013-02-07  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Split configure.ac into reusable portions
        https://bugs.webkit.org/show_bug.cgi?id=109246

        Reviewed by Philippe Normand.

        Split up configure.ac into sections based on different "phases"
        of configuration. This should make it easier to find what you are
        looking for as well as creating a "right" place to put things.
        A nice side effect of this is that we can share the different
        modules with a gyp build.

        * Source/autotools/CheckSystemAndBasicDependencies.m4: Added.
        * Source/autotools/FindDependencies.m4: Added.
        * Source/autotools/PrintBuildConfiguration.m4: Added.
        * Source/autotools/ReadCommandLineArguments.m4: Added.
        * Source/autotools/SetupAutoconfHeader.m4: Added.
        * Source/autotools/SetupAutomake.m4: Added.
        * Source/autotools/SetupCompilerFlags.m4: Added.
        * Source/autotools/SetupLibtool.m4: Added.
        * Source/autotools/Versions.m4: Added.
        * configure.ac:

2013-02-07  David Farler  <dfarler@apple.com>

        Makefiles should work for arbitrary SDKs and architectures on Apple ports
        https://bugs.webkit.org/show_bug.cgi?id=107863

        Reviewed by Mark Rowe.

        * Makefile:
        Allow SDKROOT, ARCHS outside of $(ARGS).
        Setting ARCHS => ONLY_ACTIVE_ARCH=NO.
        * Makefile.shared: options to webkitdirs based on SDKROOT
        * Source/Makefile: don't build WebKit2 for iOS

2013-02-07  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Cleanup command-line defines
        https://bugs.webkit.org/show_bug.cgi?id=109213

        Reviewed by Xan Lopez.

        * GNUmakefile.am: Remove references to flags that are now provided
        by autotoolsconfig.h
        * configure.ac: Add new AC_DEFINE invocations for flags that were
        before manually appended to the compiler CPPFLAGS and clump all
        AC_DEFINE invocations together.

2013-02-07  ChangSeok Oh  <shivamidow@gmail.com>

        [GTK][AC] Clutter required version up to 1.12
        https://bugs.webkit.org/show_bug.cgi?id=109037

        Reviewed by Martin Robinson.

        The clutter requried version is changed to 1.12.

        * configure.ac:

2013-02-07  Zan Dobersek  <zdobersek@igalia.com>

        [Autotools] Remove uses of Automake FARSTREAM_(CFLAGS|LIBS) variables, USE_FARSTREAM conditional
        https://bugs.webkit.org/show_bug.cgi?id=109198

        Reviewed by Martin Robinson.

        * GNUmakefile.am: The USE_FARSTREAM conditional is being removed while the WTF_USE_FARSTREAM
        define is currently a no-op.
        * configure.ac: Don't set the Automake conditional as it's currently not needed due
        to checking for Farstream dependency being removed in r142005.

2013-02-07  Gavin Peters  <gavinp@chromium.org>

        Unreviewed, rolling out r142141.
        http://trac.webkit.org/changeset/142141
        https://bugs.webkit.org/show_bug.cgi?id=108990

        Reland r142112, will update Chromium expectations and create a
        Chromium bug instead for the crash.

        * ManualTests/remove-fixed-position-but-keep-compositing.html: Added.

2013-02-07  Gavin Peters  <gavinp@chromium.org>

        Unreviewed, rolling out r142112.
        http://trac.webkit.org/changeset/142112
        https://bugs.webkit.org/show_bug.cgi?id=108990

        The new test scrollingcoordinator/non-fast-scrollable-region-transformed- iframe.html crashes on Lion.

        See http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=scrollingcoordinator%2Fnon-fast-scrollable-region-transformed-iframe.html

        * ManualTests/remove-fixed-position-but-keep-compositing.html: Removed.

2013-02-07  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] configure.ac requires a cleanup
        https://bugs.webkit.org/show_bug.cgi?id=99272

        Reviewed by Martin Robinson.

        Clean up configure.ac. While there is no strict style guideline determined
        for this file the changes enforce the usual indentation of four spaces along
        with line wrapping at 130 characters and grammar fixes/updates.

        * configure.ac:

2013-02-07  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>

        [CoordinatedGraphics] Use ScrollingCoordinator to track fixed layers
        https://bugs.webkit.org/show_bug.cgi?id=108990

        Reviewed by Noam Rosenthal.

        Add a new test that allow us to remove the fixed positioning of a layer but still keeping
        it compositing. Coordinated Graphics had a bug where the CoordinatedSceneGraph would still
        count this layer as fixed position.

        * ManualTests/remove-fixed-position-but-keep-compositing.html: Added.

2013-02-07  Gustavo Noronha Silva  <gns@gnome.org>

        Unreviewed build fix after r141196 for 32 bits autotools.

        * Source/autotools/symbols.filter: restore 32 bits version of the
        WebCore::TextIterator::getLocationAndLengthFromRange(WebCore::Node*,
        WebCore::Range const*, unsigned int&, unsigned int&) symbol.

2013-02-05  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Compile WTF tests of TestWebKitAPI
        https://bugs.webkit.org/show_bug.cgi?id=108935

        Reviewed by Kenneth Rohde Christiansen.

        Build gtest on Linux.

        * WebKit.pro:

2013-02-06  Jonathon Jongsma  <jonathon.jongsma@collabora.com>

        [GStreamer] MediaPlayer's code is not easily reusable by other GStreamer-based players
        https://bugs.webkit.org/show_bug.cgi?id=100261

        Reviewed by Philippe Normand

        * configure.ac: removed farstream requirement for now since it's
        not actually used yet and makes it more difficult to build and test

2013-02-06  Mike West  <mkwst@chromium.org>

        Add an ENABLE_NOSNIFF feature flag.
        https://bugs.webkit.org/show_bug.cgi?id=109029

        Reviewed by Jochen Eisinger.

        This new flag will control the behavior of 'X-Content-Type-Options: nosniff'
        when processing script and other resource types.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-02-05  Jocelyn Turcotte  <jocelyn.turcotte@digia.com>

        [Qt] REGRESSION(r137436): It made all inspector tests timeout on developer builds
        https://bugs.webkit.org/show_bug.cgi?id=106554

        Reviewed by Simon Hausmann.

        Explicitely link WebCore resources in the final DLL only on Windows to
        support force_static_libs_as_shared on other platforms.

        WebKit1 applications don't get the QtWebKit dynamic library loaded
        since libQtWebKitWidgets doesn't depend on libQtWebKit if WebCore and
        WebKit1 are dynamic libraries of their own.

        * Source/api.pri:

2013-02-05  Martin Robinson  <mrobinson@igalia.com>

        Update the NEWS and configuration in preparation for 1.11.5.

        Reviewed by Philippe Normand.

        * configure.ac:

2013-02-04  Benjamin Poulain  <bpoulain@apple.com>

        Kill suspendAnimation(), resumeAnimation() and numberOfActiveAnimations() from DRT/WTR; use Internals
        https://bugs.webkit.org/show_bug.cgi?id=108741

        Reviewed by Tony Chang.

        * Source/autotools/symbols.filter:

2013-02-02  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Adopt the WinCE port to new CMake
        https://bugs.webkit.org/show_bug.cgi?id=108754

        Reviewed by Laszlo Gombos.

        Remove the entry point hack which isn't required in the new
        CMake version with offical WindowsCE support.

        * Source/cmake/OptionsWindows.cmake:

2013-02-01  Benjamin Poulain  <bpoulain@apple.com>

        Clean the String->AtomicString conversion for AnimationController::pauseAnimationAtTime
        https://bugs.webkit.org/show_bug.cgi?id=108558

        Reviewed by Dean Jackson.

        * Source/autotools/symbols.filter:

2013-02-01  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Add WTFURL source files to the build
        https://bugs.webkit.org/show_bug.cgi?id=108215

        Reviewed by Benjamin Poulain.

        * Source/autotools/symbols.filter: Force the export of the KURL::string() symbol.
        This is required when using the WTFURL backend but otherwise doesn't affect the build.

2013-02-01  Alexis Menard  <alexis@webkit.org>

        Enable unprefixed CSS transitions by default.
        https://bugs.webkit.org/show_bug.cgi?id=108216

        Reviewed by Dean Jackson.

        Rename the flag CSS_TRANSFORMS_ANIMATIONS_TRANSITIONS_UNPREFIXED
        to CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED which will be used later to
        guard the unprefixing work for CSS Transforms and animations.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-01-31  Christophe Dumez  <dchris@gmail.com>

        [EFL] Disable Web Intents
        https://bugs.webkit.org/show_bug.cgi?id=108457

        Reviewed by Alexey Proskuryakov.

        Turn off WEB_INTENTS flag in EFL CMake project.

        * Source/cmake/OptionsEfl.cmake:

2013-01-31  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Make it possible to compile WebKit2 Qt related files without access to internal WK2 C++ API
        https://bugs.webkit.org/show_bug.cgi?id=108472

        Reviewed by Andreas Kling.

        When linking WebKit2, also link the WebKit2QML module.

        * Source/api.pri:

2013-01-30  Dominik Röttsches  <dominik.rottsches@intel.com>

        [HarfBuzz] Remove the HarfBuzz-old code
        https://bugs.webkit.org/show_bug.cgi?id=108077

        Reviewed by Benjamin Poulain.

        Rename WTF_USE_HARFBUZZ_NG to WTF_USE_HARFBUZZ since there
        won't be a distinction between ng and non-ng HarfBuzz after
        removing the old code.

        * Source/cmake/OptionsEfl.cmake:

2013-01-29  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK build fix after r141175.

        * Source/autotools/symbols.filter: Export the WebCore::Element::createShadowRoot symbol.

2013-01-29  Shinya Kawanaka  <shinyak@chromium.org>

        [Chromium] Cannot copy text when selecting readonly (or disabled) input elements
        https://bugs.webkit.org/show_bug.cgi?id=106287

        Reviewed by Hajime Morita.

        * Source/autotools/symbols.filter:

2013-01-29  Laszlo Gombos  <l.gombos@samsung.com>

        [CMake] Add minimum version information for tool dependencies
        https://bugs.webkit.org/show_bug.cgi?id=97592

        Reviewed by Kenneth Rohde Christiansen.

        Capture the minimum version information for the tools that are required
        to build WebKit for all CMake based build systems.

        * CMakeLists.txt:

2013-01-29  Nate Chapin  <japhet@chromium.org>

        Enable reuse of cached main resources
        https://bugs.webkit.org/show_bug.cgi?id=105667

        Reviewed by Adam Barth.

        * Source/autotools/symbols.filter: Expose MemoryCache::resourceForURL().

2013-01-29  Laszlo Gombos  <l.gombos@samsung.com>

        Enable Workers for WinCE
        https://bugs.webkit.org/show_bug.cgi?id=108099

        Reviewed by Gyuyoung Kim.

        WORKERS are enabled for all CMake based ports except WinCE.
        Turn on WORKERS for all CMake based ports.

        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2013-01-28  Halton Huo  <halton.huo@intel.com>

        [EFL] Quit debug build without -DSHARED_CORE=ON
        https://bugs.webkit.org/show_bug.cgi?id=104773

        Reviewed by Laszlo Gombos.

        Debug build without -DSHARED_CORE=ON will fail because libwebcore_efl.a
        is too big (>4G) to archive. The solution is simply to abort cmake in
        this condition and notify developer.

        * CMakeLists.txt:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsCommon.cmake: 

2013-01-28  Renata Hodovan  <reni@webkit.org>

        [WK2] Putting QtWebProcess into a chrooted sandbox
        https://bugs.webkit.org/show_bug.cgi?id=90005

        Reviewed by Anders Carlsson and Zoltan Herczeg.

        Make it possible to build WebKit2 with SandboxProcess.

        * Source/QtWebKit.pro:

2013-01-27  David Farler  <dfarler@apple.com>

        REGRESSION (r140912): Broke specifying non-trivial ARCHS value to make / build-webkit
        https://bugs.webkit.org/show_bug.cgi?id=108028

        Reviewed by Dan Bernstein.

        * Makefile: Reverted.
        * Makefile.shared: Reverted.
        * Source/Makefile: Reverted.

2013-01-26  David Farler  <dfarler@apple.com>

        Allow building with arbitrary SDK and ARCHS with make + Xcode
        https://bugs.webkit.org/show_bug.cgi?id=107863

        Reviewed by David Kilzer.

        * Makefile:
        Removed references to legacy Xcode configurations.
        * Makefile.shared:
        Added default ARCHS + SDK settings and parameterized xcodebuild calls.
        * Source/Makefile:
        iOS does not build WebKit2.

2013-01-25  Jussi Kukkonen  <jussi.kukkonen@intel.com>

        [CMake][EFL] Build ThirdParty/leveldb when IndexedDB is enabled
        https://bugs.webkit.org/show_bug.cgi?id=106443

        Reviewed by Laszlo Gombos.

        LevelDB is now included in ThirdParty. Use it when IndexDB is
        enabled for EFL.

        * Source/cmake/OptionsEfl.cmake:
        Set WTF_USE_LEVELDB when IndexedDB is enabled

2013-01-24  Keishi Hattori  <keishi@webkit.org>

        Adjust design of the Calendar Picker
        https://bugs.webkit.org/show_bug.cgi?id=107507

        Reviewed by Kent Tamura.

        * ManualTests/forms/calendar-picker.html: Use pickerCommonChromium.css and calendarPickerChromium.css.

2013-01-24  Soo-Hyun Choi  <s.choi@hackerslab.eu>

        [CMake] Remove the definition of WTF_PLATFORM_WIN from the build system
        https://bugs.webkit.org/show_bug.cgi?id=101635

        Reviewed by Laszlo Gombos.

        WTF_PLATFORM_WIN defined twice: Source/cmake/OptionsWindows.cmake and in
        Source/WTF/wtf/Platform.h.
        It would be more future-proof to have it only defined in common C++ code in
        Platform.h.

        * Source/cmake/OptionsWindows.cmake:

2013-01-23  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed.

        Speculative build fix for the GTK port after 140539.

        * Source/autotools/symbols.filter:

2013-01-22  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] Debug build failure on x86-64
        https://bugs.webkit.org/show_bug.cgi?id=107400

        Reviewed by Xan Lopez.

        * configure.ac: use thin archives for convenience libraries, if AR_FLAGS was not
        overriden through the environment variable.

2013-01-22  Zan Dobersek  <zdobersek@igalia.com>

        [Autotools] Remove the Canvas Path configuration option
        https://bugs.webkit.org/show_bug.cgi?id=107537

        Reviewed by Martin Robinson.

        * configure.ac: Remove the configuration option for the Canvas Path
        feature as this is not in line with the new guidelines about feature
        enablement in the autotools build system.

2013-01-22  Zan Dobersek  <zdobersek@igalia.com>

        [Autotools] Place a warning in configure.ac about adding new configuration options
        https://bugs.webkit.org/show_bug.cgi?id=107559

        Reviewed by Martin Robinson.

        * configure.ac: Add an eye-catching section explaining that changes in this file might
        not be necessary at all and a link pointing to the guidelines on the Trac wiki.

2013-01-21  Dirk Schulze  <dschulze@adobe.com>

        Add build flag for Canvas's Path object (disabled by default)
        https://bugs.webkit.org/show_bug.cgi?id=107473

        Reviewed by Dean Jackson.

        Add CANVAS_PATH build flag to build systems.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:

2013-01-19  Ryosuke Niwa  <rniwa@webkit.org>

        Delete webkit-perf.appspot.com code from WebKit repository
        https://bugs.webkit.org/show_bug.cgi?id=107390

        Reviewed by Adam Barth.

        Delete webkit-perf.appspot.com code from WebKit repository since I maintain
        and push the code via https://github.com/rniwa/webkit-perf now.

        * Websites/webkit-perf.appspot.com: Removed.

2013-01-19  Philip Rogers  <pdr@google.com>

        Merge SVGStylable into SVGStyledElement
        https://bugs.webkit.org/show_bug.cgi?id=106877

        Reviewed by Dirk Schulze.

        SVG2 changes element inheritance so all SVGElements are stylable. As a first-step towards a
        cleaner class hierarchy, this patch moves SVGStylable into SVGStyledElement.

        * wscript:

2013-01-18  Sudarsana Nagineni  <sudarsana.nagineni@intel.com>

        [CMake] Fix CMake warnings
        https://bugs.webkit.org/show_bug.cgi?id=107290

        Reviewed by Laszlo Gombos.

        Add missing WebKit options to CMake features list.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-01-18  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r140005.
        http://trac.webkit.org/changeset/140005
        https://bugs.webkit.org/show_bug.cgi?id=107235

        broke downstream Chromium interactive_ui_tests (Requested by
        dominicc on #webkit).

        * Source/autotools/symbols.filter:

2013-01-17  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Build with LevelDB when IndexedDB is enabled
        https://bugs.webkit.org/show_bug.cgi?id=103220

        Reviewed by Gustavo Noronha Silva.

        * configure.ac: Detect whether the IndexedDatabase feature is enabled. We cannot
        use the typical approach for feature detection since we need to adjust the automake
        file output based on whether or not IndexedDatabase is enabled.

2013-01-17  Nate Chapin  <japhet@chromium.org>

        Enable reuse of cached main resources
        https://bugs.webkit.org/show_bug.cgi?id=105667

        Reviewed by Antti Koivisto.

        * Source/autotools/symbols.filter: Expose MemoryCache::resourceForURL().

2013-01-17  Seokju Kwon  <seokju.kwon@gmail.com>

        [EFL][CMAKE] Compress resource files of inspector
        https://bugs.webkit.org/show_bug.cgi?id=106210

        Reviewed by Gyuyoung Kim.

        Add compressing JavaScript
        for smaller package and faster connection of remote web inspector.

        * Source/PlatformEfl.cmake:

2013-01-16  Hugo Parente Lima  <hugo.lima@openbossa.org>

        [CMake] Report actual values for feature configuration (instead of the default)
        https://bugs.webkit.org/show_bug.cgi?id=107010

        Reviewed by Laszlo Gombos.

        * Source/cmake/WebKitFeatures.cmake:

2013-01-16  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Move 'DefaultTheme' folder to WebCore/platform/efl
        https://bugs.webkit.org/show_bug.cgi?id=106969

        Reviewed by Benjamin Poulain.

        * Source/PlatformEfl.cmake: Change DefaultTheme path.
        * Source/cmake/OptionsEfl.cmake: ditto.

2013-01-15  Alberto Garcia  <agarcia@igalia.com>

        Fix typos in WebKitFeatures.cmake
        https://bugs.webkit.org/show_bug.cgi?id=106952

        Reviewed by Martin Robinson.

        * Source/cmake/WebKitFeatures.cmake:
        Replace "Toogle" with "Toggle".

2013-01-15  Zan Dobersek  <zandobersek@gmail.com>

        [Autotools] Add support for WebKit2-only builds
        https://bugs.webkit.org/show_bug.cgi?id=106889

        Reviewed by Gustavo Noronha Silva.

        * GNUmakefile.am: Only copy the WebKit1 documentation into the destination
        directory if building WebKit1.
        * configure.ac: Add a configuration option for disabling the WebKit1 build.
        Only conditionally copy WebKit1-specific targets from the input files. Some
        small style changes to the WebKit2 configuration flag included as well.

2013-01-14  Nate Chapin  <japhet@chromium.org>

        Enable reuse of cached main resources
        https://bugs.webkit.org/show_bug.cgi?id=105667

        Reviewed by Antti Koivisto.

        * Source/autotools/symbols.filter: Expose MemoryCache::resourceForURL().

2013-01-14  Alexandre Rostovtsev  <tetromino@gentoo.org>

        Do not hardcode -ldl in OPENGL_LIBS
        https://bugs.webkit.org/show_bug.cgi?id=96602

        Reviewed by Philippe Normand.

        Some non-Linux systems, e.g. FreeBSD, have dlopen() as part of their
        libc, and do not use a separate libdl.

        * configure.ac:

2013-01-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and configure.ac for 1.11.4 release

        * configure.ac: Bump version numbers.

2013-01-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add API to set the web extensions directory to WebKit2 GTK+
        https://bugs.webkit.org/show_bug.cgi?id=106462

        Reviewed by Xan Lopez.

        * Source/autotools/symbols.filter: Update
        WebGtkExtensionManager::initialize symbol.

2013-01-10  Tony Chang  <tony@chromium.org>

        Speed up supplemental dependency computation
        https://bugs.webkit.org/show_bug.cgi?id=106503

        Reviewed by Adam Barth.

        * Source/cmake/WebKitMacros.cmake: Add --idlAttributesFile to the binding generation step in cmake.

2013-01-10  Zan Dobersek  <zandobersek@gmail.com>

        [Autotools] Add the AM_WEBKIT_FEATURE_CONDITIONAL macro
        https://bugs.webkit.org/show_bug.cgi?id=106576

        Reviewed by Martin Robinson.

        Replace the AC_CHECK_WEBKIT_FEATURE_ENABLED with the new macro.
        The former was executing actions based on the passed-in feature being
        enabled in the (possibly overridden) GNUmakefile.features.am, the actions
        usually affecting the Automake conditional value that was set up afterwards.
        The new macro does this directly, setting up an Automake conditional of the
        same name as the feature that was checked.

        * Source/autotools/webkitfeature.m4:

2013-01-10  Zan Dobersek  <zandobersek@gmail.com>

        Remove the ENABLE_ANIMATION_API feature define occurences
        https://bugs.webkit.org/show_bug.cgi?id=106544

        Reviewed by Simon Fraser.

        The Animation API code was removed in r137243. The ENABLE_ANIMATION_API
        feature define handling still lingers in various build systems and configurations
        but is of no use, so it should be removed.

        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-01-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add support for loading web process extensions
        https://bugs.webkit.org/show_bug.cgi?id=105631

        Reviewed by Gustavo Noronha Silva.

        * GNUmakefile.am: Add webkit2_web_extension_h_api.
        * Source/autotools/symbols.filter: Export WebGtkExtensionManager
        symbols required by the injected bundle lib.

2013-01-10  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Add gstreamer 1.0.5 to jhbuild
        https://bugs.webkit.org/show_bug.cgi?id=106178

        Reviewed by Laszlo Gombos.

        Update EFL CMake configuration to require gstreamer
        1.0.5.

        * Source/cmake/FindGStreamer.cmake:
        * Source/cmake/OptionsEfl.cmake:

2013-01-09  Hajime Morrita  <morrita@google.com>

        [Shadow DOM] Distribution related code on ElementShadow should be minimized.
        https://bugs.webkit.org/show_bug.cgi?id=106294

        Reviewed by Dimitri Glazkov.

        * Source/autotools/symbols.filter:

2013-01-08  Zan Dobersek  <zandobersek@gmail.com>

        Add an Autoconf macro that checks whether a given feature is enabled
        https://bugs.webkit.org/show_bug.cgi?id=106380

        Reviewed by Martin Robinson.

        Add the AC_CHECK_WEBKIT_FEATURE_ENABLED macro. It checks the generated
        Source/WebCore/GNUmakefile.features.am file to determine whether the
        given feature is enabled or disabled in the build that's being configured.

        * Source/autotools/webkitfeature.m4: Added.

2013-01-08  Hajime Morrita  <morrita@google.com>

        [Shadow DOM] Distribution related code on ShadowRoot should be minimized.
        https://bugs.webkit.org/show_bug.cgi?id=106282

        Reviewed by Dimitri Glazkov.

        * Source/autotools/symbols.filter:

2013-01-03  Sergio Villar Senin  <svillar@igalia.com>

        [GTK] Add WebP image support
        https://bugs.webkit.org/show_bug.cgi?id=105915

        Reviewed by Martin Robinson.

        WebP is from now on a dependency for WebKitGtk+.

        * configure.ac: added WebP library detection.

2013-01-07  Xianzhu Wang  <wangxianzhu@chromium.org>

        Add window.internals.nonFastScrollableRects for testing scrollable areas in fast/slow paths
        https://bugs.webkit.org/show_bug.cgi?id=105546

        Reviewed by James Robinson.

        Export the new symbol.

        * Source/autotools/symbols.filter:

2013-01-04  Adam Klein  <adamk@chromium.org>

        Remove ENABLE_MUTATION_OBSERVERS #define
        https://bugs.webkit.org/show_bug.cgi?id=105459

        Reviewed by Ryosuke Niwa.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2013-01-04  Zan Dobersek  <zandobersek@gmail.com>

        REGRESSION (r138184): transitions/transitions-parsing.html is failing on GTK
        https://bugs.webkit.org/show_bug.cgi?id=105522

        Reviewed by Xan Lopez.

        Remove the configuration flag covering unprefixed CSS transition property names.
        It does not introduce any dependency. The unprefixed property names should be
        available by default.

        * configure.ac:

2013-01-03  Tony Chang  <tony@chromium.org>

        Generate internal.settings from Settings.in
        https://bugs.webkit.org/show_bug.cgi?id=104740

        Reviewed by Adam Barth.

        * Source/cmake/WebKitMacros.cmake: Specify additional output files from make_settings.pl.

2013-01-02  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL][CMAKE] Remove duplicated conditionals
        https://bugs.webkit.org/show_bug.cgi?id=105905

        Reviewed by Laszlo Gombos.

        * Source/cmake/OptionsEfl.cmake: Remove set(WTF_USE_GLX 1).

2013-01-02  Tony Chang  <tony@chromium.org>

        Unreviewed, rolling out r138661.
        http://trac.webkit.org/changeset/138661
        https://bugs.webkit.org/show_bug.cgi?id=104740

        Compile problems on EFL

        * Source/cmake/WebKitMacros.cmake:

2013-01-02  Tony Chang  <tony@chromium.org>

        Generate internal.settings from Settings.in
        https://bugs.webkit.org/show_bug.cgi?id=104740

        Reviewed by Adam Barth.

        * Source/cmake/WebKitMacros.cmake: Specify additional output files from make_settings.pl.

2013-01-02  Elliott Sprehn  <esprehn@chromium.org>

        Transitions and animations do not apply to CSS ::before and ::after pseudo-elements
        https://bugs.webkit.org/show_bug.cgi?id=92591

        Reviewed by Eric Seidel.

        Expose Element::pseudoElement for Internals.

        * Source/autotools/symbols.filter:

2013-01-01  KwangYong Choi  <ky0.choi@samsung.com>

        [EFL] Enable MHTML feature
        https://bugs.webkit.org/show_bug.cgi?id=105815

        Reviewed by Laszlo Gombos.

        ENABLE_MHTML is now ON for EFL.

        * Source/cmake/OptionsEfl.cmake:

2012-12-31  Kondapally Kalyan  <kalyan.kondapally@intel.com>

        [EFL][WebGL] Add compile time support for GLES2.
        https://bugs.webkit.org/show_bug.cgi?id=105816

        Reviewed by Kenneth Rohde Christiansen.

        This patch adds build support for GLES2.
        GLES2 support can be enabled during compile time by passing -DENABLE_GLES2=ON as
        cmake config parameter. GLES2 options is not enabled by default. This patch doesn't
        address all the build issues related to GLES2 but only adds the needed support in
        OptionsEfl.cmake.

        * Source/cmake/OptionsEfl.cmake:

2012-12-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Move ImageDiff to the Tools directory root
        https://bugs.webkit.org/show_bug.cgi?id=105421

        Reviewed by Kenneth Rohde Christiansen.

        * GNUmakefile.am: Remove the old ImageDiff makefile include.

2012-12-30  Kondapally Kalyan  <kalyan.kondapally@intel.com>

        [EFL] [WebGL] Rename EGLConfigHelper as EGLConfigSelector.
        https://bugs.webkit.org/show_bug.cgi?id=105876

        Reviewed by Kenneth Rohde Christiansen.

        This is to sync the naming conventions of our classes in both EGL and GLX implementations. 
        In our GLX implementation, class responsible for the same functionality is named as GLXConfigSelector. 
        This patch renames EGLConfigHelper as EGLConfigSelector.

        * Source/cmake/OptionsEfl.cmake:

2012-12-30  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Enable TEMPLATE_ELEMENT feature
        https://bugs.webkit.org/show_bug.cgi?id=105865

        Reviewed by Laszlo Gombos.

        * Source/cmake/OptionsEfl.cmake: Add ENABLE_TEMPLATE_ELEMENT macro.

2012-12-27  Kondapally Kalyan  <kalyan.kondapally@intel.com>

        [EFL][WebGL] Implement EGL support with GLX.
        https://bugs.webkit.org/show_bug.cgi?id=105602

        Reviewed by Kenneth Rohde Christiansen.

        Adds support for EGL with GLX backend. EGL support can be enabled during compile time
        by passing -DENABLE_EGL=ON as cmake config parameter.

        * Source/cmake/OptionsEfl.cmake:

2012-12-24  Kondapally Kalyan  <kalyan.kondapally@intel.com>

        [EFL [WebGL] GLES2 detection is broken.
        https://bugs.webkit.org/show_bug.cgi?id=105677

        We use the logic in FindGLES.cmake to detect GLES2 support during compile time.
        OPENGLES2_FOUND is never set, even though OPENGLES2_INCLUDE_DIR and OPENGLES2_LIBRARY
        contain right information. The name passed to find_package_handle_standard_args seems to be the issue here.
        This patch changes the name passed to find_package_handle_standard_args to OPENGLES2.

        Reviewed by Kenneth Rohde Christiansen.

        * Source/cmake/FindGLES.cmake:

2012-12-20  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove plugin process configuration option
        https://bugs.webkit.org/show_bug.cgi?id=105564

        Reviewed by Carlos Garcia Campos.

        Remove the --enable-plugin-process configuration option, opting instead to
        always build the plugin process when building WebKit2. It isn't very interesting
        for downstream to enable or disable the plugin process. It should always be
        enabled for WebKit2 and it's better for us not to have to keep a disabled plugin
        process building. Additionally, the in-process plugin isn't functional, since
        plugins depend on GTK+ 2 and WebKit2 depends on GTK+ 3.

        * configure.ac: Remove the configuration option.

2012-12-21  Elliott Sprehn  <esprehn@chromium.org>

        Replace documentFragmentIsShadowRoot with isTreeScope
        https://bugs.webkit.org/show_bug.cgi?id=105345

        Reviewed by Dimitri Glazkov.

        Expose isTreeScope symbol.

        * Source/autotools/symbols.filter:

2012-12-21  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r138338.
        http://trac.webkit.org/changeset/138338
        https://bugs.webkit.org/show_bug.cgi?id=105621

        speculative rollout because fast/dom/shadow/content-element-
        distributed-nodes.html is crashing on linux debug. (Requested
        by loislo on #webkit).

        * Source/autotools/symbols.filter:

2012-12-20  Elliott Sprehn  <esprehn@chromium.org>

        Replace documentFragmentIsShadowRoot with isTreeScope
        https://bugs.webkit.org/show_bug.cgi?id=105345

        Reviewed by Dimitri Glazkov.

        Expose isTreeScope symbol.

        * Source/autotools/symbols.filter:

2012-12-20  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Build break with latest EFL libraries.
        https://bugs.webkit.org/show_bug.cgi?id=104827

        Reviewed by Laszlo Gombos.

        The eo EFL package is introduced and evas and ecore use it since 1.8.
        While introducing Eo, EFL changed several structures of Evas and Ecore
        from own specific class to Eo.

        So, this patch adds FindEo and changes declaration of Evas, Evas_Object,
        Ecore_Timer to build with latest EFL libraries.

        * Source/cmake/FindEo.cmake: Added.
        * Source/cmake/OptionsEfl.cmake:
        Modified to check Eo when version of EFL libraries is 1.8.

2012-12-20  Kondapally Kalyan  <kalyan.kondapally@intel.com>

        [EFL][WebGL][Wk2] Replace HAVE(GLX) checks with USE(GLX).
        https://bugs.webkit.org/show_bug.cgi?id=105431

        Reviewed by Kenneth Rohde Christiansen.

        This patch changes the check HAVE(GLX) to USE(GLX).
        This would enable us to choose our preferred GL backend during build time.

        * Source/cmake/OptionsEfl.cmake:

2012-12-20  Zan Dobersek  <zandobersek@gmail.com>

        [GTK] Remove the --enable-unstable-features configuration option
        https://bugs.webkit.org/show_bug.cgi?id=105327

        Reviewed by Martin Robinson.

        Remove the unnecessary feature_defines_unstable variable.
        Remove the unstable-features configuration option.

        * configure.ac:
        * GNUmakefile.am:

2012-12-20  Dominik Röttsches  <dominik.rottsches@intel.com>

        [EFL] MiniBrowser does not play Infinite Gangnam Style
        https://bugs.webkit.org/show_bug.cgi?id=103531

        Reviewed by Kenneth Rohde Christiansen.

        WebAudio now switched to ON for EFL.

        * Source/cmake/OptionsEfl.cmake:

2012-12-19  Yael Aharon  <yael.aharon@intel.com>

        [EFL] Allow the build system to find OpenGL ES
        https://bugs.webkit.org/show_bug.cgi?id=104760

        Reviewed by Laszlo Gombos.

        Add a way to find if GLESv2 is supported by the build system.
        Support for GLESv2 will be added separately.

        * Source/cmake/FindGLES.cmake: Added.

2012-12-19  Alexis Menard  <alexis@webkit.org>

        Implement CSS parsing for CSS transitions unprefixed.
        https://bugs.webkit.org/show_bug.cgi?id=104804

        Reviewed by Dean Jackson.

        Add a new flag ENABLE_CSS_TRANSFORMS_ANIMATIONS_TRANSITIONS_UNPREFIXED
        to cover the work of unprefixing Transforms, Animations and
        Transitions. It will let the possibility of each ports to turn it off
        in their release branches until we're confident that these CSS
        properties are ready to be unprefixed.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:

2012-12-18  Ming Xie  <mxie@rim.com>

        [BlackBerry] Add -fno-exceptions to CXX_FLAGS
        https://bugs.webkit.org/show_bug.cgi?id=105306

        Reviewed by Rob Buis.

        Disable exception handling. We don't have any try or catch
        constructs in our code.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-12-18  Kondapally Kalyan  <kalyan.kondapally@intel.com>

        [EFL] Allow the build system to detect EGL support.
        https://bugs.webkit.org/show_bug.cgi?id=105287

        Reviewed by Laszlo Gombos.

        Currently, we don't have any way to determine if EGL is supported by the build.
        This patch adds support for this. The patch doesn't make any changes to take this into
        use. This will be done in another patch.

        * Source/cmake/FindEGL.cmake:

2012-12-17  Halton Huo  <halton.huo@intel.com>

        [EFL] Add ecore_imf_evas to FindEcore.cmake
        https://bugs.webkit.org/show_bug.cgi?id=105159

        Reviewed by Laszlo Gombos.

        ecore_imf_evas is a separate library, we should add for EFL port as well.

        * Source/cmake/FindEcore.cmake: Add finding FIND_EFL_LIBRARY for ecore_imf_evas

2012-12-17  Kenneth Rohde Christiansen  <kenneth@webkit.org>

        Add manual test to verify that geometry methods (moveTo, etc) work
        https://bugs.webkit.org/show_bug.cgi?id=105160

        Reviewed by Alexis Menard.

        * ManualTests/window-geometry.html: Added.

2012-12-16  ChangSeok Oh  <shivamidow@gmail.com>

        [GTK][AC] Build failure with an option --with-acceleration-backend=clutter
        https://bugs.webkit.org/show_bug.cgi?id=105027

        Reviewed by Gustavo Noronha Silva.

        I turned off opengl related variables, enable_glx, enable_egl and enable_gles2
        when selecting clutter as the acceleration-backend. Because they seem useless for the AC by clutter.

        * configure.ac:

2012-12-15  Simon Fraser  <simon.fraser@apple.com>

        Fix repaint issues when resizing a window with centered content, for platforms with a tile cache
        https://bugs.webkit.org/show_bug.cgi?id=105073

        Reviewed by Dan Bernstein.

        Add a manual test for window resize with a centered element.

        * ManualTests/resize-repaint.html: Added.

2012-12-13  Stephen White  <senorblanco@chromium.org>

        Added manual test for canvas setFont speed.
        https://bugs.webkit.org/show_bug.cgi?id=104923

        Reviewed by James Robinson.

        * ManualTests/canvas-font-speed.html: Added.

2012-12-13  Jerome Pasion  <jerome.pasion@digia.com>

        [Qt] Doc: Fixing Qt WebKit reference documentation.

        Reviewed by Simon Hausmann.

        Fixes:
        -added \module for C++ classes and \qmlmodule for QML types
        -added links to the Qt WebKit Examples pages
        -fixed the qhp settings for Qt Creator

        Task-number: QTBUG-28583
        Task-number: QTBUG-28418
        Task-number: QTBUG-27646

        * Source/qtwebkit.qdocconf:

2012-12-13  Jerome Pasion <Jerome.Pasion@digia.com>

        [Qt] Fix missing doc dependency to examples

        Reviewed by Simon Hausmann.

        * Source/qtwebkit.qdocconf:

2012-12-12  John Griggs  <jgriggs@rim.com>

        2012-12-12  John Griggs  <jgriggs@rim.com>

        [BlackBerry] Update Media Controls for BlackBerry Platform
        https://bugs.webkit.org/show_bug.cgi?id=104443
        https://przilla.ott.qnx.com/bugzilla/show_bug.cgi?id=204748

        Update Media Controls for BlackBerry platform to allow audio, embedded video and fullscreen video controls to be positioned and styled differently.

        Reviewed by Rob Buis.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-12-12  Xianzhu Wang  <wangxianzhu@chromium.org>

        Pre-painting should not paint out-of-view fixed position elements
        https://bugs.webkit.org/show_bug.cgi?id=104724

        Reviewed by James Robinson.

        New manual test.

        * ManualTests/compositing/fixed-position-out-of-view-scroll-prepaint.html: Added.

2012-12-12  Krzysztof Czech  <k.czech@samsung.com>

        [EFL] Possibility to turn off accessibility feature for WebKit-EFL.
        https://bugs.webkit.org/show_bug.cgi?id=103036

        Reviewed by Laszlo Gombos.

        Guard dependencies for accessibility (ATK), so that they can be turned off.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2012-12-12  Zan Dobersek  <zandobersek@gmail.com>

        [GTK] Remove the last of unnecessary configuration options in configure.ac
        https://bugs.webkit.org/show_bug.cgi?id=104793

        Reviewed by Martin Robinson.

        Remove the last of the configuration options that don't introduce any dependencies and/or
        are enabled by default in the GNUmakefile.features.am.in file.

        * configure.ac:

2012-12-11  Jocelyn Turcotte  <jocelyn.turcotte@digia.com>

        [Qt] Fix the inspector not showing up on Windows
        https://bugs.webkit.org/show_bug.cgi?id=104677

        Reviewed by Simon Hausmann.

        Resources aren't transfered properly from a static WebCore to the final DLL
        with MSVC since the linker only pick from the static lib symbols that
        are referenced in the final binary.

        Move the resource files directly to Qt5WebKit.dll to make sure that they are
        available.

        * Source/api.pri:

2012-12-11  Xianzhu Wang  <wangxianzhu@chromium.org>

        Add window.internals.mainThreadScrollReasonsAsText for testing slow scrolling
        https://bugs.webkit.org/show_bug.cgi?id=104714

        Reviewed by Eric Seidel.

        Export symbol Page::mainThreadScrollingReasonsAsText().

        * Source/autotools/symbols.filter:

2012-12-11  Michael Pruett  <michael@68k.org>

        [JSC] Add tests for explicit serialization values
        https://bugs.webkit.org/show_bug.cgi?id=104423

        Reviewed by Oliver Hunt.

        Add tests for serialization and deserialization mechanisms of
        the JSC implementation of SerializedScriptValue. Similar tests
        already exist for the V8 implementation.

        * Source/autotools/symbols.filter:

2012-12-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Install GObject DOM bindings headers in its own directory
        https://bugs.webkit.org/show_bug.cgi?id=104663

        Reviewed by Gustavo Noronha Silva.

        * GNUmakefile.am: Add GENSOURCES_WEBKITDOM and
        webkitgtk_gdom_built_h_api variables.

2012-12-11  Stephen Kelly  <stephen.kelly@kdab.com>

        WebKit tests for the Qt API should include tests of CMake config files
        https://bugs.webkit.org/show_bug.cgi?id=104003

        Reviewed by Simon Hausmann.

        The Qt WebKit CI system is not going to run this test, but it can
        be run locally and to test packages.

        * Source/tests.pri:

2012-12-11  Xabier Rodriguez Calvar <calvaris@igalia.com>

        [GTK][jhbuild] Switch to GStreamer 1.0 build
        https://bugs.webkit.org/show_bug.cgi?id=91727

        Reviewed by Philippe Normand.

        Switch build-webkit --gtk to GStreamer 1.0 support and build the
        necessary GStreamer git modules from JHBuild.

        * configure.ac: Removed GStreamer unstable API flag, made
        GStreamer 1.0 default instead of 0.10 and made required version
        1.0.3. In case no GStreamer version is specified, it falls back to
        0.10. In case no video or web-audio are requested, GStreamer
        and Farstream checks are not performed.

2012-12-11  Zan Dobersek  <zandobersek@gmail.com>

        [GTK] Feature enabling/disabling should be possible through build-webkit
        https://bugs.webkit.org/show_bug.cgi?id=99271

        Reviewed by Gustavo Noronha Silva.

        The autogen.sh script now calls the Tools/gtk/override-feature-defines script
        before calling autoreconf. This ensures that Source/WebCore/GNUmakefile.features.am
        is present and properly modified if the build-webkit script intends to override
        any feature.

        The Source/WebCore/GNUmakefile.features.am file is added to the ignored files list
        so it doesn't pop out as a new, untracked file.

        * .gitignore:
        * autogen.sh:

2012-12-10  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove the Pango backend
        https://bugs.webkit.org/show_bug.cgi?id=104569

        Reviewed by Daniel Bates.

        Always look for Freetype and Harfbuzz. We still depend on Pango for a few
        things, so we cannot yet eliminate our dependency on Pango.

        * configure.ac: Always look for FreeType/Harfbuzz.

2012-12-10  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Change the minimum required EFL version to 1.6
        https://bugs.webkit.org/show_bug.cgi?id=104431

        Reviewed by Kenneth Rohde Christiansen.

        Change the minimum required EFL version to 1.6 from 1.7 to enable
        building on Tizen.

        The elementary EFL package is only required to build MiniBrowser,
        so I moved the required only to the Minibrowser CMake file.

        * Source/cmake/OptionsEfl.cmake:

2012-12-10  Alexis Menard  <alexis@webkit.org>

        [CSS3 Backgrounds and Borders] Remove CSS3_BACKGROUND feature flag.
        https://bugs.webkit.org/show_bug.cgi?id=104539

        Reviewed by Antonio Gomes.

        As discussed on webkit-dev it is not needed to keep this feature flag
        as support for <position> type is a small feature that is already
        implemented by three other UAs. It was useful while landing this
        feature as partial bits were landed one after one.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:

2012-12-10  Jocelyn Turcotte  <jocelyn.turcotte@digia.com>

        [Qt] Remove the support for building a debug WebKit with a release Qt
        https://bugs.webkit.org/show_bug.cgi?id=104560

        Reviewed by Tor Arne Vestbø.

        This creates issues with non-framework builds of Qt (necessary for debug-only
        builds) since a Qt5 prefix is now added to the base target name.

        * Source/api.pri:

2012-12-09  Gustavo Noronha Silva  <gustavo.noronha@collabora.com>

        [Soup] utilize multipart/x-mixed-replace support recently added to libsoup
        https://bugs.webkit.org/show_bug.cgi?id=94515

        Reviewed by Martin Robinson.

        * configure.ac: require soup 2.40.0, which adds the new support.

2012-12-10  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Bring Harfbuzz-ng support to Gtk
        https://bugs.webkit.org/show_bug.cgi?id=92098

        Reviewed by Gustavo Noronha Silva.

        Add support for detecting HarfBuzz during configuration phase. Add these
        flags to the FreeType ones since HarfBuzz support is part of the FreeType
        backend.

        * configure.ac: Detect HarfBuzz.

2012-12-08  Seokju Kwon  <seokju.kwon@gmail.com>

        [EFL][WK2] Add Remote Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=98705

        Reviewed by Gyuyoung Kim.

        Prepare inspectorPageIndex.html for remote web inspector.

        * Source/PlatformEfl.cmake:

2012-12-06  Rick Byers  <rbyers@chromium.org>

        CSS cursor property should support webkit-image-set
        https://bugs.webkit.org/show_bug.cgi?id=99493

        Reviewed by Beth Dakin.

        Add ENABLE_MOUSE_CURSOR_SCALE (disabled by default)

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-12-06  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Remove ENABLE_GLIB_SUPPORT CMake variable
        https://bugs.webkit.org/show_bug.cgi?id=104278

        Reviewed by Brent Fulgham.

        The variable is unnecessary as glib is a required dependency
        for the EFL port and glib is not used by other ports building
        with CMake.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-12-06  Tony Chang  <tony@chromium.org>

        REGRESSION(r135082): Restore the ability to insert author level style sheets from script
        https://bugs.webkit.org/show_bug.cgi?id=104042

        Reviewed by Antti Koivisto.

        Update exports for Internals.cpp.

        * Source/autotools/symbols.filter:

2012-12-06  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Optimize binary size by removing dead sections on unix/gcc
        https://bugs.webkit.org/show_bug.cgi?id=102827

        Reviewed by Kenneth Rohde Christiansen.

        Turn on -ffunction-sections -fdata-sections --gc-section flags
        on unix for the gcc toolchain for release builds to optimize binary
        size for the Efl port.

        * Source/cmake/OptionsEfl.cmake:

2012-12-06  Seokju Kwon  <seokju.kwon@gmail.com>

        [EFL] Fix destination path in Source/PlatformEfl.cmake
        https://bugs.webkit.org/show_bug.cgi?id=104237

        Reviewed by Laszlo Gombos.

        Remove InspectorBackendCommands.js when copying it for the consistency in Source/PlatformEfl.cmake.

        * Source/PlatformEfl.cmake:

2012-12-06  Shinya Kawanaka  <shinyak@chromium.org>

        Internals.getElementByIdInShadowRoot is nonsense now.
        https://bugs.webkit.org/show_bug.cgi?id=104241

        Reviewed by Kent Tamura.

        * Source/autotools/symbols.filter:

2012-12-05  Halton Huo  <halton.huo@intel.com>

        [CMake] Unify coding style for CMake files
        https://bugs.webkit.org/show_bug.cgi?id=103605

        Reviewed by Laszlo Gombos.

        Update cmake files(.cmake, CMakeLists.txt) with following style rules:
        1. Indentation
        1.1 Use spaces, not tabs.
        1.2 Four spaces as indent.
        2. Spacing
        2.1 Place one space between control statements and their parentheses.
            For eg, if (), else (), elseif (), endif (), foreach (),
            endforeach (), while (), endwhile (), break ().
        2.2 Do not place spaces between function and macro statements and
            their parentheses. For eg, macro(), endmacro(), function(),
            endfunction().
        2.3 Do not place spaces between a command or function or macro and its
            parentheses, or between a parenthesis and its content. For eg,
            message("testing") not message( "testing") or message ("testing" )
        2.4 No space at line ending.
        3. Lowercase when call commands macros and functions. For eg,
           add_executable() not ADD_EXECUTABLE(), set() not SET().

        * CMakeLists.txt:
        * Source/CMakeLists.txt:
        * Source/PlatformEfl.cmake:
        * Source/cmake/EFLHelpers.cmake:
        * Source/cmake/FindATK.cmake:
        * Source/cmake/FindCFLite.cmake:
        * Source/cmake/FindCairo.cmake:
        * Source/cmake/FindDBus.cmake:
        * Source/cmake/FindDirectX.cmake:
        * Source/cmake/FindE_DBus.cmake:
        * Source/cmake/FindEcore.cmake:
        * Source/cmake/FindEdje.cmake:
        * Source/cmake/FindEet.cmake:
        * Source/cmake/FindEeze.cmake:
        * Source/cmake/FindEfreet.cmake:
        * Source/cmake/FindEina.cmake:
        * Source/cmake/FindElementary.cmake:
        * Source/cmake/FindEnchant.cmake:
        * Source/cmake/FindEvas.cmake:
        * Source/cmake/FindFontconfig.cmake:
        * Source/cmake/FindGLIB.cmake:
        * Source/cmake/FindGStreamer.cmake:
        * Source/cmake/FindGperf.cmake:
        * Source/cmake/FindHarfBuzz.cmake:
        * Source/cmake/FindICU.cmake:
        * Source/cmake/FindLibSoup.cmake:
        * Source/cmake/FindQuickTimeSDK.cmake:
        * Source/cmake/FindSqlite.cmake:
        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsWinCE.cmake:
        * Source/cmake/OptionsWindows.cmake:
        * Source/cmake/WebKitFS.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/WebKitHelpers.cmake:
        * Source/cmake/WebKitMacros.cmake:
        * Source/cmake/WebKitPackaging.cmake:
        * Source/cmake/gtest/CMakeLists.txt:

2012-12-05  Yong Li  <yoli@rim.com>

        [BlackBerry] Build with libjpegturbo
        https://bugs.webkit.org/show_bug.cgi?id=104152

        Reviewed by Rob Buis.

        RIM PR# 196975.
        This change is made by Ming Xie to link with libjpegturbo.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-12-05  Leo Yang  <leoyang@rim.com>

        [BlackBerry] Enable CSS_IMAGE_RESOLUTION
        https://bugs.webkit.org/show_bug.cgi?id=104132

        Reviewed by Yong Li.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-12-05  Laszlo Gombos  <l.gombos@samsung.com>

        [CMake] Enable to build WebKit sources without Tools
        https://bugs.webkit.org/show_bug.cgi?id=103918

        Reviewed by Gyuyoung Kim.

        Turn on building Tools by default only if ENABLE_TOOLS is not explicitly set
        (enabled or disabled) and the Tools directory exists for all CMake based ports.

        This change enables the possibility to build WebKit even if the Tools directory 
        does not exists.

        * CMakeLists.txt:

2012-12-04  Kondapally Kalyan  <kalyan.kondapally@intel.com>

        [EFL][WK2][AC] USE_GRAPHICS_SURFACE should be enabled only if Xcomposite and Xrender extensions are found.
        https://bugs.webkit.org/show_bug.cgi?id=103710.

        Reviewed by Kenneth Rohde Christiansen.

        When using GLX back-end we are dependent on GLX support, Xcomposite and Xrender extensions.
        In this case, GraphicsSurface usage depends on Xcomposite and Xrender extensions. 
        USE_GRAPHICS_SURFACE should be enabled only if Xcomposite and Xrender extensions are found.

        * Source/cmake/OptionsEfl.cmake:

2012-12-03  Pierre Rossi  <pierre.rossi@digia.com>

        [Qt] another stab at fixing the windows build 

        It seems the QT_BUILD_{TARGET}_LIB are not set as they should by qt_module.prf.
        Define them by hand to be on the safe side.

        * Source/widgetsapi.pri:

2012-12-03  Alexis Menard  <alexis@webkit.org>

        [EFL] Enable CSS3 background-position offsets by default.
        https://bugs.webkit.org/show_bug.cgi?id=103879

        Reviewed by Laszlo Gombos.

        Enable the feature for EFL only.

        * Source/cmake/OptionsEfl.cmake:

2012-12-03  Alexis Menard  <alexis@webkit.org>

        [GTK] Enable CSS3 background-background position offset by default.
        https://bugs.webkit.org/show_bug.cgi?id=103903

        Reviewed by Philippe Normand.

        Turn on the flag by default.

        * configure.ac:

2012-12-03  Cosmin Truta  <ctruta@rim.com>

        [BlackBerry] Enable HIDDEN_PAGE_DOM_TIMER_THROTTLING
        https://bugs.webkit.org/show_bug.cgi?id=103842

        Reviewed by Yong Li.

        Set ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING to ON.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-12-03  Laszlo Gombos  <l.gombos@samsung.com>

        [CMake] Enable building WebKit2-only build for the EFL port
        https://bugs.webkit.org/show_bug.cgi?id=103820

        Reviewed by Gyuyoung Kim.

        To create a WebKit2-only build for EFL use the following command:
        build-webkit --efl --cmakeargs="-DENABLE_WEBKIT=OFF".

        * CMakeLists.txt: Turn on WebKit1 support if it is not explicitly set (enabled or disabled) for
        all CMake based ports.

        * Source/cmake/OptionsEfl.cmake: Enable WebKit2 
        for the EFL port if it is not explicitly set (enabled or disabled).

2012-12-03  Zeno Albisser  <zeno@webkit.org>

        [Qt][Mac] QtWebKitWidgets has wrong install_name.

        This part got lost during the library split.
        It was done for QtWebKit before, but it also
        needs to be applied to QtWebKitWidgets.

        Reviewed by Tor Arne Vestbø.

        * Source/widgetsapi.pri:

2012-11-30  Justin Novosad  <junov@google.com>

        [Chromium] Animation updates fail when using a canvas as a CSS backround-image style with -webkit-canvas
        https://bugs.webkit.org/show_bug.cgi?id=103643

        Reviewed by Stephen White.

        New test to verify that elements using a canvas as a style image
        source are redrawn when the canvas is animated.  Added as a manual test
        because the bug was not reproducible in DumpRenderTree.

        * ManualTests/animated-canvas-as-background.html: Added.

2012-11-30  Pierre Rossi  <pierre.rossi@gmail.com>

        [Qt] Unreviewed build break

        Rubber-stamped by Simon Hausmann.

        Poor man's way to trigger a clean build on a bot.

        * WebKit.pro:

2012-11-30  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Unreviewed doc fix

        Add additional search paths for API folders.

        * Source/qtwebkit.qdocconf:

2012-11-30  Simon Hausmann  <simon.hausmann@digia.com>, Pierre Rossi  <pierre.rossi@digia.com>

        [Qt] Separate Qt WebKit into Qt WebKit and Qt WebKit Widgets
        https://bugs.webkit.org/show_bug.cgi?id=99314

        Reviewed by Tor Arne Vestbø.

        This big change separates QtWebKit into QtWebKit and QtWebKitWidgets as
        shared libraries.

        It's a big refactoring that mostly involves moving WebCore dependent
        code into QtWebKit and accessing it through exported QWebFrameAdapter
        and QWebPageAdapter classes.

        * Source/QtWebKit.pro:
        * Source/api.pri:
        * Source/sync.profile:
        * Source/widgetsapi.pri: Added.
        * WebKit.pro:

2012-11-30  Tor Arne Vestbø  <tor.arne.vestbo@digia.com>

        [Qt] Build as a regular Qt module when production_build is enabled

        Instead of always setting CONFIG+=force_independent. This means the
        libs, headers, and documentation will end up in qtbase for developer
        builds of Qt, instead of always in the QtWebKit build directory.

        Reviewed by Simon Hausmann.

        * Source/api.pri:

2012-11-29  Rafael Weinstein  <rafaelw@chromium.org>

        [HTMLTemplateElement] Add feature flag
        https://bugs.webkit.org/show_bug.cgi?id=103694

        Reviewed by Adam Barth.

        This flag will guard the implementation of the HTMLTemplateElement.
        http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-11-28  Michael Pruett  <michael@68k.org>

        IndexedDB: Remove duplicate toWireString() and createFromWire() methods in JSC SerializedScriptValue
        https://bugs.webkit.org/show_bug.cgi?id=103554

        Reviewed by Kentaro Hara.

        In r135022, duplicate createFromWire() and toWireString() methods
        were added to the JSC version of SerializedScriptValue. In
        order to allow the JSC SerializedScriptValue to compile when
        ENABLE(INDEXED_DATABASE) is turned on, these new methods have
        been removed and the old methods have been moved outside the
        ENABLE(INDEXED_DATABASE) guard.

        * Source/autotools/symbols.filter:

2012-11-28  Shinya Kawanaka  <shinyak@chromium.org>

        [Shadow] Move Distribution stuffs from ShadowRoot
        https://bugs.webkit.org/show_bug.cgi?id=103481

        Reviewed by Hajime Morita.

        * Source/autotools/symbols.filter:

2012-11-26  Halton Huo  <halton.huo@intel.com>

        [EFL] CMake shows ENABLE_3D_RENDERING and ENABLE_WEBGL is still OFF when AC is enabled
        https://bugs.webkit.org/show_bug.cgi?id=100829

        Reviewed by Gyuyoung Kim.

        In WebKitFeatures.cmake, only use ${_name} for condition to print
        a option as ON will prevent the overridden ones in OptionsXXX.cmake,
        should use ${_WEBKIT_AVAILABLE_OPTIONS_INITALVALUE_${_name}} instead.

        * Source/cmake/OptionsEfl.cmake: Turn on ENABLE_3D_RENDERING and
        ENABLE_WEBGL
        * Source/cmake/WebKitFeatures.cmake: Use
        ${_WEBKIT_AVAILABLE_OPTIONS_INITALVALUE_${_name}} to as value of 
        a feature is enabled. Adjust options in lexicographical order.

2012-11-26  Kalev Lember  <kalevlember@gmail.com>

        [GTK] Explicitly link against librt
        https://bugs.webkit.org/show_bug.cgi?id=103194

        Reviewed by Martin Robinson.

        Fixes broken build with undefined references to shm_open / shm_unlink
        symbols. SharedMemoryUnix.cpp uses these so we need to link with -lrt.

        * configure.ac:

2012-11-26  Laszlo Gombos  <l.gombos@samsung.com>

        [CMake] Allow user specified compiler flags to take precedence
        https://bugs.webkit.org/show_bug.cgi?id=103101

        Reviewed by Brent Fulgham.

        Make sure that compiler and linker flags specified by the build system
        are always prepended to the variables that can be specified by the
        environment and the user as well. 

        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsWindows.cmake:
        * Source/cmake/WebKitHelpers.cmake:

2012-11-23  Alexis Menard  <alexis@webkit.org>

        [CSS3 Backgrounds and Borders] Implement new CSS3 background-position parsing.
        https://bugs.webkit.org/show_bug.cgi?id=102104

        Reviewed by Julien Chaffraix.

        Protect the new feature behind a feature flag.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:

2012-11-23  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Add support for winflexbison distribution
        https://bugs.webkit.org/show_bug.cgi?id=102551

        Reviewed by Laszlo Gombos.

        Since GnuWin32 does not provide recent versions of bision and flex supporting
        the alternative winflexbison distribution is the prefered option.

        * Source/cmake/WebKitMacros.cmake:

2012-11-23  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Define WTF_PLATFORM_EFL in Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=101482

        Reviewed by Kenneth Rohde Christiansen.

        Remove the definition of WTF_PLATFORM_EFL from the build system to
        make the EFL port consistent with other ports.
 
        * Source/cmake/OptionsEfl.cmake:

2012-11-23  Krzysztof Czech  <k.czech@samsung.com>

        [EFL] Platform support for Accessibility feature.
        https://bugs.webkit.org/show_bug.cgi?id=100848

        Reviewed by Gyuyoung Kim.

        Add support for ATK library.

        * Source/cmake/FindATK.cmake: Added.
        * Source/cmake/OptionsEfl.cmake:

2012-09-26  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] Split SVG from WebCore to work-around make limitation
        https://bugs.webkit.org/show_bug.cgi?id=97735

        Reviewed by Carlos Garcia Campos.

        Add a new libtool convenience library, libWebCoreSVG.la, to work-around
        make limitation when linking libWebCore.

        * GNUmakefile.am: variables for the new library.

2012-11-22  Simon Hausmann  <simon.hausmann@digia.com>, Pierre Rossi <pierre.rossi@digia.com>

        [Qt] Separate QWidget dependant code into separate WebKitWidgets static library
        https://bugs.webkit.org/show_bug.cgi?id=102800

        Reviewed by Tor Arne Vestbø.

        This patch separates code that needs to use QWidget related APIs in
        WebKit/qt/WebCoreSupport and Api from code that doesn't. This means for
        example FrameLoaderClientQt.cpp remains in the WebKit1 static library,
        while qwebpage.cpp and qwebframe.cpp become part of the WebKitWidgets
        static library. WebKit1 is compiled without QT += widgets and therefore
        any widget related dependency has been moved "up" and out of WebKit1 into
        the WebKitWidgets library.

        Between the code in WebKit.a and WebKitWidgets.a new adapters and
        interfaces have been introduced, such as QWebPageAdapter and
        QWebFrameAdapter. QWebPageAdapter, when used from WebKit1, is a way to
        call out into the API layer, implemented by QWebPage (QWebPagePrivate).
        The other way around if QWebPage wants to access WebCore or
        WebCoreSupport related functionality, it will go through
        QWebPageAdapater (as base class). The separation in the direction up
        into the API layer is complete with this patch, no code in WebKit1
        depends on QtWidgets. The separation the other way around, code in the
        API layer not using any WebCore types, is not complete yet.

        Some classes such as QWebSettings, QWebElement or
        DumpRenderTreeSupportQt remain in WebKit1. While they are API layer,
        they do not depend on widget related Qt APIs and they make much more
        use of WebCore internal APIs and therefore are easier to keep in
        WebKit1.

        In the future we plan to place a real shared library boundary between
        WebKit1 and WebKitWidgets, by keeping the WebKit1 static library as
        part of the QtWebKit shared library and by turning the WebKitWidgets
        static library into a shared one.


        * Source/api.pri:
        * WebKit.pro:

2012-11-21  Ryuan Choi  <ryuan.choi@gmail.com>

        [EFL] Remove unnecessary definition, -DENABLE_SPELLCHECK=1
        https://bugs.webkit.org/show_bug.cgi?id=102988

        Reviewed by Laszlo Gombos.

        Removed -DENABLE_SPELLCHECK=1 because feature macros are controlled by
        WEBKIT_OPTION_XXX and cmakeconfig.h.cmake.

        * Source/cmake/OptionsEfl.cmake:

2012-11-21  Kondapally Kalyan  <kalyan.kondapally@intel.com>

        [EFL] GLX detection is broken.
        https://bugs.webkit.org/show_bug.cgi?id=102687.

        Reviewed by Laszlo Gombos.

        HAVE_GLX is enabled only if WebGL is enabled. This is wrong and we should
        explicitly test for GLX support.
        This patch makes changes so that we check for glx.h header and sets HAVE_GLX flag appropriately.

        * Source/cmake/OptionsEfl.cmake:

2012-11-21  Yael Aharon  <yael.aharon@intel.com>

        [EFL] Turn on WTF_USE_TILED_BACKING_STORE by default
        https://bugs.webkit.org/show_bug.cgi?id=101526

        Reviewed by Kenneth Rohde Christiansen.

        Separate out ENABLE_WEBGL. It is not ready to be enabled by default.

        * Source/cmake/OptionsEfl.cmake:

2012-11-20  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r133859.
        http://trac.webkit.org/changeset/133859
        https://bugs.webkit.org/show_bug.cgi?id=102875

        This patch makes API test broken (Requested by gyuyoung on
        #webkit).

        * Source/cmake/OptionsEfl.cmake:

2012-11-20  Elliott Sprehn  <esprehn@chromium.org>

        Store MutationObserver callback in a hidden property for V8
        https://bugs.webkit.org/show_bug.cgi?id=102555

        Reviewed by Adam Barth.

        Test for reference cycle leaks with mutation observers. There doesn't seem
        to be a way to check this for v8, but if you manually run you can see if it
        leaks observers.

        * ManualTests/leak-cycle-observer-wrapper.html: Added.

2012-11-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and configure.ac for 1.11.2 release

        * configure.ac: Bump tarball version number, not updated in
        previous commit by mistake.

2012-11-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and configure.ac for 1.11.2 release

        * configure.ac: Bump version numbers.

2012-11-19  Kihong Kwon  <kihong.kwon@samsung.com>

        Add PROXIMITY_EVENTS feature
        https://bugs.webkit.org/show_bug.cgi?id=102658

        Reviewed by Kentaro Hara.

        Add PROXIMITY_EVENTS feature to cmake.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-11-18  Laszlo Gombos  <l.gombos@samsung.com>

        Remove non-existent directories from the make system
        https://bugs.webkit.org/show_bug.cgi?id=102632

        Reviewed by Kenneth Rohde Christiansen.

        Remove (non-existent) symbian references from the exclude list for packaging.

        * Source/cmake/WebKitPackaging.cmake:

2012-11-18  Laszlo Gombos  <l.gombos@samsung.com>

        Remove non-existent directories from the make system
        https://bugs.webkit.org/show_bug.cgi?id=102632

        Reviewed by Adam Barth.

        Remove (non-existent) symbian references from the exclude list for packaging.

        * Source/cmake/WebKitPackaging.cmake:

2012-11-18  Genevieve Mak  <gmak@rim.com>

         [BlackBerry] Enable Touch Sliders
         https://bugs.webkit.org/show_bug.cgi?id=102516

         Reviewed by Rob Buis.

         Enabled for BlackBerry only
         PR #242781
         PR #176014

         * Source/cmake/OptionsBlackBerry.cmake:
         * Source/cmake/WebKitFeatures.cmake:
         * Source/cmakeconfig.h.cmake:

2012-11-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ build after r135022.

        * Source/autotools/symbols.filter: Add exports for
        SerializedScriptValue changes.

2012-11-16  Tony Chang  <tony@chromium.org>

        Remove ENABLE_CSS_HIERARCHIES since it's no longer in use
        https://bugs.webkit.org/show_bug.cgi?id=102554

        Reviewed by Andreas Kling.

        As mentioned in https://bugs.webkit.org/show_bug.cgi?id=79939#c41 ,
        we're going to revist this feature once additional vendor support is
        achieved.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-11-16  Ulan Degenbaev  <ulan@chromium.org>

        [V8] Increment the amount of externally allocated memory for the receiving V8 isolate when transferring ArrayBuffer
        https://bugs.webkit.org/show_bug.cgi?id=94463

        Reviewed by Kentaro Hara.

        Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer is deserialized and transferred.

        * ManualTests/typed-array-memory.html:

2012-11-16  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r134908.
        http://trac.webkit.org/changeset/134908
        https://bugs.webkit.org/show_bug.cgi?id=102473

        Broke the Apple Windows Debug build. (Requested by dydx on
        #webkit).

        * Source/autotools/symbols.filter:

2012-11-16  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r134865.
        http://trac.webkit.org/changeset/134865
        https://bugs.webkit.org/show_bug.cgi?id=102466

        Broke the Apple Windows Debug build. (Requested by dydx on
        #webkit).

        * Source/autotools/symbols.filter:

2012-11-16  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>

        Avoid copying of ViewportArguments in computeViewportAttributes function
        https://bugs.webkit.org/show_bug.cgi?id=102354

        Reviewed by Kenneth Rohde Christiansen.

        Updated exported symbols for GTK.

        * Source/autotools/symbols.filter:

2012-11-15  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] Split WebCore/platform into a separate library
        https://bugs.webkit.org/show_bug.cgi?id=94435

        Reviewed by Martin Robinson.

        More people have been reporting problems when linking WebCore because
        the command line limit is being exceeded. Splitting WebCore a bit more
        is in order.

        * GNUmakefile.am: add variable that will hold the list of source files
        for libWebCorePlatform .

2012-11-15  Tony Chang  <tony@chromium.org>

        Generate Settings from a .in file
        https://bugs.webkit.org/show_bug.cgi?id=100393

        Reviewed by Adam Barth.

        Generate SettingsMacros.h for cmake.

        * Source/cmake/WebKitMacros.cmake:

2012-11-15  Rick Byers  <rbyers@chromium.org>

        No tests for changing mouse cursors
        https://bugs.webkit.org/show_bug.cgi?id=100550

        Reviewed by Brent Fulgham.

        Add necessary exports for Internals::getCurrentCursorInfo

        * Source/autotools/symbols.filter:

2012-11-15  Kent Tamura  <tkent@chromium.org>

        Support stand-alone month names in calendar picker
        https://bugs.webkit.org/show_bug.cgi?id=102196

        Reviewed by Kentaro Hara.

        * ManualTests/forms/calendar-picker.html:
        - Remove monthLabels arguments.
        - Add a mock implementation of pagePopupController.formatMonth.

2012-11-14  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r134741.
        http://trac.webkit.org/changeset/134741
        https://bugs.webkit.org/show_bug.cgi?id=102337

        "Change is incorrect." (Requested by dydx on #webkit).

        * Source/autotools/symbols.filter:

2012-11-14  Daniel Bates  <dbates@webkit.org>

        Attempt to fix the Apple Windows Debug and GTK builds after <http://trac.webkit.org/changeset/134691>
        (https://bugs.webkit.org/show_bug.cgi?id=96818)

        Export symbols similar to the ones we added to WebCore.exp.in in
        <http://trac.webkit.org/changeset/134691>.

        * Source/autotools/symbols.filter:

2012-11-14  KyungTae Kim  <ktf.kim@samsung.com>

        [EFL] Turn on error on warnings for "sign-compare"
        https://bugs.webkit.org/show_bug.cgi?id=101761

        Reviewed by Gyuyoung Kim.

        Remove "-Wno-error=sign-compare" to turn on error on warnings for "sign-compare"

        * Source/cmake/WebKitHelpers.cmake:

2012-11-13  Hugo Parente Lima  <hugo.lima@openbossa.org>

        FindGLIB.cmake fails do find glib gmodule module.
        https://bugs.webkit.org/show_bug.cgi?id=101784

        Reviewed by Caio Marcelo de Oliveira Filho.

        * Source/cmake/FindGLIB.cmake:

2012-11-13  Huang Dongsung  <luxtella@company100.net>

        Coordinated Graphics: Directly composited animated GIFs only render the first image.
        https://bugs.webkit.org/show_bug.cgi?id=102043

        Reviewed by Noam Rosenthal.

        Add a test to check that a gif animation can run on a compositing layer.

        * ManualTests/animated-gif-on-compositing-layer.html: Added.

2012-11-12  KyungTae Kim  <ktf.kim@samsung.com>

        [EFL] Turn on errors on warnings for WebKit1 and WebKit2 libraries
        https://bugs.webkit.org/show_bug.cgi?id=101762

        Reviewed by Gyuyoung Kim.

        In case of EFL, add ENABLE_WERROR to EXTRA_COMPILER_FLAGS for WEBKIT and WEBKIT2

        * Source/CMakeLists.txt:

2012-11-12  Joe Mason  <jmason@rim.com>

        [BlackBerry] NetworkJob should not check if data is received with HEAD
        https://bugs.webkit.org/show_bug.cgi?id=102034

        Reviewed by George Staikos.

        Internal PR: 241391

        Add test that HEAD XMLHttpRequests return status 404 instead of calling onerror.

        * ManualTests/blackberry/head-xhr-nonexistant-file.html: Added.

2012-11-12  KyungTae Kim  <ktf.kim@samsung.com>

        [EFL] Turn on error on warnings for "switch"
        https://bugs.webkit.org/show_bug.cgi?id=101760

        Reviewed by Gyuyoung Kim.

        Turn on error on warning for "switch" by removing "-Wno-error=switch" 

        * Source/cmake/WebKitHelpers.cmake:

2012-11-11  Shinya Kawanaka  <shinyak@chromium.org>

        [Shadow] ElementShadow should have RuleFeatureSet for select attribute selectors.
        https://bugs.webkit.org/show_bug.cgi?id=101180

        Reviewed by Dimitri Glazkov.

        Exposes necessary symbols.

        * Source/autotools/symbols.filter:

2012-11-11  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r134144.
        http://trac.webkit.org/changeset/134144
        https://bugs.webkit.org/show_bug.cgi?id=101876

        seems to break win 7 chromium browser test (Requested by
        hayato on #webkit).

        * Source/autotools/symbols.filter:

2012-11-09  Rick Byers  <rbyers@chromium.org>

        No tests for changing mouse cursors
        https://bugs.webkit.org/show_bug.cgi?id=100550

        Reviewed by Adam Barth.

        Add necessary exports for Internals::getCurrentCursorInfo

        * Source/autotools/symbols.filter:

2012-11-09  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Enable -Werror for the EFL port
        https://bugs.webkit.org/show_bug.cgi?id=98715

        Reviewed by Gyuyoung Kim.

        Treat all warnings as errors, except the existing warnings in the
        current code base ("unused-parameter", "sign-compare" and "switch").

        Thanks for Raphael Kubo da Costa for the extra help.      

        * Source/CMakeLists.txt: Enable warnings as error for all libraries
        (except WebKit and WebKit2) for the EFL port. 
        Other cmake-based ports are welcome to join.

        * Source/cmake/WebKitHelpers.cmake: Treat warnings as errors by
        default for cmake-based ports when ENABLE_WERROR is set.

2012-11-08  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        [EFL] Turn WTF_USE_TILED_BACKING_STORE in OptionsEfl.cmake.
        https://bugs.webkit.org/show_bug.cgi?id=101559

        Reviewed by Kenneth Rohde Christiansen.

        Follow-up to 133859; also change the default value in
        OptionsEfl.cmake so that the default changes for people not using
        build-webkit (ie. users) as well.

        * Source/cmake/OptionsEfl.cmake:

2012-11-08  Yael Aharon  <yael.aharon@intel.com>

        [EFL] Turn on WTF_USE_TILED_BACKING_STORE by default
        https://bugs.webkit.org/show_bug.cgi?id=101526

        Reviewed by Kenneth Rohde Christiansen.

        Separate out ENABLE_WEBGL. It is not ready to be enabled by default.

        * Source/cmake/OptionsEfl.cmake:

2012-11-08  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Remove non-variable options from the build system
        https://bugs.webkit.org/show_bug.cgi?id=101506

        Reviewed by Kenneth Rohde Christiansen.

        Remove WTF_USE_PTHREADS, WTF_USE_ICU_UNICODE, WTF_USE_CAIRO,
        WTF_USE_FREETYPE and WTF_USE_HARFBUZZ_NG cmake variables 
        as these are always set to const 1 and not really configurable.

        Remove the definition of ENABLE_CONTEXT_MENUS as this is already set to 1 by default in Platform.h.

        * Source/cmake/OptionsEfl.cmake:

2012-11-08  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r133865.
        http://trac.webkit.org/changeset/133865
        https://bugs.webkit.org/show_bug.cgi?id=101579

        dependent patch has been rolled out. (Requested by drott on
        #webkit).

        * Source/cmake/OptionsEfl.cmake:

2012-11-08  Dominik Röttsches  <dominik.rottsches@intel.com>

        Unreviewed, rolling out r133859.
        http://trac.webkit.org/changeset/133859
        https://bugs.webkit.org/show_bug.cgi?id=101526

        Breaks EFL bots test execution.

        * Source/cmake/OptionsEfl.cmake:

2012-11-08  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        [EFL] Turn WTF_USE_TILED_BACKING_STORE in OptionsEfl.cmake.
        https://bugs.webkit.org/show_bug.cgi?id=101559

        Reviewed by Kenneth Rohde Christiansen.

        Follow-up to 133859; also change the default value in
        OptionsEfl.cmake so that the default changes for people not using
        build-webkit (ie. users) as well.

        * Source/cmake/OptionsEfl.cmake:

2012-11-08  Yael Aharon  <yael.aharon@intel.com>

        [EFL] Turn on WTF_USE_TILED_BACKING_STORE by default
        https://bugs.webkit.org/show_bug.cgi?id=101526

        Reviewed by Kenneth Rohde Christiansen.

        Separate out ENABLE_WEBGL. It is not ready to be enabled by default.

        * Source/cmake/OptionsEfl.cmake:

2012-11-07  Keishi Hattori  <keishi@webkit.org>

        Implement week picking to calendar picker
        https://bugs.webkit.org/show_bug.cgi?id=101449

        Reviewed by Kent Tamura.

        * ManualTests/forms/calendar-picker.html: Added test for week picker.

2012-11-07  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r133841.
        http://trac.webkit.org/changeset/133841
        https://bugs.webkit.org/show_bug.cgi?id=101542

        Reverted patches were innocent (Requested by shinyak on
        #webkit).

        * Source/autotools/symbols.filter:

2012-11-07  Shinya Kawanaka  <shinyak@chromium.org> 

        Unreviewed, rolling out r133428 and r133749
        https://bugs.webkit.org/show_bug.cgi?id=101533

        These patches might cause memory regression.

        * Source/autotools/symbols.filter:

2012-11-07  Shinya Kawanaka  <shinyak@chromium.org>

        [Shadow] Use setPseudo() instead of setShadowPseudoId().
        https://bugs.webkit.org/show_bug.cgi?id=101306

        Reviewed by Kent Tamura.

        Exposes necessary symbols.

        * Source/autotools/symbols.filter:

2012-11-07  Oswald Buddenhagen <oswald.buddenhagen@nokia.com>

        [Qt] Fix build of modules depending on QtWebKit when using prefix
        https://bugs.webkit.org/show_bug.cgi?id=101437

        Reviewed by Simon Hausmann.

        .qmake.conf loads qt_build_config.prf, which nowadays is responsible for
        adding the path to .qmake.super (before it was done by default_pre.prf,
        so having setting the path in our default_pre wrapper was sufficient).

        * .qmake.conf:

2012-11-06  Keishi Hattori  <keishi@webkit.org>

        Implement month picking to calendar picker
        https://bugs.webkit.org/show_bug.cgi?id=101333

        Reviewed by Kent Tamura.

        * ManualTests/forms/calendar-picker.html: Added test for month picker.

2012-11-06  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Simplify the build system
        https://bugs.webkit.org/show_bug.cgi?id=101392

        Reviewed by Kenneth Rohde Christiansen.

        Remove unused cmake variables. In addition there is no longer a need to define 
        WTF_USE_TEXTURE_MAPPER_GL in the build system as that is now handled in Platform.h
        (see r133623).

        * Source/cmake/OptionsEfl.cmake:

2012-11-05  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Trivial unreviewed: Add missing module dependencies for builds in Qt CI system.

        These fields aren't used by anyone except some perl scripts in the Qt CI builds.

        * Source/sync.profile:

2012-11-02  Adam Barth  <abarth@webkit.org>

        ENABLE(UNDO_MANAGER) is disabled everywhere and is not under active development
        https://bugs.webkit.org/show_bug.cgi?id=100711

        Reviewed by Eric Seidel.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-11-02  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove dependency on SoupPasswordManager
        https://bugs.webkit.org/show_bug.cgi?id=100775

        Reviewed by Carlos Garcia Campos.

        Add a libsecret dependency to the build. This is necessary so that we can remove
        a dependency on SoupPasswordManager.

        * configure.ac: Look for libsecret using the pkg-config configuration macro.

2012-11-02  Michael Brüning  <michael.bruning@digia.com>

        [Qt][WK2] ASSERT hit for every mouse click
        https://bugs.webkit.org/show_bug.cgi?id=100607

        Reviewed by Jocelyn Turcotte.

        Added a test with a link that contains an <em> tag surrounding the entire inner text.
        The test should be run on an assert enabled build and the assert should not be
        triggered when tapping the link.

        * ManualTests/tap-gesture-on-em-link-tap-highlight-assert.html: Added.

2012-11-01  Ami Fischman  <fischman@chromium.org>

        HTMLMediaPlayer should free m_player when src is set/changed
        https://bugs.webkit.org/show_bug.cgi?id=99647

        Reviewed by Eric Carlson.

        * ManualTests/media-players-are-dropped-on-error.html: Added.
            Various scenarios are tested to make sure players aren't
            leaked in different ways for each of them.

2012-11-01  Beth Dakin  <bdakin@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=100917
        There should be a way to dump the scrolling tree from the layout tests

        Reviewed by Simon Fraser.

        * Source/autotools/symbols.filter:

2012-10-31  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        Added viewport at-rule to the CSS parser and tokenizer
        https://bugs.webkit.org/show_bug.cgi?id=95961

        Reviewed by Kenneth Rohde Christiansen.

        Enable CSS Device Adaptation by default on EFL.

        * Source/cmake/OptionsEfl.cmake:

2012-10-31  Ian Vollick  <vollick@chromium.org>

        Add support for text-based repaint testing
        https://bugs.webkit.org/show_bug.cgi?id=100584

        Reviewed by Simon Fraser.

        Allows tracked repaint rects to be dumped as text.

        * Source/autotools/symbols.filter:
          Exports for:
            FrameView::setTracksRepaints(bool)
            Frame::trackedRepaintRectsAsText() const


2012-10-30  Vivek Galatage  <vivekgalatage@gmail.com>

        Add files generated by Windows to ignore list for git repository
        https://bugs.webkit.org/show_bug.cgi?id=100729

        Reviewed by Gyuyoung Kim.

        Adding the additional files generated by windows port to the ignore list

        * .gitignore:

2012-10-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add a configure option to build with -g1
        https://bugs.webkit.org/show_bug.cgi?id=100670

        Reviewed by Martin Robinson.

        Add min and full options to the --enable-debug-symbols configure
        option. Using --enable-debug-symbols=min will use -g1 instead of
        -g (which is actually -g2). The first level is enough for most of
        the cases, like getting a backtrace, and it's the only way to
        build WebKit with debug symbols in a 32 bit system. The option
        full is actually the same than yes for backwards compatibility.

        * configure.ac:

2012-10-26  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Platform Abstraction for WebKit Resource/Image Loading
        https://bugs.webkit.org/show_bug.cgi?id=100518

        PR 231732

        Reviewed by Yong Li.

        Remove RESOURCE_PATH from webkit, this is now abstracted in our platform layer.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-10-26  Regina Chung  <heejin.r.chung@samsung.com>

        [EFL][WK2] Enable WebGL
        https://bugs.webkit.org/show_bug.cgi?id=97652

        Reviewed by Gyuyoung Kim.

        Use Graphics Surface to enable WebGL for WebKit2 EFL.

        * Source/cmake/OptionsEfl.cmake:

2012-10-26  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r132601.
        http://trac.webkit.org/changeset/132601
        https://bugs.webkit.org/show_bug.cgi?id=100494

        It broke the Qt build (Requested by Ossy on #webkit).

        * Source/cmake/OptionsEfl.cmake:

2012-10-26  Regina Chung  <heejin.r.chung@samsung.com>

        [EFL][WK2] Enable WebGL
        https://bugs.webkit.org/show_bug.cgi?id=97652

        Reviewed by Gyuyoung Kim.

        Use Graphics Surface to enable WebGL for WebKit2 EFL.

        * Source/cmake/OptionsEfl.cmake:

2012-10-26  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        Add feature flags for CSS Device Adaptation
        https://bugs.webkit.org/show_bug.cgi?id=95960

        Reviewed by Kenneth Rohde Christiansen.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:

2012-10-25  Yael Aharon  <yael.aharon@intel.com>

        [EFL][WK2][AC] Enable 3D_RENDERING flag
        https://bugs.webkit.org/show_bug.cgi?id=99535

        Reviewed by Laszlo Gombos.

        Turn on the flag ENABLE_3D_RENDERING when WTF_USE_TILE_BACKING_STORE flag is on.
        This flag controls perspective and preserves-3d behavior.

        * Source/cmake/OptionsEfl.cmake:

2012-10-25  Dominik Röttsches  <dominik.rottsches@intel.com>

        Adding feature for XHR_TIMEOUT

        Conditionalize XHR timeout support
        https://bugs.webkit.org/show_bug.cgi?id=100356

        Reviewed by Adam Barth.

        Adding feature for XHR_TIMEOUT to disable it on ports that don't have
        network backend support for setTimeoutInterval.

        * Source/cmake/OptionsEfl.cmake: Default ON on EFL.
        * Source/cmake/WebKitFeatures.cmake: Default OFF for any CMAKE based port.
        * Source/cmakeconfig.h.cmake: Adding define.
        * configure.ac: Make autogen.sh support the --enable/--disable-xhr-timeout parameter.

2012-10-25  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>

        Add setMediaTypeOverride to window.internals.settings
        https://bugs.webkit.org/show_bug.cgi?id=100249

        Reviewed by Kenneth Rohde Christiansen.

        Exported WebCore::Settings::setMediaTypeOverride(WTF::String const&) for GTK port.

        * Source/autotools/symbols.filter:

2012-10-24  Michael Carmody  <mcarmody@rim.com>

        [BlackBerry] change CMAKE_<CCXX|C>_FLAGS_<RELEASE|DEBUG> from enviroment flags
        https://bugs.webkit.org/show_bug.cgi?id=100256

        Reviewed by Rob Buis.

        This allow override of compile flags without having to edit CMake files.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-10-24  Priit Laes  <plaes@plaes.org>

        [GTK] ./configure output for CSS Shaders is broken
        https://bugs.webkit.org/show_bug.cgi?id=100217

        Reviewed by Martin Robinson.

        Reformat CSS Filters / Shaders check to clean configure output.

        * configure.ac:

2012-10-24  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL] run-webkit-tests writes garbage on stderr when running on Xvfb
        https://bugs.webkit.org/show_bug.cgi?id=100243

        Reviewed by Kenneth Rohde Christiansen.

        Search for X11 development libraries (and thus Xext), necessary to
        disable the X extensions error reporting.

        * Source/cmake/OptionsEfl.cmake:

2012-10-24  Mario Sanchez Prada  <mario@webkit.org>

        [WK2] [GTK] TestWebKitAccessibility is not being run
        https://bugs.webkit.org/show_bug.cgi?id=100102

        Reviewed by Carlos Garcia Campos.

        Moved check for at-spi2 after the definition of enable_webkit2,
        since it's only needed for WebKit2GTK API tests.

        * configure.ac: Moved the check for at-spi2 down in the file.

2012-10-23  Martin Robinson  <mrobinson@igalia.com>

        POTFILES.in/.skip need updates for translators
        https://bugs.webkit.org/show_bug.cgi?id=67580

        Reviewed by Xan Lopez.

        Now process POTFILES.in during configuration.

        * configure.ac:

2012-10-23  Kenneth Rohde Christiansen  <kenneth@webkit.org>

        Add support for resolution media query
        https://bugs.webkit.org/show_bug.cgi?id=99077

        Reviewed by Antti Koivisto.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

            Add support for the RESOLUTION_MEDIA_QUERY feature flag.

        * Source/autotools/symbols.filter:

            Export the WebCore::Settings setting.

2012-10-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and configure.ac for 1.11.1 release

        * configure.ac: Bump version numbers.

2012-10-23  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK2] Add support for IMF composition
        https://bugs.webkit.org/show_bug.cgi?id=89552

        Reviewed by Gyuyoung Kim.

        * Source/cmake/FindEcore.cmake: Checked Ecore_IMF.

2012-10-23  Andras Becsi  <andras.becsi@digia.com>

        Remove devicePixelRatio from ViewportAttributes
        https://bugs.webkit.org/show_bug.cgi?id=99845

        Reviewed by Adam Barth.

        * Source/autotools/symbols.filter: Update symbol.

2012-10-22  Pavel Feldman  <pfeldman@chromium.org>

        Web Inspector: merge "docked" state into the "dock side" enum.
        https://bugs.webkit.org/show_bug.cgi?id=99717

        Reviewed by Vsevolod Vlasov.

        Otherwise, it is hard to manage these inter-dependent flags.

        * Source/autotools/symbols.filter:

2012-10-19  Tony Chang  <tony@chromium.org>

        Unreviewed, rolling out r131936.
        http://trac.webkit.org/changeset/131936
        https://bugs.webkit.org/show_bug.cgi?id=99717

        Broke the clang build

        * Source/autotools/symbols.filter:

2012-10-19  Dongwoo Joshua Im  <dw.im@samsung.com>

        Rename ENABLE_CSS3_TEXT_DECORATION to ENABLE_CSS3_TEXT
        https://bugs.webkit.org/show_bug.cgi?id=99804

        Reviewed by Julien Chaffraix.

        CSS3 text related properties will be implemented under this flag,
        including text decoration, text-align-last, and text-justify.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-10-18  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Buildfix if Netscape plugin support is disabled
        https://bugs.webkit.org/show_bug.cgi?id=99757

        Reviewed by Gyuyoung Kim.

        Set ENABLE_PLUGIN_PROCESS only if ENABLE_NETSCAPE_PLUGIN_API is set.

        * Source/cmake/OptionsEfl.cmake:

2012-10-18  Pablo Flouret  <pablof@motorola.com>

        Implement css3-conditional's @supports rule
        https://bugs.webkit.org/show_bug.cgi?id=86146

        Reviewed by Antti Koivisto.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:
            Add an ENABLE_CSS3_CONDITIONAL_RULES flag.

2012-10-18  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Clean up variables controlling Qt module creation/handling

        Reviewed by Tor Arne Vestbø.

        We now depend on a Qt 5 version that is new enough to allow us to
        clean this up. Qt's default_pre.prf uses MODULE_QMAKE_OUTDIR, but
        the other MODULE_BASE_* variables are onl used in qmodule.prf.

        * Source/api.pri:

2012-10-17  Tor Arne Vestbø  <tor.arne.vestbo@digia.com>

        [Qt] Modularize documentation for QtWebKit

        Running 'make docs' would fail unless 'make qmake_all' was ran first,
        but qmake_all involved generating all the derived sources, which seems
        overly complex just for building documentation.

        We solve this by preventing all subdirs except QtWebKit from having a
        docs target. This would normally work fine on its own, but since we
        use CONFIG += ordered, there's now a missing doc target for the
        immediate dependency of the QtWebKit subdir. We solve this by adding
        a dummy-target ourselves.

        Finally, we clean up the qdocconf file to match the rest of the Qt
        documentation modularization efforts.

        Reviewed by Simon Hausmann.

        * Source/QtWebKit.pro:
        * Source/api.pri:
        * Source/qtwebkit.qdocconf: Added.

2012-10-17  Grzegorz Czajkowski  <g.czajkowski@samsung.com>, Michal Roj <m.roj@sasmung.com>

        [WK2][EFL] Implementation of spellchecking feature.
        https://bugs.webkit.org/show_bug.cgi?id=91854

        Reviewed by Gyuyoung Kim.

        Define SPELLCHECK macro and enable it for WK2-Efl.
        The spellchecking implementation is based on the Enchant library.
        It can be used by other WebKit ports.

        * Source/cmake/FindEnchant.cmake: Added.
        * Source/cmake/OptionsEfl.cmake: Enable spellchecking feature for WebKit2-EFL.
        * Source/cmake/WebKitFeatures.cmake: Define the SPELLCHECK macro.
        * Source/cmakeconfig.h.cmake: Add the feature.

2012-10-16  Pablo Flouret  <pablof@motorola.com>

        Pre-process CSSGrammar.y before running through bison.
        https://bugs.webkit.org/show_bug.cgi?id=94290

        Reviewed by Tony Chang.

        * Source/cmake/WebKitMacros.cmake:
            Use WebCore/css/makegrammar.pl to generate bison grammar files.

2012-10-15  Jer Noble  <jer.noble@apple.com>

        WebAudio: limit output level to 0db
        https://bugs.webkit.org/show_bug.cgi?id=95792
        <rdar://problem/11966135>

        Reviewed by Chris Rogers.

        Add a manual test to determine that output volume has been limited to 0db.

        * ManualTests/webaudio/limit-level-0db.html: Added.

2012-10-16  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Fix support for silent builds

        Reviewed by Tor Arne Vestbø.

        The .qmake.conf file in Qt modules usually contains a load(qt_build_config), which
        ends up loading qmodule.pri, which contains the CONFIG += silent if Qt was configured
        with -silent.

        * .qmake.conf:

2012-10-16  Simon Hausmann  <simon.hausmann@digia.com>, Tor Arne Vestbø <tor.arne.vestbo@digia.com>

        [Qt] Add logic for triggering clean builds on changes to build system files

        Reviewed by Csaba Osztrogonác.

        Add a line here that can be re-used for recording dummy commits to count how the clean-build-needed
        logic failed.

        * WebKit.pro:

2012-10-16  Simon Hausmann  <simon.hausmann@digia.com>

        Unreviewed, rolling out r131436.
        http://trac.webkit.org/changeset/131436

        Broke various Qt bots strangely

        * .qmake.conf:

2012-10-16  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Fix support for silent builds

        Reviewed by Tor Arne Vestbø.

        The .qmake.conf file in Qt modules usually contains a load(qt_build_config), which
        ends up loading qmodule.pri, which contains the CONFIG += silent if Qt was configured
        with -silent.

        * .qmake.conf:

2012-10-15  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Share resources installed for inspector
        https://bugs.webkit.org/show_bug.cgi?id=98991

        Reviewed by Gyuyoung Kim.

        Now, WebKit1/Efl and WebKit2/Efl install same resources to different directory
        when INSPECTOR is enabled.

        This patch changes to install resources one time and share it.

        * Source/PlatformEfl.cmake:
        Extracted build scripts which install resources from WebKit/PlatformEfl.cmake.
        * Source/cmake/OptionsEfl.cmake:

2012-10-15  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Separate Qt WebKit into Qt WebKit and Qt WebKit Widgets
        https://bugs.webkit.org/show_bug.cgi?id=88162

        Reviewed by Kenneth Rohde Christiansen.

        Rename the QtWebKit module to QtWebKitWidgets.

        * Source/api.pri:
        * Source/sync.profile:

2012-10-14  Patrick Gansterer  <paroga@webkit.org>

        Unreviewed, rolling out r130656.
        http://trac.webkit.org/changeset/130656
        https://bugs.webkit.org/show_bug.cgi?id=97592

        Broke CMake build on Windows

        * CMakeLists.txt:

2012-10-12  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r131189.
        http://trac.webkit.org/changeset/131189
        https://bugs.webkit.org/show_bug.cgi?id=99187

        Made inspector http tests crash on WK2. (Requested by rakuco
        on #webkit).

        * Source/PlatformEfl.cmake:
        * Source/cmake/OptionsEfl.cmake:

2012-10-12  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Share resources installed for inspector
        https://bugs.webkit.org/show_bug.cgi?id=98991

        Reviewed by Gyuyoung Kim.

        Now, WebKit1/Efl and WebKit2/Efl install same resources to different directory
        when INSPECTOR is enabled.

        This patch changes to install resources one time and share it.

        * Source/PlatformEfl.cmake:
        Extracted build scripts which install resources from WebKit/PlatformEfl.cmake.
        * Source/cmake/OptionsEfl.cmake:

2012-10-12  Balazs Kelemen  <kbalazs@webkit.org>

        Unreviewed, rolling out r130389.
        http://trac.webkit.org/changeset/130389
        https://bugs.webkit.org/show_bug.cgi?id=98048

        It broke chromium

        * Source/autotools/symbols.filter:

2012-10-11  Jinwoo Song  <jinwoo7.song@samsung.com>

        [CMAKE] Add HIDDEN_PAGE_DOM_TIMER_THROTTLING feature
        https://bugs.webkit.org/show_bug.cgi?id=99030

        Reviewed by Laszlo Gombos.

        Add HIDDEN_PAGE_DOM_TIMER_THROTTLING feature which throttles DOM timers
        on hidden pages to WebKitFeatures.cmake and cmakeconfig.h.cmake.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-10-11  Ryosuke Niwa  <rniwa@webkit.org>

        Perf-o-matic build fixes.

        Get the password from the first item of the array now that each JSON contains an array as
        the top-level structure instead of a dictionary, which is the first item in the array.

        Remove spaces after comma to save space in Runs objects to work-around the AppEngine's
        object size limit. This should buy us a couple of days. We'll implement a proper fix later.

        * Websites/webkit-perf.appspot.com/models.py:
        (Runs.update_incrementally):
        * Websites/webkit-perf.appspot.com/models_unittest.py:
        (RunsTest.test_update_or_insert):
        * Websites/webkit-perf.appspot.com/report_handler.py:
        (ReportHandler.post):

2012-10-10  Tony Chang  <tony@chromium.org>

        Unreviewed, rolling out r130937, r130949, r130955, and
        r130957.
        http://trac.webkit.org/changeset/130937
        http://trac.webkit.org/changeset/130949
        http://trac.webkit.org/changeset/130955
        http://trac.webkit.org/changeset/130957
        https://bugs.webkit.org/show_bug.cgi?id=94290

        Breaks Qt build

        * Source/cmake/WebKitMacros.cmake:

2012-10-10  Pablo Flouret  <pablof@motorola.com>

        Pre-process CSSGrammar.y before running through bison.
        https://bugs.webkit.org/show_bug.cgi?id=94290

        Reviewed by Tony Chang.

        * Source/cmake/WebKitMacros.cmake:
            Use WebCore/css/makegrammar.pl to generate bison grammar files.

2012-10-10  Simon Fraser  <simon.fraser@apple.com>

        Attempt to fix gtk build which controls exports via this mysteriously-named
        file.
        
        * Source/autotools/symbols.filter:

2012-10-10  Shinya Kawanaka  <shinyak@chromium.org>

        Needs internal API to return distributed nodes for InsertionPoint
        https://bugs.webkit.org/show_bug.cgi?id=98868

        Reviewed by Hajime Morita.

        * Source/autotools/symbols.filter:

2012-10-10  Yong Li  <yoli@rim.com>

        [BlackBerry] Define WTF_USE_EXTRA_MACROS in cmake rather than Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=98819

        Reviewed by Rob Buis.

        And make it depend on SHARED_CORE
        RIM PR# 221339.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-10-10  Keishi Hattori  <keishi@webkit.org>

        REGRESSION (r129738): Calendar picker is too wide when the input is rtl
        https://bugs.webkit.org/show_bug.cgi?id=98881

        Reviewed by kent Tamura.

        * ManualTests/forms/calendar-picker.html: Added isCalendarRTL parameters.

2012-10-10  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL][WK2] Port MiniBrowser to Elementary
        https://bugs.webkit.org/show_bug.cgi?id=98748

        Reviewed by Kenneth Rohde Christiansen.

        Bump EFL librairies dependencies to v1.7
        and add Elementary as optional dependency now
        that it is needed to build MiniBrowser.

        * Source/cmake/FindEet.cmake: Added.
        * Source/cmake/FindElementary.cmake: Added.
        * Source/cmake/OptionsEfl.cmake:

2012-10-09  Simon Pena  <spena@igalia.com>

        [GTK] Add support for running JavaScript from GResources
        https://bugs.webkit.org/show_bug.cgi?id=98488

        Reviewed by Carlos Garcia Campos.

        GResources allow embedding certain resources, frequently used, in a "bundle"
        which can be kept separated or stored in the binary. This patch adds
        support for running JavaScript from GResources.

        * configure.ac: Add support for compiling GResources

2012-10-09  Zan Dobersek  <zandobersek@gmail.com>

        Unreviewed GTK build fix after r130689.

        Adding a required symbol to symbols.filter.

        * Source/autotools/symbols.filter:

2012-10-08  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Add minimum version information for tool dependencies
        https://bugs.webkit.org/show_bug.cgi?id=97592

        Reviewed by Kenneth Rohde Christiansen.

        Capture the minimum version information for the tools that are required
        to build the EFL port (or more generally WebKit).

        * CMakeLists.txt:

2012-10-08  Dongwoo Joshua Im  <dw.im@samsung.com>

        [EFL] Fix build break when WEB_AUDIO is enabled.
        https://bugs.webkit.org/show_bug.cgi?id=98635

        Unreviewed build fix.

        Build error is occurred because of the new flag, ENABLE_LEGACY_WEB_AUDIO,
        which was introduced by https://bugs.webkit.org/show_bug.cgi?id=97050.

        * Source/cmakeconfig.h.cmake: Add ENABLE_LEGACY_WEB_AUDIO.

2012-10-08  Joone Hur  <joone.hur@intel.com>

        [EFL] Add support for -webkit-sticky
        https://bugs.webkit.org/show_bug.cgi?id=95182

        Reviewed by Kenneth Rohde Christiansen.

        Turn on CSS sticky position by default for WebKitEfl,
        but most of the CSS sticky position test cases still do not pass on WK1.

        * Source/cmake/OptionsEfl.cmake:

2012-10-05  José Dapena Paz  <jdapena@igalia.com>

        [GTK] Add support for creating EGL contexts
        https://bugs.webkit.org/show_bug.cgi?id=77921

        Reviewed by Martin Robinson.

        This patch adds support for EGL, using OpenGL and OpenGL ES 2. Both
        options are set up on compile time, with the configure options
        --enable-egl and --enable-gles2.

        The implementation only adds support for EGL on top of X11, to
        isolate the changes to the minimum. More changes should come
        later to enable EGL for other targets (as Wayland).

        * GNUmakefile.am:
        * configure.ac: new configure options --enable-egl and --enable-gles2.

2012-10-04  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Sync up CMake files
        https://bugs.webkit.org/show_bug.cgi?id=98442

        Reviewed by Gyuyoung Kim.

        Amongst others some internal paths changed.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-10-04  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Add libxml 2.8.0 to jhbuild
        https://bugs.webkit.org/show_bug.cgi?id=98418

        Reviewed by Laszlo Gombos.

        Bump dependency for libxml to 2.8.0 to match
        jhbuild.

        * Source/cmake/OptionsEfl.cmake:

2012-10-04  Balazs Kelemen  <kbalazs@webkit.org>

        Don't allow to disable compositing in forced compositing mode
        https://bugs.webkit.org/show_bug.cgi?id=98048

        Reviewed by Jocelyn Turcotte.

        Export Settings::setAcceleratedCompositingEnabled because it has been deinlined.

        * Source/autotools/symbols.filter:

2012-10-03  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Default.edj should be generated although ENABLE_WEBKIT disabled.
        https://bugs.webkit.org/show_bug.cgi?id=97753

        Reviewed by Laszlo Gombos.

        default.edj is used in both webkit/efl and webkit2/efl.
        However, it has been generated only when ENABLE_WEBKIT is enabled.

        This patch separates the script which generates default.edj
        from source/webkit/platformefl.cmake.

        * Source/CMakeLists.txt:
        * Source/PlatformEfl.cmake: Added to generate custom target for default theme.
        * Source/cmake/OptionsEfl.cmake:
        Moved directory generation from WebKit/PlatformEfl.cmake
        because THEME_BINARY_DIR is used for both Default Theme and control theme in Tools.

2012-10-03  Otto Derek Cheung  <otcheung@rim.com>

        [BlackBerry] Implementing the NetworkInfo API for BB port 
        https://bugs.webkit.org/show_bug.cgi?id=98273

        Reviewed by Rob Buis.

        Adding references to new classes added to support BlackBerry's
        NetworkInfo implementation.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-10-01  Keishi Hattori  <keishi@webkit.org>

        Calendar picker should use zero as default step base
        https://bugs.webkit.org/show_bug.cgi?id=97976

        Reviewed by Kent Tamura.

        * ManualTests/forms/calendar-picker.html: Added stepBase parameters.

2012-09-28  Mariusz Grzegorczyk  <mariusz.g@samsung.com>

        [WK2][GTK][EFL] Share WebKit2-GTK plugin process implementation with EFL port
        https://bugs.webkit.org/show_bug.cgi?id=91844

        Reviewed by Simon Hausmann.

        Turn on Netscape Plugin API by default  for WebKit2-Efl.

        * Source/cmake/OptionsEfl.cmake:

2012-09-28  Alpha Lam  <hclam@chromium.org>

        REGRESSION(r122215) - CachedImage::likelyToBeUsedSoon crashes on accessing a deleted CachedImageClient
        https://bugs.webkit.org/show_bug.cgi?id=97749

        Reviewed by James Robinson.

        Added a manual test to demonstrate drag image and crashing.

        * ManualTests/drag-image-no-crash.html: Added.

2012-09-27  Keishi Hattori  <keishi@webkit.org>

        SuggestionPicker should support rtl
        https://bugs.webkit.org/show_bug.cgi?id=97555

        Reviewed by Kent Tamura.

        * ManualTests/forms/calendar-picker.html: Added tests for Arabic with datalist.

2012-09-27  Patrick Gansterer  <paroga@webkit.org>

        [WINCE] Enable JIT by default

        * Source/cmake/OptionsWinCE.cmake:

2012-09-26  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Use XDamage to simplify RedirectedXCompositeWindow
        https://bugs.webkit.org/show_bug.cgi?id=97267

        Reviewed by Alejandro G. Castro.

        Use XDamage to queue redraws of the widget when redirecting accelerated compositing
        to an offscreen window. This allows removing a finicky timer-based approach, improves
        performance, and allows simplifying things greatly.

        * configure.ac: Add support for finding XDamage via pkg-config.

2012-09-26  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Remove Qt Quick 1 support

        Reviewed by Kenneth Rohde Christiansen.

        It is being moved to the Qt5 QtQuick1 module.

        * Source/tests.pri:

2012-09-26  Zan Dobersek  <zandobersek@gmail.com>

        [GTK] Enable some of the unstable CSS features
        https://bugs.webkit.org/show_bug.cgi?id=97572

        Reviewed by Martin Robinson.

        Export the required RuntimeEnabledFeatures symbol.

        * Source/autotools/symbols.filter:

2012-09-25  Cosmin Truta  <ctruta@rim.com>

        [BlackBerry] Enable LLInt
        https://bugs.webkit.org/show_bug.cgi?id=97604

        Reviewed by Yong Li.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-09-25  Ryosuke Niwa  <rniwa@webkit.org>

        Perf-o-matic should store "values" and support array'ed input
        https://bugs.webkit.org/show_bug.cgi?id=97601

        Reviewed by Dirk Pranke.

        Support new JSON format where the outermost structure is an array instead of a dictionary and results may
        contain "values". This change will let us remove some code from run-perf-tests.

        Old: {"webkit-revision": 123456, "results": {"test": {"avg": 123}}
        New: [{"webkit-revision": 123456, "results": {"test": {"avg": 123, values: [122, 123, 124]}}}]

        * Websites/webkit-perf.appspot.com/app.yaml: Incremented the version number.
        * Websites/webkit-perf.appspot.com/models.py:
        (TestResult): Added values property.
        (TestResult.get_or_insert_from_parsed_json): Pass in "values" to the constructor if the value is present.
        (ReportLog.get_value): Use the first item in the array if self._parsed uses the new format.
        (ReportLog.results_are_well_formed): Verifies that items in "values" are floats convertible. Also verify that
        if the JSON uses new format, there is exactly one set of results. In theory, we could support multiple results
        but we don't do that now for its complexity.
        * Websites/webkit-perf.appspot.com/models_unittest.py:
        (TestResultTests.test_get_or_insert_stat_value): Make sure values is present and is an empty list.
        (TestResultTests.test_get_or_insert_stat_value_with_values): Added.
        (ReportLogTests.test_results_are_well_formed):
        (ReportLogTests.test_chromium_revision): Renamed from chromium_revision so that it actually runs.
        (ReportLogTests.test_results_in_array):

2012-09-25  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Update minimal required versions for dependencies
        https://bugs.webkit.org/show_bug.cgi?id=97523

        Reviewed by Gyuyoung Kim.

        Use the same versions numbers for dependencies as in Tools/efl/jhbuild.modules.

        * Source/cmake/OptionsEfl.cmake:

2012-09-24  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Fix build with latest Qt 5
        https://bugs.webkit.org/show_bug.cgi?id=97479

        Reviewed by Tor Arne Vestbø.

        Define MODULE_BASE_DIR before loading qt_module.prf, which now calls syncqt. MODULE_BASE_DIR is
        passed as last parameter (source dir) to syncqt now, so set it to the directory that contains
        sync.profile.

        * Source/api.pri:

2012-09-24  Bo Liu  <boliu@chromium.org>

        Reland "Add in-place reload behavior to ImagesEnabled setting" with optimizations
        https://bugs.webkit.org/show_bug.cgi?id=97055

        Reviewed by Adam Barth.

        Relanding 128780, 128676, 128645. Was reverted in 128914 due to
        performance regression in Chromium.

        New changes in addition to previously reverted patches:

        Refactored CachedResource::requestResource, loadResource, and
        revalidateResource. Moved CachedResource::load method to end of
        requestResource so there is one place where load is called for all
        resources.

        Added a enum parameter for requestResource and
        determineRevalidationPolicy so that FrameLoaderClient::allowImage call
        do not need to be called multiple times.

        Removed CachedImage::load call in requestImage so it is not called
        twice.

        Removed unnecessary Frame.h includes in CachedResource and
        CachedImage.

        Removed dead load() method declaration in CachedImage.

        Updated text expectation for two image-permissions tests to reflect
        the removed calls to allowImage.

        * Source/autotools/symbols.filter:

2012-09-24  Byungwoo Lee  <bw80.lee@samsung.com>

        [CMake] Change hardcoded 'lib' and 'bin' in CMakeLists.txt to 'LIB_INSTALL_DIR' and 'EXEC_INSTALL_DIR'.
        https://bugs.webkit.org/show_bug.cgi?id=97419

        Reviewed by Gyuyoung Kim.

        Use the value of LIB_INSTALL_DIR and EXEC_INSTALL_DIR instead of
        hardcoding 'lib' and 'bin' for CMAKE_{ARCHIVE,LIBRARY,RUNTIME}_OUTPUT_DIRECTORY.

        * CMakeLists.txt:
        Use ${LIB_INSTALL_DIR} instead of hardcoding "lib".
        Use ${EXEC_INSTALL_DIR} instead of hardcoding "bin".

2012-09-24  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r129343.
        http://trac.webkit.org/changeset/129343
        https://bugs.webkit.org/show_bug.cgi?id=97479

        It broke the build (Requested by Ossy_NIGHT on #webkit).

        * Source/api.pri:

2012-09-24  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r129388.
        http://trac.webkit.org/changeset/129388
        https://bugs.webkit.org/show_bug.cgi?id=97477

        Caused an assertion in a WebKit2 unit test (Requested by
        abarth on #webkit).

        * Source/autotools/symbols.filter:

2012-09-24  Dominik Röttsches  <dominik.rottsches@intel.com>

        [EFL][DRT] Enable Regions support
        https://bugs.webkit.org/show_bug.cgi?id=83897

        Reviewed by Kenneth Rohde Christiansen.

        Default build setting for CSS regions set to on.

        * Source/cmake/OptionsEfl.cmake:

2012-09-24  Bo Liu  <boliu@chromium.org>

        Reland "Add in-place reload behavior to ImagesEnabled setting" with optimizations
        https://bugs.webkit.org/show_bug.cgi?id=97055

        Reviewed by Adam Barth.

        Relanding 128780, 128676, 128645. Was reverted in 128914 due to
        performance regression in Chromium.

        New changes in addition to previously reverted patches:

        Refactored CachedResource::requestResource, loadResource, and
        revalidateResource. Moved CachedResource::load method to end of
        requestResource so there is one place where load is called for all
        resources.

        Added a enum parameter for requestResource and
        determineRevalidationPolicy so that FrameLoaderClient::allowImage call
        do not need to be called multiple times.

        Removed CachedImage::load call in requestImage so it is not called
        twice.

        Removed unnecessary Frame.h includes in CachedResource and
        CachedImage.

        Removed dead load() method declaration in CachedImage.

        Updated text expectation for two image-permissions tests to reflect
        the removed calls to allowImage.

        * Source/autotools/symbols.filter:

2012-09-24  Vivek Galatage  <vivekgalatage@gmail.com>

        Web Inspector: implement testing harness for pure protocol tests.
        https://bugs.webkit.org/show_bug.cgi?id=90675

        Reviewed by Yury Semikhatsky.

        Added export symbols required for Gtk+ to support the Inspector Protocol
        testing harness.

        * Source/autotools/symbols.filter:

2012-09-24  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Fix build with latest Qt 5

        Reviewed by Tor Arne Vestbø.

        Define MODULE_BASE_DIR before loading qt_module.prf, which now calls syncqt. MODULE_BASE_DIR is
        passed as last parameter (source dir) to syncqt now, so set it to the directory that contains
        sync.profile.

        * Source/api.pri:

2012-09-23  Keishi Hattori  <keishi@webkit.org>

        Add suggestionPicker to CalendarPicker
        https://bugs.webkit.org/show_bug.cgi?id=97201

        Reviewed by Kent Tamura.

        * ManualTests/forms/calendar-picker.html: Added tests for SuggestionPicker.

2012-09-21  Ami Fischman  <fischman@chromium.org>

        HTMLMediaElement isn't garbage collected between document reloads
        https://bugs.webkit.org/show_bug.cgi?id=97020

        Reviewed by Eric Carlson.

        Manual test added: ManualTests/audio-freed-during-reload.html

        * ManualTests/audio-freed-during-reload.html:

2012-09-21  Chris Rogers  <crogers@google.com>

        Add Web Audio support for deprecated/legacy APIs
        https://bugs.webkit.org/show_bug.cgi?id=97050

        Reviewed by Eric Carlson.

        * Source/cmake/WebKitFeatures.cmake:

2012-09-21  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Bail out when trying to build WebKit with Qt != 5

        Reviewed by Tor Arne Vestbø.

        Moved check for Qt version out of default_pre into top-level WebKit.pro,
        because we never reach default_pre.prf due to the lack of .qmake.conf support
        in older versions of Qt/QMake.

        * WebKit.pro:

2012-09-20  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] QtWebKit module header includes private dependencies

        Reviewed by Tor Arne Vestbø.

        Moved loading of webkit_modules.prf a few lines down after the definition
        of QT_API_DEPENDS, because webkit_modules.prf does the sanitization of the
        QT variable now and therefore needs QT_API_DEPENDS.

        * Source/api.pri:

2012-09-18  Sailesh Agrawal  <sail@chromium.org>

        Chromium: Scrollbar with tickmarks doesn't respond to clicks
        https://bugs.webkit.org/show_bug.cgi?id=96049

        Reviewed by Beth Dakin.

        Update exported symbols.

        * Source/autotools/symbols.filter:

2012-09-18  Bo Liu  <boliu@chromium.org>

        Revert 128780, 128676, 128645
        https://bugs.webkit.org/show_bug.cgi?id=97022

        Reviewed by Adam Barth.

        I made these revisions to add in-place reload behavior to ImagesEnabled setting.
        Reverting this for now due to them causing performance regression in
        chromium, possibly caused by increased calls to
        PermissionClient::imageAllowed.

        * Source/autotools/symbols.filter:

2012-09-18  Ryuan Choi  <ryuan.choi@samsung.com>

        [CMAKE] Fix build break because of memory exhausted.
        https://bugs.webkit.org/show_bug.cgi?id=77327

        Reviewed by Gyuyoung Kim.

        Added to avoid memory exhaustion on 32bit linux debug build.

        * Source/cmake/OptionsCommon.cmake:

2012-09-17  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Enable VIDEO_TRACK
        https://bugs.webkit.org/show_bug.cgi?id=96949

        Reviewed by Antonio Gomes.

        Turn on VIDEO_TRACK feature.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-09-17  Zan Dobersek  <zandobersek@gmail.com>

        [Gtk] Remove configuration options for stable features that are currently enabled
        https://bugs.webkit.org/show_bug.cgi?id=96621

        Reviewed by Martin Robinson.

        Remove configuration flags that were used for either features that were enabled
        by default or were enabled only when unstable features support was enabled. In
        any case the feature was removed only if it does not introduce a dependency.

        * configure.ac:

2012-09-17  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Auto-generate the module pri file for QtWebKit

        Reviewed by Simon Hausmann.

        * Source/api.pri:

2012-09-14  Julien Chaffraix  <jchaffraix@webkit.org>

        Revert r127457 and following fixes due to several hit-testing regressions
        https://bugs.webkit.org/show_bug.cgi?id=96830

        Reviewed by Antonio Gomes.

        This change reverts r127457, r127863 and r128505.

        * Source/autotools/symbols.filter:

2012-09-14  Adam Barth  <abarth@webkit.org>

        Remove webkitPostMessage
        https://bugs.webkit.org/show_bug.cgi?id=96577

        Reviewed by Ojan Vafai.

        Add ENABLE_LEGACY_VENDOR_PREFIXES flag.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-09-14  Jeffrey Pfau  <jpfau@apple.com>

        Allow third-party storage blocking setting to change while a page is loaded
        https://bugs.webkit.org/show_bug.cgi?id=95790

        Reviewed by Brady Eidson.

        Update exported symbols.

        * Source/autotools/symbols.filter:

2012-09-14  Bo Liu  <boliu@chromium.org>

        Add in-place reload behavior to ImagesEnabled setting
        https://bugs.webkit.org/show_bug.cgi?id=95478

        Reviewed by Adam Barth.

        Export WebCore::Settings::setImagesEnabled symbol.

        * Source/autotools/symbols.filter:

2012-09-14  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Fix handling of debug/release/debug_and_release/build_all

        We now pick up the defaults from Qt, in default_pre (CONFIG already
        contains the appropriate values for debug and release). We then let
        the command line arguments to qmake, or the project files themselves,
        override the configuration, and finally we sanitize the configuration
        in default_post.

        Reviewed by Simon Hausmann.

        * Source/api.pri:

2012-09-14  Keishi Hattori  <keishi@webkit.org>

        Add runtime flag that enables lang attribute for form controls in LayoutTests
        https://bugs.webkit.org/show_bug.cgi?id=96636

        Reviewed by Kent Tamura.

        * Source/autotools/symbols.filter:

2012-09-13  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        [CMake] Remove some redundant warning flags and enable a few more warnings.
        https://bugs.webkit.org/show_bug.cgi?id=96654

        Reviewed by Kenneth Rohde Christiansen.

        * Source/cmake/WebKitHelpers.cmake: Remove a few warning flags
        which are already enabled by -Wall and -Wextra, remove -W which
        looks useless and also enable a few more warnings by removing
        their -Wno-foo counterparts which were present.

2012-09-13  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Ensure that QT is finalized before loading qt_module.prf

        As qt_module.prf does dependency tracking based on the content of the
        QT variable. The intermediate WebKit modules modify the variable in
        their .pri files, so we have to ensure we've loaded all the modules
        before loading qt_module.

        Reviewed by Tor Arne Vestbø.
        Patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com> on 2012-09-13

        * Source/api.pri:

2012-09-13  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Make sure LIBS, PKGCONFIG, and QT, do not affect QtWebKit's prl file

        Unless it's actually a dependency of the public QtWebKit API.

        We could replace every occurance of LIBS, PKGCONFIG, and QT, in the pri
        files with their _PRIVATE equivivalent, but that's likely to break when
        someone adds a new QT/LIBS/PKGCONFIG += foo line somewhere. Instead we
        clean up the variables in default_post.

        This means that the CONFIG -= explicitlib in linkAgainstLibrary() is no
        longer needed, as it was a workaround for the intermediate libraries ending
        up in the prl file. And, since CONFIG -= staticlib was there to support
        the explicitlib option, we can remove that too (as well as the exception
        for gprof, since it would be empty). If gprof needs tweaks to always link
        statically they should go in gprof.prf.

        Reviewed by Simon Hausmann.

        * Source/api.pri:

2012-09-13  Oswald Buddenhagen  <oswald.buddenhagen@nokia.com>

        [Qt] Fllow rename of qt_module_config.prf to qt_module.prf

        Reviewed by Tor Arne Vestbø.

        * Source/api.pri:

2012-09-13  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] syncqt isn't re-run when WebKit1.pro changes and we're building with --no-webkit2
        https://bugs.webkit.org/show_bug.cgi?id=96545

        Reviewed by Tor Arne Vestbø.

        Do the QMAKE_INTERNAL_INCLUDED_FILES trick separately for WebKit1.pro and WebKit2/Target.pri,
        depending on build?(webkit1) and build?(webkit2), as discussed earlier.

        * Source/api.pri:

2012-09-12  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r127876.
        http://trac.webkit.org/changeset/127876
        https://bugs.webkit.org/show_bug.cgi?id=96600

        mouse click doesn't work for spin button if spin button in
        iframe (Requested by yosin on #webkit).

        * Source/autotools/symbols.filter:

2012-09-12  KyungTae Kim  <ktf.kim@samsung.com>

        [EFL] Support download attribute feature
        https://bugs.webkit.org/show_bug.cgi?id=96462

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Enable DOWNLOAD_ATTRIBUTE feature.

2012-09-12  Sami Kyostila  <skyostil@google.com>

        Rename OVERFLOW_SCROLLING as ACCELERATED_OVERFLOW_SCROLLING
        https://bugs.webkit.org/show_bug.cgi?id=96251

        Reviewed by Simon Fraser.

        Rename OVERFLOW_SCROLLING as ACCELERATED_OVERFLOW_SCROLLING to better describe
        the feature it controls.

        * Source/cmakeconfig.h.cmake:

2012-09-11  Ryuan Choi  <ryuan.choi@samsung.com>

        [CMAKE] Supply feature defines to CodeGeneratorTestRunner.
        https://bugs.webkit.org/show_bug.cgi?id=96273

        Reviewed by Gyuyoung Kim.

        * Source/cmake/WebKitFeatures.cmake: Generated FEATURE_DEFINES_WITH_SPACE_SEPARATOR.

2012-09-11  Arnaud Renevier  <a.renevier@sisa.samsung.com>

        [Gtk] allow building with css-shaders
        https://bugs.webkit.org/show_bug.cgi?id=95603

        Reviewed by Martin Robinson.

        if unstable features and accelerated compositing are turned on, and
        acceleration backend is opengl, then build CSS Shaders and CSS
        Filters.

        * configure.ac:

2012-09-11  Marcelo Lira  <marcelo.lira@openbossa.org>

        Restore original value of mock scrollbars enabled in InternalSettings
        https://bugs.webkit.org/show_bug.cgi?id=87680

        Reviewed by Adam Barth.

        Added backup support for mock scrollbars state in
        InternalSettings::Backup, and removed support for these
        from Qt's DumpRenderTree.

        * Source/autotools/symbols.filter:

2012-09-11  Raphael Kubo da Costa  <rakuco@webkit.org>

        [EFL] Rewrite the EFL-related Find modules
        https://bugs.webkit.org/show_bug.cgi?id=95237

        Reviewed by Kenneth Rohde Christiansen.

        FindEFL.cmake had several problems which caused unnecessary trouble
        when building the EFL port under some setups:

        o It looked for some modules (such as ecore) more than once for no
        reason, which led to people adding libraries and include paths in
        different ways across the build system.

        o It depended on pkg-config being present for the searches to
        succeed.

        o It obtained the library definitions from pkg-config, so
        ${FOO_LIBRARIES} would be set to something like "foo;bar" which
        expanded to "-lfoo -lbar" to the linker. If a wrong -L<path> was
        passed before that, the wrong library installation would end up
        being picked up.

        o Due to the problem above, we also needed to set the LINK_FLAGS
        property for each target with the value of ${FOO_LDFLAGS}, which was
        also obtained from pkg-config and sort of compensated the fact that
        the libraries did not use absolute paths and added the required -L
        paths. This also included dependencies for these libraries, so we
        ended up including libraries indirectly, which is bad.

        We have now replaced that file with a set of Find-modules which are
        much more granular, each of them responsible for looking for a
        single library and its components and setting library and include
        locations the right way (with FIND_PATH() and FIND_LIBRARY()), so
        that all the problems above are fixed.

        * Source/cmake/EFLHelpers.cmake: Added.
        * Source/cmake/FindEDBus.cmake: Added.
        * Source/cmake/FindEFL.cmake: Removed.
        * Source/cmake/FindEcore.cmake: Added.
        * Source/cmake/FindEdje.cmake: Added.
        * Source/cmake/FindEeze.cmake: Added.
        * Source/cmake/FindEfreet.cmake: Added.
        * Source/cmake/FindEina.cmake: Added.
        * Source/cmake/FindEvas.cmake: Added.
        * Source/cmake/OptionsEfl.cmake:

2012-09-11  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] In-source builds are broken

        Reviewed by Tor Arne Vestbø.

        The Tools sub-directory contains a Makefile checked into SVN. For in-source builds let's not try to
        overwrite it but instead generate a dedicated Makefile.Tools.

        * Makefile:
        * WebKit.pro:

2012-09-11  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Add a configure step to the Qt build system

        This allows building the Qt port using just 'qmake WebKit.pro'. Using
        the build-webkit script is still supported, and will add slightly more
        logic to the build, such as detecting the need for clean or incremental
        builds.

        Internally, the build system now uses a new variable, WEBKIT_CONFIG, for
        all things related to configuring the build, such as use/have/enable flags,
        and these are translated to defines in default_post. Project files should
        no longer check contains(DEFINES,...) to detect features, but use the new
        enable?(), use?(), and have?() functions. The no_webkit1 and no_webkit2
        options have been translated into WEBKIT_CONFIG options as well, and can
        be checked using build?().

        Reviewed by Simon Hausmann.

        * Source/QtWebKit.pro:
        * Source/api.pri:
        * Source/tests.pri:
        * WebKit.pro:

2012-09-10  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [CMake][EFL] Enable the LLInt
        https://bugs.webkit.org/show_bug.cgi?id=92682

        Reviewed by Csaba Osztrogonác.

        Added LLInt to CMake buildsystem and enabled it by default on EFL.
        Note that Ruby is not enforced: a secondary check is done when LLInt
        is enabled on the JSC's CMakeLists.txt.

        * CMakeLists.txt:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-09-07  Simon Fraser  <simon.fraser@apple.com>

        box-shadow causes overlay scrollbars to be in the wrong position when element is composited
        https://bugs.webkit.org/show_bug.cgi?id=85647

        Reviewed by James Robinson.

        Test overlay scrollbars in composited layers.

        * ManualTests/scrollbars/scrollbars-in-composited-layers.html: Added.

2012-09-07  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Move user agent helpers to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=95745

        Reviewed by Carlos Garcia Campos.

        Added an autoconf step for the new user agent shared code header in
        WebCore. This is necessary so that we can use the user agent version
        based on the information in the configure.ac file.

        * configure.ac:

2012-09-07  Allan Sandfeld Jensen  <allan.jensen@nokia.com>

        Simplify hitTestResultAtPoint and nodesFromRect APIs
        https://bugs.webkit.org/show_bug.cgi?id=95720

        Reviewed by Antonio Gomes.

        Update exported symbols.

        * Source/autotools/symbols.filter:

2012-09-07  Zan Dobersek  <zandobersek@gmail.com>

        [GTK] Multiple feature defines in webcore_cppflags can occur
        https://bugs.webkit.org/show_bug.cgi?id=95942

        Reviewed by Martin Robinson.

        Add the feature_defines_unstable variable that should control values of feature
        defines for unstable features when unstable features are not enabled (e.g. release builds).

        * GNUmakefile.am:

2012-09-06  Zan Dobersek  <zandobersek@gmail.com>

        [Gtk] Remove configuration options for features that are not supported by the Gtk port
        https://bugs.webkit.org/show_bug.cgi?id=87664

        Reviewed by Martin Robinson.

        Remove configuration options for features that are completely unsupported by the GTK port.
        They only bloat the configure.ac file. They should be re-added when the feature becomes
        supported and introduces an external dependency that the users might want to avoid.

        * configure.ac:

2012-09-06  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] Fix build with ANGLE on platforms that provide EGL/GLESv2
        https://bugs.webkit.org/show_bug.cgi?id=95965

        Reviewed by Tor Arne Vestbø.

        Add ANGLE as separate static library to the build and dependencies.

        * Source/api.pri:
        * WebKit.pro:

2012-09-05  George Staikos  <staikos@webkit.org>

        [BlackBerry] Match th ebuild flags from the platform library
        https://bugs.webkit.org/show_bug.cgi?id=95423

        Reviewed by Antonio Gomes.

        Unaligned build flags can cause crashes and other strange behavior.
        These two were not defined here but were defined on the system.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-09-05  Kaustubh Atrawalkar  <kaustubh@motorola.com>

        [DRT] LTC:: Move printing related APIs from LayoutTestController to Internals
        https://bugs.webkit.org/show_bug.cgi?id=92735

        Reviewed by Hajime Morita.

        Move numberOfPages, pageProperty & pageSizeAndMarginsInPixels in Internals and remove duplicated code from DumprenderTree & WebkitTestRunner.
        Added symbols for GTK builds for corresponding APIs.

        * Source/autotools/symbols.filter:

2012-09-04  Julien Chaffraix  <jchaffraix@webkit.org>

        REGRESSION(r120832): RenderLayer::clampScrollOffset doesn't properly clamp
        https://bugs.webkit.org/show_bug.cgi?id=95776

        Reviewed by Simon Fraser.

        * ManualTests/select-menu-list-wrongly-positioned.html: Added.

2012-09-04  Michał Pakuła vel Rutka  <m.pakula@samsung.com>

        [EFL] Context menu restore.
        https://bugs.webkit.org/show_bug.cgi?id=74179

        Reviewed by Gyuyoung Kim.

        Adds context menu support for EFL port using non-CROSS_PLATFORM_CONTEXT_MENUS
        approach, the same as used in WebKit2.

        * Source/cmake/OptionsEfl.cmake: Turn on CONTEXT_MENUS flag for EFL port

2012-09-04  Allan Sandfeld Jensen  <allan.jensen@nokia.com>

        Allow child-frame content in hit-tests.
        https://bugs.webkit.org/show_bug.cgi?id=95204

        Reviewed by Antonio Gomes.

        Update exported symbols.

        * Source/autotools/symbols.filter:

2012-09-04  Jinwoo Song  <jinwoo7.song@samsung.com>

        [CMAKE] Update cmakeconfig.h.cmake 
        https://bugs.webkit.org/show_bug.cgi?id=95712
       
        Reviewed by Gyuyoung Kim.

        Update feature definitions which are missing compared to WebKitFeatures.cmake

        * Source/cmakeconfig.h.cmake:

2012-09-03  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL] Use WebKitVersion.h to get version information
        https://bugs.webkit.org/show_bug.cgi?id=95669

        Reviewed by Gyuyoung Kim.

        WEBKIT_USER_AGENT_MAJOR_VERSION and WEBKIT_USER_AGENT_MINOR_VERSION
        are defined as constant in the OptionsEfl.cmake. But we do not need 
        to define these here but can use the defined constant in WebKitVersion.h.

        WebKitVersion.h is already generated with the version information 
        from the Source/WebCore/Configurations/Version.xcconfig.

        * Source/cmake/OptionsEfl.cmake: Do not set WEBKIT_USER_AGENT_* variables.
        * Source/cmakeconfig.h.cmake: Remove WEBKIT_USER_AGENT_* definitions
        as no more port uses.

2012-08-31  Tony Chang  <tony@chromium.org>

        Remove ENABLE_CSS3_FLEXBOX compile time flag
        https://bugs.webkit.org/show_bug.cgi?id=95382

        Reviewed by Ojan Vafai.

        Everyone is already enabling this by default and the spec has stablized.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:

2012-08-30  JungJik Lee  <jungjik.lee@samsung.com>

        [EFL][WK2] Add WebMemorySampler feature.
        https://bugs.webkit.org/show_bug.cgi?id=91214

        Reviewed by Kenneth Rohde Christiansen.

        Set WebMemorySampler feature on in EFL port.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-08-30  Rob Buis  <rbuis@rim.com>

        [CMake] Suppress ANGLE compilation warnings
        https://bugs.webkit.org/show_bug.cgi?id=95377

        Reviewed by Antonio Gomes.

        Change WEBKIT_SET_EXTRA_COMPILER_FLAGS so it has an option to suppress C++ warnings.

        * Source/cmake/WebKitHelpers.cmake:

2012-08-29  Thiago Macieira  <thiago.macieira@intel.com>

        Tell git-archive to not export .gitattributes and .gitignore

        Reviewed by Simon Hausmann.

        Exclude git specific files from archives created via git-archive.

        * .gitattributes:

2012-08-28  Mario Sanchez Prada  <msanchez@igalia.com>

        Add directory generated by Eclipse to .gitignore
        https://bugs.webkit.org/show_bug.cgi?id=95231

        Reviewed by Andreas Kling.

        * .gitignore: Ignore .settings directory.

2012-08-27  Rob Buis  <rbuis@rim.com>

        [BlackBerry] remove -fno-rtti option in CMAKE_C_FLAGS
        https://bugs.webkit.org/show_bug.cgi?id=95089

        Reviewed by Antonio Gomes.

        This option does not make sense for compiling C and gives a warning.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-08-27  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>

        Rename RegisterProtocolHandler API to NavigatorContentUtils
        https://bugs.webkit.org/show_bug.cgi?id=94920

        Reviewed by Adam Barth.

        Modified configuration files so that they contain renamed NavigatorContentUtils-prefixed files.

        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-08-23  Kevin Ollivier  <kevino@theolliviers.com>

        [wx] Unreviewed build fix. Disable compilation of WebDOM file for now,
        add the opentype directory, and remove old ATSUI files no longer in the tree.
        
        * wscript:

2012-08-22  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>

        [EFL] Use WTF_USE_SOUP instead BUILDING_SOUP__
        https://bugs.webkit.org/show_bug.cgi?id=94744

        Reviewed by Gustavo Noronha Silva.

        There is no need to define BUILDING_SOUP__ if only WTF_USE_SOUP
        is used.

        * GNUmakefile.am:
        * Source/cmake/OptionsEfl.cmake:

2012-08-23  Zan Dobersek  <zandobersek@gmail.com>

        [Gtk] Move feature defines processing into a GNUmakefile that's simple to autogenerate
        https://bugs.webkit.org/show_bug.cgi?id=87127

        Reviewed by Martin Robinson.

        Add 'feature_defines_defaults' and 'feature_defines_overrides' variables
        and define them, along with 'feature_defines' (changed from the all-caps version),
        before webcore_cppflags.

        * GNUmakefile.am:

2012-08-23  Martin Robinson  <mrobinson@igalia.com>

        [GTK] The tarball should be called webkitgtk-x.x.x.tar.xz
        https://bugs.webkit.org/show_bug.cgi?id=94572

        Reviewed by Carlos Garcia Campos.

        Change the name of the tarball to match the name of the library
        and to disambiguate it from other WebKit ports.

        * configure.ac: Update the tarball name.

2012-08-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Bump WebKitGTK+ version number.

        * configure.ac: Bump version number to 1.11.0 now that we branched
        for 1.10.

2012-08-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r126306): it broke the plugin process
        https://bugs.webkit.org/show_bug.cgi?id=94797

        Reviewed by Xan Lopez.

        * GNUmakefile.am:

2012-08-22  Beth Dakin  <bdakin@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=94401
        Add support for making a web site become paginated using overflow: 
        paged-x | paged-y
        -and corresponding-
        <rdar://problem/11831783> 

        Reviewed by Dave Hyatt.

        * Source/autotools/symbols.filter:

2012-08-22  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] Split WebCore/platform into a separate library
        https://bugs.webkit.org/show_bug.cgi?id=94435

        Reviewed by Martin Robinson.

        More people have been reporting problems when linking WebCore because
        the command line limit is being exceeded. Splitting WebCore a bit more
        is in order.

        * GNUmakefile.am: add variable that will hold the list of source files
        for libWebCorePlatform .

2012-08-21  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL] Enable CSS Text Decoration by default
        https://bugs.webkit.org/show_bug.cgi?id=94483

        Reviewed by Kenneth Rohde Christiansen.

        By enabling this feature by default, it will get tested by the bots
        and we can make sure no regressions will happen.

        * Source/cmake/OptionsEfl.cmake:

2012-08-21  Ulan Degenbaev  <ulan@chromium.org>

        Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer constructed and destructed
        https://bugs.webkit.org/show_bug.cgi?id=92993

        Reviewed by Kenneth Russell.

        Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer
        is constructed and destructed so that V8's garbage collection
        heuristics can account for the memory held by these objects.

        * ManualTests/typed-array-memory.html: Added.

2012-08-21  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Using a native window for the WebView breaks GtkOverlay
        https://bugs.webkit.org/show_bug.cgi?id=90085

        Reviewed by Alejandro G. Castro.

        * configure.ac: Parse xcomposite pkg-config file during configuration.

2012-08-21  Patrick Gansterer  <paroga@webkit.org>

        Build fix for WinCE after r115348.

        * Source/cmake/OptionsWindows.cmake: Removed duplicated WEBKIT_OPTION_DEFAULT_PORT_VALUE().

2012-08-20  George Staikos  <staikos@webkit.org>

        [BlackBerry] Enable XHR Response BLOB
        https://bugs.webkit.org/show_bug.cgi?id=94525

        Reviewed by Rob Buis.

        Add the XHR response blob enable feature to the cmake build system and
        enable it for BlackBerry.

        * Source/cmake/OptionsBlackBerry.cmake: Add the feature and enable
        * Source/cmakeconfig.h.cmake: Add the feature

2012-08-20  Dominik Röttsches  <dominik.rottsches@intel.com>

        [EFL] Get rid of pango backend support once harfbuzz-ng is working
        https://bugs.webkit.org/show_bug.cgi?id=92102

        Reviewed by Kenneth Rohde Christiansen.

        Removing choice of font backend, Pango detection not required any more.

        * Source/cmake/FindPango.cmake: Removed.
        * Source/cmake/LibFindMacros.cmake: Removed.
        * Source/cmake/OptionsEfl.cmake: Removing choice of font backend.

2012-08-17  Raphael Kubo da Costa  <rakuco@webkit.org>

        [CMake] Add FindDBus.cmake and use it in the EFL port.
        https://bugs.webkit.org/show_bug.cgi?id=94319

        Reviewed by Daniel Bates.

        Currently, the Battery Status-related code in the EFL port uses
        libdbus but does not directly include its directories or link
        against it, relying instead on the compiler flags coming via
        EDbus's pkg-config information.

        That will break once we stop obtaining EFL's include directories
        and library paths from pkg-config, so write FindDBus.cmake to
        prepare for that.

        * Source/cmake/FindDBus.cmake: Added.
        * Source/cmake/OptionsEfl.cmake: Look for D-Bus if BATTERY_STATUS
        support is enabled.

2012-08-17  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Remove some shared libraries from linking
        https://bugs.webkit.org/show_bug.cgi?id=94253

        Reviewed by Yong Li.

        Remove some shared libraries.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-08-16  Gustavo Noronha Silva  <gns@gnome.org>

        Unreviewed speculative 32 bits build fix.

        * Source/autotools/symbols.filter: add symbol version that gets
        generated in 32 bits build.

2012-08-16  Max Feil  <mfeil@rim.com>

        [BlackBerry] Some media controls are mispositioned for dynamic live streams (HLS)
        https://bugs.webkit.org/show_bug.cgi?id=94176

        Reviewed by Antonio Gomes.

        An automated layout test is not possible for this patch because
        dynamic live streams require a special dedicated web server.
        Putting an external video URL into an automated test is not
        correct either. So I have created a manual test that points to
        an external HLS video that works today.

        * ManualTests/blackberry/video-hls-controls.html: Added.

2012-08-16  Marja Hölttä  <marja@chromium.org>

        FormController, WebHistoryItem: Enable reading selected file names from document state
        https://bugs.webkit.org/show_bug.cgi?id=91231

        Reviewed by Jochen Eisinger.

        This change enables Chromium to set up file permissions properly when
        the session restore feature restores a page with selected files.

        * Source/autotools/symbols.filter: Exported FormController::getReferencedFilePaths and HistoryController::saveDocumentAndScrollState.

2012-08-15  Kent Tamura  <tkent@chromium.org>

        Calendar Picker: Localize numbers in a calendar picker
        https://bugs.webkit.org/show_bug.cgi?id=93704

        Reviewed by Hajime Morita.

        * ManualTests/forms/calendar-picker.html:
        Add a mock pagePopupController.localizeNumberString().

2012-08-15  Ryosuke Niwa  <rniwa@webkit.org>

        Update manual tests and comments to refer to TestRunner instead of LayoutTestController
        https://bugs.webkit.org/show_bug.cgi?id=94168

        Reviewed by Kent Tamura.

        * ManualTests/resources/multiFileResources/post-echo-and-notify-done.cgi:

2012-08-15  Bruno de Oliveira Abinader  <bruno.abinader@basyskom.com>

        [css3-text] Add CSS3 Text decoration compile flag
        https://bugs.webkit.org/show_bug.cgi?id=93863

        Reviewed by Julien Chaffraix.

        This patch handles the compile flag implementation, which will come disabled by
        default, thus not exposing the CSS3 text decoration features to the web, unless
        when explicitly enabling it with "--css3-text-decoration" build parameter.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:

2012-08-15  Brady Eidson  <beidson@apple.com>

        Removing a plug-in element from a page opened in a background tab in Safari crashes
        <rdar://problem/12057991> and https://bugs.webkit.org/show_bug.cgi?id=93913

        Reviewed by Beth Dakin.

        * Source/autotools/symbols.filter: Allow this symbol through for DRT's sake.

2012-08-14  Keishi Hattori  <keishi@webkit.org>

        Share common code between calendar picker and color suggestion picker
        https://bugs.webkit.org/show_bug.cgi?id=93802

        Reviewed by Kent Tamura.

        * ManualTests/forms/calendar-picker.html:
        * ManualTests/forms/color-suggestion-picker.html:

2012-08-14  Milian Wolff  <milian.wolff@kdab.com>

        [Qt] QtWebKit linking fails for QNX cross build
        https://bugs.webkit.org/show_bug.cgi?id=93460

        Reviewed by Simon Hausmann.

        The GCC 4.4.2 used by the QNX BBNDK 2.0.1 fails to link QtWebKit.
        Apparently it does not properly support the linker invokation using
        -Wl,-whole-archive -l... -Wl,-no-whole-archive
        yielding a "cc: no files to process" error. This patch works around
        this issue by adding an empty dummy file (and thus object file) to
        the linking stage.

        * Source/api.pri:

2012-08-14  Keishi Hattori  <keishi@webkit.org>

        Move page popup resources to separate directory
        https://bugs.webkit.org/show_bug.cgi?id=93932

        Reviewed by Kent Tamura.

        * ManualTests/forms/calendar-picker.html:
        * ManualTests/forms/color-suggestion-picker.html:

2012-08-11  Raphael Kubo da Costa  <rakuco@webkit.org>

        [CMake] Rewrite FindLibSoup2.cmake.
        https://bugs.webkit.org/show_bug.cgi?id=93191

        Reviewed by Rob Buis.

        The existing LibSoup2 was imported from somewhere else and not
        only did it contain a lot of unnecessary cruft to look for libsoup
        2.2 (which we do not support anyway), but it also relied on the
        paths returned by pkg-config for setting the library and include
        paths.

        For one, this meant "-lsoup-2.4" was passed to the linked instead
        of "-L/path/to/libsoup-2.4.so", which would sometimes make a
        system version of libsoup to be picked up instead of the one
        installed by, say, jhbuild.

        The new FindLibSoup.cmake now only looks for libsoup 2.4 and
        relies on pkg-config solely for retrieving the current LibSoup
        version.

        * Source/cmake/FindLibSoup.cmake: Added.
        * Source/cmake/FindLibSoup2.cmake: Removed.
        * Source/cmake/OptionsEfl.cmake: Look for LibSoup instead of
        LibSoup2, look for the GObject component of Glib.

2012-08-13  Raphael Kubo da Costa  <rakuco@webkit.org>

        [CMake] Remove glib-related Find modules and write single new one instead.
        https://bugs.webkit.org/show_bug.cgi?id=93786

        Reviewed by Rob Buis.

        As part of the ongoing effort to write proper Find modules that use
        absolute include and library paths instead of the short ones from
        pkg-config, replace Find{GIO,Glib,Gthread}.cmake with a single
        FindGLIB.cmake that optionally detects components such as GIO and
        GObject.

        Library paths are now defined as "/full/path/to/libfoo.so" instead of
        simply "foo", so that the linker receives a full path and we can then
        avoid accidentally picking up a libfoo.so installed into /usr/lib
        instead of a local one built with jhbuild.

        * Source/cmake/FindGIO.cmake: Removed.
        * Source/cmake/FindGLIB.cmake: Added.
        * Source/cmake/FindGlib.cmake: Removed.
        * Source/cmake/FindGthread.cmake: Removed.
        * Source/cmake/OptionsEfl.cmake: Look for GLIB with the GIO component.

2012-08-13  Zan Dobersek  <zandobersek@gmail.com>

        [Gtk] Remove SVG_FEATURES and HTML_FEATURES from Source/WebCore/GNUmakefile.am
        https://bugs.webkit.org/show_bug.cgi?id=90693

        Reviewed by Philippe Normand.

        Remove exportation of SVG_FLAGS and HTML_FLAGS as Automake conditionals
        as they are not required anymore.

        * configure.ac:

2012-08-12  Loïc Yhuel  <loic.yhuel@softathome.com>

        [Qt] Make it possible to build without QtTest/QtPrintSupport
        https://bugs.webkit.org/show_bug.cgi?id=93492

        Reviewed by Tor Arne Vestbø.

        * Source/QtWebKit.pro: Disable tests if no testlib

2012-08-10  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Enable relro link option for JSC executable
        https://bugs.webkit.org/show_bug.cgi?id=93726

        Reviewed by Yong Li.

        Enable relro link option for JSC executable.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-08-09  Raphael Kubo da Costa  <rakuco@webkit.org>

        [CMake] Bump minimum required version to 2.8.3.
        https://bugs.webkit.org/show_bug.cgi?id=93450

        Reviewed by Daniel Bates.

        Following the discussion in bug 93189, it was decided that bumping
        the minimum required version from 2.8.0 to 2.8.3 was a good thing
        due to additional features, such as improved
        FIND_PACKAGE_HANDLE_STANDARD_ARGS() support and better argument
        handling in the PKG_CHECK_MODULES() call.

        CMake 2.8.3 was released almost two years ago, so people are
        expected to have it or a later version installed.

        * CMakeLists.txt:

2012-08-08  Shane Stephens  <shanestephens@google.com>

        Compile flag for CSS Hierarchies
        https://bugs.webkit.org/show_bug.cgi?id=92433

        Reviewed by Tony Chang.

        * Source/cmake/WebKitFeatures.cmake:

2012-08-08  Ming Xie  <mxie@rim.com>

        [BlackBerry] Fix "-fPIC" define in the BlackBerry build
        https://bugs.webkit.org/show_bug.cgi?id=93548

        Reviewed by Rob Buis.

        In the current CMake release (version 2.8.5), ${CMAKE_SHARED
        _LIBRARY_C_FLAGS} and ${CMAKE_SHARED_LIBRARY_CXX_FLAGS} is
        set to empty (See cmake/Modules/Platform/QNX.cmake)

        This breaks the assumption which WebKit CMake build system 
        makes in Source/cmake/WebKitHelper.cmake

        * Source/cmake/OptionsBlackBerry.cmake:

2012-08-08  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] 0.11 build broken (again)
        https://bugs.webkit.org/show_bug.cgi?id=93474

        Reviewed by Martin Robinson.

        * configure.ac: Disable media-stream build if GStreamer 0.11
        support is enabled, due to farstream-0.1 still messing up with
        gstreamer-0.10 include path.

2012-08-07  YoungTaeck Song  <youngtaeck.song@samsung.com>

        [WK2][EFL] Implement accelerated compositing on WK2 Efl port
        https://bugs.webkit.org/show_bug.cgi?id=89840

        Reviewed by Noam Rosenthal.

        Implement accelerated composition with TiledBackingStore on WK2 Efl port.
        This implementation is based on COORDINATED_GRAPHICS.
        Add COORDINATED_GRAPHICS related definitions in OptionsEfl.cmake.

        * Source/cmake/OptionsEfl.cmake:

2012-08-07  No'am Rosenthal  <noam.rosenthal@nokia.com>

        [Qt] Make it possible to build without QtQuick

        Reviewed by Simon Hausmann.

        * Source/QtWebKit.pro:
        * Source/tests.pri:

2012-07-19  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] Remove Qt 4 specific code paths
        https://bugs.webkit.org/show_bug.cgi?id=88161

        Reviewed by Kenneth Rohde Christiansen.

        * Source/api.pri:
        * WebKit.pro:

2012-08-06  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Enable link prefetch
        https://bugs.webkit.org/show_bug.cgi?id=93281

        Reviewed by Kentaro Hara.

        * Source/cmake/OptionsEfl.cmake: Enable LINK_PREFETCH by default.

2012-08-06  Xan Lopez  <xlopez@igalia.com>

        [GTK] Cleanup configure.ac build options output
        https://bugs.webkit.org/show_bug.cgi?id=93245

        Reviewed by Laszlo Gombos.

        Remove duplicated elements, sort alphabetically.

        * configure.ac: ditto.

2012-08-06  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and configure.ac for 1.9.6 release

        * configure.ac: Bump version numbers.

2012-08-03  Patrick Gansterer  <paroga@webkit.org>

        [CMake][WIN] Disable C++ exceptions and RTTI
        https://bugs.webkit.org/show_bug.cgi?id=93104

        Reviewed by Ryosuke Niwa.

        Both features are not used in WebKit, so remove them to safe some code.
        Also enable compilation of plain c files with multiple processes.

        * Source/cmake/OptionsWindows.cmake:

2012-08-03  Mario Sanchez Prada  <msanchez@igalia.com>

        Unreviewed build fix for GTK after r124479.

        * Source/autotools/symbols.filter: Removed unneeded symbol.

2012-08-03  Oswald Buddenhagen  <oswald.buddenhagen@nokia.com>

        [Qt] Populate .qmake.cache from the top-level project file

        This makes it possible to build webkit without using the perl build
        script. The duplicated logic in build-webkit will be removed when we
        remove the Qt4 code paths. The build-webkit script will then simply
        call 'qmake WebKit.pro' from WEBKITOUTPUTDIR.

        Reviewed by Tor Arne Vestbø.

        * WebKit.pro:

2012-08-03  Dominik Röttsches  <dominik.rottsches@intel.com>

        [cmake] Cleanup FindHarfBuzz.cmake
        https://bugs.webkit.org/show_bug.cgi?id=92984

        Reviewed by Hajime Morita.

        Cleanup which didn't make it into my previous ptch.

        * Source/cmake/FindHarfBuzz.cmake: Remove duplicate line, add a bit of documentation.

2012-08-03  Joone Hur  <joone.hur@intel.com>

        [EFL][DRT] WebKitAnimation API compile-time disabled
        https://bugs.webkit.org/show_bug.cgi?id=84593

        Reviewed by Laszlo Gombos.

        Enable ENABLE_ANIMATION_API by default on the Efl port.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmakeconfig.h.cmake:

2012-08-02  Zan Dobersek  <zandobersek@gmail.com>

        Unreviewed attempt at fixing the GTK 64-bit debug build.

        * Source/autotools/symbols.filter:

2012-08-02  Martin Robinson  <mrobinson@igalia.com>

        [GTK] When farstream is not present do not enable MediaStream

        Reviewed by Philippe Normand.

        When farstream libraries are no present, simply do not build MediaStream
        support.

        * configure.ac:

2012-08-01  Jian Li  <jianli@chromium.org>

        Add new CSS property "-webkit-widget-region" to expose dashboard region support for other port
        https://bugs.webkit.org/show_bug.cgi?id=90298

        Reviewed by Adam Barth.

        * configure.ac: Add ENABLE_WIDGET_REGION define.

2012-07-31  Joshua Netterfield  <jnetterfield@rim.com>

        [BlackBerry] Enable CSS Filter Effects
        https://bugs.webkit.org/show_bug.cgi?id=92685

        Reviewed by Rob Buis.

        Enable CSS filter effects, with the exception of custom effects (CSS shaders) and reference effects (SVG effects)

        Internally reviewed by Arvid Nilsson <anilsson@rim.com> and Antonio Gomes <agomes@rim.com>.

        * Source/cmake/OptionsBlackBerry.cmake: Add LayerFilterRenderer
        * Source/cmakeconfig.h.cmake: Acknowledge CSS filter effects

2012-07-31  Ryosuke Niwa  <rniwa@webkit.org>

        Perf-o-matic: dashboard images are not generated properly from incrementally updated JSON
        https://bugs.webkit.org/show_bug.cgi?id=92717

        Reviewed by Hajime Morita.

        Sort the values by timestamp. Unfortunately, there isn't a good way of testing this fix.

        * Websites/webkit-perf.appspot.com/models.py:
        (Runs.chart_params):

2012-07-31  Danilo Cesar Lemes de Paula  <danilo.cesar@collabora.co.uk>

        add Farstream flags/deps to WebKit, for WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=87524

        Reviewed by Philippe Normand.

        Since Farstream will be used as the backend for GTK's WebRTC, this
        patch adds it as a dependency to the build system.

        * GNUmakefile.am:
        * configure.ac:

2012-07-30  Ryosuke Niwa  <rniwa@webkit.org>

        /api/test/runs/chart expires on perf-o-matic
        https://bugs.webkit.org/show_bug.cgi?id=92714

        Reviewed by Hajime Morita.

        Don't update the entire JSON while generating the dashboard images.
        This is a bug and not doing this will reduce the server load significantly.

        * Websites/webkit-perf.appspot.com/controller.py:
        (RunsChartHandler.post):

2012-07-30  Dominik Röttsches  <dominik.rottsches@intel.com>

        Avoid Assertion Failure in HarfBuzzRun::characterIndexForXPosition
        https://bugs.webkit.org/show_bug.cgi?id=92376

        Reviewed by Tony Chang.

        Added manual test to reliably reproduce assertion failure which is solved by this patch.

        * ManualTests/harfbuzz-mouse-selection-crash.html: Added.

2012-07-29  Vsevolod Vlasov  <vsevik@chromium.org>

        Web Inspector: Resource agent's reference to cached resources should be weak.
        https://bugs.webkit.org/show_bug.cgi?id=92108

        Reviewed by Pavel Feldman.

        * Source/autotools/symbols.filter:

2012-07-30  Shinya Kawanaka  <shinyak@chromium.org>

        Prohibit having AuthorShadowDOM of input or textarea element for a while and having a flag to enable it in Internals.
        https://bugs.webkit.org/show_bug.cgi?id=92611

        Reviewed by Hajime Morita.

        * Source/autotools/symbols.filter:

2012-07-30  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r124000.
        http://trac.webkit.org/changeset/124000
        https://bugs.webkit.org/show_bug.cgi?id=92632

        seems to have broken chromium Range_InstanceSizeUnknown unit
        test across many platforms (Requested by tomhudson on
        #webkit).

        * Source/autotools/symbols.filter:

2012-07-30  Patrick Gansterer  <paroga@webkit.org>

        Replace UnicodeWinCE with UnicodeWchar
        https://bugs.webkit.org/show_bug.cgi?id=92539

        Reviewed by Ryosuke Niwa.

        UnicodeWinCE never contained WinCE specific code. UnicodeWchar
        is a replacement for it, which is mainly based on the functions
        from <wchar.h>. It is ment as a minimal Unicode backend, which
        can be used very easy and has no external dependencies.

        * Source/cmake/OptionsWinCE.cmake:

2012-07-29  Vsevolod Vlasov  <vsevik@chromium.org>

        Web Inspector: Resource agent's reference to cached resources should be weak.
        https://bugs.webkit.org/show_bug.cgi?id=92108

        Reviewed by Pavel Feldman.

        * Source/autotools/symbols.filter:

2012-07-29  Rik Cabanier  <cabanier@adobe.com>

        Add ENABLE_CSS_COMPOSITING flag
        https://bugs.webkit.org/show_bug.cgi?id=92553

        Reviewed by Dirk Schulze.

        Adds compiler flag CSS_COMPOSITING to build systems to enable CSS blending and compositing. See spec https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:

2012-07-27  Kihong Kwon  <kihong.kwon@samsung.com>

        [EFL] Support for HTML media capture
        https://bugs.webkit.org/show_bug.cgi?id=91842

        Reviewed by Ryosuke Niwa.

        Add HTML media capture feature, and enable that on the Efl port.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-27  Ryosuke Niwa  <rniwa@webkit.org>

        Unreviewed perf-o-matic build fix for dashboard image generation.
        Also, only show Parser/html5-full-render on the dashboard by default
        so that it won't take forever to load it.

        * Websites/webkit-perf.appspot.com/controller.py:
        (schedule_runs_update):
        (RunsChartHandler.post):
        * Websites/webkit-perf.appspot.com/models.py:
        (Runs.chart_params):
        (DashboardImage.get_image):
        * Websites/webkit-perf.appspot.com/models_unittest.py:
        (RunsTest.test_chart_params_with_value):

2012-07-27  Dominik Röttsches  <dominik.rottsches@intel.com>

        [Cairo] Add complex font drawing using HarfbuzzNG
        https://bugs.webkit.org/show_bug.cgi?id=91864

        Reviewed by Simon Hausmann and Martin Robinson.

        Configuring Freetype backend to use HarfBuzz by default.

        * Source/cmake/FindHarfBuzz.cmake: Added pkgconfig based discovery of HarfBuzz.
        * Source/cmake/OptionsEfl.cmake: Adding Harfbuzz configuration.

2012-07-26  Dan Bernstein  <mitz@apple.com>

        When Safari 6 is launched via the WebKit Xcode workspace, it does not link against the built frameworks
        https://bugs.webkit.org/show_bug.cgi?id=92331

        Reviewed by Mark Rowe.

        Changed references to the Safari executable to the SafariForWebKitDevelopment binary.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2012-07-26  Keishi Hattori  <keishi@webkit.org>

        Implement ColorSuggestionPicker page popup
        https://bugs.webkit.org/show_bug.cgi?id=92109

        Reviewed by Kent Tamura.

        * ManualTests/forms/color-suggestion-picker.html: Added. Tests colorSuggestionPicker.{js,css}

2012-07-26  Zoltan Nyul  <zoltan.nyul@intel.com>

        [EFL] EFL port should use XDG paths
        https://bugs.webkit.org/show_bug.cgi?id=91719

        Reviewed by Kenneth Rohde Christiansen.

        Efreet library added.

        * Source/cmake/FindEFL.cmake:

2012-07-26  Kaustubh Atrawalkar  <kaustubh@motorola.com>

        [DRT] LTC:: pageNumberForElementById() could be moved to Internals.
        https://bugs.webkit.org/show_bug.cgi?id=92091

        Reviewed by Adam Barth.

        Exporting Internals::pageNumber symbols for the Gtk build.

        * Source/autotools/symbols.filter:

2012-07-25  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r123606.
        http://trac.webkit.org/changeset/123606
        https://bugs.webkit.org/show_bug.cgi?id=92247

        broke Windows build of Chromium (Requested by tomhudson on
        #webkit).

        * ManualTests/forms/color-suggestion-picker.html: Removed.

2012-07-25  Keishi Hattori  <keishi@webkit.org>

        Implement ColorSuggestionPicker page popup
        https://bugs.webkit.org/show_bug.cgi?id=92109

        Reviewed by Kent Tamura.

        * ManualTests/forms/color-suggestion-picker.html: Added. Tests colorSuggestionPicker.{js,css}

2012-07-23  Kent Tamura  <tkent@chromium.org>

        [GTK] Remove unnecessary trailing space in the previous commit.

        * Source/autotools/symbols.filter:

2012-07-23  Kent Tamura  <tkent@chromium.org>

        [GTK] Attempt to fix build

        * Source/autotools/symbols.filter: Export DocumentMarkerController::addTextMatchMarker.

2012-07-23  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r123184, r123195, and r123197.
        http://trac.webkit.org/changeset/123184
        http://trac.webkit.org/changeset/123195
        http://trac.webkit.org/changeset/123197
        https://bugs.webkit.org/show_bug.cgi?id=92049

        pagecycler regression (Requested by morrita on #webkit).

        * Source/autotools/symbols.filter:

2012-07-23  Roger Fong  <roger_fong@apple.com>

        If select element in Windows is off screen horizontally, 
        menu is either inappropriately resized or positioned offscreen.
        https://bugs.webkit.org/show_bug.cgi?id=91913
        <rdar://problem/7611229>

        Reviewed by Tim Horton.

        Add a manual test to verify that popup menus render in the correct place.
        
        * ManualTests/win/select-menu-off-screen.html: Added.

2012-07-23  Simon Fraser  <simon.fraser@apple.com>

        Implement sticky positioning
        https://bugs.webkit.org/show_bug.cgi?id=90046

        Reviewed by Ojan Vafai.

        Add ENABLE_CSS_STICKY_POSITION, defaulting to off initially.
        
        Sort the ENABLE_CSS lines in the file.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-23  Patrick Gansterer  <paroga@webkit.org>

        [WINCE] Define NOMINMAX in the build system instead of Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=91938

        Reviewed by Ryosuke Niwa.

        Define it in OptionsWindows.cmake, since NOMINMAX
        should to be defined for all windows ports.

        * Source/cmake/OptionsWinCE.cmake:
        * Source/cmake/OptionsWindows.cmake:

2012-07-22  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r123298 and r123301.
        http://trac.webkit.org/changeset/123298
        http://trac.webkit.org/changeset/123301
        https://bugs.webkit.org/show_bug.cgi?id=91953

        We need to think some more about the intricacies of exposing a
        CMake option for ENABLE_DFG_JIT as this option is specific to
        the port and architecture. (Requested by dydx on #webkit).

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-22  Daniel Bates  <dbates@webkit.org>

        Fix the Windows CE build after <http://trac.webkit.org/changeset/123298>
        (https://bugs.webkit.org/show_bug.cgi?id=91939)

        Disable the DFG JIT across all CMake ports (by default) (*). Enabling DFG JIT
        breaks the Windows CE build as the Windows CE port builds with the JIT disabled
        (ENABLE_JIT := 0) and hence ENABLE_ASSEMBLER := 0.

        (*) We should look to further discuss with CMake port maintainers about enabling
        the DFG JIT by default.

        * Source/cmake/WebKitFeatures.cmake:

2012-07-23  Kent Tamura  <tkent@chromium.org>

        Rename ENABLE_METER_TAG and ENABLE_PROGRESS_TAG to ENABLE_METER_ELEMENT and ENABLE_PROGRESS_ELEMENT respectively
        https://bugs.webkit.org/show_bug.cgi?id=91941

        Reviewed by Kentaro Hara.

        A flag name for an elmement should be ENABLE_*_ELEMENT.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:

2012-07-22  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Add option for ENABLE_DFG_JIT
        https://bugs.webkit.org/show_bug.cgi?id=91939

        Reviewed by Daniel Bates.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-22  Kent Tamura  <tkent@chromium.org>

        Rename ENABLE_DETAILS to ENABLE_DETAILS_ELEMENT
        https://bugs.webkit.org/show_bug.cgi?id=91928

        Reviewed by Kentaro Hara.

        A flag name for an elmement should be ENABLE_*_ELEMENT.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:

2012-07-20  Kent Tamura  <tkent@chromium.org>

        Rename ENABLE_DATALIST to ENABLE_DATALIST_ELEMENT
        https://bugs.webkit.org/show_bug.cgi?id=91846

        Reviewed by Kentaro Hara.

        A flag name for an elmement should be ENABLE_*_ELEMENT.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        * configure.ac:

2012-07-19  MORITA Hajime  <morrita@google.com>

        [Refactoring] Replace Node's Document pointer with a TreeScope pointer
        https://bugs.webkit.org/show_bug.cgi?id=59816

        Reviewed by Ryosuke Niwa.

        * Source/autotools/symbols.filter: Added newly exported symbols.

2012-07-19  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Bump libsoup dependency to v2.39.4.1 to fix cookie issues
        https://bugs.webkit.org/show_bug.cgi?id=91741

        Reviewed by Kenneth Rohde Christiansen.

        Bump libsoup dependency in CMake to v2.39.4.1 to fix issues
        with cookies in non-suffixed/private domains [GNOME #679230].

        * Source/cmake/OptionsEfl.cmake:

2012-07-19  Mario Sanchez Prada  <msanchez@igalia.com>

        [GTK] Enable MHTML support by default at build time
        https://bugs.webkit.org/show_bug.cgi?id=89987

        Reviewed by Carlos Garcia Campos.

        Enable MHTML support by default for GTK in configure.ac.

        * configure.ac:

2012-07-18  Christophe Dumez  <christophe.dumez@intel.com>

        [CMake][EFL] Should try to find the same libsoup version pulled by jhbuild
        https://bugs.webkit.org/show_bug.cgi?id=91626

        Reviewed by Kenneth Rohde Christiansen.

        Bump required version of libsoup in CMake to 2.39.3. This is the first
        tarball version to contain the API we need (soup_cookie_jar_get_cookies()
        and soup_cookie_jar_set_cookie_with_first_party()).

        * Source/cmake/OptionsEfl.cmake:

2012-07-18  Varun Jain  <varunjain@chromium.org>

        [chromium] Drag image for image elements should be scaled with device scale factor.
        https://bugs.webkit.org/show_bug.cgi?id=89688

        Reviewed by Adam Barth.

        * ManualTests/chromium/drag-image-accounts-for-device-scale.html:

2012-07-18  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [CMake] Make gtest a shared library
        https://bugs.webkit.org/show_bug.cgi?id=90973

        Reviewed by Daniel Bates.

        It's nicer to make it a shared library because it might improve
        linking time and we don't need to force gtest users to link with gtest
        dependencies like pthreads (which causes linking errors when it is not
        available).

        * Source/cmake/gtest/CMakeLists.txt:

2012-07-17  Gabor Ballabas  <gaborb@inf.u-szeged.hu>

        [Qt][V8] Remove the V8 related codepaths and configuration
        https://bugs.webkit.org/show_bug.cgi?id=90863

        Reviewed by Simon Hausmann.

        * Source/api.pri:
        * WebKit.pro:

2012-07-17  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r122834.
        http://trac.webkit.org/changeset/122834
        https://bugs.webkit.org/show_bug.cgi?id=91492

        it broke the chromium (Requested by kkristof on #webkit).

        * Source/api.pri:
        * WebKit.pro:

2012-07-17  Gabor Ballabas  <gaborb@inf.u-szeged.hu>

        [Qt][V8] Remove the V8 related codepaths and configuration
        https://bugs.webkit.org/show_bug.cgi?id=90863

        Reviewed by Simon Hausmann.

        * Source/api.pri:
        * WebKit.pro:

2012-07-17  David Barr  <davidbarr@chromium.org>

        Introduce ENABLE_CSS_IMAGE_ORIENTATION compile flag
        https://bugs.webkit.org/show_bug.cgi?id=89055

        Reviewed by Kent Tamura.

        The css3-images module is at candidate recommendation.
        http://www.w3.org/TR/2012/CR-css3-images-20120417/#the-image-orientation

        Add a configuration option for CSS image-orientation support, disabling it by default.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-16  Pete Williamson  <petewil@google.com>

        Expose an export for the iconUrl list so Internals can use it
        https://bugs.webkit.org/show_bug.cgi?id=88665

        Reviewed by Kent Tamura.

        * Source/autotools/symbols.filter: export iconURLs

2012-07-16  Hajime Morrita  <morrita@chromium.org>

        WebCore needs WEBCORE_TESTING macro to mark methods being exported for testing.
        https://bugs.webkit.org/show_bug.cgi?id=90764

        Reviewed by Adam Barth.

        Removed symbols which are now covered by WEBCORE_TESTING.

        * Source/autotools/symbols.filter:

2012-07-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and configure.ac for 1.9.5 release

        * configure.ac: Bump version number.

2012-07-12 Josh Hawn <jhawn@apple.com>

        Fix for WebContext::getWebCoreStatistics() causes crash if no m_process
        https://bugs.webkit.org/show_bug.cgi?id=91116

        Reviewed by Simon Fraser.

        * Source/WebKit2/UIProcess/WebContext.cpp:
          WebContext::getWebCoreStatistics():
                Now invalidates callback if no m_process.

2012-07-13  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [CMake] Proper handling of ENABLE_API_TESTS build option
        https://bugs.webkit.org/show_bug.cgi?id=91221

        Reviewed by Rob Buis.

        Make the flag reusable across the ports using CMake. We are about to enable the WTF,
        WebCore and WebKit 2 API's at Tools/TestWebKitAPI and other ports using CMake can get
        it almost for free.

        * CMakeLists.txt:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-11  Matt Falkenhagen  <falken@chromium.org>

        Add dialog element feature toggle to InternalSettings
        https://bugs.webkit.org/show_bug.cgi?id=90934

        Reviewed by Hajime Morita.

        * Source/autotools/symbols.filter: Added newly exported symbol.

2012-07-11  Arnaud Renevier  <a.renevier@sisa.samsung.com>

        [Gtk] allow building with css-filters
        https://bugs.webkit.org/show_bug.cgi?id=90908

        Add support for css-filters in Source/WebCore/GNUmakefile.am
        configure.ac

        Reviewed by Eric Seidel.

        * configure.ac:

2012-07-10  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CMAKE] Add missing feature macros
        https://bugs.webkit.org/show_bug.cgi?id=90890

        Reviewed by Eric Seidel.

        ENABLE_CSS_EXCLUSIONS, ENABLE_CSS_REGIONS, ENABLE_TEXT_AUTOSIZING macros
        haven't defined in cmake feature list.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-10  Kent Tamura  <tkent@chromium.org>

        RTL calendar picker for <input type=date> is too narrow and clipped
        https://bugs.webkit.org/show_bug.cgi?id=90864

        Reviewed by Kentaro Hara.

        * ManualTests/forms/calendar-picker.html:
        - Add isRTL:true for the arabic setting
        - Reset the iframe size when the setting is changed.

2012-07-10  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r122178.
        http://trac.webkit.org/changeset/122178
        https://bugs.webkit.org/show_bug.cgi?id=90857

        browser tests, PrerenderBrowserTest.PrerenderFavicon and other
        tests, started to fail (Requested by hayato on #webkit).

        * Source/autotools/symbols.filter:

2012-07-09  Matt Falkenhagen  <falken@chromium.org>

        Add ENABLE_DIALOG_ELEMENT and skeleton files
        https://bugs.webkit.org/show_bug.cgi?id=90521

        Reviewed by Kent Tamura.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-09  Pete Williamson  <petewil@google.com>

        Expose an export for the iconUrl list so Internals can use it
        https://bugs.webkit.org/show_bug.cgi?id=88665

        Reviewed by Kent Tamura.

        * Source/autotools/symbols.filter: export iconURLs

2012-07-09  Mike Lattanzio  <mlattanzio@rim.com>

        [BlackBerry] meta viewport initial-scale doesn't factor in device pixel ratio
        https://bugs.webkit.org/show_bug.cgi?id=90575

        Reviewed by Rob Buis.

        Add a manual test to verify wide content doesn't interfere
        with initial-scale calculations.

        Internal review from Konrad Piascik.

        * ManualTests/blackberry/meta-viewport-initial-scale-wide-content.html: Added.

2012-07-09  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r122107.
        http://trac.webkit.org/changeset/122107
        https://bugs.webkit.org/show_bug.cgi?id=90794

        Build failure on Mac debug bots (Requested by falken_ on
        #webkit).

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-09  Matt Falkenhagen  <falken@chromium.org>

        Add ENABLE_DIALOG_ELEMENT and skeleton files
        https://bugs.webkit.org/show_bug.cgi?id=90521

        Reviewed by Kent Tamura.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-06  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL][CMake] Move gtest sources to an upper level
        https://bugs.webkit.org/show_bug.cgi?id=90602

        Reviewed by Chang Shu.

        CTest was enabled for all the ports, but used only by EFL. Now
        ENABLE_API_TESTS has to be defined, which will also build gtest.

        * CMakeLists.txt:
        * Source/CMakeLists.txt:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/gtest/CMakeLists.txt: Added.

2012-07-06  Zan Dobersek  <zandobersek@gmail.com>

        [Gtk] Add a configuration option for disabling unstable features in releases
        https://bugs.webkit.org/show_bug.cgi?id=87995

        Reviewed by Martin Robinson.

        Add a configuration flag for enabling the unstable features - features of which
        support in the Gtk port is being worked on but is not yet complete. The primary
        use of this flag is when compiling through the build-webkit script.

        All the features that are currently enabled when building through build-webkit but
        are disabled by default when executing the configure script directly have their default
        value (when the correspondent flag is not passed) set to 'yes' when unstable features
        are enabled and 'no' otherwise. This way unstable features are kept disabled when performing
        a release build (unless they are specifically enabled).

        * configure.ac:

2012-07-06  Oswald Buddenhagen  <oswald.buddenhagen@nokia.com>

        [Qt] Remove custom qmake logic for module creation

        Qmake now has the necessary hooks to cleanly override the build locations.

        https://bugs.webkit.org/show_bug.cgi?id=90461

        Reviewed by Tor Arne Vestbø.

        * Source/api.pri:

2012-07-06  Oswald Buddenhagen  <oswald.buddenhagen@nokia.com>

        [Qt] Add top-level .qmake.conf

        With Qt5, this makes setting $QMAKEPATH externally unnecessary.

        The magic in the perl scripts to set QMAKEPATH is still there, as it doesn't
        hurt, and is still required for Qt4.

        https://bugs.webkit.org/show_bug.cgi?id=90461

        Reviewed by Tor Arne Vestbø.

        * .qmake.conf: Added.
        * WebKit.pro:

2012-07-06  Oswald Buddenhagen  <oswald.buddenhagen@nokia.com>

        [Qt] Let qt_module_config create the forwarding module pri file

        https://bugs.webkit.org/show_bug.cgi?id=90461

        Reviewed by Tor Arne Vestbø.

        * Source/sync.profile:

2012-07-06  Oswald Buddenhagen  <oswald.buddenhagen@nokia.com>

        [Qt] Don't let qt_webkit.pri proclaim its own location

        This won't work any more with recent Qt5 versions, as the forwarding
        pri is created by qt_module_config, which needs MODULE_PRI to be set
        up already.

        We also need to load build_config, not qt_module.

        https://bugs.webkit.org/show_bug.cgi?id=90461

        Reviewed by Tor Arne Vestbø.

        * Source/api.pri:

2012-07-06  Oswald Buddenhagen  <oswald.buddenhagen@nokia.com>

        [Qt] Remove redundant CONFIG+=module

        qt_module_config takes care of that.

        In api.pri we are actually testing the flag ourselves, so now we need to
        test a related flag qt_module_config sets instead.

        https://bugs.webkit.org/show_bug.cgi?id=90461

        Reviewed by Tor Arne Vestbø.

        * Source/api.pri:

2012-07-06  Oswald Buddenhagen  <oswald.buddenhagen@nokia.com>

        [Qt] Adjust to changed generation of master include file

        The responsiblity for creating the master include was moved out of syncqt.
        @ignore_for_master_contents still stays, as syncqt (ab-)uses this for
        determining whether a header is private.

        https://bugs.webkit.org/show_bug.cgi?id=90461

        Reviewed by Tor Arne Vestbø.

        * Source/sync.profile:

2012-07-05  Rob Buis  <rbuis@rim.com>

        [CMake] Fix some CMake warnings
        https://bugs.webkit.org/show_bug.cgi?id=90558

        Fix WebKit options so they match with FeatureList.pm.

        Reviewed by Dan Bates.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-05  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Move Webkit1 before WebKit2 in the build order

        Reviewed by Csaba Osztrogonác.

        * WebKit.pro:

2012-07-05  Ryuan Choi  <ryuan.choi@samsung.com>

        [CMAKE] Unreviewd typo fix after r121857

        * Source/cmake/WebKitMacros.cmake:

2012-07-05  Dongwoo Im  <dw.im@samsung.com>

        [EFL] Enable the CUSTOM_SCHEME_HANDLER feature as default.
        https://bugs.webkit.org/show_bug.cgi?id=88608

        Reviewed by Hajime Morita.

        * Source/cmake/OptionsEfl.cmake: Enable the CUSTOM_SCHEME_HANDLER feature as default.

2012-07-05  Ryuan Choi  <ryuan.choi@samsung.com>

        [Wk2][EFL] EFL needs a WebKitTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=87659

        Reviewed by Kenneth Rohde Christiansen.

        * Source/CMakeLists.txt:
        Set compiler flags for WebCoreTestSupport to be linked into TestRunnerInjectedBundle
        shared library.
        * Source/cmake/WebKitMacros.cmake: Remove unnecessary dependency.

2012-07-04  John Mellor  <johnme@chromium.org>

        Text Autosizing: Add compile flag and runtime setting
        https://bugs.webkit.org/show_bug.cgi?id=87394

        This patch renames Font Boosting to Text Autosizing.

        Reviewed by Adam Barth.

        * configure.ac:

2012-07-04  Ryuan Choi  <ryuan.choi@samsung.com>

        [CMAKE] Add GENERATE_BINDINGS macro to share the codes which use generate-bindings.pl.
        https://bugs.webkit.org/show_bug.cgi?id=90258

        Reviewed by Rob Buis.

        This new macro calls generate-bindings.pl and append generated sources
        into proper source list.

        * Source/cmake/WebKitMacros.cmake:

2012-07-04  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Get rid of un-needed QT += declarative for Qt 5

        The declarative module has been renamed to quick1 in Qt 5, and the
        engine-only module for Qt 5 is named 'qml'. For many of the instances
        we could just remove 'declarative', since the project file was only
        used for Qt5/WebKit2 builds. In the other cases the module was wrapped
        in a haveQt(4) scope.

        Reviewed by Csaba Osztrogonác.

        * Source/api.pri:

2012-07-03  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Enable CSS variables support at compile time
        https://bugs.webkit.org/show_bug.cgi?id=90448

        Reviewed by Kenneth Rohde Christiansen.

        Turn on CSS_VARIABLES flag by default on EFL port.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-03  George Staikos  <staikos@webkit.org>

        [BlackBerry] Enable microdata support for BlackBerry.
        https://bugs.webkit.org/show_bug.cgi?id=90429

        Reviewed by Rob Buis.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-07-03  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Make use of .qmake.cache for caching features

        Instead of loading() features from the files that need them (and re-running
        a bunch of checks), we now run feature detection as part of configure.pro,
        and have build-webkit write the computed feature-defines and CONFIG to
        .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
        when building WebKit.pro.

        At some point we'll be able to selectivly prevent running of config tests
        in configure.pro, which means we don't need a separate code-path for
        the build-webkit --help case.

        We should also move the code in build-webkit that now uses .webkit.config
        to detect clean builds, to use .qmake.cache, since we now store the same
        thing there.

        Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>

        Reviewed by Tor Arne Vestbø.

        * Source/QtWebKit.pro:
        * Source/api.pri:
        * Source/tests.pri:
        * WebKit.pro:

2012-07-03  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r121766.
        http://trac.webkit.org/changeset/121766
        https://bugs.webkit.org/show_bug.cgi?id=90465

        It caused flakey build errors on the bots (Requested by Ossy
        on #webkit).

        * Source/QtWebKit.pro:
        * Source/api.pri:
        * Source/tests.pri:
        * WebKit.pro:

2012-07-03  George Staikos  <staikos@webkit.org>

        [BlackBerry] Enable Custom Scheme Handlers for BlackBerry.
        https://bugs.webkit.org/show_bug.cgi?id=90422

        Reviewed by Rob Buis.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-07-03  George Staikos  <staikos@webkit.org>

        [BlackBerry] Enable RegisterProtocolHandler for BlackBerry.
        https://bugs.webkit.org/show_bug.cgi?id=90422

        Reviewed by Rob Buis.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-07-03  Priit Laes  <plaes@plaes.org>

        [GTK] Need to bump libsoup requirements (for `soup_cookie_jar_get_cookie_list`)
        https://bugs.webkit.org/show_bug.cgi?id=90332

        Reviewed by Gustavo Noronha Silva.

        * configure.ac: Bump libsoup requirements to 2.39.2

2012-07-03  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Make use of .qmake.cache for caching features

        Instead of loading() features from the files that need them (and re-running
        a bunch of checks), we now run feature detection as part of configure.pro,
        and have build-webkit write the computed feature-defines and CONFIG to
        .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
        when building WebKit.pro.

        At some point we'll be able to selectivly prevent running of config tests
        in configure.pro, which means we don't need a separate code-path for
        the build-webkit --help case.

        We should also move the code in build-webkit that now uses .webkit.config
        to detect clean builds, to use .qmake.cache, since we now store the same
        thing there.

        Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>

        Reviewed by Tor Arne Vestbø.

        * Source/QtWebKit.pro:
        * Source/api.pri:
        * Source/tests.pri:
        * WebKit.pro:

2012-07-03  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Enable MICRODATA support
        https://bugs.webkit.org/show_bug.cgi?id=90377

        Reviewed by Kenneth Rohde Christiansen.

        Turn on MICRODATA support by default for EFL port.

        * Source/cmake/OptionsEfl.cmake:

2012-07-02  George Staikos  <staikos@webkit.org>

        [BlackBerry] Enable scoped style for BlackBerry.
        https://bugs.webkit.org/show_bug.cgi?id=90418

        Reviewed by Rob Buis.

        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-02  Xiaobo Wang  <xbwang@torchmobile.com.cn>

        [BlackBerry] Use PUBLIC_BUILD to enable/disable DRT
        https://bugs.webkit.org/show_bug.cgi?id=90271

        Reviewed by George Staikos.

        RIM PR #154707

        Currently DRT code will be compiled only if ENABLE_DRT is set, and it's not
        defined by default.
        We should enable DRT by default unless PUBLIC_BUILD is set. In this way we don't
        need to rebuild webkit before running DRT.

        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmakeconfig.h.cmake:

2012-07-02  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL][CMake] Integrate API unit tests with CTest
        https://bugs.webkit.org/show_bug.cgi?id=87251

        Reviewed by Daniel Bates.

        Enable CTest on the root CMakeLists.txt as it is expected
        to be here. This will create a new build target ("make test")
        to run all the API unit tests.

        * CMakeLists.txt:

2012-07-01  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Add Gamepad support
        https://bugs.webkit.org/show_bug.cgi?id=90170

        Reviewed by Kenneth Rohde Christiansen.

        * Source/cmake/FindEFL.cmake: Bump EFL libs dependencies.
        * Source/cmake/OptionsEfl.cmake: Turn on GAMEPAD flag on EFL port.
        * Source/cmakeconfig.h.cmake: Add GAMEPAD flag to CMake.

2012-06-30  Jason Liu  <jason.liu@torchmobile.com.cn>

        [BlackBerry] WebView/Browser cause blank screen when selecting a dropdown field.
        https://bugs.webkit.org/show_bug.cgi?id=90241

        This issue is caused by single quotes in option's labels.
        We should use the escape character of single quotes in JavaScript's string which 
        starts and ends with single quotes.
        So we replace lablels' single quotes with its escape character during generating the 
        select popUp's HTML.


        Reviewed by George Staikos.

        * ManualTests/blackberry/select-popup-items-unicode-display.html:

2012-06-29  Luiz Agostini  <luiz.agostini@nokia.com>

        [Qt][WK2] Private non-QtQuick API
        https://bugs.webkit.org/show_bug.cgi?id=84532

        Reviewed by Noam Rosenthal.

        API tests for QRawWebView.

        * Source/tests.pri:

2012-06-29  Zan Dobersek  <zandobersek@gmail.com>

        Unreviewed build fix after r121518, adding a missing symbol to symbols.filter.

        * Source/autotools/symbols.filter:

2012-06-28  MORITA Hajime  <morrita@google.com>

        [Refactoring] NodeRenderingContext ctor could be built on top of the ComposedShadowTreeWalker
        https://bugs.webkit.org/show_bug.cgi?id=89732

        Reviewed by Dimitri Glazkov.

        * Source/autotools/symbols.filter:

2012-06-28  Jason Liu  <jason.liu@torchmobile.com.cn>

        [BlackBerry] Selection items show as garbage for non-ascii characters.
        https://bugs.webkit.org/show_bug.cgi?id=89969

        Add charset utf-8 to the select popup's page.

        Reviewed by Antonio Gomes.

        * ManualTests/blackberry/select-popup-items-unicode-display.html: Added.

2012-06-28  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Enable support for HTML5 datalist
        https://bugs.webkit.org/show_bug.cgi?id=90157

        Reviewed by Martin Robinson.

        Turn on DATALIST flag by default on EFL port to
        support HTML5 datalist tag.

        * Source/cmake/OptionsEfl.cmake:

2012-06-27  Zan Dobersek  <zandobersek@gmail.com>

        [Gtk] Add support for the Gamepad API
        https://bugs.webkit.org/show_bug.cgi?id=87503

        Reviewed by Carlos Garcia Campos.

        Only enable the Gamepad feature on Linux as support
        for other operating systems is not present.

        Check for the GIO Unix and GUdev dependencies when the
        Gamepad feature is enabled.

        * configure.ac:

2012-06-25  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] Make it possible to build WebKit without QtWidgets
        https://bugs.webkit.org/show_bug.cgi?id=78109

        Reviewed by Tor Arne Vestbø.

        * Source/QtWebKit.pro: Don't build WK1 tests and examples if WK1 is disabled.
        * Source/api.pri: Move WK1 sources away from here and use WEBKIT += webkit1 instead
        * WebKit.pro: Add WK1 to SUBDIRS unless no_webkit1 is set.

2012-06-25  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Implement Network Information API
        https://bugs.webkit.org/show_bug.cgi?id=87067

        Reviewed by Kenneth Rohde Christiansen.

        * Source/cmake/FindEFL.cmake: Find eeze library in build system.

2012-06-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and configure.ac for 1.9.4 release

        * configure.ac: Bump version number.

2012-06-22  Joshua Netterfield  <jnetterfield@rim.com>

        [BlackBerry] Sanitize GLSL code using ANGLE.

        BlackBerry port does not sanitize GLSL code with ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=89583

        Reviewed by Rob Buis.

        * Source/cmake/OptionsBlackBerry.cmake: Include ANGLE openGL headers as system headers in BlackBerry port.

2012-06-21  Kalev Lember  <kalevlember@gmail.com>

        [GTK] Fix NPAPI plugins on Windows
        https://bugs.webkit.org/show_bug.cgi?id=54531

        Reviewed by Martin Robinson.

        Define XP_WIN on Windows for plugin support.

        * GNUmakefile.am:

2012-06-21  Ryuan Choi  <ryuan.choi@gmail.com>

        [EFL][WK2] Make WebKit2/Efl headers and resources installable.
        https://bugs.webkit.org/show_bug.cgi?id=88207

        Reviewed by Chang Shu.

        * Source/cmake/OptionsCommon.cmake:
        Provide new variable, EXEC_INSTALL_DIR to determine where to install
        executables.

2012-06-21  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL[WK2] Add WKViewEfl and WebKit2 API Object to represent Evas_Object.
        https://bugs.webkit.org/show_bug.cgi?id=88935

        Reviewed by Chang Shu.

        * Source/cmake/OptionsEfl.cmake: Defines BUILDING_EFL__.

2012-06-20  Varun Jain  <varunjain@chromium.org>

        Account for device scale factor when creating image for dragging.
        https://bugs.webkit.org/show_bug.cgi?id=89489

        Reviewed by Adam Barth.

        * ManualTests/chromium/drag-image-accounts-for-device-scale.html: Added.

2012-06-18  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] 0.11 video-sink
        https://bugs.webkit.org/show_bug.cgi?id=77087

        Reviewed by Martin Robinson.

        * configure.ac: Fix required gstreamer 0.11 version

2012-06-19  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>

        [Qt] Fix the Windows build when Qt is built without -release or -debug
        https://bugs.webkit.org/show_bug.cgi?id=89471

        Reviewed by Tor Arne Vestbø.

        Make sure that we at least remove build_all on Windows for api.pri,
        as WebCore wasn't built for all configurations.

        * Source/api.pri:

2012-06-19  Mike West  <mkwst@chromium.org>

        Introduce ENABLE_CSP_NEXT configuration flag.
        https://bugs.webkit.org/show_bug.cgi?id=89300

        Reviewed by Adam Barth.

        The 1.0 draft of the Content Security Policy spec is just about to
        move to Last Call. We'll hide work on the upcoming 1.1 spec behind
        this ENABLE flag, disabled by default.

        Spec: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-06-19  Joel Dillon  <joel.dillon@codethink.co.uk>, Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>

        [Qt] Allow the modules file generation to work on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=89010

        Reviewed by Csaba Osztrogonác.

        Add calls to toSystemPath and use QMAKE_DIR_SEP where necessary.

        * Source/api.pri:

2012-06-19  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>

        [Qt] Fix TARGET not properly being set for QtWebKitd5.dll when building in debug.
        https://bugs.webkit.org/show_bug.cgi?id=88880

        load(qt_module_config) adjusts the TARGET to add the "d" suffix when doing
        the debug build_pass. When doing the first pass, qt_module_config.prf doesn't
        adjust the target since it is in debug_and_release and expects the debug
        build_pass to come later. However, since we remove debug_and_release from CONFIG
        right after this, the TARGET hasn't been adjusted and the debug build_pass
        will not happen.

        Work around it by disabling this optimization on Windows.

        Reviewed by Tor Arne Vestbø.

        * Source/api.pri:

2012-06-19  Mike West  <mkwst@chromium.org>

        Add a scheme registry for bypassing Content Security Policy.
        https://bugs.webkit.org/show_bug.cgi?id=89373

        Reviewed by Adam Barth.

        * Source/autotools/symbols.filter:

2012-06-18  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Enable LEGACY_VIEWPORT_ADAPTION
        https://bugs.webkit.org/show_bug.cgi?id=89381

        Reviewed by Antonio Gomes.

        PR 163598

        Enable LEGACY_VIEWPORT_ADAPTION.

        * Source/cmake/OptionsBlackBerry.cmake:

2012-06-17  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, GTK 64-bit build fix after r120551.

        * Source/autotools/symbols.filter:

2012-06-17  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, GTK build fix after r120397.

        * Source/autotools/symbols.filter:

2012-06-14  Kent Tamura  <tkent@chromium.org>

        Validate form state strings in FormController::setStateForNewFormElements()
        https://bugs.webkit.org/show_bug.cgi?id=88768

        Reviewed by Hajime Morita.

        * Source/autotools/symbols.filter: Expose some symbols used by Internals.cpp.

2012-06-14  Chris Guan  <chris.guan@torchmobile.com.cn>

        [Blackberry] add a new Api named setAllowNotification
        https://bugs.webkit.org/show_bug.cgi?id=88950

        Reviewed by Antonio Gomes.

        Add a new API named setAllowNotification in webpage class to
        let client set those allowed domains into notifications.

        Test case:
        * ManualTests/blackberry/notification.html: Added.

2012-06-13  Zan Dobersek  <zandobersek@gmail.com>

        [Gtk] Enable link prefetch support in the developer builds
        https://bugs.webkit.org/show_bug.cgi?id=89011

        Reviewed by Martin Robinson.

        Rather export an automake conditional than define a preprocessor
        macro for enabling link prefetch support.

        * configure.ac:

2012-06-13  Robin Cao  <robin.cao@torchmobile.com.cn>

        [BlackBerry] Enable MEDIA_STREAM by default
        https://bugs.webkit.org/show_bug.cgi?id=88849

        Reviewed by Antonio Gomes.

        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmakeconfig.h.cmake:

2012-06-12  MORITA Hajime  <morrita@google.com>

        Shadow Pseudo ID should be able to nest to point nested shadow DOM.
        https://bugs.webkit.org/show_bug.cgi?id=62218

        Reviewed by Dimitri Glazkov.

        * Source/autotools/symbols.filter:

2012-06-12  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Enable SHADOW_DOM flag
        https://bugs.webkit.org/show_bug.cgi?id=87732

        Reviewed by Kentaro Hara.

        Enable SHADOW_DOM flag by default at compile time for EFL port.

        * Source/autotools/symbols.filter: Fix GTK build by adding new symbol.
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmakeconfig.h.cmake:

2012-06-12  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] enable LEGACY_WEBKIT_BLOB_BUILDER flag
        https://bugs.webkit.org/show_bug.cgi?id=88715

        Reviewed by Noam Rosenthal.

        Enable LEGACY_WEBKIT_BLOB_BUILDER flag by default on EFL port.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmakeconfig.h.cmake:

2012-06-12  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [CMake] Enabled CSS_BOX_DECORATION_BREAK by default
        https://bugs.webkit.org/show_bug.cgi?id=88850

        Reviewed by Alexis Menard.

        Enabled it by default on CMake ports like in other ports.
        This patch is a follow up to r120029.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-06-11  Kaustubh Atrawalkar  <kaustubh@motorola.com>

        [DRT] LTC:: counterValueForElementById() could be moved to Internals.
        https://bugs.webkit.org/show_bug.cgi?id=84406

        Reviewed by Hajime Morita.

        Exporting Internals::counterValueForElement symbols for the Gtk build.

        * Source/autotools/symbols.filter:

2012-06-11  Alexis Menard  <alexis.menard@openbossa.org>

        [CSS3 Backgrounds and Borders] Protect box-decoration-break behind a feature flag.
        https://bugs.webkit.org/show_bug.cgi?id=88804

        Reviewed by Tony Chang.

        Protect box-decoration-break behind a feature flag enabled by default.

        * configure.ac:

2012-06-11  Arnaud Renevier  <arno@renevier.net>

        Replace obsolete mkdir_p variable with MKDIR_P
        https://bugs.webkit.org/show_bug.cgi?id=88790

        Reviewed by Martin Robinson.

        * GNUmakefile.am:
        * configure.ac:

2012-06-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix make distcheck issues.

        * GNUmakefile.am: Initialize jscore nosource variables.

2012-06-10  Darin Adler  <darin@apple.com>

        Remove unneeded callRemovedLastRef function from TreeShared refactoring
        https://bugs.webkit.org/show_bug.cgi?id=88653

        Reviewed by Sam Weinig.

        * Source/autotools/symbols.filter: Filter removedLastRef instead of
        callRemovedLastRef.

2012-06-09  Sukolsak Sakshuwong  <sukolsak@google.com>

        Add UNDO_MANAGER flag
        https://bugs.webkit.org/show_bug.cgi?id=87908

        Reviewed by Tony Chang.

        * Source/cmake/WebKitFeatures.cmake:

2012-06-08  Martin Robinson  <mrobinson@igalia.com>

        Fix the GTK+ build when OpenGL is enabled.

        * configure.ac: Fix the build.

2012-06-08  Martin Robinson  <mrobinson@igalia.com>

        [GTK] build accelerated compositing on by default if OpenGL is present
        https://bugs.webkit.org/show_bug.cgi?id=88677

        Reviewed by Alejandro G. Castro.

        Build accelerated compositing by default if OpenGL is present, just like WebGL.
        Also prevent enabling WebGL if Clutter is turned on.

        * configure.ac: Build AC by default.

2012-06-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add API to get the library version to WebKit2 GTK+
        https://bugs.webkit.org/show_bug.cgi?id=88426

        Reviewed by Martin Robinson.

        * configure.ac: Generate WebKitVersion.h from WebKitVersion.h.in
        file.

2012-06-08  Ion Rosca  <rosca@adobe.com>

        Some overlay scrollbar API calls in ScrollAnimatorMac can lead to an assertion in RenderBox::mapAbsoluteToLocalPoint
        https://bugs.webkit.org/show_bug.cgi?id=74111

        Reviewed by Simon Fraser.

        * ManualTests/scrollbar-crash-on-hide-scrolled-area.html: Added.

2012-06-07  Kentaro Hara  <haraken@chromium.org>

        Reduce Node object size from 72 byte to 64 byte
        https://bugs.webkit.org/show_bug.cgi?id=88528

        Reviewed by Ryosuke Niwa.

        Added a symbol for callRemovedLastRef().

        * Source/autotools/symbols.filter:

2012-06-07  Patrick Gansterer  <paroga@webkit.org>

        Build fix for WinCE after r113570.

        * Source/cmake/OptionsWinCE.cmake:

2012-06-07  Adam Barth  <abarth@webkit.org>

        Settings::defaultDeviceScaleFactor is redundant with Page::deviceScaleFactor
        https://bugs.webkit.org/show_bug.cgi?id=88375

        Reviewed by James Robinson.

        This symbol no longer exists.

        * Source/autotools/symbols.filter:

2012-06-06  David Kilzer  <ddkilzer@apple.com>

        Teach git about localizable *.strings files
        <http://webkit.org/b/88447>

        Reviewed by Adam Roben.

        * .gitattributes: Set diff attribute for *.strings files so
        git-diff doesn't complain about them being binary files once the
        git-config command is run.

2012-06-06  Andy Wingo  <wingo@igalia.com>

        [GTK] Enable the LLInt
        https://bugs.webkit.org/show_bug.cgi?id=88315

        Reviewed by Filip Pizlo.

        * configure.ac: Require Ruby, to build the low-level interpreter.

2012-06-06  Sam D  <dsam2912@gmail.com>

        Web Inspector: Option for selecting/deselecting all breakpoints in breakpoint pane
        https://bugs.webkit.org/show_bug.cgi?id=87644

        Reviewed by Pavel Feldman.

        Added an option to enable/disable all breakpoints in Breakpoint pane.

        * Source/WebCore/English.lproj/localizedStrings.js:
        * Source/WebCore/inspector/front-end/BreakpointManager.js:
        (WebInspector.BreakpointManager.prototype.enableAllBreakpoints):
        (WebInspector.BreakpointManager.prototype.disableAllBreakpoints):
        * Source/WebCore/inspector/front-end/BreakpointsSidebarPane.js:
        (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointContextMenu.enabledBreakpointCount):
        (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointContextMenu):

2012-06-05  Danilo Cesar Lemes de Paula  <danilo.cesar@collabora.co.uk>

        [GTK] show the feature list in alphabetical order
        https://bugs.webkit.org/show_bug.cgi?id=88343

        Reviewed by Gustavo Noronha Silva.

        * configure.ac:

2012-06-05  Dongwoo Im  <dw.im@samsung.com>

        Add 'isProtocolHandlerRegistered' and 'unregisterProtocolHandler'.
        https://bugs.webkit.org/show_bug.cgi?id=73176

        Reviewed by Adam Barth.

        Two more APIs are added in Custom Scheme Handler specification.
        http://dev.w3.org/html5/spec/Overview.html#custom-handlers
        One is 'isProtocolHandlerRegistered' to query whether the specific URL
        is registered or not.
        The other is 'unregisterProtocolHandler' to remove the registered URL.

        * Source/cmake/WebKitFeatures.cmake: Add a macro 'ENABLE_CUSTOM_SCHEME_HANDLER'.
        * Source/cmakeconfig.h.cmake: Add a macro 'ENABLE_CUSTOM_SCHEME_HANDLER'.

2012-06-04  Hugo Parente Lima  <hugo.lima@openbossa.org>

        Turn LEGACY_VIEWPORT_ADAPTION USE flag into an ENABLE flag.
        https://bugs.webkit.org/show_bug.cgi?id=88243

        Reviewed by Adam Barth.

        * Source/cmake/WebKitFeatures.cmake:

2012-06-04  Sadrul Habib Chowdhury  <sadrul@chromium.org>

        [chromium] Fix software rendering for device-scale-factor > 1
        https://bugs.webkit.org/show_bug.cgi?id=88136

        Reviewed by Darin Fisher.

        Export WebCore::Page::setDeviceScaleFactor and WebCore::Settings::setDefaultDeviceScaleFactor.

        * Source/autotools/symbols.filter:

2012-06-04  Kevin Greer  <kgr@chromium.org>

        [chromium] Issue async events for console.time/timeEnd
        https://bugs.webkit.org/show_bug.cgi?id=88003

        Reviewed by Pavel Feldman.

        * ../../Source/WebCore/page/Console.cpp:

2012-06-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and configure.ac for 1.9.3 release

        * configure.ac: Bump version number.

2012-06-02  Kevin Ollivier  <kevino@theolliviers.com>

        [wx] Unreviewed build fix. Temporarily disable DerivedSources cleanup on Windows.

        * wscript:

2012-06-01  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] Use -Werror only in developer builds

        Rubber-stamped by Tor Arne Vestbø.

        In production builds -Werror with custom toolchains and wierd system
        headers, -Werror is of no use and just creates confusion. So use it
        only if Qt is configured with -developer-build.

        * Source/api.pri: qt_developer_build determination moved to default_pre.prf

2012-06-01  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>

        [Qt] Move QObject bridge related tests from tst_qwebframe to tst_qobjectbridge
        https://bugs.webkit.org/show_bug.cgi?id=88117

        Reviewed by Noam Rosenthal.

        * Source/tests.pri: Add new entry for tst_qobjectbridge.

2012-06-01  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] EFL port does not enable WEB_INTENTS_TAG flag
        https://bugs.webkit.org/show_bug.cgi?id=86866

        Reviewed by Adam Barth.

        Enable WEB_INTENTS_TAG flag by default on EFL port.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-05-31  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Enable CSS_IMAGE_SET flag
        https://bugs.webkit.org/show_bug.cgi?id=87727

        Reviewed by Adam Roben.

        Add CSS_IMAGE_SET flag to CMake and enable it by default on EFL port.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-05-30  Kevin Ollivier  <kevino@theolliviers.com>

        [wx] Unreviewed build fix. Add needed file back to the wx build.

        * wscript:

2012-05-30  Mariusz Grzegorczyk  <mariusz.g@samsung.com>, Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK2] Fix WebKit2-EFL build
        https://bugs.webkit.org/show_bug.cgi?id=83693

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsEfl.cmake: Define BUILDING_SOUP__ to build WebKit2/Efl.

2012-05-29  Jonathan Dong  <jonathan.dong@torchmobile.com.cn>

        [BlackBerry] Loading media data with http authentication
        https://bugs.webkit.org/show_bug.cgi?id=84214

        Reviewed by George Staikos.

        Added a manual test case which needs user to provide a HTTP server
        with HTTP authentication support when loading the specified media
        resource. The test case will test if the media resource is successfully
        loaded.

        * ManualTests/blackberry/video-load-with-authentication.html: Added.

2012-05-29  Simon Fraser  <simon.fraser@apple.com>

        Incomplete repaint on twitter.com when replying to a tweet
        https://bugs.webkit.org/show_bug.cgi?id=87553

        Reviewed by Dean Jackson.
        
        Manual test that adds a transform to a layer, forcing that
        layer to gain backing store.

        * ManualTests/compositing/requires-backing-change.html: Added.

2012-05-29  David Barr  <davidbarr@chromium.org>

        Introduce ENABLE_CSS_IMAGE_RESOLUTION compile flag
        https://bugs.webkit.org/show_bug.cgi?id=87685

        Reviewed by Eric Seidel.

        Add a configuration option for CSS image-resolution support, disabling it by default.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-05-25  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>

        WebKitTestRunner needs to support layoutTestController.setJavaScriptProfilingEnabled
        https://bugs.webkit.org/show_bug.cgi?id=42328

        Reviewed by Eric Seidel.

        * Source/autotools/symbols.filter: Added needed symbols for GTK build.

2012-05-28  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Move allowRoundingHacks to Internals interface
        https://bugs.webkit.org/show_bug.cgi?id=87328

        Reviewed by Hajime Morita.

        * Source/autotools/symbols.filter: Add allowRoundingHacks symbol filter.

2012-05-27  Sudarsana Nagineni  <sudarsana.nagineni@linux.intel.com>

        [EFL] Enable blob support for the EFL port
        https://bugs.webkit.org/show_bug.cgi?id=85363

        Reviewed by Hajime Morita.

        Enable Blob support by default for the EFL port.

        * Source/cmake/OptionsEfl.cmake:

2012-05-27  Raphael Kubo da Costa  <rakuco@webkit.org>

        [CMake] Make WEBKIT_SET_EXTRA_COMPILER_FLAGS work with clang.
        https://bugs.webkit.org/show_bug.cgi?id=87597

        Reviewed by Daniel Bates.

        Building with clang requires at least the -fPIC option being
        passed correctly, just like it is needed with gcc. clang is also
        compatible with most of gcc's compiler options, so we only need to
        check for clang besides g++ in the macro definition.

        * Source/cmake/WebKitHelpers.cmake: Check for "Clang" and use
        CMAKE_COMPILER_IS_GNUCXX for the previous check, as it is shorter
        and achieves the same effect.

2012-05-25  Zan Dobersek  <zandobersek@gmail.com>

        configure.ac has duplicated AC_MSG_RESULT([$enable_sandbox]) and nothing for seamless iframes
        https://bugs.webkit.org/show_bug.cgi?id=87453

        Reviewed by Eric Seidel.

        Report the value of $enable_iframe_seamless rather than $enable_sandbox
        after checking whether to enable the iframe seamless option.

        * configure.ac:

2012-05-25  Zan Dobersek  <zandobersek@gmail.com>

        [Gtk] Remove configuration options that do not apply anymore
        https://bugs.webkit.org/show_bug.cgi?id=87509

        Reviewed by Martin Robinson.

        Remove configuration options for enabling or disabling HTML5 datagrid,
        DOM storage, image resizer API and sandboxed iframe support. These
        features were either turned on by default with the feature defines
        removed from the code or removed from the source.

        * configure.ac:

2012-05-25  Zalan Bujtas  <zbujtas@gmail.com>

        [Qt] Broken controls rendering when transform is applied.
        https://bugs.webkit.org/show_bug.cgi?id=87483

        Reviewed by Simon Hausmann.

        * ManualTests/qt/control_paiting_with_transforms.html: Added.

2012-05-24  Tim Horton  <timothy_horton@apple.com>

        Add feature defines for web-facing parts of CSS Regions and Exclusions
        https://bugs.webkit.org/show_bug.cgi?id=87442
        <rdar://problem/10887709>

        Reviewed by Dan Bernstein.

        * configure.ac:

2012-05-24  Kent Tamura  <tkent@chromium.org>

        PAGE_POPUP: window.setValueAndClosePopup should be moved to a
        per-context property of DOMWindow.
        https://bugs.webkit.org/show_bug.cgi?id=87086

        Reviewed by Adam Barth.

        * ManualTests/forms/calendar-picker.html:
        Introduce pseudo window.pagePopupController.

2012-05-24  Philippe Normand  <pnormand@igalia.com>

        [GTK] Add --enable-css3-flexbox configure option after r118304.
        https://bugs.webkit.org/show_bug.cgi?id=87455

        Reviewed by Xan Lopez.

        * configure.ac:

2012-05-24  John Mellor  <johnme@chromium.org>

        Font Boosting: Add compile flag and runtime setting
        https://bugs.webkit.org/show_bug.cgi?id=87394

        Reviewed by Adam Barth.

        Add ENABLE_FONT_BOOSTING.

        * configure.ac:

2012-05-23  Raphael Kubo da Costa  <rakuco@webkit.org>

        [CMake] Unreviewed, add ENABLE_CSS3_FLEXBOX after r118304.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2012-05-23  Xiaobo Wang  <xbwang@torchmobile.com.cn>

        [BlackBerry] Reset JS state for each test
        https://bugs.webkit.org/show_bug.cgi?id=86899

        Reviewed by Nikolas Zimmermann.

        * DumpRenderTree/blackberry/DumpRenderTree.cpp:
         (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):

2012-05-22  Dongwoo Im  <dw.im@samsung.com>

        [EFL] Implements the registerProtocolHandler method and option.
        https://bugs.webkit.org/show_bug.cgi?id=73638

        Reviewed by Andreas Kling.

        The registerProtocolHandler() method allows Web sites to register themselves
        as possible handlers for particular schemes.

        http://dev.w3.org/html5/spec/Overview.html#dom-navigator-registerprotocolhandler

        * Source/cmake/OptionsEfl.cmake: Adds the build option.
        * Source/cmakeconfig.h.cmake: Adds the build option.

2012-05-22  Kangil Han  <kangil.han@samsung.com>

        [EFL][DRT] Implement touch event
        https://bugs.webkit.org/show_bug.cgi?id=86720

        Reviewed by Hajime Morita.

        Currently EFL DRT doesn't support touch event.
        Therefore, this patch enabled it and implemented some eventSender function callbacks.

        * Source/cmake/FindEFL.cmake: Add ecore-input to dependency check.
        * Source/cmake/OptionsEfl.cmake: Enable touch event option.

== Rolled over to ChangeLog-2012-05-22 ==
