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