2017-12-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][CMake] Use add_custom_command to copy each forwarding header files
        https://bugs.webkit.org/show_bug.cgi?id=180921

        Reviewed by Brent Fulgham.

        Modifying WTF header files didn't trigger the recompilation of
        TestWTF because Ninja doesn't know which command generates the
        forwarding header.

        Use add_custom_command to copy each forwarding header files.

        * Source/cmake/WebKitMacros.cmake: Added a new function WEBKIT_MAKE_FORWARDING_HEADERS.

2017-12-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Duplicated symbols in libjavascriptcoregtk and libwebkit2gtk can cause crashes in production builds
        https://bugs.webkit.org/show_bug.cgi?id=179914

        Reviewed by Carlos Garcia Campos.

        Let's build JSC as a static library, and link that static lib to *both* our shared
        libjavascriptcoregtk and libwebkit2gtk. Then we can fix this and also filter out all the
        private symbols that we're currently exposing in libjavascriptcoregtk, which wouldn't be
        possible otherwise. The cost of this is disk space. I think this trade-off is reasonable,
        because it's the best way I could think of that accomplishes all our goals: (a) install two
        shared libs, (b) export only public API symbols, (c) does not require any linker hacks.

        Additionally, build with -fvisibility=hidden so that the compiler knows that many symbols
        will be stripped out. This should improve code generation. It's actually how WPE was
        previously compiled, but I removed this when I added the version script for WPE, because I
        thought it was redundant with the version script. It is not, and we should use both,
        according to Ulrich Drepper's "How to Write Shared Libraries." We will use
        -fvisibility=hidden on all ports; this should be fine, as long as export macros are used
        where needed. This is actually a totally separate change, but it makes sense to do it now if
        we consider this bug a catch-all "fix how we link WebKit" issue.

        * CMakeLists.txt: Rejigger the default library types, and remove the SHARED_CORE option,
          which is not likely to work properly in ports that are not expecting it. These changes are
          only mildly-related and certainly not required, but it makes sense to clean them up now.
        * Source/cmake/OptionsGTK.cmake: Don't set the version script here.
        * Source/cmake/OptionsJSCOnly.cmake: Adjust to changes in default library types.
        * Source/cmake/OptionsMac.cmake: Adjust to changes in default library types. Override the
          library type variables only when required.
        * Source/cmake/OptionsWPE.cmake: Overriding the library type variables is no longer
          required. Also, don't set the version script here.
        * Source/cmake/OptionsWin.cmake: Adjust to changes in default library types. Override the
          library type variables only when required.
        * Source/cmake/WebKitCompilerFlags.cmake: Build with -fvisibility=hidden,
          -fvisibility-inlines-hidden, and -Wno-attributes.
        * Source/cmake/wpesymbols.filter: Removed.

2017-12-20  Don Olmstead  <don.olmstead@sony.com>

        [CMake][Win] Add a way to set CMAKE_IGNORE_PATH
        https://bugs.webkit.org/show_bug.cgi?id=181056

        Reviewed by Konstantin Tokarev.

        * Source/cmake/OptionsWin.cmake:

2017-12-20  Daniel Bates  <dabates@apple.com>

        Remove Alternative Presentation Button
        https://bugs.webkit.org/show_bug.cgi?id=180500
        <rdar://problem/35891047>

        Reviewed by Simon Fraser.

        We no longer need the alternative presentation button.

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

2017-12-20  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake][WTF] Lowercase ForwardingHeaders directory name of WTF
        https://bugs.webkit.org/show_bug.cgi?id=181022

        Reviewed by Konstantin Tokarev.

        ForwardingHeaders of WTF are included as <wtf/FooBar.h>. But, the
        directory name was uppercase DerivedSources/ForwardingHeaders/WTF.
        This confuses Ninja dependency tracking. It should be lowercase.

        * Source/cmake/WebKitMacros.cmake: Renamed ForwardingHeaders directory name WTF to wtf.

2017-12-16  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [WinCairo] Move the destination of WinCairoRequirements.zip into WebKitLibraries and register it and related files as git ignore files.
        https://bugs.webkit.org/show_bug.cgi?id=180875

        Reviewed by Alex Christensen.

        Add files extracted from WinCairoRequirements.zip
        * .gitignore:

2017-12-14  Tomas Popela  <tpopela@redhat.com>

        Build should fail early is needed Perl modules are not installed
        https://bugs.webkit.org/show_bug.cgi?id=180137

        Reviewed by Michael Catanzaro.

        Don't finish the configure successfully if the required Perl modules
        are not installed. Start to require modules that are needed for
        WPE/GTK+ ports.

        * Source/cmake/FindPerlModules.cmake: Copied from
        https://github.com/KDE/kdelibs4support/blob/master/cmake/FindPerlModules.cmake
        and made it WebKit style compliant.
        * Source/cmake/WebKitCommon.cmake:

2017-12-13  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [WPE] WebCrypto should be a public option.
        https://bugs.webkit.org/show_bug.cgi?id=180780

        Reviewed by Konstantin Tokarev.

        Make ENABLE_WEB_CRYPTO public and lower the dependency requirements
        when this option is not enabled. This is also how the GTK+ port
        configures the visibility of this option and its dependencies.

        * Source/cmake/OptionsWPE.cmake:

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

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

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

2017-12-12  Don Olmstead  <don.olmstead@sony.com>

        [WinCairo] Enable WebP support
        https://bugs.webkit.org/show_bug.cgi?id=179908

        Reviewed by Konstantin Tokarev.

        * Source/cmake/OptionsWinCairo.cmake:

2017-12-08  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][Ninja] Incremental build failure of WTF
        https://bugs.webkit.org/show_bug.cgi?id=180521

        Reviewed by Konstantin Tokarev.

        WTF included its forwarding headers in Windows ports. The
        directory DerivedSources/ForwardingHeaders shouldn't be a include
        path for WTF.

        * Source/cmake/OptionsWin.cmake:
        Removed DerivedSources/ForwardingHeaders and DerivedSources from include paths.

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

        [WPE][GTK] Freeze WebKit version in user agent
        https://bugs.webkit.org/show_bug.cgi?id=180475

        Reviewed by Carlos Garcia Campos.

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

2017-12-05  Stephan Szabo  <stephan.szabo@sony.com>

        Switch windows build to Visual Studio 2017
        https://bugs.webkit.org/show_bug.cgi?id=172412

        Reviewed by Per Arne Vollan.

        * Source/cmake/OptionsMSVC.cmake:

2017-12-01  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Make description of ENABLE_DRAG_SUPPORT more informative
        https://bugs.webkit.org/show_bug.cgi?id=180266

        Reviewed by Michael Catanzaro.

        When disabled, it also disables selection of text with dragging, and this
        comes as a surprise for many people.

        * Source/cmake/WebKitFeatures.cmake:

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

        [GStreamer] Fix USE_GSTREAMER_GL check for GStreamer 1.10
        https://bugs.webkit.org/show_bug.cgi?id=180256

        Reviewed by Carlos Alberto Lopez Perez.

        It's not safe to change the value of build options after WEBKIT_OPTION_END, since it breaks
        the option dependency checker. I don't think that actually hurts anything in this case, but
        let's not encourage bad practice. Also, it's not good for features to be secretly disabled.
        Nobody reads CMake output unless there is a fatal error. Failing the build at the CMake
        stage lets distributors know that a feature will be missing. And of course, it's still
        possible to disable USE_GSTREAMER_GL to avoid the increased GStreamer requirement.

        * Source/cmake/GStreamerChecks.cmake:

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

        [GTK] [MSE] Turn MSE on by default
        https://bugs.webkit.org/show_bug.cgi?id=167107

        Reviewed by Carlos Alberto Lopez Perez.

        Turn on the ENABLE_MEDIA_SOURCE build option. Fail the build if GStreamer 1.8 is not
        installed and ENABLE_MEDIA_SOURCE has not been disabled.

        * Source/cmake/GStreamerChecks.cmake:
        * Source/cmake/GStreamerDefinitions.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2017-11-30  Stephan Szabo  <stephan.szabo@sony.com>

        Make LegacyCustomProtocolManager optional for network process
        https://bugs.webkit.org/show_bug.cgi?id=176230

        Reviewed by Alex Christensen.

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

