2017-06-09  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Enable ENCRYPTED_MEDIA for build-webkit builds
        https://bugs.webkit.org/show_bug.cgi?id=173103

        Reviewed by Xabier Rodriguez-Calvar.

        * Source/cmake/OptionsWPE.cmake: Expose the ENABLE_ENCRYPTED_MEDIA
        configuration option, keeping it disabled by default.

2017-06-09  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer][EME] Remove the legacy code that was not even official and is deprecated
        https://bugs.webkit.org/show_bug.cgi?id=173096

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsWPE.cmake: Remove LEGACY_ENCRYPTED_MEDIA support

2017-06-07  Ryosuke Niwa  <rniwa@webkit.org>

        IsInShadowTreeFlag does not get updated for a non-container node
        https://bugs.webkit.org/show_bug.cgi?id=173084

        Reviewed by Antti Koivisto.

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

2017-06-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Enable resource usage
        https://bugs.webkit.org/show_bug.cgi?id=173054

        Reviewed by Žan Doberšek.

        Add private option for resource usage enabled by default.

        * Source/cmake/OptionsWPE.cmake:

2017-06-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        Remove legacy INSPECTOR_SERVER implementation
        https://bugs.webkit.org/show_bug.cgi?id=172966

        Reviewed by Žan Doberšek.

        * Source/PlatformWin.cmake:

2017-06-07  Loïc Yhuel  <loic.yhuel@softathome.com>

        [CMake] Only force response files for Ninja with CMake < 3.2 on Linux
        https://bugs.webkit.org/show_bug.cgi?id=173066

        Reviewed by Michael Catanzaro.

        CMake automatically uses response files when needed, but the limit was
        wrong on Linux before 3.2.

        * Source/cmake/OptionsCommon.cmake:

2017-06-07  Zan Dobersek  <zdobersek@igalia.com>

        [GCrypt] RSA-PSS support
        https://bugs.webkit.org/show_bug.cgi?id=172856

        Reviewed by Jiewen Tan.

        * Source/cmake/OptionsGTK.cmake: Set and expose the USE_GCRYPT preprocessor macro when
        SUBTLE_CRYPTO is enabled.
        * Source/cmake/OptionsWPE.cmake: Match the GTK+ port in demanding at least version 1.7.0
        of libgcrypt. Also set and expose the USE_GCRYPT preprocessor macro.

2017-06-06  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Enable remote inspector
        https://bugs.webkit.org/show_bug.cgi?id=172971

        Reviewed by Žan Doberšek.

        Add private option for remote inspector enabled by default.

        * Source/cmake/OptionsWPE.cmake:

2017-06-02  Stephan Szabo  <stephan.szabo@am.sony.com>

        [JSCOnly] Build static jsc.exe on Windows
        https://bugs.webkit.org/show_bug.cgi?id=172833

        Reviewed by Konstantin Tokarev.

        * Source/cmake/OptionsJSCOnly.cmake:

2017-05-31  Adrian Perez de Castro  <aperez@igalia.com>

        [CMake] Do not pass -Wno-expansion-to-defined to Clang <4.0.0
        https://bugs.webkit.org/show_bug.cgi?id=172750

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsCommon.cmake:

2017-05-31  Adrian Perez de Castro  <aperez@igalia.com>

        Consider enabling -Wno-expansion-to-defined for gcc 7
        https://bugs.webkit.org/show_bug.cgi?id=167643

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsCommon.cmake: Pass -Wno-expansion-to-defined to
        GCC, the flag is supported all the way back to version 4.9, which is
        the oldest we support

2017-05-26  Don Olmstead  <don.olmstead@am.sony.com>

        [CMake] Wrap CODE_GENERATOR_PREPROCESSOR_EXECUTABLE on Windows hosts
        https://bugs.webkit.org/show_bug.cgi?id=172553

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsCommon.cmake:

2017-05-26  Adrian Perez de Castro  <aperez@igalia.com>

        [CMake] Pass -fdiagnostics-color=always to GCC when building with Ninja
        https://bugs.webkit.org/show_bug.cgi?id=172638

        Reviewed by Yusuke Suzuki.

        The oldest version of GCC supported for building WebKit is 4.9, which already accepts
        -fdiagnostics-color=, therefore it is not needed to check the compiler version.

        * Source/cmake/OptionsCommon.cmake:

2017-05-25  Don Olmstead  <don.olmstead@am.sony.com>

        [CMake][Win] Use WTF_CPU not MSCV_CXX_ARCHITECTURE_ID when determining lib directories
        https://bugs.webkit.org/show_bug.cgi?id=172570

        Reviewed by Per Arne Vollan.

        * Source/cmake/OptionsWin.cmake:

2017-05-24  Don Olmstead  <don.olmstead@am.sony.com>

        [CMake] Consolidate CMake code related to Cairo
        https://bugs.webkit.org/show_bug.cgi?id=172568

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2017-05-23  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove dead ENABLE(FONT_LOAD_EVENTS) code
        https://bugs.webkit.org/show_bug.cgi?id=172517

        Rubber-stamped by Simon Fraser.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2017-05-22  Gwang Yoon Hwang  <yoon@igalia.com>

        [CMake] Do not use a --no-keep-memory linker flag in 64bit system
        https://bugs.webkit.org/show_bug.cgi?id=172429

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsCommon.cmake:
        In x86_64, cmake accidentally applies --no-keep-memory since MATCHES
        uses the given value as a regex. It reduces linking performance
        due to the frequent disk operations in x86_64.

2017-05-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.3 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2017-05-22  Don Olmstead  <don.olmstead@am.sony.com>

        [Win][CMake] Move MSVC compiler options to a common location
        https://bugs.webkit.org/show_bug.cgi?id=172230

        Reviewed by Yusuke Suzuki.

        * Source/cmake/OptionsMSVC.cmake: Added.
        * Source/cmake/OptionsWin.cmake:

2017-05-19  Don Olmstead  <don.olmstead@am.sony.com>

        [CMake] Add HAVE check for __int128_t
        https://bugs.webkit.org/show_bug.cgi?id=172317

        Reviewed by Yusuke Suzuki.

        * Source/cmake/OptionsCommon.cmake:

2017-05-16  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Set and expose ENABLE_DEVELOPER_MODE in build when DEVELOPER_MODE is enabled
        https://bugs.webkit.org/show_bug.cgi?id=172159

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsWPE.cmake: Expose the ENABLE_DEVELOPER_MODE macro
        when the DEVELOPER_MODE configuration options is enabled.

2017-05-11  Don Olmstead  <don.olmstead@am.sony.com>

        [CMake] Add HAVE check for regex.h
        https://bugs.webkit.org/show_bug.cgi?id=171950

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsCommon.cmake:

2017-05-11  Joseph Pecoraro  <pecoraro@apple.com>

        Remove Vibration API
        https://bugs.webkit.org/show_bug.cgi?id=171766

        Rubber-stamped by Alexey Proskuryakov.

        * Source/cmake/WebKitFeatures.cmake:

2017-05-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.2 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2017-05-10  Don Olmstead  <don.olmstead@am.sony.com>

        [Win] Specify source file type when preprocessing IDL files
        https://bugs.webkit.org/show_bug.cgi?id=171864

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsCommon.cmake:

2017-05-10  Adrian Perez de Castro  <aperez@igalia.com>

        Remove some last remnants of the EFL port
        https://bugs.webkit.org/show_bug.cgi?id=171922

        Reviewed by Antonio Gomes.

        The EFL port is no more.

        * Source/PlatformEfl.cmake: Removed.

2017-05-10  Zan Dobersek  <zdobersek@igalia.com>

        Enable FTL JIT by default on AArch64
        https://bugs.webkit.org/show_bug.cgi?id=144039

        Reviewed by Yusuke Suzuki.

        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/WebKitFeatures.cmake: Set FTL as enabled by default
        when targeting either WTF_CPU_X86_64 or WTF_CPU_ARM64.

2017-05-09  Zan Dobersek  <zdobersek@igalia.com>

        Upstream the WPE port
        https://bugs.webkit.org/show_bug.cgi?id=171110

        Reviewed by Alex Christensen.

        webkit-dev thread:
        https://lists.webkit.org/pipermail/webkit-dev/2017-April/028923.html

        * CMakeLists.txt: Add the WPE port identifier.
        * Source/cmake/FindLibGBM.cmake: Added.
        * Source/cmake/FindWPEBackend-mesa.cmake: Added.
        * Source/cmake/FindWPEBackend.cmake: Added.
        * Source/cmake/OptionsWPE.cmake: Added.

2017-05-04  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r216206.
        https://bugs.webkit.org/show_bug.cgi?id=171714

        Multiple LayoutTests crashing in Document::page() (Requested
        by ap on #webkit).

        Reverted changeset:

        "Remove support for legacy Notifications"
        https://bugs.webkit.org/show_bug.cgi?id=171487
        http://trac.webkit.org/changeset/216206

2017-05-04  Don Olmstead  <don.olmstead@am.sony.com>

        [Win] Remove redundant macros that are set in the CMake config
        https://bugs.webkit.org/show_bug.cgi?id=171571

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsWin.cmake:

2017-05-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.1 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2017-05-01  Aakash Jain  <aakash_jain@apple.com>

        fix check-webkit-style errors in webkitpy about two blank lines before class definitions
        https://bugs.webkit.org/show_bug.cgi?id=171509

        Reviewed by Alexey Proskuryakov.

        * Scripts/webkitpy/common/config/committers.py: Added two blank lines before class definition.
        * Scripts/webkitpy/layout_tests/models/test_run_results.py: Ditto.
        * Scripts/webkitpy/layout_tests/run_webkit_tests.py: Ditto.
        * Scripts/webkitpy/port/base_unittest.py: Ditto.
        * Scripts/webkitpy/port/device.py: Ditto.
        * Scripts/webkitpy/port/linux_get_crash_log.py: Ditto.
        * Scripts/webkitpy/style/checkers/featuredefines.py: Ditto.
        * Scripts/webkitpy/style/checkers/jsonchecker.py: Ditto.
        * Scripts/webkitpy/tool/bot/patchanalysistask.py: Ditto.
        * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py: Ditto.
        (ManagerTest.test_uses_custom_device.MockCustomDevicePort): Added blank line before method.
        (ManagerTest.test_uses_custom_device): Removed extra blank line at end of file.

2017-04-25  Daniel Bates  <dabates@apple.com>

        [Cocoa][Win] Enable of X-Content-Type-Options: nosniff header
        https://bugs.webkit.org/show_bug.cgi?id=136452
        <rdar://problem/23412620>

        Reviewed by Brent Fulgham.

        Enable X-Content-Type-Options: nosniff on Mac, iOS and Windows platforms.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:

2017-04-24  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed follow-up to r215681.

        * Source/cmake/OptionsGTK.cmake: Don't re-define the ENABLE_SUBTLE_CRYPTO
        macro, that's already done by the option macro.

2017-04-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Switch to use ENABLE_REMOTE_INSPECTOR instead of ENABLE_INSPECTOR_SERVER for the remote inspector
        https://bugs.webkit.org/show_bug.cgi?id=166680

        Reviewed by Michael Catanzaro.

        Add private option for ENABLE_REMOTE_INSPECTOR and enabled it by default.

        * Source/cmake/OptionsGTK.cmake:

2017-04-24  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Make the ENABLE_SUBTLE_CRYPTO option depend on libgcrypt 1.7.0
        https://bugs.webkit.org/show_bug.cgi?id=171112

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake: When ENABLE_SUBTLE_CRYPTO feature is enabled,
        the detected libgcrypt library version should be at least 1.7.0 since we'll be
        relying on API that was introduced in that version.

2017-04-21  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] WTF target should not have wtf and subdirectries in public interface
        https://bugs.webkit.org/show_bug.cgi?id=171115

        Reviewed by Michael Catanzaro.

        In r209665 WEBCORE_FRAMEWORK macro started to export INCLUDE_DIRECTORIES of
        targets as their public interface, so that linked targets can use them
        implicitly without copying directory lists around. This matches existing
        practice for all targets except WTF, headers from which are always included
        with full path starting from "<wtf/...".

        Since r209665 it became possible to include headers from wtf or its
        subdirectories in CMake builds without using "<wtf/..." path. It should
        not be allowed.

        * Source/cmake/WebKitMacros.cmake: Support xxx_PRIVATE_HEADERS
        CMake variables.

2017-04-20  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Define FORWARDING_HEADERS_DIR in WebKitFS and use it everywhere
        https://bugs.webkit.org/show_bug.cgi?id=171071

        Reviewed by Michael Catanzaro.

        "${DERIVED_SOURCES_DIR}/ForwardingHeaders" path occurs very often in the
        build system files. GTK-specifc FORWARDING_HEADERS_DIR variable should
        be available for all ports.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitFS.cmake:
        * Source/cmake/WebKitMacros.cmake:

2017-04-17  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSCOnly] Fix build failures in macOS
        https://bugs.webkit.org/show_bug.cgi?id=170887

        Reviewed by Alex Christensen.

        Align ICU header configuration to MacCMake port.

        * Source/cmake/OptionsJSCOnly.cmake:

2017-04-16  Sam Weinig  <sam@webkit.org>

        [WebIDL] Switch IDLAttributes.txt over to a more structured format so that more information can be added for each attribute
        https://bugs.webkit.org/show_bug.cgi?id=170843

        Reviewed by Chris Dumez.

        * Source/cmake/WebKitMacros.cmake:
        Update extension of IDLAttributes to .json

2017-04-13  Don Olmstead  <don.olmstead@am.sony.com>

        [WinCairo] Assign WEBKIT_LIBRARIES_DIR to CMAKE_PREFIX_PATH
        https://bugs.webkit.org/show_bug.cgi?id=170797

        Reviewed by Alex Christensen.

        * Source/cmake/FindCairo.cmake:
        * Source/cmake/OptionsWin.cmake:

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

        [CMake] OpenWebRTC libraries path isn't properly deduced
        https://bugs.webkit.org/show_bug.cgi?id=170670

        Reviewed by Carlos Garcia Campos.

        When using OpenWebRTC installation that's outside of the usual Jhbuild
        installation directories, the library paths are ignored because the
        dependency libraries are simply gathered from the pkg-config file.

        Instead, the pkg-config data should be used to search for the correct
        paths to the header and library locations. Both libopenwebrtc and
        libopenwebrtc_gst libraries are needed, so the two library paths are
        concatenated into the OPENWEBRTC_LIBRARIES variable.

        * Source/cmake/FindOpenWebRTC.cmake:

2017-04-08  Ting-Wei Lan  <lantw44@gmail.com>

        Elftoolchain ar doesn't support response files
        https://bugs.webkit.org/show_bug.cgi?id=170105

        Reviewed by Michael Catanzaro.

        WebKit enables the use of response files when cmake and ninja is used.
        However, the default implementation of ar command used in FreeBSD, which
        is part of elftoolchain project, doesn't support reading arguments from
        response files. To avoid causing undefined reference error on FreeBSD,
        we disable the use of response files when elftoolchain ar is detected.

        * Source/cmake/OptionsCommon.cmake:

2017-04-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r215150.

        Broke buildbot

        Reverted changeset:

        "[CMake] Don't force-enable response files when using Ninja
        generator"
        https://bugs.webkit.org/show_bug.cgi?id=170105
        http://trac.webkit.org/changeset/215150

2017-04-08  Ting-Wei Lan  <lantw44@gmail.com>

        [CMake] Don't force-enable response files when using Ninja generator
        https://bugs.webkit.org/show_bug.cgi?id=170105

        Reviewed by Michael Catanzaro.

        Not all platforms support response files, and unconditionally enabling
        response files is known to cause build failure for some platforms.
        Since WebKit builds fine on many platforms without force-enabling
        response files and bug 129771 didn't mention which platform required
        it, we remove it instead of adding more platform checks.

        * Source/cmake/OptionsCommon.cmake:

2017-04-07  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Various build errors when plugin support is disabled
        https://bugs.webkit.org/show_bug.cgi?id=170015

        Reviewed by Carlos Garcia Campos.

        Allow building with ENABLE_NETSCAPE_PLUGIN_API=ON and ENABLE_X11_TARGET=OFF. This should be
        possible as Carlos worked to ensure windowless plugins work properly outside X11. The GTK2
        plugin process still depends on ENABLE_X11_TARGET because a plugin that uses GTK+ surely
        wants to display a window, and is not going to work outside X11. (If the plugin links to
        GTK+ but does not display a window, it's dumb and deserves to be broken.)

        Also, make ENABLE_PLUGIN_PROCESS conditional on ENABLE_NETSCAPE_PLUGIN_API, not
        ENABLE_X11_TARGET.

        * Source/cmake/OptionsGTK.cmake:

2017-04-07  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake][Windows] WebKitGUID.lib should be built with the release CRT
        https://bugs.webkit.org/show_bug.cgi?id=170593

        Reviewed by Brent Fulgham.

        Source/cmake/OptionsWin.cmake has a trick to force using the
        release CRT even for debug build configuration. But, this works
        only for C++, but for C. As the result, WebKitGUID.lib is built
        with the debug CRT in debug build configuration because it has C
        source files.

        * Source/cmake/OptionsWin.cmake: Process CMAKE_C_FLAGS_* as well as CMAKE_CXX_FLAGS_*.

2017-04-06  Nael Ouedraogo  <nael.ouedraogo@crf.canon.fr>

        [GTK] Build fails when using icecream, ccache and cmake 3.6
        https://bugs.webkit.org/show_bug.cgi?id=170498

        Reviewed by Michael Catanzaro.

        Disable ninja response file when using icecream, ccache and cmake > 3.5.

        * Source/cmake/OptionsCommon.cmake:

2017-04-04  Ross Kirsling  <ross.kirsling@sony.com>

        [CMake] Enforce Python 2
        https://bugs.webkit.org/show_bug.cgi?id=170439

        Reviewed by Brent Fulgham.

        * Source/cmake/WebKitCommon.cmake: Fail build immediately if Python 3 is detected.

2017-03-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add MIMETypeRegistry implementation using xdgmime and remove the GTK+ one
        https://bugs.webkit.org/show_bug.cgi?id=170001

        Reviewed by Michael Catanzaro.

        * Source/CMakeLists.txt: Compile xdgmime if USE_XDGMIME is ON.
        * Source/cmake/OptionsGTK.cmake: Set USE_XDGMIME to ON.

2017-03-10  Per Arne Vollan  <pvollan@apple.com>

        Unreviewed Win64 build fix. FTL is not ready to be turned on yet.

        * Source/cmake/OptionsWin.cmake:

2017-03-10  Alex Christensen  <achristensen@webkit.org>

        Win64 build fix.

        * Source/cmake/OptionsWin.cmake:
        WASM got turned on on Win64.  Judging by the state of WasmMemory.cpp, I'm going to
        assume this was a mistake and turn it off until someone writes a version that uses
        VirtualAlloc/VirtualFree instead of mmap.
        The FTL seems a bit unstable, though.  This fixes the build, but more fixes are necessary.

2017-03-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, fix AppleWin build
        https://bugs.webkit.org/show_bug.cgi?id=164032

        * Source/cmake/WebKitFeatures.cmake:

2017-03-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        [GTK][JSCOnly] Enable WebAssembly on Linux environment
        https://bugs.webkit.org/show_bug.cgi?id=164032

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2017-03-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, remove stray period from readme

        * ReadMe.md:

2017-03-03  Dean Jackson  <dino@apple.com>

        Add WebGPU compile flag and experimental feature flag
        https://bugs.webkit.org/show_bug.cgi?id=169161
        <rdar://problem/30846689>

        Reviewed by Tim Horton.

        Add ENABLE_WEBGPU, an experimental feature flag, a RuntimeEnabledFeature,
        and an InternalSetting.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2017-03-01  Andy Estes  <aestes@apple.com>

        Build libwebrtc as part of the All Source scheme in WebKit.xcworkspace.

        Rubber-stamped by Tim Horton.

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

2017-02-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Bump GTK+ versions numbers.

        * Source/cmake/OptionsGTK.cmake:

2017-02-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed, rolling out r213024.

        Wrong version numbers

        Reverted changeset:

        "[GTK] Unreviewed, bump GTK version numbers also on trunk"
        http://trac.webkit.org/changeset/213024

2017-02-26  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Unreviewed, bump GTK version numbers also on trunk

        * Source/cmake/OptionsGTK.cmake:

2017-02-23  Tomas Popela  <tpopela@redhat.com>

        [GTK] Compilation fails if using ninja together with icecream and cmake > 3.5
        https://bugs.webkit.org/show_bug.cgi?id=168770

        Reviewed by Carlos Garcia Campos.

        If using cmake >= 3.6 together with ninja generator and icecream, the
        build will fail as icecream does not correctly handle the response
        files and it's not passing compiler flags from there to the compiler
        itself (in our case it's not passing -fPIC which leads to the
        failure while linking). Don't enable the ninja's response files
        support if we fulfill the preconditions.

        * Source/cmake/OptionsCommon.cmake:

2017-02-22  Ryosuke Niwa  <rniwa@webkit.org>

        Add GTK+ build instruction to ReadMe.md
        https://bugs.webkit.org/show_bug.cgi?id=168745

        Reviewed by Michael Catanzaro.

        Add instructions to build GTK+ port.

        Removed the instruction to set the default configuration since that didn't seem important.

        * ReadMe.md:

2017-02-22  Alberto Garcia  <berto@igalia.com>

        [GTK] [2.15.90] Disable RESOURCE_USAGE on non-Linux systems
        https://bugs.webkit.org/show_bug.cgi?id=168714

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake:

2017-02-21  Ryosuke Niwa  <rniwa@webkit.org>

        Remove the extra `'s errornously added during the final editing.

        * ReadMe.md:

2017-02-21  Ryosuke Niwa  <rniwa@webkit.org>

        Add ReadMe.md to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=168413

        Reviewed by Chris Dumez.

        Add a ReadMe.md to be read on https://github.com/WebKit/webkit based on webkit.org content.

        * ReadMe.md: Added.

2017-02-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Remove ENABLE_THREADED_COMPOSITOR build option
        https://bugs.webkit.org/show_bug.cgi?id=168606

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2017-02-20  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Remove compilation flag ENABLE_CSS_GRID_LAYOUT
        https://bugs.webkit.org/show_bug.cgi?id=167693

        Reviewed by Sergio Villar Senin.

        CSS Grid Layout has been enabled by default in r211415,
        and Safari 10.1 is shipping it.
        It seems like a good moment to remove the compilation flag.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2017-02-17  Michael Catanzaro  <mcatanzaro@igalia.com>

        Remove EFL from Source/cmake
        https://bugs.webkit.org/show_bug.cgi?id=168512

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsEfl.cmake: Removed.
        * Source/cmake/WebKitPackaging.cmake:
        * Source/cmake/eflsymbols.filter: Removed.

2017-02-16  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Use env command to set PYTHONPATH if cmake is new enough
        https://bugs.webkit.org/show_bug.cgi?id=156833

        Reviewed by Alex Christensen.

        This change fixes 2 issues when CMake >= 3.1 is used:
        - When PYTHONPATH contains special characters, CMake adds quotes around
        "PYTHONPATH=..." and produces broken build command in non-WIN32 case.
        - On WIN32, unix-like shell can be used instead of cmd.exe, but this case
        cannot be easily detected in cmake.

        * Source/cmake/WebKitMacros.cmake:

2017-02-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Add ENABLE_INTERSECTION_OBSERVER option to CMake.

        It's now a runtime enabled feature so we should always build it.

        Fixes: intersection-observer/intersection-observer-entry-interface.html
               intersection-observer/intersection-observer-interface.html

        * Source/cmake/WebKitFeatures.cmake:

2017-02-10  Brian Burg  <bburg@apple.com>

        Add basic debugging macros for CMake
        https://bugs.webkit.org/show_bug.cgi?id=161538

        Reviewed by Michael Catanzaro.

        It's useful to be able to dump the state of everything when debugging
        CMake build problems, especially when they happen on EWS (but not locally).

        Start with macros for:
            - dumping out all CMake variables
            - dumping all executed commands (by turning off pretty-printing)

        * Source/cmake/WebKitMacros.cmake:

2017-02-09  Alex Christensen  <achristensen@webkit.org>

        Build libwebrtc on bots without using it yet
        https://bugs.webkit.org/show_bug.cgi?id=168062

        Reviewed by Brent Fulgham.

        * Source/Makefile:

2017-02-07  Olivier Blin  <olivier.blin@softathome.com>

        [GTK][Efl] Do not require LibXslt if XSLT is disabled
        https://bugs.webkit.org/show_bug.cgi?id=167931

        This fixes build with --no-xslt, when the libxslt dev files are not installed.

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:

2017-02-03  Konstantin Tokarev  <annulen@yandex.ru>

        [CMake] RelWithDebInfo builds are super broken at runtime
        https://bugs.webkit.org/show_bug.cgi?id=163897

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsCommon.cmake: Apply -fno-strict-aliasing,
        -fno-exceptions, and -fno-rtti flags to all configurations,
        instead of only "Release".

2017-02-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add initial implementation of resource usage overlay
        https://bugs.webkit.org/show_bug.cgi?id=167731

        Reviewed by Michael Catanzaro.

        Enable RESOURCE_USAGE.

        * Source/cmake/OptionsGTK.cmake:

2017-02-02  Alex Christensen  <achristensen@webkit.org>

        Build fix after r211602
        https://bugs.webkit.org/show_bug.cgi?id=167758

        * Source/Makefile:
        Don't build libwebrtc by default.  It's not used yet anyway.

2017-02-02  David Kilzer  <ddkilzer@apple.com>

        Make the Makefile great again after r211570, r211572

        * Makefile: Restore tabs and ending newline.

2017-02-02  Jonathan Bedard  <jbedard@apple.com>

        Unreviewed build fix after r211570

        * Makefile: Placed back.

2017-02-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        Propagate networking errors correctly for import() operator
        https://bugs.webkit.org/show_bug.cgi?id=167501

        Reviewed by Ryosuke Niwa.

        * Source/ModuleFetchFailureKind.h: Added.

2017-01-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.15.4 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2017-01-24  Joseph Pecoraro  <pecoraro@apple.com>

        Fold USER_TIMING into WEB_TIMING and make it a RuntimeEnabledFeature
        https://bugs.webkit.org/show_bug.cgi?id=167394

        Reviewed by Ryosuke Niwa.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2017-01-22  Don Olmstead <don.olmstead@am.sony.com> and Myles C. Maxfield <mmaxfield@apple.com>

        Introducing the Platform Abstraction Layer (PAL)
        https://bugs.webkit.org/show_bug.cgi?id=143358

        Reviewed by Alex Christensen.

        * CMakeLists.txt:
        * Source/CMakeLists.txt:
        * Source/cmake/WebKitFS.cmake:

2017-01-20  Joseph Pecoraro  <pecoraro@apple.com>

        Remove outdated ENABLE(CSP_NEXT) build flag
        https://bugs.webkit.org/show_bug.cgi?id=167252

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2017-01-20  Youenn Fablet  <youenn@apple.com>

        [WebRTC] Add libwebrtc build infrastructure
        https://bugs.webkit.org/show_bug.cgi?id=167207

        Reviewed by Alex Christensen.

        * WebKit.xcworkspace/contents.xcworkspacedata:

2017-01-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.15.3 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2017-01-17  Joseph Pecoraro  <pecoraro@apple.com>

        ENABLE(USER_TIMING) Not Defined for Apple Windows or OS X Ports
        https://bugs.webkit.org/show_bug.cgi?id=116551
        <rdar://problem/13949830>

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2017-01-16  Joseph Pecoraro  <pecoraro@apple.com>

        Remove the REQUEST_ANIMATION_FRAME flag
        https://bugs.webkit.org/show_bug.cgi?id=156980
        <rdar://problem/25906849>

        Reviewed by Simon Fraser.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2017-01-14  Joseph Pecoraro  <pecoraro@apple.com>

        Remove stale references to ENABLE_ES6_GENERATORS and ENABLE_PROMISES
        https://bugs.webkit.org/show_bug.cgi?id=167043

        Reviewed by Darin Adler.

        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2017-01-13  Joseph Pecoraro  <pecoraro@apple.com>

        Remove ENABLE(DETAILS_ELEMENT) guards
        https://bugs.webkit.org/show_bug.cgi?id=167042

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2017-01-13  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Clean up SHARED_CORE option
        https://bugs.webkit.org/show_bug.cgi?id=167004

        Reviewed by Alex Christensen.

        * CMakeLists.txt:

2016-12-21  Konstantin Tokarev  <annulen@yandex.ru>

        set PYTHONPATH in separate COMMAND doesn't work with all CMake generators
        https://bugs.webkit.org/show_bug.cgi?id=164997

        Reviewed by Alex Christensen.

        Fix for r201413.

        * Source/cmake/WebKitMacros.cmake:

2016-12-17  Joonghun Park  <jh718.park@samsung.com>

        [EFL] bump EFL version to 1.18.4
        https://bugs.webkit.org/show_bug.cgi?id=166004

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Use efl-1.18.4 instead of 1.18.1.

2016-12-15  Alex Christensen  <achristensen@webkit.org>

        Remove flex and bison build dependencies; commit generated XPath parser
        https://bugs.webkit.org/show_bug.cgi?id=165783

        Reviewed by Brent Fulgham.

        * Source/cmake/WebKitCommon.cmake:
        * Source/cmake/WebKitMacros.cmake:

2016-12-10  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Include WTF, JSC, and WebCore headers automatically to targers using them
        https://bugs.webkit.org/show_bug.cgi?id=165686

        Reviewed by Michael Catanzaro.

        This change reduces duplication of include path lists between modules,
        and reduces future need for fixes like r209605 (broken build because of
        WebCore header suddenly becoming used in WebKit2).

        * Source/cmake/WebKitMacros.cmake:

2016-11-30  Brent Fulgham  <bfulgham@apple.com>

        [Win] Apple build is using incorrect ICU library (if present)
        https://bugs.webkit.org/show_bug.cgi?id=164934
        <rdar://problem/29329654>

        Reviewed by Alex Christensen.

        Move the 'icuuc.lib' and 'icuin.lib' library names to the end of the set of choices when searching for ICU.
        so that we preferentially select the 'new' version of these libraries if they are available.

        * Source/cmake/FindICU.cmake:

2016-11-23  Zan Dobersek  <zdobersek@igalia.com>

        Remove ENABLE_ASSEMBLER_WX_EXCLUSIVE code
        https://bugs.webkit.org/show_bug.cgi?id=165027

        Reviewed by Darin Adler.

        * Source/cmake/WebKitFeatures.cmake: Remove the ENABLE_ASSEMBLER_WX_EXCLUSIVE option.

2016-11-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.15.2 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2016-11-17  Saam Barati  <sbarati@apple.com>

        Remove async/await compile time flag and enable tests
        https://bugs.webkit.org/show_bug.cgi?id=164828
        <rdar://problem/28639334>

        Reviewed by Yusuke Suzuki.

        * Source/cmake/WebKitFeatures.cmake:

2016-11-16  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6][WebCore] Change ES6_MODULES compile time flag to runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=164827

        Reviewed by Ryosuke Niwa.

        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-11-12  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r207872.
        https://bugs.webkit.org/show_bug.cgi?id=162623

        Did not disable anything, just made them public

        Reverted changeset:

        "[GTK][GStreamer] Disable MEDIA_SOURCE and ENCRYPTED_MEDIA_V2 by default"
        https://bugs.webkit.org/show_bug.cgi?id=162623
        http://trac.webkit.org/changeset/207872

2016-11-09  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [EFL] Use libgcrypt instead of GnuTLS for CryptoDigest
        https://bugs.webkit.org/show_bug.cgi?id=164461

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsEfl.cmake: Find LibGcrypt package instead of GnuTLS.

2016-11-05  Konstantin Tokarev  <annulen@yandex.ru>

        [MinGW] Fixed C99/C++11 format attributes in printf-like functions
        https://bugs.webkit.org/show_bug.cgi?id=164448

        Reviewed by Michael Catanzaro.

        By default MinGW uses printf-like function provided in msvcrt.dll,
        however they miss support for C99/C++11 format attributes. Use MinGW
        implementations instead.

        * Source/cmake/OptionsCommon.cmake: Define __USE_MINGW_ANSI_STDIO

2016-11-03  Konstantin Tokarev  <annulen@yandex.ru>

        Fixes to build JSCOnly on macOS
        https://bugs.webkit.org/show_bug.cgi?id=164379

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsJSCOnly.cmake: Define BUILDING_JSCONLY__, use
        system ICU libraries on macOS
        * Source/cmake/WebKitMacros.cmake: Fixed WEBKIT_FRAMEWORK macro for
        static JSC

2016-11-03  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake][MinGW] Don't use MS bitfield layout to reduce sizes of data structures
        https://bugs.webkit.org/show_bug.cgi?id=164026

        Reviewed by Michael Catanzaro.

        With MS bitfileds RegisterAtOffset becomes wider than ptrdiff_t because of
        different alignment requirements, invoking static_assert. Instead of
        muting assert for MinGW like it's done for MSVC, it's a better choice to
        use more dense layout, as bitfields are not used in public APIs.

        Also, suppress MinGW warnings from "#pragma warning" which it doesn't
        understand.

        * Source/cmake/OptionsCommon.cmake:

2016-11-02  Alex Christensen  <achristensen@webkit.org>

        Remove Battery Status API from the tree
        https://bugs.webkit.org/show_bug.cgi?id=164213

        Reviewed by Sam Weinig.

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

2016-11-02  Olivier Blin  <olivier.blin@softathome.com>

        [GTK] Use libgcrypt instead of GnuTLS for CryptoDigest and SubtleCrypto HMAC implementation
        https://bugs.webkit.org/show_bug.cgi?id=163125

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake: Updated to use libgcrypt files instead of gnutls.
        At least version 1.6.0 is needed for the HMAC APIs.
        libgcrypt is now needed unconditionally for CryptoDigest, used by CSP.

2016-11-02  Romain Bellessort  <romain.bellessort@crf.canon.fr>

        [Readable Streams API] Enable creation of ReadableByteStreamController
        https://bugs.webkit.org/show_bug.cgi?id=164014

        Reviewed by Youenn Fablet.

        Added flag for the byte stream part of Readable Streams API.

        * Source/cmake/WebKitFeatures.cmake:

2016-11-01  Ryosuke Niwa  <rniwa@webkit.org>

        Remove CUSTOM_ELEMENTS build flag
        https://bugs.webkit.org/show_bug.cgi?id=164267

        Reviewed by Antti Koivisto.

        Removed the build flag.

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

2016-11-01  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] generate-bindings-all.pl uses USES_TERMINAL which leaves a noisy line in interactive Ninja build
        https://bugs.webkit.org/show_bug.cgi?id=163868

        Reviewed by Michael Catanzaro.

        It takes long time for generate-bindings-all.pl to generate all
        bindings.  So, it shows the progress while running and
        USES_TERMINAL option of add_custom_target have been used to invoke
        the command.  However, USES_TERMINAL leaves a noisy line in
        Ninja's neat build log of interactive build.

        A new CMake option SHOW_BINDINGS_GENERATION_PROGRESS is added to
        stop using USES_TERMINAL only in case of interactive Ninja build.

        * Source/cmake/WebKitMacros.cmake: Added a new option
        SHOW_BINDINGS_GENERATION_PROGRESS.  Apended --showProgress switch
        of generate-bindings-all.pl and used USES_TERMINAL only if
        SHOW_BINDINGS_GENERATION_PROGRESS is enabled.

2016-10-31  Ryosuke Niwa  <rniwa@webkit.org>

        Enable custom elements by default everywhere
        https://bugs.webkit.org/show_bug.cgi?id=164242

        Reviewed by Michael Catanzaro.

        Enable the Custom Elements API in CMake builds.

        * Source/cmake/WebKitFeatures.cmake:

2016-10-30  Frederic Wang  <fwang@igalia.com>

        Use HarfBuzz ot-math API to parse the OpenType MATH table
        https://bugs.webkit.org/show_bug.cgi?id=162671

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake: Enable internal OpenType MATH parsing for HarfBuzz < 1.3.3.

2016-10-30  Hyowon Kim  <hw1008.kim@samsung.com>

        [GTK] Build break by missing geoclue-2.0.
        https://bugs.webkit.org/show_bug.cgi?id=164170

        Reviewed by Michael Catanzaro.

        Revise the module name for pkg_check_modules() in FindGeoClue2.cmake.

        * Source/cmake/FindGeoClue2.cmake: replace geoclue-2.0 with libgeoclue-2.0.

2016-10-29  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake][Win] Visual Studio invokes make_settings.pl twice
        https://bugs.webkit.org/show_bug.cgi?id=163774

        Reviewed by Michael Catanzaro.

        build-webkit recompiles some files just after finishing
        build-webkit in case of using CMake VisualStudio generator because
        both WebCoreDerivedSources.vcxproj and WebCoreTestSupport.vcxproj
        triggers make_settings.pl.

        make_settings.pl generates four files
        InternalSettingsGenerated.{h,cpp,idl} and SettingsMacros.h.
        WebCoreDerivedSources depends on SettingsMacros.h, and
        WebCoreTestSupport depends on InternalSettingsGenerated.cpp.

        This problem is described in CMake documentation:
        <https://cmake.org/cmake/help/v3.0/command/add_custom_command.html>

        > Do not list the output in more than one independent target that may
        > build in parallel or the two instances of the rule may conflict

        To solve this problem, only SettingsMacros.h is specified as
        OUTPUT of add_custom_command, and other generated files are marked
        as BYPRODUCTS.  As the result, only WebCoreDerivedSources target
        triggers make_settings.pl. And other targets already have a
        dependency to WebCoreDerivedSources target.

        To support earlier versions than CMake 3.2, it uses GENERATED
        source file property instead of BYPRODUCTS option.

        * Source/cmake/WebKitMacros.cmake(GENERATE_SETTINGS_MACROS):
        Removed extra output files from OUTPUT of add_custom_command and
        added BYPRODUCTS option.

2016-10-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] Changing enabled features should trigger recompiling all IDL
        https://bugs.webkit.org/show_bug.cgi?id=164121

        Reviewed by Michael Catanzaro.

        Changing enabled features should trigger recompiling all IDL
        because some of them use #if.  generate-bindings-all.pl was
        introduced in <http://trac.webkit.org/changeset/207617>.  Before
        this change, updating supplemental_dependency.tmp triggered
        recompiling all IDL. Changing enabled features usually involves
        adding or removing IDL files. As the result, all IDL would be
        recompiled.  After the change, adding or removing IDL does not
        trigger recompiling all IDL. So, we need to explicitly trigger
        recompiling all IDL if enabled features are changed.

        * Source/cmake/WebKitMacros.cmake(GENERATE_BINDINGS): Added
        cmakeconfig.h to extra dependencies.

2016-10-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.15.1 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2016-10-26  Enrique Ocaña González  <eocanha@igalia.com>

        [cmake][GStreamer][MSE][EME] Build MSE and EME code after refactoring
        https://bugs.webkit.org/show_bug.cgi?id=162928

        Reviewed by Xabier Rodriguez-Calvar.

        Consolidate all the source file tree changes after refactoring.

        This patch is co-authored with Philippe Normand <philn@igalia.com> (EME support).

        * Source/cmake/FindLibGcrypt.cmake: Added.
        * Source/cmake/OptionsGTK.cmake:

2016-10-26  Enrique Ocaña González  <eocanha@igalia.com>

        [GTK][GStreamer] Disable MEDIA_SOURCE and ENCRYPTED_MEDIA_V2 by default
        https://bugs.webkit.org/show_bug.cgi?id=162623

        Reviewed by Xabier Rodriguez-Calvar.

        * Source/cmake/OptionsGTK.cmake:

2016-10-25  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Don't enable ld.gold by default on non-ELF platforms
        https://bugs.webkit.org/show_bug.cgi?id=163946

        Reviewed by Alex Christensen.

        For example, MinGW toolchain may be shipped with gold, but it fails to link
        WebKit.

        * Source/cmake/OptionsCommon.cmake:

2016-10-25  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Don't add -fPIC flag when on Windows (MinGW)
        https://bugs.webkit.org/show_bug.cgi?id=163949

        Reviewed by Michael Catanzaro.

        -fPIC flag does not do anything on Windows and produces warning noise
        with MinGW. There is no position independent code in Unix sense on
        32-bit Windows, and 64-bit Windows code is always relocatable.

        For reference see
        https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00836.html

        * Source/cmake/WebKitHelpers.cmake:

2016-10-21  Csaba Osztrogonác  <ossy@webkit.org>

        [EFL] REGRESSION(r207616): Build is broken due to missing libgeoclue-dev package
        https://bugs.webkit.org/show_bug.cgi?id=163733

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Expose USE_GEOCLUE2 to the build properly.

2016-10-21  Adam Bergkvist  <adam.bergkvist@ericsson.com>

        WebRTC: [GTK] Add MediaEndpointOwr - an OpenWebRTC WebRTC backend
        https://bugs.webkit.org/show_bug.cgi?id=163327

        Reviewed by Philippe Normand.

        Add manual WebRTC test. Test features:
        - Two RTCPeerConnection instances communicate in a single browser tab.
        - Supports setting up bidirectional media with a single SDP dialog, as
          well as one direction at a time.
        - Strips vendor prefixes (runs in Chrome and Firefox as well)
        - Supports modern as well as legacy APIs (mainly to make the test run
          in Chrome)

        * ManualTests/webrtc-one-tab-p2p.html: Added.

2016-10-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Configures but fails to link with ENABLE_OPENGL=OFF
        https://bugs.webkit.org/show_bug.cgi?id=163449

        Reviewed by Michael Catanzaro.

        Remove wrong dependency of Wayland on OpenGL introduced in r190615, it should be possible to build for Wayland
        without GL.

        * Source/cmake/OptionsGTK.cmake:

2016-10-20  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] CMake does not support the dep files for implicit dependency
        https://bugs.webkit.org/show_bug.cgi?id=161433

        Reviewed by Brent Fulgham.

        Created a Perl script to generate all IDL bindings for CMake.
        This script can regenerate outdated bindings by based on the
        supplemental dependency and dep files created by
        '--write-dependencies' switch of generate-bindings.pl.

        add_custom_target is used to invoke the script instead of
        add_custom_command because Ninja deletes all output files before
        executing the command in case of add_custom_command.

        USES_TERMINAL option of add_custom_target has two effects:
        1) Not buffering output of the command
        2) Invoking the command in the special Ninja pool which inhibits parallel build
        One needs to use CMake 3.2 or later to enable this feature.

        * Source/cmake/WebKitMacros.cmake (GENERATE_BINDINGS): Included
        ProcessorCount.  Added a new argument 'target'.  Use
        add_custom_target instead of add_custom_command.  Invoke the new
        script.

2016-10-19  Alex Christensen  <achristensen@webkit.org>

        Revert r207151
        https://bugs.webkit.org/show_bug.cgi?id=163675

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsAppleWin.cmake:

2016-10-18  Dean Jackson  <dino@apple.com>

        Remove CSS_SHAPES feature definition. This should always be on.
        https://bugs.webkit.org/show_bug.cgi?id=163628
        <rdar://problem/28834613>

        Reviewed by Tim Horton.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-10-14  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Private/unsupported build options should be marked as advanced
        https://bugs.webkit.org/show_bug.cgi?id=163451

        Reviewed by Carlos Garcia Campos.

        When checking to decide whether to mark an option as advanced, the conditional checks
        whether _WEBKIT_AVAILABLE_OPTIONS_IS_PUBLIC_${_name} is defined. It is always defined. We
        need to check its value instead.

        * Source/cmake/WebKitFeatures.cmake:

2016-10-13  Brian Burg  <bburg@apple.com>

        [CMake] Split the definition of CODE_GENERATOR_PREPROCESSOR so it can be used in a custom command
        https://bugs.webkit.org/show_bug.cgi?id=163401

        Reviewed by Michael Catanzaro.

        In another patch, we need to use CODE_GENERATOR_PREPROCESSOR as the COMMAND argument
        when defining an add_custom_command. Previously, it has only been used as a quoted argument
        to various Perl code generation scripts.

        To support both use cases, we need to be able to provide the executable and its arguments as
        an unbroken quoted string, and as a CMake list suitable for passing as an argument to COMMAND.

        * Source/cmake/OptionsCommon.cmake:
        Split out the executable and argument string into separate variables that can be used elsewhere.
        Compute the final unbroken quoted string using the two separate variables to arrive at the same result.

        * Source/cmake/WebKitMacros.cmake:
        Drive-by cleanup to add quotes around the use of CODE_GENERATOR_PREPROCESSOR so it matches other uses.

2016-10-12  Chris Dumez  <cdumez@apple.com>

        [Web IDL] Drop support for legacy [ConstructorConditional=*]
        https://bugs.webkit.org/show_bug.cgi?id=163368

        Reviewed by Ryosuke Niwa.

        Drop ENABLE_DOM4_EVENTS_CONSTRUCTOR compiler flag.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-10-11  Alex Christensen  <achristensen@webkit.org>

        Remove dead networking code
        https://bugs.webkit.org/show_bug.cgi?id=163263

        Reviewed by Daniel Bates.

        * Source/cmake/OptionsAppleWin.cmake:

2016-10-11  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Make INDEXED_DATABASE_IN_WORKERS depending on INDEXED_DATABASE
        https://bugs.webkit.org/show_bug.cgi?id=163280

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/WebKitFeatures.cmake:

2016-10-11  Per Arne Vollan  <pvollan@apple.com>

        [Win][Direct2D] Compile fix.
        https://bugs.webkit.org/show_bug.cgi?id=163273

        Reviewed by Brent Fulgham.

        Define USE_DIRECT2D.

        * Source/cmake/OptionsAppleWin.cmake:

2016-10-10  Zan Dobersek  <zdobersek@igalia.com>

        Add ENABLE_ENCRYPTED_MEDIA configuration option
        https://bugs.webkit.org/show_bug.cgi?id=163219

        Reviewed by Darin Adler.

        Add the ENABLE_ENCRYPTED_MEDIA configuration option to the
        CMake and MSVC build systems. It will be used to enable or
        disable the new EME implementation at build-time.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-10-10  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r206972.
        https://bugs.webkit.org/show_bug.cgi?id=163227

        Making EWS flaky (Requested by bfulgham_ on #webkit).

        Reverted changeset:

        "[CMake] CMake does not support the dep files for implicit
        dependency"
        https://bugs.webkit.org/show_bug.cgi?id=161433
        http://trac.webkit.org/changeset/206972

2016-10-09  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] CMake does not support the dep files for implicit dependency
        https://bugs.webkit.org/show_bug.cgi?id=161433

        Reviewed by Brent Fulgham.

        Created a Perl script to generate all IDL bindings for CMake.
        This script can regenerate outdated bindings by based on the
        supplemental dependency and dep files created by
        '--write-dependencies' switch of generate-bindings.pl.

        add_custom_target is used to invoke the script instead of
        add_custom_command because Ninja deletes all output files before
        executing the command in case of add_custom_command.

        USES_TERMINAL option of add_custom_target has two effects:
        1) Not buffering output of the command
        2) Invoking the command in the special Ninja pool which inhibits parallel build
        One needs to use CMake 3.2 or later to enable this feature.

        * Source/cmake/WebKitMacros.cmake (GENERATE_BINDINGS): Included
        ProcessorCount.  Added a new argument 'target'.  Use
        add_custom_target instead of add_custom_command.  Invoke the new
        script.

2016-10-07  Fujii Hironori  <Hironori.Fujii@sony.com>

        Use 'use lib $FindBin::Bin' to append Perl module include path
        https://bugs.webkit.org/show_bug.cgi?id=162256

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/WebKitMacros.cmake: Removed '-I' options from
        invocation of Perl.

2016-10-06  Brent Fulgham  <bfulgham@apple.com>

        [Win][Direct2D] Add Direct2D CMake rules
        https://bugs.webkit.org/show_bug.cgi?id=162925

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsAppleWin.cmake: Add a new 'USE_DIRECT2D' option
        flag for the build. Currently this is commented out and is unused.

2016-10-05  Zan Dobersek  <zdobersek@igalia.com>

        Rename ENABLE_ENCRYPTED_MEDIA_V2 to ENABLE_LEGACY_ENCRYPTED_MEDIA
        https://bugs.webkit.org/show_bug.cgi?id=162903

        Reviewed by Alex Christensen.

        Rename build guards for the remaining implementation of the legacy EME API
        to ENABLE_LEGACY_ENCRYPTED_MEDIA. This will allow for the future implementation
        of the near-finished API to be guarded with the simple ENABLE_ENCRYPTED_MEDIA guards.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-10-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] Cleanup persistent credential storage code
        https://bugs.webkit.org/show_bug.cgi?id=162777

        Reviewed by Alex Christensen.

        Remove ENABLE(CREDENTIAL_STORAGE) build flag and replace it by USE(LIBSECRET).

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2016-09-29  Aaron Chu  <aaron_chu@apple.com>

        Web Inspector: AXI: linkified refs to #document and #text are not usually navigable nodes; consider delinkifying them
        https://bugs.webkit.org/show_bug.cgi?id=130600
        <rdar://problem/16391333>

        Reviewed by Brian Burg.

        Added a manual test to test the node links in the Accessibility Inspector
        https://bugs.webkit.org/show_bug.cgi?id=130600

        * ManualTests/accessibility/delinkified-non-navigable-links.html: Added.

2016-09-28  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Remove obsolete comment from OptionsGTK.cmake
        https://bugs.webkit.org/show_bug.cgi?id=162622

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsGTK.cmake:

2016-09-28  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, build fix for several CMake ports after r206440

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

2016-09-27  Don Olmstead  <don.olmstead@am.sony.com>

        [CMake] Add HAVE_LOCALTIME_R definition
        https://bugs.webkit.org/show_bug.cgi?id=162636

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsCommon.cmake:

2016-09-27  Don Olmstead  <don.olmstead@am.sony.com>

        [CMake] Use CMake to determine HAVE_* defines
        https://bugs.webkit.org/show_bug.cgi?id=162368

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsCommon.cmake:

2016-09-27  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Simplify Clang checks and prepare for compiler ID split
        https://bugs.webkit.org/show_bug.cgi?id=162609

        Reviewed by Michael Catanzaro.

        CMake 3.x introduces separate compiler id for AppleClang, making condition
        (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") inappropriate as check for
        any clang version. Introduce COMPILER_IS_CLANG instead, which is also
        shorter that CMAKE_CXX_COMPILER_ID comparison.

        * CMakeLists.txt:
        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/WebKitHelpers.cmake:
        * Source/cmake/OptionsEfl.cmake: Use CMAKE_COMPILER_IS_GNUCXX instead of
        !Clang check because this is what was really meant here.

2016-09-27  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Added COMPILER_IS_GCC_OR_CLANG variable to simplify conditions.
        https://bugs.webkit.org/show_bug.cgi?id=162605

        Reviewed by Michael Catanzaro.

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

2016-09-26  Daniel Bates  <dabates@apple.com>

        Rename IOS_TEXT_AUTOSIZING to TEXT_AUTOSIZING
        https://bugs.webkit.org/show_bug.cgi?id=162365

        Reviewed by Simon Fraser.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake: Substitute ENABLE_TEXT_AUTOSIZING for ENABLE_IOS_TEXT_AUTOSIZING,
        update the description of this feature to better describe what it does and re-order the define in the
        list of defines such that it is in sorted order.

2016-09-26  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Added an option to disable thin archives when they are undesirable.
        https://bugs.webkit.org/show_bug.cgi?id=162561

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsCommon.cmake: Added USE_THIN_ARCHIVES option.

2016-09-23  Caitlin Potter  <caitp@igalia.com>

        [JSC] Implement parsing of Async Functions
        https://bugs.webkit.org/show_bug.cgi?id=161409

        Reviewed by Yusuke Suzuki.

        * Source/cmake/WebKitFeatures.cmake:

2016-09-22  Daniel Bates  <dabates@apple.com>

        Remove more ENABLE(TEXT_AUTOSIZING) code
        https://bugs.webkit.org/show_bug.cgi?id=162456

        Reviewed by Simon Fraser.

        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-09-20  Don Olmstead  <don.olmstead@am.sony.com>

        [WinCairo] Use find_package cairo in build
        https://bugs.webkit.org/show_bug.cgi?id=162239

        Reviewed by Alex Christensen.

        * Source/cmake/FindCairo.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2016-09-19  Daniel Bates  <dabates@apple.com>

        Remove ENABLE(TEXT_AUTOSIZING) automatic text size adjustment code
        https://bugs.webkit.org/show_bug.cgi?id=162167

        Reviewed by Simon Fraser.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2016-09-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Make ENABLE_THREADED_COMPOSITOR a public option
        https://bugs.webkit.org/show_bug.cgi?id=162148

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake:

2016-09-18  Gyuyoung Kim  <gyuyoung.kim@navercorp.com>

        [EFL] Bump efl library to 1.18.1
        https://bugs.webkit.org/show_bug.cgi?id=162120

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsEfl.cmake: Use efl-1.18.1 instead of 1.18.

2016-09-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [CMake] Build broken with current debian testing
        https://bugs.webkit.org/show_bug.cgi?id=162054

        Reviewed by Žan Doberšek.

        Building WTR bindings is broken now in Debian testing. The reason is that '.' is no longer included in @INC for
        perl, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=588017 and
        https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-1238.

        * Source/cmake/WebKitMacros.cmake(GENERATE_BINDINGS): Pass also the given BASE_DIR to perl executable so that it
        can find modules in the current directory even if '.' is not in @INC. Also include generators in BASE_DIR to the
        list of dependencies.

2016-09-15  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] Refactor GENERATE_BINDINGS
        https://bugs.webkit.org/show_bug.cgi?id=161854

        Reviewed by Gyuyoung Kim.

        * Source/cmake/WebKitMacros.cmake(GENERATE_BINDINGS): Use
        CMakeParseArguments for argument parsing.  Defined as a function
        instread of a macro because function has its own variable scope.
        Wrapped both preprocess-idls.pl and generate-bindings.pl scripts.
        Downcased local variables COMMON_GENERATOR_DEPENDENCIES and
        BINDING_GENERATOR. Generate idl_files.tmp. Removed arguments
        _prefix and _extension because they are always JS and cpp now.

2016-09-08  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [CMake] Build failure with GCC 6 (fatal error: stdlib.h: No such file or directory)
        https://bugs.webkit.org/show_bug.cgi?id=161697

        Reviewed by Michael Catanzaro.

        Get the list of system includes from GCC and add it to the CMake
        list of implicit includes. This way, CMake will filter any of this
        directories from the list of includes when calling the compiler.

        This avoids an issue with GCC 6 that causes build failures when
        including the default include path as a system include (-isystem).

        * Source/cmake/OptionsCommon.cmake:

2016-09-07  Michael Catanzaro  <mcatanzaro@igalia.com>

        [EFL] Switch to ENABLE_NETWORK_CACHE
        https://bugs.webkit.org/show_bug.cgi?id=152676

        Reviewed by Alex Christensen.

        Build with -Wno-error=missing-field-initializers to avoid spurious build failures.

        * Source/cmake/OptionsEfl.cmake:

2016-09-07  Youenn Fablet  <youenn@apple.com>

        [Streams API] Separate compile flag for ReadableStream and WritableStream
        https://bugs.webkit.org/show_bug.cgi?id=161044

        Reviewed by Alex Christensen.

        Moving from STREAMS_API to READABLESTREAM_API and WRITABLESTREAM_API compilation flags.

        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:

2016-09-06  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] Decouple generating bindings of WebCore and WebCoreTestSupport
        https://bugs.webkit.org/show_bug.cgi?id=161474

        Generating bindings of WebCore and WebCoreTestSupport shares a
        single supplementalDependencyFile.  But, nothing supplements any
        IDL of WebCoreTestSupport.  This introduces unnecessary
        dependencies.

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitMacros.cmake:
        (GENERATE_BINDINGS): Clear uninitialized variables before
        use. This causes a problem in the second time of calling
        GENERATE_BINDINGS.

2016-09-04  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r205415.
        https://bugs.webkit.org/show_bug.cgi?id=161573

        Many bots see inspector test failures, rolling out now and
        investigating later. (Requested by brrian on #webkit).

        Reverted changeset:

        "Web Inspector: unify Main.html and Test.html sources and
        generate different copies with the preprocessor"
        https://bugs.webkit.org/show_bug.cgi?id=161212
        http://trac.webkit.org/changeset/205415

2016-09-01  Brian Burg  <bburg@apple.com>

        Web Inspector: unify Main.html and Test.html sources and generate different copies with the preprocessor
        https://bugs.webkit.org/show_bug.cgi?id=161212
        <rdar://problem/28017961>

        Reviewed by Joseph Pecoraro.

        Rearrange some CMake rules so most Inspector UI work is done in WebInspectorUI.

        * Source/CMakeLists.txt: Add 'WebInspectorUI' subdirectory.
        * Source/PlatformEfl.cmake:
        - Move the rule to copy InspectorBackendCommands.js into WebInspectorUI/CMakeLists.txt.
        - Add a FIXME to use the cross-port list of Inspector resources instead of copying everything.
        - Add new dependency so generated WebInspectorUI files are made by web-inspector-resources.
        - Copy over generated files Main.html and Test.html.

        * Source/PlatformWin.cmake:
        - Add a FIXME to use the cross-port list of Inspector resources instead of copying everything.
        - Add new dependency so generated WebInspectorUI files are made by web-inspector-resources.
        - Copy over generated files Main.html and Test.html.

        * Source/cmake/WebKitFS.cmake:
        - Set up WEBINSPECTORUI_DIR and use it.
        - Move directory creation commands here from JavaScriptCore.

        * Source/cmake/WebKitMacros.cmake:
        Add a helper to turn a CMake list into a space-delimited string of elements.

2016-09-01  Brian Burg  <bburg@apple.com>

        Update root .gitignore for latest WebKitLibraries
        https://bugs.webkit.org/show_bug.cgi?id=161501

        Reviewed by Alex Christensen.

        * .gitignore:

2016-08-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Move GObject DOM bindings to WebKit2 layer and stop auto generating them
        https://bugs.webkit.org/show_bug.cgi?id=161438

        Reviewed by Michael Catanzaro.

        * Source/PlatformGTK.cmake:
        * Source/cmake/OptionsGTK.cmake:

2016-08-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Bump GTK+ versions numbers.

        * Source/cmake/OptionsGTK.cmake:

2016-08-30  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] bump required version to 1.2.3
        https://bugs.webkit.org/show_bug.cgi?id=159667

        Reviewed by Xabier Rodriguez Calvar.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:

2016-08-29  Per Arne Vollan  <pvollan@apple.com>

        Attempt to fix WinCairo build after r205090.

        Unreviewed build fix.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsWin.cmake:

2016-08-27  Per Arne Vollan  <pvollan@apple.com>

        [Win] Enable 'warning as error' compiler setting.
        https://bugs.webkit.org/show_bug.cgi?id=161243

        Reviewed by Darin Adler.

        * Source/cmake/OptionsWin.cmake:

2016-08-26  Jer Noble  <jer.noble@apple.com>

        Add a test harness for running UI tests on the iOS Simulator
        https://bugs.webkit.org/show_bug.cgi?id=161265

        Add the new MobileMiniBrowser project to the WebKit workspace.

        Reviewed by Simon Fraser.

        * WebKit.xcworkspace/contents.xcworkspacedata:

2016-08-24  Alexey Proskuryakov  <ap@apple.com>

        Add svn:global-ignores to the root to ignore *.pyc files everythere in the repository.

        * .: Added property svn:global-ignores.

2016-08-19  Dean Jackson  <dino@apple.com>

        Implement preferLowPowerToHighPerformance for WebGL
        https://bugs.webkit.org/show_bug.cgi?id=161017
        <rdar://problem/26819135>

        Reviewed by Myles Maxfield.

        A manual test that creates contexts with and without preferLowPowerToHighPerformance
        to see what is used. This has to be manual because it depends on the hardware
        configuration, and we don't have a way to detect it up-front. Also, if the
        code was failing, it would be the same result as on a single GPU system.

        * ManualTests/webgl-preferLowPowerToHighPerformance.html: Added.

2016-08-19  Per Arne Vollan  <pvollan@apple.com>

        [Win] Warning fix.
        https://bugs.webkit.org/show_bug.cgi?id=160994

        Reviewed by Anders Carlsson.

        Ignore warning when function declared with __declspec(noreturn) has non void return type.

        * Source/cmake/OptionsWin.cmake:

2016-08-17  Don Olmstead  <don.olmstead@am.sony.com>

        Use find_library within Windows build
        https://bugs.webkit.org/show_bug.cgi?id=160904

        Reviewed by Brent Fulgham.

        * Source/cmake/FindICU.cmake:
        * Source/cmake/OptionsWin.cmake:

2016-08-17  Gyuyoung Kim  <gyuyoung.kim@navercorp.com>

        [EFL] Bump efl version from 1.17 to 1.18
        https://bugs.webkit.org/show_bug.cgi?id=160899

        Reviewed by Antonio Gomes.

        * Source/cmake/OptionsEfl.cmake: Update ewebkit version to 1.18.0.

2016-08-04  Csaba Osztrogonác  <ossy@webkit.org>

        [Mac][cmake] Fix the build after Objective-C bindings generator removal
        https://bugs.webkit.org/show_bug.cgi?id=160545

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitMacros.cmake:

2016-08-03  Csaba Osztrogonác  <ossy@webkit.org>

        Lacking support on a arm-traditional disassembler.
        https://bugs.webkit.org/show_bug.cgi?id=123717

        Reviewed by Mark Lam.

        * Source/cmake/FindLLVM.cmake: Added back the r196749 state.
        * Source/cmake/OptionsCommon.cmake: Added back the r196749 state.

2016-08-01  Keith Miller  <keith_miller@apple.com>

        We should not keep the JavaScript tests inside the Source/JavaScriptCore/ directory.
        https://bugs.webkit.org/show_bug.cgi?id=160372

        Rubber stamped by Geoffrey Garen.

        This patch moves all the JavaScript tests from Source/JavaScriptCore/tests to
        a new top level directory, JSTests. Having the tests in the Source directory
        was both confusing and inconvenient for people that just want to checkout the
        source code of WebKit. Since there is no other obvious place to put all the
        JavaScript tests a new top level directory seemed the most sensible.

        * JSTests/: Copied from Source/JavaScriptCore/tests.
        * Source/JavaScriptCore/tests/: Deleted.
        * Scripts/import-test262-tests:
        * Scripts/run-javascriptcore-tests:
        * Scripts/update-javascriptcore-test-res:


2016-07-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.13.4 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2016-07-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Enable threaded compositor by default
        https://bugs.webkit.org/show_bug.cgi?id=160079

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsGTK.cmake:

2016-07-20  Csaba Osztrogonác  <ossy@webkit.org>

        JSC JIT Broken on ARMv7 Traditional (without Thumb2)
        https://bugs.webkit.org/show_bug.cgi?id=159880

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsCommon.cmake: Use the BFD linker on ARM traditional because of a gold linker bug.

2016-07-18  Alexey Proskuryakov  <ap@apple.com>

        "make ARCHS=x86_64" fails to build
        https://bugs.webkit.org/show_bug.cgi?id=159867

        Reviewed by Dan Bernstein.

        * Makefile.shared: Override VALID_ARCHS when ARCHS is set, so that even projects
        that normally customize VALID_ARCHS wouldn't fail to build.

2016-07-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.13.3 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2016-07-13  Per Arne Vollan  <pvollan@apple.com>

        [Win] DLLs are missing version information.
        https://bugs.webkit.org/show_bug.cgi?id=159349

        Reviewed by Alex Christensen.

        Avoid using environment variable WEBKIT_LIBRARIES when finding version stamper utility,
        in case it is not defined. Instead, use the location of the perl script to find the
        utility.

        * Source/cmake/tools/scripts/version-stamp.pl:

2016-07-12  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        Remove ENABLE_CSS3_TEXT_LINE_BREAK flag
        https://bugs.webkit.org/show_bug.cgi?id=159671

        Reviewed by Csaba Osztrogonác.

        ENABLE_CSS3_TEXT_LINE_BREAK feature was implemented without guards.
        https://bugs.webkit.org/show_bug.cgi?id=89235

        So this guard can be removed in build scripts.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2016-07-12  Per Arne Vollan  <pvollan@apple.com>

        [Win] DLLs are missing version information.
        https://bugs.webkit.org/show_bug.cgi?id=159349

        Reviewed by Brent Fulgham.

        The version stamping will fail if the target path has forward slashes.

        * Source/cmake/tools/scripts/version-stamp.pl: Replace forward slashes with backslashes.

2016-07-05  Olivier Blin  <olivier.blin@softathome.com>

        ENABLE_MEDIA_SOURCE should depend on ENABLE_VIDEO
        https://bugs.webkit.org/show_bug.cgi?id=159424

        Reviewed by Philippe Normand.

        MEDIA_SOURCE requires VIDEO enabled, since MediaSource needs HTMLMediaElement.

        * Source/cmake/WebKitFeatures.cmake:

2016-07-05  Per Arne Vollan  <pvollan@apple.com>

        [Win] Layout Test http/tests/security/contentSecurityPolicy/source-list-parsing-10.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=147646

        Reviewed by Brent Fulgham.

        Disable CSP_NEXT. We can then use the common expected test results for this test. 

        * Source/cmake/OptionsWin.cmake:

2016-07-04  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [EFL] Remove mac configuration dependency in WebKit Version definition
        https://bugs.webkit.org/show_bug.cgi?id=159407

        Reviewed by Yusuke Suzuki.

        EFL port has been used Version.xconfig file in WebKit/mac/Configurations.
        in order to generate WebKitVersion.h file. But it can be simply defined
        in cmake.

        * Source/cmake/OptionsEfl.cmake:

2016-07-03  Dan Bernstein  <mitz@apple.com>

        [Xcode] With default verbosity, make(1) output no longer hides environment variable listings
        https://bugs.webkit.org/show_bug.cgi?id=159392

        Reviewed by Alexey Proskuryakov.

        * Makefile.shared: Pass the -hideShellScriptEnvironment option to xcodebuild instead of
          piping its output through an ineffective "grep -v setenv",

2016-07-01  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Make LEGACY_WEB_AUDIO depend on WEB_AUDIO.
        https://bugs.webkit.org/show_bug.cgi?id=159338

        Reviewed by Michael Catanzaro.

        Enabling LEGACY_WEB_AUDIO makes no sense when WEB_AUDIO is
        disabled.

        * Source/cmake/WebKitFeatures.cmake:

2016-06-28  Per Arne Vollan  <pvollan@apple.com>

        [Win] Custom elements tests are failing.
        https://bugs.webkit.org/show_bug.cgi?id=159139

        Reviewed by Alex Christensen.

        Enable custom element API on Windows. 
 
        * Source/cmake/OptionsWin.cmake:

2016-06-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.13.2 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2016-06-15  Romain Bellessort  <romain.bellessort@crf.canon.fr>

        Enabling Shadow DOM for all platforms
        https://bugs.webkit.org/show_bug.cgi?id=158738

        Reviewed by Ryosuke Niwa.

        Removed Shadow DOM from options (enabled by default)

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-06-13  Romain Bellessort  <romain.bellessort@crf.canon.fr>

        [GTK] Enabling Shadow DOM by default
        https://bugs.webkit.org/show_bug.cgi?id=158686

        Reviewed by Carlos Garcia Campos.

        Added support for enabling Shadow DOM by default for GTK.

        * Source/cmake/OptionsGTK.cmake:

2016-06-09  Michael Catanzaro  <mcatanzaro@igalia.com>

        Add comments to clarify feature enablement
        https://bugs.webkit.org/show_bug.cgi?id=158567

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitFeatures.cmake:

2016-06-08  Per Arne Vollan  <pvollan@apple.com>

        [Win] Shadow DOM tests are failing.
        https://bugs.webkit.org/show_bug.cgi?id=158524

        Reviewed by Brent Fulgham.

        Enable Shadow DOM.

        * Source/cmake/OptionsWin.cmake:

2016-06-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Enable IndexedDB in workers
        https://bugs.webkit.org/show_bug.cgi?id=158475

        Reviewed by Antonio Gomes.

        This is working now and many tests are failing only because we don't enable it.

        * Source/cmake/OptionsGTK.cmake:

2016-06-06  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [EFL] Update ewebkit minor version
        https://bugs.webkit.org/show_bug.cgi?id=158409

        Reviewed by Csaba Osztrogonác.

        EWebKit has used efl 1.17 version though, it still is stopped at version 1.14.

        * Source/cmake/OptionsEfl.cmake: Bump minor version to 1.17.

2016-06-05  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [EFL] Sync EFL features with featureList.pm
        https://bugs.webkit.org/show_bug.cgi?id=158410

        Reviewed by Antonio Gomes.

        In OptionsEfl, some features on/off status are different with
        featureList.pm definitions. Sync with it.

        * Source/cmake/OptionsEfl.cmake:

2016-06-03  Per Arne Vollan  <pvollan@apple.com>

        [Win] IndexedDB worker tests are failing.
        https://bugs.webkit.org/show_bug.cgi?id=158341

        Reviewed by Alex Christensen.

        Enable IndexedDB in workers.

        * Source/cmake/OptionsWin.cmake:

2016-05-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.13.1 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2016-05-28  Ryosuke Niwa  <rniwa@webkit.org>

        Autocorrection makes it hard to type "doesn't" and to type @ in email addresses
        https://bugs.webkit.org/show_bug.cgi?id=158177

        Reviewed by Darin Adler.

        Fixed manual tests for autocorrection panels and added a manual test for . Most of changes are fixing up the path to LayoutTests/editing/editing.js.

        Also wrap many steps to type in a space or delete a character inside setTimeout since autocorrection happens on a timer
        and the fact WebKit2 communicates with NSSpellChecker via IPC makes the behavior even more indeterministic.

        * ManualTests/autocorrection/autocorrection-at-mark.html: Added.
        * ManualTests/autocorrection/autocorrection-cancelled-by-ESC.html:
        * ManualTests/autocorrection/autocorrection-cancelled-by-typing-1.html:
        * ManualTests/autocorrection/autocorrection-contraction-2.html: Added.
        * ManualTests/autocorrection/autocorrection-contraction.html:
        * ManualTests/autocorrection/autocorrection-in-iframe.html:
        * ManualTests/autocorrection/close-window-when-correction-is-shown.html:
        * ManualTests/autocorrection/continue-typing-to-dismiss-reversion.html:
        * ManualTests/autocorrection/delete-to-dismiss-reversion.html:
        * ManualTests/autocorrection/delete-to-end-of-word-to-show-reversion.html:
        * ManualTests/autocorrection/dismiss-multiple-guesses.html:
        * ManualTests/autocorrection/document-for-iframe-test.html: Removed.
        * ManualTests/autocorrection/move-to-end-of-word-to-show-reversion.html: Type a space and move care in setTimeout as
        the reversion panel wouldn't show up otherwise.
        * ManualTests/autocorrection/remove-misspelling-marker-after-appending-letter.html: Delay the typing of a space as well as
        deleting letters since autocorrection panel wouldn't show up in time otherwise, and deleting character immediately would
        reject the autocorrection instead of accepting it. Also removed the steps to add back the spellchecking marker and extracted
        it as a separate test.
        * ManualTests/autocorrection/removing-misspelling-marker-after-appending-letter-2.html: Copied. This test continues the full
        scenario in the previous test by typing a space and deleting the character, thereby bringing up spellchecking marker.
        * ManualTests/autocorrection/resources: Added.
        * ManualTests/autocorrection/resources/document-for-iframe-test.html: Moved from ManualTests/autocorrection/.
        * ManualTests/autocorrection/select-from-multiple-guesses.html: Added a missing instruction.
        * ManualTests/autocorrection/spell-checking-after-reversion.html:
        * ManualTests/autocorrection/type-whitespace-to-dismiss-reversion.html: Delay the typing of a space and moving the selection
        since the reversion panel wouldn't show up otherwise.
        * ManualTests/autocorrection/undo-autocorrection-2.html: Copied. Automated most of steps in the second test case.
        * ManualTests/autocorrection/undo-autocorrection.html:

2016-05-25  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Deduplicate make-js-file-arrays usage and make it work on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=157997

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitMacros.cmake: Added MAKE_JS_FILE_ARRAYS macro.

2016-05-25  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Turn on ENABLE_CSS_GRID_LAYOUT by default
        https://bugs.webkit.org/show_bug.cgi?id=158060

        Reviewed by Darin Adler.

        The runtime flag is disabled by default,
        but we want to build CSS Grid Layout by default.
        Otherwise the runtime flag would be useless.

        * Source/cmake/WebKitFeatures.cmake:

2016-05-22  Brady Eidson  <beidson@apple.com>

        Move to C++14.
        https://bugs.webkit.org/show_bug.cgi?id=157948

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsCommon.cmake:

2016-05-22  Csaba Osztrogonác  <ossy@webkit.org>

        Suppress -Wmissing-field-initializers warnings with GCC 4.9
        https://bugs.webkit.org/show_bug.cgi?id=157888

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitHelpers.cmake:

2016-05-20  Joseph Pecoraro  <pecoraro@apple.com>

        Remove LegacyProfiler
        https://bugs.webkit.org/show_bug.cgi?id=153565

        Reviewed by Saam Barati.

        * ManualTests/inspector/profiler-test-call.html: Removed.
        * ManualTests/inspector/profiler-test-many-calls-in-the-same-scope.html: Removed.

2016-05-18  Gwang Yoon Hwang  <yoon@igalia.com>

        [GStreamer] Use FakeSink to get a decoded texture from a pipeline
        https://bugs.webkit.org/show_bug.cgi?id=153641

        Reviewed by Philippe Normand.

        * Source/cmake/FindGStreamer.cmake: Bump gst-gl version to 1.8.0

2016-05-17  Dean Jackson  <dino@apple.com>

        Remove ES6_GENERATORS flag
        https://bugs.webkit.org/show_bug.cgi?id=157815
        <rdar://problem/26332894>

        Reviewed by Geoffrey Garen.

        This flag isn't needed. Generators are enabled everywhere and
        part of a stable specification.

        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-05-16  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed rollout r200924. Caused js/regress/string-replace-generic.html to fail.

        * ManualTests/inspector/profiler-test-call.html: Added.
        * ManualTests/inspector/profiler-test-many-calls-in-the-same-scope.html: Added.

2016-05-14  Joseph Pecoraro  <pecoraro@apple.com>

        Remove LegacyProfiler
        https://bugs.webkit.org/show_bug.cgi?id=153565

        Reviewed by Mark Lam.

        * ManualTests/inspector/profiler-test-call.html: Removed.
        * ManualTests/inspector/profiler-test-many-calls-in-the-same-scope.html: Removed.

2016-05-13  Yoav Weiss  <yoav@yoav.ws>

        Turn on WEB_TIMING for all ports
        https://bugs.webkit.org/show_bug.cgi?id=157673

        Reviewed by Alex Christensen.

        Turn on WEB_TIMING by default on the cmake Mac port, to match it with all other ports,
        and make sure that the flag will be on by default for all ports.

        * Source/cmake/OptionsGTK.cmake: Remove the specific private flag for WEB_TIMING.
        * Source/cmake/OptionsMac.cmake: Remove the specific private flag for WEB_TIMING.
        * Source/cmake/WebKitFeatures.cmake: Turn on WEB_TIMING for all ports by default.

2016-05-12  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(ES6_ARROWFUNCTION_SYNTAX) guards
        https://bugs.webkit.org/show_bug.cgi?id=157564

        Reviewed by Darin Adler.

        * Source/cmake/WebKitFeatures.cmake:

2016-05-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        [Linux] Remove seccomp filters support
        https://bugs.webkit.org/show_bug.cgi?id=157380

        Reviewed by Darin Adler.

        * Source/cmake/FindLibSeccomp.cmake: Removed.
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2016-05-06  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Unprefix CSS Grid Layout properties
        https://bugs.webkit.org/show_bug.cgi?id=157137

        Reviewed by Simon Fraser.

        Remove "-webkit" prefix from all the grid layout properties,
        including the display value.
        Update the source code to remove the prefix where it was used too.

        * ManualTests/css-grid-layout-item-with-huge-span-crash.html:

2016-05-02  Per Arne Vollan  <peavo@outlook.com>

        [Win] Enable IndexedDB.
        https://bugs.webkit.org/show_bug.cgi?id=157192

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsWin.cmake:

2016-05-02  Yoav Weiss  <yoav@yoav.ws>

        Move ResourceTiming behind a runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=157133

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitFeatures.cmake: Remove the PERFORMANCE_TIMELINE build flag.

2016-04-29  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r200232.
        https://bugs.webkit.org/show_bug.cgi?id=157189

        This change broke the Mac CMake build and its LayoutTest is
        failing and/or flaky on all platforms (Requested by ryanhaddad
        on #webkit).

        Reverted changeset:

        "Move ResourceTiming behind a runtime flag"
        https://bugs.webkit.org/show_bug.cgi?id=157133
        http://trac.webkit.org/changeset/200232

2016-04-29  Yoav Weiss  <yoav@yoav.ws>

        Move ResourceTiming behind a runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=157133

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitFeatures.cmake: Remove the PERFORMANCE_TIMELINE build flag.

2016-04-28  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r200185.
        https://bugs.webkit.org/show_bug.cgi?id=157131

        Bad temporary file added unintentionally (Requested by fredw
        on #webkit).

        Reverted changeset:

        "RenderMathMLOperator refactoring: introduce getBaseGlyph and
        remove parameter from getDisplayStyleLargeOperator"
        https://bugs.webkit.org/show_bug.cgi?id=156910
        http://trac.webkit.org/changeset/200185

2016-04-25  Ryosuke Niwa  <rniwa@webkit.org>

        Remove the build flag for template elements
        https://bugs.webkit.org/show_bug.cgi?id=157022

        Reviewed by Daniel Bates.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-04-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Enable the download attribute support
        https://bugs.webkit.org/show_bug.cgi?id=99025

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsGTK.cmake:

2016-04-18  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSCOnly] Implement RunLoop and remove glib dependency
        https://bugs.webkit.org/show_bug.cgi?id=155706

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsJSCOnly.cmake:

2016-04-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Menu list button doesn't use the text color from the theme
        https://bugs.webkit.org/show_bug.cgi?id=118234

        Reviewed by Darin Adler.

        * ManualTests/gtk/theme.html: Add a disabled combo test.

2016-04-13  Konstantin Tokarev  <annulen@yandex.ru>

        FindWebP should not be misguided by pkg-config when cross-compiling.
        https://bugs.webkit.org/show_bug.cgi?id=156544

        Reviewed by Michael Catanzaro.

        We should use pkg-config output only as a hint, like other modules do.

        * Source/cmake/FindWebP.cmake:

2016-04-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Rework the theming code for GTK+ 3.20
        https://bugs.webkit.org/show_bug.cgi?id=156333

        Reviewed by Michael Catanzaro.

        Add a manual test to check how themed elements are rendered.

        * ManualTests/gtk/theme.html: Added.

2016-04-11  Fujii Hironori  <Hironori.Fujii@jp.sony.com>

        [CMake] Make FOLDER property INHERITED
        https://bugs.webkit.org/show_bug.cgi?id=156460

        Reviewed by Brent Fulgham.

        Some CMake targets are not setting the FOLDER property. This causes the
        generated projects to be displayed in the top-level folder of the solution.

        Making the FOLDER property INHERITED ensures that all the targets
        are placed in their proper directories.

        * Source/cmake/OptionsCommon.cmake:
        Define FOLDER property as a inherited property.
        * Source/cmake/WebKitMacros.cmake:
        Do not set FOLDER target property.

2016-04-08  Alex Christensen  <achristensen@webkit.org>

        Progress towards running CMake WebKit2 on Mac
        https://bugs.webkit.org/show_bug.cgi?id=156426

        Reviewed by Tim Horton.

        * Source/cmake/OptionsMac.cmake:
        FTL works on Mac, so let's use it.
        * Source/cmake/WebKitMacros.cmake:

2016-04-07  Joseph Pecoraro  <pecoraro@apple.com>

        Remove ENABLE(ENABLE_ES6_CLASS_SYNTAX) guards
        https://bugs.webkit.org/show_bug.cgi?id=156384

        Reviewed by Ryosuke Niwa.

        * Source/cmake/WebKitFeatures.cmake:

2016-04-07  Dean Jackson  <dino@apple.com>

        [iOS] Play button on video is too dark
        https://bugs.webkit.org/show_bug.cgi?id=156383
        <rdar://problem/23540816>

        Reviewed by Simon Fraser.

        Add a manual test for iOS that shows the expected appearance
        of a video element. Unfortunately, due to the way we take
        snapshots on iOS within our test runner, we don't get the
        platform blurring effect, which means an automated test
        won't work.

        * ManualTests/ios/start-playback-button-appearance-expected.html: Added.
        * ManualTests/ios/start-playback-button-appearance.html: Added.

2016-04-06  Alex Christensen  <achristensen@webkit.org>

        Fix CMake DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=156305

        Reviewed by Daniel Bates.

        * Source/cmake/OptionsMac.cmake:

2016-04-05  Alex Christensen  <achristensen@webkit.org>

        Make CMake-generated binaries on Mac able to run
        https://bugs.webkit.org/show_bug.cgi?id=156268

        Reviewed by Daniel Bates.

        * Source/cmake/OptionsMac.cmake:

2016-04-04  Alejandro G. Castro  <alex@igalia.com>

        REGRESSION(r198492): [GTK] The WEB_RTC flag was not correctly added in some situations
        https://bugs.webkit.org/show_bug.cgi?id=156164

        Reviewed by Philippe Normand.

        Remove double space in the error message when openwebrtc is not present.

        * Source/cmake/OptionsGTK.cmake:

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

        Unreviewed. Bump GTK+ versions numbers.

        * Source/cmake/OptionsGTK.cmake:

2016-03-31  Daniel Bates  <dabates@apple.com>

        tool tip/alt. text appears when mouse is no longer hovering over link
        https://bugs.webkit.org/show_bug.cgi?id=24427
        <rdar://problem/8045235>

        Reviewed by Antonio Gomes.

        Although the bug no longer reproduces, add a manual test that can be used to determine if a
        tooltip for a hyperlink is shown when the cursor no longer hovers over it.

        * ManualTests/tooltip-when-mouse-not-directly-over-hyperlink.html: Added.

2016-03-29  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r198781.
        https://bugs.webkit.org/show_bug.cgi?id=155986

        broke windows clean build (Requested by alexchristensen on
        #webkit).

        Reverted changeset:

        "[Win] CMake seems to build all generated files every time"
        https://bugs.webkit.org/show_bug.cgi?id=155872
        http://trac.webkit.org/changeset/198781

2016-03-29  Brent Fulgham  <bfulgham@apple.com>

        [Win] CMake seems to build all generated files every time
        https://bugs.webkit.org/show_bug.cgi?id=155872

        Reviewed by Alex Christensen.

        This seems to be caused by Visual Studio being unhappy receiving multiple output targets
        for its custom build rules. If I limit the output to just the header file on Windows, the
        dependency check seems to do the right thing.

        * Source/cmake/WebKitMacros.cmake:

2016-03-28  Alex Christensen  <achristensen@webkit.org>

        Fix Mac Ninja build after r198766.

        * Source/cmake/WebKitMacros.cmake:
        WebCore_DERIVED_SOURCES are intentionally in a separate library to reduce linker line length.
        This is now only specific to WebKit2_DERIVED_SOURCES, so I'm moving it there.

2016-03-28  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build after r198766.

        * Source/cmake/WebKitMacros.cmake:
        Use the filename from the cpp so that WebCorePrefix.cpp and WebCoreDerivedSourcesPrefix.cpp 
        generate unique .pch files, even though they both include WebCorePrefix.h

2016-03-28  Alex Christensen  <achristensen@webkit.org>

        Fix Ninja build on Mac
        https://bugs.webkit.org/show_bug.cgi?id=151399

        Reviewed by Darin Adler.

        * Source/CMakeLists.txt:
        * Source/cmake/WebKitMacros.cmake:

2016-03-27  Daniel Bates  <dabates@apple.com>

        WebKit.xcworkspace "All Source" scheme always copies OS X WebKitSystemInterface libraries
        https://bugs.webkit.org/show_bug.cgi?id=155889

        Reviewed by Alexey Proskuryakov.

        Fixes an issue where building the "All Source" scheme in WebKit.xcworkspace would
        always copy the OS X WebKitSystemInterface libraries regardless of the selected
        base SDK. In particular, it would copy the OS X WebKitSystemInterface libraries
        when building with SDK iphonesimulator. WebKit.xcworkspace should copy the SDK-
        specific WebKitSystemInterface libraries.

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

2016-03-25  Brady Eidson  <beidson@apple.com>

        Soften push/replaceState frequency restrictions.
        <rdar://problem/25228439> and https://bugs.webkit.org/show_bug.cgi?id=155901
        
        Rubber-stamped by Timothy Hatcher.

        * ManualTests/state-objects-time-limit.html: Added.

2016-03-25  Daniel Bates  <dabates@apple.com>

        REGRESSION (r197358): WebKitSystemInterface.h copied into directory named "--llvm"
        https://bugs.webkit.org/show_bug.cgi?id=155838

        Reviewed by Alexey Proskuryakov.

        Do not pass command line flag --llvm when calling script copy-webkitlibraries-to-product-directory
        to avoid copying the WebKitSystemInterface libraries to an incorrect location. The --llvm flag was
        removed from copy-webkitlibraries-to-product-directory in <http://trac.webkit.org/changeset/197358>.

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

2016-03-25  Bill Ming  <mbbill@gmail.com>

        Detect correct number of processors on windows
        https://bugs.webkit.org/show_bug.cgi?id=155884

        Reviewed by Alex Christensen.

        * Tools/Scripts/run-jsc-stress-tests:

2016-03-25  Brent Fulgham  <bfulgham@apple.com>

        [Win] Improve CMake build performance 
        https://bugs.webkit.org/show_bug.cgi?id=155871
        <rdar://problem/24747822>

        Reviewed by Alex Christensen.

        Add a flag to the PROCESS_ALLINONE_FILE macro so that it does not remove
        the files contained in the passed all-in-one file, since this breaks
        dependency checking and generation of the derived sources from the IDL.
        Instead, include the header files in the project so that all files get
        generated.        
        
        * Source/cmake/WebKitMacros: Updated for 'DerivedSources.cpp' use case.

2016-03-25  Konstantin Tokarev  <annulen@yandex.ru>

        Turned on ENABLE_REQUEST_ANIMATION_FRAME by default for any port.
        https://bugs.webkit.org/show_bug.cgi?id=155882

        Reviewed by Michael Catanzaro.

        It was already enabled in all trunk ports, and is required for
        WebInspectorUI to work.

        * Source/cmake/OptionsGTK.cmake: Removed duplication of default value.
        * Source/cmake/OptionsMac.cmake: Ditto.
        * Source/cmake/WebKitFeatures.cmake: Turned
        ENABLE_REQUEST_ANIMATION_FRAME ON.

2016-03-24  Bill Ming  <mbbill@gmail.com>

        Determine architecture for running jsc stress tests on windows
        https://bugs.webkit.org/show_bug.cgi?id=155840

        Reviewed by Alex Christensen.

        * Tools/Scripts/run-jsc-stress-tests:

2016-03-23  Bill Ming  <mbbill@gmail.com>

        Fixed ninja build path.
        https://bugs.webkit.org/show_bug.cgi?id=155796

        Reviewed by Alex Christensen.

        * Tools/Scripts/build-webkit:

2016-03-21  Eric Carlson  <eric.carlson@apple.com>

        Add a WebRTC specific compile flag
        https://bugs.webkit.org/show_bug.cgi?id=155663

        Reviewed by Jer Noble.

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

2016-03-18  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, missing SET_AND_EXPOSE_TO_BUILD for USE_UDIS86 in JSCOnly port
        https://bugs.webkit.org/show_bug.cgi?id=155628

        * Source/cmake/OptionsJSCOnly.cmake:

2016-03-17  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSCOnly] Enable udis86
        https://bugs.webkit.org/show_bug.cgi?id=155628

        Reviewed by Carlos Garcia Campos.

        Enable udis86 for disassembler. The current flag name is incorrect.

        * Source/cmake/OptionsJSCOnly.cmake:

2016-03-14  Konstantin Tokarev  <annulen@yandex.ru>

        Restored ENABLE_WEBCORE option and used it in JSCOnly port.
        https://bugs.webkit.org/show_bug.cgi?id=155428

        Reviewed by Michael Catanzaro.

        This is a partial revert of r182624.

        * CMakeLists.txt:
        * Source/CMakeLists.txt:
        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/WebKitFS.cmake:

2016-03-13  Joseph Pecoraro  <pecoraro@apple.com>

        Remove ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX) guards
        https://bugs.webkit.org/show_bug.cgi?id=155417

        Reviewed by Yusuke Suzuki.

        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-03-13  Konstantin Tokarev  <annulen@yandex.ru>

        Added new port JSCOnly.
        https://bugs.webkit.org/show_bug.cgi?id=154512

        Reviewed by Michael Catanzaro.

        This port allows to build JavaScriptCore engine with minimal
        dependencies.

        * CMakeLists.txt:
        * Source/cmake/OptionsJSCOnly.cmake: Added.

2016-03-12  Myles C. Maxfield  <mmaxfield@apple.com>

        Delete dead SVG Font code
        https://bugs.webkit.org/show_bug.cgi?id=154718

        Reviewed by Antti Koivisto.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-03-12  Jeremy Huddleston Sequoia  <jeremyhu@apple.com>

        [GTK][Mac] Don't force ENABLE_INTROSPECTION=OFF on Mac
        https://bugs.webkit.org/show_bug.cgi?id=152650

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake:

2016-03-10  Frederic Wang  <fwang@igalia.org>

        [GTK] Add support for WOFF2
        https://bugs.webkit.org/show_bug.cgi?id=152616

        Reviewed by Carlos Garcia Campos.

        * Source/CMakeLists.txt: Build brotli and woff2 third-party libraries if WOFF2 is enabled.
        * Source/cmake/OptionsGTK.cmake: Always enable WOFF2 on GTK.

2016-03-09  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Fixed All-in-One build.
        https://bugs.webkit.org/show_bug.cgi?id=155241

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/WebKitMacros.cmake: Last item of WebCore_SOURCES was
        not removed in PROCESS_ALLINONE_FILE.

2016-03-08  Myles C. Maxfield  <mmaxfield@apple.com>

        [EFL] Enable the SVG -> OTF Font Converter
        https://bugs.webkit.org/show_bug.cgi?id=155192

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake:

2016-03-08  Myles C. Maxfield  <mmaxfield@apple.com>

        [GTK] Enable the SVG -> OTF Font Converter
        https://bugs.webkit.org/show_bug.cgi?id=155191

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsGTK.cmake:

2016-03-05  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix GTK/EFL build after r197575 and add mandatory GnuTLS dependency

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:

2016-03-02  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK.
        https://bugs.webkit.org/show_bug.cgi?id=154651

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitMacros.cmake: Used phony target instead of
        CMake's PRE_BUILD COMMAND feature because the latter actually
        generates pre-link target instead of pre-build.

2016-03-01  Alex Christensen  <achristensen@webkit.org>

        Reduce size of internal windows build output
        https://bugs.webkit.org/show_bug.cgi?id=154763

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsWin.cmake:

2016-03-01  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r197056.
        https://bugs.webkit.org/show_bug.cgi?id=154870

        broke win ews (Requested by alexchristensen on #webkit).

        Reverted changeset:

        "[cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK."
        https://bugs.webkit.org/show_bug.cgi?id=154651
        http://trac.webkit.org/changeset/197056

2016-02-29  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Allow using FindGLIB in case glib is optional dependency.
        https://bugs.webkit.org/show_bug.cgi?id=154796

        Reviewed by Michael Catanzaro.

        FindGLIB caused internal CMake error in case glibconfig.h is not
        found.

        * Source/cmake/FindGLIB.cmake:

2016-02-29  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r197297.
        https://bugs.webkit.org/show_bug.cgi?id=154810

        This change broke build of GTK from scratch (Requested by
        annulen on #webkit).

        Reverted changeset:

        "[cmake] Allow using FindGLIB in case glib is optional
        dependency."
        https://bugs.webkit.org/show_bug.cgi?id=154796
        http://trac.webkit.org/changeset/197297

2016-02-28  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Allow using FindGLIB in case glib is optional dependency.
        https://bugs.webkit.org/show_bug.cgi?id=154796

        Reviewed by Michael Catanzaro.

        FindGLIB caused internal CMake error in case GLIBCONFIG_INCLUDE_DIR is
        not defined.

        * Source/cmake/FindGLIB.cmake:

2016-02-25  Myles C. Maxfield  <mmaxfield@apple.com>

        [Win] [SVG -> OTF Converter] Support the SVG -> OTF Font Converter
        https://bugs.webkit.org/show_bug.cgi?id=143402

        Reviewed by Alex Christensen.

        Turn on by default, and turn on for Windows.

        EFL and GTK already explicitly disable it in OptionsEfl.cmake and OptionsGTK.cmake.

        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2016-02-24  Nikos Andronikos  <nikos.andronikos-webkit@cisra.canon.com.au>

        [web-animations] Add AnimationTimeline, DocumentTimeline and add extensions to Document interface
        https://bugs.webkit.org/show_bug.cgi?id=151688

        Reviewed by Dean Jackson.

        Enables the WEB_ANIMATIONS compiler switch.

        * Source/cmake/OptionsWin.cmake:

2016-02-24  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK.
        https://bugs.webkit.org/show_bug.cgi?id=154651

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitMacros.cmake:

2016-02-22  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Moved library setup code to WEBKIT_FRAMEWORK macro.
        https://bugs.webkit.org/show_bug.cgi?id=154450

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitMacros.cmake:

2016-02-18  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Bump internal jhbuild versions to 1.6.3
        https://bugs.webkit.org/show_bug.cgi?id=149594

        Reviewed by Michael Catanzaro.

        * Source/cmake/FindGStreamer.cmake: Check gst-gl version for the latest stable release of GStreamer.

2016-02-18  Anders Carlsson  <andersca@apple.com>

        Get rid of the "All Source (target WebProcess)" scheme.

        Rubber-stamped by Dan Bernstein.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme: Removed.

2016-02-18  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Remove LLVM support
        https://bugs.webkit.org/show_bug.cgi?id=154370

        Reviewed by Csaba Osztrogonác.

        After switching all CMake ports to B3, this was only needed for the LLVM disassembler, which
        has been removed from JSC. Feel free to bring this back if restoring the LLVM disassembler,
        but for the time being this is dead code.

        * Source/cmake/FindLLVM.cmake: Removed.
        * Source/cmake/OptionsCommon.cmake:

2016-02-18  Joonghun Park  <jh718.park@samsung.com>

        [CMake] Remove meaningless conditional statements in CMakeLists.txt
        https://bugs.webkit.org/show_bug.cgi?id=153778

        Reviewed by Csaba Osztrogonác.

        * CMakeLists.txt:
        Use CMAKE_FOO_OUTPUT_DIRECTORY located in CMakeLists.txt as default value.
        And remove conditional statements which has enclosed these one
        because they don't have meaning anymore.

2016-02-15  Alex Christensen  <achristensen@webkit.org>

        Re-enable INTL on WinCairo
        https://bugs.webkit.org/show_bug.cgi?id=154256

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsWin.cmake:
        Peavo updated icu and it works, so let's re-enable INTL on WinCairo to catch Windows build failures.

2016-02-12  Csaba Osztrogonác  <ossy@webkit.org>

        [EFL][GTK] Fix ENABLE(SVG_OTF_CONVERTER) build
        https://bugs.webkit.org/show_bug.cgi?id=154165

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:

2016-02-11  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Consolidate TextureMapper file and include dir lists.
        https://bugs.webkit.org/show_bug.cgi?id=154106

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsEfl.cmake: Expose USE_TEXTURE_MAPPER_GL to
        CMake code.
        * Source/cmake/OptionsWinCairo.cmake: Ditto.

2016-02-09  Csaba Osztrogonác  <ossy@webkit.org>

        [GTK][EFL] Fix several build configuration related to SamplingProfiler after r196245
        https://bugs.webkit.org/show_bug.cgi?id=154033

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitFeatures.cmake:

2016-02-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.11.5 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2016-02-07  Yusuke Suzuki  <utatane.tea@gmail.com>

        [GTK][EFL] Enable SamplingProfiler
        https://bugs.webkit.org/show_bug.cgi?id=153638

        Reviewed by Michael Catanzaro.

        Enable SamplingProfiler in GTK and EFL.
        And added option to CMake to switch this from the build command.

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

2016-02-07  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Move LLVM detection for LLVMDisassembler to OptionsCommon.cmake
        https://bugs.webkit.org/show_bug.cgi?id=153961

        Reviewed by Michael Catanzaro.

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

2016-02-04  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed non X86_64 buildfix after r196077.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:

2016-02-03  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK][EFL] Switch FTL to B3
        https://bugs.webkit.org/show_bug.cgi?id=153478

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:

2016-02-02  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed attempt to fix Mac CMake build after r195999.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        Add ENABLE_RESOURCE_USAGE to CMake builds.

2016-02-02  Alejandro G. Castro  <alex@igalia.com>

        [GTK][EFL] Upgrade OpenWebRTC dependency
        https://bugs.webkit.org/show_bug.cgi?id=153489

        Reviewed by Philippe Normand.

        * Source/cmake/FindOpenWebRTC.cmake: Bump OpenWebRTC dependency,
        required to make the mediastream work.

2016-02-01  Alex Christensen  <achristensen@webkit.org>

        [Win] WTFHeaderDetection.h no longer needed
        https://bugs.webkit.org/show_bug.cgi?id=153753
        rdar://problem/24434627

        Reviewed by Darin Adler.

        * Source/cmake/WebKitFS.cmake:

2016-01-31  Joonghun Park  <jh718.park@samsung.com>

        [EFL] All API tests are broken on 15.10
        https://bugs.webkit.org/show_bug.cgi?id=153528

        Reviewed by Gyuyoung Kim.

        * CMakeLists.txt: Having include(WebKitCommon) statement follow
        CMAKE_FOO_OUTPUT_DIRECTORY otherwise all the API tests gets blocked.

2016-01-30  Yusuke Suzuki  <utatane.tea@gmail.com>

        Enable SamplingProfiler on POSIX environment
        https://bugs.webkit.org/show_bug.cgi?id=153584

        Reviewed by Michael Saboff.

        Add features.h header check. It will define __GLIBC__.

        * Source/cmake/OptionsCommon.cmake:

2016-01-27  Alexey Proskuryakov  <ap@apple.com>

        Remove ENABLE_CURRENTSRC
        https://bugs.webkit.org/show_bug.cgi?id=153545

        Reviewed by Simon Fraser.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2016-01-25  Alex Christensen  <achristensen@webkit.org>

        Fix internal Windows build
        https://bugs.webkit.org/show_bug.cgi?id=153469

        Reviewed by Brent Fulgham.

        * Source/cmake/WebKitMacros.cmake:
        Pass the GPERF_EXECUTABLE that we found to make-hash-tools.pl.

2016-01-23  Aaron Chu  <arona.chu@gmail.com>

        Web Inspector: AXI: node-link-list should be collapsible
        https://bugs.webkit.org/show_bug.cgi?id=130911
        
        Added a manual test to test the node list in the Accessibility Inspector

        Reviewed by Timothy Hatcher.

        * ManualTests/accessibility/collapsible-node-link-list.html: Added.

2016-01-22  Alex Christensen  <achristensen@webkit.org>

        Fix internal Windows build
        https://bugs.webkit.org/show_bug.cgi?id=153385
        rdar://problem/24310408

        Reviewed by Brian Weinstein.

        * Source/cmake/WinTools.make:
        * Source/cmake/tools/vsprops: Copied from WebKitLibraries/win/tools/vsprops.
        These property sheets are needed for some projects that are not in this repository
        and don't use CMake in the official build.  We want to leave them unchanged for now.

2016-01-22  Alex Christensen  <achristensen@webkit.org>

        Only set CMake output directories if they aren't already set
        https://bugs.webkit.org/show_bug.cgi?id=153373

        Reviewed by Michael Catanzaro.

        * CMakeLists.txt:
        r195242 caused Windows builds to copy files to bin instead of bin64.
        CMAKE_RUNTIME_OUTPUT_DIRECTORY is being set in OptionsWin.cmake, and this was now resetting it.
        This also makes it so you can set these variables by command line.

2016-01-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.11.4 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2016-01-18  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Duplicate attempts to find software during cmake stage
        https://bugs.webkit.org/show_bug.cgi?id=153211

        Reviewed by Martin Robinson.

        * CMakeLists.txt: Remove duplication of commands in WebKitCommon.cmake.
        * Source/cmake/WebKitCommon.cmake: Guard the entire file so it runs only once.

2016-01-17  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Do not build bmalloc when USE_SYSTEM_MALLOC is ON
        https://bugs.webkit.org/show_bug.cgi?id=153190

        Reviewed by Csaba Osztrogonác.

        Build bmalloc when NOT USE_SYSTEM_MALLOC rather than when NOT WIN32.

        * Source/CMakeLists.txt:
        * Source/cmake/OptionsWin.cmake:

2016-01-16  Jeremy Huddleston Sequoia  <jeremyhu@apple.com>

        [GTK] Use -Wl,-all_load on darwin to include contents of all static archives

        https://bugs.webkit.org/show_bug.cgi?id=153117

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake:

2016-01-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [CMake] Do not use LLVM static libraries for FTL JIT
        https://bugs.webkit.org/show_bug.cgi?id=151559

        Reviewed by Michael Catanzaro.

        Also export LLVM_LIBRARIES variable that can be used to prefer
        linking to the llvm dynamic libraries.

        * Source/cmake/FindLLVM.cmake:

2016-01-13  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Add comments above options declarations in OptionsGTK.cmake
        https://bugs.webkit.org/show_bug.cgi?id=153074

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsGTK.cmake:

2016-01-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.11.3 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2016-01-12  Ryosuke Niwa  <rniwa@webkit.org>

        Add a build flag for custom element
        https://bugs.webkit.org/show_bug.cgi?id=153005

        Reviewed by Alex Christensen.

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

2016-01-08  Alex Christensen  <achristensen@webkit.org>

        Fix internal Windows build
        https://bugs.webkit.org/show_bug.cgi?id=152937

        Reviewed by Brent Fulgham.

        * Source/cmake/WebKitCommon.cmake:
        Try looking in the default cygwin installation directory for executables like bison, flex, gperf, and ruby.
        This is needed on Windows builds that are not driven by cygwin, but need to use the cygwin installations of these tools.
        This is the effective equivalent of this line in WebKitLibraries/win/tools/vsprops/common.props in the old build system:
        set PATH=%SystemDrive%\cygwin\bin;%PATH%

2016-01-06  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [EFL] Set WebKit2 process output name
        https://bugs.webkit.org/show_bug.cgi?id=152773

        Reviewed by Benjamin Poulain.

        If we add *WebKit* prefix to each WK2 process, it is more clear when checking what process is running.
        So this patch sets wk2 process output name.

        * Source/cmake/OptionsEfl.cmake:

2016-01-05  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Remove USE_UDIS86 variable
        https://bugs.webkit.org/show_bug.cgi?id=152731

        Reviewed by Gyuyoung Kim.

        Remove the USE_UDIS86 variable in CMake files. The specific build guard
        is now enabled by default in Source/WTF/wtf/Platform.h, so the handling
        in CMake isn't required anymore. The Udis86-specific files have to be
        built unconditionally now, though.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:

2016-01-04  Alex Christensen  <achristensen@webkit.org>

        Fix Mac CMake build after r194454.

        * Source/cmake/OptionsMac.cmake:
        _macosx, _iphoneos, and _iphonesimulator are used in FeatureDefines.xcconfig but won't be used in CMake.
        If we actually switch to CMake, we will need to verify that all the feature enabling is equivalent, and it isn't right now.

2015-12-31  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK][CMake] Do not override default values of build options with the default value
        https://bugs.webkit.org/show_bug.cgi?id=152615

        Reviewed by Martin Robinson.

        Override the default value of build options only when the default value for the GTK+ port
        is actually different than the default value in WebKitFeatures.cmake. This way we don't
        accidentally override changes to default values in WebKitFeatures.cmake. We should use the
        values in WebKitFeatures.cmake except when we make an active choice to do otherwise.

        * Source/cmake/OptionsGTK.cmake:

2015-12-31  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Add error checking to WEBKIT_OPTION_DEFAULT_PORT_VALUE et. al.
        https://bugs.webkit.org/show_bug.cgi?id=144069

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsWin.cmake:
        Do not set options that no longer exist.
        * Source/cmake/WebKitFeatures.cmake:
        Add error checking to ensure that option names passed to WEBKIT_OPTION_DEFAULT_PORT_VALUE,
        WEBKIT_OPTION_CONFLICT, and WEBKIT_OPTION_DEPEND are actually valid options that have been
        previously-defined. Also, add ENABLE_SVG_OTF_CONVERTER build option, defaulted to off since
        no CMake port was using it.

2015-12-31  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Add error checking to catch option manipulation after WEBKIT_OPTION_END
        https://bugs.webkit.org/show_bug.cgi?id=152611

        Reviewed by Martin Robinson.

        If WEBKIT_OPTION_DEFINE is called after WEBKIT_OPTION_END, the option never makes its way
        into FEATURE_DEFINES and so will be inconsistently set (available to most of the build, but
        not to the DOM bindings generator, for example).

        If WEBKIT_OPTION_DEFAULT_PORT_VALUE, WEBKIT_OPTION_CONFLICT, or WEBKIT_OPTION_DEPEND are
        called after WEBKIT_OPTION_END, they don't do anything.

        Add error checking to catch these bugs.

        * Source/cmake/WebKitFeatures.cmake:

2015-12-30  Philippe Normand  <pnormand@igalia.com>

        [GTK][Mac] Disable gtk-doc
        https://bugs.webkit.org/show_bug.cgi?id=150798

        Reviewed by Michael Catanzaro.

        * Source/PlatformGTK.cmake: gtkdoc-scangobj fails due to a clang
        link error on Mac, so for now disable gtk-doc support on that
        platform.
        * Source/cmake/OptionsGTK.cmake: Ditto.

2015-12-23  Andy VanWagoner  <andy@instructure.com>

        [INTL] Implement Intl.DateTimeFormat.prototype.resolvedOptions ()
        https://bugs.webkit.org/show_bug.cgi?id=147603

        Reviewed by Benjamin Poulain.

        * Source/cmake/OptionsWin.cmake: Disable INTL on Windows for now

2015-12-16  Youenn Fablet  <youenn.fablet@crf.canon.fr>

        [Fetch API] Add fetch API compile time flag
        https://bugs.webkit.org/show_bug.cgi?id=152254

        Reviewed by Darin Adler.

        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-12-10  Brent Fulgham  <bfulgham@apple.com>

        [Win] Support building under Cygwin or native Perl
        https://bugs.webkit.org/show_bug.cgi?id=152145
        <rdar://problem/23839868>

        Reviewed by David Kilzer.

        * Source/cmake/tools/scripts/auto-version.pl: Correct handling of mixed DOS filenames when used in a
        Cygwin context.
        

2015-12-09  Daniel Bates  <dabates@apple.com>

        [iOS] Suspend and resume device motion and device orientation updates when page is hidden and visible, respectively
        https://bugs.webkit.org/show_bug.cgi?id=151840
        <rdar://problem/23753931>

        Reviewed by Simon Fraser.

        Add a manual test that can be used to verify that we suspend dispatching device motion and
        device orientation events when the page is hidden.

        * ManualTests/ios/resources/suspend-orientation-and-motion-events-when-page-becomes-hidden.js: Added.
        (resetTest):
        (checkEvent):
        (handleVisibilityChange):
        * ManualTests/ios/suspend-orientation-and-motion-events-when-page-becomes-hidden.html: Added.

2015-12-07  Alex Christensen  <achristensen@webkit.org>

        Fix internal Windows build
        https://bugs.webkit.org/show_bug.cgi?id=151950

        Reviewed by Brent Fulgham.

        * Source/cmake/tools/scripts/auto-version.pl:

2015-12-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
        https://bugs.webkit.org/show_bug.cgi?id=150792

        Reviewed by Saam Barati.

        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-12-01  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r192914.
        https://bugs.webkit.org/show_bug.cgi?id=151734

        JSC tests for this change are failing on 32 and 64-bit bots
        (Requested by ryanhaddad on #webkit).

        Reverted changeset:

        "[ES6] Implement LLInt/Baseline Support for ES6 Generators and
        enable this feature"
        https://bugs.webkit.org/show_bug.cgi?id=150792
        http://trac.webkit.org/changeset/192914

2015-12-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
        https://bugs.webkit.org/show_bug.cgi?id=150792

        Reviewed by Saam Barati.

        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-11-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.11.2 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2015-11-20  Alex Christensen  <achristensen@webkit.org>

        Remove NETWORK_PROCESS compile flag
        https://bugs.webkit.org/show_bug.cgi?id=151512

        Reviewed by Tim Horton.

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

2015-11-20  Csaba Osztrogonác  <ossy@webkit.org>

        [EFL] Enable FTL JIT by default on X86_64
        https://bugs.webkit.org/show_bug.cgi?id=143822

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsEfl.cmake:

2015-11-19  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r192667 and r192668.
        https://bugs.webkit.org/show_bug.cgi?id=151476

        broke api tests (Requested by alexchristensen on #webkit).

        Reverted changesets:

        "Remove the non-NetworkProcess configurations"
        https://bugs.webkit.org/show_bug.cgi?id=151418
        http://trac.webkit.org/changeset/192667

        "Fix GTK Build after r192667."
        http://trac.webkit.org/changeset/192668

2015-11-19  Alex Christensen  <achristensen@webkit.org>

        Remove the non-NetworkProcess configurations
        https://bugs.webkit.org/show_bug.cgi?id=151418

        Reviewed by Geoffrey Garen.

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

2015-11-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r192459): [GTK] User agent string is broken after r192459
        https://bugs.webkit.org/show_bug.cgi?id=151347

        Reviewed by Žan Doberšek.

        Pass UA version numbers as strings to the build.

        * Source/cmake/OptionsGTK.cmake:

2015-11-16  Alex Christensen  <achristensen@webkit.org>

        Fix CMake build and make PluginProcess executable
        https://bugs.webkit.org/show_bug.cgi?id=151332

        Reviewed by Tim Horton.

        * Source/cmake/OptionsMac.cmake:

2015-11-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use FTL by default when LLVM 3.7 is available
        https://bugs.webkit.org/show_bug.cgi?id=142128

        Reviewed by Csaba Osztrogonác.

        Enable FTL by default when architecture is X86_64. It requires
        LLVM 3.7, but can be disabled manually as a cmake configure
        argument.

        * Source/cmake/FindLLVM.cmake: In debian llvm-config is only
        available if the metapackage is installed and it points to
        llvm-config-3.5. So, here we check first if the llvm-config is
        from a recent enough version, and if not we check several
        llvm-config-<version> programs, so this should work on any distro.
        * Source/cmake/OptionsGTK.cmake: Enable FTL by default when
        target architecture is X86_64, and check the LLVM is at least
        3.7. The option is now public, since we want people to be able to
        disable it manually.

2015-11-11  Anders Carlsson  <andersca@apple.com>

        Enable cross-platform context menus by default
        https://bugs.webkit.org/show_bug.cgi?id=151173

        Reviewed by Tim Horton.

        * Source/cmake/OptionsEfl.cmake:

2015-11-12  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(SATURATED_LAYOUT_ARITHMETIC) guards
        https://bugs.webkit.org/show_bug.cgi?id=150972

        Reviewed by Darin Adler.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-11-11  Philippe Normand  <pnormand@igalia.com>

        [GTK][Mac] don't install .frameworks
        https://bugs.webkit.org/show_bug.cgi?id=151136

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitMacros.cmake: Don't install framework files when building the GTK port on Mac.

2015-11-10  Pranjal Jumde  <pjumde@apple.com>

        Fixed crash loading Mozilla layout test editor/libeditor/crashtests/431086-1.xhtml.
        https://bugs.webkit.org/show_bug.cgi?id=150252
        <rdar://problem/23149470>

        Reviewed by Brent Fulgham.


        * Source/WebCore/editing/ios/EditorIOS.mm
        * Source/WebCore/editing/mac/EditorMac.mm
          In Editor::fontForSelection moved the node removal code, so that the
          node is only removed if style is not NULL.
        * Source/WebCore/editing/cocoa/EditorCocoa.mm
          In Editor::styleForSelectionStart checking if the parentNode can 
          accept the styleElement node.
        * LayoutTests/editing/execCommand/150252.xhtml
        * LayoutTests/editing/execCommand/150252_minimal.xhtml
        * LayoutTests/editing/execCommand/150252-expected.txt
        * LayoutTests/editing/execCommand/150252_minimal-expected.txt

2015-11-09  Pranjal Jumde  <pjumde@apple.com>

        Fixed crash loading Mozilla layout test editor/libeditor/crashtests/431086-1.xhtml.
        https://bugs.webkit.org/show_bug.cgi?id=150252
        <rdar://problem/23149470>

        Reviewed by Brent Fulgham.

        * Source/WebCore/editing/ios/EditorIOS.mm
        * Source/WebCore/editing/mac/EditorMac.mm
          In Editor::fontForSelection moved the node removal code, so that the
          node is only removed if style is not NULL.
        * LayoutTests/editing/execCommand/150252.xhtml
        * LayoutTests/editing/execCommand/150252_minimal.xhtml
        * LayoutTests/editing/execCommand/150252-expected.txt
        * LayoutTests/editing/execCommand/150252_minimal-expected.txt

2015-11-06  Daniel Bates  <dabates@apple.com>

        Teach Makefile to build LayoutTestRelay when building for iOS Simulator
        https://bugs.webkit.org/show_bug.cgi?id=150849

        Reviewed by Alexey Proskuryakov.

        Add support for overriding the user-provided arguments SDKROOT and ARCHS
        on a per Makefile basis.

        * Makefile.shared:

2015-11-06  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, GTK build fix after r192095.

        * Source/cmake/FindGTK3.cmake:

2015-11-06  Philip Chimento  <philip.chimento@gmail.com> and Michael Catanzaro <mcatanzaro@igalia.com>

        [GTK] Re-enable Quartz backend on cmake build system
        https://bugs.webkit.org/show_bug.cgi?id=144561

        Reviewed by Philippe Normand.

        * Source/cmake/FindGTK3.cmake: Set GTK3_SUPPORTS_QUARTZ based on
        the presence of of gtk+-quartz-3.0 module.
        * Source/cmake/OptionsGTK.cmake: Reintroduce the
        ENABLE_QUARTZ_TARGET option to the CMake build, for building the
        GTK+ Quartz backend on OS X.

2015-11-05  Nikos Andronikos  <nikos.andronikos-webkit@cisra.canon.com.au>

        Add runtime and compile time flags for enabling Web Animations API and model.
        https://bugs.webkit.org/show_bug.cgi?id=150914

        Reviewed by Benjamin Poulain.

        Add ENABLE_WEB_ANIMATIONS compile time flag, runtime flag webAnimationsEnabled and Expose WK2 preference for runtime flag.

        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-11-03  Brent Fulgham  <bfulgham@apple.com>

        [Win] CMake build update.

        Rubberstamped by Tim Horton.

        * Source/PlatformWin.cmake: Add internal tool to build
        rules for internal use.

2015-11-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.11.1 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2015-11-02  Philippe Normand  <pnormand@igalia.com>

        [Mac][GTK] Disable Ninja response file support
        https://bugs.webkit.org/show_bug.cgi?id=150801

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsCommon.cmake: The OSX toolchain doesn't
        support response files, so instruct Ninja to not generate those.

2015-11-02  Csaba Osztrogonác  <ossy@webkit.org>

        Fix the FTL JIT build with system LLVM on Linux
        https://bugs.webkit.org/show_bug.cgi?id=150795

        Reviewed by Filip Pizlo.

        * Source/cmake/FindLLVM.cmake:

2015-11-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Bump GTK+ versions numbers.

        * Source/cmake/OptionsGTK.cmake:

2015-11-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6] Support Generator Syntax
        https://bugs.webkit.org/show_bug.cgi?id=150769

        Reviewed by Geoffrey Garen.

        Added ENABLE_ES6_GENERATORS flag.

        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-10-30  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [EFL] Add Shadow DOM feature
        https://bugs.webkit.org/show_bug.cgi?id=150611

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitFeatures.cmake: Add ENABLE_SHADOW_DOM cmake variable.

2015-10-29  Alex Christensen  <achristensen@webkit.org>

        Fix Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=150686

        Reviewed by Filip Pizlo.

        * Source/cmake/WebKitMacros.cmake:

2015-10-28  Alex Christensen  <achristensen@webkit.org>

        Compile and link with CMake on Mac
        https://bugs.webkit.org/show_bug.cgi?id=150632

        Reviewed by Tim Horton.

        * Source/cmake/OptionsMac.cmake:

2015-10-26  Dana Burkart  <dburkart@apple.com>

        `make analyze` should build using the debug configuration
        https://bugs.webkit.org/show_bug.cgi?id=150571

        Reviewed by Lucas Forschler.

        * Makefile.shared:

2015-10-26  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, rolling out r191576.

        broke the http/tests/media tests

        Reverted changeset:

        "[GStreamer] Bump internal jhbuild versions to 1.6.0"
        https://bugs.webkit.org/show_bug.cgi?id=149594
        http://trac.webkit.org/changeset/191576

2015-10-26  ChangSeok Oh  <changseok.oh@collabora.com>

        [GStreamer] Bump internal jhbuild versions to 1.6.0
        https://bugs.webkit.org/show_bug.cgi?id=149594

        Reviewed by Philippe Normand.

        Bump up the minimum reqirement version of gstreamer-gl to 1.6.0.

        * Source/cmake/FindGStreamer.cmake:

2015-10-22  Philippe Normand  <pnormand@igalia.com>

        [GTK][Mac] ICU-related build fixes
        https://bugs.webkit.org/show_bug.cgi?id=150032

        Rubber-stamped by Darin Adler.

        * Source/cmake/FindICU.cmake: Use pkg-config to hint at icu-i18n's library location.

2015-10-20  Yoav Weiss  <yoav@yoav.ws>

        Rename the PICTURE_SIZES flag to CURRENTSRC
        https://bugs.webkit.org/show_bug.cgi?id=150275

        Reviewed by Dean Jackson.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-10-14  Tomas Popela  <tpopela@redhat.com>

        [GTK][EFL] Fix build with cmake 3.4
        https://bugs.webkit.org/show_bug.cgi?id=150117

        Explicitely include the CheckIncludeFiles module before using
        the CHECK_INCLUDE_FILES command.

        Reviewed by Žan Doberšek.

        * Source/cmake/FindOpenGL.cmake:
        * Source/cmake/FindWebP.cmake:
        * Source/cmake/OptionsEfl.cmake:

2015-10-13  Dean Jackson  <dino@apple.com>

        Device motion and orientation should only be visible from the main frame's security origin
        https://bugs.webkit.org/show_bug.cgi?id=150072
        <rdar://problem/23082036>

        Reviewed by Brent Fulgham.

        Add a manual test for cross-origin device orientation events, while
        we're waiting on the mock client to be supported everywhere.

        * ManualTests/deviceorientation-child-frame.html: Added.
        * ManualTests/deviceorientation-main-frame-only.html: Added.

2015-10-12  Philip Chimento  <philip.chimento@gmail.com>

        [GTK] OSX linker doesn't understand --whole-archive
        https://bugs.webkit.org/show_bug.cgi?id=144557

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsGTK.cmake: Turn the macro
        ADD_WHOLE_ARCHIVE_TO_LIBRARIES into a no-op on Darwin systems,
        because XCode's linker doesn't have the --whole-archive option.

2015-10-12  Philip Chimento  <philip.chimento@gmail.com>

        [GTK] Use --version-script only on Linux
        https://bugs.webkit.org/show_bug.cgi?id=144555

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsGTK.cmake: Don't add --version-script
        option on Darwin (whose linker doesn't support it.)

2015-10-09  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [CMake] Remove ENABLE_SUBPIXEL_LAYOUT macro
        https://bugs.webkit.org/show_bug.cgi?id=149947

        Reviewed by Csaba Osztrogonác.

        ENABLE(SUBPIXEL_LAYOUT) was removed though, it is still alive in .cmake.
        Removed it.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-10-06  Emanuele Aina  <emanuele.aina@collabora.com>

        Fix ENABLE_OPENGL=OFF builds
        https://bugs.webkit.org/show_bug.cgi?id=146511

        Reviewed by Darin Adler.

        * Source/cmake/OptionsGTK.cmake: Make ENABLE_WAYLAND_TARGET depend on
        ENABLE_OPENGL due to EGL usage.

2015-10-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        Convert focused-input-should-assist-on-touch.html into an automated test
        https://bugs.webkit.org/show_bug.cgi?id=149724

        Reviewed by Simon Fraser.

        Remove a manual test that can now be rewritten as an automated test.

        * ManualTests/ios/focused-input-should-assist-on-touch.html: Removed.

2015-10-01  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed CMake build fix.

        * Source/cmake/OptionsWin.cmake: Clean up options setttings,
        and make sure exception handling is turned off.

2015-09-30  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix after CMake conversion.

        * Source/cmake/OptionsWin.cmake: Correct some Windows build flags.

2015-09-29  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK][CMake] Warning about CMP0058
        https://bugs.webkit.org/show_bug.cgi?id=149627

        Reviewed by Martin Robinson.

        Opt-in to the new behavior for CMP0058.

        * CMakeLists.txt:

2015-09-28  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix for internal systems.

        * Source/cmake/OptionsWin.cmake: Preferentially use the build target
        location for include and link libraries, rather than the system locations.

2015-09-28  Alex Christensen  <achristensen@webkit.org>

        Build WK1 with CMake on Mac
        https://bugs.webkit.org/show_bug.cgi?id=149604

        Reviewed by Chris Dumez.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitMacros.cmake:
        ObjC bindings now have their own list of IDL files, but some of them still don't generate a .mm file.

2015-09-25  Alex Christensen  <achristensen@webkit.org>

        Clean up CMake build on Mac
        https://bugs.webkit.org/show_bug.cgi?id=149573

        Reviewed by Chris Dumez.

        * Source/cmake/OptionsMac.cmake:

2015-09-25  Alex Christensen  <achristensen@webkit.org>

        [Win] Switch to CMake
        https://bugs.webkit.org/show_bug.cgi?id=148111

        Reviewed by Brent Fulgham.

        * Source/cmake/WinTools.make: Added.
        * Source/cmake/tools: Added.
        * Source/cmake/tools/scripts: Copied from WebKitLibraries/win/tools/scripts.
        * Source/cmake/tools/scripts/auto-version.pl: Copied from WebKitLibraries/win/tools/scripts/auto-version.pl.

2015-09-25  Alex Christensen  <achristensen@webkit.org>

        Prepare internal AppleWin build for CMake
        https://bugs.webkit.org/show_bug.cgi?id=149570

        Reviewed by Brent Fulgham.

        * Source/PlatformWin.cmake:
        Include internal CMake files if they exist.

2015-09-22  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        Add a file of pointer-lock to cmake ports
        https://bugs.webkit.org/show_bug.cgi?id=149453

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsEfl.cmake: Add a ENABLE_POINTER_LOCK.

2015-09-22  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [CMake] Allow to enable OpenMP support.
        https://bugs.webkit.org/show_bug.cgi?id=149457

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsCommon.cmake: Add the option USE_OPENMP that
        will enable the support for OpenMP. Currently this is only used as
        an alternative implementation to native threads for the parallelization
        of the SVG filters. But name the option with a generic name (USE_OPENMP)
        as it could be also used to enable future features that depend on OpenMP.

2015-09-22  Ryuan Choi  <ryuan.choi@navercorp.com>

        [EFL] Build break when DEVELOPER_MODE is OFF
        https://bugs.webkit.org/show_bug.cgi?id=149448

        Reviewed by Gyuyoung Kim.

        Since r187191, DatabaseProcessMainUnix is missing in symbol filter.

        * Source/cmake/eflsymbols.filter:

2015-09-21  Alex Christensen  <achristensen@webkit.org>

        Disable PICTURE_SIZES in Windows CMake build like r189745.
        https://bugs.webkit.org/show_bug.cgi?id=149125

        * Source/cmake/OptionsWin.cmake:
        Do the same thing as r189745.

2015-09-20  Youenn Fablet  <youenn.fablet@crf.canon.fr>

        Removing XHR_TIMEOUT guard

        Remove XHR_TIMEOUT compilation guard
        https://bugs.webkit.org/show_bug.cgi?id=149260

        Reviewed by Benjamin Poulain.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-09-18  Alex Christensen  <achristensen@webkit.org>

        Fix tests on Windows after switching to CMake.
        https://bugs.webkit.org/show_bug.cgi?id=149339

        Reviewed by Brent Fulgham.

        * Source/PlatformWin.cmake: Added to copy WebInspectorUI.

2015-09-17  Alex Christensen  <achristensen@webkit.org>

        Fix Windows EWS build after r189934.

        * Source/cmake/OptionsWin.cmake:
        Use WEBKIT_LIBRARIES environment variable if it exists.
        We have the WebKitLibraries directory separate from the repository copy on the EWS bots.

2015-09-15  Ryosuke Niwa  <rniwa@webkit.org>

        Add ShadowRoot interface and Element.prototype.attachShadow
        https://bugs.webkit.org/show_bug.cgi?id=149187

        Reviewed by Antti Koivisto.

        * Source/cmake/OptionsGTK.cmake:

2015-09-15  Csaba Osztrogonác  <ossy@webkit.org>

        [cmake] Enable debug fission only if it is supported
        https://bugs.webkit.org/show_bug.cgi?id=149161

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsCommon.cmake:

2015-09-14  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=149123

        Reviewed by Chris Dumez.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        Defined and enabled some more features needed on Mac.
        * Source/cmake/WebKitMacros.cmake:
        Objective C bindings need special changes when generating:
        Some of the bindings do not generate a .mm file but the header is needed.
        Some of the bindings do generate a .mm file that doesn't compile but the header is needed.
        In order to handle these cases, it is necessary to change the GENERATE_BINDINGS macro just for ObjC.

2015-09-08  Daniel Bates  <dabates@apple.com>

        Convert manual test added in http://trac.webkit.org/changeset/70321 to an automated test
        https://bugs.webkit.org/show_bug.cgi?id=74729
        <rdar://problem/22550195>

        Reviewed by Jon Honeycutt.

        * ManualTests/compositing/resources/composited-subframe.html: Removed.
        * ManualTests/compositing/show-composited-iframe-on-back-button.html: Removed.

2015-09-06  Andy Estes  <aestes@apple.com>

        WebKit.xcworkspace should be be able to build iOS platforms
        https://bugs.webkit.org/show_bug.cgi?id=148881

        Reviewed by Daniel Bates.

        Since we don't want to create platform-specific schemes, all projects in the workspace's schemes need to build
        for all supported platforms.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Tools.xcscheme: Removed the DumpRenderTree target since its All
        target was already included. Removed the WebKitTestRunner target and replaced it with its All target.

2015-09-04  Jon Honeycutt  <jhoneycutt@apple.com>

        [iOS] Need a test for bug #145539: Uploading an animated GIF from the
        photo library uploads a JPEG
        https://bugs.webkit.org/show_bug.cgi?id=148849

        Reviewed by Daniel Bates.

        * ManualTests/ios/image-file-uploads-as-original-type.html: Added.
        On the Mac, file upload tests use EventSender::beginDragWithFiles. This
        functionality doesn't exist on iOS, so we'll add a manual test.
        This tests that the first few bytes of the selected file are "GIF".

2015-09-04  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        Follow-up patch for r189343.
        https://bugs.webkit.org/show_bug.cgi?id=148795

        Rubber-stamped by Csaba Osztrogonác.

        * Source/cmake/WebKitCommon.cmake: Relax the Ruby version requirement
        to 1.9, since this seems to be enough to fix the build failure.
        And 2.0 may cause problems for developers using some distributions like Ubuntu.

2015-09-04  Emanuele Aina  <emanuele.aina@collabora.com>

        [CMake] Trigger the memory-reduction tricks on armhf too
        https://bugs.webkit.org/show_bug.cgi?id=146640

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsCommon.cmake:
        Activate --no-keep-memory even on armhf to reduce the amount of memory
        needed during linking, to avoid out-of-memory failures as much as
        possible.

2015-09-04  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        REGRESSION(r189293): JavaScriptCore/offlineasm/x86.rb -- Build failure with ruby < 2.0
        https://bugs.webkit.org/show_bug.cgi?id=148795

        Rubber-stamped by Carlos Garcia Campos.

        * Source/cmake/WebKitCommon.cmake: Require now at least Ruby 2.0

2015-09-02  Alex Christensen  <achristensen@webkit.org>

        Make bison grammar compatible with bison 2.1
        https://bugs.webkit.org/show_bug.cgi?id=148731

        Reviewed by Tim Horton.

        * Source/cmake/WebKitCommon.cmake:
        Support bison 2.1.

2015-08-31  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [CMake] Build with Debug Fission on by default on Debug builds.
        https://bugs.webkit.org/show_bug.cgi?id=148639

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsCommon.cmake:

2015-08-29  Alex Christensen  <achristensen@webkit.org>

        Unreviewed build fix after r179923.

        * Source/CMakeLists.txt:
        bmalloc isn't ported to Windows yet.

2015-08-27  Alex Christensen  <achristensen@webkit.org>

        Isolate Source directories in CMake build
        https://bugs.webkit.org/show_bug.cgi?id=148389

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:
        * Source/cmake/WebKitCommon.cmake:
        Move package finding to WebKitCommon.

2015-08-26  Per Arne Vollan  <peavo@outlook.com>

        [Win] Build does not generate debug info.
        https://bugs.webkit.org/show_bug.cgi?id=148431

        Reviewed by Alex Christensen.

        Generate debug info for Windows builds.

        * Source/cmake/OptionsWin.cmake:

2015-08-26  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Disable ACCELERATED_2D_CANVAS by default
        https://bugs.webkit.org/show_bug.cgi?id=148473

        Reviewed by Martin Robinson.

        Currently ACCELERATED_2D_CANVAS is enabled by default on most systems (which have CairoGL)
        but not on Debian (which does not). We've known this was problematic for a while, since it
        means we have two different sets of distro-dependent bugs, but never decided whether that
        outweighed the benefits of CarioGL or not. I'm making the call now: it's more important to
        have the same bugs everywhere. We can turn this on again for other distros when we're ready
        to turn it on for Debian.

        Also, properly fail the build if ENABLE_ACCELERATED_2D_CANVAS is enabled but CairoGL is not
        available.

        * Source/cmake/OptionsGTK.cmake:

2015-08-25  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r188919.
        https://bugs.webkit.org/show_bug.cgi?id=148452

        broke build (Requested by alexchristensen on #webkit).

        Reverted changeset:

        "[Win] Build does not generate debug info."
        https://bugs.webkit.org/show_bug.cgi?id=148431
        http://trac.webkit.org/changeset/188919

2015-08-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] r186800 broke the build on Ubuntu 14.04
        https://bugs.webkit.org/show_bug.cgi?id=147559

        Reviewed by Martin Robinson.

        * Source/cmake/FindGTK3.cmake: Always define GTK3_SUPPORTS_X11 and GTK3_SUPPORTS_WAYLAND.
        * Source/cmake/OptionsGTK.cmake: Autodetect support for X11 and Wayland backends.

2015-08-25  Per Arne Vollan  <peavo@outlook.com>

        [Win] Build does not generate debug info.
        https://bugs.webkit.org/show_bug.cgi?id=148431

        Reviewed by Brent Fulgham.

        Generate debug info for Windows builds.

        * Source/cmake/OptionsWin.cmake:

2015-08-20  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>

        [GTK] Auto-detection of cairo-gl fails
        https://bugs.webkit.org/show_bug.cgi?id=148189

        Reviewed by Žan Doberšek.

        * Source/cmake/FindCairoGL.cmake: only check for components if the main package has
        been found. Otherwise, if either GLX or EGL are available, cairo-gl will also be
        deemed available, which might not be the case.
        * Source/cmake/OptionsGTK.cmake: fix the usage of the CAIROGL_FOUND variable.

2015-08-19  Alex Christensen  <achristensen@webkit.org>

        CMake Windows build should not include files directly from other Source directories
        https://bugs.webkit.org/show_bug.cgi?id=148198

        Reviewed by Brent Fulgham.

        * Source/cmake/WebKitMacros.cmake:

2015-08-19  Alex Christensen  <achristensen@webkit.org>

        Build TestWTF on Mac with CMake.
        https://bugs.webkit.org/show_bug.cgi?id=147972

        Reviewed by Tim Horton.

        * Source/cmake/OptionsMac.cmake:
        Enable API tests in Mac's CMake build.

2015-08-18  Alex Christensen  <achristensen@webkit.org>

        [CMake] REGRESSION(r188540): WebKitTestRunner is not longer built and all the tests (layout and perf) fail.
        https://bugs.webkit.org/show_bug.cgi?id=148127

        Reviewed by Martin Robinson.

        * CMakeLists.txt:
        TOOLS_DIR hasn't been set yet since its defining has been moved to WebKitFS. 

2015-08-17  Alex Christensen  <achristensen@webkit.org>

        [Win CMake] Allow WebKitLibraries directory to be set from the command line
        https://bugs.webkit.org/show_bug.cgi?id=148112

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsWin.cmake:
        Don't use an environment variable for WEBKIT_LIBRARIES_DIR.  
        Instead, use the default location if nothing is passed in from the command line.
        This way we can set it from the command line for the AppleInternal build.
        Also, set the output directories to be consistent between the old and new build systems (and ninja).

2015-08-17  Alex Christensen  <achristensen@webkit.org>

        Build Debug Suffix on Windows with CMake
        https://bugs.webkit.org/show_bug.cgi?id=148083

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsWin.cmake:
        Use debug libraries in debug suffix builds.

2015-08-17  Alex Christensen  <achristensen@webkit.org>

        Move some commands from ./CMakeLists.txt to Source/cmake
        https://bugs.webkit.org/show_bug.cgi?id=148003

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:
        Moved functionality to WebKitCommon.cmake and WebKitFS.cmake and made conditional 
        so we can change directory structure from command line parameters.
        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsWin.cmake: Copied from Source/cmake/OptionsWindows.cmake.
        * Source/cmake/OptionsWinCairo.cmake:
        * Source/cmake/OptionsWindows.cmake: Removed.
        * Source/cmake/WebKitCommon.cmake: Added.
        * Source/cmake/WebKitFS.cmake:

2015-08-13  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r188428.
        https://bugs.webkit.org/show_bug.cgi?id=148015

        broke cmake build (Requested by alexchristensen on #webkit).

        Reverted changeset:

        "Move some commands from ./CMakeLists.txt to Source/cmake"
        https://bugs.webkit.org/show_bug.cgi?id=148003
        http://trac.webkit.org/changeset/188428

2015-08-13  Alex Christensen  <achristensen@webkit.org>

        Move some commands from ./CMakeLists.txt to Source/cmake
        https://bugs.webkit.org/show_bug.cgi?id=148003

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:
        Moved functionality to WebKitCommon.cmake and WebKitFS.cmake and made conditional 
        so we can change directory structure from command line parameters.
        * Source/cmake/WebKitCommon.cmake: Added.
        * Source/cmake/WebKitFS.cmake:

2015-08-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        A focused node should not be assisted when handling touch events synchronously
        https://bugs.webkit.org/show_bug.cgi?id=147836

        Reviewed by Enrica Casucci.

        Added manual tests for keyboard assistance behavior due to receiving touch events on iOS.

        * ManualTests/ios/focused-input-should-assist-on-touch.html: Checks that a currently focused
                input can still be assisted due to a touch event.
        * ManualTests/ios/keyboard-should-not-show-on-touch-event.html: Checks that handling a touch
                event does not automatically cause us to assist the currently focused node.

2015-08-12  Alex Christensen  <achristensen@webkit.org>

        Fix Debug CMake builds on Windows
        https://bugs.webkit.org/show_bug.cgi?id=147940

        Reviewed by Chris Dumez.

        * Source/cmake/OptionsWindows.cmake:
        Put 32-bit binaries in a bin32 subdirectory and 64-bit binaries in a bin64 subdirectory.

2015-08-10  Alex Christensen  <achristensen@webkit.org>

        Build TestWebKitAPI with CMake on Windows
        https://bugs.webkit.org/show_bug.cgi?id=147851

        Reviewed by Chris Dumez.

        * Source/cmake/OptionsWindows.cmake:
        Enable api tests and set USE_SYSTEM_MALLOC to avoid warnings when redefining it.

2015-08-06  Alex Christensen  <achristensen@webkit.org>

        [Win] CMake build fix after r188098.

        * Source/cmake/OptionsWinCairo.cmake:
        OptionsWindows.cmake uses WTF_PLATFORM_WIN_CAIRO now, so we need to set it before including OptionsWindows.

2015-08-04  Alex Christensen  <achristensen@webkit.org>

        Fix quirks with CMake and VS2015
        https://bugs.webkit.org/show_bug.cgi?id=147663

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsWindows.cmake:
        Hide some warnings.  Using the same variable names in nested scopes is ok for now.
        Disable INTL for now.

2015-08-04  Alex Christensen  <achristensen@webkit.org>

        Enable WebGL on Windows CMake build.
        https://bugs.webkit.org/show_bug.cgi?id=143311

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsWindows.cmake:
        Enable WebGL by default in CMake builds now that it works.

2015-08-04  Mario Sanchez Prada  <mario@endlessm.com>

        [GTK] Accelerated 2D Canvas enabled when cairo-gl is not available
        https://bugs.webkit.org/show_bug.cgi?id=147625

        Reviewed by Martin Robinson.

        Do not set the CAIRO_<COMPONENT>_* CMake variables for cairo-gl
        components unless they were actually found, not to accidentally
        enable Accelerated 2D canvas, which would cause the build to fail.

        * Source/cmake/FindCairoGL.cmake: Set this variables only when
        pkg_check_modules() had actually found the relevant component.

2015-08-03  Csaba Osztrogonác  <ossy@webkit.org>

        [CMake] Add an option to build AllInOne files
        https://bugs.webkit.org/show_bug.cgi?id=102647

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsEfl.cmake: Disabled by default.
        * Source/cmake/OptionsGTK.cmake: Disabled by default.
        * Source/cmake/OptionsWindows.cmake: Enabled by default.
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/WebKitMacros.cmake:

2015-08-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.9.5 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2015-07-31  Alex Christensen  <achristensen@webkit.org>

        Prepare for debug CMake builds on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=147484

        Reviewed by Tim Horton.

        * Source/cmake/OptionsWindows.cmake:
        Don't use debug runtimes in debug builds because the dependencies are only built with multithreaded runtimes.

2015-07-30  Joonghun Park  <jh718.park@samsung.com>

        [EFL] Enable IndexedDB based on DatabaseProcess
        https://bugs.webkit.org/show_bug.cgi?id=147221

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsEfl.cmake:

2015-07-30  Alex Christensen  <achristensen@webkit.org>

        Build AppleWin port with CMake
        https://bugs.webkit.org/show_bug.cgi?id=147385

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsWindows.cmake:
        Use the static multithreaded runtime.  Based on
        http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_build_my_MSVC_application_with_a_static_runtime.3F

2015-07-29  Andy VanWagoner  <thetalecrafter@gmail.com>

        Implement basic types for ECMAScript Internationalization API
        https://bugs.webkit.org/show_bug.cgi?id=146926

        Reviewed by Benjamin Poulain.

        Enable flag now that the basic objects are in place.

        * Source/cmake/WebKitFeatures.cmake: enable INTL

2015-07-29  Basile Clement  <basile_clement@apple.com>

        Remove native call inlining
        https://bugs.webkit.org/show_bug.cgi?id=147417

        Rubber-stamped by Filip Pizlo.

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

2015-07-28  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6] Add ENABLE_ES6_MODULES compile time flag with the default value "false"
        https://bugs.webkit.org/show_bug.cgi?id=147350

        Reviewed by Sam Weinig.

        * Source/cmake/WebKitFeatures.cmake:

2015-07-27  Alex Christensen  <achristensen@webkit.org>

        Use Ninja on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=147228

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsWindows.cmake:
        Only use /MP when using generated Visual Studio solution files to build.
        It makes compiling parallel in MSVC, but Ninja doesn't like it.

2015-07-27  Alex Christensen  <achristensen@webkit.org>

        Progress towards building AppleWin with CMake
        https://bugs.webkit.org/show_bug.cgi?id=147325

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsWindows.cmake:
        Link with 64-bit libraries if building 64-bit binaries.
        Don't run regular expressions on empty strings when using Ninja.
        Removed DebugSuffix Visual Studio environment variables.

2015-07-23  Alex Christensen  <achristensen@webkit.org>

        Remove compile and runtime flags for promises.
        https://bugs.webkit.org/show_bug.cgi?id=147244

        Reviewed by Yusuke Suzuki.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWindows.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-07-22  Sukolsak Sakshuwong  <sukolsak@gmail.com>

        Add ENABLE_WEBASSEMBLY feature flag for WebAssembly
        https://bugs.webkit.org/show_bug.cgi?id=147212

        Reviewed by Filip Pizlo.

        * Source/cmake/WebKitFeatures.cmake:

2015-07-22  Alex Christensen  <achristensen@webkit.org>

        Fix quirks in CMake build on Mac and Windows
        https://bugs.webkit.org/show_bug.cgi?id=147174

        Reviewed by Gyuyoung Kim.

        * CMakeLists.txt:
        * Source/cmake/OptionsWindows.cmake:
        Added options I removed in r187022. They are indeed needed.
        * Source/cmake/WebKitFS.cmake:
        Make the DerivedSources/WebKit directory.

2015-07-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.9.4 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2015-07-20  Alex Christensen  <achristensen@webkit.org>

        Resurrect CMake build on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=147083

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsWindows.cmake:
        Change features to get it to compile.  Still not a complete feature set.

2015-07-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Add seccomp filters support
        https://bugs.webkit.org/show_bug.cgi?id=110014

        Reviewed by Žan Doberšek.

        Find needed compiler and linker flags for libseccomp.

        * Source/cmake/OptionsGTK.cmake:

2015-07-17  Ting-Wei Lan  <lantw44@gmail.com>

        Bring back the GNU ar check to create thin archives on non-Linux systems
        https://bugs.webkit.org/show_bug.cgi?id=146681

        Reviewed by Martin Robinson.

        We already use GNU ar thin archive feature to save time and disk space
        on creating static archives, but it is only enabled on Linux. Without
        this feature, the debug build of WebCore can be larger than 4 GiB,
        which can cause error because GNU ar format uses 32-bit integer to
        store offsets in the symbol table. This patch is similar to
        https://bugs.webkit.org/show_bug.cgi?id=128596.

        * Source/cmake/OptionsCommon.cmake:

2015-07-14  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK] [Wayland] Build by default the X11 and Wayland targets.
        https://bugs.webkit.org/show_bug.cgi?id=146057

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake:

2015-07-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] ar warning when linking static libraries
        https://bugs.webkit.org/show_bug.cgi?id=144988

        Reviewed by Carlos Garcia Campos.

        Do not use 'u' when calling ar. This argument conflicts with 'D' and is ignored if 'D' is
        used, and 'D' is used by default if binutils is built with --enable-deterministic-archives.
        Using 'u' with 'D' causes a warning to be printed when linking static libraries. At least
        Fedora and Debian have recently both chosen to use --enable-deterministic-archives, so we
        should either stop using 'u' or else add 'U' as well in order to disable deterministic
        archives. Using 'U' should result in a somewhat faster build (at least when using the
        Makefile generator), but it's unlikely that the difference is significant, so let's simply
        remove 'u' until someone determines otherwise. This seems like a better option than adding
        'U' so as not to foil distributions' attempts to perform deterministic builds. This also
        aligns us with the behavior of upstream CMake (which has never used 'u'). This is a minor
        behavior change on distributions that do not use --enable-deterministic-archives, notably
        Arch and openSUSE.

        * Source/cmake/OptionsCommon.cmake:

2015-07-03  Emanuele Aina  <emanuele.aina@collabora.com>

        [GTK] Forcefully disable gtk-doc and gobject-introspection when crossbuilding
        https://bugs.webkit.org/show_bug.cgi?id=146590

        Reviewed by Martin Robinson.

        * Source/PlatformGTK.cmake: override the cached variables to
        forcefully disable gtk-doc and gobject-introspection when
        crosscompiling.
        * Source/cmake/OptionsGTK.cmake: avoid running gtk-doc to check the
        documentation syntax when cross-building.


2015-07-02  Przemek Piorkowski  <piorkowskiprzemyslaw@gmail.com>

        [EFL] test_ewk2_application_cache_manager has been failed since r185527
        https://bugs.webkit.org/show_bug.cgi?id=146016

        Reviewed by Gyuyoung Kim.

        In order to handle properly WebApplicationCacheManagerProxy implementation which use
        WebsiteDataRecord it is necessary to enable PUBLIC_SUFFIX_LIST for EFL.
        Implementation of PUBLIC_SUFFIX_LIST already exists for soup so EFL can use it as well.

        * Source/cmake/OptionsEfl.cmake: set ENABLE_PUBLIC_SUFFIX_LIST to ON for EFL.

2015-06-30  Andy VanWagoner  <thetalecrafter@gmail.com>

        Implement ECMAScript Internationalization API
        https://bugs.webkit.org/show_bug.cgi?id=90906

        Reviewed by Benjamin Poulain.

        Begin implementing the Intl apis behind ENABLE_INTL flag.
        Create the base Intl namespace object.

        * Source/cmake/WebKitFeatures.cmake: add ENABLE_INTL flag

2015-06-30  Philippe Normand  <pnormand@igalia.com>

        [CMake] Error when gst-plugins-base is missing is too confusing
        https://bugs.webkit.org/show_bug.cgi?id=145682

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Error out if the required
        GStreamer libraries are not found on the host.

2015-06-28  Philip Chimento  <philip.chimento@gmail.com>

        CairoGL should be checked unconditionally
        https://bugs.webkit.org/show_bug.cgi?id=146390

        Reviewed by Darin Adler.

        * Source/cmake/OptionsGTK.cmake: Move check for CairoGL so that
        it is run unconditionally; this is necessary because its result
        is used later on, outside of any conditions.

2015-06-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][SOUP] Implement WebCore::PublicSuffix for soup and enable PUBLIC_SUFFIX_LIST for GTK+
        https://bugs.webkit.org/show_bug.cgi?id=146318

        Reviewed by Sergio Villar Senin.

        Enable PUBLIC_SUFFIX_LIST for GTK+.

        * Source/cmake/OptionsGTK.cmake:

2015-06-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.9.3 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2015-06-22  Ryuan Choi  <ryuan.choi@navercorp.com>

        [EFL] Hyphenation is not supported
        https://bugs.webkit.org/show_bug.cgi?id=89830

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Added an option for LibHyphen.

2015-06-22  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Add support for building with various sanitizer tools
        https://bugs.webkit.org/show_bug.cgi?id=131941

        Reviewed by Martin Robinson.

        * Source/PlatformGTK.cmake: Don't generate any documentation
        when compiling with sanitizers enabled.
        * Source/cmake/OptionsCommon.cmake: Allow linking with
        undefined symbols when compiling with sanitizers enabled.

2015-06-21  Philip Chimento  <philip.chimento@gmail.com>

        libwebkit2gtk fails to link without opengl
        https://bugs.webkit.org/show_bug.cgi?id=138332

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: USE(TEXTURE_MAPPER) must be
        enabled regardless of whether OpenGL is, because certain symbols
        such as WebCore::GraphicsLayer::create() need to be built.

2015-06-20  Michael Catanzaro  <mcatanzaro@igalia.com>

        [EFL][GTK] Define GLIB_VERSION_MIN_REQUIRED and require glib 2.36 for GTK
        https://bugs.webkit.org/show_bug.cgi?id=146181

        Reviewed by Martin Robinson.

        Bump our GLib requirement to 2.36 to reflect reality, since we are using GTask.

        * Source/cmake/OptionsGTK.cmake:

2015-06-20  Ryuan Choi  <ryuan.choi@navercorp.com>

        [EFL] Do not consider test directories when DEVELOPER_MODE is OFF
        https://bugs.webkit.org/show_bug.cgi?id=146171

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake:
        Exposed ENABLE_DEVELOPER_MODE to Compiler and CMake definition when DEVELOPER_MODE is ON.

2015-06-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] FindGTK3.cmake should not modify the values of build options
        https://bugs.webkit.org/show_bug.cgi?id=144613

        Reviewed by Martin Robinson.

        * Source/cmake/FindGTK3.cmake: Do not check or set the value of ENABLE_X11_TARGET and
        ENABLE_WAYLAND_TARGET. Instead, simply define the variables GTK3_SUPPORTS_X11 and
        GTK3_SUPPORTS_WAYLAND as appropriate. Also, rename GTK_SUPPORTS_GESTURES to
        GTK3_SUPPORTS_GESTURES for consistency.
        * Source/cmake/OptionsGTK.cmake: Fail the build if the appropriate GTK+ backend is not
        available. It's not possible to automatically select a backend correctly anymore, since all
        options are set at the same time.

2015-06-19  Csaba Osztrogonác  <ossy@webkit.org>

        Remove unnecessary svn:executable flags
        https://bugs.webkit.org/show_bug.cgi?id=146107

        Reviewed by Alexey Proskuryakov.

        * ManualTests/iframe_notifications/iframe-reparenting-close-window-child.html: Removed property svn:executable.
        * ManualTests/iframe_notifications/iframe-reparenting-close-window-iframe.html: Removed property svn:executable.
        * ManualTests/iframe_notifications/iframe-reparenting-close-window.html: Removed property svn:executable.
        * ManualTests/select-menu-list-wrongly-positioned.html: Removed property svn:executable.
        * ManualTests/svg-text-float-not-removed-crash.html: Removed property svn:executable.

2015-06-18  Ryuan Choi  <ryuan.choi@navercorp.com>

        [EFL] Use SET_AND_EXPOSE_TO_BUILD instead of definitions
        https://bugs.webkit.org/show_bug.cgi?id=146108

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake:

2015-06-16  Ryuan Choi  <ryuan.choi@navercorp.com>

        [EFL] Remove duplicated PUBLIC argument in OptionsEfl.cmake
        https://bugs.webkit.org/show_bug.cgi?id=146035

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake:

2015-06-16  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK] [Wayland] Should be possible to build with support for both X11 and Wayland.
        https://bugs.webkit.org/show_bug.cgi?id=145701

        Reviewed by Darin Adler.

        * Source/cmake/OptionsGTK.cmake: Remove conflicting options.

2015-06-15  Jon Honeycutt  <jhoneycutt@apple.com>

        [iOS] Crash long pressing on <input type=file>
        https://bugs.webkit.org/show_bug.cgi?id=146009
        <rdar://problem/21234453>

        Reviewed by Ryosuke Niwa.

        * ManualTests/ios/long-press-input-type-file-crash.html: Added.

2015-06-16  Brent Fulgham  <bfulgham@apple.com>

        Rollout accidental Xcode project change.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:

2015-06-12  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [EFL] Bump EWebKit version from 1.11.0 to 1.14.0
        https://bugs.webkit.org/show_bug.cgi?id=145909

        Reviewed by Csaba Osztrogonác.

        Bump EWebKit version based on efl library version used by the EWebKit.

        * Source/cmake/OptionsEfl.cmake:

2015-06-11  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r185453.
        https://bugs.webkit.org/show_bug.cgi?id=145881

        it broke the 32-bit build (Requested by clopez on #webkit).

        Reverted changeset:

        "[GTK] [Wayland] Should be possible to build with support for
        both X11 and Wayland."
        https://bugs.webkit.org/show_bug.cgi?id=145701
        http://trac.webkit.org/changeset/185453

2015-06-11  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK] [Wayland] Should be possible to build with support for both X11 and Wayland.
        https://bugs.webkit.org/show_bug.cgi?id=145701

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsGTK.cmake: Remove conflicting options.

2015-06-03  Daniel Bates  <dabates@apple.com>

        Caps lock indicator should not be shown in read-only or disabled field
        https://bugs.webkit.org/show_bug.cgi?id=145612
        <rdar://problem/21227454>

        Reviewed by Darin Adler.

        * ManualTests/password-caps-lock-should-not-show-in-read-only-field.html: Added.
        * ManualTests/password-caps-lock-should-not-show-when-field-becomes-disabled.html: Added.
        * ManualTests/password-caps-lock-should-not-show-when-field-becomes-read-only.html: Added.

2015-06-01  Csaba Osztrogonác  <ossy@webkit.org>

        [cmake] Suppress parentheses-equality warnings
        https://bugs.webkit.org/show_bug.cgi?id=145126

        Reviewed by Darin Adler.

        * Source/cmake/WebKitHelpers.cmake:

2015-05-28  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [CMake] Improve detection and usage of GL/GLES/EGL libraries.
        https://bugs.webkit.org/show_bug.cgi?id=145408

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindEGL.cmake: Improve detection of EGL libraries.
        * Source/cmake/FindGLES.cmake: Removed. It was used by the EGL port.
        Remove it and make the EGL port use the improved FindOpenGLES2.cmake
        instead.
        * Source/cmake/FindOpenGL.cmake: Added. Add module to detect OpenGL
        libraries. Detect also GLX libraries.
        * Source/cmake/FindOpenGLES2.cmake: Improve detection of OpenGLES-v2
        libraries. Use find_path() to get the include path.
        * Source/cmake/OptionsEfl.cmake: Use now the improved FindOpenGLES2
        module.
        * Source/cmake/OptionsGTK.cmake: Set default value for ENABLE_GLES2
        depending on the libraries found on the system.
        Move the detection of GLX (and the include of CMakePushCheckState)
        to FindOpenGL.cmake.
        Ensure that we only define USE_GLX when we build with OpenGL
        (but not with GLESv2).

2015-05-27  Dean Jackson  <dino@apple.com>

        img.currentSrc problem in strict mode with old picturefill
        https://bugs.webkit.org/show_bug.cgi?id=144095
        <rdar://problem/21087013>

        Reviewed by Simon Fraser.

        Add a PICTURE_SIZES flag.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWindows.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-05-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.9.2 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2015-05-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Export DatabaseProcessMainUnix symbol.

        Add DatabaseProcessMainUnix symbol to gtksymbols.filter so that it
        is exported in production builds.

        * Source/cmake/gtksymbols.filter:

2015-05-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Enable IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=98932

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsGTK.cmake: Enable DATABASE_PROCESS and INDEXED_DATABASE.
        * Source/cmake/WebKitFeatures.cmake: Add ENABLE_DATABASE_PROCESS.

2015-05-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Bump GCC requirements to 4.9.0
        https://bugs.webkit.org/show_bug.cgi?id=145211

        Reviewed by Žan Doberšek.

        It's required to build with IndexedDB support when using GCC,
        clang works just fine. See https://bugs.webkit.org/show_bug.cgi?id=98932.

        * Source/cmake/OptionsGTK.cmake:

2015-05-18  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Ignore warnings in system headers
        https://bugs.webkit.org/show_bug.cgi?id=144747

        Reviewed by Darin Adler.

        Require CMake 2.8.12 when compiling the GTK+ port. This is because we use the
        target_include_directories command (added in 2.8.11) in GTK-specific cmake files, and also
        use the SYSTEM argument to the command (added in 2.8.12). 

        * CMakeLists.txt:

2015-05-14  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Error out when ruby is too old
        https://bugs.webkit.org/show_bug.cgi?id=145014

        Reviewed by Martin Robinson.

        Error out immediately after checking for Ruby if the ruby executable is not found, or if it
        is too old.

        * CMakeLists.txt:

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

        [GTK] Enable plugin-related CMake options and variables for the X11 target only
        https://bugs.webkit.org/show_bug.cgi?id=144995

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Plugins are only supported for
        the X11 windowing target at the moment, so the following options
        and variables should be enabled or disabled accordingly:
        - ENABLE_PLUGIN_PROCESS_GTK2
        - ENABLE_NETSCAPE_PLUGIN_API
        - ENABLE_PLUGIN_PROCESS

2015-05-12  Ryuan Choi  <ryuan.choi@navercorp.com>

        Linker fails without -DDEVELOPER_MODE=ON
        https://bugs.webkit.org/show_bug.cgi?id=144117

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake:
        Remove fvisibility flags. linker script will cover the functionality for ewebkit2.so in release mode,
        * Source/cmake/eflsymbols.filter: Updated symbol patterns which should be exposed for ewebkit2.

2015-05-10  Philip Chimento  <philip.chimento@gmail.com>

        CMake defines CAIROGL_FOUND, not CAIRO_GL_FOUND
        https://bugs.webkit.org/show_bug.cgi?id=144846

        Reviewed by Martin Robinson.

        * Source/cmake/FindCairoGL.cmake: Use CAIROGL_* instead of
        CAIRO_GL_* throughout, because find_package will define
        CAIROGL_FOUND.
        * Source/cmake/OptionsGTK.cmake: Ditto.

2015-05-10  Philip Chimento  <philip.chimento@gmail.com>

        [CMake] Some macros need to be defined/undefined, rather than ON/OFF
        https://bugs.webkit.org/show_bug.cgi?id=144845

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsGTK.cmake: Only define MOZ_X11 and XP_UNIX
        if their corresponding WTF options are ON. The code in npapi.h
        relies on these being undefined if they are to be switched off.

2015-05-09  Yoav Weiss  <yoav@yoav.ws>

        Remove the PICTURE_SIZES build flag
        https://bugs.webkit.org/show_bug.cgi?id=144679

        Reviewed by Benjamin Poulain.

        Removed the PICTURE_SIZES build time flag.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWindows.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2015-05-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] [CMake] Check for required X libraries
        https://bugs.webkit.org/show_bug.cgi?id=144823

        Reviewed by Martin Robinson.

        Error out if missing libXcomposite, libXdamage, libXrender, or libXt.

        * Source/cmake/OptionsGTK.cmake:

015-05-08  Michael Catanzaro  <mcatanzaro@igalia.com>, Martin Robinson <mrobinson@igalia.com>

        [GTK] Checks for DEVELOPMENT_BUILD are all wrong
        https://bugs.webkit.org/show_bug.cgi?id=144746

        Reviewed by Carlos Garcia Campos.

        Don't set DEVELOPMENT_BUILD. We check whether it is defined for conditional compilation, not
        what it is defined to, so defining it to 0 effectively turned it on always. Instead set
        ENABLE_DEVELOPER_MODE so that we can use the ENABLE macro inside WebKit source code.

        * Source/cmake/OptionsGTK.cmake:

2015-05-08  Daniel Bates  <dabates@apple.com>

        [iOS] WebSQL operations are not performed after device is locked
        https://bugs.webkit.org/show_bug.cgi?id=137503
        <rdar://problem/20844952>

        Rubber-stamped by Alexey Proskuryakov.

        Add a manual test to help verify that we do not regress this issue.

        * ManualTests/ios/execute-sql-transaction-callback-after-locking-unlocking-device-in-earlier-transaction.html: Added.

2015-05-08  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r183945.
        https://bugs.webkit.org/show_bug.cgi?id=144789

        "It broke all the GTK+ tests" (Requested by KaL on #webkit).

        Reverted changeset:

        "[GTK] Checks for DEVELOPMENT_BUILD are all wrong"
        https://bugs.webkit.org/show_bug.cgi?id=144746
        http://trac.webkit.org/changeset/183945

2015-05-07  Myles C. Maxfield  <mmaxfield@apple.com>

        Cleanup after r183940
        https://bugs.webkit.org/show_bug.cgi?id=144768

        Unreviewed.

        Looks like the empty directories were not deleted.

        * Source/PAL: Removed.
        * Source/PAL/Configurations: Removed.
        * Source/PAL/PAL.xcodeproj: Removed.
        * Source/PAL/graphics: Removed.

2015-05-07  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Checks for DEVELOPMENT_BUILD are all wrong
        https://bugs.webkit.org/show_bug.cgi?id=144746

        Reviewed by Martin Robinson.

        Don't set DEVELOPMENT_BUILD. We check whether it is defined for conditional compilation, not
        what it is defined to, so defining it to 0 effectively turned it on always.

        * Source/cmake/OptionsGTK.cmake:

2015-05-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Revert "Introducing the Platform Abstraction Layer (PAL)"
        https://bugs.webkit.org/show_bug.cgi?id=144751

        Unreviewed.

        PAL should be a new target inside WebCore, rather than a top-level folder.

        * WebKit.xcworkspace/contents.xcworkspacedata: Add it to the workspace.

2015-05-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.9.1 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2015-05-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Introducing the Platform Abstraction Layer (PAL)
        https://bugs.webkit.org/show_bug.cgi?id=143358

        Reviewed by Simon Fraser.

        * WebKit.xcworkspace/contents.xcworkspacedata: Add it to the workspace.

2015-05-04  Csaba Osztrogonác  <ossy@webkit.org>

        [cmake] Disable GNU Gold linker on Cortex A53
        https://bugs.webkit.org/show_bug.cgi?id=144382

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsCommon.cmake:

2015-05-01  Martin Robinson  <mrobinson@igalia.com>

        USE(...) macro should expect unprefixed variables
        https://bugs.webkit.org/show_bug.cgi?id=144454

        Reviewed by Daniel Bates.

        * Source/cmake/OptionsAppleWin.cmake: Replace all occurrences WTF_USE with USE.
        * Source/cmake/OptionsEfl.cmake: Ditto.
        * Source/cmake/OptionsGTK.cmake: Ditto.
        * Source/cmake/OptionsMac.cmake: Ditto.
        * Source/cmake/OptionsWinCairo.cmake: Ditto.
        * Source/cmake/WebKitFeatures.cmake: No longer expose WTF_USE when encountering
        USE variables.

2015-04-30  Martin Robinson  <mrobinson@igalia.com>

        [CMake] Automatically expose WTF_USE_FOO to the build when USE_FOO is exposed
        https://bugs.webkit.org/show_bug.cgi?id=144394

        Reviewed by Carlos Garcia Campos.

        Automatically expose WTF_USE_FOO when USE_FOO is exposed. A side-effect of this change
        is that it fixes the redirected XComposite window for GTK+, which was accidentally
        disabled in previous reworking of the CMake configuration.

        * Source/cmake/OptionsGTK.cmake: We no longer need to expose the WTF_ prefixed
        version of USE variables.
        * Source/cmake/WebKitFeatures.cmake: Automatically expose WTF_USE_FOO when USE_FOO
        is exposed to the build.

2015-04-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Bump GTK+ version numbers.

        * Source/cmake/OptionsGTK.cmake:

2015-04-29  Ryuan Choi  <ryuan.choi@navercorp.com>

        [EFL] CMake should be failed if openwebrtc package does not exist but ENABLE_MEDIA_STREAM is ON
        https://bugs.webkit.org/show_bug.cgi?id=144435

        Reviewed by Gyuyoung Kim.

        This patch adds REQUIRED option for OpenWebRTC when ENABLE_MEDIA_STREAM is ON.
        In addition, this adds DEFAULT_PORT_VALUE for ENABLE_MEDIA_STREAM to match with FeatureList.pm

        * Source/cmake/OptionsEfl.cmake:

2015-04-29  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION(183583): [Mac] make without SDKROOT has issues
        https://bugs.webkit.org/show_bug.cgi?id=144431

        Reviewed by Dan Bernstein.

        * Source/Makefile:
        Assume an empty SDKROOT means an macosx variant, so only
        enable settings if the SDKROOT is not empty and does not
        contain "macosx".

2015-04-29  Martin Robinson  <mrobinson@igalia.com>

        Fix the GTK+ build after r183584

        * Source/cmake/OptionsGTK.cmake: Properly use the USE_LIBHYPHEN and HYPHEN_FOUND variables.

2015-04-29  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Add support for automatic hyphenation
        https://bugs.webkit.org/show_bug.cgi?id=44478

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindHyphen.cmake: Added. A CMake module for finding libhyphen.
        * Source/cmake/OptionsGTK.cmake: Look for libhyphen and enable hyphenation if found.
        * Source/cmakeconfig.h.cmake: Pass through the whether libhyphen is enabled.

2015-04-29  Jake Nielsen  <jacob_nielsen@apple.com>

        Failure when building WebKit for appletvsimulator.
        https://bugs.webkit.org/show_bug.cgi?id=144356

        Reviewed by Alexey Proskuryakov.

        Changes Makefile logic to check for "not OS X" rather than "is iOS" to
        make TVOS and WatchOS behave correctly.

        * Source/Makefile:

2015-04-29  Martin Robinson  <mrobinson@igalia.com>

        [CMake] [GTK] Organize and clean up unused CMake variables
        https://bugs.webkit.org/show_bug.cgi?id=144364

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsGTK.cmake: Remove unused variables and move variables
        specific to certain projects into their PlatformGTK.cmake files.

2015-04-29  Ryuan Choi  <ryuan.choi@navercorp.com>

        [EFL] Build failure to find gio-unix
        https://bugs.webkit.org/show_bug.cgi?id=144083

        Reviewed by Gyuyoung Kim.

        Original patch by Doug Newgard <scimma22@outlook.com>

        * Source/cmake/OptionsEfl.cmake: Moved geoclue block before find_package(GLIB...)

2015-04-28  Ryuan Choi  <ryuan.choi@navercorp.com>

        [CoordinatedGraphics] Merge TILED_BACKING_STORE guard with COORDINATED_GRAPHICS
        https://bugs.webkit.org/show_bug.cgi?id=143001

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Removed TILED_BACKING_STORE definition.
        * Source/cmake/OptionsGTK.cmake: Ditto.

2015-04-28  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix typo in previous commit

        libsecretr -> libsecret in the error message.

        * Source/cmake/OptionsGTK.cmake:

2015-04-28  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Clean up feature detection and make it hard to accidentally build without optional features
        https://bugs.webkit.org/show_bug.cgi?id=143546

        Reviewed by Martin Robinson.

        Add USE_GSTREAMER_MPEGTS option and turn it off by default. Turn off ENABLE_SUBTLE_CRYPTO
        by default. Turn on ENABLE_GEOLOCATION by default. Add USE_LIBNOTIFY and turn it on by
        default. Fail the build with an informative error message if an optional dependency required
        for an enabled feature is not present. Perform find_package commands only when necessary.
        Make ENABLE_API_TESTS private. Alphabetize the feature checks (yes, this is actually
        possible now!).

        * Source/cmake/OptionsGTK.cmake:

2015-04-28  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Make all options actually options
        https://bugs.webkit.org/show_bug.cgi?id=144106

        Reviewed by Martin Robinson.

        Use WEBKIT_OPTION_DEFINE to set ENABLE_GTKDOC, ENABLE_INTROSPECTION, ENABLE_X11_TARGET, and
        ENABLE_WAYLAND_TARGET.

        * Source/cmake/OptionsGTK.cmake:

2015-04-28  Michael Catanzaro <mcatanzaro@igalia.com>

        Unreviewed, fix GTK build after r183452

        * Source/cmake/OptionsGTK.cmake:

2015-04-27  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Add one single option to control all OpenGL-related options
        https://bugs.webkit.org/show_bug.cgi?id=144105

        Reviewed by Martin Robinson.

        Add public ENABLE_OPENGL option, which is mandatory for ENABLE_3D_TRANSFORMS,
        ENABLE_ACCELERATED_2D_CANVAS, ENABLE_GLES2, ENABLE_THREADED_COMPOSITOR, ENABLE_WEBGL,
        USE_REDIRECTED_XCOMPOSITE_WINDOW, and USE_GSTREAMER_GL. Make ENABLE_GLES2 a proper WebKit
        option and move code around accordingly. Use WEBKIT_OPTION_DEPEND and rely on it. Add a
        large comment to explain why default value of ENABLE_ACCELERATED_2D_CANVAS is based on the
        presence of CairoGL.

        * Source/cmake/OptionsGTK.cmake:

2015-04-27  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] ENABLE_SMOOTH_SCROLLING should be private
        https://bugs.webkit.org/show_bug.cgi?id=144306

        Reviewed by Martin Robinson.

        Make ENABLE_SMOOTH_SCROLLING private instead of public.

        * Source/cmake/OptionsGTK.cmake:

2015-04-27  Michael Catanzaro  <mcatanzaro@igalia.com>

        Rename WTF_USE_3D_GRAPHICS to ENABLE_GRAPHICS_CONTEXT_3D
        https://bugs.webkit.org/show_bug.cgi?id=144193

        Reviewed by Darin Adler.

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

2015-04-27  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Should be possible for an option to conflict with other options
        https://bugs.webkit.org/show_bug.cgi?id=143956

        Reviewed by Martin Robinson.

        Add WEBKIT_OPTION_CONFLICT macro, which fails the build if conflicting options are on.

        * Source/cmake/WebKitFeatures.cmake:

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

        [CMake] Autogenerate cmakeconfig.h.cmake
        https://bugs.webkit.org/show_bug.cgi?id=143997

        Reviewed by Csaba Osztrogonác.

        * CMakeLists.txt: Create the configuration header as the last part of the cmake run.
        * Source/CMakeLists.txt: No longer use configure_file to create cmakeconfig.h.
        * Source/cmake/OptionsCommon.cmake: Expose WTF_CPU_ARM64_CORTEXA53 to the build explicitly.
        * Source/cmake/OptionsGTK.cmake: Expose variables to the build using SET_AND_EXPOSE_TO_BUILD.
        Do some other miscellaneous related cleanup.
        * Source/cmake/OptionsEFL.cmake: Expose HAVE_LLVM to the build.
        * Source/cmake/WebKitFeatures.cmake: Expose all WebKit features to the build. Add support for
        build exposed variables. Add a macro to generate a configuration from them.
        * Source/cmakeconfig.h.cmake: Removed.

2015-04-24  Philippe Normand  <pnormand@igalia.com>

        [JHBuild] Move to upstream OpenWebRTC
        https://bugs.webkit.org/show_bug.cgi?id=144145

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindOpenWebRTC.cmake: Check the presence of the
        owr-gst library.

2015-04-26  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6] Implement ES6 template literals
        https://bugs.webkit.org/show_bug.cgi?id=142691

        Reviewed by Darin Adler.

        Add ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX compile time flag.

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

2015-04-25  Martin Robinson  <mrobinson@igalia.com>

        Rename ENABLE_3D_RENDERING to ENABLE_3D_TRANSFORMS
        https://bugs.webkit.org/show_bug.cgi?id=144182

        Reviewed by Simon Fraser.

        * Source/cmake/OptionsEfl.cmake: Replace all instances of 3D_RENDERING with 3D_TRANSFORMS.
        * Source/cmake/OptionsGTK.cmake: Replace all instances of 3D_RENDERING with 3D_TRANSFORMS.
        * Source/cmake/OptionsMac.cmake: Replace all instances of 3D_RENDERING with 3D_TRANSFORMS.
        * Source/cmake/WebKitFeatures.cmake: Replace all instances of 3D_RENDERING with 3D_TRANSFORMS.
        * Source/cmakeconfig.h.cmake: Replace all instances of 3D_RENDERING with 3D_TRANSFORMS.

2015-04-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Add more public options
        https://bugs.webkit.org/show_bug.cgi?id=144116

        Reviewed by Martin Robinson.

        Add ENABLE_ICONDATABASE, ENABLE_JIT, and USE_SYSTEM_MALLOC as public options.

        * Source/cmake/OptionsGTK.cmake:

2015-04-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Some internal variables are not marked as advanced
        https://bugs.webkit.org/show_bug.cgi?id=143595

        Reviewed by Martin Robinson.

        * Source/cmake/FindFreetype2.cmake: Mark internal options as advanced.
        * Source/cmake/FindHarfBuzz.cmake: Mark HARFBUZZ_ICU_LIBRARIES as advanced.

2015-04-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Mark as advanced the build options we don't want to expose
        https://bugs.webkit.org/show_bug.cgi?id=143558

        Reviewed by Martin Robinson.

        Mark various options as private instead of public.

        * Source/cmake/OptionsGTK.cmake:

2015-04-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Should be possible for an option to depend on multiple options
        https://bugs.webkit.org/show_bug.cgi?id=143839

        Reviewed by Martin Robinson.

        Use a list instead of a single variable to track the dependencies of each option. Iterate
        over the list as many times as necessary to ensure all options are properly disabled.

        * Source/cmake/WebKitFeatures.cmake:

2015-04-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] ENABLE_THREADED_COMPOSITOR should not be at the bottom of the options list
        https://bugs.webkit.org/show_bug.cgi?id=144103

        Reviewed by Martin Robinson.

        Just move ENABLE_THREADED_COMPOSITOR so it's alphabetized properly.

        * Source/cmake/WebKitFeatures.cmake:

2015-04-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Fixups for ENABLE_CREDENTIAL_STORAGE
        https://bugs.webkit.org/show_bug.cgi?id=144102

        Reviewed by Martin Robinson.

        Use WEBKIT_OPTION_DEFAULT_PORT_VALUE to set ENABLE_CREDENTIAL_STORAGE instead of doing so
        manually. Fail the build if libsecret is not found but ENABLE_CREDENTIAL_STORAGE is set.
        Also, do not set ENABLE_CREDENTIAL_STORAGE redundantly.

        * Source/cmake/OptionsGTK.cmake:

2015-04-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Clean up JSC JIT options
        https://bugs.webkit.org/show_bug.cgi?id=143998

        Reviewed by Filip Pizlo.

        * Source/cmake/OptionsEfl.cmake: Remove handling of ENABLE_LLINT_C_LOOP and preprocessor
          define for ENABLE_FTL_NATIVE_CALL_INLINING.
        * Source/cmake/OptionsMac.cmake: Remove override of ENABLE_LLINT_C_LOOP
        * Source/cmake/WebKitFeatures.cmake: Remove ENABLE_LLINT_C_LOOP. Add ENABLE_DFG_JIT and
          ENABLE_FTL_NATIVE_CALL_INLINING. Specify proper dependencies for these features.
        * Source/cmakeconfig.h.cmake: Remove ENABLE_LLINT_C_LOOP and add ENABLE_DFG_JIT.

2015-04-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Use lowercase for local variables in macros
        https://bugs.webkit.org/show_bug.cgi?id=144059

        Reviewed by Martin Robinson.

        Convert some variable names to lowercase.

        * Source/cmake/WebKitFeatures.cmake:

2015-04-22  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r183116.
        https://bugs.webkit.org/show_bug.cgi?id=144060

        Inadvertently deleted a file... (Requested by mcatanzaro on
        #webkit).

        Reverted changeset:

        "[CMake] Use lowercase for local variables in macros"
        https://bugs.webkit.org/show_bug.cgi?id=144059
        http://trac.webkit.org/changeset/183116

2015-04-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Use lowercase for local variables in macros
        https://bugs.webkit.org/show_bug.cgi?id=144059

        Reviewed by Martin Robinson.

        Convert some variable names to lowercase.

        * Source/cmake/WebKitFeatures.cmake:

2015-04-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Features list should print dots every other row
        https://bugs.webkit.org/show_bug.cgi?id=143832

        Reviewed by Martin Robinson.

        Discount private options when determining whether to print dots on a given row of the
        features list. Also, simplify the logic by using only one for loop, and fix a couple errors
        (inverted use of SHOULD_PRINT_DOTS, one use of the renamed variable SHOULD_PRINT_POINTS that
        wasn't noticed because it only affects the first line, and use of the variable name as a
        string in a conditional.)

        * Source/cmake/WebKitFeatures.cmake:

2015-04-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Require specifying visibility of WebKit options
        https://bugs.webkit.org/show_bug.cgi?id=143831

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsEfl.cmake: Specify all options as PUBLIC
        * Source/cmake/OptionsGTK.cmake: Specify all options as PUBLIC
        * Source/cmake/OptionsMac.cmake: Specify all options as PRIVATE
        * Source/cmake/OptionsWindows.cmake: Specify all options as PUBLIC
        * Source/cmake/WebKitFeatures.cmake: Require specifying options as PUBLIC or PRIVATE.
          Remove WEBKIT_OPTION_DEFINE_PUBLIC and WEBKIT_OPTION_PRIVATE_PORT_VALUE. Specify all
          cross-platform options as PRIVATE.

2015-04-19  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [CMake] Synchronize variables between WebKitFeatures.cmake and cmakedonfig.h.cmake
        https://bugs.webkit.org/show_bug.cgi?id=143935

        Reviewed by Darin Adler.

        Some variables aren't defined in these files or unused variables aren't removed. This
        patch cleans up it as well as fix wrong alphabet order.

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

2015-04-19  Simon Fraser  <simon.fraser@apple.com>

        Restore the WebKit.xcworkspace to the way it was before r182899,
        which inadvertently added the Source directory and a couple of source
        files.

        * WebKit.xcworkspace/contents.xcworkspacedata:

2015-04-16  Basile Clement  <basile_clement@apple.com>

        Extract the allocation profile from JSFunction into a rare object
        https://bugs.webkit.org/show_bug.cgi?id=143807

        Reviewed by Filip Pizlo.

        * WebKit.xcworkspace/contents.xcworkspacedata:

2015-04-16  Csaba Osztrogonác  <ossy@webkit.org>

        [EFL] Bump LLVM to version 3.6.0 on X86_64
        https://bugs.webkit.org/show_bug.cgi?id=143604

        Reviewed by Gyuyoung Kim.

        * Source/cmake/FindLLVM.cmake: Added version handling.
        * Source/cmake/OptionsEfl.cmake: Require LLVM 3.6.0 on X86_64 and patched LLVM 3.5.0 on AArch64.

2015-04-15  Timothy Horton  <timothy_horton@apple.com>

        Custom CSS cursors do not use -webkit-image-set on retina displays
        https://bugs.webkit.org/show_bug.cgi?id=120783

        Reviewed by Beth Dakin.
        Patch by Evan Wallace <evan.exe@gmail.com>.

        Add a manual test for custom CSS cursors on retina displays.

        * ManualTests/retina-cursors.html: Added.

2015-04-15  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=143785

        Reviewed by Csaba Osztrogonác.

        * CMakeLists.txt:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFS.cmake:

2015-04-10  Jon Honeycutt  <jhoneycutt@apple.com>

        Cannot click "Next" button on Google two-factor auth setup page

        <https://bugs.webkit.org/show_bug.cgi?id=143624>
        <rdar://problem/19175714>

        Reviewed by Darin Adler.

        * ManualTests/button-that-focuses-itself-on-click.html: Added.

2015-04-13  Michael Catanzaro  <mcatanzaro@igalia.com>

        [cmake] REGRESSION(182663): It broke feature dependency handling
        https://bugs.webkit.org/show_bug.cgi?id=143665

        Reviewed by Csaba Osztrogonác.

        Don't try to check the value of options before defining the options.

        * Source/cmake/WebKitFeatures.cmake:

2015-04-13  Csaba Osztrogonác  <ossy@webkit.org>

        [cmake] Add ENABLE(ATTACHMENT_ELEMENT) to the build system
        https://bugs.webkit.org/show_bug.cgi?id=143664

        Reviewed by Gyuyoung Kim.

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

2015-04-12  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [EFL] Enable Media Source
        https://bugs.webkit.org/show_bug.cgi?id=143635

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsEfl.cmake: Add ENABLE_MEDIA_SOURCE switch.

2015-04-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Miscellaneous issues in WebKitFeatures.cmake
        https://bugs.webkit.org/show_bug.cgi?id=143636

        Reviewed by Martin Robinson.

        Rename _WEBKIT_AVAILABLE_OPTIONS_INITIALVALUE_ variables to
        _WEBKIT_AVAILABLE_OPTIONS_INITIAL_VALUE_

        Rename _WEBKIT_AVAILABLE_OPTIONS_ISPUBLIC_ variables to
        _WEBKIT_AVAILABLE_OPTIONS_IS_PUBLIC_

        Rename _SHOULD_PRINT_POINTS to _SHOULD_PRINT_DOTS

        Update USE_SYSTEM_MALLOC description to not mention TCmalloc

        Fix ENABLE_TOUCH_SLIDER so that it can be used

        Add a comment

        * Source/cmake/WebKitFeatures.cmake:

2015-04-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Print sorted feature list at the very end of the configure process
        https://bugs.webkit.org/show_bug.cgi?id=143596

        Reviewed by Martin Robinson.

        * CMakeLists.txt: Call PRINT_WEBKIT_OPTIONS at the bottom of the file.
        * Source/cmake/WebKitFeatures.cmake: Split option printing into PRINT_WEBKIT_OPTIONS macro,
        and sort the options before printing. Reorder some code so that features still get
        propagated to the bindings generators.

2015-04-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Options should be marked as advanced by default
        https://bugs.webkit.org/show_bug.cgi?id=143572

        Reviewed by Gyuyoung Kim.

        Options defined with WEBKIT_OPTION_DEFINE are now advanced so that they are hidden from
        users by default, unless WEBKIT_OPTION_DEFAULT_PORT_VALUE is used. Add new macros
        WEBKIT_OPTION_DEFINE_PUBLIC to define an option that's not hidden by default, to be used
        for adding port-specific options, and WEBKIT_OPTION_PRIVATE_PORT_VALUE to override an
        option without making it public.

        * Source/cmake/WebKitFeatures.cmake:

2015-04-10  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        [CMake] Remove unnecessary ENABLE_WEBCORE switch
        https://bugs.webkit.org/show_bug.cgi?id=143584

        Reviewed by Csaba Osztrogonác.

        WebCore should be built for all ports. So ENABLE_WEBCORE switch looks be redundant.
        Remove it.

        * CMakeLists.txt:
        * Source/CMakeLists.txt:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitFS.cmake:

2015-04-08  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, revert accidental commit.

        * Makefile.shared:

2015-04-08  Alex Christensen  <achristensen@webkit.org> and Patrick Gansterer  <paroga@webkit.org>

        Add CMake build system for WinCairo port.
        https://bugs.webkit.org/show_bug.cgi?id=115944

        Reviewed by Chris Dumez.

        * Source/cmake/OptionsWindows.cmake:
        * Source/cmake/WebKitMacros.cmake:
        Make ADD_PRECOMPILED_HEADER more like http://stackoverflow.com/questions/148570/using-pre-compiled-headers-with-cmake

2015-04-06  Alberto Garcia  <berto@igalia.com>

        [GTK] Fix HPPA build
        https://bugs.webkit.org/show_bug.cgi?id=143453

        Reviewed by Darin Adler.

        Add HPPA to the list of supported CPUs.

        * CMakeLists.txt:

2015-04-03  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed, kick the GTK bots to fix an incremental build issue.

        * Source/cmake/OptionsGTK.cmake:

2015-04-03  Zan Dobersek  <zdobersek@igalia.com>

        Fix the EFL and GTK build after r182243
        https://bugs.webkit.org/show_bug.cgi?id=143361

        Reviewed by Csaba Osztrogonác.

        * Source/PlatformEfl.cmake: Add a custom command that copies
        the InspectorBackendCommands.js file into the proper directory
        under DerivedSources/WebInspectorUI/.

2015-04-01  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Windows and Mac.
        https://bugs.webkit.org/show_bug.cgi?id=143293

        Reviewed by Filip Pizlo.

        * CMakeLists.txt:
        Set DERIVED_SOURCES_WTF_DIR for Windows.
        * Source/CMakeLists.txt:
        Don't compile bmalloc on Windows.
        * Source/cmake/OptionsCommon.cmake:
        Use the absolute path of the C preprocessor.
        * Source/cmake/OptionsWinCairo.cmake:
        Added needed definitions.
        * Source/cmake/OptionsWindows.cmake:
        Set some default values and removed support for old Visual Studio versions before /MP.
        * Source/cmake/WebKitFS.cmake:
        Make WTF DerivedSources directory.
        * Source/cmake/WebKitMacros.cmake:
        Added ADD_PRECOMPILED_HEADER macro based on
        http://stackoverflow.com/questions/148570/using-pre-compiled-headers-with-cmake

2015-04-01  Gwang Yoon Hwang  <yoon@igalia.com>

        Use colored diagnostics when building with cmake + ninja + clang
        https://bugs.webkit.org/show_bug.cgi?id=143297

        Reviewed by Žan Doberšek.

        Because that ninja sets subprocess stdout/stderr to a pipe, clang
        disables colored output.
        This patch forces clang to use colored diagnostics when we are using
        the ninja.

        * Source/cmake/OptionsCommon.cmake:

2015-03-29  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CMake] Update old CMakeList.txt in gtest
        https://bugs.webkit.org/show_bug.cgi?id=143192

        Reviewed by Darin Adler.

        CMake ports have used cmake/gtest/CMakeLists.txt instead of ThirdParty/test/CMakeLists.txt
        in order to build gtest. However it looks ThirdParty/test/CMakeLists.txt won't be used anymore.
        So this patch moves cmake/gtest/CMakeLists.txt to ThirdPart/test/CMakeLists.txt, and use it.

        * Source/CMakeLists.txt:
        * Source/cmake/gtest/CMakeLists.txt: Removed.

2015-03-27  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CMake] Remove unnecessary INCLUDE_IF_EXISTS macro
        https://bugs.webkit.org/show_bug.cgi?id=143138

        Reviewed by Csaba Osztrogonác.

        INCLUDE_IF_EXISTS isn't used except for 2 places. However those uses can
        be replaced with WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS.

        * Source/cmake/OptionsWindows.cmake:
        Set "PORT" instead of "PORT_FALLBACK" because there is no benefit to define PORT_FALLBACK.
        * Source/cmake/WebKitMacros.cmake:

2015-03-27  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>

        [GStreamer] share GL context in pipeline, part 2
        https://bugs.webkit.org/show_bug.cgi?id=143049

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: USE_GSTREAMER_GL is set only if
        OpenGL/ES2 is found and GLX/EGL is found too.

2015-03-26  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=143112

        Reviewed by Chris Dumez.

        * Source/cmake/OptionsMac.cmake:

2015-03-24  Csaba Osztrogonác  <ossy@webkit.org>

        [EFL] Add OpenWebRTC in jhbuild
        https://bugs.webkit.org/show_bug.cgi?id=142778

        Reviewed by Gyuyoung Kim.

        Original patch by Philippe Normand <pnormand@igalia.com>

        * Source/cmake/OptionsEfl.cmake: Look for OpenWebRTC library if
        mediastream build is enabled.

2015-03-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add a configure option to build without Redirected XComposite Window
        https://bugs.webkit.org/show_bug.cgi?id=142865

        Reviewed by Žan Doberšek.

        The Redirected XComposite Window was added to support some
        features like GtkOverlay, but in cases where we don't need such
        features, it's more efficient to use the XID of the WebKitWebView
        window as the native surface handle for the accelerated
        compositing. This patch adds USE_REDIRECTED_XCOMPOSITE_WINDOW,
        that is enabled by default for X11 target when OpenGL is enabled.

        * Source/cmake/OptionsGTK.cmake:

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

        [GTK] Search for the Wayland dependency when enabling Wayland target
        https://bugs.webkit.org/show_bug.cgi?id=142876

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: The Wayland dependency isn't a public
        requirement of either the GTK+ or GDK pkg-config files, so we have to
        search for it ourselves when WebKitGTK+ has been configured to support
        the Wayland windowing target.

2015-03-20  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed, kick the GTK bots to regenerate makefile.
        https://bugs.webkit.org/show_bug.cgi?id=137394

        * Source/cmake/OptionsEfl.cmake: Revert my last accidenatal change.
        * Source/cmake/OptionsGTK.cmake: Really kick the GTK bots.

2015-03-20  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed, kick the GTK bots to regenerate makefile.
        https://bugs.webkit.org/show_bug.cgi?id=137394

        * Source/cmake/OptionsEfl.cmake:

2015-03-19  Csaba Osztrogonác  <ossy@webkit.org>

        [GTK] Fix inspector userinterface related incremental build issue
        https://bugs.webkit.org/show_bug.cgi?id=142849

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Revert r181733.

2015-03-18  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed, kick the GTK bots to regenerate makefile.

        * Source/cmake/OptionsGTK.cmake:

2015-03-17  Ryuan Choi  <ryuan.choi@navercorp.com>

        [EFL] Expose JavaScript binding interface through ewk_extension
        https://bugs.webkit.org/show_bug.cgi?id=142033

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Added HEADER_INSTALL_DIR variable.

2015-03-17  Philippe Normand  <pnormand@igalia.com>

        [GTK] basic OpenWebRTC build support
        https://bugs.webkit.org/show_bug.cgi?id=142393

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindOpenWebRTC.cmake: Added.
        * Source/cmake/OptionsGTK.cmake: Look for OpenWebRTC library if
        mediastream build is enabled.

2015-03-17  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CMake][EFL] Build test tools only for developer mode
        https://bugs.webkit.org/show_bug.cgi?id=142761

        Reviewed by Csaba Osztrogonác.

        Do not build EFL MiniBrowser, WebKitTestRunner, and ImageDiff on production mode.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake: Move ENABLE_MINIBROWSER to common place.
        * Source/cmake/WebKitFeatures.cmake: Define ENABLE_MINIBROWSER variable.
        * Source/cmakeconfig.h.cmake:

2015-03-16  Ryosuke Niwa  <rniwa@webkit.org>

        Enable ES6 classes by default
        https://bugs.webkit.org/show_bug.cgi?id=142774

        Reviewed by Gavin Barraclough.

        * Source/cmake/WebKitFeatures.cmake:

2015-03-16  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CMake][EFL] Rearrange OptionEFL.cmake to improve readability 
        https://bugs.webkit.org/show_bug.cgi?id=142722

        Reviewed by Csaba Osztrogonác.

        Categorize to define cmake variables, to find necessary packages,
        use upper case for "glib_conponents" cmake variable name, re-arrange
        wrong alphabet sorting, and so on.

        * CMakeLists.txt: Remove WinCE port.
        * Source/cmake/OptionsEfl.cmake:

2015-03-14  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>

        [GStreamer] share GL context in pipeline
        https://bugs.webkit.org/show_bug.cgi?id=142693

        Reviewed by Philippe Normand.

        Add search of gstreamer-gl library in the GStreamer installation. If
        it is found, WTF_USE_GSTREAMER_GL macro is defined.

        * Source/cmake/FindGStreamer.cmake:
        * Source/cmake/OptionsGTK.cmake:

2015-03-13  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=142680

        Reviewed by Gyuyoung Kim.

        * CMakeLists.txt:
        * Source/PlatformMac.cmake: Added stub.
        * Source/cmake/OptionsMac.cmake:
        Change defines to get CMake working.

2015-03-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add an option to enable MiniBrowser for non developer builds and always install it
        https://bugs.webkit.org/show_bug.cgi?id=126688

        Reviewed by Gustavo Noronha Silva.

        Add ENABLE_MINIBROWSER option, enabled by default for development
        builds and disabled for production builds unless explicilty enabled.

        * Source/cmake/OptionsGTK.cmake:

2015-03-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Do not look for child processes in the UI process binary path
        https://bugs.webkit.org/show_bug.cgi?id=135752

        Reviewed by Gustavo Noronha Silva.

        * Source/cmake/OptionsGTK.cmake: Add -DDEVELOPMENT_BUILD=1 to the
        build for development builds.

2015-03-10  Carlos Garcia Campos  <cgarcia@igalia.com> and José Dapena Paz  <jdapena@igalia.com>

        [GTK] Add a configure option to build with OpenGL ES 2
        https://bugs.webkit.org/show_bug.cgi?id=142498

        Reviewed by Martin Robinson.

        Add ENABLE_GLES2 option. It's disabled by default, but if passed
        GLES2 is required and OpenGL is not even searched. Otherwise we
        search for OpenGL as usual, using it only if present.

        * Source/cmake/OptionsGTK.cmake:

2015-03-10  Csaba Osztrogonác  <ossy@webkit.org>

        [cmake] Handle unused parameter warnings as build errors except in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=142338

        Reviewed by Gyuyoung Kim.

        * Source/cmake/WebKitHelpers.cmake:

2015-03-03  Daniel Bates  <dabates@apple.com>

        Convert ManualTests/svg-tooltip.svg to a DRT test
        https://bugs.webkit.org/show_bug.cgi?id=140480

        Reviewed by Alex Christensen.

        * ManualTests/svg-tooltip.svg: Removed.

2015-03-02  Debarshi Ray  <debarshir@gnome.org>

        REGRESSION(r179409): [GTK] Undefined symbol prevents web extensions from being loaded
        https://bugs.webkit.org/show_bug.cgi?id=142165

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/gtksymbols.filter:

2015-02-26  Csaba Osztrogonác  <ossy@webkit.org>

        [EFL] Remove unnecessary comment after r179110
        https://bugs.webkit.org/show_bug.cgi?id=142042

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake:

2015-02-23  Tomas Popela  <tpopela@redhat.com>

        [GTK] Fails to compile with cmake 3.2.x
        https://bugs.webkit.org/show_bug.cgi?id=141796

        With cmake 3.2.x we have to explicitly ask for X11 otherwise the
        X11_X11_LIB variable won't be set thus the X11 linker flags won't be
        added and the build will fail.

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsGTK.cmake:

2015-02-20  Alexey Proskuryakov  <ap@apple.com>

        Remove svn:keywords property.

        As far as I can tell, the property had no effect on any of these files, but also,
        when it has effect it's likely harmful.

        * ManualTests/animation-with-transition.html: Removed property svn:keywords.
        * ManualTests/blur-filter-timing.html: Removed property svn:keywords.
        * ManualTests/compositing/caret-in-compositing-frame.html: Removed property svn:keywords.
        * ManualTests/compositing/font-smoothing.html: Removed property svn:keywords.
        * ManualTests/compositing/missing-iframe-contents.html: Removed property svn:keywords.
        * ManualTests/compositing/requires-backing-change.html: Removed property svn:keywords.
        * ManualTests/compositing/resources/composited-subframe.html: Removed property svn:keywords.
        * ManualTests/compositing/resources/editable-compositing-subframe.html: Removed property svn:keywords.
        * ManualTests/frames/nested-iframe-blit-on-scroll.html: Removed property svn:keywords.
        * ManualTests/frames/resources/blit-on-scroll-subframe.html: Removed property svn:keywords.
        * ManualTests/frames/resources/blit-on-scroll-subsubframe.html: Removed property svn:keywords.
        * ManualTests/plugins/plugin-paint-causes-layout.html: Removed property svn:keywords.
        * ManualTests/screen-availLeft.html: Removed property svn:keywords.
        * ManualTests/transition-accelerated.html: Removed property svn:keywords.

2015-02-17  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CMAKE] Remove CMakeLists.txt in WK1 port
        https://bugs.webkit.org/show_bug.cgi?id=141617

        Reviewed by Anders Carlsson.

        Nobody uses CMake in WK1 port. Remove it.

        * CMakeLists.txt:

2015-02-13  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed, remove empty directories.

        * ManualTests/qt: Removed.

2015-02-11  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [CMake] Don't set flag fuse-ld on the C/C++ compiler flags, but on the linker flags.
        https://bugs.webkit.org/show_bug.cgi?id=141481

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsCommon.cmake: Move -fuse-ld=gold to the linker flags.

2015-02-11  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL][GTK] Use bmalloc instead of tcmalloc
        https://bugs.webkit.org/show_bug.cgi?id=140162

        Reviewed by Carlos Garcia Campos.

        Add bmalloc directory to build list.

        * CMakeLists.txt: Define BMALLOC_DIR directory.
        * Source/CMakeLists.txt: Add bmalloc path to sub-directories list.

2015-02-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add default color chooser implementation using GtkColorChooserDialog
        https://bugs.webkit.org/show_bug.cgi?id=141392

        Reviewed by Gustavo Noronha Silva.

        Enable INPUT_TYPE_COLOR by default for GTK+ port.

        * Source/cmake/OptionsGTK.cmake:

2015-02-09  Sergio Villar Senin  <svillar@igalia.com>

        ASSERTION FAILED: resolvedInitialPosition <= resolvedFinalPosition in WebCore::GridSpan::GridSpan
        https://bugs.webkit.org/show_bug.cgi?id=141328

        Reviewed by Darin Adler.

        Added as manual test because it involves a huge grid allocation
        which is very slow on Debug bots, the only ones capable to trigger
        the assertion.

        * ManualTests/css-grid-layout-item-with-huge-span-crash.html: Added.

2015-02-05  Youenn Fablet  <youenn.fablet@crf.canon.fr> and Xabier Rodriguez Calvar <calvaris@igalia.com>

        [Streams API] Implement a barebone ReadableStream interface
        https://bugs.webkit.org/show_bug.cgi?id=141045

        Reviewed by Benjamin Poulain.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake: Made streams API compilation on by default.

2015-02-02  Filip Pizlo  <fpizlo@apple.com>

        Revert accidental change in r179490.

        * Makefile.shared:

2015-02-02  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, revert accidental change to Makefile.shared in r179478

        * Makefile.shared:

2015-01-28  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [CMake] Minimum python version should be 2.7.
        https://bugs.webkit.org/show_bug.cgi?id=140997

        Reviewed by Csaba Osztrogonác.

        * CMakeLists.txt:

2015-01-26  Nikos Andronikos  <nikos.andronikos-webkit@cisra.canon.com.au>

        Apply feTurbulence spec change to fix zero length vector generation
        https://bugs.webkit.org/show_bug.cgi?id=140812
        
        Reviewed by Darin Adler.

        Recently a bug with the turbulence algorithm was corrected in the
        Filter Effects specification.
        For some seed values this bug allowed zero length vectors to be generated.
        This resulted in large solid color squares being present in the generated image.
        The feTurbulence algorithm was updated to reject zero length vectors. This patch
        applies that change in WebCore.

        Test: svg/filters/feTurbulence_bad_seeds.html

        * platform/graphics/filters/FETurbulence.cpp:
        (WebCore::FETurbulence::initPaint):
        Added rejection sampling during vector generation to avoid zero length vectors. 

2015-01-26  Csaba Osztrogonác  <ossy@webkit.org>

        [cmake] Remove compiler version calculate cruft
        https://bugs.webkit.org/show_bug.cgi?id=140885

        Reviewed by Darin Adler.

        * Source/cmake/WebKitHelpers.cmake:

2015-01-26  Csaba Osztrogonác  <ossy@webkit.org>

        [cmake] Stop compiling with -Wno-error=uninitialized and -Wno-error=literal-suffix
        https://bugs.webkit.org/show_bug.cgi?id=140886

        Reviewed by Žan Doberšek.

        * Source/cmake/WebKitHelpers.cmake:

2015-01-26  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] gtkdoc does not appear in DevHelp
        https://bugs.webkit.org/show_bug.cgi?id=139369

        Reviewed by Philippe Normand.

        Expect the gtkdoc to be generated in folders named with the API version.

        * Source/PlatformGTK.cmake:

2015-01-26  Zan Dobersek  <zdobersek@igalia.com>

        [EFL][GTK] Stop compiling with fno-omit-frame-pointer, -fno-tree-dce
        https://bugs.webkit.org/show_bug.cgi?id=140609

        Reviewed by Csaba Osztrogonác.

        The latest releases of GCC versions 4.7, 4.8 and 4.9 all compile and
        run JSC tests fine without the -fno-tree-dce and -fno-omit-frame-pointer
        compilation flags. Those were added after the jsCStack branch merge, but
        can now be removed since the -ftree-dce issues were fixed in GCC, and
        changes in r173282 and r173298 again enable compiling with -fomit-frame-pointer.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:

2015-01-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r179107.
        https://bugs.webkit.org/show_bug.cgi?id=140880

        The GCC in the bots doesn't support the AsyncTask
        implementation (Requested by KaL on #webkit).

        Reverted changeset:

        "[GTK] Enable IndexedDB"
        https://bugs.webkit.org/show_bug.cgi?id=98932
        http://trac.webkit.org/changeset/179107

2015-01-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Enable IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=98932

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsGTK.cmake: Enable DATABASE_PROCESS and INDEXED_DATABASE.
        * Source/cmake/WebKitFeatures.cmake: Add ENABLE_DATABASE_PROCESS.

2015-01-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add initial database process support
        https://bugs.webkit.org/show_bug.cgi?id=139491

        Reviewed by Sergio Villar Senin.

        * Source/cmake/OptionsGTK.cmake: Set WebKit2_DatabaseProcess_OUTPUT_NAME.

2015-01-22  Ryosuke Niwa  <rniwa@webkit.org>

        Add a build flag for ES6 class syntax
        https://bugs.webkit.org/show_bug.cgi?id=140760

        Reviewed by Michael Saboff.

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

2015-01-21  Csaba Osztrogonác  <ossy@webkit.org>

        [EFL][WK2] EFL MiniBrowser doesn't run because shared library is not found
        https://bugs.webkit.org/show_bug.cgi?id=140049

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsCommon.cmake:

2015-01-21  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(INSPECTOR) ifdef guards
        https://bugs.webkit.org/show_bug.cgi?id=140668

        Reviewed by Darin Adler.

        * Source/PlatformEfl.cmake:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2015-01-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.7.4 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2015-01-19  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CMAKE] Fix cmake warning
        https://bugs.webkit.org/show_bug.cgi?id=140497

        Reviewed by Gustavo Noronha Silva.

        r173155 already tried to fix cmake warning though, the warning is still exist.
        CMAKE_LINK_INTERFACE_LIBRARIES seems to cause this warning. Individual target is
        already set for their libraries though, INTERFACE_LINK_LIBRARIES contains the list
        of transitive link dependencies, and CMAKE_LINK_INTERFACE_LIBRARIES can override
        the INTERFACE_LINK_LIBRARIES property when CMP0022 is not set. CMake warns this override.
        To avoid it, EFL port doesn't set CMAKE_LINK_INTERFACE_LIBRARIES.

        * CMakeLists.txt:

2015-01-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Generate the make dist manifest from a CMake template file
        https://bugs.webkit.org/show_bug.cgi?id=139387

        Reviewed by Martin Robinson.

        Generate manifest.txt from manifest.txt.in. Only expose the dist and
        distcheck targets for developer builds, as they won't work when
        building from a tarball because the manifest is not distributed.

        * Source/PlatformGTK.cmake:

2015-01-15  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(SQL_DATABASE) guards
        https://bugs.webkit.org/show_bug.cgi?id=140434

        Reviewed by Darin Adler.

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

2015-01-11  Sam Weinig  <sam@webkit.org>

        Remove support for SharedWorkers
        https://bugs.webkit.org/show_bug.cgi?id=140344

        Reviewed by Anders Carlsson.

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

2015-01-10  Dan Bernstein  <mitz@apple.com>

        [Xcode, iOS] Files are recompiled when alternating between using make and the Xcode IDE
        https://bugs.webkit.org/show_bug.cgi?id=140339

        Reviewed by Mark Rowe.

        * Makefile.shared: Run xcodebuild with the same PATH with which the Xcode IDE runs. This
        prevents unnecessary rebuilding due to PATH differences.

2015-01-07  Gwang Yoon Hwang  <yoon@igalia.com>

        [GTK][ThreadedCompositor] Add support for threaded compositor.
        https://bugs.webkit.org/show_bug.cgi?id=118265

        Reviewed by Martin Robinson.

        Added the ENABLE_THREADED_COMPOSITOR feature flag to the cmake and
        autotools build systems. The feature is disabled by default.
        And remove deprecated the WTF_USE_TILED_BACKING_STORE feature flag
        from the feature flags.

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

2014-12-23  Alexey Proskuryakov  <ap@apple.com>

        Simplify building with ASan
        https://bugs.webkit.org/show_bug.cgi?id=139916

        Reviewed by Mark Rowe.

        * Makefile.shared: Invoke set-webkit-configuration to store ASan choice as appropriate.

2014-12-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.7.3 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2014-12-10  Jon Honeycutt  <jhoneycutt@apple.com>

        Null dereference performing a "TapAndAHalf" gesture in Google search field

        <https://bugs.webkit.org/show_bug.cgi?id=139506>
        <rdar://problem/19028828>

        Reviewed by Darin Adler.

        * ManualTests/ios/tap-and-a-half-gesture-in-empty-text-field.html: Added.

2014-12-10  Dean Jackson  <dino@apple.com>

        Blur filter performance test doesn't provide results
        https://bugs.webkit.org/show_bug.cgi?id=139462

        Reviewed by Sam Weinig.

        This can't currently work under our performance test
        infrastructure. Move it to a manual test to avoid
        putting FAILures into the results.

        * ManualTests/blur-filter-timing.html: Renamed from PerformanceTests/Interactive/blur-filter-timing.html.

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

        [GTK][WK2] Add HTML5 Notifications support
        https://bugs.webkit.org/show_bug.cgi?id=61140

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindLibNotify.cmake: Added.
        * Source/cmake/OptionsGTK.cmake: add option to enable notifications, look for
        libnotify and use it for a default implementation when found.

2014-12-09  Bem Jones-Bey  <bjonesbe@adobe.com>

        REGRESSION(r155906): Page content disappears on Tuaw article after loading
        https://bugs.webkit.org/show_bug.cgi?id=138100

        Reviewed by Simon Fraser.

        DRT causes an extra paint which makes it impossible to test this with
        an automated test.

        * ManualTests/float-layer-not-painting.html: Added.

2014-12-07  Alberto Garcia  <berto@igalia.com>

        [GTK] WebKit has a new required dependency on GnuTLS
        https://bugs.webkit.org/show_bug.cgi?id=136158

        Reviewed by Martin Robinson.

        Detect if GnuTLS is installed and enable or disable subtle crypto
        support accordingly.

        * Source/cmake/OptionsGTK.cmake:

2014-12-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Missing API detected in GObject DOM bindings after r176630
        https://bugs.webkit.org/show_bug.cgi?id=139201

        Reviewed by Gustavo Noronha Silva.

        Change GENERATE_BINDINGS macro to receive a list of optional
        additional dependencies, so that we can add more dependecies
        without having to change the macro.

        * Source/cmake/WebKitMacros.cmake:

2014-12-05  Simon Fraser  <simon.fraser@apple.com>

        Programmatic scrolling and content changes are not always synchronized
        https://bugs.webkit.org/show_bug.cgi?id=139245
        rdar://problem/18833612

        Reviewed by Anders Carlsson.
        
        Manual test that tries to sync layout with programmatic scrolling.

        * ManualTests/programmatic-scroll-flicker.html: Added.

2014-12-04  Alberto Garcia  <berto@igalia.com>

        can not find cairo-gl.h when build webkit with gtk on ubuntu 14.04
        https://bugs.webkit.org/show_bug.cgi?id=136576

        Reviewed by Carlos Garcia Campos.

        CMake should complain if Accelerated 2D Canvas is explicitly
        enabled but cairo-gl is not found.

        * Source/cmake/OptionsGTK.cmake:

2014-12-03  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        [EFL] Add subtle crypto to the build system
        https://bugs.webkit.org/show_bug.cgi?id=138612

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsEfl.cmake:

2014-12-01  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Add a ENABLE_CSS_SCROLL_SNAP macro to CMake build system
        https://bugs.webkit.org/show_bug.cgi?id=139085

        Reviewed by Andreas Kling.

        * Source/cmake/OptionsEfl.cmake: Add ENABLE_CSS_SCROLL_SNAP.
        * Source/cmake/WebKitFeatures.cmake: ditto.
        * Source/cmakeconfig.h.cmake: ditto.

2014-11-30  Ryuan Choi  <ryuan.choi@navercorp.com>

        [EFL] Drop support for the EFL 1.7
        https://bugs.webkit.org/show_bug.cgi?id=139114

        Reviewed by Gyuyoung Kim.

        * Source/cmake/EFLHelpers.cmake: Removed.
        * Source/cmake/FindEcore.cmake: Removed.
        * Source/cmake/FindEdje.cmake: Removed.
        * Source/cmake/FindEet.cmake: Removed.
        * Source/cmake/FindEeze.cmake: Removed.
        * Source/cmake/FindEfreet.cmake: Removed.
        * Source/cmake/FindEina.cmake: Removed.
        * Source/cmake/FindElementary.cmake: Removed.
        * Source/cmake/FindEvas.cmake: Removed.
        * Source/cmake/OptionsEfl.cmake:

2014-11-28  Philippe Normand  <pnormand@igalia.com>

        [CMake] Build failure against GStreamer git master
        https://bugs.webkit.org/show_bug.cgi?id=138872

        Reviewed by Csaba Osztrogon.

        * Source/cmake/FindGStreamer.cmake: Simplified the
        FIND_GSTREAMER_COMPONENT macro. Trust pkg-config for include
        headers lookup, there's no need to do this manually. Also
        explicitely check the version specified in GStreamer_FIND_VERSION.

2014-11-27  Ryuan Choi  <ryuan.choi@navercorp.com>

        [EFL] Remove E_Dbus dependency
        https://bugs.webkit.org/show_bug.cgi?id=136355

        Reviewed by Gyuyoung Kim.

        * Source/cmake/FindE_DBus.cmake: Removed.
        * Source/cmake/OptionsEfl.cmake:

2014-11-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.7.1 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2014-11-20  Csaba Osztrogonác  <ossy@webkit.org>

        [CMake] Use ld.gold if it is available to speedup builds
        https://bugs.webkit.org/show_bug.cgi?id=137953

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsCommon.cmake:

2014-11-19  Akos Kiss  <akiss@inf.u-szeged.hu>

        Fix the detection of toolchain support for Cortex-A53 erratum 835769 workaround
        https://bugs.webkit.org/show_bug.cgi?id=138840

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsCommon.cmake:

2014-11-13  Csaba Osztrogonác  <ossy@webkit.org>

        Remove Source/Platform cruft
        https://bugs.webkit.org/show_bug.cgi?id=138658

        Reviewed by Anders Carlsson.

        * CMakeLists.txt:
        * Source/Platform: Removed.

2014-11-10  Akos Kiss  <akiss@inf.u-szeged.hu>

        Enable Cortex-A53-specific code paths by default if core is detected.
        https://bugs.webkit.org/show_bug.cgi?id=138499

        Reviewed by Csaba Osztrogonác.

        On ARM64/Linux, check /proc/cpuinfo for CPU part 0xd03 (signaling
        Cortex-A53) and set the initial value of WTF_CPU_ARM64_CORTEXA53 to true
        if found.

        Since on ARM64/Linux the part number that cpuinfo reports depends on
        the core the query is run on, the check is bound to and executed on the
        available cores one by one.

        * Source/cmake/OptionsCommon.cmake:

2014-11-10  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        [EFL] Remove unnecessary version check from OptionsEfl.cmake
        https://bugs.webkit.org/show_bug.cgi?id=138498

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsEfl.cmake:

2014-11-07  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        [EFL] Require at least EFL 1.9 if ENABLE(ACCESSIBILITY) after r175098
        https://bugs.webkit.org/show_bug.cgi?id=138465

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake:

2014-11-03  Dean Jackson  <dino@apple.com>

        Add ENABLE_FILTERS_LEVEL_2 feature guard.
        https://bugs.webkit.org/show_bug.cgi?id=138362

        Reviewed by Tim Horton.

        Add a new feature define for Level 2 of CSS Filters.
        http://dev.w3.org/fxtf/filters-2/

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

2014-11-03  Akos Kiss  <akiss@inf.u-szeged.hu>

        Workaround for Cortex-A53 erratum 835769
        https://bugs.webkit.org/show_bug.cgi?id=138315

        Reviewed by Filip Pizlo.

        This patch introduces CMake variable and preprocessor macro
        WTF_CPU_ARM64_CORTEXA53 with the aim of enabling Cortex-A53-specific
        code paths, if set true.

        * Source/cmake/OptionsCommon.cmake:
        Add -mfix-cortex-a53-835769 to the compiler flags if compiler supports
        it.
        * Source/cmakeconfig.h.cmake:
        #cmakedefine01 for WTF_CPU_ARM64_CORTEXA53

2014-11-02  Akos Kiss  <akiss@inf.u-szeged.hu>

        [GTK] Fix the build of FTL JIT
        https://bugs.webkit.org/show_bug.cgi?id=138298

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake:
        Remove the need for the LIBCXXABI package.

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

        REGRESSION(CMake): Make it possible to build without introspection
        https://bugs.webkit.org/show_bug.cgi?id=138006

        Reviewed by Philippe Normand.

        Add ENABLE_INTROSPECTION option.

        * Source/PlatformGTK.cmake: Dot not add gir global target if
        introspection is disabled.
        * Source/cmake/OptionsGTK.cmake: Do not add gir individual targets if
        introspection is disabled.

2014-10-31  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Support script message handlers WebKitUserContentManager
        https://bugs.webkit.org/show_bug.cgi?id=133730

        Reviewed by Carlos Garcia Campos.

        Support user script message handlers in WebKitUserContentManager.
        This needs building with ENABLE_USER_MESSAGE_HANDLERS, for which
        an option is added to the CMake build files. The option is disabled
        globally by default, and the WebKitGTK port enables it. On the API
        level, two new methods to register and unregister names are provided
        in the "window.webkit" namespace, and on message reception the
        "WebKitUserContentManager::script-message-received" signal is
        emitted, using the registered names as signal detail.

        * Source/cmake/OptionsGTK.cmake: For the GTK port, enable the
        ENABLE_USER_MESSAGE_HANDLERS feature by default.
        * Source/cmake/WebKitFeatures.cmake: Add feature description for
        ENABLE_USER_MESSAGE_HANDLERS, disabled by default.

2014-10-29  Raphael Kubo da Costa  <rakuco@FreeBSD.org>

        [GTK] Bump libsoup's minimum version to 2.42.0.
        https://bugs.webkit.org/show_bug.cgi?id=138086

        Reviewed by Martin Robinson.

        The SOUP_CHECK_VERSION macro was added in libsoup 2.41.1, and the
        soup-version.h header was added to soup.h in 2.41.4, which then becomes
        the minimum version required to build the port these days.

        In addition, since the autotools build system required 2.42.0 before
        being retired, require the same version here. Version 2.42.0 was also
        recommended in
        https://lists.webkit.org/pipermail/webkit-gtk/2013-March/001387.html.

        * Source/cmake/OptionsGTK.cmake:

2014-10-28  Tibor Meszaros  <tmeszaros.u-szeged@partner.samsung.com>

        [EFL] Remove unnecessary defines from OptionsEfl.cmake
        https://bugs.webkit.org/show_bug.cgi?id=138132

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsEfl.cmake:

2014-10-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.7.1 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2014-10-21  Ryuan Choi  <ryuan.choi@gmail.com>

        [EFL] Remove unnecessary ENABLE_3D_RENDERING definition from OptionsEfl.cmake
        https://bugs.webkit.org/show_bug.cgi?id=137946

        Reviewed by Gyuyoung Kim.

        ENABLE_3D_RENDERING is already enabled as WEBKIT_OPTION_DEFAULT_PORT_VALUE since r135813.

        * Source/cmake/OptionsEfl.cmake:

2014-10-21  Dániel Bátyai  <dbatyai.u-szeged@partner.samsung.com>

        Fix FTL Native Inlining for EFL
        https://bugs.webkit.org/show_bug.cgi?id=137774

        Reviewed by Michael Saboff.

        Updated CMake for FTL Native Inlining.

        * CMakeLists.txt:
        * Source/cmake/FindClang.cmake: Added.
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmakeconfig.h.cmake:

2014-10-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Generate all Inspector domains together in JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=137748

        Reviewed by Brian Burg.

        * Source/PlatformEfl.cmake:

2014-10-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add initial gestures support
        https://bugs.webkit.org/show_bug.cgi?id=137812

        Reviewed by Sergio Villar Senin.

        Check if the GTK+ version supports gestures or not.

        * Source/cmake/FindGTK3.cmake:
        * Source/cmake/OptionsGTK.cmake:

2014-10-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(CMake): [GTK] WebKitSettings:enable-smooth-scrolling does nothing
        https://bugs.webkit.org/show_bug.cgi?id=137781

        Reviewed by Martin Robinson.

        We used to enable smooth scrolling unconditionally in autotools
        (via WebKitFeatures.m4), but since the switch to CMake it's
        unconditionally disabled, so changing the setting doesn't have any
        effect.

        * Source/cmake/OptionsGTK.cmake: Enable smooth scrolling.

2014-10-16  Pascal Jacquemart  <p.jacquemart@samsung.com>

        Removing CUSTOM_PROTOCOLS guard
        https://bugs.webkit.org/show_bug.cgi?id=137741

        Reviewed by Benjamin Poulain.

        * Source/cmake/OptionsEfl.cmake:

2014-10-11  KwangHyuk Kim  <hyuki.kim@samsung.com>

        [EFL] Enable WebP support.
        https://bugs.webkit.org/show_bug.cgi?id=136156

        Reviewed by Gyuyoung Kim.

        Add WebP package finding rule.

        * Source/cmake/OptionsEfl.cmake:

2014-10-07  Pascal Jacquemart  <p.jacquemart@samsung.com>

        [EFL] Enable custom URI schemes with CustomProtocols
        https://bugs.webkit.org/show_bug.cgi?id=128177

        Reviewed by Gyuyoung Kim.

        Fixing ewk_context_url_scheme_register() ewebkit2 API
        rely on r162449 - CustomProtocols implementation from Carlos Garcia Campos

        * Source/cmake/OptionsEfl.cmake: Forcing CUSTOM_PROTOCOLS flag

2014-10-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        Bump version to 2.7.0
        https://bugs.webkit.org/show_bug.cgi?id=137301

        Rubber-stamped by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers

2014-09-30  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Rename TEST_THEME_DIR macro
        https://bugs.webkit.org/show_bug.cgi?id=137244

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsEfl.cmake: Rename TEST_THEME_DIR to DEFAULT_THEME_DIR.

2014-09-27  Dan Bernstein  <mitz@apple.com>

        WebKit top of tree sources won't build in 10.9 w/ Xcode 6.0.1
        https://bugs.webkit.org/show_bug.cgi?id=137053

        Reviewed by Mark Rowe.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:
        In the build pre-action, pass the --wksi and --llvm options to
        copy-webkitlibraries-to-product-directory.
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme: Ditto.

2014-09-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Enable CSS_IMAGE_SET in production builds
        https://bugs.webkit.org/show_bug.cgi?id=137142

        Reviewed by Alejandro G. Castro.

        This is required by the inspector to show some of the icons that
        has a HiDPI variant.

        * Source/cmake/OptionsGTK.cmake:

2014-09-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        [Gtk] build.sh needs a -- before make options when the build command is cmake --build
        https://bugs.webkit.org/show_bug.cgi?id=136377

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsGTK.cmake: Only create the build.sh script
        for CMake versions less than 3.

2014-09-25  Csaba Osztrogonác  <ossy@webkit.org>

        Remove WinCE port from trunk
        https://bugs.webkit.org/show_bug.cgi?id=136951

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsWinCE.cmake: Removed.
        * Source/cmake/WebKitPackaging.cmake:

2014-09-17  Renato Nagy  <rnagy@inf.u-szeged.hu>

        [EFL][GTK] Remove WebKit1 related codes
        https://bugs.webkit.org/show_bug.cgi?id=136853

        Reviewed by Csaba Osztrogonác.

        Gtk and EFL WebKit1 ports no longer exist. Webkit1 related codes were deleted
        from scripts.

        * Source/PlatformGTK.cmake:

2014-09-16  Tibor Meszaros  <tmeszaros.u-szeged@partner.samsung.com>

        Fix FindICU.cmake
        https://bugs.webkit.org/show_bug.cgi?id=136820

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/FindICU.cmake:

2014-09-15  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Remove FIND_PACKAGE_HANDLE_STANDARD_ARGS call for WAYLAND_EGL in FindWayland.cmake
        https://bugs.webkit.org/show_bug.cgi?id=136814

        Reviewed by Philippe Normand.

        * Source/cmake/FindWayland.cmake: This line was committed by mistake.
        We bundle the wayland-egl dependency with wayland-client and wayland-server
        and store the resulting variables with the WAYLAND_ prefix. Because of this
        this line wasn't exporting anything useful.

2014-09-12  Csaba Osztrogonác  <ossy@webkit.org>

        URTBF after r173574.

        * Source/cmake/WebKitMacros.cmake:

2014-09-11  László Langó  <llango.u-szeged@partner.samsung.com>

        [JavaScriptCore] Fix FTL on platform EFL.
        https://bugs.webkit.org/show_bug.cgi?id=133571

        Reviewed by Filip Pizlo.

        Revert r169181.

        * Source/cmake/FindLIBCXXABI.cmake: Removed.
        * Source/cmake/OptionsEfl.cmake:

2014-09-08  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        Remove FILTERS flag
        https://bugs.webkit.org/show_bug.cgi?id=136571

        Reviewed by Darin Adler.

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

2014-09-04  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        Remove CSS_FILTERS flag
        https://bugs.webkit.org/show_bug.cgi?id=136529

        Reviewed by Dirk Schulze.

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

2014-09-01  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CMAKE] Build warning by INTERFACE_LINK_LIBRARIES
        https://bugs.webkit.org/show_bug.cgi?id=136194

        Reviewed by Csaba Osztrogonác.

        Set the LINK_INTERFACE_LIBRARIES target property on the top level CMakeLists.txt.

        * CMakeLists.txt:

2014-08-29  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        [EFL] Remove non Coordinated Graphics code path from cmake build system after r142169
        https://bugs.webkit.org/show_bug.cgi?id=135560

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Removed TILED_BACKING_STORE guard.

2014-08-28  Brian J. Burg  <burg@cs.washington.edu>

        WebInspectorUI.framework is not built for the "All Source" Xcode scheme
        https://bugs.webkit.org/show_bug.cgi?id=136343

        Reviewed by David Kilzer.

        The "build" and "run" actions in Xcode should copy over the latest Inspector resources.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2014-08-27  Krzysztof Czech  <k.czech@samsung.com>

        [EFL] Share fast/speechsynthesis/ with other ports
        https://bugs.webkit.org/show_bug.cgi?id=136224

        Reviewed by Chris Fleizach.

        Enable WebSpeech for EFL.

        * Source/cmake/OptionsEfl.cmake:

2014-08-26  Krzysztof Czech  <k.czech@samsung.com>

        [EFL] Utilize espeak as a synthesizer back-end for WebSpeech
        https://bugs.webkit.org/show_bug.cgi?id=136127

        Reviewed by Gyuyoung Kim.

        Add build support for espeak.

        * Source/cmake/FindEspeak.cmake: Added.
        * Source/cmake/OptionsEfl.cmake: Add Espeak dependency.

2014-08-26  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Build break using clang
        https://bugs.webkit.org/show_bug.cgi?id=136245

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake:
        Disable ENABLE_WERROR when compiler is Clang as workaround because there are too many warnings.
        Some warnings are from system libraries.

2014-08-25  Alberto Garcia  <berto@igalia.com>

        [GTK] Unify webkitgtk and webkit2gtk directories
        https://bugs.webkit.org/show_bug.cgi?id=136209

        Reviewed by Carlos Garcia Campos.

        Use webkit2gtk-X.X both for the process binaries and the injected
        bundle.

        * Source/cmake/OptionsGTK.cmake:

2014-08-24  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Move Efl specific code from Source/CMakeLists.txt
        https://bugs.webkit.org/show_bug.cgi?id=136206

        Reviewed by Gyuyoung Kim.

        WebKit/Efl only uses ENABLE_WERROR so it can be moved into OptionsEfl.cmake.
        Inaddition, renamed ADDITIONAL_FLAGS to ADDITIONAL_COMPILER_FLAGS.

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

2014-08-24  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Introduce DEVELOPER_MODE
        https://bugs.webkit.org/show_bug.cgi?id=135884

        Reviewed by Gyuyoung Kim.

        Like GTK port, DEVELOPER_MODE can be good solution for developing, debugging and testing
        instead of SHARED_CORE.
        SHARED_CORE can reduce link time and memory consumption but it is slightly different
        from release binary.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitHelpers.cmake:
        Moved fvisibility=hidden to OptionsEfl.cmake

2014-08-22  KwangHyuk Kim  <hyuki.kim@samsung.com>

        [EFL] Turn on ENABLE_GAMEPAD_DEPRECATED option.
        https://bugs.webkit.org/show_bug.cgi?id=136110

        Reviewed by Gyuyoung Kim.

        Turn on ENABLE_GAMEPAD_DEPRECATED option for the WK2 Efl.

        * Source/cmake/OptionsEfl.cmake:

2014-08-22  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Apply eflsymbols.filter to WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=136148

        Reviewed by Csaba Osztrogonác.

        eflsymbol filter hasn't been applied to WK2 port. Additionally clean up WK1 symbol
        in the eflsymbols.filter.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/eflsymbols.filter:

2014-08-21  Zalan Bujtas  <zalan@apple.com>

        Enable SATURATED_LAYOUT_ARITHMETIC.
        https://bugs.webkit.org/show_bug.cgi?id=136106

        Reviewed by Simon Fraser.

        SATURATED_LAYOUT_ARITHMETIC protects LayoutUnit against arithmetic overflow.
        (No measurable performance regression on Mac.)

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

2014-08-19  Zalan Bujtas  <zalan@apple.com>

        Remove ENABLE(SUBPIXEL_LAYOUT).
        https://bugs.webkit.org/show_bug.cgi?id=136077

        Reviewed by Simon Fraser.

        Remove compile time flag SUBPIXEL_LAYOUT. All ports have it enabled for a while now.

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

2014-08-17  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Optimization-disabling compiler flags should be appended to CMAKE_C(XX)_FLAGS_RELEASE
        https://bugs.webkit.org/show_bug.cgi?id=135980

        Reviewed by Martin Robinson.

        CMAKE_C(XX)_FLAGS_RELEASE variables usually contain the -On flag which
        overrides any other disabled optimization that was prepended to these
        variables or was added to the CMAKE_C(XX)_FLAGS variables which CMake
        lists first in the final list of compilation flags.

        To avoid -On re-enabling optimizations that we'd like to keep disabled,
        the specific compiler flags must be appended to CMAKE_C(XX)_FLAGS_RELEASE.

        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsEfl.cmake: Also do the appending with CMAKE_SHARED_LINKER_FLAGS_RELEASE.
        * Source/cmake/OptionsGTK.cmake:

2014-08-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.5.3 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2014-08-15  Ting-Wei Lan  <lantw44@gmail.com>

        [GTK] Disable memory sampler on non-Linux system
        https://bugs.webkit.org/show_bug.cgi?id=134483

        Reviewed by Philippe Normand.

        Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp only works on
        Linux because it uses many Linux-specific features, so we should disable
        memory sampler on other systems by default.

        * Source/cmake/OptionsGTK.cmake:

2014-08-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] HTML API documentation should also be installed versioned
        https://bugs.webkit.org/show_bug.cgi?id=135970

        Reviewed by Philippe Normand.

        * Source/PlatformGTK.cmake: Append -${WEBKITGTK_API_VERSION} to
        the directory name.

2014-08-14  Tomas Popela  <tpopela@redhat.com>

        Add support for ppc, ppc64, ppc64le, s390, s390x into the CMake build
        https://bugs.webkit.org/show_bug.cgi?id=135937

        Reviewed by Carlos Garcia Campos.

        * CMakeLists.txt:

2014-08-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] REGRESSION(r171598, CMake): Introspection files are installed at the wrong path
        https://bugs.webkit.org/show_bug.cgi?id=135934

        Reviewed by Gustavo Noronha Silva.

        Since r171598 gir files are installed under $datadir/webkitgtk-4.0/gir-1.0/.
        The gir files should installed in $datadir/gir-1.0/ together with all other
        gir files. We don't need to install introspection files in a versioned
        directory because their filenames already contain the binary version. But before
        r171598, the files were only installed to the right directory if the
        gobject-instrospection pkg-config file was in the same prefix than the one we
        wanted to install, because the gir and typelibs directories were extracted from
        the pkg-config file. We should define INTROSPECTION_INSTALL_GIRDIR and
        INTROSPECTION_INSTALL_TYPELIBDIR in OptionsGTK.cmake based on $datadir and $libdir
        like we do in the autotools build.

        * Source/cmake/FindGObjectIntrospection.cmake: Do not define
        INTROSPECTION_INSTALL_GIRDIR and INTROSPECTION_INSTALL_TYPELIBDIR.
        * Source/cmake/OptionsGTK.cmake: Define
        INTROSPECTION_INSTALL_GIRDIR and INTROSPECTION_INSTALL_TYPELIBDIR.

2014-08-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WebKit DOM documentation (webkitdomgtk) not installed after make install
        https://bugs.webkit.org/show_bug.cgi?id=135836

        Reviewed by Philippe Normand.

        * Source/PlatformGTK.cmake: Add install command to also install
        the GObject DOM bindings API docs.

2014-08-14  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed. In r165709 I mistakenly appended the -fno-exceptions
        and -fno-strict-aliasing compiler flags to CMAKE_CXX_FLAGS and then
        re-set CMAKE_C_FLAGS with the new string. The two flags should really
        be appended to CMAKE_C_FLAGS and the same variable re-set with the
        new string.

        * Source/cmake/OptionsCommon.cmake:

2014-08-13  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=135819

        Reviewed by Laszlo Gombos.

        * Source/cmake/OptionsMac.cmake:
        Disable some more features temporarily to get CMake working.
        * Source/cmake/WebKitMacros.cmake:
        Added an extension parameter to GENERATE_BINDINGS to allow ObjC bindings to generate .mm files.

2014-08-12  Eduardo Lima Mitev  <elima@igalia.com>

        [GTK] Subtle-crypto feature off by default and add a new configure flag to enable it
        https://bugs.webkit.org/show_bug.cgi?id=135798

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsGTK.cmake: Makes SUBTLE_CRYPTO flag off by default.

2014-08-12  Eduardo Lima Mitev  <elima@igalia.com>
        [GTK] Adds dependency on GnuTLS 3.0+ for the implementation of subtle crypto algorithms
        https://bugs.webkit.org/show_bug.cgi?id=133317

        GnuTLS is already an indirect dependency through libsoup -> glib-networking.

        Reviewed by Philippe Normand.

        No new tests since no new functionality has been added.

        * Source/cmake/OptionsGTK.cmake: Adds search for required GnuTLS package

2014-08-11  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r172393.
        https://bugs.webkit.org/show_bug.cgi?id=135796

        discussion needed about GnuTLS version bump on the bots
        (Requested by philn on #webkit).

        Reverted changeset:

        https://bugs.webkit.org/show_bug.cgi?id=133317
        http://trac.webkit.org/changeset/172393

2014-08-11  Eduardo Lima Mitev  <elima@igalia.com>
        [GTK] Adds dependency on GnuTLS 3.0+ for the implementation of subtle crypto algorithms
        https://bugs.webkit.org/show_bug.cgi?id=133317

        GnuTLS is already an indirect dependency through libsoup -> glib-networking.

        Reviewed by Philippe Normand.

        No new tests since no new functionality has been added.

        * Source/cmake/OptionsGTK.cmake: Adds search for required GnuTLS package

2014-08-11  Eduardo Lima Mitev  <elima@igalia.com>

        [GTK] Adds stubs for all subtle crypto algorithm implemntations
        https://bugs.webkit.org/show_bug.cgi?id=133316

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsGTK.cmake: Add ENABLE_SUBTLE_CRYPTO option
        * Source/cmake/WebKitFeatures.cmake: Add ENABLE_SUBTLE_CRYPTO option
        * Source/cmakeconfig.h.cmake: Define ENABLE_SUBTLE_CRYPTO

2014-08-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.5.2 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2014-08-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] REGRESSION(r166239): The ld version script is not being used
        https://bugs.webkit.org/show_bug.cgi?id=135694

        Reviewed by Martin Robinson.

        Move the symbols filter file from Tools/gtk to Source/cmake and rename
        it as gtksymbols.filter. Also updated it, since some of the symbols
        exported were renamed.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/gtksymbols.filter: Renamed from Tools/gtk/symbols.filter.

2014-08-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Child processes should be installed in a versioned directory
        https://bugs.webkit.org/show_bug.cgi?id=135754

        Reviewed by Gustavo Noronha Silva.

        Define LIBEXEC_INSTALL_DIR as
        ${CMAKE_INSTALL_FULL_LIBEXECDIR}/webkitgtk-${WEBKITGTK_API_VERSION}
        so that the child processes are installed in $libexec/webkitgtk-4.0.
        This makes it possible to install 2.6 in parallel to older versions.

        * Source/cmake/OptionsGTK.cmake:

2014-08-08  Alex Christensen  <achristensen@webkit.org>

        Progress towards using CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=135662

        Reviewed by Laszlo Gombos.

        * CMakeLists.txt:
        Mavericks has a flex version of "flex 2.5.35 Apple(flex-31)" which CMake doesn't like on Mac.
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        Added features that are needed by the Mac port.
        * Source/cmake/OptionsMac.cmake:
        Enable CSS_IMAGE_SET based on FeatureDefines.h.
        Disable the FTL with CMake for now.
        * Source/cmake/OptionsEFL.cmake:
        * Source/cmake/OptionsGTK.cmake:
        Enable subpixel layout to not conflict with FeatureDefines.h

2014-08-08  Simon Fraser  <simon.fraser@apple.com>

        Undo some erroneous changes to the Xcode scheme files from r172259.
        
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2014-08-08  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Drop the required version of CMake down to 2.8.8
        https://bugs.webkit.org/show_bug.cgi?id=135713

        Reviewed by Alex Christensen.

        * CMakeLists.txt: Require CMake 2.8.8.

2014-08-07  Benjamin Poulain  <bpoulain@apple.com>

        Get rid of INPUT_SPEECH
        https://bugs.webkit.org/show_bug.cgi?id=135672

        Reviewed by Andreas Kling.

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

2014-08-07  Csaba Osztrogonác  <ossy@webkit.org>

        [GTK] Disable IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=135692

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake:

2014-08-06  Dean Jackson  <dino@apple.com>

        ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED is not used anywhere. Remove it.
        https://bugs.webkit.org/show_bug.cgi?id=135675

        Reviewed by Sam Weinig.

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

2014-08-06  David Farler  <dfarler@apple.com>

        Unreviewed build fix: Make includes semicolon in assignment.

        * Makefile.shared: Remove a ;

2014-08-06  David Farler  <dfarler@apple.com>

        Set DSYMUTIL_NUM_THREADS to the number of logical cores
        https://bugs.webkit.org/show_bug.cgi?id=135655

        Reviewed by Mark Rowe.

        * Makefile.shared: Export DSYMUTIL_NUM_THREADS.

2014-08-06  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Be able to disable gtk2 dependency
        https://bugs.webkit.org/show_bug.cgi?id=135505

        Reviewed by Gustavo Noronha Silva.

        Add ENABLE_PLUGIN_PROCESS_GTK2 compile option. GTK+2 is only
        required when it's enabled. It's enabled by default.

        * Source/cmake/OptionsGTK.cmake:

2014-08-05  Alex Christensen  <achristensen@webkit.org>

        More work on CMake.
        https://bugs.webkit.org/show_bug.cgi?id=135620

        Reviewed by Laszlo Gombos.

        * Source/cmake/OptionsMac.cmake:
        Use UDIS86 by default on Mac.

2014-08-04  Benjamin Poulain  <benjamin@webkit.org>

        Add a flag for the CSS Selectors level 4 implementation
        https://bugs.webkit.org/show_bug.cgi?id=135535

        Reviewed by Andreas Kling.

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

2014-08-04  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=135528

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsMac.cmake:
        Made options list based on FeatureDefines.xcconfig files.

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

        [GTK] Windowing target support should reflect the support in the GTK+ dependency
        https://bugs.webkit.org/show_bug.cgi?id=134736

        Reviewed by Martin Robinson.

        * Source/cmake/FindGTK3.cmake: Don't error out if the GTK+ dependency doesn't
        support the X11 or Wayland windowing targets -- instead, if there's no support
        the specific target is disabled, and an error is thrown only if neither of the
        backends is enabled at the end..
        For now the X11 target remains enabled by default, and the Wayland target is
        kept disabled. Once it's possible to have both targets enabled at runtime in
        WebKit, the Wayland target will be enabled as well and we'll leave it to the
        GTK+ dependency to determine which targets can be enabled.

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

        [CMake] Add FindWayland.cmake
        https://bugs.webkit.org/show_bug.cgi?id=135540

        Reviewed by Martin Robinson.

        * Source/cmake/FindWayland.cmake: Added. Enables finding the Wayland
        dependency. For now bundles the wayland-client, wayland-server and
        wayland-egl pkg-config targets into one dependency, but these could
        be split in the future if necessary.

2014-08-03  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Move DATA_INSTALL_DIR to ewebkit2-0
        https://bugs.webkit.org/show_bug.cgi?id=135553

        Reviewed by Gyuyoung Kim.

        Since WebKit1/Efl is dropped, we don't need to use ewebkit-1 and ewebkit2-1.
        And removed WebKit_OUTPUT_NAME variable which is not used anymore on the EFL port.

        * Source/cmake/OptionsEfl.cmake:

2014-08-01  Bear Travis  <betravis@adobe.com>

        [Feature Queries] Enable Feature Queries on EFL/GTK
        https://bugs.webkit.org/show_bug.cgi?id=134902

        Reviewed by Benjamin Poulain.

        Enable CSS Feature Queries by default on the EFL and GTK
        platforms.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:

2014-08-01  Alex Christensen  <achristensen@webkit.org>

        Progress towards cmake on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=135484

        Reviewed by Martin Robinson.

        * CMakeLists.txt:
        Added Mac to list of ports, even though it is not done yet.
        Changed minimum bison version to version installed on Macs.
        * Source/cmake/OptionsAppleWin.cmake:
        Added some definitions.
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        Set WTF_LIBRARY_TYPE to STATIC to not change WTF linking on EFL or GTK ports.
        * Source/cmake/OptionsMac.cmake: Added blank for now.
        * Source/cmake/OptionsWinCairo.cmake:
        * Source/cmake/OptionsWindows.cmake:
        Added some definitions.
        Removed /WX (warnings treated as error while compiling).
        Copied warnings to ignore from WebKitLibraries/win/tools/vsprops/common.props.

2014-08-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        [CMake] GTK and EFL are using PROJECT_VERSION_PATCH to define the micro version
        https://bugs.webkit.org/show_bug.cgi?id=135501

        Reviewed by Gyuyoung Kim.

        Use PROJECT_VERSION_MICRO instead.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitHelpers.cmake:

2014-07-31  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Bump ewebkit version to 1.11
        https://bugs.webkit.org/show_bug.cgi?id=135487

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Bump version numbers.

2014-07-31  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [EFL] Add support for building with Geoclue2.
        https://bugs.webkit.org/show_bug.cgi?id=135455

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Add gio-unix if ENABLE_GEOLOCATION
        is set.

2014-07-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.5.1 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2014-07-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Bump binary version for 2.6
        https://bugs.webkit.org/show_bug.cgi?id=133724

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsGTK.cmake: Bump binary version to 4.0 and
        update library version numbers.

2014-07-30  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Bump the minimum required version
        https://bugs.webkit.org/show_bug.cgi?id=135382

        Reviewed by Gyuyoung Kim.

        * CMakeLists.txt: Bump the minimum required version to 2.8.11 after
        we introduced usage of target_include_directories().

2014-07-29  Hunseop Jeong  <hs85.jeong@samsung.com>

        [EFL][GTK] Remove ACCELERATED_COMPOSITING compile flag 
        https://bugs.webkit.org/show_bug.cgi?id=135376

        Reviewed by Gyuyoung Kim.

        ACCELERATED_COMPOSITING was changed to the mandatory code after r163079.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:

2014-07-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] CMake tries to install JavaScriptCore-3.0.gir outside of install prefix
        https://bugs.webkit.org/show_bug.cgi?id=135288

        Reviewed by Martin Robinson.

        * Source/cmake/FindGObjectIntrospection.cmake: pass correct libdir and
        datadir to pkgconfig
        * Source/cmake/OptionsGTK.cmake: define install directories early
        enough to be used in FindGObjectIntrospection.cmake

2014-07-23  Bem Jones-Bey  <bjonesbe@adobe.com>

        Remove CSS_EXCLUSIONS compile flag and leftover code
        https://bugs.webkit.org/show_bug.cgi?id=135175

        Reviewed by Zoltan Horvath.

        At this point, the CSS_EXCLUSIONS flag guards nothing but some useless
        stubs. This removes the flag and the useless code.

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

2014-07-22  Adrian Perez de Castro  <aperez@igalia.com>

        [GStreamer] [GTK] WebKit does not build with GStreamer 1.4
        https://bugs.webkit.org/show_bug.cgi?id=135114

        Fix build with GStreamer 1.4

        Reviewed by Philippe Normand.

        * Source/cmake/FindGStreamer.cmake: Check version 1.4.0 for the
        gst-mpegts component instead of the unstable 1.3.x verstions.

2014-07-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Simplify make-dist command line arguments
        https://bugs.webkit.org/show_bug.cgi?id=134832

        Reviewed by Martin Robinson.

        * Source/PlatformGTK.cmake: Use --version instead of
        --tarball-root when running make-dist.py.

2014-07-18  Jon Honeycutt  <jhoneycutt@apple.com>

        Add a manual test for r135044

        <https://bugs.webkit.org/show_bug.cgi?id=135044>

        Rubber-stamped by Andy Estes.

        * ManualTests/ios/typing-in-field-that-clears-on-keyup.html: Added.

2014-07-18  Dana Burkart  <dburkart@apple.com>

        Add a new 'analyze' target to the makefile. This will make use of a new
        'PATH_TO_SCAN_BUILD' which, if set will wrap xcodebuild in the clang
        static analyzer.
        https://bugs.webkit.org/show_bug.cgi?id=135057
        <rdar://problem/10193187>

        Reviewed by David Kilzer.

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

2014-07-15  Ryuan Choi  <ryuan.choi@samsung.com>

        [CMAKE] ENABLE_ENCRYPTED_MEDIA_V2 should depend on ENABLE_VIDEO
        https://bugs.webkit.org/show_bug.cgi?id=134963

        Reviewed by Gyuyoung Kim.

        ENCRYPTED_MEDIA_V2 requires VIDEO enabled.

        * Source/cmake/WebKitFeatures.cmake: Added the dependency for ENABLE_ENCRYPTED_MEDIA_V2.

2014-07-14  Daniel Bates  <dabates@apple.com>

        [iOS] Add tests to ensure CSS :active and :hover are applied when processing touch events
        https://bugs.webkit.org/show_bug.cgi?id=134905
        <rdar://problem/16602779> 

        Reviewed by Simon Fraser.

        Add a manual test to ensure that styles for CSS pseudo-class :hover aren't temporarily cleared
        on the tapped element when processing a touchend as a result of finger pressing and releasing
        on the same element that is initially positioned outside the visible content area.

        * ManualTests/ios/touchstart-touchend-on-same-element-should-not-clear-hover.html: Added.

2014-07-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Enable VIDEO_TRACK by default
        https://bugs.webkit.org/show_bug.cgi?id=134801

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsGTK.cmake:

2014-07-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][CMake] Add a 'distcheck' target
        https://bugs.webkit.org/show_bug.cgi?id=130675

        Reviewed by Gustavo Noronha Silva.

        * Source/PlatformGTK.cmake: Add distcheck target.

2014-07-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use the same default options for production builds that previous stable releases
        https://bugs.webkit.org/show_bug.cgi?id=134589

        Reviewed by Martin Robinson.

        Change the default value of some features to match our stable releases.
        Add FindCairoGL to find cairo-gl libraries and make accelearetd 2D
        canvas depend on whether cairo-gl is found.

        * Source/cmake/FindCairoGL.cmake: Added.
        * Source/cmake/OptionsGTK.cmake:

2014-07-08  Sun-woo Nam  <sunny.nam@samsung.com>

        [EFL] Support Encrypted Media Extensions.
        https://bugs.webkit.org/show_bug.cgi?id=134750

        Reviewed by Gyuyoung Kim.

        Webkit needs to play encrypted media contents when media player
        is played by Media source extensions and normal video procedure.

        * Source/cmake/OptionsEfl.cmake: Turn on ENABLE_ENCRYPTED_MEDIA_V2

2014-07-08  Alex Christensen  <achristensen@webkit.org>

        Steps towards CMake on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=134716

        Reviewed by Martin Robinson.

        * CMakeLists.txt:
        Added AppleWin and WinCairo to list of CMake ports.
        * Source/cmake/OptionsAppleWin.cmake: Added.
        * Source/cmake/OptionsWinCairo.cmake: Added.
        * Source/cmake/OptionsWindows.cmake:
        Windows needs to use the system malloc.  Other options to come.

2014-07-04  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Support Geolocation
        https://bugs.webkit.org/show_bug.cgi?id=134439

        Reviewed by Antonio Gomes.

        * Source/cmake/OptionsEfl.cmake: Turn on ENABLE_GEOLOCATION.

2014-07-03  Ryuan Choi  <ryuan.choi@samsung.com>

        Broken build with build-webkit --no-video
        https://bugs.webkit.org/show_bug.cgi?id=134587

        Reviewed by Darin Adler.

        MEDIA_CONTROLS_SCRIPT requires VIDEO enabled.

        * Source/cmake/WebKitFeatures.cmake: Added the dependency for ENABLE_MEDIA_CONTROLS_SCRIPT.

2014-07-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] The list of features shown by cmake is not accurate
        https://bugs.webkit.org/show_bug.cgi?id=134588

        Reviewed by Gustavo Noronha Silva.

        The problem is that some options might change after the feature
        list has been printed.

        * Source/cmake/OptionsGTK.cmake: Find package dependencies before
        setting the default values of features and set WEBGL value
        depending on the dependencies, and API_TEST depending on whether
        developer mode is enabled or not.

2014-07-03  Ryuan Choi  <ryuan.choi@samsung.com>

        [CMAKE] Add WEBKIT_OPTION_DEPEND macro to resolve macro dependency
        https://bugs.webkit.org/show_bug.cgi?id=134578

        Reviewed by Gyuyoung Kim.

        Some options depend on another option such as ENABLE_VIDEO_TRACK and ENABLE_VIDEO.
        This patch adds WEBKIT_OPTION_DEPEND to check the depending option and
        disable related option if it is not ON.

        * Source/cmake/OptionsEfl.cmake: Removed hack for option dependency.
        * Source/cmake/OptionsGTK.cmake: Ditto.
        * Source/cmake/WebKitFeatures.cmake: Added WEBKIT_OPTION_DEPEND macro.

2014-07-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] make dist is broken
        https://bugs.webkit.org/show_bug.cgi?id=134542

        Reviewed by Martin Robinson.

        * Source/PlatformGTK.cmake: Remove ENABLE_WEBKIT check.

2014-07-01  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Add necessary support for building for the Wayland target
        https://bugs.webkit.org/show_bug.cgi?id=134160

        Reviewed by Darin Adler.

        * Source/cmake/FindGTK3.cmake: Check for the gtk+-x11-3.0 package if the X11 target
        is enabled, and that its version matches the version of the generic package. Same
        for the gtk+-wayland-3.0 package and the Wayland target.
        * Source/cmake/OptionsCommon.cmake: Don't add the -DXP_UNIX definition here.
        * Source/cmake/OptionsEfl.cmake: Add -DXP_UNIX here for the EFL port, under the same
        condition as in OptionsCommon.cmake. ENABLE_X11_TARGET is enabled by default for EFL
        so they keep building the TestNetscapePlugin target.
        * Source/cmake/OptionsGTK.cmake: Enable the X11 target and disable the Wayland target
        by default. Group all the X11-specific macro definitions (WTF_PLATFORM_X11, MOZ_X11,
        XP_UNIX) and only add them if the X11 target is enabled. Similar goes for the Wayland
        target and WTF_PLATFORM_WAYLAND. The Wayland target requires GTK+ 3.12.0, so that's
        the minimum required version as soon as that target is enabled. Only search for GLX
        if the X11 target is enabled.

2014-06-29  Yoav Weiss  <yoav@yoav.ws>

        Add support for HTMLImageElement's sizes attribute
        https://bugs.webkit.org/show_bug.cgi?id=133620

        Reviewed by Dean Jackson.

        Added an ENABLE_PICTURE_SIZES compile flag.

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

2014-06-26  Daniel Bates  <dabates@apple.com>

        [iOS][WK2] Distant focusable element may not be scrolled into view when focused using keyboard
        https://bugs.webkit.org/show_bug.cgi?id=134309
        <rdar://problem/17427385>

        Reviewed by Darin Adler.

        Add a manual test to ensure that we scroll to a distant focused text field when it's focused
        using the keyboard.

        * ManualTests/ios/scroll-to-distant-keyboard-focused-text-field.html: Added.

2014-06-25  Laszlo Gombos  <l.gombos@samsung.com>

        Remove build guard for progress element
        https://bugs.webkit.org/show_bug.cgi?id=134292

        Reviewed by Benjamin Poulain.

        The build flag is no longer needed as it is always on.

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

2014-06-23  Krzysztof Czech  <k.czech@samsung.com>

        [EFL] Platform support for WebSpeech feature.
        https://bugs.webkit.org/show_bug.cgi?id=116438

        Reviewed by Csaba Osztrogonác.

        Add ENABLE_SPEECH_SYNTHESIS flag to have Speech Synthesis in EFL.

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

2014-06-23  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, GTK build fix after r170266.

        * Source/cmake/OptionsGTK.cmake: Geoclue also requires gio-unix.

2014-06-22  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Disable gamepad feature on EFL and GTK ports by default
        https://bugs.webkit.org/show_bug.cgi?id=134169

        Reviewed by Brady Eidson.

        * Source/cmake/OptionsEfl.cmake: Disable ENABLE_GAMEPAD_DEPRECATED.

2014-06-21  Brady Eidson  <beidson@apple.com>

        Gamepad API - Deprecate the existing implementation
        https://bugs.webkit.org/show_bug.cgi?id=134108

        Reviewed by Timothy Hatcher.

        -Add new "GAMEPAD_DEPRECATED" build flag, moving the existing implementation to use it
        -Add the "Deprecated" suffix to some implementation files

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

2014-06-21  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r170244.
        https://bugs.webkit.org/show_bug.cgi?id=134157

        GTK/EFL bindings generator works differently, making this
        patch not work there.  Will fix entire patch after a rollout.
        (Requested by bradee-oh on #webkit).

        Reverted changeset:

        "Gamepad API - Deprecate the existing implementation"
        https://bugs.webkit.org/show_bug.cgi?id=134108
        http://trac.webkit.org/changeset/170244

2014-06-21  Brady Eidson  <beidson@apple.com>

        Gamepad API - Deprecate the existing implementation
        https://bugs.webkit.org/show_bug.cgi?id=134108

        Reviewed by Timothy Hatcher.

        -Add new "GAMEPAD_DEPRECATED" build flag, moving the existing implementation to use it
        -Add the "Deprecated" suffix to some implementation files

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

2014-06-21  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        Removing PAGE_VISIBILITY_API compile guard.
        https://bugs.webkit.org/show_bug.cgi?id=133844

        Reviewed by Gavin Barraclough.

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

2014-06-19  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][CMAKE] Disable WebKit1 build as a default
        https://bugs.webkit.org/show_bug.cgi?id=134093

        Reviewed by Gyuyoung Kim.

        Disable WebKit1 build and enable WebKit2 build for the EFL port.

        * Source/cmake/OptionsEfl.cmake:

2014-06-19  Dániel Bátyai  <dbatyai.u-szeged@partner.samsung.com>

        Remove ENABLE(LLINT) and ENABLE(LLINT_C_LOOP) guards
        https://bugs.webkit.org/show_bug.cgi?id=130389

        Reviewed by Mark Lam.

        Removed ENABLE(LLINT) since we always build with it, and changed ENABLE(LLINT_C_LOOP)
        into !ENABLE(JIT) since they are mutually exclusive.

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

2014-06-17  Zan Dobersek  <zdobersek@igalia.com>

        Remove the USE_GTK2=1 branch in OptionsGTK.cmake. This used to determine
        GTK+ and GDK libraries and include directories for the GTK+ 2 dependency,
        but we now only support GTK+ 3. The GTK+ 2 dependency is still required
        by the plugin process, but it is searched and utilized separately.

        Rubber-stamped by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake:

2014-06-16  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r170003.
        https://bugs.webkit.org/show_bug.cgi?id=133938

        This patch broke GTK build (Requested by kczech on #webkit).

        Reverted changeset:

        "[EFL] Platform support for WebSpeech feature."
        https://bugs.webkit.org/show_bug.cgi?id=116438
        http://trac.webkit.org/changeset/170003

2014-06-16  Krzysztof Czech  <k.czech@samsung.com>

        [EFL] Platform support for WebSpeech feature.
        https://bugs.webkit.org/show_bug.cgi?id=116438

        Reviewed by Gyuyoung Kim.

        Add ENABLE_SPEECH_SYNTHESIS flag to have Speech Synthesis in EFL.

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

2014-06-14  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Remove duplicated compiler flag
        https://bugs.webkit.org/show_bug.cgi?id=133838

        Reviewed by Anders Carlsson.

        In r169798, literal-suffix was added for EFL port in order to fix build break. However,
        it added to common compiler options. So, it is duplicated.

        * Source/cmake/WebKitHelpers.cmake:

2014-06-11  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r169877.
        https://bugs.webkit.org/show_bug.cgi?id=133784

        rollout wrong build fix approach for EFL port (Requested by
        gyuyoung on #webkit).

        Reverted changeset:

        "Unreviewed, EFL build fix since r169869."
        http://trac.webkit.org/changeset/169877

2014-06-11  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Unreviewed, EFL build fix since r169869.

        Additionally literal-suffix is removed in EFL compile flag, because it is duplicated.

        * Source/cmake/WebKitHelpers.cmake: Treat undef error as build warning.

2014-06-11  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Unreviewed, EFL build fix. Treat literal-suffix error as build warning.

        * Source/cmake/WebKitHelpers.cmake:

2014-05-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Make it possible to build with FTL enabled
        https://bugs.webkit.org/show_bug.cgi?id=133219

        Reviewed by Philippe Normand.

        Add LLVM and LIBCXXABI as dependencies when building with FTL enabled.

        * Source/cmake/OptionsGTK.cmake:

2014-05-28  Jaehun Lim  <ljaehun.lim@samsung.com>

        [CMake] Clean up FAST_MOBILE_SCROLLING
        https://bugs.webkit.org/show_bug.cgi?id=133342

        Reviewed by Gyuyoung Kim.

        FAST_MOBILE_SCROLLING was removed in r168726.

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

2014-05-27  Tibor Meszaros  <tmeszaros.u-szeged@partner.samsung.com>

        Remove BLOB guards
        https://bugs.webkit.org/show_bug.cgi?id=132863

        Reviewed by Csaba Osztrogonác.

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

2014-05-27  Zsolt Borbely  <zsborbely.u-szeged@partner.samsung.com>

        Allow building CMake based ports with WEB_REPLAY
        https://bugs.webkit.org/show_bug.cgi?id=133154

        Reviewed by Csaba Osztrogonác.

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

2014-05-21  Zsolt Borbely  <zsborbely.u-szeged@partner.samsung.com>

        [EFL] Add include path of compact_unwind_encoding.h if FTL JIT is enabled
        https://bugs.webkit.org/show_bug.cgi?id=132907

        Reviewed by Gyuyoung Kim.

        * Source/cmake/FindLIBCXXABI.cmake: Added.
        * Source/cmake/OptionsEfl.cmake:

2014-05-21  Michał Pakuła vel Rutka  <m.pakula@samsung.com>

        [EFL] Turn on ENABLE_CSS_FILTERS
        https://bugs.webkit.org/show_bug.cgi?id=133153

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Enable CSS_FILTERS as default option value.

2014-05-16  Martin Robinson  <mrobinson@igalia.com>

        [CMake] Improve handling of LIB_INSTALL_DIR, EXEC_INSTALL_DIR, and LIBEXEC_INSTALL_DIR
        https://bugs.webkit.org/show_bug.cgi?id=132819

        Reviewed by Carlos Garcia Campos.

        * CMakeLists.txt: Hard-code CMAKE_ARCHIVE_OUTPUT_DIRECTORY etc, so that we can accept absolute paths for LIB_INSTALL_DIR
        and friends.
        * Source/cmake/OptionsCommon.cmake: Get rid of LIB_SUFFIX and try to make all path variables absolute. Also set
        CMAKE_ARCHIVE_OUTPUT_DIRECTORY, etc using the last path component of LIB_INSTALL_DIR, etc, so that absolute paths
        are supported.
        * Source/cmake/OptionsGTK.cmake: Ditto. Also get rid of all pkg-config specific variables.

2014-05-20  Gustavo Noronha Silva  <gns@gnome.org>

        [CMake] Support building with Debug Fission
        https://bugs.webkit.org/show_bug.cgi?id=131177

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsCommon.cmake: add a DEBUG_FISSION option to enable usage
        of http://gcc.gnu.org/wiki/DebugFission.

2014-05-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Rename translation domain as WebKit2GTK-3.0
        https://bugs.webkit.org/show_bug.cgi?id=132953

        Reviewed by Gustavo Noronha Silva.

        * Source/cmake/OptionsGTK.cmake:

2014-05-18  Rik Cabanier  <cabanier@adobe.com>

        support for navigator.hardwareConcurrency
        https://bugs.webkit.org/show_bug.cgi?id=132588

        Reviewed by Filip Pizlo.

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

2014-05-14  Tibor Meszaros  <tmeszaros.u-szeged@partner.samsung.com>

        Remove CSS_STICKY_POSITION guards
        https://bugs.webkit.org/show_bug.cgi?id=132676

        Reviewed by Simon Fraser.

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

2014-05-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Bump version numbers.

        * Source/cmake/OptionsGTK.cmake:

2014-05-10  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Unable to do make install
        https://bugs.webkit.org/show_bug.cgi?id=130188

        Reviewed by Carlos Garcia Campos.

        Only try to install the HTML documentation if the build is configured to generate it via
        the new ENABLE_GTKDOC option. We cannot conditionally install something, so this allows us
        to keep the HTML documentation directory as an installation source.

        * Source/PlatformGTK.cmake: The gtkdoc target now always builds HTML documentation, but
        is only added to the default target when ENABLE_GTKDOC is turned on. gtkdoc-no-html is
        now only added to the default target when DEVELOPER_MODE is true and ENABLE_GTKDOC is
        false. When both ENABLE_GTKDOC and DEVELOPER_MODE are false, documentation isn't built at all.
        * Source/cmake/OptionsGTK.cmake: Add an ENABLE_GTKDOC option to the build.

2014-05-09  Anders Carlsson  <andersca@apple.com>

        Rename WebKit2.framework to WebKit.framework
        https://bugs.webkit.org/show_bug.cgi?id=132743
        <rdar://problem/15920046>

        Reviewed by Dan Bernstein.

        * Source/Makefile:
        Build WebKit.xcodeproj before WebKit2.xcodeproj.

        * WebKit.xcworkspace/xcshareddata/xcschemes/:
        Ditto.

2014-05-06  David Kilzer  <ddkilzer@apple.com>

        Add Makefile targets for copying static libraries (LLVM and WKSI)
        <http://webkit.org/b/132619>

        Reviewed by Mark Rowe.

        * Makefile:
        (MODULES): Add WebKitLibraries.

2014-05-06  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r168304.
        https://bugs.webkit.org/show_bug.cgi?id=132607

        Broke the build (Requested by KaL on #webkit).

        Reverted changeset:

        "[GTK][CMake] Unable to do make install"
        https://bugs.webkit.org/show_bug.cgi?id=130188
        http://trac.webkit.org/changeset/168304

2014-05-05  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Unable to do make install
        https://bugs.webkit.org/show_bug.cgi?id=130188

        Reviewed by Carlos Garcia Campos.

        Only try to install the HTML documentation if the build is configured to generate it via
        the new ENABLE_GTKDOC option. We cannot conditionally install something, so this allows us
        to keep the HTML documentation directory as an installation source.

        * Source/PlatformGTK.cmake: The gtkdoc target now always builds HTML documentation, but
        is only added to the default target when ENABLE_GTKDOC is turned on. gtkdoc-no-html is
        never added to the default target, but will be triggered by build-webkit, so that
        when ENABLE_GTKDOC is off and build-webkit isn't used, documentation isn't built at all.
        * Source/cmake/OptionsGTK.cmake: Add an ENABLE_GTKDOC option to the build.

2014-05-03  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        [CMake] Define SHOULD_INSTALL_JS_SHELL before including ports Options files.
        https://bugs.webkit.org/show_bug.cgi?id=132525

        Reviewed by Martin Robinson.

        * CMakeLists.txt: If OPTION() is called after Options${PORT}.cmake is included, it will
        override whatever value a port may have set for it. The GTK+ port, for example, tries to set
        it to SHOULD_INSTALL_JS_SHELL to ON by default, even though it did not happen before.

2014-05-01  David Kilzer  <ddkilzer@apple.com>

        Really remove ENABLE_PLUGIN_PROXY_FOR_VIDEO
        <http://webkit.org/b/132432>

        Reviewed by Tim Horton.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:
        - Remove ENABLE_PLUGIN_PROXY_FOR_VIDEO as build option.

2014-04-30  Simon Fraser  <simon.fraser@apple.com>

        Make sure the "All" targets build WebKitLegacy, rather than WebKit.
        
        Reviewed by Dan Bernstein/Anders Carlsson.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2014-04-30  Simon Fraser  <simon.fraser@apple.com>

        Let Xcode have its way with the WebKit workspace.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2014-04-29  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Make it easier to run CMake for downstreams
        https://bugs.webkit.org/show_bug.cgi?id=132370

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Turn PRODUCTION_MODE into DEVELOPER_MODE.

2014-04-27  Joonghun Park  <jh718.park@samsung.com>

        [EFL] Remove indexedDB's dependency on leveldb and disable indexedDB
        https://bugs.webkit.org/show_bug.cgi?id=132176

        Reviewed by Gyuyoung Kim.

        EFL port will use sqlite to support indexedDB. So, this patch removes levelDB dependency for now.

        * Source/cmake/OptionsEfl.cmake:

2014-04-22  Alex Christensen  <achristensen@webkit.org>

        Removed old stdbool and inttypes headers.
        https://bugs.webkit.org/show_bug.cgi?id=131966

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsWindows.cmake:
        * Source/cmake/WebKitPackaging.cmake:
        Removed references to os-win32 directory.        

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

        Fix a typo in WebKitFeatures.cmake -- INITALVALUE -> INITIALVALUE.

        Rubber-stamped by Carlos Garcia Campos.

        * Source/cmake/WebKitFeatures.cmake:

2014-04-18  Jon Honeycutt  <jhoneycutt@apple.com>

        Empty RenderInline objects should not be line break objects.

        https://bugs.webkit.org/show_bug.cgi?id=131861
        <rdar://problem/15663617>

        Reviewed by David Hyatt.

        * ManualTests/empty-inline-as-line-break-position.html: Added.
        This issue wouldn't reproduce in WebKitTestRunner.

2014-04-19  Brent Fulgham  <bfulgham@apple.com>

        Revert unintended workspace change in my last commit.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme: Set the
        Scheme type back to Debug.

2014-04-18  Philippe Normand  <pnormand@igalia.com>

        Remove NETWORK_INFO support
        https://bugs.webkit.org/show_bug.cgi?id=131841

        Reviewed by Gyuyoung Kim.

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

2014-04-17  Darin Adler  <darin@apple.com>

        Try to fix EFL and GTK builds.

        * Source/cmake/OptionsEfl.cmake: Add INDEXED_DATABASE_IN_WORKERS.
        * Source/cmake/OptionsGTK.cmake: Ditto.
        * Source/cmakeconfig.h.cmake: Ditto.

2014-04-16  Brendan Long  <b.long@cablelabs.com>

        [GTK][CMAKE] build-webkit doesn't detect when the build fails
        https://bugs.webkit.org/show_bug.cgi?id=130148

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsGTK.cmake: Replace CMake's automatic make -i with make -k, which still continues after errors, but correctly reports tha the build failed.

2014-04-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r166779): [GTK] Printing doesn't work since r166779
        https://bugs.webkit.org/show_bug.cgi?id=131725

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsGTK.cmake: Check GTK_UNIX_PRINT_FOUND
        instead of GTK_UNIX_PRINTING_FOUND and set the macro
        HAVE_GTK_UNIX_PRINTING to 1 when found.

2014-04-11  Brian J. Burg  <burg@cs.washington.edu>

        Web Replay: memoize nondeterministic attributes of the Navigator interface
        https://bugs.webkit.org/show_bug.cgi?id=131340

        Reviewed by Timothy Hatcher.

        * ManualTests/inspector/replay-window-navigator-basic.html: Added.

2014-04-09  Brendan Long  <b.long@cablelabs.com>

        [GStreamer] Expose MPEG-TS metadata
        https://bugs.webkit.org/show_bug.cgi?id=122001

        Reviewed by Eric Carlson.

        * Source/cmake/FindGStreamer.cmake: Look for gstreamer-mpegts >= 1.3.0.
        * Source/cmake/OptionsEfl.cmake: Same.
        * Source/cmake/OptionsGTK.cmake: Same.

2014-04-08  Brian J. Burg  <burg@cs.washington.edu>

        Web Replay: memoize nondeterministic attributes of the Screen interface
        https://bugs.webkit.org/show_bug.cgi?id=131339

        Reviewed by Timothy Hatcher.

        * ManualTests/inspector/replay-window-screen.html: Added.

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

        [GTK] Remove the WebKitGTK+ WebKit 1 code
        https://bugs.webkit.org/show_bug.cgi?id=131399

        Reviewed by Anders Carlsson.

        * Source/PlatformGTK.cmake: Remove WebKit1 dependency from dist target.
        * Source/cmake/OptionsGTK.cmake: Remove option to compile with GTK+2 or with WebKit2 disabled.

2014-04-08  Dan Bernstein  <mitz@apple.com>

        Added bmalloc to the WebKit workspace.
        https://bugs.webkit.org/show_bug.cgi?id=131362

        Reviewed by Geoff Garen.

        * WebKit.xcworkspace/contents.xcworkspacedata:
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2014-04-08  Geoffrey Garen  <ggaren@apple.com>

        Build bmalloc on iOS too
        https://bugs.webkit.org/show_bug.cgi?id=131381

        Reviewed by Andreas Kling.

        * Source/Makefile: Build it.

2014-04-07  Geoffrey Garen  <ggaren@apple.com>

        Build bmalloc on Mac
        https://bugs.webkit.org/show_bug.cgi?id=131333

        Reviewed by Mark Rowe.

        * Source/Makefile:
        * WebKitBuild: Added.
        * WebKitBuild/Debug: Added.

2014-04-07  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Turn on ENABLE_MEDIA_CONTROLS_SCRIPT
        https://bugs.webkit.org/show_bug.cgi?id=131257

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Enable MEDIA_CONTROLS_SCRIPT

2014-04-06  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        [GTK] Stop trying to install WebKit1 documentation
        https://bugs.webkit.org/show_bug.cgi?id=131278

        Reviewed by Martin Robinson.

        * Source/PlatformGTK.cmake: Remove install() call since the WebKit1 documentation is not
        built anymore since r166584. This fixes `make install'.

2014-04-04  Brian J. Burg  <burg@cs.washington.edu>

        Web Replay: capture and replay wheel events and scroll commands
        https://bugs.webkit.org/show_bug.cgi?id=129402

        Reviewed by Timothy Hatcher.

        * ManualTests/inspector/replay-wheel-events.html: Added.

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

        [GTK][CMake] Remove FindXt.cmake.
        https://bugs.webkit.org/show_bug.cgi?id=131227

        Reviewed by Anders Carlsson.

        Xt is already detected by CMake's own FindX11.cmake, so there is no need to keep a custom FindXt.cmake around.

        * Source/cmake/FindXt.cmake: Removed.
        * Source/cmake/OptionsGTK.cmake:

2014-04-04  Tamas Gergely  <tgergely.u-szeged@partner.samsung.com>

        [EFL] Build error due to changed path of generated js files.
        https://bugs.webkit.org/show_bug.cgi?id=131215

        Reviewed by Gyuyoung Kim.

        r166648 fixed the generation of some .js files on GTK. Due to some
        changes in the paths it causes a build error on EFL.

        * Source/PlatformEfl.cmake:
          Replaced path for two derived source files.

2014-04-02  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        [GTK][CMake] Look for glx.h in OPENGL_INCLUDE_DIR.
        https://bugs.webkit.org/show_bug.cgi?id=131095

        Reviewed by Martin Robinson.

        One needs to take into account OpenGL's include directory found via
        find_package() when looking for glx.h, since if the former is a
        non-standard location the latter will also be. If this is not it is
        possible that OpenGL is found but GLX support is not properly detected.

        * Source/cmake/OptionsGTK.cmake:

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

        REGRESSION(r165704): [GTK] Inspector resources not correctly generated
        https://bugs.webkit.org/show_bug.cgi?id=130343

        Reviewed by Gustavo Noronha Silva.

        * CMakeLists.txt: Add a variable which points to the directory to store WebInspectorUI
        derived sources.
        * Source/cmake/WebKitFS.cmake: Generate WebInspectorUI derived sources directories.

2014-04-01  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        [CMake] Drop port check from FindEGL.cmake.
        https://bugs.webkit.org/show_bug.cgi?id=131091

        Reviewed by Gyuyoung Kim.

        There is no reason to mark some variables as advanced only for the
        GTK+ port.

        * Source/cmake/FindEGL.cmake: Mark EGL_INCLUDE_DIR and EGL_LIBRARY
        as advanced regardless of the port.

2014-04-01  Dániel Bátyai  <dbatyai.u-szeged@partner.samsung.com>

        Fix the !ENABLE(BATTERY_STATUS) build
        https://bugs.webkit.org/show_bug.cgi?id=130183

        Reviewed by Anders Carlsson.

        * Source/cmake/OptionsEfl.cmake:

2014-03-31  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        [CMake][GTK] Do not expand variables twice in if() checks.
        https://bugs.webkit.org/show_bug.cgi?id=130964

        Reviewed by Martin Robinson.

        In CMake, `if (${foo})' causes $foo to be evaluated first and its value
        to be checked by the if clause. This is not what we want, and
        configuration fails when, say, GLX support wasn't found as the if
        clause is actually evaluated as `if (TRUE AND (OR TRUE))'.

        * Source/cmake/OptionsGTK.cmake: Pass if (FOO) instead of if (${FOO})
        where necessary.

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

        [GTK] Remove scripts code only applicable to autotools
        https://bugs.webkit.org/show_bug.cgi?id=130841

        Reviewed by Anders Carlsson.

        * Source/cmake/WebKitPackaging.cmake: No longer need to consider autotools files.

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

        [GTK] Use PROJECT_VERSION_* instead of WEBKIT_*_VERSION
        https://bugs.webkit.org/show_bug.cgi?id=130936

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: No longer emulate the Autotools macro names.

2014-03-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add support for GTK3 plugins
        https://bugs.webkit.org/show_bug.cgi?id=130599

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsGTK.cmake:

2014-03-28  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Bump glib version from 2.36 to 2.38 
        https://bugs.webkit.org/show_bug.cgi?id=130886

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/OptionsEfl.cmake: Required glib-2.38 version.

2014-03-26  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Remove shape-inside support
        https://bugs.webkit.org/show_bug.cgi?id=130698

        Reviewed by David Hyatt.

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

2014-03-25  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove the autotools build
        https://bugs.webkit.org/show_bug.cgi?id=130717

        Reviewed by Anders Carlsson.

        * .gitignore: Remove references to autotools files.
        * GNUmakefile.am: Removed.
        * Source/autotools/CheckSystemAndBasicDependencies.m4: Removed.
        * Source/autotools/CustomMacros.m4: Removed.
        * Source/autotools/FindDependencies.m4: Removed.
        * Source/autotools/PrintBuildConfiguration.m4: Removed.
        * Source/autotools/ReadCommandLineArguments.m4: Removed.
        * Source/autotools/SetupAutoconfHeader.m4: Removed.
        * Source/autotools/SetupAutomake.m4: Removed.
        * Source/autotools/SetupCompilerFlags.m4: Removed.
        * Source/autotools/SetupLibtool.m4: Removed.
        * Source/autotools/SetupWebKitFeatures.m4: Removed.
        * Source/autotools/Versions.m4: Removed.
        * Source/autotools/acinclude.m4: Removed.
        * Source/autotools/dolt.m4: Removed.
        * Source/autotools/gsettings.m4: Removed.
        * Source/cmake/OptionsGTK.cmake:
        * autogen.sh: Removed.
        * configure.ac: Removed.

2014-03-25  Gabor Rapcsanyi  <rgabor@webkit.org>

        [EFL] Add ARM64 build support
        https://bugs.webkit.org/show_bug.cgi?id=130506

        Rubber stamped by Gyuyoung Kim.

        * CMakeLists.txt: Set WTF_CPU_ARM64 when aarch64 is defined.

2014-03-25  Michał Pakuła vel Rutka  <m.pakula@samsung.com>

        [EFL][WK2] Add NETWORK_PROCESS build option
        https://bugs.webkit.org/show_bug.cgi?id=130131

        Reviewed by Gyuyoung Kim.

        Add option to build EFL port with NETWORK_PROCESS set on. By default NETWORK_PROCESS is
        set off.

        * Source/cmake/OptionsEfl.cmake:

2014-03-24  Brian Burg  <bburg@apple.com>

        Web Replay: capture and replay keyboard events
        https://bugs.webkit.org/show_bug.cgi?id=130314

        Reviewed by Joseph Pecoraro.

        * ManualTests/inspector/replay-keyboard-events.html: Added.

2014-03-24  Sangyong Park  <sy302.park@gmail.com>

        [EFL] Inspector page is not loaded.
        https://bugs.webkit.org/show_bug.cgi?id=130661

        Reviewed by Gyuyoung Kim.

        Inspector page is not loaded, because some javascript files are not installed.
        (InspectorJSBackendCommands.js, InspectorWebBackendCommands.js)

        * Source/PlatformEfl.cmake:

2014-03-20  Thiago de Barros Lacerda  <thiago.lacerda@openbossa.org>

        [EFL][GTK] Get CMake to find Freetype2 properly
        https://bugs.webkit.org/show_bug.cgi?id=130150

        Reviewed by Martin Robinson.

        Newer versions of CMake are not able to find Freetype2 correctly.
        FindFreetype2.cmake checks for the version number in freetype.h header, since it seems that bug exists in
        freetype2 repo, because a completely different version number is found in freetype2.pc.

        * Source/cmake/FindFreetype2.cmake: Added.
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:

2014-03-20  Brian Burg  <bburg@apple.com>

        Web Replay: capture and replay mouse events
        https://bugs.webkit.org/show_bug.cgi?id=129395

        Reviewed by Joseph Pecoraro.

        Create a manual test for capture/replay of mouse events.
        Copy over the crypto-md5.js library from SunSpider.

        * ManualTests/inspector/replay-mouse-events.html: Added.
        * ManualTests/inspector/resources/crypto-md5.js: Added.

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

        [GTK][CMake] Add support for building with Clang
        https://bugs.webkit.org/show_bug.cgi?id=130260

        Reviewed by Martin Robinson.

        * Source/PlatformGTK.cmake: Run the generate-gtkdoc script with the CFLAGS env set
        to the list C compiler flags as constructed by CMake.
        * Source/cmake/OptionsCommon.cmake: When building with Clang, use the -Qunused-arguments
        compiler option to suppress verbose warnings about arguments that went unused by the driver.
        * Source/cmake/OptionsGTK.cmake: Use -fno-omit-frame-pointer for both GCC and Clang.
        -fno-tree-dce should be used only for GCC.
        * Source/cmake/gtest/CMakeLists.txt: When building with Clang the GTest framework
        should be built with GTEST_HAS_TR1_TUPLE macro defined to 0 to avoid build failures.

2014-03-20  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r165962.
        https://bugs.webkit.org/show_bug.cgi?id=130512

        It broke the build (Requested by Ossy on #webkit).

        Reverted changeset:

        "[EFL][GTK] Get CMake to find Freetype2 properly"
        https://bugs.webkit.org/show_bug.cgi?id=130150
        http://trac.webkit.org/changeset/165962

2014-03-20  Thiago de Barros Lacerda  <thiago.lacerda@openbossa.org>

        [EFL][GTK] Get CMake to find Freetype2 properly
        https://bugs.webkit.org/show_bug.cgi?id=130150

        Reviewed by Csaba Osztrogonác.

        Newer versions of CMake are not able to find Freetype2 correctly.
        FindFreetype2.cmake checks for the version number in freetype.h header, since it seems that bug exists in
        freetype2 repo, because a completely different version number is found in freetype2.pc.

        * Source/cmake/FindFreetype2.cmake: Added.
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:

2014-03-17  Brendan Long  <b.long@cablelabs.com>

        [GStreamer] human readable language code for tracks
        https://bugs.webkit.org/show_bug.cgi?id=124514

        Reviewed by Martin Robinson.

        * Source/autotools/FindDependencies.m4: Add gstreamer-tag-1.0.
        * Source/cmake/FindGStreamer.cmake: Same.
        * Source/cmake/OptionsEfl.cmake: Same.
        * Source/cmake/OptionsGTK.cmake: Same.

2014-03-17  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Credential storage is not enabled
        https://bugs.webkit.org/show_bug.cgi?id=130149

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsGTK.cmake: Add an ENABLE_CREDENTIAL_STORAGE option to the configuration
        and look libsecret when it's enabled.
        * Source/cmakeconfig.h.cmake: Expose the ENABLE_CREDENTIAL_STORAGE option to the build.

2014-03-17  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Ensure that HAVE_GTK_UNIX_PRINTING is defined when appropriate
        https://bugs.webkit.org/show_bug.cgi?id=130155

        Reviewed by Philippe Normand.

        * Source/cmake/FindGTKUnixPrint.cmake: Added.
        * Source/cmake/OptionsGTK.cmake: Look for gtk+-unix-print and use it to turn on HAVE_GTK_UNIX_PRINTING.
        * Source/cmakeconfig.h.cmake: Add the HAVE_GTK_UNIX_PRINTING define.

2014-03-16  Kim Byung Jun  <bj1987.kim@samsung.com>

        [EFL] Enable TOUCH_SLIDER macro.
        https://bugs.webkit.org/show_bug.cgi?id=130186

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake:

2014-03-16  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][CMake] Build with -fno-rtti
        https://bugs.webkit.org/show_bug.cgi?id=130261

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsCommon.cmake: List the -fno-exceptions, -fno-strict-aliasing
        and -fno-rtti options in the global CMAKE_C_FLAGS and CMAKE_CXX_FLAGS (-fno-rtti
        is only listed in the latter). Replace -std=gnu++0x with the official -std=c++11 option.
        * Source/cmake/WebKitHelpers.cmake: Stop -fno-exceptions and -fno-strict-aliasing
        from being set through the WEBKIT_SET_EXTRA_COMPILER_FLAGS macro, they are now listed
        in CMAKE_C_FLAGS and CMAKE_CXX_FLAGS.
        * Source/cmake/gtest/CMakeLists.txt: Build GTest code with GTEST_HAS_RTTI macro defined to 0.

2014-03-16  Brendan Long  <b.long@cablelabs.com>

        [GStreamer] CMake doesn't find the include path for gstreamer-base
        https://bugs.webkit.org/show_bug.cgi?id=130098

        Reviewed by Philippe Normand.

        * Source/cmake/FindGStreamer.cmake: Look for a header in gstreamer-base instead of looking for gst/gst.h twice.

2014-03-14  Maciej Stachowiak  <mjs@apple.com>

        Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
        https://bugs.webkit.org/show_bug.cgi?id=130276
        <rdar://problem/16266927>

        Reviewed by Simon Fraser.

        * ManualTests/NPN_Invoke/Info.plist:
        * ManualTests/NPN_Invoke/main.c:
        * ManualTests/accessibility/resources/AppletTest.java:

2014-03-14  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Remove -fno-tree-sra workaround for GCC 4.5
        https://bugs.webkit.org/show_bug.cgi?id=130258

        Reviewed by Martin Robinson.

        GCC compilers 4.7 and later are supported, so there's no need for disabling
        the -ftree-sra optimization which was causing problems when enabled on GCC 4.5.

        * Source/cmake/WebKitHelpers.cmake:

2014-03-14  Landry Breuil  <landry@openbsd.org>

        Add autotools boilerplate for proper os defines on OpenBSD/NetBSD/DragonFly
        https://bugs.webkit.org/show_bug.cgi?id=129966

        Reviewed by Andreas Kling.

        * Source/autotools/CheckSystemAndBasicDependencies.m4:
        * Source/autotools/SetupAutomake.m4:

2014-03-13  Mario Sanchez Prada  <mario.prada@samsung.com>

        [CMake] Failure to link with older installations of WebP
        https://bugs.webkit.org/show_bug.cgi?id=130195

        Reviewed by Gustavo Noronha Silva.

        Fix the issue by using a temporary variable as the output parameter
        to check_include_files(), setting WEBP_FOUND accordingly later.

        * Source/cmake/FindWebP.cmake: Avoid reusing the WEBP_FOUND
        variable in check_include_files(), as it will lead to misleading
        results (will always be FALSE). Use a temporary variable instead
        and explicitly set WEBP_FOUND to TRUE later if needed.

2014-03-12  Martin Robinson  <mrobinson@igalia.com>

        [CMake] Changes to the bindings generator Perl modules do not trigger regeneration of bindings
        https://bugs.webkit.org/show_bug.cgi?id=130170

        Reviewed by Daniel Bates.

        * Source/cmake/WebKitMacros.cmake: Add the Perl modules used in script generation to the dependency
        list. We must check whether or not the specific one exists first, because the InjectedBundle uses a
        fake "TestRunner" generator.

2014-03-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][CMAKE] Remove compile warnings about GTK+ deprecated API
        https://bugs.webkit.org/show_bug.cgi?id=130014

        Reviewed by Martin Robinson.

        Set GDK_VERSION_MIN_REQUIRED to GDK_VERSION_3_6.

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

2014-03-12  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMAKE] Too verbose build output
        https://bugs.webkit.org/show_bug.cgi?id=130076

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Generate a script which does the actual build. This
        works around an issue where cmake --build doesn't support ninja's pretty printing.

2014-03-10  Mario Sanchez Prada  <mario.prada@samsung.com>

        [GTK] Add support for Geoclue2
        https://bugs.webkit.org/show_bug.cgi?id=120185

        Reviewed by Carlos Garcia Campos.

        Patch by Anton Obzhirov <a.obzhirov@samsung.com> and Mario Sanchez Prada <mario.prada@samsung.com>

        Add support for Geoclue2 using autotools.

        * Source/autotools/FindDependencies.m4: Add support for handling
        both Geoclue 1.0 and 2.0.
        * Source/autotools/PrintBuildConfiguration.m4: Print the version
        of geoclue that is being used.
        * Source/autotools/SetupAutoconfHeader.m4: Define GEOCLUE_API_VERSION_2.
        * Source/autotools/SetupAutomake.m4: Likewise, for AM_CONDITIONAL.
        * Source/autotools/Versions.m4: Added minimum required version for Geoclue2.

        Add support for Geoclue2 using CMake.

        * Source/cmake/FindGeoClue2.cmake: Added.
        * Source/cmake/OptionsGTK.cmake:  Add support for handling Geoclue 1.0 and 2.0.
        * Source/cmakeconfig.h.cmake: Define WTF_USE_GEOCLUE2.

2014-03-10  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMAKE] gtk-doc HTML documentation is generated by default when building with CMake
        https://bugs.webkit.org/show_bug.cgi?id=130016

        Reviewed by Carlos Garcia Campos.

        * Source/PlatformGTK.cmake: Add two gtkdoc targets, one which builds HTML and one which
        doesn't. Add the non-HTML version to the default target, but not the HTML version. The
        HTML version will still run when building the distribution tarball.

2014-03-10  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Clean up library linking
        https://bugs.webkit.org/show_bug.cgi?id=129782

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsGTK.cmake: Add a macro to wrap all libraries in a list with --whole-archive
        so that unused symbols are not dropped. This is useful when building up shared libraries
        from convenience libraries.

2014-03-08  Landry Breuil  <landry@openbsd.org>

        Don't check for shm_open on librt on OpenBSD, lib doesnt exist.
        https://bugs.webkit.org/show_bug.cgi?id=129973

        Reviewed by Martin Robinson.

        * Source/autotools/FindDependencies.m4:

2014-03-06  Anders Carlsson  <andersca@apple.com>

        Build WebKit2 before building WebKit
        https://bugs.webkit.org/show_bug.cgi?id=129831
        <rdar://problem/15920020>

        Reviewed by Dan Bernstein.

        * Source/Makefile:
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2014-03-06  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r165193.
        http://trac.webkit.org/changeset/165193
        https://bugs.webkit.org/show_bug.cgi?id=129823

        Not specifying libc++ as the stdlib for Clang through CXXFLAGS
        env confuses libtool (Requested by zdobersek on #webkit).

        * Source/autotools/SetupCompilerFlags.m4:

2014-03-06  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][Autotools] Default to libc++ when compiling with Clang
        https://bugs.webkit.org/show_bug.cgi?id=129798

        Reviewed by Anders Carlsson.

        * Source/autotools/SetupCompilerFlags.m4: Default to using libc++ when compiling with the Clang
        compiler. This is still overridable if -stdlib=* flag was set through CXXFLAGS, in case people
        would for some reason still prefer libstdc++ (i.e. on setups where a functional libc++ is not yet available).

2014-03-05  Martin Robinson  <mrobinson@igalia.com>

        [CMake] Ninja generator builds fail with "Argument list too long"
        https://bugs.webkit.org/show_bug.cgi?id=129771

        Reviewed by Daniel Bates.

        * Source/cmake/OptionsCommon.cmake: Work around a bug in the Ninja CMake generator,
        by forcing the use of response files.

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

        [CMake] Use thin archives if building on Linux for non-shared-core debug builds
        https://bugs.webkit.org/show_bug.cgi?id=108330

        Reviewed by Martin Robinson.

        In order to get non-shared debug builds, this patch applied T option for
        thin archives to the flags passed to ar when cmake based ports build on linux.
        In addition, applied u option which avoids adding a file twice.

        * Source/cmake/OptionsCommon.cmake: Moved archive options from OptionsGTK.cmake.
        * Source/cmake/OptionsEfl.cmake:
        Removed error messages for non-shared-core debug builds.
        * Source/cmake/OptionsGTK.cmake: Moved archive options to OptionsCommon.cmake.

2014-03-04  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Build the Udis86 disassembler
        https://bugs.webkit.org/show_bug.cgi?id=129679

        Reviewed by Michael Saboff.

        * GNUmakefile.am: Add the Udis86_nosources variable.
        * Source/cmake/OptionsGTK.cmake: Enable the Udis86 disassembler.

2014-03-04  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Simplify the GObject DOM bindings API break check into one step
        https://bugs.webkit.org/show_bug.cgi?id=129571

        Reviewed by Carlos Garcia Campos.

        * Source/PlatformGTK.cmake: We don't need to run the API break check before gtkdoc generation.
        Add the check to 'make check.'

2014-03-04  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] ENABLE_NAVIGATOR_CONTENT_UTILS is mistakenly enabled for the CMake build
        https://bugs.webkit.org/show_bug.cgi?id=129502

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Disable the option for GTK+.

2014-03-03  Jozsef Berta  <jberta.u-szeged@partner.samsung.com>

        [cmake] *Names.cpp file should be regenerated after touching StaticString.pm
        https://bugs.webkit.org/show_bug.cgi?id=129031

        Reviewed by Csaba Osztrogonác.

        * Source/cmake/WebKitMacros.cmake: Added a call for make_names.pm dependencies in GENERATE_FONT_NAMES and GENERATE_DOM_NAMES macros.

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

        [GTK] WebKit2WebExtension GIR can't be used in vala
        https://bugs.webkit.org/show_bug.cgi?id=127179

        Reviewed by Martin Robinson.

        Add a different pkg-config file for the web extensions API.

        * Source/cmake/OptionsGTK.cmake:
        * configure.ac:

2014-03-02  Dirkjan Ochtman  <d.ochtman@activevideo.com>

        Support ENABLE_ENCRYPTED_MEDIA in cmake builds
        https://bugs.webkit.org/show_bug.cgi?id=129575

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsEfl.cmake:
        Enabled ENABLE_ENCRYPTED_MEDIA{,_V2} usage.
        * Source/cmake/OptionsGTK.cmake:
        Enabled ENABLE_ENCRYPTED_MEDIA{,_V2} usage.
        * Source/cmake/WebKitFeatures.cmake:
        Enabled ENABLE_ENCRYPTED_MEDIA{,_V2} usage.
        * Source/cmakeconfig.h.cmake:
        Added ENABLE_ENCRYPTED_MEDIA{,_V2} flags.

2014-02-27  Peter Molnar  <pmolnar.u-szeged@partner.samsung.com>

        Enable support of X-Content-Type-Options: nosniff header for EFL
        https://bugs.webkit.org/show_bug.cgi?id=128673

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake:
        Enabled NOSNIFF feature flag for EFL.

2014-02-27  Koop Mast  <kwm@FreeBSD.org>

        Fallback on checking for libz manualy if zlib.pc isn't available.
        https://bugs.webkit.org/show_bug.cgi?id=127061

        Reviewed by Gustavo Noronha Silva.

        * Source/autotools/FindDependencies.m4:

2014-02-25  Sergio Villar Senin  <svillar@igalia.com>

        [CSS Grid Layout] Add ENABLE flag
        https://bugs.webkit.org/show_bug.cgi?id=129153

        Reviewed by Simon Fraser.

        Added the ENABLE_CSS_GRID_LAYOUT feature flag to the cmake and
        autotools build systems. The feature is disabled by default for
        production builds.

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

2014-02-24  Martin Robinson  <mrobinson@igalia.com>

        [GTK] generate-gtkdoc should not generate documentation for source files for unbuilt source files
        https://bugs.webkit.org/show_bug.cgi?id=128417

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Define the paths to the pkgconfig files here, so that they
        may one day be used in the webkitdom config file generation.

2014-02-18  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL][CMake] Fix javascriptcore test failings by the jsCStack branch merge
        https://bugs.webkit.org/show_bug.cgi?id=128961

        Reviewed by Ryosuke Niwa.

        Javascriptcore test on EFL port has been broken since the jsCStack branch merge.
        For now we can fix almost tests by using "-fno-tree-dce option". Unfortunately,
        EFL port needs not to check "uninitialized" build warning as error in order to
        adjust the option to EFL port. This patch don't take it as error temporarily.

        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/WebKitHelpers.cmake:

2014-02-16  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] JavaScriptCore crashes in JSC::eval
        https://bugs.webkit.org/show_bug.cgi?id=128434

        Reviewed by Anders Carlsson.

        * Source/cmake/OptionsGTK.cmake: Add -fno-omit-frame-pointer to the GTK+ CMake
        port as well as -fno-tree-dce, like it is used in the autotools build.

2014-02-17  ChangSeok Oh  <changseok.oh@collabora.com>

        [GTK] MEDIA_CONTROLS_SCRIPT depends on VIDEO_TRACK
        https://bugs.webkit.org/show_bug.cgi?id=128799

        Reviewed by Philippe Normand.

        MEDIA_CONTROLS_SCRIPT has a dependency on VIDEO_TRACK. So it causes a build break
        if building with autotools. cmake system has enabled it as default. So I propose
        enabling VIDEO_TRACK as well.

        * Source/autotools/SetupWebKitFeatures.m4:

2014-02-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r164090.
        http://trac.webkit.org/changeset/164090
        https://bugs.webkit.org/show_bug.cgi?id=128807

        It broke the EFL build (Requested by Ossy on #webkit).

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

2014-02-09  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] JavaScriptCore crashes in JSC::eval
        https://bugs.webkit.org/show_bug.cgi?id=128434

        Extend a fix for EFL to all ports that use GCC. Also include further fixes
        that were applied only to the autotools build.

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsCommon.cmake: Add -fno-omit-frame-pointer to all ports as well
        as -fno-tree-dce, which is necessary for GTK+.
        * Source/cmake/OptionsEfl.cmake: The GCC flag additions are now in the common options file.

2014-02-04  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK][CMake] Generate GObject DOM bindings .symbols files
        https://bugs.webkit.org/show_bug.cgi?id=126210

        Reviewed by Martin Robinson.

        * Source/PlatformGTK.cmake: add checking DOM bindings API as a dependency
        for documentation generation.

2014-02-13  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GTK] MEDIA_CONTROLS_SCRIPT support
        https://bugs.webkit.org/show_bug.cgi?id=123097

        Reviewed by Jer Noble.

        Part of the Autotools and CMake structure to build the media
        controls script.

        * Source/autotools/SetupWebKitFeatures.m4: Activated the media
        controls script by default.
        * Source/cmake/OptionsGTK.cmake: Activated the media controls
        script by default.
        * Source/cmake/WebKitFeatures.cmake: Created the option to
        activate the controls script.
        * Source/cmakeconfig.h.cmake: Created the define template the the
        media controls script.

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

        [GDB] Add .gdbinit to the list of files ignored by Git
        https://bugs.webkit.org/show_bug.cgi?id=128455

        Reviewed by Anders Carlsson.

        * .gitignore: Ignore the .gdbinit file which can be used to perform WebKit-specific GDB initialization
        when the debugger is launched in the repository's root directory. Also remove a Chromium-specific comment
        that covers already removed entries.

2014-02-11  Oliver Hunt  <oliver@apple.com>

        Make it possible to implement JS builtins in JS
        https://bugs.webkit.org/show_bug.cgi?id=127887

        Reviewed by Michael Saboff.

        * GNUmakefile.am:
        * Source/cmake/gtest/CMakeLists.txt:

2014-02-12  Ryan Lortie  <desrt@desrt.ca>

        'ar T' is not portable and breaks the build on FreeBSD
        https://bugs.webkit.org/show_bug.cgi?id=128596

        Reviewed by Gustavo Noronha Silva.

        Create thin archives only if we are using GNU ar.

        * Source/autotools/SetupLibtool.m4:

2014-02-10  Krzysztof Wolanski  <k.wolanski@samsung.com>

        Add the CSS_SHAPE_INSIDE to CMake feature list
        https://bugs.webkit.org/show_bug.cgi?id=128530

        Reviewed by Gyuyoung Kim.

        CSS_SHAPE_INSIDE flag was added in r163333,
        this patch is adding this flag to CMake feature list.

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

2014-02-09  Carlos Garnacho  <carlosg@gnome.org>

        [GTK] Enable touch features
        https://bugs.webkit.org/show_bug.cgi?id=98931

        Reviewed by Carlos Garcia Campos.

        * Source/autotools/SetupWebKitFeatures.m4:
        * Source/cmake/OptionsGTK.cmake: set ENABLE_TOUCH_EVENTS to 1 if building with GTK+.

2014-02-06  Andreas Kling  <akling@apple.com>

        Remove unused ENABLE(REPAINT_THROTTLING) flag.
        <https://webkit.org/b/128329>

        Reviewed by Antti Koivisto.

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

2014-02-06  Joseph Pecoraro  <pecoraro@apple.com>

        [iOS] make should build WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=128351

        Reviewed by Daniel Bates.

        * Source/Makefile:

2014-02-05  Andreas Kling  <akling@apple.com>

        Remove ENABLE(DIRECTORY_UPLOAD).
        <https://webkit.org/b/128275>

        Rubber-stamped by Ryosuke Niwa.

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

2014-02-05  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(SVG) guards
        https://bugs.webkit.org/show_bug.cgi?id=127991

        Reviewed by Sam Weinig.

        * Source/autotools/FindDependencies.m4:
        * Source/autotools/PrintBuildConfiguration.m4:
        * Source/autotools/ReadCommandLineArguments.m4:
        * Source/autotools/SetupAutomake.m4:
        * Source/autotools/SetupWebKitFeatures.m4:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmakeconfig.h.cmake:

2014-02-04  Andreas Kling  <akling@apple.com>

        Remove <iframe seamless> support.
        <https://webkit.org/b/128213>

        Rubber-stamped by Antti Koivisto.

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

2014-01-31  Benjamin Poulain  <bpoulain@apple.com>

        Remove LEGACY_VIEWPORT_ADAPTION
        https://bugs.webkit.org/show_bug.cgi?id=128028

        Reviewed by Anders Carlsson.

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

2014-01-31  Oliver Hunt  <oliver@apple.com>

        Rollout r163195 and related patches

        * GNUmakefile.am:
        * Source/cmake/gtest/CMakeLists.txt:

2014-01-29  Oliver Hunt  <oliver@apple.com>

        Make it possible to implement JS builtins in JS
        https://bugs.webkit.org/show_bug.cgi?id=127887

        Reviewed by Michael Saboff.

        CMake updates

        * Source/cmake/gtest/CMakeLists.txt:

2014-01-30  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Add support for building against GTK+ 2
        https://bugs.webkit.org/show_bug.cgi?id=127959

        Reviewed by Anders Carlsson.

        * Source/cmake/OptionsGTK.cmake: Add a new option to use GTK 2 and make a variable holding the
        library API version. When using GTK 2 do not build WebKit 2.

2014-01-30  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Add a "make dist" target
        https://bugs.webkit.org/show_bug.cgi?id=116378

        Reviewed by Gustavo Noronha Silva.

        * Source/PlatformGTK.cmake: A CMake support for executing the make-dist
        script and then turning the tarfile into a LZMA compressed file.

2014-01-30  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Only disable -ftree-dce optimization when compiling with GCC
        https://bugs.webkit.org/show_bug.cgi?id=127911

        Reviewed by Carlos Garcia Campos.

        * Source/autotools/SetupAutomake.m4: Define the COMPILER_GCC and COMPILER_CLANG Automake macros.
        These can be used when compiler-specific flags have to be used. The latter one is not actually needed
        at the moment, but is added for the sake of completeness.

2014-01-30  Csaba Osztrogonác  <ossy@webkit.org>

        [EFL] Fix the regression caused by the jsCStack branch merge
        https://bugs.webkit.org/show_bug.cgi?id=127898

        Reviewed by Zoltan Herczeg.

        * Source/cmake/OptionsEfl.cmake: Build with -fno-omit-frame-pointer.

2014-01-29  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(JAVASCRIPT_DEBUGGER) leftovers
        https://bugs.webkit.org/show_bug.cgi?id=127845

        Reviewed by Joseph Pecoraro.

        * Source/autotools/SetupWebKitFeatures.m4:

2014-01-29  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(JAVASCRIPT_DEBUGGER) guards
        https://bugs.webkit.org/show_bug.cgi?id=127840

        Reviewed by Mark Lam.

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

2014-01-25  Darin Adler  <darin@apple.com>

        Get rid of ICU_UNICODE and WCHAR_UNICODE remnants
        https://bugs.webkit.org/show_bug.cgi?id=127623

        Reviewed by Anders Carlsson.

        * Source/cmake/OptionsEfl.cmake: Removed ICU_UNICODE and WCHAR_UNICODE flags.
        * Source/cmake/OptionsGTK.cmake: Ditto.
        * Source/cmake/OptionsWinCE.cmake: Ditto.

2014-01-23  Max Vujovic  <mvujovic@adobe.com>

        Remove CSS Custom Filters code and tests
        https://bugs.webkit.org/show_bug.cgi?id=127382

        Reviewed by Simon Fraser.

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

2014-01-22  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Add support for building the NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=127195

        Reviewed by Daniel Bates.

        * Source/cmake/OptionsGTK.cmake: Turn on the network process and give it
        a name like the WebProcess.

2014-01-20  Ryuan Choi  <ryuan.choi@samsung.com>

        [CMAKE] Remove Nix from CMake scripts
        https://bugs.webkit.org/show_bug.cgi?id=127264

        Reviewed by Anders Carlsson.

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

2014-01-18  Anders Carlsson  <andersca@apple.com>

        Remove ENABLE_THREADED_HTML_PARSER defines everywhere
        https://bugs.webkit.org/show_bug.cgi?id=127225

        Reviewed by Andreas Kling.

        This concludes the removal of over 8.8 million lines of threaded parser code.

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

2014-01-18  Lauro Neto  <lauro.neto@openbossa.org>

        Remove Nix files from WebCore
        https://bugs.webkit.org/show_bug.cgi?id=127176

        Reviewed by Anders Carlsson.

        * Source/cmake/OptionsNix.cmake: Removed.

2014-01-18  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Bump the minimum required Clang version to 3.3
        https://bugs.webkit.org/show_bug.cgi?id=127178

        Reviewed by Martin Robinson.

        * Source/autotools/CheckSystemAndBasicDependencies.m4: Require Clang 3.3 or later when using the Clang compiler to
        build the GTK port. Building with Clang 3.2 doesn't work anymore and there's no point in fixing that, as we should
        support the latest two versions of Clang (3.3 and 3.4), just like we do with GCC (4.7 and 4.8).

2014-01-14  Dan Bernstein  <mitz@apple.com>

        Only use color in make output when it’s going to a terminal.

        Reviewed by Mark Rowe.

        * Makefile.shared:

2014-01-13  Martin Robinson  <mrobinson@igalia.com>

        [CMake] Mark all dependency include paths and libraries as advanced variables
        https://bugs.webkit.org/show_bug.cgi?id=126504

        Reviewed by Daniel Bates.

        * Source/cmake/FindATK.cmake: Mark result variable as advanced.
        * Source/cmake/FindCairo.cmake: Ditto.
        * Source/cmake/FindEGL.cmake: Ditto.
        * Source/cmake/FindEnchant.cmake: Ditto.
        * Source/cmake/FindGLIB.cmake: Ditto.
        * Source/cmake/FindGStreamer.cmake: Ditto.
        * Source/cmake/FindHarfBuzz.cmake: Ditto.
        * Source/cmake/FindLibSoup.cmake: Ditto.

2014-01-13  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Add a 'check' target
        https://bugs.webkit.org/show_bug.cgi?id=126770

        Reviewed by Daniel Bates.

        * Source/PlatformGTK.cmake: Add a 'check' target that calls run-gtk-tests.

2014-01-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and Versions.m4 for 2.3.4 release.

        * Source/autotools/Versions.m4: Bump version numbers.

2014-01-12  Sergio Correia  <sergio.correia@openbossa.org>

        [EFL][WK2] Make API tests work again
        https://bugs.webkit.org/show_bug.cgi?id=126769

        Reviewed by Gyuyoung Kim.

        The EFL and WK2 test binaries are currently being generated at *TestWebKitAPI/
        [E]WebKit2, respectively, and this causes problems because the logic to find
        where WebProcess is to look in the same directory of the running process and
        then proceed to use LIBEXECDIR (typically /usr/loca/bin).

        This patch introduces a WEBKIT_EXEC_PATH environment variable, inspired in the
        Gtk port, which allows us to look for WebProcess initially in this directory,
        if it's defined.

        * Source/cmake/OptionsEfl.cmake: Define WEBKIT_EXEC_PATH, to be used by
        [E]WebKit2 tests.

2014-01-11  Dan Bernstein  <mitz@apple.com>

        [Mac] xcodebuild color output is suppressed when using make
        https://bugs.webkit.org/show_bug.cgi?id=126815

        Reviewed by Anders Carlsson.

        WHen using make, xcodebuild’s output is piped through a filter, which causes it not to
        format its output with color and emphasis.

        * Makefile.shared: Pass COLOR_DIAGNOSTICS=YES to xcodebuild to force color output on. Due to
        xcodebuild limitations, this restores some of the formatting, but not all of it.

2014-01-10  Benjamin Poulain  <bpoulain@apple.com>

        Remove the BlackBerry port from trunk
        https://bugs.webkit.org/show_bug.cgi?id=126715

        Reviewed by Anders Carlsson.

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

2014-01-10  Tamas Gergely  <tgergely.u-szeged@partner.samsung.com>

        [EFL][JSC] Enable udis86 disassembler on efl.
        https://bugs.webkit.org/show_bug.cgi?id=125502

        Reviewed by Michael Saboff.

        Enable udis86 disassembler on efl and fix build warnings.

        * Source/cmake/OptionsEfl.cmake:
          Enable udis86 disassembler.

2014-01-10  Benjamin Poulain  <bpoulain@apple.com>

        Remove the BlackBerry port from trunk
        https://bugs.webkit.org/show_bug.cgi?id=126715

        Reviewed by Anders Carlsson.

        * CMakeLists.txt:

2014-01-09  Benjamin Poulain  <bpoulain@apple.com>

        Remove the BlackBerry files outside WebCore
        https://bugs.webkit.org/show_bug.cgi?id=126715

        Reviewed by Anders Carlsson.

        * ManualTests/blackberry: Removed.
        * Source/cmake/OptionsBlackBerry.cmake: Removed.

2014-01-08  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Specify the executable and library output locations in the build
        https://bugs.webkit.org/show_bug.cgi?id=126671

        Reviewed by Gustavo Noronha Silva.

        * Source/cmake/OptionsGTK.cmake: Explicitly specify the output locations.

2014-01-08  Dániel Bátyai  <dbatyai.u-szeged@partner.samsung.com>

        [EFL] Make FTL buildable
        https://bugs.webkit.org/show_bug.cgi?id=125777

        Reviewed by Csaba Osztrogonác.

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

2014-01-08  Alberto Garcia  <berto@igalia.com>

        REGRESSION(r160304): [GTK] Disable libtool fast install
        https://bugs.webkit.org/show_bug.cgi?id=126381

        Reviewed by Gustavo Noronha Silva.

        Don't disable the libtool fast-install mode unconditionally by
        default.

        If the fast-install mode is disabled, binaries are generated ready
        to use the libraries directly from the build tree. If we use the
        GNU linker, those binaries are then relinked when they are
        installed.

        However, libtool fails to do it properly when an installation
        prefix is set with DESTDIR, and ends up installing the libtool
        wrappers instead of the actual binaries.

        * Source/autotools/SetupLibtool.m4:

2014-01-07  Gustavo Noronha Silva  <gustavo.noronha@collabora.com>

        Unreviewed GTK/CMake build fix: use the correct location for docs-build.stamp
        in output and dependencies declarations, so docs are not built needlessly
        every build.

        * Source/PlatformGTK.cmake:

2014-01-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Move all GTK/GObject unit tests to Tools/TestWebKitAPI
        https://bugs.webkit.org/show_bug.cgi?id=126342

        Reviewed by Gustavo Noronha Silva.

        * GNUmakefile.am: Remove unused variable.
        * Source/PlatformGTK.cmake: No longer include the old unit tests directories.

2014-01-06  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] configure errors out when building with libc++
        https://bugs.webkit.org/show_bug.cgi?id=126431

        Reviewed by Martin Robinson.

        Ease up the Clang and libstdc++ combination test to only fail if libstdc++ < 4.8.1 is actually used.
        This allows for libc++ to be used as well. The test is moved into SetupCompilerFlags.m4 and is done
        after the CXXFLAGS variable is properly set up, that is when all the C++ compiler options are determined.

        * Source/autotools/CheckSystemAndBasicDependencies.m4:
        * Source/autotools/SetupCompilerFlags.m4:

2014-01-06  Martin Robinson  <mrobinson@igalia.com>

        [CMake] [GTK] Fix the build for the WebKitGTK+ developer configuration
        https://bugs.webkit.org/show_bug.cgi?id=126505

        Reviewed by Gustavo Noronha Silva.

        * Source/cmake/FindGLIB.cmake: Add support for finding the gio-unix include directory location.
        * Source/cmake/FindGUdev.cmake: Added.
        * Source/cmake/FindGeoClue.cmake: Added.
        * Source/cmake/OptionsGTK.cmake: When gamepad is enabled look for gio-unix and GUdev. When
        geolocation is enabled look for GeoClue.

2014-01-06  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Use libc++ for C++11 on darwin
        https://bugs.webkit.org/show_bug.cgi?id=126325

        Reviewed by Martin Robinson.

        * Source/autotools/SetupCompilerFlags.m4: Don't default to libstdc++ when compiling with Clang.
        Instead, the compiler should determine itself what standard library to use, except on Darwin,
        where libc++ should be enforced. The standard library of user's choosing can still be enforced
        through the CXXFLAGS environment variable.

2014-01-05  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Ensure that the autotools build and the CMake install the same files
        https://bugs.webkit.org/show_bug.cgi?id=116379

        Reviewed by Gustavo Noronha Silva.

        * Source/PlatformGTK.cmake: Install the documentation.
        * Source/cmake/OptionsCommon.cmake: Add a LIBEXEC variable for WebKit2 executables, and
        don't use the default locations on GTK+. We will get them from the CMake-provided GNU installation
        variables.
        * Source/cmake/OptionsGTK.cmake: Setup the installation variables using the ones provided
        by CMake's GNU installation directory support. Fix the definition of DATADIR. Always install
        the jsc binary.

2014-01-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Stop installing WebKit2 C API headers
        https://bugs.webkit.org/show_bug.cgi?id=126489

        Reviewed by Martin Robinson.

        * GNUmakefile.am:

2014-01-04  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Improve the way we locate gobject-introspection
        https://bugs.webkit.org/show_bug.cgi?id=126452

        Reviewed by Philippe Normand.

        * Source/cmake/FindGObjectIntrospection.cmake: Added.
        * Source/cmake/OptionsGTK.cmake: Load the new  FindGObjectIntrospection file.

2014-01-04  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Fix the video and audio build
        https://bugs.webkit.org/show_bug.cgi?id=126464

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsGTK.cmake: GStreamer files look for USE(GSTREAMER) and USE(WEBAUDIO_GSTREAMER),
        so define those when appropriate. Web audio is one by default in autotools, so turn it on for cmake
        as well.

2014-01-03  Martin Robinson  <mrobinson@igalia.com>

        [CMake] The forwarding headers generated by WebKitMacros.m4 are incompatible with the headers generated by generate-forwarding-headers.pl
        https://bugs.webkit.org/show_bug.cgi?id=126361

        Reviewed by Philippe Normand.

        Make the forwarding headers generated by WebKitMacros.m4 compatible with the headers
        generated by the WebKit2 forwarding headers generation script.

        * Source/cmake/WebKitMacros.cmake: Try to convert absolute paths in the forwarding headers
        to ones that are relative to the Source directory.

2014-01-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r160304): [GTK] Disable libtool fast install
        https://bugs.webkit.org/show_bug.cgi?id=126381

        Reviewed by Martin Robinson.

        After r160304 we are building some of our binaries that are
        installed with the -no-fast-install ld flag. This makes that the
        binaries are installed with the source code path hardcoded in
        binary RPATH. Disabling fast install globally, the libtool script
        always relinks the binaries right before being installed.

        * Source/autotools/SetupLibtool.m4: Add AC_DISABLE_FAST_INSTALL.

2014-01-02  Jaehun Lim  <ljaehun.lim@samsung.com>

        [CMake][EFL] Fix some typos in OptionsEfl.cmake
        https://bugs.webkit.org/show_bug.cgi?id=126376

        Reviewed by Gyuyoung Kim.

        * Source/cmake/WebKitFeatures.cmake: Correct a wrong word and remove comma(,).

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

        [CMake] [GTK] Add support for GObject introspection
        https://bugs.webkit.org/show_bug.cgi?id=126162

        Reviewed by Daniel Bates.

        * Source/PlatformGTK.cmake: Add a 'gir' target that builds all GIR files.
        * Source/cmake/OptionsGTK.cmake: Add a macro for propagating typelib
        targets to the Source level of the build.

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

        [GTK][CMake] Translations must be built
        https://bugs.webkit.org/show_bug.cgi?id=125513

        Reviewed by Gustavo Noronha Silva.

        * Source/PlatformGTK.cmake: Add the po subdirectory.

2013-12-28  Giovanni Campagna  <gcampagna@src.gnome.org>

        [GTK] Fix release builds with NetworkProcess enabled
        https://bugs.webkit.org/show_bug.cgi?id=126247

        Reviewed by Carlos Garcia Campos.

        * Source/autotools/symbols.filter:

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

        [GTK] [CMake] Add a production build type
        https://bugs.webkit.org/show_bug.cgi?id=126179

        Reviewed by Daniel Bates.

        * Source/PlatformGTK.cmake: When the API tests are enabled compile the WebKit GObject
        API unit tests. The inclusion of these build files was inadvertently removed in an earlier
        patch.
        * Source/cmake/OptionsGTK.cmake: When in production mode turn off all tools and tests and
        use the autotools linker script.

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

        [GTK] [CMake] Properly name the JavaScriptCore library
        https://bugs.webkit.org/show_bug.cgi?id=126220

        Reviewed by Gustavo Noronha Silva.

        * Source/cmake/OptionsGTK.cmake: Set the JSC library name properly.

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

        [GTK] [CMake] Clean up generated sources directories
        https://bugs.webkit.org/show_bug.cgi?id=126216

        Reviewed by Gustavo Noronha Silva.

        * Source/cmake/OptionsGTK.cmake: Pre-define the main derived sources directories
        so that they definitions can be shared easily throughout the build system.

2013-12-23  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][CMAKE] Case insensitive string comparison of build type
        https://bugs.webkit.org/show_bug.cgi?id=126153

        Reviewed by Daniel Bates.

        Compare CMAKE_BUILD_TYPE with "debug" ignoring case.

        * Source/cmake/OptionsEfl.cmake:

2013-12-23  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] [CMake] Add support for generating gtkdoc
        https://bugs.webkit.org/show_bug.cgi?id=116376

        Reviewed by Martin Robinson.

        * Source/PlatformGTK.cmake: Added. New custom target that depends on a custom command
        which calls our generate-gtkdoc script. It uses a docs-build.stamp for simplicity,
        like the autotools build.

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

        [GTK] [CMake] Build the WebKit2 GObject API tests
        https://bugs.webkit.org/show_bug.cgi?id=125683

        Reviewed by Daniel Bates.

        * Source/PlatformGTK.cmake: Load the WebKit2 tests file if necessary.
        * Source/cmake/FindATSPI.cmake: Added.
        * Source/cmake/OptionsGTK.cmake: Look for AT-SPI, but don't fail if it isn't found.

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

        [GTK] [CMake] Build the WebKit1 GObject API tests
        https://bugs.webkit.org/show_bug.cgi?id=125684

        Reviewed by Daniel Bates.

        * Source/PlatformGTK.cmake: Added.

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

        https://bugs.webkit.org/show_bug.cgi?id=125511

        [GTK][CMake] libtool-compatible soversion calculation
        Reviewed by Gustavo Noronha Silva.

        * Source/cmake/OptionsGTK.cmake: Specify the appropriate libtool triples and use
        the CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE macro to specify the library-specific
        version information.
        * Source/cmake/WebKitHelpers.cmake: Add some helpful macros.

2013-12-23  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] [CMake] Generate pkg-config files
        https://bugs.webkit.org/show_bug.cgi?id=125685

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsGTK.cmake: set variables used for filling in the values in the
        pkg-config files.

2013-12-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Build with network process unconditionally
        https://bugs.webkit.org/show_bug.cgi?id=126128

        Reviewed by Martin Robinson.

        * Source/autotools/SetupAutomake.m4: Remove network process
        conditional for Makefiles.
        * Source/autotools/SetupWebKitFeatures.m4: Remove network process
        feature.

2013-12-18  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK][CMake] make libjavascriptcoregtk a public shared library again
        https://bugs.webkit.org/show_bug.cgi?id=125512

        Reviewed by Martin Robinson.

        * CMakeLists.txt: make JavaScriptCore always be a shared library for the GTK+ port.
        * Source/cmake/WebKitHelpers.cmake: make -fvisibility=hidden not be applied for GTK+,
        visibility of some symbols is required for threading to be initialized properly by
        WebKit2 processes, and we will rely on a linker script that will be added later on,
        for production builds.

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

        [GTK] [CMake] Add support for building WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=116377

        Reviewed by Gustavo Noronha Silva.

        * Source/cmake/OptionsGTK.cmake: Turn off some features that do not build properly
        for WebKit1 and stop using the version script which we haven't implemented yet. Turn
        on WebKit1.

2013-12-18  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK][CMake] Use thin archives if building on Linux, only way to get non-shared-core debug builds
        https://bugs.webkit.org/show_bug.cgi?id=125951

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsGTK.cmake: append T for thin archives to the flags passed to ar,
        also use u, which is used in the autotools build (it avoids adding a file twice).

2013-12-18  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK][CMake] Remove binary size optimizations we do not use in the autotools build
        https://bugs.webkit.org/show_bug.cgi?id=125947

        Reviewed by Martin Robinson.

        * Source/cmake/OptionsGTK.cmake: remove the relevant flags.

2013-12-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and Versions.m4 for 2.3.3 release.

        * Source/autotools/Versions.m4: Bump version numbers.

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

        [GTK] [CMake] Build the plugin process against GTK+ 2
        https://bugs.webkit.org/show_bug.cgi?id=116374

        Reviewed by Gustavo Noronha Silva.

        * Source/cmake/FindGDK2.cmake: Added.
        * Source/cmake/FindGTK2.cmake: Added.
        * Source/cmake/OptionsGTK.cmake: Look for GTK2 and GDK2.
        * Source/cmake/WebKitMacros.cmake: Abstract WebKit2 IPC generation here so it
        can be shared between the WebKit2 library and the plugin process.

2013-12-17  Simon Pena  <simon.pena@samsung.com>

        [NIX] Enable full debug builds by having ar creating thin archives
        https://bugs.webkit.org/show_bug.cgi?id=125850

        Reviewed by Csaba Osztrogonác.

        By default, CMake uses ar to generate libWebCore.a with cr parameters
        (do not warn if the library has to be created, and replace existing
        files in the archive). That results in a very large file, and ar fails
        with sizes over 4GB.

        Previously, debug builds on NIX were overriding CFLAGS in order to reduce
        the size of the WebCore library. Once that ar creates thin archives, overriding
        CFLAGS is no longer needed.

        * Source/cmake/OptionsNix.cmake: Remove CFLAGS override for debug builds.

2013-12-13  Joseph Pecoraro  <pecoraro@apple.com>

        [GTK] Remove Warnings in building about duplicate INSPECTOR variables
        https://bugs.webkit.org/show_bug.cgi?id=125710

        Reviewed by Tim Horton.

        * GNUmakefile.am:

2013-12-13  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add Inspector Code Generation to JavaScriptCore for Runtime Domain
        https://bugs.webkit.org/show_bug.cgi?id=125595

        Reviewed by Timothy Hatcher.

        * GNUmakefile.am:

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

        [GTK] Remove the -Wno-c++11-extensions compiler option for Clang builds
        https://bugs.webkit.org/show_bug.cgi?id=125639

        Reviewed by Anders Carlsson.

        * Source/autotools/SetupCompilerFlags.m4: The -Wno-c++11-extensions compiler option was in use
        when building with Clang. It is now removed as the C++11 standard is enabled throughout the project.

2013-12-11  Martin Robinson  <mrobinson@igalia.com> and Danilo Cesar Lemes de Paula  <danilo.cesar@collabora.co.uk>

        Adding a .ycm_extra_conf file for webkitGtk
        https://bugs.webkit.org/show_bug.cgi?id=119618

        Reviewed by Gustavo Noronha Silva.

        Added a YouCompleteMe flag discovery script for Vim and the GTK+ port. The script
        read the GTK+ build files to determine dynamically what flags to compile a source
        file with. This allows Vim to provide auto-complete for C++/C language. See
        https://github.com/Valloric/YouCompleteMe for how to use this file.

        * .gitignore: Ignore the YCM symlinks in the tree.

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

        Use of ar T option not supported by older binutils
        https://bugs.webkit.org/show_bug.cgi?id=118732

        Reviewed by Gustavo Noronha Silva.

        * Source/autotools/SetupLibtool.m4: Make the AR_FLAGS value usable inside makefiles as an Automake variable.

2013-12-11  Javier Fernandez  <jfernandez@igalia.com>

        Arithmetic overflow when computing max-height CSS property with subpixel layout
        https://bugs.webkit.org/show_bug.cgi?id=119273

        Reviewed by Martin Robinson.

        Enabled SATURATED_LAYOUT_ARITHMETIC for the gtk+ port.

        * Source/autotools/SetupWebKitFeatures.m4:

2013-12-10  Tamas Gergely  <tgergely.u-szeged@partner.samsung.com>

        [CMAKE] Remove code that disables C++0x compat warnings for gcc-4.6 and above.
        https://bugs.webkit.org/show_bug.cgi?id=125492

        Reviewed by Zoltan Herczeg.

        Remove the code that disables these warnings for GCC >= 4.6.0

        * Source/cmake/WebKitHelpers.cmake:

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

        Various fixes for the CMake GTK+ build

        Reviewed by Gustavo Noronha.

        * Source/cmake/OptionsGTK.cmake: Disable Quota support to maintain consistency with
        autotools build.

2013-12-09  Brian Holt  <brian.holt@samsung.com>

        [WK2][Gtk] Add support for ENABLE_NETWORK_PROCESS to the build system
        https://bugs.webkit.org/show_bug.cgi?id=118231

        Reviewed by Martin Robinson.

        Original patch by Kwang Yul Seo  <skyul@company100.net>.

        Disabled ENABLE_NETWORK_PROCESS by default.

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

2013-12-06  Alberto Garcia  <berto@igalia.com>

        [GTK] Enable web audio by default
        https://bugs.webkit.org/show_bug.cgi?id=124888

        Reviewed by Martin Robinson.

        When building with ./configure, enable_web_audio defaults to
        "no". However the basic functionality has been working for months
        so it's safe to enable it now.

        * Source/autotools/ReadCommandLineArguments.m4:

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

        Enable HTMLTemplateElement by default
        https://bugs.webkit.org/show_bug.cgi?id=123851

        Reviewed by Antti Koivisto.

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

2013-12-04  László Langó  <lango@inf.u-szeged.hu>

        Allow --cloop option to work correctly in case of EFL.
        https://bugs.webkit.org/show_bug.cgi?id=125217

        Reviewed by Zoltan Herczeg.

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

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

        [EFL] Disable RTTI for release build
        https://bugs.webkit.org/show_bug.cgi?id=125138

        Reviewed by Gyuyoung Kim.

        Binary size will be reduced about 1M bytes without RTTI.
        ewebkit.so : 43,449,275 -> 42,510,224
        ewebkit2.so: 46,715,870 -> 45,653,989

        * Source/cmake/OptionsEfl.cmake: Added -fno-rtti option to CMAKE_CXX_FLAGS_RELEASE.

2013-12-02  Adrian Bunk  <bunk@stusta.de>

        [GTK] Remove unneeded autoconf macros
        https://bugs.webkit.org/show_bug.cgi?id=125044

        Compilers that do not support const/inline/volatile and
        systems with pre-C89-headers are anyway not supported.

        Reviewed by Gustavo Noronha Silva.

        * Source/autotools/CheckSystemAndBasicDependencies.m4:

2013-11-29  Laszlo Vidacs  <lac@inf.u-szeged.hu>

        [cmake] Fix cmake warning: Argument not separated from preceding token by whitespace
        https://bugs.webkit.org/show_bug.cgi?id=124899

        Reviewed by Gyuyoung Kim.

        * Source/cmake/FindCairo.cmake:
        * Source/cmake/FindGStreamer.cmake:

2013-11-28  Antti Koivisto  <antti@apple.com>

        Remove feature: CSS variables
        https://bugs.webkit.org/show_bug.cgi?id=114119

        Reviewed by Andreas Kling.

        * Source/cmakeconfig.h.cmake:

2013-11-27  László Langó  <lango@inf.u-szeged.hu>

        [EFL] The remote inspector does not show the base page.
        https://bugs.webkit.org/show_bug.cgi?id=124942

        Reviewed by Gyuyoung Kim.

        On EFL the remote inspector does not show the base page about
        which pages are available for debug. This should be fixed for
        further inspector development.

        * Source/PlatformEfl.cmake:

2013-11-26  Marcelo Lira  <marcelo.lira@openbossa.org>

        Nix upstreaming - Adding build files and supporting scripts
        https://bugs.webkit.org/show_bug.cgi?id=118367

        Reviewed by Ryosuke Niwa.

        * CMakeLists.txt:
        * Source/CMakeLists.txt:
        * Source/cmake/FindEGL.cmake:
        * Source/cmake/FindOpenGLES2.cmake: Added.
        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsNix.cmake: Added.

2013-11-25  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] E_DBus should be an optional
        https://bugs.webkit.org/show_bug.cgi?id=124881

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake:
        Checked E_DBus when only ENABLE_BATTERY_STATUS is on.

2013-11-25  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Use Config mode of find_package for EFL 1.8
        https://bugs.webkit.org/show_bug.cgi?id=124555

        Reviewed by Gyuyoung Kim.

        EFL 1.8 changed VERSION macro so it's difficult to use tricky approach
        which parses header files to know the version. Instead, EFL 1.8 supports
        FooConfig.cmake such as EinaConfig.cmake.

        This patch tries to use a config mode if it is available.
        If config mode is not available with Eo, FindFoo.cmake will be used without
        version requirement.

        * Source/cmake/FindEo.cmake: Removed.
        EoConfig.cmake is only preffered for EFL 1.8.
        * Source/cmake/OptionsEfl.cmake:

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

        [GStreamer] Remove 0.10 codepath
        https://bugs.webkit.org/show_bug.cgi?id=124534

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsEfl.cmake: Removed GST_API_VERSION_1
        definition.

2013-11-22  Manuel Rego Casasnovas  <rego@igalia.com>

        [GTK] Review enabled/disabled CSS features for release builds
        https://bugs.webkit.org/show_bug.cgi?id=124791

        Reviewed by Martin Robinson.

        Enable and disable some CSS features according to what last versions of
        Safari ship or not.

        * Source/autotools/SetupWebKitFeatures.m4: Enable ENABLE_CSS_REGIONS and
        ENABLE_CSS_STICKY_POSITION. Disable ENABLE_CSS_EXCLUSIONS and
        ENABLE_CSS_SHAPES.

2013-11-21  Peter Molnar  <pmolnar.u-szeged@partner.samsung.com>

        Remove ENABLE_WORKERS
        https://bugs.webkit.org/show_bug.cgi?id=105784

        Reviewed by Darin Adler.

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

2013-11-20  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r159496.
        http://trac.webkit.org/changeset/159496
        https://bugs.webkit.org/show_bug.cgi?id=124641

        It caused warning and build break with cmake lower than 2.8.8
        (Requested by ryuan on #webkit).

        * Source/cmake/OptionsEfl.cmake:

2013-11-19  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Use Config mode of find_package for EFL 1.8
        https://bugs.webkit.org/show_bug.cgi?id=124555

        Reviewed by Gyuyoung Kim.

        EFL 1.8 changed VERSION macro so it's difficult to use tricky approach
        which parses header file to know the version. Instead, EFL 1.8 supports
        Config mode of find_package using XXXConfig.cmake such as EinaConfig.cmake.

        This patch tries to use Config mode if it is available after checking Eo.

        * Source/cmake/OptionsEfl.cmake:

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

        Unreviewed. Update NEWS and Versions.m4 for 2.3.2 release.

        * Source/autotools/Versions.m4: Bump version numbers.

2013-11-06  Krzysztof Czech  <k.czech@samsung.com>

        [EFL] Change required version of ATK to 2.10.0
        https://bugs.webkit.org/show_bug.cgi?id=123883

        Reviewed by Mario Sanchez Prada.

        Changing a required version of ATK to 2.10.0

        * Source/cmake/OptionsEfl.cmake:

2013-11-05  Zalan Bujtas  <zalan@apple.com>

        Widget's position change should not initiate layout, only when its size changes.
        https://bugs.webkit.org/show_bug.cgi?id=123860

        Reviewed by Andreas Kling.

        RenderWidgets initiate unnecessary layouts while scrolling when they are embedded to
        overflow:scroll containers. Scroll position change doesn't dirty the render tree
        so it should not trigger layout either.

        * ManualTests/layouts-on-renderwidgets-while-scrolling.html: Added.

2013-11-05  Éva Balázsfalvi  <balazsfalvi.eva@stud.u-szeged.hu>

        Remove leftover Qt related things from WebKitMacros.cmake
        https://bugs.webkit.org/show_bug.cgi?id=123798

        Reviewed by Anders Carlsson.

        * Source/cmake/WebKitMacros.cmake:

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

        [WINCE] Disable export macros
        https://bugs.webkit.org/show_bug.cgi?id=123679

        Reviewed by Darin Adler.

        Avoid useless exports by turning of the export macros
        since the WinCE port works as a static library only.

        * Source/cmake/OptionsWinCE.cmake:

2013-10-31  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][GLES] OpenGL should be an optional
        https://bugs.webkit.org/show_bug.cgi?id=123399

        Reviewed by Noam Rosenthal.

        * Source/cmake/OptionsEfl.cmake:
        Refactor the check routine of GL dependencies to use OpenGL as optional.

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

        Unreviewed. Update NEWS and Versions.m4 for 2.3.1 release.

        * Source/autotools/Versions.m4: Bump version numbers.

2013-10-24  Ryuan Choi  <ryuan.choi@samsung.com>

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

        Reviewed by Gyuyoung Kim.

        After fixed build break on EFL 1.8 at r138326, EFL libraries are changed
        Eo typedef and splitted header files which contain version macro.

        * Source/cmake/EFLHelpers.cmake: Checked whether include path exist.
        * Source/cmake/FindEcore.cmake: Added 1.8 Header which have version macro.
        * Source/cmake/FindEdje.cmake: Ditto.
        * Source/cmake/FindEina.cmake: Ditto.
        * Source/cmake/FindEo.cmake: Ditto.
        * Source/cmake/FindEvas.cmake: Ditto.

2013-10-22  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Remove HAVE_GLX macro
        https://bugs.webkit.org/show_bug.cgi?id=123191

        Reviewed by Gyuyoung Kim.

        * Source/cmake/OptionsEfl.cmake: Removed unnecessary HAVE_GLX macro

2013-10-21  Gergo Balogh  <geryxyz@inf.u-szeged.hu>

        Remove .qmake.conf files
        https://bugs.webkit.org/show_bug.cgi?id=123091

        Reviewed by Csaba Osztrogonác.

        * .qmake.conf: Removed.

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

        [GTK] Generate API documentation for GObject DOM bindings
        https://bugs.webkit.org/show_bug.cgi?id=121538

        Reviewed by Gustavo Noronha Silva.

        * GNUmakefile.am: Initialize gdom_symbol_files variable.

2013-10-17  Afonso R. Costa Jr.  <afonso.costa@samsung.com>

        [CMAKE] Update code to take advantage of CMake version 2.8.3+.
        https://bugs.webkit.org/show_bug.cgi?id=97516

        Reviewed by Gyuyoung Kim.

        CMake's version was changed to 2.8.3. So, these files below
        can be simplified to take advantage of CMake's new version.

        * Source/cmake/FindCairo.cmake: Simplified according to CMake 2.8.3+.
        * Source/cmake/FindGStreamer.cmake: Ditto.

2013-10-16  Ryosuke Niwa  <rniwa@webkit.org>

        Add a new flakiness dashboard clone
        https://bugs.webkit.org/show_bug.cgi?id=122936

        Reviewed by Anders Carlsson.

        Added the initial prototype.

        * Websites/test-results: Added.
        * Websites/test-results/.htaccess: Added.
        * Websites/test-results/admin: Added.
        * Websites/test-results/admin/index.php: Added.
        * Websites/test-results/api: Added.
        * Websites/test-results/api/manifest.php: Added.
        * Websites/test-results/api/report.php: Added.
        * Websites/test-results/api/results.php: Added.
        * Websites/test-results/include: Added.
        * Websites/test-results/include/config.json: Added.
        * Websites/test-results/include/db.php: Added.
        * Websites/test-results/include/init-database.sql: Added.
        * Websites/test-results/include/json-shared.php: Added.
        * Websites/test-results/include/test-results.php: Added.
        * Websites/test-results/index.html: Added.
        * Websites/test-results/js: Added.
        * Websites/test-results/js/autocompleter.js: Added.
        * Websites/test-results/js/build.js: Added.
        * Websites/test-results/js/dom.js: Added.

2013-10-16  Csaba Osztrogonác  <ossy@webkit.org>

        [WK2][Efl][CMake] Add support for ENABLE_NETWORK_PROCESS to the build system
        https://bugs.webkit.org/show_bug.cgi?id=110139

        Reviewed by Laszlo Gombos.

        Original patch by Balazs Kelemen <kbalazs@webkit.org>

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

2013-10-10  Marcelo Morais  <m.morais@samsung.com>

        Web Inspector: Remove the old front-end from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=122295

        Reviewed by Timothy Hatcher.

        * Source/PlatformGTK.cmake: Removed. This file was using files from the
        old inspector, not needed anymore.

2013-10-09  Julien Brianceau  <jbriance@cisco.com>

        [sh4] Add sh4 support when building with CMake.
        https://bugs.webkit.org/show_bug.cgi?id=122542

        Reviewed by Csaba Osztrogonác.

        * CMakeLists.txt:

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

        [GTK] Re-enable MathML for release builds
        https://bugs.webkit.org/show_bug.cgi?id=122361

        Reviewed by Darin Adler.

        * Source/autotools/SetupWebKitFeatures.m4: Enable MathML for release builds.

2013-10-02  Anders Carlsson  <andersca@apple.com>

        Remove Qt related files from the root directories
        https://bugs.webkit.org/show_bug.cgi?id=122249

        Reviewed by Andreas Kling.

        * Source/QtWebKit.pro: Removed.
        * Source/api.pri: Removed.
        * Source/qtwebkit.qdocconf: Removed.
        * Source/sync.profile: Removed.
        * Source/tests.pri: Removed.
        * Source/widgetsapi.pri: Removed.
        * WebKit.pro: Removed.

2013-09-30  Sam Weinig  <sam@webkit.org>

        Remove support for DOMFileSystem
        https://bugs.webkit.org/show_bug.cgi?id=122137

        Reviewed by Anders Carlsson.

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

2013-09-30  Benjamin Poulain  <benjamin@webkit.org>

        Remove the code guarded by STYLE_SCOPED
        https://bugs.webkit.org/show_bug.cgi?id=122123

        Reviewed by Anders Carlsson.

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

2013-09-30  Allan Sandfeld Jensen  <allan.jensen@digia.com>

        [Qt] Fix force_static_libs_as_shared in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=121961

        Reviewed by Csaba Osztrogonác.

        Get rid of the unused WebKit2QML library

        * Source/api.pri:

2013-09-26  Gustavo Noronha Silva  <gustavo.noronha@collabora.com>

        [GTK] Tons of warnings caused by using FORTIFY_SOURCE in an unoptimized build
        https://bugs.webkit.org/show_bug.cgi?id=121836

        Reviewed by Martin Robinson.

        * Source/autotools/SetupCompilerFlags.m4: only consider enabling FORTIFY_SOURCE if optimizations have
        been enabled, since they are required for FORTIFY_SOURCE to work, and enabling FORTIFY_SOURCE unconditionally
        generates warnings in newer glibc.

2013-09-25  Allan Sandfeld Jensen  <allan.jensen@digia.com>

        [Qt] Fix build with Qt 5.2 QtPosition module
        https://bugs.webkit.org/show_bug.cgi?id=121089

        Reviewed by Simon Hausmann.

        QtLocation -> QtPositioning

        * Source/sync.profile:

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

        [GTK] Enable the Wayland target if GTK+ dependency is found
        https://bugs.webkit.org/show_bug.cgi?id=121704

        Reviewed by Gustavo Noronha Silva.

        The Wayland target should be enabled by default if the GTK+ dependency is of version 3.9.14 or later.

        * Source/autotools/FindDependencies.m4: If the Wayland target was not strictly disabled, the GTK+ dependency
        is tested if it can provide the Wayland GDK backend, and that the version of that backend matches the version
        of the master GTK+ dependency for which we already tested. If found, the target is enabled, otherwise we either
        warn or error out, depending on whether the build target was set to auto or completely disabled through configuration.
        * Source/autotools/ReadCommandLineArguments.m4: Switch the default Wayland target status to 'auto', meaning
        it will be disabled if the GTK+ dependency is not found.
        * Source/autotools/Versions.m4: Require GTK+ 3.9.14 for the Wayland target only.

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

        [Autotools] Rework the build target selection
        https://bugs.webkit.org/show_bug.cgi?id=121703

        Reviewed by Gustavo Noronha Silva.

        Replace the --with-target configuration flag with target-specific --enable-*-target flags:
        - --enable-x11-target
        - --enable-wayland-target
        - --enable-win32-target
        - --enable-quartz-target
        - --enable-directfb-target

        By default, the X11 target is enabled. This default is preserved only if no --enable-*-target flag
        is passed on the command line. When that occurs, the newly-constructed list of build targets is
        used to determine what build targets should actually be built. So for instance, executing just
        `./configure` would only enable the X11 target as that's the default, and executing
        `./configure --enable-wayland-target` would only enable the Wayland target, as the defaults are
        completely ignored.

        * Source/autotools/CheckSystemAndBasicDependencies.m4: Abort if grep was not found, just in case.
        * Source/autotools/CustomMacros.m4: The new file that contains helpful custom macros.
        * Source/autotools/FindDependencies.m4: Use the appropriate 'enable_*_target' references instead of 'with_*target'.
        * Source/autotools/PrintBuildConfiguration.m4: Use the new AM_APPEND_TO_DESCRIPTION macro to construct a pretty-looking
        description string of what targets will be built.
        * Source/autotools/ReadCommandLineArguments.m4: Replace the --with-target configuration flag and the related
        hacks with the set of --enable-*-target flags. The new AM_DETERMINE_BUILD_TARGET_STATUS macro is used to determine
        whether to enable specific build targets, based indirectly on the passed-in --enable-*-target flags.
        * Source/autotools/SetupAutoconfHeader.m4: Use the appropriate 'enable_*_target' references instead of 'with_*target'.
        * Source/autotools/SetupAutomake.m4: Use the appropriate 'enable_*_target' references instead of 'with_*target'.
        * configure.ac: Include the new CustomMacros.m4 file.

2013-09-23  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK] Bump version

        Reviewed by Carlos Garcia Campos.

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

2013-09-20  Sergio Correia  <sergio.correia@openbossa.org>

        [CMAKE] FindHarfBuzz: Handle harfbuzz / harfbuzz-icu split
        https://bugs.webkit.org/show_bug.cgi?id=121688

        Reviewed by Martin Robinson.

        HarfBuzz 0.9.18 split ICU support into a separate harfbuzz-icu library.
        To be able to build with earlier and newer versions of HarfBuzz, we should
        check for harfbuzz-icu as well, if version >= 0.9.18.

        * Source/cmake/FindHarfBuzz.cmake: Check for harfbuzz-icu, if version
        >= 0.9.18.

2013-09-16  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] Make symbol export filter more strict, and disable for dev/test builds
        https://bugs.webkit.org/show_bug.cgi?id=120586

        Reviewed by Martin Robinson.

        * GNUmakefile.am: only include test-related automake files when developer
        mode is on.
        * Source/autotools/ReadCommandLineArguments.m4: add --enable-developer-mode,
        defaults to no, and to yes for debug builds.
        * Source/autotools/SetupAutomake.m4: add ENABLE_DEVELOPER_MODE conditional.
        * Source/autotools/symbols.filter: make the exported symbols list much shorter,
        covering only the public ABI and a few symbols required by WebKit2 processes.

2013-09-13  Gustavo Noronha Silva  <gustavo.noronha@collabora.com>

        [GTK] Move to the new web inspector
        https://bugs.webkit.org/show_bug.cgi?id=120647

        Reviewed by Carlos Garcia Campos.

        * GNUmakefile.am: include the new WebInspectorUI GNUmakefile.am.

2013-09-13  Allan Sandfeld Jensen  <allan.jensen@digia.com>

        [Qt] Update sync.profile
        https://bugs.webkit.org/show_bug.cgi?id=121295

        Reviewed by Simon Hausmann.

        Ensure we let the dependencies pick the right branch instead of always master
        and list all the dependencies we need on all platforms.

        * Source/sync.profile:

2013-09-11  Mario Sanchez Prada  <mario.prada@samsung.com>

        [GTK] Remove Gail dependency from build system for GTK3
        https://bugs.webkit.org/show_bug.cgi?id=119673

        Reviewed by Gustavo Noronha Silva.

        * Source/autotools/FindDependencies.m4: Don't look for GAIL at all.
        * Source/autotools/Versions.m4: Removed any reference to GAIL.
        * Source/cmake/FindGAIL3.cmake: Removed.
        * Source/cmake/OptionsGTK.cmake: Don't look for the GAIL package.

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

        [CMake] Split out generic Windows files into its own file
        https://bugs.webkit.org/show_bug.cgi?id=119514

        Reviewed by Gyuyoung Kim.

        This allows us to add smaller CMakeLists.txt files when
        adding additional Windows ports.

        * Source/cmake/OptionsWinCE.cmake:
        * Source/cmake/WebKitMacros.cmake:

2013-09-11  Alberto Garcia  <berto@igalia.com>

        autogen.sh: fix removal of autom4te.cache
        https://bugs.webkit.org/show_bug.cgi?id=121150

        Reviewed by Carlos Garcia Campos.

        The removal of autom4te.cache is wrong, it uses 'rm -f' instead of
        'rm -rf' and it relies on an undefined variable.

        In addition to that, it should be done after running autoreconf,
        which is when it's no longer needed.

        * autogen.sh:

2013-09-11  Alberto Garcia  <berto@igalia.com>

        Unquoted $ORIGDIR in autogen.sh
        https://bugs.webkit.org/show_bug.cgi?id=19512

        Reviewed by Carlos Garcia Campos.

        Quote all directory names. This doesn't mean that all possible
        directory names are safe for building webkit, but the configure
        script already runs a sanity check.

        * autogen.sh:

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

        [GTK] Stop disabling deprecated symbols in debug builds
        https://bugs.webkit.org/show_bug.cgi?id=121145

        Reviewed by Carlos Garcia Campos.

        Disabling the dependencies' deprecated symbols in debug builds is only causing unnecessary
        build failures. Compiler warnings are being thrown whenever a deprecated symbol is being
        used, so a build failure is an overreach in this case.

        * Source/autotools/SetupAutoconfHeader.m4:

2013-09-10  Marcelo Morais  <m.morais@samsung.com>

        [EFL] WebInspector: Move to new webinspector
        https://bugs.webkit.org/show_bug.cgi?id=119559

        Reviewed by Gyuyoung Kim.

        Enabling the new Web Inspector on EFL port.
        Co-author: Andre Loureiro <andre.vl@samsung.com>

        * Source/PlatformEfl.cmake:
        * Source/cmake/OptionsEfl.cmake:

2013-09-06  Zan Dobersek  <zdobersek@igalia.com>

        REGRESSION(r155143): Build failures on GTK port with Clang and libstdc++ < 4.8.1
        https://bugs.webkit.org/show_bug.cgi?id=120896

        Reviewed by Anders Carlsson.

        The GTK port currently only permits using the libstdc++ standard library when compiling with
        Clang. After r155143, build failures are occurring when using Clang and libstdc++ that predates
        the 4.8.0 release due to the use of std::is_trivially_destructible that isn't available in
        libstdc++ < 4.8.0.

        To not add additional special casing, the GTK port should move onto requiring libstdc++ >= 4.8.1
        when compiling with the Clang compiler. Version 4.8.1 was chosen since it's C++11 feature-complete.
        This strict requirement is possible as compiling the GTK port with the Clang compiler is not really
        widespread, so we can afford to adjust the required dependencies to match other ports' progression
        instead of modifying the code.

        * Source/autotools/CheckSystemAndBasicDependencies.m4: If the detected compiler is Clang, also check
        that the libstdc++ standard library is used by testing for the __GLIBCXX__ macro that should be defined
        to the value lesser than the '20130531', the date stamp used by the 4.8.1 release of libstdc++. Since
        possible future releases of the 4.6 or 4.7 series of libstdc++ will also match this check due to a newer
        date stamp contained in __GLIBCXX__, the std::is_trivially_destructible struct is also used so the
        compilation will fail if the libstdc++ that's used is older than allowed (and therefor does not support
        the feature). If the check fails, a fatal error is thrown, describing the requirement. Everything carries
        on as normal otherwise.

2013-09-06  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Bump the required Clang version to 3.2
        https://bugs.webkit.org/show_bug.cgi?id=112537

        Reviewed by Gustavo Noronha Silva.

        * Source/autotools/CheckSystemAndBasicDependencies.m4: Require the Clang 3.2 stack
        when the Clang compiler is specified.

2013-09-05  Brendan Long  <b.long@cablelabs.com>

        [Qt] DefaultFullScreenVideoHandler and PlatformVideoWindow are included in the build when they are disabled
        https://bugs.webkit.org/show_bug.cgi?id=117206

        Reviewed by Philippe Normand.

        * Source/widgetsapi.pri: Don't include DefaultFullScreenVideoHandler when it's disabled.

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

        [CMAKE] Add c++0x into CXX_FLAGS as a default
        https://bugs.webkit.org/show_bug.cgi?id=120812

        Unreviewed build fix for EFL ports.

        * Source/cmake/OptionsCommon.cmake: Moved c++0x option here from WebKitHelpers.
        * Source/cmake/WebKitHelpers.cmake:

2013-09-04  Michael Brüning  <michael.bruning@digia.com>

        [Qt] Use correct library paths for prefix builds on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=120635

        Reviewed by Tor Arne Vestbø.

        Due to a change of scope of the qmake force_independent configuration
        flag, the library paths in QtWebKit builds on the Mac are set to the
        QtWebKit build directory even for production builds.

        This patch sets the correct library paths for prefixed production builds
        while keeping the scope of the force_independent flag for non-production
        builds.

        * Source/api.pri:
        * Source/widgetsapi.pri:

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

        [GTK] Add support for the Wayland build target
        https://bugs.webkit.org/show_bug.cgi?id=120627

        Reviewed by Gustavo Noronha Silva.

        Add support for building the GTK port with Wayland as the target. The Wayland target can be the sole target
        that's enabled, or it can be enabled in parallel with the X11 target.

        Each of those two targets, when enabled, checks for the corresponding GTK+ windowing dependency being present.
        In the case of only the Wayland target being enabled, the accelerated compositing feature is disabled at
        build-time as the feature is not yet supported under the Wayland display protocol. X11-based plugin support is
        also disabled under that configuration, even if the WebKitPluginProcess is still built but is left non-operational.
        GLX support is also disabled if not building the X11 target.

        The Wayland target can be enabled through using the --with-target configuration option that now accepts two
        additional values:
        - 'wayland' - only enables the Wayland target,
        - 'x11,wayland' - enables the X11 and Wayland targets that are to be built in parallel.

        This makes it possible to build the GTK port of WebKit with the Wayland target, relying solely on the GTK+
        dependency that only has the Wayland backend enabled, and removes linking against any X11-related library.
        Note that at the moment there seem to be other dependencies that still link to X11-related libraries.
        Complete functionality is not yet guaranteed, but is of course the goal.

        * Source/autotools/FindDependencies.m4: Store the version of the basic GTK+ dependency that was found.
        This is later used to check that the GTK+ X11 and GTK+ Wayland dependencies are of the same version. The
        X11-specific dependencies are grouped into one section (apart from the XComposite and XDamage dependencies),
        also checking for the GTK+ X11 dependency. If the X11 target is not enabled, the GLX dependency is disabled.
        Additionally check for the GTK+ Wayland dependency if the Wayland target is enabled.
        We only check for the presence and correct version of the GTK+ X11 and Wayland dependencies, if necessary.
        Check for the XComposite and XDamage dependencies if the X11 target is enabled (in addition to the OpenGL
        headers being present).
        In case of the Wayland target being enabled while the X11 target is not, disable the accelerated compositing
        feature as there's no support yet for it under the Wayland display protocol.
        * Source/autotools/PrintBuildConfiguration.m4: The build configuration should now print out 'GDK targets'.
        * Source/autotools/ReadCommandLineArguments.m4: The --with-target option can now take two additional values,
        'wayland' and 'x11,wayland'. The first one enables only the Wayland target, while the second one enables both
        X11 and Wayland targets. This makes it possible to build the GTK port with both X11 and Wayland display protocols
        supported in the same build.
        We must now check the outcoming with_target variable to see if the special case of building one or both of the
        possible parallel targets was chosen. We define with_x11_target and with_wayland_target variables if the
        with_target value applies to that case.
        * Source/autotools/SetupAutoconfHeader.m4: Do not define the XP_UNIX macro on builds that enable the Wayland-only
        target. It should still be defined if we're building both X11 and Wayland targets in parallel.
        * Source/autotools/SetupAutomake.m4: Define TARGET_X11 and TARGET_WAYLAND Automake conditionals if the new
        with_x11_target or with_wayland_target variables were set, respectively. Additionall, define the TARGET_X11_OR_WAYLAND
        Automake conditional if we're building either of the two targets.

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

        [CMake] Fix detection of x86_64 platform with MSVC
        https://bugs.webkit.org/show_bug.cgi?id=116662

        Reviewed by Gyuyoung Kim.

        Use ${MSVC_CXX_ARCHITECTURE_ID} instead of ${CMAKE_SYSTEM_PROCESSOR}, since
        the later one just resolves to the host processor on Windows.

        * CMakeLists.txt:

2013-08-29  Sam Weinig  <sam@webkit.org>

        Add ENABLE guards for Promises
        https://bugs.webkit.org/show_bug.cgi?id=120488

        Reviewed by Andreas Kling.

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

2013-08-28  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] Enable maintainer mode configure switch
        https://bugs.webkit.org/show_bug.cgi?id=120424

        Reviewed by Martin Robinson.

        The maintainer mode feature is used by ostree and other automated builders to ensure no autotools
        regeneration will happen for a regular tarball build; ostree builders, for instance, are very
        conservative with toolchain upgrades, and are still using aclocal 1.12. WebKit's latest tarball
        (2.1.90) for some reason tries to regenerate build files, and the build fails because it can't find
        the version of aclocal that was used for generating the tarball (1.13).

        * configure.ac: enable maintainer mode feature.

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

        [GTK] Add support for building JSC with FTL JIT enabled
        https://bugs.webkit.org/show_bug.cgi?id=120270

        Reviewed by Filip Pizlo.

        * Source/autotools/FindDependencies.m4: Disable FTL JIT if the JIT itself is disabled or if the C++ compiler
        being used is not Clang. Check for llvm-config and use it to properly test for the LLVM >= 3.4 dependency.
        * Source/autotools/PrintBuildConfiguration.m4: Print out the status of the FTL JIT support.
        * Source/autotools/ReadCommandLineArguments.m4: Add a configuration flag for enabling the feature, defaulting
        to 'no' used as the default value for now. This should switch to 'auto' at some point in future.
        * Source/autotools/SetupAutoconfHeader.m4: Define ENABLE_FTL_JIT to a specific value if possible.
        Also define HAVE_LLVM to 1 if the LLVM dependency was satisfied.

2013-08-28  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Unreviewed trivial build adjustment

        * Source/sync.profile: Don't depend on qtjsbackend anymore. It's not needed in Qt 5.2
        anymore (but this section of sync.profile is only used by the CI system, so no impact
        anywhere else)

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

        Unreviewed. Fix GTK+ build after r154541.

        * Source/autotools/symbols.filter: Export symbols required by
        libWebCoreInternal.

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

        Unreviewed GTK build fix after r154106.

        * Source/autotools/symbols.filter: Export the proper Element::shadowRoot() symbol.

2013-08-14  Filip Pizlo  <fpizlo@apple.com>

        Typed arrays should be rewritten
        https://bugs.webkit.org/show_bug.cgi?id=119064

        Reviewed by Oliver Hunt.

        Automake work courtesy of Zan Dobersek <zdobersek@igalia.com>.

        * Source/autotools/symbols.filter:

2013-08-14  Tim Horton  <timothy_horton@apple.com>

        Un-inline dataLog dumpers for IntSize and IntPoint
        https://bugs.webkit.org/show_bug.cgi?id=119697

        Reviewed by Sam Weinig.

        Avoid regressing build performance by moving IntSize::dump and IntPoint::dump elsewhere.

        * Source/autotools/symbols.filter:

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

        [GTK] [CMake] Add support for building TestWebKitAPI
        https://bugs.webkit.org/show_bug.cgi?id=116987

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsGTK.cmake: Turn on the API tests in the settings.

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

        [Autotools] Unicode's CFLAGS enforce -D_FORTIFY_SOURCE=2, -D_REENTRANT=1, causing faulty Clang builds
        https://bugs.webkit.org/show_bug.cgi?id=119685

        Reviewed by Gustavo Noronha Silva.

        icu-config includes '-D_FORTIFY_SOURCE=2 -D_REENTRANT=1' when printing out C preprocessor flags that are used
        as the C compiler flags to avoid other unwanted compiler options. This causes problems when building optimized
        builds with Clang because of a bug in that compiler:
        http://llvm.org/bugs/show_bug.cgi?id=16821

        To avoid that, the C preprocessor search flags, as printed by `icu-config --cppflags-searchpath` are now used
        the Unicode dependency's C compiler flags, avoiding unconditionally specifying the two macros.

        To adjust for that, the `-pthread` flag is added to the global CFLAGS and CXXFLAGS variables, ensuring
        the _REENTRANT define is set to 1 and declaring the flag globally instead of relying on Glib dependency's
        C compiler flags to do so for us. -D_FORTIFY_SOURCE=2 is only added to the CFLAGS and CXXFLAGS variables if
        the compiler in use is gcc or g++, preventing the Clang builds to malfunction.

        * Source/autotools/FindDependencies.m4:
        * Source/autotools/SetupCompilerFlags.m4:

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

        [Autotools] Don't compare $CC, $CXX to exact compiler names
        https://bugs.webkit.org/show_bug.cgi?id=119683

        Reviewed by Gustavo Noronha Silva.

        Instead of comparing $CC and $CXX to exact compiler names (like 'gcc', 'clang++' etc.),
        use the compiler version checks to also specify the broader compiler collection of which
        the used compiler is a member of. This avoids failures in some border-line cases where
        the user would still use either a GCC or a Clang compiler but provide it through a symbolic
        link that was specified via the CC/CXX environment variables.

        * Source/autotools/CheckSystemAndBasicDependencies.m4: Store the detected C/C++ compiler collection
        in c_compiler/cxx_compiler. Throw an error if no supported compiler was found.
        * Source/autotools/SetupCompilerFlags.m4: Test for a specific compiler by checking against
        c_compiler/cxx_compiler rather than CC/CXX values.

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

        [Autotools] Adjust the help string for the configure's --enable-optimizations flag
        https://bugs.webkit.org/show_bug.cgi?id=119682

        Reviewed by Martin Robinson.

        * Source/autotools/ReadCommandLineArguments.m4: Remove the 'GCC only' part of the help
        string for the --enable-optimizations flag. This is not true and can lead to confusion
        since the optimizations can be applied when compiling with Clang as well.

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

        Unreviewed. Update NEWS and Versions.m4 for 2.1.4 release.

        * Source/autotools/Versions.m4: Update version numbers.

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

        [Automake] Clean up OpenGL graphics configuration sections
        https://bugs.webkit.org/show_bug.cgi?id=119554

        Reviewed by Martin Robinson.

        Clean up sections in the Automake configuration process that are configuring the OpenGL graphics
        features and dependencies. Remove unnecessary variable assignments, merge similar code paths,
        clarify a couple of comments and error messages and fix a few whitespace problems.

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

2013-08-04  Sam Weinig  <sam@webkit.org>

        Remove support for HTML5 MicroData
        https://bugs.webkit.org/show_bug.cgi?id=119480

        Reviewed by Anders Carlsson.

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

2013-08-06  Simon Pena  <simon.pena@samsung.com>

        Build fix for GTK 32-bit after r153736

        * Source/autotools/symbols.filter: expose WebCore::SerializedScriptValue::create.

2013-08-06  Simon Pena  <simon.pena@samsung.com>

        Build fix for GTK after r153736

        * Source/autotools/symbols.filter: expose missing symbols
        WebCore::SerializedScriptValue::create and WebCore::toJS to Internals.

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

        [Automake] Define ENABLE_JIT through the Autoconf header
        https://bugs.webkit.org/show_bug.cgi?id=119445

        Reviewed by Martin Robinson.

        Instead of defining the ENABLE_JIT value through JSC_CPPFLAGS, the feature define is
        set to be either enabled or disabled through the Autoconf header, based on the value
        passed through the configuration flag. The 'auto' value is used as default, meaning
        that the feature is enabled or disabled in the Platform.h header based on the platform
        configuration (OS, architecture etc.).

        * Source/autotools/FindDependencies.m4: Remove the JSC_CPPFLAGS definition.
        * Source/autotools/ReadCommandLineArguments.m4: Change the default value to 'auto' instead
        of 'autodetect', as used by other configuration options that take a similar approach to enabling
        a specific feature.
        * Source/autotools/SetupAutoconfHeader.m4: Set a strict value for the ENABLE_JIT define through
        the Autoconf header if the feature was specifically enabled or disabled.

2013-08-04  Zalan Bujtas  <zalan@apple.com>

        Background doesn't fully repaint when body has margins.
        https://bugs.webkit.org/show_bug.cgi?id=119033

        Reviewed by Simon Fraser.

        Ensure that background-color changes do not leave unpainted areas when
        body has margins.

        Both <body> and <html> background-color get propagated up to the viewport.
        If <body> has background-color attribute set, while <html> doesn't, the color is
        applied not only on the <body> but on both the <html> and the viewport. However,
        it's not enough to mark the RenderView dirty because with tiles backing on,
        there could be areas outside of the viewport that need repaint. By marking
        the RenderView's graphics layer dirty instead, we ensure that all the related
        tiles get marked dirty too and the new background color covers all areas.

        Manual test added. When forcing top-level composition on (even with embedded iframe to
        make sure we don't do paintsIntoWindow rendering), the test case execution changes so much,
        that the repaint rects don't reflect the functionality difference anymore.

        Reviewed by Simon Fraser.

        * ManualTests/compositing/background-color-change-on-body-with-margin.html: Added.

2013-07-30  Ádám Kallai  <kadam@inf.u-szeged.hu>

        [Qt] Workaround to make syncqt run and generate forwarding headers in SVN repositories too.
        https://bugs.webkit.org/show_bug.cgi?id=118725.

        Reviewed by Tor Arne Vestbø.

        * .qmake.conf:

2013-07-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and Versions.m4 for 2.1.4 release.

        * Source/autotools/Versions.m4: Bump version numbers.

2013-07-27  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Bump required version of EFL to 1.7
        https://bugs.webkit.org/show_bug.cgi?id=119144

        Reviewed by Christophe Dumez.

        We have supported 1.6 for Tizen build since r137203.
        But Tizen now supports 1.7+ after Tizen released 2.0.

        * Source/cmake/OptionsEfl.cmake:
        Bumped EFL to 1.7 and removed promotion.

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

        Unreviewed EFL build fix after r153315.

        Use -std=gnu++0x instead of -std=c++0x as we rely on GNU extensions such as
        typeof().

        * Source/cmake/WebKitHelpers.cmake:

2013-07-25  Ryuan Choi  <ryuan.choi@samsung.com>

        [CMAKE] Enforce c++0x for cmake based ports
        https://bugs.webkit.org/show_bug.cgi?id=119081

        Reviewed by Gyuyoung Kim.

        * Source/cmake/WebKitHelpers.cmake:
        Enforce c++0x for all cmake based ports to fix build break.

2013-07-24  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][CMAKE] Fix wrong syntax about option commands
        https://bugs.webkit.org/show_bug.cgi?id=119035

        Reviewed by Christophe Dumez.

        second argument of cmake option command should be description.

        * Source/cmake/OptionsEfl.cmake: Added description instead of wrong initial value.

2013-07-23  Tim Horton  <timothy_horton@apple.com>

        Add a test for plug-in unavailability indicator obscurity detection
        https://bugs.webkit.org/show_bug.cgi?id=119007

        Reviewed by Anders Carlsson.

        * Source/autotools/symbols.filter:
        Expose RenderEmbeddedObject::isReplacementObscured to internals.

2013-07-16  Balazs Kelemen  <kbalazs@webkit.org>

        [CMake] Undefined references should be detected at build time
        https://bugs.webkit.org/show_bug.cgi?id=110236

        Reviewed by Christophe Dumez.

        Pass the --no-undefined argument to the linker on platforms where it is available.

        * Source/cmake/OptionsCommon.cmake:

2013-07-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Remove compile warnings about GTK+ API deprecated after 3.6
        https://bugs.webkit.org/show_bug.cgi?id=118237

        Reviewed by Philippe Normand.

        We depend on GTK+3.6 so we are not interested in compile warnings
        about deprecated API after 3.6

        * Source/autotools/SetupAutoconfHeader.m4: Define
        GDK_VERSION_MIN_REQUIRED in config.h.

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

        Unreviewed. Update NEWS and Versions.m4 for 2.1.3 release.

        * Source/autotools/Versions.m4: Bump version numbers.

2013-07-08  Andy Estes  <aestes@apple.com>

        Add WebInspectorUI to WebKit.xcworkspace
        https://bugs.webkit.org/show_bug.cgi?id=118491

        Reviewed by Sam Weinig.

        * WebKit.xcworkspace/contents.xcworkspacedata:

2013-07-08  ChangSeok Oh  <changseok.oh@collabora.com>

        [GTK] Acceleration description isn't displayed in configured options.
        https://bugs.webkit.org/show_bug.cgi?id=118441

        Reviewed by Gustavo Noronha Silva.

        The acceleration_backend_description has been changed to acceleration_description from r152275.

        * Source/autotools/PrintBuildConfiguration.m4:

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

        [Autoconf] Define WTF_USE_OPENGL when OpenGL was found
        https://bugs.webkit.org/show_bug.cgi?id=118341

        Reviewed by Gustavo Noronha Silva.

        After r152275, WTF_USE_OPENGL is only defined if the accelerated compositing is enabled.
        This breaks the build if disabling the accelerated compositing feature as the OpenGL-specific
        code is not compiled anymore even if it's still required.

        To avoid that, WTF_USE_OPENGL should be defined if OpenGL was found. The accelerated compositing
        feature also relies on this condition, exiting the configuration process with an error otherwise.

        * Source/autotools/SetupAutoconfHeader.m4:

2013-07-01  Gustavo Noronha Silva  <gustavo.noronha@collabora.com>

        [GTK] Remove unsupported AC backends
        https://bugs.webkit.org/show_bug.cgi?id=117362

        Reviewed by Martin Robinson.

        * Source/autotools/FindDependencies.m4: remove checks related to acceleration backend,
        turn them into a check for OpenGL being available, simply.
        * Source/autotools/ReadCommandLineArguments.m4: remove command line option to select
        accelerated backend, it's now auto-detected.
        * Source/autotools/SetupAutoconfHeader.m4: no longer defines USE_CLUTTER and
        USE_TEXTURE_MAPPER_CAIRO.
        * Source/autotools/SetupAutomake.m4: remove checks related to acceleration backend,
        turn them into a check for OpenGL being available, simply.
        * Source/autotools/Versions.m4: no longer check for clutter/clutter-gtk.

2013-07-01  Timothy Hatcher  <timothy@apple.com>

        Link to WebInspectorUI.framework at build time instead of soft linking.

        https://bugs.webkit.org/show_bug.cgi?id=118261

        Reviewed by Joseph Pecoraro.

        * Source/Makefile: Build WebInspectorUI before WebKit and WebKit2.

2013-06-28  Sean Bright  <sean@malleable.com>

        [Autotools] Properly quote harfbuzz-icu pkg-config check
        https://bugs.webkit.org/show_bug.cgi?id=118186

        Reviewed by Carlos Garcia Campos.

        A secondary test was added in r150963 to check for harfbuzz-icu
        when it was split into two packages, but the test is not properly
        quoted.  If the test fails you get an error about missing
        version "./configure.9.8" instead of the expected "0.9.8."

        * Source/autotools/FindDependencies.m4:

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

        Remove [NoInterfaceObject] from WorkerGlobalScope
        https://bugs.webkit.org/show_bug.cgi?id=118071

        Reviewed by Kentaro Hara.

        Update GENERATE_BINDINGS CMake macro to take 2 additional parameters
        now needed by the preprocess-idls.pl script.

        * Source/cmake/WebKitMacros.cmake:

2013-06-24  Ryuan Choi  <ryuan.choi@samsung.com>

        [CMAKE] Clear unused cmakedefines
        https://bugs.webkit.org/show_bug.cgi?id=117931

        Reviewed by Christophe Dumez.

        * Source/cmakeconfig.h.cmake:
        Removed ENABLE_AS_IMAGE, ENABLE_LEGACY_WEBKIT_BLOB_BUILDER and
        ENABLE_CLIENT_BASED_GEOLOCATION cmakedefines which already removed.

2013-06-20  Ryuan Choi  <ryuan.choi@samsung.com>

        [CMAKE][EFL] Enable DOM4 Events Constructor
        https://bugs.webkit.org/show_bug.cgi?id=117858

        Reviewed by Laszlo Gombos.

        * Source/cmake/OptionsEfl.cmake: Enabled ENABLE_DOM4_EVENTS_CONSTRUCTOR.
        * Source/cmake/WebKitFeatures.cmake: Added ENABLE_DOM4_EVENTS_CONSTRUCTOR.
        * Source/cmakeconfig.h.cmake: Ditto.

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

        [GTK] remove bashism from configure
        https://bugs.webkit.org/show_bug.cgi?id=117796

        Reviewed by Gustavo Noronha Silva.

        * Source/autotools/FindDependencies.m4: Perform string appending by redeclaring the base string to the value
        of the base string followed by the string that's being appended. This replaces the use of the '+=' operator
        that works under bash but is not supported by other shells.

2013-06-18  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(r147602): Search text field doesn't render selection when it has some :focus rules
        https://bugs.webkit.org/show_bug.cgi?id=117747

        Reviewed by Kent Tamura.

        * ManualTests/search-select-all-with-focus-style.html: Added.

2013-06-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and Versions.m4 for 2.1.2 release.

        * Source/autotools/Versions.m4: Bump version numbers.

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

        [GTK][GStreamer] Fullscreen option in video element context menu not working
        https://bugs.webkit.org/show_bug.cgi?id=105191

        Fullscreen with native controls is outdated and even broken in
        [GTK][WK2], so they are deactivated for now.

        Reviewed by Philippe Normand.

        * Source/autotools/SetupAutoconfHeader.m4: Removed the use of
        fullscreen native media controls.

2013-06-17  Michael Brüning  <michael.bruning@digia.com>

        [Qt] Remove Qt specific QTKIT flagged code.
        https://bugs.webkit.org/show_bug.cgi?id=117635

        Reviewed by Simon Hausmann.

        Due to disabling QTKIT for Qt in r151546, the
        code the flags that are not taken into account
        anymore and the code that has been rendered
        unreachable by this are removed.

        * Source/widgetsapi.pri:

2013-06-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Rename gobject_introspection_required variable.

        As gobject_introspection_required_version for consistency with all
        other required_version variables.

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

2013-06-14  Patrick Gansterer  <paroga@webkit.org>

        Introduce USE(WINGDI) for the Windows port
        https://bugs.webkit.org/show_bug.cgi?id=116138

        Reviewed by Ryosuke Niwa.

        Using USE(WINGDI) instead of OS(WINCE) will allow us to
        compile the GDI based Windows port on WinNT too.

        * Source/cmake/OptionsWinCE.cmake:

2013-06-14  Manuel Rego Casasnovas  <rego@igalia.com>

        [GTK][WK1] Missing symbols
        https://bugs.webkit.org/show_bug.cgi?id=117629

        Unreviewed GTK+ build fix.

        * Source/autotools/symbols.filter: Added missing symbols needed when
        compiling WK1.

2013-06-13  Max Vujovic  <mvujovic@adobe.com>

        [CSS Regions] Selection dragged from a region paints its background
        https://bugs.webkit.org/show_bug.cgi?id=117607

        Reviewed by Alexandru Chiculita.

        Add a manual test for the painting of a dragged selection from a region. We don't have an
        automated way to test this yet. This test is similar to the other manual selection dragging
        tests (e.g. ManualTests/drag-image.html).

        * ManualTests/regions/drag-selection-painting.html: Added.

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

        [GTK] [WK2] Found missing symbol when running some tests
        https://bugs.webkit.org/show_bug.cgi?id=117598

        Reviewed by Martin Robinson.

        * Source/autotools/symbols.filter: Added missing
        _ZN7WebCore28notImplementedLoggingChannelEv.

2013-06-12  Alberto Garcia  <agarcia@igalia.com>

        [BlackBerry] Remove dead WebDOM code
        https://bugs.webkit.org/show_bug.cgi?id=113370

        Reviewed by Anders Carlsson.

        BlackBerry PR 347565
        Internally reviewed by Charles Wei.

        * Source/cmake/OptionsBlackBerry.cmake:

2013-06-06  Timothy Hatcher  <timothy@apple.com>

        Add WebInspectorUI to the Makefile.

        Reviewed by Mark Rowe.

        * Source/Makefile:

2013-06-11  Seokju Kwon  <seokju.kwon@gmail.com>

        Remove leftover wxWebkit code
        https://bugs.webkit.org/show_bug.cgi?id=117471

        Reviewed by Andreas Kling.

        * Source/cmake/WebKitPackaging.cmake:

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

        [regression] build failure WebKitFontFamilyNames.h missing
        https://bugs.webkit.org/show_bug.cgi?id=117178

        Reviewed by Sam Weinig.

        * GNUmakefile.am: List platform_sources under the BUILT_SOURCES list.

2013-06-05  Bear Travis  <betravis@adobe.com>

        [CSS Exclusions][CSS Shapes] Split CSS Exclusions & Shapes compile & runtime flags
        https://bugs.webkit.org/show_bug.cgi?id=117172

        Reviewed by Alexandru Chiculita.

        Adding the CSS_SHAPES compile flag.

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

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

        Move MemoryInfo under window.internals
        https://bugs.webkit.org/show_bug.cgi?id=117197

        Reviewed by Ryosuke Niwa.

        * Source/autotools/symbols.filter: Export the required symbol.

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

        Automatically generate WorkerContext constructor attributes
        https://bugs.webkit.org/show_bug.cgi?id=117183

        Reviewed by Kentaro Hara.

        Update GENERATE_BINDINGS macro to take an additional _workercontext_constructors_file
        optional argument.

        * Source/cmake/WebKitMacros.cmake:

2013-06-03  Eduardo Lima Mitev  <elima@igalia.com>

        [EFL] Add ATK version 2.8.0 to efl jhbuild moduleset
        https://bugs.webkit.org/show_bug.cgi?id=116726

        Reviewed by Gyuyoung Kim.

        Bump required version of ATK to 2.8.0 in EFL CMake's build.

        * Source/cmake/FindATK.cmake: Adds macro to check required version
        * Source/cmake/OptionsEfl.cmake: Specifies required version of ATK to be 2.8.0

2013-05-30  Alberto Garcia  <agarcia@igalia.com>

        [GTK] Needs to check for harfbuzz-icu
        https://bugs.webkit.org/show_bug.cgi?id=116978

        Reviewed by Xan Lopez.

        HarfBuzz 0.9.18 splits harbuzz-icu into a separate library so we
        also need to check for it in order to get the necessary flags for
        the compiler and the linker.

        We keep this conditional for now since we still want to support
        earlier versions of HarfBuzz.

        * Source/autotools/FindDependencies.m4:

2013-05-29  Kent Tamura  <tkent@chromium.org>

        Remove leftover files for ENABLE_PAGE_POPUP and ENABLE_CALENDAR_PICKER
        https://bugs.webkit.org/show_bug.cgi?id=116999

        Reviewed by Anders Carlsson.

        * ManualTests/forms/calendar-picker-crash-by-type-change.html: Removed.
        * ManualTests/forms/calendar-picker.html: Removed.
        * ManualTests/forms/color-suggestion-picker.html: Removed.
        * ManualTests/forms/date-suggestion-picker.html: Removed.

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

        Fix more CMake GTK+ build issues after r150336

        * Source/cmake/OptionsGTK.cmake: Actually set the new output name variable
        and be sure to set WTF_USE_EGL when EGL is enabled.

2013-05-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update NEWS and Versions.m4 for 2.1.1 release.

        * Source/autotools/Versions.m4: Bump version numbers.

2013-05-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix make distcheck.

        * GNUmakefile.am: Add WebKitFeatures.h and WebKitFeatures.txt to
        DISTCLEANFILES.

2013-05-26  Jon Lee  <jonlee@apple.com>

        [WK2] Notifications clobber each other with multiple processes
        https://bugs.webkit.org/show_bug.cgi?id=116428
        <rdar://problem/13935191>

        Reviewed by Darin Adler.

        * ManualTests/notification-in-multiple-windows.html: Added.

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

        Use ICU_INCLUDE_DIRS in BlackBerry CMake files
        https://bugs.webkit.org/show_bug.cgi?id=116210

        Reviewed by Rob Buis.

        Set and use the ICU_INCLUDE_DIRS variable to avoid
        duplicated adding of the ICU include directory.

        * Source/cmake/OptionsBlackBerry.cmake:

2013-05-24  Anders Carlsson  <andersca@apple.com>

        Remove PagePopup code
        https://bugs.webkit.org/show_bug.cgi?id=116732

        Reviewed by Andreas Kling.

        * Source/cmakeconfig.h.cmake:
        Remove ENABLE_PAGE_POPUP.

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

        [GTK] [CMake] Add support for building WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=116372

        Reviewed by Gustavo Noronha Silva.

        * Source/cmake/FindWebP.cmake: Added.
        * Source/cmake/OptionsGTK.cmake: Turn on WebKit2 and the plugin process and also look
        for WebP. These missing symbols were hidden up until now. ENABLE_TEXTURE_MAPPER was
        also incorrect specified.

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

        [GTK] Compile everything in C++11 mode
        https://bugs.webkit.org/show_bug.cgi?id=116452

        Reviewed by Anders Carlsson.

        * Source/autotools/SetupCompilerFlags.m4: Use the C++11 standard by default when compiling C++ source code.
        Perform some minor cleanup around the comments and the order of specifying additional CXXFLAGS entries.

2013-05-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [BlackBerry] Make PagePopup implementation independent from WebCore
        https://bugs.webkit.org/show_bug.cgi?id=116448

        Reviewed by Anders Carlsson.

        * Source/cmake/OptionsBlackBerry.cmake: Do not enable PAGE_POPUP
        feature.

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

        [EFL] Reenabled INDEXED_DATABASE after r150344
        https://bugs.webkit.org/show_bug.cgi?id=116430

        Reviewed by Gyuyoung Kim.

        Reenable INDEXED_DATABASE flag for EFL port now that WebKit2
        build was fixed in r150344.

        * Source/cmake/OptionsEfl.cmake:

2013-05-19  Anders Carlsson  <andersca@apple.com>

        Remove link prerendering code
        https://bugs.webkit.org/show_bug.cgi?id=116415

        Reviewed by Darin Adler.

        This code was only used by Chromium and is dead now.

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

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

        [CMake] Replace *_LIBRARY_NAME with *_OUTPUT_NAME
        https://bugs.webkit.org/show_bug.cgi?id=114554

        Reviewed by Gyuyoung Kim.

        Using variables as target names is very uncommon in CMake.
        The usual way to specify the name of the resulting binary
        is to set the OUTPUT_NAME target property.

        * CMakeLists.txt:
        * Source/CMakeLists.txt:
        * Source/PlatformEfl.cmake:
        * Source/PlatformGTK.cmake:
        * Source/cmake/OptionsBlackBerry.cmake:
        * Source/cmake/OptionsEfl.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitHelpers.cmake:
        * Source/cmake/gtest/CMakeLists.txt:

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

        Unreviewed EFL build fix.

        Temporarily disabled INDEXED_DATABASE at compile-time as it breaks
        WK2 build after r150305.

        * Source/cmake/OptionsEfl.cmake:

2013-05-18  Alberto Garcia  <agarcia@igalia.com>

        [GTK] Parallel build fails if gtk-doc is enabled
        https://bugs.webkit.org/show_bug.cgi?id=116227

        Reviewed by Martin Robinson.

        * GNUmakefile.am:
        Define an empty noinst_DATA variable where other automake files
        can add additional objects to be built.

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

        [GTK] [CMake] Disable the shadow DOM
        https://bugs.webkit.org/show_bug.cgi?id=116237

        Reviewed by Gustavo Noronha Silva.

        * Source/cmake/OptionsGTK.cmake: Disable shadow DOM by default.

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

        [GTK] Add support for building WebCore to the cmake build
        https://bugs.webkit.org/show_bug.cgi?id=116128

        Reviewed by Gustavo Noronha Silva.

        * Source/PlatformGTK.cmake: Added.
        * Source/cmake/OptionsGTK.cmake: Added more logic and variables to support WebCore and properly
        defined some existing variables.

2013-05-15  Alexey Proskuryakov  <ap@apple.com>

        More fixing after WebProcessShim renaming in r149074.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:
        Updated to insert the right shim.

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