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