2017-11-29  Alex Christensen  <achristensen@webkit.org>

        Fix Mac CMake build.

        * Source/cmake/OptionsMac.cmake:

2017-11-28  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r225098): [WPE] Some features have changed of value (70 new failures)
        https://bugs.webkit.org/show_bug.cgi?id=180004

        Reviewed by Alex Christensen.

        Turn on ENABLE_ENCRYPTED_MEDIA and ENABLE_WEBGL2 when building with
        ENABLE_EXPERIMENTAL_FEATURES. Also, let's stop turning off ENABLE_USERSELECT_ALL, as I doubt
        there's any good reason for that.

        * Source/cmake/OptionsWPE.cmake:

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

        [CMake][Win] Conditionally select DLL CRT or static CRT
        https://bugs.webkit.org/show_bug.cgi?id=170594

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsMSVC.cmake:

2017-11-27  Adrian Perez de Castro  <aperez@igalia.com>

        [CMake] Values of CMAKE_BUILD_TYPE from toolchain file are ignored
        https://bugs.webkit.org/show_bug.cgi?id=179971

        Reviewed by Carlos Alberto Lopez Perez.

        * CMakeLists.txt: Call project() first, as it loads the toolchain
        file, so that's done before checking CMAKE_BUILD_TYPE.

2017-11-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Sanity-check feature defaults in WebKitFeatures.cmake
        https://bugs.webkit.org/show_bug.cgi?id=179095

        Reviewed by Konstantin Tokarev.

        Change the default value of some features in WebKitFeatures.cmake to reduce the number of
        Options*.cmake files the feature's default value must be overridden in.

        Remove feature definitions where they are redundant with the definition in
        WebKitFeatures.cmake, particluarly in OptionsMac.cmake.

        This commit should not include any functional changes. It just aims to reduce the total
        number of times we need to call WEBKIT_OPTION_DEFAULT_PORT_VALUE.

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

2017-11-22  Tim Horton <timothy_horton@apple.com> and Michael Catanzaro <mcatanzaro@igalia.com>

        Remove build-webkit's notion of feature flags having a default value
        https://bugs.webkit.org/show_bug.cgi?id=177338

        Reviewed by Carlos Alberto Lopez Perez.

        Add an ENABLE_EXPERIMENTAL_FEATURES flag and use it to enable certain features.

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

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

        Drop ENABLE_IMAGE_DECODER_DOWN_SAMPLING code
        https://bugs.webkit.org/show_bug.cgi?id=179921

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/WebKitFeatures.cmake: Remove the CMake option that
        enabled IMAGE_DECODER_DOWN_SAMPLING code.

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

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

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

2017-11-20  Michael Catanzaro  <mcatanzaro@igalia.com>

        Remove ENABLE_ALLINONE_BUILD option
        https://bugs.webkit.org/show_bug.cgi?id=179823

        Reviewed by Darin Adler.

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

2017-11-19  Tim Horton  <timothy_horton@apple.com>

        Remove unused TOUCH_ICON_LOADING feature flag
        https://bugs.webkit.org/show_bug.cgi?id=179873

        Reviewed by Simon Fraser.

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

2017-11-19  Yusuke Suzuki  <utatane.tea@gmail.com>

        Add CPU(UNKNOWN) to cover all the unknown CPU types
        https://bugs.webkit.org/show_bug.cgi?id=179243

        Reviewed by JF Bastien.

        Drop SH4, S390, and S390X explicit support. They are handled as CPU(UNKNOWN).

        * CMakeLists.txt:

2017-11-19  Tim Horton  <timothy_horton@apple.com>

        Remove unused LEGACY_VENDOR_PREFIXES feature flag
        https://bugs.webkit.org/show_bug.cgi?id=179872

        Reviewed by Darin Adler.

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

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

        [WinCairo] Update WinCairoRequirements
        https://bugs.webkit.org/show_bug.cgi?id=179790

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsWinCairo.cmake:

2017-11-16  Daniel Bates  <dabates@apple.com>

        Add feature define for alternative presentation button element
        https://bugs.webkit.org/show_bug.cgi?id=179692
        Part of <rdar://problem/34917108>

        Reviewed by Andy Estes.

        Only enabled on Cocoa platforms by default.

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

2017-11-16  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Expose ENABLE_JIT and USE_SYSTEM_MALLOC options
        https://bugs.webkit.org/show_bug.cgi?id=179730

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/OptionsWPE.cmake:

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

        [WPE] Add initial support for WebDriver
        https://bugs.webkit.org/show_bug.cgi?id=179727

        Reviewed by Michael Catanzaro.

        Enable WebDriver by default in WPE.

        * Source/cmake/OptionsWPE.cmake:

2017-11-15  Keith Miller  <keith_miller@apple.com>

        Unreviewed, sort async iteration feature.

        * Source/cmake/WebKitFeatures.cmake:

2017-11-15  Keith Miller  <keith_miller@apple.com>

        REGRESSION(r224787): [Linux] Introduced 144 GTK/WPE JS test failures
        https://bugs.webkit.org/show_bug.cgi?id=179704

        Reviewed by Yusuke Suzuki.

        Add feature flag for Async iteration.

        * Source/cmake/WebKitFeatures.cmake:

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

        [GTK] Require woff2 1.0.2 and drop direct brotli dependency
        https://bugs.webkit.org/show_bug.cgi?id=179630

        Reviewed by Frédéric Wang.

        * Source/cmake/FindBrotliDec.cmake: Removed.
        * Source/cmake/OptionsGTK.cmake:

2017-11-09  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Use linker script to control exported symbols
        https://bugs.webkit.org/show_bug.cgi?id=179358

        Reviewed by Carlos Alberto Lopez Perez.

        The C API is being inadvertently exported because it's marked as WEBKIT_EXPORT in the header
        files. But of course it should only be exported in DEVELOPER_MODE, where it's needed for
        WebKitTestRunner. Use (almost) the same linker version script as GTK to fix this. It's
        slightly different because WPE does not have WebKitPluginProcess.

        This also reduces binary size of libWPEWebKit.so in debug mode from 615 MB down to 497 MB.
        (Haven't checked release mode.)

        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/wpesymbols.filter: Added.

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

        [WPE] Turn on ENABLE_INDEXED_DATABASE_IN_WORKERS
        https://bugs.webkit.org/show_bug.cgi?id=179094

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/OptionsWPE.cmake:

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

        [WPE] Turn on ENABLE_MEDIA_SOURCE
        https://bugs.webkit.org/show_bug.cgi?id=179093

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/OptionsWPE.cmake:

2017-11-06  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix WPE build after r224492
        https://bugs.webkit.org/show_bug.cgi?id=179009

        * Source/cmake/OptionsWPE.cmake:

2017-11-06  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Clean up OptionsWPE.cmake
        https://bugs.webkit.org/show_bug.cgi?id=179009

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsWPE.cmake:

2017-11-06  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Always use SET_AND_EXPOSE_TO_BUILD to set build variables
        https://bugs.webkit.org/show_bug.cgi?id=179038

        Reviewed by Žan Doberšek.

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

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

        [WPE][GTK] Avoid duplicating code for dist and distcheck targets
        https://bugs.webkit.org/show_bug.cgi?id=179154

        Reviewed by Carlos Garcia Campos.

        This commit just reduces some CMake code duplication between GTK and WPE.

        * Source/PlatformGTK.cmake:
        * Source/PlatformWPE.cmake:
        * Source/cmake/WebKitDist.cmake: Added.

2017-11-02  Tim Horton  <timothy_horton@apple.com>

        Reduce duplication in the toplevel Makefile
        https://bugs.webkit.org/show_bug.cgi?id=179204

        Unreviewed build fix.

        * Source/Makefile:
        Take three. An empty SDKROOT should be like Mac (and build all the things).

2017-11-02  Tim Horton  <timothy_horton@apple.com>

        Reduce duplication in the toplevel Makefile
        https://bugs.webkit.org/show_bug.cgi?id=179204

        * Source/Makefile:
        Address some post-landing review comments to keep the order of the MODULES correct.

2017-11-02  Tim Horton  <timothy_horton@apple.com>

        Reduce duplication in the toplevel Makefile
        https://bugs.webkit.org/show_bug.cgi?id=179204

        Reviewed by Simon Fraser.

        * Source/Makefile:
        Make MODULES additive instead of completely repeated, and only build
        libwebrtc where it's needed.

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

        Unreviewed, fix typos in library names for the GTK+ port.

        * Source/cmake/OptionsGTK.cmake:

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

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

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

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

        Unreviewed. Fix GTK+/WPE make distcheck.

        * CMakeLists.txt: Only include PerformanceTests directory to the build for GTK+ and WPE ports when developer
        mode is enabled.

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

        [WPE] Use proper shared object versioning for libWPEWebKit.so
        https://bugs.webkit.org/show_bug.cgi?id=178878

        Reviewed by Michael Catanzaro.

        Move the CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE() to a new CMake include file,
        and use it both for the GTK+ and WPE ports. Also add a SET_PROJECT_VERSION() macro to
        unify setting the PROJECT_VERSION* family of variables.

        * Source/cmake/OptionsGTK.cmake: Use the common macros imported from VersioningUtils.cmake.
        * Source/cmake/OptionsWPE.cmake: Properly assign a shared object version to libWPEWebKit.so,
        using the common macros from VersioningUtils.cmake.
        * Source/cmake/VersioningUtils.cmake: Added.

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

        [GTK] WebKit library .so version is not being set correctly
        https://bugs.webkit.org/show_bug.cgi?id=178873

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake: Adjust name of the target for which the .so version gets calculated.

2017-10-24  Stephan Szabo  <stephan.szabo@sony.com>

        [Win][JSCOnly] Make jsconly build testapi and dlls and copy dlls when running tests
        https://bugs.webkit.org/show_bug.cgi?id=177279

        Reviewed by Yusuke Suzuki.

        * Source/cmake/OptionsJSCOnly.cmake:

2017-10-21  Tim Horton  <timothy_horton@apple.com>

        Turn on ccache for Mac cmake builds by default
        https://bugs.webkit.org/show_bug.cgi?id=177059

        Reviewed by Sam Weinig.

        * Source/cmake/WebKitCCache.cmake: Added.
        * Source/cmake/WebKitCommon.cmake:
        Turn on ccache for Mac CMake builds (Makefile and Ninja generators only)
        if it's installed, making use of CMake's ability to wrap the compiler invocation.

2017-10-20  Antoine Quint  <graouts@apple.com>

        [Web Animations] Provide basic timeline and animation interfaces
        https://bugs.webkit.org/show_bug.cgi?id=178526

        Reviewed by Dean Jackson.

        Remove the WEB_ANIMATIONS compile-time flag.

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

2017-10-18  Keith Miller  <keith_miller@apple.com>

        Setup WebCore build to start using unified sources.
        https://bugs.webkit.org/show_bug.cgi?id=178362

        Reviewed by Tim Horton.

        Pass features to the unified source bundler script.

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

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

        Remove remnants of OpenWebRTC
        https://bugs.webkit.org/show_bug.cgi?id=178437

        Reviewed by Alejandro G. Castro.

        Remove the FindOpenWebRTC.cmake file and the searches for it in both
        OptionsGTK and OptionsWPE.

        * Source/cmake/FindOpenWebRTC.cmake: Removed.
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

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

        [WPE] Remove the possibility of installing the old WebKit2 C API
        https://bugs.webkit.org/show_bug.cgi?id=178125

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsWPE.cmake: Remove definition of the EXPORT_DEPRECATED_WEBKIT2_C_API
        build option.

2017-10-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Expose ENABLE_XSLT option
        https://bugs.webkit.org/show_bug.cgi?id=177857

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/OptionsWPE.cmake:

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

        [WPE][GTK] Propagate libepoxy compiler flags obtained from pkg-config
        https://bugs.webkit.org/show_bug.cgi?id=178081

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/FindLibEpoxy.cmake: Define the ${LIBEPOXY_DEFINITIONS} variable when libepoxy
        is found by pkg-config. This contains the value of the "Cflags" field from "epoxy.pc".

2017-10-05  Frederic Wang  <fwang@igalia.com>

        Remove WOFF2 from Source/ThirdParty.
        https://bugs.webkit.org/show_bug.cgi?id=177862

        Reviewed by Michael Catanzaro.

        * Source/CMakeLists.txt: Do not build the woff2 source.
        * Source/cmake/FindWOFF2Dec.cmake: Added. New cmake module for woff2.
        * Source/cmake/OptionsGTK.cmake: Load the woff2 package.

2017-10-05  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        Generate a compile error if release is built without compiler optimizations
        https://bugs.webkit.org/show_bug.cgi?id=177665

        Reviewed by Brian Burg.

        Default to RelWithDebInfo if CMAKE_BUILD_TYPE is unset.

        * CMakeLists.txt:

2017-10-05  Tim Horton  <timothy_horton@apple.com>

        Make progress toward properly-formed XPC services in the Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=177918

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitMacros.cmake:
        Add a macro wrapper around 'ln'.

2017-10-03  Frederic Wang  <fwang@igalia.com>

        Remove Brotli from Source/ThirdParty
        https://bugs.webkit.org/show_bug.cgi?id=177804

        Reviewed by Michael Catanzaro.

        * Source/CMakeLists.txt: Do not build ThirdParty/brotli anymore.
        * Source/cmake/FindBrotliDec.cmake: Added. New cmake module to find Brotli via PkgConfig.
        * Source/cmake/OptionsGTK.cmake: Expose USE_WOFF2 as a public option and use find_package
        to look for brotli.

2017-10-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [Linux] Port MallocBench
        https://bugs.webkit.org/show_bug.cgi?id=177856

        Reviewed by Filip Pizlo.

        * CMakeLists.txt:

2017-10-04  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r222840.

        This change breaks internal builds.

        Reverted changeset:

        "Generate a compile error if release is built without compiler
        optimizations"
        https://bugs.webkit.org/show_bug.cgi?id=177665
        http://trac.webkit.org/changeset/222840

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

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

        Significantly increased the WebKit build time (Requested by
        rniwa on #webkit).

        Reverted changeset:

        "Build libwebrtc unit tests executables"
        https://bugs.webkit.org/show_bug.cgi?id=177211
        http://trac.webkit.org/changeset/222775

2017-10-04  Miguel Gomez  <magomez@igalia.com>

        Add animation support for WebP images
        https://bugs.webkit.org/show_bug.cgi?id=113124

        Reviewed by Žan Doberšek.

        * Source/cmake/FindWebP.cmake:

2017-10-04  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        Generate a compile error if release is built without compiler optimizations
        https://bugs.webkit.org/show_bug.cgi?id=177665

        Reviewed by Michael Catanzaro.

        Default to RelWithDebInfo if CMAKE_BUILD_TYPE is unset.

        * CMakeLists.txt:

2017-10-03  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>

        [GLib] Let WebCore know of low power situations
        https://bugs.webkit.org/show_bug.cgi?id=177810

        Reviewed by Carlos Garcia Campos.

        WebCore can use knowledge of low power situations to throttle timers and avoid expensive
        checks, lowering power usage. We can use upower's warning level to let WebCore know we are
        in such a situation.

        * Source/cmake/OptionsGTK.cmake: depend on upower-glib.
        * Source/cmake/FindUPowerGLib.cmake: Added.

2017-10-03  Youenn Fablet  <youenn@apple.com>

        Build libwebrtc unit tests executables
        https://bugs.webkit.org/show_bug.cgi?id=177211

        Reviewed by Alex Christensen.

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

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

        [WPE] Remove GnuTLS dependency
        https://bugs.webkit.org/show_bug.cgi?id=177750

        Reviewed by Michael Catanzaro.

        libgcrypt is used by default instead of GnuTLS.
        See bug 163125

        * Source/cmake/OptionsWPE.cmake:

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

        [WPE] Do not require XSLT if disabled
        https://bugs.webkit.org/show_bug.cgi?id=177752

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsWPE.cmake: libxslt is not a hard dep

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

        Remove ENABLE_CSS_REGIONS
        https://bugs.webkit.org/show_bug.cgi?id=177689

        Reviewed by Darin Adler.

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

2017-09-29  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r222652.

        This broke an internal build.

        Reverted changeset:

        "Build libwebrtc unit tests executables"
        https://bugs.webkit.org/show_bug.cgi?id=177211
        http://trac.webkit.org/changeset/222652

2017-09-29  Youenn Fablet  <youenn@apple.com>

        Build libwebrtc unit tests executables
        https://bugs.webkit.org/show_bug.cgi?id=177211

        Reviewed by Alex Christensen.

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

2017-09-27  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r222537.

        This change broke internal builds.

        Reverted changeset:

        "Build libwebrtc unit tests executables"
        https://bugs.webkit.org/show_bug.cgi?id=177211
        http://trac.webkit.org/changeset/222537

2017-09-26  Youenn Fablet  <youenn@apple.com>

        Build libwebrtc unit tests executables
        https://bugs.webkit.org/show_bug.cgi?id=177211

        Reviewed by Alex Christensen.

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

2017-09-26  Keith Miller  <keith_miller@apple.com>

        CMake should reconfigure if the Sources.txt files are touched
        https://bugs.webkit.org/show_bug.cgi?id=177508

        Reviewed by JF Bastien.

        * Source/cmake/WebKitMacros.cmake:

2017-09-24  Keith Miller  <keith_miller@apple.com>

        JSC build should use unified sources for derived sources
        https://bugs.webkit.org/show_bug.cgi?id=177421

        Reviewed by JF Bastien.

        * Source/cmake/WebKitMacros.cmake:

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

        [CMake] Use implicit include directories for Clang as well
        https://bugs.webkit.org/show_bug.cgi?id=177426

        Reviewed by Michael Catanzaro.

        In WebKitCompilerFlags.cmake, also gather and use the system
        include directories for C and C++ build targets when compiling
        with Clang. This fixes compilation errors when cross-building
        WebKit with a Clang-based toolchain.

        COMPILER_IS_GCC_OR_CLANG is used to check for GCC or Clang
        compilers. That only checks for the C++ compiler, but it's not
        reasonable to expect two widely different compilers being used
        for C and C++ compilation.

        * Source/cmake/WebKitCompilerFlags.cmake:

2017-09-25  Timothy Horton  <timothy_horton@apple.com>

        Make progress on getting Mac CMake building again
        https://bugs.webkit.org/show_bug.cgi?id=177443

        Unreviewed, just "fixing" the build.

        * Source/cmake/OptionsMac.cmake:
        Turn on WEB_CRYPTO on Mac. We need to do a bigger cleanup of feature
        defines, but this one is important because we have SUBTLE_CRYPTO on
        and there is some amount of interdependency.

2017-09-22  Per Arne Vollan  <pvollan@apple.com>

        [Win] WebKit is built as a static library, and not as a dll.
        https://bugs.webkit.org/show_bug.cgi?id=177365

        Reviewed by Brent Fulgham.

        Set target type for WebKitLegacy target.

        * Source/cmake/OptionsWin.cmake:

2017-09-22  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r222394.

        This broke the Windows Debug Build.

        Reverted changeset:

        "Remove build-webkit's notion of feature flags having a
        default value"
        https://bugs.webkit.org/show_bug.cgi?id=177338
        http://trac.webkit.org/changeset/222394

2017-09-22  Tim Horton <timothy_horton@apple.com> and Michael Catanzaro <mcatanzaro@igalia.com>

        Remove build-webkit's notion of feature flags having a default value
        https://bugs.webkit.org/show_bug.cgi?id=177338

        Reviewed by Alex Christensen.

        Add an ENABLE_EXPERIMENTAL_FEATURES flag and use it to enable certain features.

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

2017-09-20  Keith Miller  <keith_miller@apple.com>

        JSC should use unified sources for platform specific files.
        https://bugs.webkit.org/show_bug.cgi?id=177290

        Reviewed by Michael Saboff.

        Change WEBKIT_COMPUTE_SOURCES CMake macro to look for platform
        specific unified source lists. This is done in the same way that
        we look for port specific configuration files. For example, if I
        were building for the Mac port WEBKIT_COMPUTE_SOURCES would add
        the Sources.txt and SourcesMac.txt source lists to the list of
        unified sources.

        * Source/cmake/WebKitMacros.cmake:

2017-09-20  Keith Miller  <keith_miller@apple.com>

        JSC Xcode build should use unified sources for platform independent files
        https://bugs.webkit.org/show_bug.cgi?id=177190

        Reviewed by Saam Barati.

        Add a macro for collecting the set of "header" source files and adding the bundle
        files to the "sources" list.

        * Source/cmake/WebKitMacros.cmake:

2017-09-20  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r222194) [WPE] Library and executable output names broken
        https://bugs.webkit.org/show_bug.cgi?id=177273

        Reviewed by Carlos Alberto Lopez Perez.

        Move the WebKit2 output name variables from here to Source/WebKit.

        * Source/cmake/OptionsWPE.cmake:

2017-09-20  Alberto Garcia  <berto@igalia.com>

        Fix HPPA and Alpha builds
        https://bugs.webkit.org/show_bug.cgi?id=177224

        Reviewed by Alex Christensen.

        * CMakeLists.txt:

2017-09-19  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [CMake] Add ENABLE_WEB_CRYPTO option and make ENABLE_SUBTLE_CRYPTO depend on it.
        https://bugs.webkit.org/show_bug.cgi?id=177180

        Reviewed by Michael Catanzaro.

        This adds a ENABLE_WEB_CRYPTO flag and makes ENABLE_SUBTLE_CRYPTO depend on it.
        The GTK and WPE ports enable them and set ENABLE_WEB_CRYPTO to public.

        * Source/cmake/OptionsGTK.cmake: Set both features to ON and ENABLE_WEB_CRYPTO to public. No change in behaviour for GTK.
        * Source/cmake/OptionsWPE.cmake: Do like on the GTK port. The public flag is now ENABLE_WEB_CRYPTO.
        * Source/cmake/WebKitFeatures.cmake: Add the definition of ENABLE_WEB_CRYPTO and make ENABLE_SUBTLE_CRYPTO depend on it.

2017-09-18  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Rename WebKit target to WebKitLegacy and rename WebKit2 target to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=174558

        Reviewed by Alex Christensen.

        * CMakeLists.txt:
        * Source/PlatformGTK.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/WebKitCommon.cmake:
        * Source/cmake/WebKitFS.cmake:

2017-09-18  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [Win][PAL] Move WebCoreHeaderDetection.h to PAL
        https://bugs.webkit.org/show_bug.cgi?id=176990

        Reviewed by Alex Christensen.

        Create DerivedSources directory for PAL if WebCore build is enabled.

        * Source/cmake/WebKitCommon.cmake:
        * Source/cmake/WebKitFS.cmake:

2017-09-15  Konstantin Tokarev  <annulen@yandex.ru>

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

        Reviewed by Michael Catanzaro.

        Don't disable -Wexpansion-to-defined for Clang.
        As suggested by Nico Weber, this warning produces false positives with
        GCC only.

        * Source/cmake/WebKitCompilerFlags.cmake:

2017-09-14  Yousuke Kimoto  <yousuke.kimoto@sony.com>

        [WinCairo] Add an option to build WebKitLegacy or WebKit
        https://bugs.webkit.org/show_bug.cgi?id=176891

        Added an option to build WebKitLegacy or WebKit.

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsWin.cmake:

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

        [CMake] Detect harfbuzz without pkgconfig
        https://bugs.webkit.org/show_bug.cgi?id=176886

        Reviewed by Michael Catanzaro.

        * Source/cmake/FindHarfBuzz.cmake:

2017-09-07  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][CMake] Add "dist" and "distcheck" targets
        https://bugs.webkit.org/show_bug.cgi?id=176448

        Reviewed by Carlos Garcia Campos.

        Add "dist" and "distcheck" CMake targets, which create release tarballs.
        These are available only when configuring with -DDEVELOPER_MODE=TRUE.

        * Source/PlatformWPE.cmake: Added.
        * Source/cmake/FindXz.cmake: Added.

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

        [GTK] Wrong use of PLUGIN_ARCHITECTURE(X11) in several places
        https://bugs.webkit.org/show_bug.cgi?id=176329

        Reviewed by Michael Catanzaro.

        Only define MOZ_X11 if X11 target is enabled and always define XP_UNIX if NETSCAPE_PLUGIN_API is enabled.

        * Source/cmake/OptionsGTK.cmake:

2017-09-03  Sam Weinig  <sam@webkit.org>

        Remove CanvasProxy
        https://bugs.webkit.org/show_bug.cgi?id=176288

        Reviewed by Yusuke Suzuki.

        CanvasProxy does not appear to be in any current HTML spec
        and was disabled and unimplemented in our tree. Time to 
        get rid of it.

        * 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-08-31  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Make USE_CF conditional within Windows
        https://bugs.webkit.org/show_bug.cgi?id=176173

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2017-08-30  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WinCairo] Use find_package for libpng and libjpeg
        https://bugs.webkit.org/show_bug.cgi?id=176113

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsWinCairo.cmake:

2017-08-30  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [WPE] Enable MEMORY_SAMPLER
        https://bugs.webkit.org/show_bug.cgi?id=176099

        Reviewed by Michael Catanzaro.

        Enable the otion at build time by default on Linux (currently
        there are only Linux and Mac implementations of this feature).

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

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

        Unreviewed. Fix versions numbers after r221136.

        We normally use .0 in trunk after branching, and bump to .1 when making the first unstable release. We also need
        to bump the library version.

        * Source/cmake/OptionsGTK.cmake:

2017-08-29  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use find_package for zlib
        https://bugs.webkit.org/show_bug.cgi?id=176075

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2017-08-29  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use find_package for libxml2 and libxstl
        https://bugs.webkit.org/show_bug.cgi?id=176042

        Reviewed by Konstantin Tokarev.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2017-08-24  Tomas Popela  <tpopela@redhat.com>

        Bump trunk version to be 2.19.1

        Rubber-stamped by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake:

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

        [CMake] Use find_package for SQLite
        https://bugs.webkit.org/show_bug.cgi?id=175803

        Reviewed by Konstantin Tokarev.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2017-08-23  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer][GTK][WPE] Move common things to GStreamer cmake files
        https://bugs.webkit.org/show_bug.cgi?id=175625

        Three files were created as kind of hooks for the GTK and WPE
        CMake option files. The definitions one is to enable, disable and
        create the common options (that can be and are actually overriden
        in some cases. The dependencies one adds dependencies for the
        option switches that are set. The checks one ensure the
        dependencies are met depending on the option switches.

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/GStreamerChecks.cmake: Added.
        * Source/cmake/GStreamerDefinitions.cmake: Added.
        * Source/cmake/GStreamerDependencies.cmake: Added.
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2017-08-22  Commit Queue  <commit-queue@webkit.org>

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

        generates build failures in the bots (Requested by calvaris[m]
        on #webkit).

        Reverted changeset:

        "[GStreamer][GTK][WPE] Move common things to GStreamer cmake
        files"
        https://bugs.webkit.org/show_bug.cgi?id=175625
        http://trac.webkit.org/changeset/221006

2017-08-22  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer][GTK][WPE] Move common things to GStreamer cmake files
        https://bugs.webkit.org/show_bug.cgi?id=175625

        Three files were created as kind of hooks for the GTK and WPE
        CMake option files. The definitions one is to enable, disable and
        create the common options (that can be and are actually overriden
        in some cases. The dependencies one adds dependencies for the
        option switches that are set. The checks one ensure the
        dependencies are met depending on the option switches.

        Reviewed by Žan Doberšek.

        * Source/cmake/GStreamerChecks.cmake: Added.
        * Source/cmake/GStreamerDefinitions.cmake: Added.
        * Source/cmake/GStreamerDependencies.cmake: Added.
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2017-08-17  Andreas Kling  <akling@apple.com>

        Disable CSS regions at compile time
        https://bugs.webkit.org/show_bug.cgi?id=175630

        Reviewed by Antti Koivisto.

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

2017-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove Proximity Events and related code
        https://bugs.webkit.org/show_bug.cgi?id=175545

        Reviewed by Daniel Bates.

        No platform enables Proximity Events, so remove code inside ENABLE(PROXIMITY_EVENTS)
        and other related code.

        * 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-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove ENABLE_VIEW_MODE_CSS_MEDIA and related code
        https://bugs.webkit.org/show_bug.cgi?id=175557

        Reviewed by Jon Lee.

        No port cares about the ENABLE(VIEW_MODE_CSS_MEDIA) feature, so remove it.

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

2017-08-14  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Implement WebCore::standardUserAgent()
        https://bugs.webkit.org/show_bug.cgi?id=175507

        Reviewed by Michael Catanzaro.

        Remove "_GLIB" from user-agent version macros.

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

2017-08-13  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Implement WebCore::standardUserAgent()
        https://bugs.webkit.org/show_bug.cgi?id=175507

        Reviewed by Carlos Alberto Lopez Perez.

        Implement missing User-Agent handling for the WPE port by sharing the code with the GTK+ port.

        * Source/cmake/OptionsGTK.cmake: Rename "GTK" with "GLIB" in UA version macros.
        * Source/cmake/OptionsWPE.cmake: Add UA version macros.

2017-08-11  Ryosuke Niwa  <rniwa@webkit.org>

        Replace DATA_TRANSFER_ITEMS by a runtime flag and add a stub implementation
        https://bugs.webkit.org/show_bug.cgi?id=175474
        <rdar://problem/33844628>

        Reviewed by Wenson Hsieh.

        * 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-08-11  Konstantin Tokarev  <annulen@yandex.ru>

        [CMake] Fix broken use of REQUIRED with find modules
        https://bugs.webkit.org/show_bug.cgi?id=175427

        Reviewed by Michael Catanzaro.

        Module name passed to find_package_handle_standard_args() must exactly
        match file name of CMake find module including letter case, e.g. "WebP"
        must be used in FindWebP.cmake file. Otherwise find_package() arguments
        (REQUIRED, QUIET, version) are not processed correctly.

        To continue using old XXX_FOUND variables without case changes porting
        to new find_package_handle_standard_args syntax which has FOUND_VAR
        parameter. Unfortunately, variable name GTK_UNIX_PRINT_FOUND is not
        allowed by find_package_handle_standard_args when package name is
        GTKUnixPrint, so it's replaced to GTKUnixPrint_FOUND (default).

        * Source/cmake/FindGTKUnixPrint.cmake:
        * Source/cmake/FindGeoClue2.cmake:
        * Source/cmake/FindHyphen.cmake:
        * Source/cmake/FindLibEpoxy.cmake:
        * Source/cmake/FindLibGBM.cmake:
        * Source/cmake/FindLibsecret.cmake:
        * Source/cmake/FindLibtasn1.cmake:
        * Source/cmake/FindLibxkbcommon.cmake:
        * Source/cmake/FindOpenGL.cmake:
        * Source/cmake/FindOpenGLES2.cmake:
        * Source/cmake/FindOpenWebRTC.cmake:
        * Source/cmake/FindWPEBackend-mesa.cmake:
        * Source/cmake/FindWPEBackend.cmake:
        * Source/cmake/FindWayland.cmake:
        * Source/cmake/FindWebP.cmake:
        * Source/cmake/OptionsGTK.cmake:

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

        REGRESSION(r220515) [GTK][CMake] Build with ENABLE_GEOLOCATION fails on Debian Jessie
        https://bugs.webkit.org/show_bug.cgi?id=175426

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/FindGeoClue2.cmake:

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

        Remove ENABLE_GAMEPAD_DEPRECATED
        https://bugs.webkit.org/show_bug.cgi?id=175361

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindGUdev.cmake: Removed.
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2017-08-10  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        REGRESSION(r220515) [GTK][CMake] Build with ENABLE_GEOLOCATION fails on Debian Jessie
        https://bugs.webkit.org/show_bug.cgi?id=175426

        Reviewed by Carlos Garcia Campos.

        Fix the pkg-config file name.
        We really require geoclue-2.0 and not libgeoclue-2.0.

        * Source/cmake/FindGeoClue2.cmake:

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

        [GTK] Remove support for geoclue1
        https://bugs.webkit.org/show_bug.cgi?id=164205

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindGeoClue.cmake: Removed.
        * Source/cmake/OptionsGTK.cmake:

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

        [CMake] Remove unused find modules
        https://bugs.webkit.org/show_bug.cgi?id=175363

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/FindCFLite.cmake: Removed.
        * Source/cmake/FindClang.cmake: Removed.
        * Source/cmake/FindDBus.cmake: Removed.
        * Source/cmake/FindDirectX.cmake: Removed.
        * Source/cmake/FindEspeak.cmake: Removed.
        * Source/cmake/FindQuickTimeSDK.cmake: Removed.

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

        [WPE] Enable SUBTLE_CRYPTO in release builds
        https://bugs.webkit.org/show_bug.cgi?id=175371

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsWPE.cmake:
        Use ON as the default port value for ENABLE_SUBTLE_CRYPTO in WPE.

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

        [GTK] Enable SUBTLE_CRYPTO in GTK+ releases
        https://bugs.webkit.org/show_bug.cgi?id=172758

        Reviewed by Žan Doberšek.

        Add ENABLE_WEB_CRYPTO public option and make ENABLE_SUBTLE_CRYPTO depend on it.

        * Source/cmake/OptionsGTK.cmake:

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

        [CMake] Properly test if compiler supports compiler flags
        https://bugs.webkit.org/show_bug.cgi?id=174490

        Reviewed by Konstantin Tokarev.

        This turned out to be a massive pain. I didn't want to merely check options before using
        them: I also wanted to organize the code to avoid setting similar flags in different places.
        Right now we set a bunch of global flags in OptionsCommon.cmake, and a bunch more flags in
        WEBKIT_SET_EXTRA_COMPILER_FLAGS on a per-target basis.

        Setting flags per-target seems better in general, e.g. because it makes it very easy to
        disable warnings for particular ThirdParty targets. But it turns out that all the flags set
        on a per-target basis get passed to both the C compiler and the C++ compiler, so it's
        impossible to pass C++-only flags there. That's terrible. It's possible to make the flags
        language-conditional using generator expressions, but that doesn't work for the Visual
        Studio backend, so we would have to drop support for that (not going to happen). The CMake
        documentation suggests that C and C++ files ought to be built in separate targets to avoid
        this. It's a mess, basically.

        So I've wound up removing WEBKIT_SET_EXTRA_COMPILER_FLAGS and adding most of those flags to
        CMAKE_C_FLAGS and CMAKE_CXX_FLAGS instead. Really the only disadvantage of this is we now
        have to suppress individual warnings when building ANGLESupport in WebCore. That's not the
        end of the world. The only remaining useful feature of WEBKIT_SET_EXTRA_COMPILER_FLAGS was
        to add -fPIC to static library targets, but turns out CMake does that for us if we just set
        the variable CMAKE_POSITION_INDEPENDENT_CODE, so we can get rid of it completely.

        Of course there are also macros for setting target-specific compiler flags, which we
        frequently need in order to suppress specific warnings, particularly warnings coming from
        third-party libraries like ANGLE and gtest. But remember the footgun: these macros will test
        the flag against only one compiler, but must work with both C and C++ compilers unless the
        build target exclusively contains targets built with just one of those compilers. Yuck.

        * CMakeLists.txt:
        * Source/CMakeLists.txt:
        * Source/PlatformGTK.cmake:
        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/WebKitCommon.cmake:
        * Source/cmake/WebKitCompilerFlags.cmake: Added.
        * Source/cmake/WebKitMacros.cmake:

2017-08-07  Brian Burg  <bburg@apple.com>

        Remove CANVAS_PATH compilation guard
        https://bugs.webkit.org/show_bug.cgi?id=175207

        Reviewed by Sam Weinig.

        * 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:

2017-08-03  Brian Burg  <bburg@apple.com>

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

        Reviewed by Joseph Pecoraro.

        * 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-08-03  Brady Eidson  <beidson@apple.com>

        Add SW IDLs and stub out basic functionality.
        https://bugs.webkit.org/show_bug.cgi?id=175115

        Reviewed by Chris Dumez.

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

2017-08-01  Brady Eidson  <beidson@apple.com>

        Part 1 of: Rename DatabaseProcess to StorageProcess.
        https://bugs.webkit.org/show_bug.cgi?id=174879

        Reviewed by Andy Estes.

        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/gtksymbols.filter:

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

        [CMake] WebKitFS.cmake depends on options set in Option cmake files that are included later
        https://bugs.webkit.org/show_bug.cgi?id=174855

        Reviewed by Carlos Garcia Campos.

        Create derived sources directories in WebKitCommon.cmake instead of WebKitFS.cmake, which is
        too soon. I tried changing the include order, but other stuff in WebKitFS.cmake really is
        needed before including the port options file.

        * Source/cmake/WebKitCommon.cmake:
        * Source/cmake/WebKitFS.cmake:

2017-07-29  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, build fix for GTK and WPE about StorageProcess renaming

        * Source/cmake/OptionsWPE.cmake:

2017-07-28  Commit Queue  <commit-queue@webkit.org>

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

        "broke PLT on iOS (rdar://problem/33602751)" (Requested by
        estes on #webkit).

        Reverted changeset:

        "Part 1 of: Rename DatabaseProcess to StorageProcess."
        https://bugs.webkit.org/show_bug.cgi?id=174879
        http://trac.webkit.org/changeset/219986

2017-07-28  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Building with ENABLE_VIDEO=OFF fails
        https://bugs.webkit.org/show_bug.cgi?id=174940

        Reviewed by Alex Christensen.

        Code guarded by ENABLE(MEDIA_STREAM) requires the definition of HTMLVideoElement to
        be available, which in turn is guarded by ENABLE(VIDEO).

        * Source/cmake/WebKitFeatures.cmake: Make ENABLE_MEDIA_STREAM depend on ENABLE_VIDEO.

2017-07-28  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE] Implement EventSenderProxy in WTR
        https://bugs.webkit.org/show_bug.cgi?id=173419

        Reviewed by Žan Doberšek.

        Add the implementation of EventSenderProxy to the WTR. This
        allows us to extend the coverage of the test suite in WKWPE.

        * Source/cmake/FindLibxkbcommon.cmake: Added.

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

        Unreviewed. Bumping the patch version for WPEWebKit library to 20170728.

        * Source/cmake/OptionsWPE.cmake:

2017-07-27  Brady Eidson  <beidson@apple.com>

        Part 1 of: Rename DatabaseProcess to StorageProcess.
        https://bugs.webkit.org/show_bug.cgi?id=174879

        Reviewed by Andy Estes.

        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/gtksymbols.filter:


2017-07-26  Brady Eidson  <beidson@apple.com>

        Remove DATABASE_PROCESS build flag.
        https://bugs.webkit.org/show_bug.cgi?id=174868

        Reviewed by Andy Estes.

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

2017-07-26  Brian Burg  <bburg@apple.com>

        Remove WEB_TIMING feature flag
        https://bugs.webkit.org/show_bug.cgi?id=174795

        Reviewed by Alex Christensen.

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

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

        Unreviewed. Fix WebKit2 derived sources directory creation after r219488.

        The variable is still DERIVED_SOURCES_WEBKIT2_DIR, not DERIVED_SOURCES_WEBKIT_DIR. Build was not really affected
        because WebKit2 makefile creates the directory too.

        * Source/cmake/WebKitFS.cmake:

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

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

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

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

        Unreviewed. Fix GTK+ WebKit2 library soname after r219488.

        The WebKit2 -> WebKit rename shouldn't affect the GTK+ library that is still called libwebkit2gtk, so keep using
        WEBKIT2 as the library name in CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE, since that's also what the WebKit
        makefile passes to WEBKIT_POPULATE_LIBRARY_VERSION.

        * Source/cmake/OptionsGTK.cmake:

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

        [WPE] Add libepoxy to the Jhbuild moduleset
        https://bugs.webkit.org/show_bug.cgi?id=174711

        Reviewed by Carlos Alberto Lopez Perez.

        libepoxy 1.3.1 that's widely available in current stable distributions (Debian stable,
        Ubuntu LTS) does suffice our needs, but also contains a bug that incorrectly determines
        the current EGL context and the API version of OpenGL that's bound to that context.
        Focusing on experiences on Debian systems, while the current stable Debian release has
        this bug patched, the package for the testing distribution of Debian removed that same
        patch for whatever reason, despite using the 1.3.1 version as the package basis.

        To avoid this, libepoxy 1.4.3 is now added to WPE's Jhbuild moduleset. The WPE port
        also now demands at least the 1.4.0 version to be available when configuring.

        We should revisit the minimum version for libepoxy in the future if the 1.3 release
        branch gets updated with the proper fix.

        * Source/cmake/FindLibEpoxy.cmake:
        * Source/cmake/OptionsWPE.cmake:

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

       [cmake] Unreviewed, add definitions necessary to use ICU shipped with macOS

       macOS system ICU libraries are built with U_DISABLE_RENAMING=1 and
       U_SHOW_CPLUSPLUS_API=0. After r219155 we have to pass this definitons
       explicitly, because ICU headers in the tree are not modified anymore.

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

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

        Add initial implementation of WebDriver process to run the HTTP server
        https://bugs.webkit.org/show_bug.cgi?id=166682

        Reviewed by Brian Burg.

        Enable WebDriver in the GTK port by default.

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

2017-07-17  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Set library types before their targets are created
        https://bugs.webkit.org/show_bug.cgi?id=174600

        Reviewed by Michael Catanzaro.

        Since r219560 library targets are created before PlatformXXX.cmake
        files are processed, however library type must be passed in
        add_library() call and cannot be changed afterwards. Set these
        variables in OptionsXXX.cmake.

        * CMakeLists.txt:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWin.cmake:

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

        [CMake] Include most CMake modules from WebKitCommon.cmake
        https://bugs.webkit.org/show_bug.cgi?id=174546

        Reviewed by Konstantin Tokarev.

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

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

        [CMake] Macros in WebKitMacros.cmake should be prefixed with WEBKIT_ namespace
        https://bugs.webkit.org/show_bug.cgi?id=174547

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitMacros.cmake:

2017-07-17  Konstantin Tokarev  <annulen@yandex.ru>

        [CMake] Create targets before WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS is called
        https://bugs.webkit.org/show_bug.cgi?id=174557

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitMacros.cmake:

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

        [CMake] Raise minimum CMake requirement
        https://bugs.webkit.org/show_bug.cgi?id=174545

        Reviewed by Konstantin Tokarev.

        * CMakeLists.txt:
        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsJSCOnly.cmake:

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

        [CMake] Unclear distinction between WebKitHelpers and WebKitMacros
        https://bugs.webkit.org/show_bug.cgi?id=153189

        Reviewed by Antonio Gomes.

        Merge WebKitHelpers.cmake into WebKitMacros.cmake, since there is no meaningful distinction
        between the macros that belong in each file. Then, move the macros that are only needed by
        one project into project-specific CMake files. Retain here only the macros that are needed
        in multiple places.

        * Source/cmake/OptionsCommon.cmake: Update a comment.
        * Source/cmake/OptionsGTK.cmake: New location for libtool macro, exclusively needed here.
        * Source/cmake/WebKitCommon.cmake: Do not include WebKitHelpers.cmake.
        * Source/cmake/WebKitHelpers.cmake: Removed.
        * Source/cmake/WebKitMacros.cmake:

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

        [GTK][WPE] Avoid setting settings that are set by default

        Unreviewed.

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

2017-07-13  Konstantin Tokarev  <annulen@ynadex.ru>

        Unreviewed, Windows ports should enable WebKitLegacy and disable
        WebKit.

        * Source/cmake/OptionsWin.cmake:

2017-07-13  Matthew Hanson  <matthew_hanson@apple.com>

        Fix the Mac CMake build.

        Unreviewed build fix.

        Fix the Mac CMake build after r219488 broke it. r219488 erroneously updated
        the variable name DERIVED_SOURCES_WEBKITLEGACY_DIR to DERIVED_SOURCES_WEBKIT_LEGACY_DIR
        without updating subsequent users of that variable.

        * Source/cmake/WebKitFS.cmake:
        Rename DERIVED_SOURCES_WEBKIT_LEGACY_DIR back to DERIVED_SOURCES_WEBKITLEGACY_DIR.

2017-07-13  Matthew Hanson  <matthew_hanson@apple.com>

        Fix the cMake builds (GTK and WPE.)
        https://bugs.webkit.org/show_bug.cgi?id=174164
        rdar://problem/33137595

        Reviewed by Dan Bernstein.

        * Source/CMakeLists.txt:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/WebKitFS.cmake:
        * Source/cmake/WebKitPackaging.cmake:

2017-07-13  Matthew Hanson  <matthew_hanson@apple.com>

        Rename WebKit2.xcodeproj to WebKit.xcodeproj.
        https://bugs.webkit.org/show_bug.cgi?id=174164
        rdar://problem/33137595

        Reviewed by Dan Bernstein.

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

2017-07-13  Matthew Hanson  <matthew_hanson@apple.com>

        Update tools and configurations after renaming Source/WebKit2 to Source/WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=174164
        rdar://problem/33137595

        Reviewed by Dan Bernstein.

        * Source/Makefile:
        * Source/PlatformGTK.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitFS.cmake:
        * Source/cmake/WebKitPackaging.cmake:
        * WebKit.xcworkspace/contents.xcworkspacedata:
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2017-07-05  Matthew Hanson  <matthew_hanson@apple.com>

        Update the Xcode project name from WebKit to WebKitLegacy.
        https://bugs.webkit.org/show_bug.cgi?id=174162
        rdar://problem/33137594

        Reviewed by Dan Bernstein.

        Rename WebKit to WebKitLegacy.

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

2017-07-05  Matthew Hanson  <matthew_hanson@apple.com>

        Update tools and configurations after renaming Source/WebKit to Source/WebKitLegacy.
        https://bugs.webkit.org/show_bug.cgi?id=174162
        rdar://problem/33137594

        Reviewed by Dan Bernstein.

        Mass rename of Source/WebKit to Source/WebKitLegacy in OpenSource cmake files
        and Xcode project files.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitFS.cmake:
        * WebKit.xcworkspace/contents.xcworkspacedata:
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

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

        Fix compiler warnings when building with GCC 7
        https://bugs.webkit.org/show_bug.cgi?id=174463

        Reviewed by Darin Adler.

        * Source/cmake/OptionsCommon.cmake:

2017-07-12  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219401.

        This revision rolled out the previous patch, but after talking
        with reviewer, a rebaseline is what was needed.Rolling back in
        before rebaseline.

        Reverted changeset:

        "Unreviewed, rolling out r219379."
        https://bugs.webkit.org/show_bug.cgi?id=174400
        http://trac.webkit.org/changeset/219401

2017-07-12  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219379.

        This revision caused a consistent failure in the test
        fast/dom/Window/property-access-on-cached-window-after-frame-
        removed.html.

        Reverted changeset:

        "Remove NAVIGATOR_HWCONCURRENCY"
        https://bugs.webkit.org/show_bug.cgi?id=174400
        http://trac.webkit.org/changeset/219379

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

        [WPE] Use libepoxy
        https://bugs.webkit.org/show_bug.cgi?id=172104

        Reviewed by Michael Catanzaro.

        * Source/cmake/FindLibEpoxy.cmake: Added.
        * Source/cmake/OptionsWPE.cmake: Find libepoxy, don't search for
        EGL or OpenGL ES anymore, and enable USE_LIBEPOXY by default.

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

        [GTK][WPE] Enable FILE_LOCK and implement lockFile and unlockFile
        https://bugs.webkit.org/show_bug.cgi?id=174357

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake: Use gio-unix unconditionally.

2017-07-11  Dean Jackson  <dino@apple.com>

        Remove NAVIGATOR_HWCONCURRENCY
        https://bugs.webkit.org/show_bug.cgi?id=174400

        Reviewed by Sam Weinig.

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

2017-07-11  Dean Jackson  <dino@apple.com>

        Rolling out r219372.

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

2017-07-11  Dean Jackson  <dino@apple.com>

        Remove NAVIGATOR_HWCONCURRENCY
        https://bugs.webkit.org/show_bug.cgi?id=174400

        Reviewed by Sam Weinig.

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

2017-07-03  Brian Burg  <bburg@apple.com>

        Web Replay: remove some unused code
        https://bugs.webkit.org/show_bug.cgi?id=173903

        Rubber-stamped by Joseph Pecoraro.

        * ManualTests/inspector/replay-keyboard-events.html: Removed.
        * ManualTests/inspector/replay-mouse-events.html: Removed.
        * ManualTests/inspector/replay-wheel-events.html: Removed.
        * ManualTests/inspector/replay-window-navigator-basic.html: Removed.
        * ManualTests/inspector/replay-window-screen.html: Removed.
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

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

        Move make-js-file-arrays.py from WebCore to JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=174024

        Reviewed by Michael Catanzaro.

        Make MAKE_JS_FILE_ARRAYS independent of WebCore and update it to use make-js-file-arrays.py from
        JavaScriptCore. It's no longer needed to set PYTHON_PATH to find jsmin.py.

        * Source/cmake/WebKitMacros.cmake:

2017-07-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        Drop NOSNIFF compile flag
        https://bugs.webkit.org/show_bug.cgi?id=174289

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitFeatures.cmake:

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

        [GTK][WPE] Enable X-Content-Type-Options: nosniff
        https://bugs.webkit.org/show_bug.cgi?id=174250

        Reviewed by Carlos Alberto Lopez Perez.

        Make nosniff enabled by default in all the ports.

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

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

        [Win] Build precompiled header successfully with clang-cl
        https://bugs.webkit.org/show_bug.cgi?id=174221

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitMacros.cmake:

2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        Upgrade GCC baseline
        https://bugs.webkit.org/show_bug.cgi?id=174155

        Reviewed by Michael Catanzaro.

        This patch bumps the version of GCC from 4.9.0 to 5.0.0,
        which is shipped with Ubuntu 16.04 LTS. And the latest
        Debian stable (stretch) already ships newer GCC (6.3.0).
        Remove workaround for old GCC. And move GCC version check
        to the top-level CMakeLists.txt.

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

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

        [WinCairo] Consolidate CMake code related to CURL
        https://bugs.webkit.org/show_bug.cgi?id=170860

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsWinCairo.cmake:

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

        [Win] Build JSCOnly on Windows with clang-cl
        https://bugs.webkit.org/show_bug.cgi?id=173889

        Reviewed by Konstantin Tokarev.

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

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

        [WPE] User script messages don't work
        https://bugs.webkit.org/show_bug.cgi?id=173712

        Reviewed by Žan Doberšek.

        Enable user script messages.

        * Source/cmake/OptionsWPE.cmake:

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

        [WPE] Enable PUBLIC_SUFFIX_LIST
        https://bugs.webkit.org/show_bug.cgi?id=173758

        Reviewed by Žan Doberšek.

        WebsiteDataStore needs it when fetching data.

        Fixes: /wpe/WebKitCookieManager/accept-policy
               /wpe/WebKitCookieManager/delete-cookies
               /wpe/WebKitCookieManager/cookies-changed
               /wpe/WebKitCookieManager/persistent-storage
               /wpe/WebKitCookieManager/ephemeral
               /wpe/WebKitWebsiteData/ephemeral
               /wpe/WebKitWebsiteData/cache
               /wpe/WebKitWebsiteData/storage
               /wpe/WebKitWebsiteData/databases
               /wpe/WebKitWebsiteData/appcache
               /wpe/WebKitWebsiteData/cookies

        * Source/cmake/OptionsWPE.cmake:

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

        [WPE] Add initial web extensions API
        https://bugs.webkit.org/show_bug.cgi?id=173640

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsWPE.cmake:

2017-06-21  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [MSVC] Fix compilation in CP932 (Shift_JIS) environment
        https://bugs.webkit.org/show_bug.cgi?id=173638

        Reviewed by Alex Christensen.

        Give "/utf-8 /validate-charset" options to the MSVC compiler
        to specify the source code encoding.

        * Source/cmake/OptionsMSVC.cmake:

2017-06-21  Miguel Gomez  <magomez@igalia.com>

        [GTK] Fix the condition to enable/disable GSTREAMER_GL
        https://bugs.webkit.org/show_bug.cgi?id=173650

        Reviewed by Carlos Garcia Campos.

        If GSTREAMER_GL is enabled, check for the GStreamer version. If the version is < 1.10, disable
        GSTREAMER_GL and continue. If the version is >= 1.10 but there's no gstreamer-gl package available
        then fail.

        * Source/cmake/FindGStreamer.cmake:
        * Source/cmake/OptionsGTK.cmake:

2017-06-21  Miguel Gomez  <magomez@igalia.com>

        [GTK] Enable GStreamer GL by default on production builds
        https://bugs.webkit.org/show_bug.cgi?id=173406

        Reviewed by Carlos Garcia Campos.

        Enable GStreamer GL by default when the GStreamer version >= 1.10.

        * Source/cmake/OptionsGTK.cmake:

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

        [GTK] Move WebGtkExtensionManager and WebGtkInjectedBundleMain to glib API dir
        https://bugs.webkit.org/show_bug.cgi?id=173606

        Reviewed by Žan Doberšek.

        Update public symbols that were renamed.

        * Source/cmake/gtksymbols.filter:

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

        [GCrypt] Implement CryptoKeyEC SPKI imports
        https://bugs.webkit.org/show_bug.cgi?id=172927

        Reviewed by Jiewen Tan, Michael Catanzaro and Carlos Garcia Campos.

        * Source/cmake/FindLibtasn1.cmake: Added.
        * Source/cmake/OptionsGTK.cmake: Require libtasn1 when SUBTLE_CRYPTO is enabled.
        * Source/cmake/OptionsWPE.cmake: Ditto.

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

        [WPE] Add initial implementation of glib API
        https://bugs.webkit.org/show_bug.cgi?id=173546

        Reviewed by Žan Doberšek.

        Add some definitions required to build WPE glib API.

        * Source/cmake/OptionsWPE.cmake:

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

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

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

2017-06-16  Alex Christensen  <achristensen@webkit.org>

        Fix Mac CMake build.

        * Source/cmake/WebKitFS.cmake:
        Add new DerivedSources/WTF directory.

2017-06-15  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] ADD_PRECOMPILED_HEADER should append OBJECT_DEPENDS, not overwrite it
        https://bugs.webkit.org/show_bug.cgi?id=173428

        Reviewed by Michael Catanzaro.

        Right now, if any of source files that are passed to
        ADD_PRECOMPILED_HEADER have non-empty OBJECT_DEPENDS property (e.g.
        changed with ADD_SOURCE_DEPENDENCIES call), its value is lost.

        * Source/cmake/WebKitMacros.cmake:

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

        [GTK] Do not use the C API in WebGtkExtensionManager
        https://bugs.webkit.org/show_bug.cgi?id=173408

        Reviewed by Michael Catanzaro.

        Update exported symbol signature.

        * Source/cmake/gtksymbols.filter:

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