2015-10-08  Daniel Bates  <dabates@apple.com>

        Add LLVM binaries for iOS 9 device
        https://bugs.webkit.org/show_bug.cgi?id=149913

        Rubber-stamped by Filip Pizlo.

        Add LLVM 3.6.2 binaries for ARM64-based iOS devices. We make use of LLVM for the FTL,
        which is enabled for 64-bit iOS devices.

        I built these binaries by performing the following:

        1) Check out WebKit to a directory like /some/path/OpenSource.

        2) Download and expand the archive <http://llvm.org/releases/3.6.2/llvm-3.6.2.src.tar.xz> into /some/path/OpenSource/llvm.

        3) In /some/path/OpenSource, delete the WebKitBuild directory to ensure a clean build.

        4) Run `Tools/Scripts/build-jsc --release --device ARCHS=arm64 ONLY_ACTIVE_ARCH=NO` to build both LLVM and JavaScriptCore.

        5) Run `Tools/Scripts/export-llvm-build -i WebKitLibraries/LLVMIncludesIOSDevice9.tar.bz2 -l WebKitLibraries/LLVMLibrariesIOSDevice9.tar.bz2 -b llvm/wkLLVMBuild -B llvm/wkLLVMBuild/Release+Asserts -s llvm` to produce files LLVM{Includes, Libraries}IOS9.tar.bz2.

        * LLVMIncludesIOS9.tar.bz2: Added.
        * LLVMLibrariesIOS9.tar.bz2: Added.

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.

        * win/tools/scripts/auto-version.pl:
        Use the WEBKIT_LIBRARIES environment variable if it exists.

2015-09-25  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix.

        * win/tools/vsprops/FeatureDefines.props: Let Windows build know about
        the STREAMS_API feature.

2015-09-24  Daniel Bates  <dabates@apple.com>

        Add WebKitSystemInterface for iOS 9.0
        https://bugs.webkit.org/show_bug.cgi?id=149550

        Rubber-stamped by Alexey Proskuryakov.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceIOSDevice9.0.a: Added.
        * libWebKitSystemInterfaceIOSSimulator9.0.a: Added.

2015-09-18  Alex Christensen  <achristensen@webkit.org>

        Remove last required use of WEBKIT_LIBRARIES environment variable on Windows
        https://bugs.webkit.org/show_bug.cgi?id=149355

        Reviewed by Brent Fulgham.

        * win/tools/scripts/auto-version.pl:
        Use the directory of $0 (the currently executed perl script) to find the perl script instead of an environment variable.
        This makes it possible to build WebKit on Windows without environment variables.

2015-09-14  Chris Dumez  <cdumez@apple.com>

        Disable PICTURE_SIZES on AppleWin
        https://bugs.webkit.org/show_bug.cgi?id=149125

        Reviewed by Alexey Proskuryakov.

        * win/tools/vsprops/FeatureDefines.props:

2015-08-31  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix.

        * win/lib32/WebKitSystemInterface.lib: Update with VS2015 build of this
        library to avoid linker errors on build bots.

2015-08-21  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix.

        * win/tools/vsprops/common.props: Ignore a warning that is filling the
        build logs with useless cruft.

2015-08-20  Lucas Forschler  <lforschler@apple.com>

        Check in LLVM 3.6.2 binary drops for OS X Mavericks.
        Check in drops built from the LLVM 3.6.2 open source release. 

        * LLVMIncludesMavericks.tar.bz2:
        * LLVMLibrariesMavericks.tar.bz2:

2015-08-12  Lucas Forschler  <lforschler@apple.com>

        Check in LLVM 3.6.2 binary drops for OS X Yosemite
        Check in drops built from the LLVM 3.6.2 open source release.

2015-08-11  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix for VS2015 targets.

        * win/lib32/WebKitSystemInterface.lib: Update with VS2015 version of library.

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.

        * win/tools/vsprops/common.props:
        Hide some warnings.  Using the same variable names in nested scopes is ok for now.

2015-08-04  Brent Fulgham  <bfulgham@apple.com>

        [Win] Update Apple Windows build for VS2015
        https://bugs.webkit.org/show_bug.cgi?id=147653

        Reviewed by Dean Jackson.

        * win/tools/vsprops/common.props: Fix build flags to use Windows 7
        (WINVER=0x601) as minimum build target for 64-bit builds.

2015-08-03  Filip Pizlo  <fpizlo@apple.com>

        Check in LLVM 3.6.2 binary drops for El Capitan
        https://bugs.webkit.org/show_bug.cgi?id=147582

        Reviewed by Alexey Proskuryakov.
        
        Check in drops built from the LLVM 3.6.2 open source release.
        
        These drops were built by doing:
        
        1) Check out WebKit to a directory like /some/path/OpenSource.

        2) Unpack LLVM 3.6.2 into /some/path/OpenSource/llvm. I got LLVM 3.6.2 from:
        
        http://llvm.org/releases/3.6.2/llvm-3.6.2.src.tar.xz

        3) While in /some/path/OpenSource, run Tools/Scripts/build-jsc --release. Make sure it's a
        totally clean build (i.e. delete WebKitBuild before starting).

        4) Run the following to create binary drops:

        Tools/Scripts/export-llvm-build -i WebKitLibraries/LLVMIncludesElCapitan.tar.bz2 -l WebKitLibraries/LLVMLibrariesElCapitan.tar.bz2 -b llvm/wkLLVMBuild -B llvm/wkLLVMBuild/Release+Asserts -s llvm

        * LLVMIncludesElCapitan.tar.bz2: Added.
        * LLVMLibrariesElCapitan.tar.bz2: Added.

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2015-07-20  Gordon Sheridan  <gordon_sheridan@apple.com>

        WKSI support for blocking a plug-in for non-security reasons.
        https://bugs.webkit.org/show_bug.cgi?id=145009

        Reviewed by Anders Carlsson.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceYosemite.a:

2015-07-02  Daniel Bates  <dabates@apple.com>

        [iOS] Add WebKitSystemInterface for iOS 8.4
        https://bugs.webkit.org/show_bug.cgi?id=146548

        Rubber-stamped by Zalan Bujtas.

        * WebKitSystemInterfaceIOS.h:
        * libWebKitSystemInterfaceIOSDevice8.4.a: Added.
        * libWebKitSystemInterfaceIOSSimulator8.4.a: Added.

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.

        * win/tools/vsprops/FeatureDefines.props: add ENABLE_INTL flag
        * win/tools/vsprops/FeatureDefinesCairo.props: add ENABLE_INTL flag

2015-06-29  Hyungwook Lee  <hyungwook.lee@navercorp.com>

        [Win] Activate SSE support for 32-bit builds.
        https://bugs.webkit.org/show_bug.cgi?id=144923

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/common.props:

2015-06-26  Per Arne Vollan  <peavo@outlook.com>

        [WinCairo] Enable WEB_TIMING.
        https://bugs.webkit.org/show_bug.cgi?id=146357

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/FeatureDefinesCairo.props:

2015-06-26  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed buildfix after r185971, disable WEB_TIMING.

        * win/tools/vsprops/FeatureDefinesCairo.props:

2015-06-25  Brent Fulgham  <bfulgham@apple.com>

        [WIN] Enable WEB_TIMING API
        https://bugs.webkit.org/show_bug.cgi?id=146330
        <rdar://problem/21530765>

        Reviewed by Dean Jackson.

        Enable WEB_TIMING features on Windows by activating the feature flag,
        and correcting some build errors.

        * win/tools/vsprops/FeatureDefines.props: Enable feature flag.
        * win/tools/vsprops/FeatureDefinesCairo.props: Ditto.

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2015-05-05  daegyu lee  <daegyu.lee@navercorp.com>

        Remove the remaining vestiges of SVG feature define
        https://bugs.webkit.org/show_bug.cgi?id=144655

        Reviewed by Alexey Proskuryakov.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2015-04-29  Per Arne Vollan  <peavo@outlook.com>

        [WinCairo] Turn on WebGL.
        https://bugs.webkit.org/show_bug.cgi?id=144389

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/FeatureDefinesCairo.props:

2015-04-27  Brent Fulgham  <bfulgham@apple.com>

        [Win] Deactivate WebGL until Windows tests work properly
        https://bugs.webkit.org/show_bug.cgi?id=144291
        <rdar://problem/20707307>

        Reviewed by Zalan Bujtas.

        * win/tools/vsprops/FeatureDefines.props: Turn off the WEB_GL
        feature for the Apple Windows port.

2015-04-28  Per Arne Vollan  <peavo@outlook.com>

        [Win] Enable ES6 template literals
        https://bugs.webkit.org/show_bug.cgi?id=144316

        Reviewed by Csaba Osztrogonác.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

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.

        * win/tools/vsprops/FeatureDefines.props: Replace all instances of 3D_RENDERING with 3D_TRANSFORMS.
        * win/tools/vsprops/FeatureDefinesCairo.props: Replace all instances of 3D_RENDERING with 3D_TRANSFORMS.

2015-04-17  Daniel Bates  <dabates@apple.com>

        Not able to build WebKit against iOS Simulator 8.3 SDK
        https://bugs.webkit.org/show_bug.cgi?id=143883

        Reviewed by David Kilzer.

        Add WebKitSystemInterface for iOS 8.3.

        * libWebKitSystemInterfaceIOSDevice8.3.a: Added.
        * libWebKitSystemInterfaceIOSSimulator8.3.a: Added.

2015-04-06  Myles C. Maxfield  <mmaxfield@apple.com>

        [Win] [SVG -> OTF Converter] Turn off on Windows until I can get the tests under control

        Unreviewed.

        * win/tools/vsprops/FeatureDefines.props:

2015-04-06  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 Darin Adler.

        * win/tools/vsprops/FeatureDefines.props: Enable the define.

2015-03-09  Daniel Bates  <dabates@apple.com>

        [iOS] Add WebKitSystemInterface for iOS 8.2
        https://bugs.webkit.org/show_bug.cgi?id=142505

        Reviewed by Andy Estes.

        * libWebKitSystemInterfaceIOSDevice8.2.a: Added.
        * libWebKitSystemInterfaceIOSSimulator8.2.a: Added.

2015-03-06  Csaba Osztrogonác  <ossy@webkit.org>

        Remove Mountain Lion libraries since ML isn't supported
        https://bugs.webkit.org/show_bug.cgi?id=142332

        Reviewed by Darin Adler.

        * LLVMIncludesMountainLion.tar.bz2: Removed.
        * LLVMLibrariesMountainLion.tar.bz2: Removed.

2015-03-03  Brent Fulgham  <bfulgham@apple.com>

        [Win] [Attachment] New Tests fail on Windows
        https://bugs.webkit.org/show_bug.cgi?id=142017

        Unreviewed test fix. Just activate the feature.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2015-02-26  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix after r180676.

        I forgot to checkin one of the more important changes!

        * win/tools/vsprops/common.props:

2015-02-26  Brent Fulgham  <bfulgham@apple.com>

        [Win] Make build logs more legible by reducing noise
        https://bugs.webkit.org/show_bug.cgi?id=142034

        Reviewed by Alexey Proskuryakov.

        Modify batch files, makefiles, and DOS commands to remove
        uninteresting/unhelpful output.

        * win/tools/vsprops/common.props:

2015-02-25  peavo@outlook.com  <peavo@outlook.com>

        [WinCairo] WinLauncher is not starting on Vista.
        https://bugs.webkit.org/show_bug.cgi?id=141905

        Reviewed by Alex Christensen.

        We have to soft link with Media Foundation functions to be able
        to start on Vista and WinXP.

        * win/tools/vsprops/WinCairo.props: Remove Media Foundation input libraries.

2015-02-03  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix. Turn on feature flags for items
        we currently ship/test on Mac.

        * win/tools/vsprops/FeatureDefines.props: Activate ENABLE_DOM4_EVENTS_CONSTRUCTOR
        and CURSOR_VISIBILITY.

2015-01-28  Sam Weinig  <sam@webkit.org>

        Remove libWebKitSystemInterfaceMountainLion.a

        Reviewed by Mark Rowe.

        * libWebKitSystemInterfaceMountainLion.a: Removed.

2015-01-28  peavo@outlook.com  <peavo@outlook.com>

        [WinCairo] Enable CSS_SELECTORS_LEVEL4.
        https://bugs.webkit.org/show_bug.cgi?id=141003

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/FeatureDefinesCairo.props:

2015-01-22  David Kilzer  <ddkilzer@apple.com>

        [iOS] Fix build for external iphoneos SDK

        Reviewed by Daniel Bates.

        * WebKitSystemInterface.h: Remove import of the
        <IOSurface/IOSurface.h> header, and add a typedef for
        IOSurfaceRef in its place.

2015-01-22  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed gardening.

        Activate ENABLE(MOUSE_CURSOR_SCALE). This works on Windows and causes more tests to pass.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2015-01-20  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed gardening.

        * win/tools/vsprops/FeatureDefines.props: Add feature definition for SVG converter,
        but do NOT turn it on.
        * win/tools/vsprops/FeatureDefinesCairo.props: Ditto.

2015-01-19  peavo@outlook.com  <peavo@outlook.com>

        [WinCairo][Video] Windows Media Foundation implementation is not completed.
        https://bugs.webkit.org/show_bug.cgi?id=140337

        Reviewed by Alex Christensen.

        Link with Media Foundation libraries.

        * win/tools/vsprops/WinCairo.props:

2015-01-01  Jeff Miller  <jeffm@apple.com>

        Update user-visible copyright strings to include 2015
        https://bugs.webkit.org/show_bug.cgi?id=139880

        Reviewed by Darin Adler.

        * win/tools/scripts/COPYRIGHT-END-YEAR:

2014-12-19  Daniel Bates  <dabates@apple.com>

        [iOS] Add WebKitSystemInterface for iOS 8.1
        https://bugs.webkit.org/show_bug.cgi?id=139831

        Reviewed by Alexey Proskuryakov.

        Towards building the iOS WebKit port using the public SDK, add the
        WebKitSystemInterface for iOS version 8.1.

        * WebKitSystemInterfaceIOS.h: Added.
        * libWebKitSystemInterfaceIOSDevice8.1.a: Added.
        * libWebKitSystemInterfaceIOSSimulator8.1.a: Added.

2014-12-17  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix (for full build)

        * win/tools/vsprops/FeatureDefines.props: Add missing export so the
        derived sources are generated properly.
        * win/tools/vsprops/FeatureDefinesCairo.props: Ditto.

2014-10-29  Tim Horton  <timothy_horton@apple.com>

        Implement action menus for data detected items
        https://bugs.webkit.org/show_bug.cgi?id=138178
        <rdar://problem/18709436>

        Reviewed by Anders Carlsson.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:
        * libWebKitSystemInterfaceYosemite.a:
        Update WebKitSystemInterface.

2014-10-14  Brent Fulgham  <bfulgham@apple.com>

        [Win] Enable Encrypted Media Support
        https://bugs.webkit.org/show_bug.cgi?id=137710
        <rdar://problem/18652699>

        Reviewed by Jer Noble.

        * win/tools/vsprops/FeatureDefines.props: Activate the
        ENCRYPTED_MEDIA_V2 flag on Windows.

2014-10-01  Mark Rowe  <mrowe@apple.com>

        <https://webkit.org/b/137308> WebKit should build on OS X Yosemite for external users

        Add versions of WebKitSystemInterface and LLVM for Yosemite. The LLVM build is from
        LLVM SVN r206312, matching the Mavericks and Mountain Lion builds.

        Reviewed by Dan Bernstein.

        * LLVMIncludesYosemite.tar.bz2: Added.
        * LLVMLibrariesYosemite.tar.bz2: Added.
        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:
        * libWebKitSystemInterfaceYosemite.a: Added.

2014-09-23  Roger Fong  <roger_fong@apple.com>

        [Windows] Enable CSS Supports Rule on Windows.

        * win/tools/vsprops/FeatureDefines.props:

2014-09-19  Brent Fulgham  <bfulgham@apple.com>

        [Win] Turn off SSE Instructions for 32-bit Builds
        https://bugs.webkit.org/show_bug.cgi?id=136959
        <rdar://problem/18375370>

        Reviewed by Dean Jackson.

        * win/tools/vsprops/common.props: Conditionally exclude the enhanced (SSE) instruction
        set when building for 32-bit Windows. Otherwise, continue using SSE.

2014-09-15  peavo@outlook.com  <peavo@outlook.com>

        [WinCairo] Make it easier to enable/disable GStreamer.
        https://bugs.webkit.org/show_bug.cgi?id=135766

        Reviewed by Brent Fulgham.

        Make it possible to enable/disable GStreamer by editing the new user macro ENABLE_GSTREAMER_WINCAIRO.

        * win/tools/vsprops/GStreamerCommon.props: Add user macro ENABLE_GSTREAMER_WINCAIRO.

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2014-08-27  peavo@outlook.com  <peavo@outlook.com>

        [WinCairo] Link error.
        https://bugs.webkit.org/show_bug.cgi?id=136286

        Reviewed by Darin Adler.

        Link with the dynamic runtime libraries, since the WinCairo libraries link with these.

        * win/tools/vsprops/common.props:

2014-08-26  Brent Fulgham  <bfulgham@apple.com>

        [Win] Version stamp should include package-level version
        https://bugs.webkit.org/show_bug.cgi?id=136266
        <rdar://problem/18134138>

        Reviewed by David Kilzer.

        * win/tools/scripts/auto-version.pl: Retain the full major build
        version in addition to the three-digit value we use internally.
        * win/tools/scripts/version-stamp.pl: Find and use the full 3+ digit
        major build version when stamping the final output file.


2014-08-25  Brent Fulgham  <bfulgham@apple.com>

        [Win] Pass OFFICIAL_BUILD flag to WebInspectorUI build process
        https://bugs.webkit.org/show_bug.cgi?id=136229

        Reviewed by Dean Jackson.

        * win/tools/vsprops/common.props: Pass OFFICIAL_BUILD argument
        from VS to child Make processes.

2014-08-17  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix.

        Upload static VS2013 version of WebKitSystemInterface.

        * win/lib32/WebKitSystemInterface.lib:

2014-08-15  Brent Fulgham  <bfulgham@apple.com>

        [Win] Link to static VS2013 runtime library.
        https://bugs.webkit.org/show_bug.cgi?id=136007
        <rdar://problem/18037766>

        Reviewed by Dean Jackson.

        * win/tools/vsprops/common.props: Update link command.
        * win/tools/vsprops/debugsuffix.props: Ditto.

2014-08-14  Brent Fulgham  <bfulgham@apple.com>

        [Win] Extend auto-version and version-stamp for RC_ProjectBuildVersion
        https://bugs.webkit.org/show_bug.cgi?id=135948
        <rdar://problem/18022221>

        Reviewed by David Kilzer.

        * win/tools/scripts/auto-version.pl:
        (splitVersion): Use RC_ProjectBuildVersion (or RC_PROJECTBUILDVERSION) if set
        in the environment as the 'Build Version', unless the multi-tuple version
        supplied by RC_ProjectSourceVersion already has a fourth component.
        * win/tools/scripts/version-stamp.pl: Check for RC_ProjectBuildVersion and
        use it in preference to RC_PROJECTBUILDVERSION.

2014-08-08  Joseph Pecoraro  <pecoraro@apple.com>

        make clean does not work in OpenSource, fails in WebKitLibraries
        https://bugs.webkit.org/show_bug.cgi?id=135734

        Reviewed by David Kilzer.

        * Makefile:
        Add a "clean" target that runs copy-webkitlibraries-to-product-dir
        with the new --clean switch.

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.

        * win/tools/vsprops/FeatureDefines.props:

2014-07-31  Brent Fulgham  <bfulgham@apple.com>

        [Win] Use RC_PROJECTBUILDVERSION as build portion of version
        https://bugs.webkit.org/show_bug.cgi?id=135478

        Reviewed by David Kilzer.

        * win/tools/scripts/version-stamp.pl: Check environment for
        RC_PROJECTBUILDVERSION, and use it for the build portion of
        the file version resource. Otherwise, use the __VERSION_BUILD__
        value we calculated from the version string.

2014-07-31  Brent Fulgham  <bfulgham@apple.com>

        [Win] Fix build failure when using 5-tuple build versions.
        https://bugs.webkit.org/show_bug.cgi?id=135464
        <rdar://problem/17872507>

        Reviewed by David Kilzer.

        * win/tools/scripts/version-stamp.pl: Modify the environment for
        the VersionStamper sub-process to work around bug in that tool.

2014-07-29  Brent Fulgham  <bfulgham@apple.com>

        [Win] Modify version numbering scheme to support 5-tuple versions
        https://bugs.webkit.org/show_bug.cgi?id=135400
        <rdar://problem/17849033>

        Reviewed by David Kilzer.

        Revise the auto-version.pl script so that it generates a set of packed
        version tuples that allow us to map 5-tuple versions into something
        that will work with Windows' 3-tuple version structure.

        * win/tools/scripts/auto-version.pl:
        (packTwoValues): Added,
        (splitVersion): Revised to return packed combination of minor-tiny and
        micro-nano to be used as "MINOR" and "TINY" portion of version.
        (splitBuildMajorVersion): Deleted.
        * win/tools/scripts/version-stamp.pl: Added.

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2014-07-22  Brent Fulgham  <bfulgham@apple.com>

        Correct handling of __VERSION_TEXT__ for 4+-tuple versions
        https://bugs.webkit.org/show_bug.cgi?id=135161
        <rdar://problem/17763546>

        Reviewed by David Kilzer.

        Revise the auto-version.pl script to properly handle version
        strings with 4 (or more) version tuples. Previously these were
        being truncated from the version.

        * win/tools/scripts/auto-version.pl:
        (splitVersion): Return truncated version of
        overall version string.

2014-07-21  Brent Fulgham  <bfulgham@apple.com>

        [Win] Extend auto-version.pl to handle 5-tuple versions
        https://bugs.webkit.org/show_bug.cgi?id=135124
        <rdar://problem/17750334>

        Reviewed by David Kilzer.

        Extend tuple parsing to handle up to five tuples, and as
        few as a single tuple. On Windows, the two additional
        tuples are unused.

        Also corrected regular expression capture logic to use local
        blocks, preventing later capture expressions from reusing
        previous capture results when the current expression failed
        to find a match (GRRR, Perl!).

        Clean up code by putting logic into a couple of subroutines.

        * win/tools/scripts/auto-version.pl:

2014-07-21  Brent Fulgham  <bfulgham@apple.com>

        [Win] Correct auto-version.pl script for two-digit version numbers
        https://bugs.webkit.org/show_bug.cgi?id=135119
        <rdar://problem/17743959>

        Reviewed by David Kilzer.

        The $MAJOR_VERSION must be the first digit of $BUILD_MAJOR_VERSION,
        and $MINOR_VERSION must be the remaining digits.

        Also correct regexp (line 90) that was allowing version numbers
        larger than three digits to be processed.

        * win/tools/scripts/auto-version.pl: Correct regular expression.

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-10  Alex Christensen  <achristensen@webkit.org>

        Enable same features on all Windows ports.
        https://bugs.webkit.org/show_bug.cgi?id=134715

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/FeatureDefinesCairo.props:
        Made identical to FeatureDefines.props.

2014-07-09  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix.

        Build bots don't have a three-part default version string,
        breaking pattern matching. Handle this case.

        * win/tools/scripts/auto-version.pl:

2014-07-09  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed gardening.

        * win/tools/scripts/auto-version.pl: Protect against
        malformed paths (trailing backslashes).
        * win/tools/scripts/feature-defines.pl: Make sure result
        has an EOL character.

2014-07-09  Brent Fulgham  <bfulgham@apple.com>

        [Win] Remove uses of 'bash' in build system
        https://bugs.webkit.org/show_bug.cgi?id=134782
        <rdar://problem/17615533>

        Reviewed by Dean Jackson.

        Remove uses of 'bash' by replacing Windows-specific bash scripts
        with Perl equivalents.

        * win/tools/scripts/feature-defines.pl: Copied from WebKitLibraries/win/tools/scripts/feature-defines.sh.
        * win/tools/scripts/feature-defines.sh: Removed.

2014-07-08  Brent Fulgham  <bfulgham@apple.com>

        [Win] Implement auto-version as a Perl program
        https://bugs.webkit.org/show_bug.cgi?id=134745
        <rdar://problem/17597801>

        Reviewed by David Kilzer.

        Translate the auto-version.sh bash script into an equivalent
        Perl script.

        * win/tools/scripts/auto-version.pl: Added.
        * win/tools/scripts/auto-version.sh: Removed.

2014-07-06  Yoav Weiss  <yoav@yoav.ws>

        Turn on img@sizes compile flag
        https://bugs.webkit.org/show_bug.cgi?id=134634

        Reviewed by Benjamin Poulain.

        * win/tools/vsprops/FeatureDefines.props: Added compile flag.

2014-07-01  Pratik Solanki  <psolanki@apple.com>

        Encode/decode CFURLRequestRefs when USE(CFNETWORK) is enabled
        https://bugs.webkit.org/show_bug.cgi?id=134454
        <rdar://problem/17510980>

        Reviewed by Andreas Kling.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2014-06-11  Jer Noble  <jer.noble@apple.com>

        Update WKSI for <rdar://problem/17009091>.

        Rubber stamped by Eric Carlson.

        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-06-02  David Kilzer  <ddkilzer@apple.com>

        Error running copy-webkitlibraries-to-product-directory
        <http://webkit.org/b/133449>
        <rdar://problem/17047638>

        Reviewed by Filip Pizlo.

        * Makefile: Ignore the mysterious future.  Use "@true" to
        suppress the annoying "Nothing to be done for `libs'." message.

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2014-05-20  Dean Jackson  <dino@apple.com>

        [Mac] Allow popup menus to override default appearance
        https://bugs.webkit.org/show_bug.cgi?id=133129

        Reviewed by Tim Horton.

        Add a new parameter to WKPopupMenu.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

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: Added.
        (libs): Install both LLVM and WKSI static libraries.
        (all): Add dependency on 'libs' target.
        (debug d): Set configuration, the call 'libs' target.
        (release r): Ditto.

2014-05-05  Dean Jackson  <dino@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=132593

        Update WebKitSystemInterface to allow animated focus rings.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-05-05  Brent Fulgham  <bfulgham@apple.com>

        [WIN] Enhance auto-version.sh to handle all-caps or mixed-case build environment variable
        https://bugs.webkit.org/show_bug.cgi?id=132580
        <rdar://problem/16811179>

        Reviewed by Dean Jackson.

        * win/tools/scripts/auto-version.sh: Incorporate Mark's revised syntax.

2014-05-05  Brent Fulgham  <bfulgham@apple.com>

        [WIN] Enhance auto-version.sh to handle all-caps or mixed-case build environment variable
        https://bugs.webkit.org/show_bug.cgi?id=132580
        <rdar://problem/16811179>

        Reviewed by Dean Jackson.

        * win/tools/scripts/auto-version.sh: Fall back to all-caps version
        of environment variable if mixed-case version is not present.

2014-05-01  Brent Fulgham  <bfulgham@apple.com>

        Correct case of environment variables in auto-version.sh scripts
        https://bugs.webkit.org/show_bug.cgi?id=132455

        Reviewed by Dean Jackson.

        Although we have historically used RC_PROJECTSOURCEVERSION in our scripts,
        the actual environment variable is RC_ProjectSourceVersion. Old versions of
        Cygwin converted this to all-caps by default, but this is no longer the case.
        We need to use the proper case to avoid build failures.

        * win/tools/scripts/auto-version.sh: Although we have historically coded
        this as 'RC_PROJECTSOURCEVERSION', it is actually 'RC_ProjectSourceVersion'.

2014-04-25  Dean Jackson  <dino@apple.com>

        Update WKSI for https://webkit.org/b/132195
        <rdar://problem/16175750>

        Sorry, I forgot to update the header. This should fix
        the Mac builds.

        * WebKitSystemInterface.h:

2014-04-25  Dean Jackson  <dino@apple.com>

        Update WKSI for https://webkit.org/b/132195
        <rdar://problem/16175750>

        Reviewed by Jessie Berlin.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

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.

        * win/tools/vsprops/WinCairo.props:
        Removed references to os-win32 directory.

2014-04-15  Filip Pizlo  <fpizlo@apple.com>

        Update LLVM binary drops for Mountain Lion to LLVM r206312.

        Rubber stamped by Geoffrey Garen.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2014-04-15  Filip Pizlo  <fpizlo@apple.com>

        Add LLVM binary drops for Mavericks using LLVM r206312.

        Rubber stamped by Geoffrey Garen.

        * LLVMIncludesMavericks.tar.bz2: Added.
        * LLVMLibrariesMavericks.tar.bz2: Added.

2014-04-03  Brent Fulgham  <bfulgham@apple.com>

        [Win] Enable the CSS_GRID_LAYOUT feature.
        https://bugs.webkit.org/show_bug.cgi?id=131147

        Reviewed by Simon Fraser.

        Just like the CANVAS_PATH feature, this seems to have been
        overlooked when it was turned on for other ports.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2014-04-02  Dean Jackson  <dino@apple.com>

        Update WKSI.
        <rdar://problem/16321286>

        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-04-02  Brent Fulgham  <bfulgham@apple.com>

        [Win] Enable the CANVAS_PATH feature.
        https://bugs.webkit.org/show_bug.cgi?id=131114

        Reviewed by Dean Jackson.

        This code build and runs on Windows just fine. It was overlooked when the feature
        was activated on other platforms.

        * win/tools/vsprops/FeatureDefines.props: Turn on the feature.
        * win/tools/vsprops/FeatureDefinesCairo.props: Ditto.

2014-03-31  Alex Christensen  <achristensen@webkit.org>

        [WinCairo] Unreviewed build fix after r166496.

        * win/tools/vsprops/GStreamerCommon.props:
        Added gio-2.0.lib to list of GStreamer includes.

2014-03-24  Brent Fulgham  <bfulgham@apple.com>

        [Win] Enable WebVTT Regions on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=130680

        Reviewed by Eric Carlson.

        * win/tools/vsprops/FeatureDefines.props: Turn on WEBVTT_REGIONS
        * win/tools/vsprops/FeatureDefinesCairo.props: Ditto.

2014-03-19  Jer Noble  <jer.noble@apple.com>

        [Mac][EME] Query whether decoder support exists before creating a new MediaKeys object.
        https://bugs.webkit.org/show_bug.cgi?id=130459

        Reviewed by Eric Carlson.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-03-18  Alex Christensen  <achristensen@webkit.org>

        [WinCairo] Unreviewed build fix after r165763.

        * win/tools/vsprops/GStreamerCommon.props:
        Link to gsttag-1.0.lib in addition to other GStreamer libraries.

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.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/tools/scripts/auto-version.sh:

2014-03-14  Dean Jackson  <dino@apple.com>

        Remove libWebKitSystemInterfaceLion.a
        https://bugs.webkit.org/show_bug.cgi?id=130254

        Reviewed by Geoffrey Garen and Andreas Kling.

        We don't support Lion any more.

        * libWebKitSystemInterfaceLion.a: Removed.

2014-03-13  Dean Jackson  <dino@apple.com>

        <rdar://problem/16317198>

        Update WKSI to fix a small leak on iOS.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-03-12  Dean Jackson  <dino@apple.com>

        [WebGL] WebKit1 + WebKit2 iOS clients should check load policy
        https://bugs.webkit.org/show_bug.cgi?id=130162

        Add iOS implementations of WebGL load policy queries.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-03-10  Brent Fulgham  <bfulgham@apple.com>

        [Win] Pass environment to Pre-Build, Pre-Link, and Post-Build Stages.
        https://bugs.webkit.org/show_bug.cgi?id=130023

        Reviewed by Dean Jackson.

        * win/tools/vsprops/common.props: Pass WEBKIT_LIBRARIES value to subprocesses.
        * win/tools/vsprops/debugsuffix.props: Make sure OFFICIAL_BUILD is set.
        * win/tools/vsprops/production.props: Ditto.

2014-03-06  Dean Jackson  <dino@apple.com>

        Update WebKitSystemInterface.
        <rdar://problem/16256214>

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-03-05  Dean Jackson  <dino@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=129722
        Update WKSI, again, to fix the build.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-03-05  Dean Jackson  <dino@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=129722

        And remember to copy the header file!

        * WebKitSystemInterface.h:

2014-03-05  Dean Jackson  <dino@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=129722
        Update WKSI.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-03-05  Eric Carlson  <eric.carlson@apple.com>

        [iOS] Show external device name/type in placeholder
        https://bugs.webkit.org/show_bug.cgi?id=129723

        Reviewed by Jer Noble.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-02-21  Jeffrey Pfau  <jpfau@apple.com>

        [Mac] Cache callbacks for cache partitioning may be passed null
        https://bugs.webkit.org/show_bug.cgi?id=129175

        Reviewed by Brady Eidson.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-02-11  Roger Fong  <roger_fong@apple.com>

        [Windows] Set ENABLE_CSS_SHAPE_INSIDE feature flag on Windows.

        * win/tools/vsprops/FeatureDefines.props:

2014-02-04  Andreas Kling  <akling@apple.com>

        Remove <iframe seamless> support.
        <https://webkit.org/b/128213>

        Rubber-stamped by Antti Koivisto.

        * win/tools/vsprops/FeatureDefines.props:

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2014-01-23  Roger Fong  <roger_fong@apple.com>

        [Windows] Unreviewed. Disable unnecessary warning C4309, "truncation of constant value".

        * win/tools/vsprops/common.props:

2014-01-16  Alexey Proskuryakov  <ap@apple.com>

        [Mac] [iOS] Add support for CFHTTPCookieStorageAcceptPolicyExclusivelyFromMainDocumentDomain
        https://bugs.webkit.org/show_bug.cgi?id=127139

        Reviewed by Brady Eidson.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:
        Update WebKitSystemInterface.

2014-01-16  Zalan Bujtas  <zalan@apple.com>

        Subpixel layout: Enable subpixel layout for Apple Windows.
        https://bugs.webkit.org/show_bug.cgi?id=127074

        Reviewed by Antti Koivisto.

        This should make the Apple Windows bots happier. It probably still needs rebaselining.

        * win/tools/vsprops/FeatureDefines.props:

2014-01-11  Alexey Proskuryakov  <ap@apple.com>

        [Mac] [Windows] Stop scheduling network requests in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=126789
        <rdar://problem/15114727>

        Update Windows WKSI.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib32/WebKitSystemInterface.lib:

2014-01-11  Alexey Proskuryakov  <ap@apple.com>

        [Mac] [Windows] Stop scheduling network requests in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=126789
        <rdar://problem/15114727>

        Update WKSI.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMavericks.a:
        * libWebKitSystemInterfaceMountainLion.a:

2014-01-10  peavo@outlook.com  <peavo@outlook.com>

        [WinCairo] Crash when rendering (in pixman dll)
        https://bugs.webkit.org/show_bug.cgi?id=126750

        Reviewed by Brent Fulgham.

        Since we link with cairo.lib, and the gstreamer installation also comes with cairo.lib,
        we link with the wrong cairo.lib, and loads gstreamers cairo dll, instead of our own.
        We should user our own cairo dll for rendering.

        * win/tools/vsprops/GStreamer32.props: Put gstreamer lib path last, so we link with the correct cairo.lib.
        * win/tools/vsprops/GStreamer64.props: Ditto.

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

        [WinCairo] Enable video using GStreamer.
        https://bugs.webkit.org/show_bug.cgi?id=126015

        Reviewed by Darin Adler.

        * win/tools/vsprops/FeatureDefinesCairo.props:
        Define ENABLE_MEDIA_CONTROLS_SCRIPT, ENABLE_VIDEO_TRACK, and ENABLE_VIDEO.

2013-12-30  Roger Fong  <roger_fong@apple.com>

        [Windows] Disable some annoying build warnings.

        * win/tools/vsprops/common.props:

2013-12-23  Lucas Forschler  <lforschler@apple.com>

        <rdar://problem/15682948> Update copyright strings

        Reviewed by Dan Bernstein.

        * win/tools/scripts/COPYRIGHT-END-YEAR:

2013-12-19  Alex Christensen  <achristensen@webkit.org>

        Final preparations for GStreamer on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=125958

        Reviewed by Benjamin Poulain.

        * win/tools/vsprops/FeatureDefinesCairo.props:
        Removed duplicate ENABLE_VIDEO_TRACK definition.

2013-12-18  Alex Christensen  <achristensen@webkit.org>

        [WinCairo] Unreviewed build fix after r160798.

        * win/tools/vsprops/FeatureDefinesCairo.props:
        Removed ENABLE_MEDIA_CONTROLS_SCRIPT definition for now.

2013-12-18  Alex Christensen  <achristensen@webkit.org>

        [WinCairo] Preparation for GStreamer on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=125946

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/FeatureDefinesCairo.props:
        Added ENABLE_MEDIA_CONTROLS_SCRIPT and ENABLE_VIDEO_TRACK for DerivedSources.make.
        * win/tools/vsprops/GStreamer32.props: Added.
        * win/tools/vsprops/GStreamer64.props: Added.
        * win/tools/vsprops/GStreamerCommon.props: Added.

2013-12-13  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix for VS2013

        * win/lib32/WebKitSystemInterface.lib: Updated to use VS2013 _MSC_VER symbols
        for linking.

2013-12-09  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, update LLVM binary drops to r196830.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-12-05  Bear Travis  <betravis@adobe.com>

        [CSS Shapes] Enable CSS Shapes on Windows
        https://bugs.webkit.org/show_bug.cgi?id=89957

        Reviewed by Brent Fulgham.

        Turn on CSS_SHAPES on Windows now that bug 121883 has been fixed.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2013-11-26  Ryosuke Niwa  <rniwa@webkit.org>

        Enable HTML template element on Windows ports
        https://bugs.webkit.org/show_bug.cgi?id=124758

        Reviewed by Andreas Kling.

        Enable TEMPLATE_ELEMENT. Also removed UNDO_MANAGER since that feature has been removed
        from the tree in r133326.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2013-11-17  Filip Pizlo  <fpizlo@apple.com>

        Update binary drops to include atrick's "Ran out of registers" fix in r194942.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-11-08  Filip Pizlo  <fpizlo@apple.com>

        Update binary drops to a version that includes new stackmap fixes and exposes the new calling conventions.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-11-03  Filip Pizlo  <fpizlo@apple.com>

        Update binary drops to a version that includes my pretty stack trace changes.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-11-02  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, update binary drops.
        
        These include my LLVMDisablePrettyStackTrace() fix and are built with --enable-crash-overrides=no

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-10-21  Mark Rowe  <mrowe@apple.com>

        Add a version of WebKitSystemInterface for Mavericks.

        Reviewed by Ryosuke Niwa.

        * libWebKitSystemInterfaceMavericks.a: Added.

2013-10-17  Anthony Johnson  <anthony.johnson@flexsim.com>

        Crash fix for Windows XP.
        https://bugs.webkit.org/show_bug.cgi?id=122790

        Reviewed by Geoffrey Garen.

        * win/tools/vsprops/common.props:
        Replaced stack and heap sizes of zero with blank stack and heap sizes.

2013-10-16  Filip Pizlo  <fpizlo@apple.com>

        libllvmForJSC shouldn't call exit(1) on report_fatal_error()
        https://bugs.webkit.org/show_bug.cgi?id=122905
        <rdar://problem/15237856>

        Reviewed by Michael Saboff.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-10-10  Filip Pizlo  <fpizlo@apple.com>

        Update the binary drops to the latest version of LLVM, built without -fvisibility=hidden
        now that we have soft linking. Also include DataTypes.h in the drop.

        Rubber stamped by Michael Saboff.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-10-01  Filip Pizlo  <fpizlo@apple.com>

        FTL should use the new version of LLVM MCJIT memory manager APIs that take a SectionName
        https://bugs.webkit.org/show_bug.cgi?id=122193

        Reviewed by Geoffrey Garen.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-10-01  Brent Fulgham  <bfulgham@apple.com>

        [Win] Implement the media controls in JavaScript.
        https://bugs.webkit.org/show_bug.cgi?id=122166

        Reviewed by Jer Noble.

        * win/tools/vsprops/FeatureDefines.props: Activate the
        ENABLE_MEDIA_CONTROLS_SCRIPT flag.

2013-09-24  Bear Travis  <betravis@adobe.com>

        Disable CSS_SHAPES on Windows
        https://bugs.webkit.org/show_bug.cgi?id=121879

        Reviewed by Brent Fulgham.

        Enabling CSS_SHAPES on Windows is currently causing crashes in DRT.
        Turn the feature off until it can be appropriately fixed.

        * win/tools/vsprops/FeatureDefines.props: Disable on Win port
        * win/tools/vsprops/FeatureDefinesCairo.props: Disable on WinCairo port

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

        use NOMINMAX instead of #define min min
        https://bugs.webkit.org/show_bug.cgi?id=73563

        Reviewed by Brent Fulgham.

        Use NOMINMAX instead of #define min/max as a cleaner
        way of ensuring that Windows system header files don't
        define min/max as macro in the first place.

        * win/tools/vsprops/common.props:

2013-09-20  Mark Rowe  <mrowe@apple.com>

        Fix link errors for external users when building WebKit with Xcode 5.

        Reviewed by Oliver Hunt.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-09-19  Bear Travis  <betravis@adobe.com>

        CSS_SHAPES not supported on AppleWin port
        https://bugs.webkit.org/show_bug.cgi?id=118810

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/FeatureDefines.props: Add the CSS_SHAPES compile flag on Windows.

2013-09-19  Dan Bernstein  <mitz@apple.com>

        Removed WebCoreSQLite3. It has been unused for years.

        Rubber-stamped by Mark Rowe.

        * WebCoreSQLite3: Removed.
        * WebCoreSQLite3/sqlite3.h: Removed.
        * WebCoreSQLite3/sqlite3ext.h: Removed.
        * libWebCoreSQLite3.a: Removed.

2013-09-18  Brent Fulgham  <bfulgham@apple.com>

        [Windows] Unreviewed build fix: Expose PlatformArchitecture macro to build system.

        * win/tools/vsprops/common.props:

2013-09-13  Brent Fulgham  <bfulgham@apple.com>

        [Windows] Enable Page Visibility API
        https://bugs.webkit.org/show_bug.cgi?id=121340

        Reviewed by Anders Carlsson.

        * win/tools/vsprops/FeatureDefines.props: Activate feature.
        * win/tools/vsprops/FeatureDefinesCairo.props: Ditto.

2013-09-12  Brent Fulgham  <bfulgham@apple.com>

        [Windows] Update WKSI library for Open Source builders.

        * win/lib32/WebKitSystemInterface.lib: Recompile with latest WebKit to use newer
        WTF.dll symbol exports.

2013-08-29  Filip Pizlo  <fpizlo@apple.com>

        Just linking LLVM into JSC causes all plugin tests to fail
        https://bugs.webkit.org/show_bug.cgi?id=113915

        Reviewed by Oliver Hunt.
        
        Updated the binary drops to r189627 of llvm.org, and used the new configure-llvm that does CPPFLAGS=-fvisibility=hidden.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-08-29  Brent Fulgham  <bfulgham@apple.com>

        [Windows] Unreviewed build fix after r154847.

        * win/tools/vsprops/FeatureDefines.props: Add missing definition for ENABLE_PROMISES
        * win/tools/vsprops/FeatureDefinesCairo.props: Ditto

2013-08-26  Brent Fulgham  <bfulgham@apple.com>

        [Windows] Updates to WKSI to get external builders working.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib32/WebKitSystemInterface.lib:

2013-08-24  Brent Fulgham  <bfulgham@apple.com>

        [Windows] Another attempt to fix the Windows bots. Need to retain older
        QuickTime player features for external builders.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib32/WebKitSystemInterface.lib:

2013-08-23  Brent Fulgham  <bfulgham@apple.com>

        [Windows] Forgot to check in the header as well!

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:

2013-08-23  Brent Fulgham  <bfulgham@apple.com>

        [Windows] Unreviewed build correction.

        * win/lib32/WebKitSystemInterface.lib: Update with new API for r132545.

2013-08-23  Beth Dakin  <bdakin@apple.com>

        REGRESSION (r132545): Some PDFs generated by WebKit are blank when viewed in 
        Adobe Reader
        https://bugs.webkit.org/show_bug.cgi?id=120240
        -and corresponding-
        <rdar://problem/14634453>

        Reviewed by Anders Carlsson.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-08-23  Alex Christensen  <achristensen@apple.com>

        Re-separating Win32 and Win64 builds.
        https://bugs.webkit.org/show_bug.cgi?id=120178

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/common.props:
        Export PlatformArchitecture to be used by make and cmd scripts.
        Use PlatformArchitecture to determine correct build directory
        (lib32/bin32/obj32 or lib64/bin64/obj64).

2013-08-22  Filip Pizlo  <fpizlo@apple.com>

        Update LLVM binary drops and scripts to the latest version from SVN
        https://bugs.webkit.org/show_bug.cgi?id=120184

        Reviewed by Mark Hahnenberg.

        Updated binary drops to r189066.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-08-21  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r154416.
        http://trac.webkit.org/changeset/154416
        https://bugs.webkit.org/show_bug.cgi?id=120147

        Broke Windows builds (Requested by rniwa on #webkit).

        * win/tools/vsprops/common.props:

2013-08-21  Alex Christensen  <achristensen@apple.com>

        <https://webkit.org/b/120137> Separating Win32 and Win64 builds.

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/common.props:
        Export PlatformArchitecture to be used by make and cmd scripts.
        Use PlatformArchitecture to determine correct build directory
        (lib32/bin32/obj32 or lib64/bin64/obj64).

2013-08-21  Brent Fulgham  <bfulgham@apple.com>

        <https://webkit.org/b/120113> [Windows] Enable CSS_IMAGE_SET

        Reviewed by Anders Carlsson.

        * win/tools/vsprops/FeatureDefines.props: Enable CSS_IMAGE_SET feature.
        * win/tools/vsprops/FeatureDefinesCairo.props: Ditto.

2013-08-15  Eric Carlson  <eric.carlson@apple.com>

        [Mac] Remove "legacy" media UI
        https://bugs.webkit.org/show_bug.cgi?id=119752

        Reviewed by Jer Noble.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-08-13  Simon Fraser  <simon.fraser@apple.com>

        Various media tests spew "CGContextScaleCTM: invalid context 0x0" errors
        https://bugs.webkit.org/show_bug.cgi?id=119490

        New versions of WKSI that fix a bug that caused spew about null CGContexts,
        and update WebKitSystemInterface.h.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-08-08  Alex Christensen  <achristensen@apple.com>

        Windows build fixes.

        Rubberstamped by Brent Fulgham.

        * win/tools/vsprops/debug_wincairo.props: Removed MinimalRebuild option preventing parallel compiling.

2013-07-30  Sanghyun Park  <sh919.park@samsung.com>

        Missing the rename REGISTER_PROCOTOL_HANDLER Macro to NAVIGATOR_CONTENT_UTILS in WebKitLibraries.
        https://bugs.webkit.org/show_bug.cgi?id=119239

        According to "https://bugs.webkit.org/show_bug.cgi?id=94920", REGISTER_PROCOTOL_HANDLER macro was changed to NAVIGATOR_CONTENT_UTILS.
        But, FeatureDefines.props and FeatureDefinesCairo.props was not changed.

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefinesCairo.props:

2013-05-22  Filip Pizlo  <fpizlo@apple.com>

        Updated LLVM drops to include MCJIT memory management APIs.

        Rubber stamped by Mark Hahnenberg.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-04-30  Filip Pizlo  <fpizlo@apple.com>

        Updated LLVM drops to include MCJIT fixes and newly exposed API.

        Rubber stamped by Mark Hahnenberg.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-04-16  Filip Pizlo  <fpizlo@apple.com>

        Updated LLVM drops to include MCJIT fixes.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-04-03  Filip Pizlo  <fpizlo@apple.com>

        Updated LLVM drops to include LLVM_DO_NOT_INCLUDE_CPP_HEADERS changes.

        Rubber stamped by Mark Hahnenberg.

        * LLVMIncludesMountainLion.tar.bz2:
        * LLVMLibrariesMountainLion.tar.bz2:

2013-03-29  Filip Pizlo  <fpizlo@apple.com>

        fourthTier: Check in a known-good build of LLVM into WebKitLibraries, and have a story for updating it
        https://bugs.webkit.org/show_bug.cgi?id=113452

        Rubber stamped by Mark Hahnenberg.

        * LLVMIncludesMountainLion.tar.bz2: Added.
        * LLVMLibrariesMountainLion.tar.bz2: Added.

2013-07-18  Roger Fong  <roger_fong@apple.com>

        Make sure to link against _debug binaries when appropriate.
        <rdar://problem/14473010>.

        * win/tools/vsprops/debugsuffix.props:

2013-07-02  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r152233.
        http://trac.webkit.org/changeset/152233
        https://bugs.webkit.org/show_bug.cgi?id=118304

        hopeful attempt to restore windows buildage (Requested by
        kling on #webkit).

        * win/tools/vsprops/debugsuffix.props:

2013-07-01  Brent Fulgham  <bfulgham@apple.com>

        [Windows] Unreviewed correction to DEBUG_ALL target.  Target was undefining DEBUG_ALL and DEBUG_INTERNAL,
        which prevented proper build operation.

        * win/tools/vsprops/debugsuffix.props: We should DEFINE (not UNDEFINE) the DEBUG_ALL and DEBUG_INTERNAL
        macros when building with 'debugsuffix' target.

2013-06-18  Roger Fong  <roger_fong@apple.com>

        Replace tools32 folder with tools and update WebKit Windows solution accordingly.
        <rdar://problem/14118143>.

        Rubberstamped by Brent Fulgham.

        * win/tools: Copied from win/tools32.
        * win/tools/WinTools.make:
        * win/tools/scripts/auto-version.sh:
        * win/tools/scripts/feature-defines.sh:
        * win/tools32: Removed.
        * win/tools32/WinTools.make: Removed.
        * win/tools32/scripts: Removed.
        * win/tools32/scripts/COPYRIGHT-END-YEAR: Removed.
        * win/tools32/scripts/VERSION: Removed.
        * win/tools32/scripts/auto-version.sh: Removed.
        * win/tools32/scripts/feature-defines.sh: Removed.
        * win/tools32/vsprops: Removed.
        * win/tools32/vsprops/FeatureDefines.props: Removed.
        * win/tools32/vsprops/FeatureDefines.vsprops: Removed.
        * win/tools32/vsprops/FeatureDefinesCairo.props: Removed.
        * win/tools32/vsprops/FeatureDefinesCairo.vsprops: Removed.
        * win/tools32/vsprops/WinCairo.props: Removed.
        * win/tools32/vsprops/WinCairo.vsprops: Removed.
        * win/tools32/vsprops/cURL.props: Removed.
        * win/tools32/vsprops/cURL.vsprops: Removed.
        * win/tools32/vsprops/common.props: Removed.
        * win/tools32/vsprops/common.vsprops: Removed.
        * win/tools32/vsprops/debug.props: Removed.
        * win/tools32/vsprops/debug.vsprops: Removed.
        * win/tools32/vsprops/debug_all.vsprops: Removed.
        * win/tools32/vsprops/debug_wincairo.props: Removed.
        * win/tools32/vsprops/debug_wincairo.vsprops: Removed.
        * win/tools32/vsprops/debugsuffix.props: Removed.
        * win/tools32/vsprops/production.props: Removed.
        * win/tools32/vsprops/production.vsprops: Removed.
        * win/tools32/vsprops/release.props: Removed.
        * win/tools32/vsprops/release.vsprops: Removed.
        * win/tools32/vsprops/releaseproduction.vsprops: Removed.

2013-06-12  Brent Fulgham  <bfulgham@webkit.org>

        [WinCairo] Unreviewed build correction.

        * win/tools32/vsprops/WinCairo.props: Switch from using the
          $WebKitLibraries environment variable to the newer
          $WebKit_Libraries.
        * win/tools32/vsprops/debug_wincairo.props: Ditto.

2013-06-11  Roger Fong  <roger_fong@apple.com>

        Unreviewed. Another part of rollout of r151408.

        * win/tools64: Removed.
        * win/tools64/scripts: Removed.
        * win/tools64/vsprops: Removed.

2013-06-11  Roger Fong  <roger_fong@apple.com>

        Unreviewed. WinTools makefile fix.

        * win/tools32/WinTools.make:

2013-06-11  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r151408.
        http://trac.webkit.org/changeset/151408
        https://bugs.webkit.org/show_bug.cgi?id=117519

        Opting for a different approach (Requested by rfong on
        #webkit).

        * win/WinTools.make: Removed.
        * win/tools32/WinTools.make: Renamed from WebKitLibraries/win/tools64/WinTools.make.
        * win/tools64/scripts/COPYRIGHT-END-YEAR: Removed.
        * win/tools64/scripts/VERSION: Removed.
        * win/tools64/scripts/auto-version.sh: Removed.
        * win/tools64/scripts/feature-defines.sh: Removed.
        * win/tools64/vsprops/FeatureDefines.props: Removed.
        * win/tools64/vsprops/FeatureDefines.vsprops: Removed.
        * win/tools64/vsprops/FeatureDefinesCairo.props: Removed.
        * win/tools64/vsprops/FeatureDefinesCairo.vsprops: Removed.
        * win/tools64/vsprops/WinCairo.props: Removed.
        * win/tools64/vsprops/WinCairo.vsprops: Removed.
        * win/tools64/vsprops/cURL.props: Removed.
        * win/tools64/vsprops/cURL.vsprops: Removed.
        * win/tools64/vsprops/common.props: Removed.
        * win/tools64/vsprops/common.vsprops: Removed.
        * win/tools64/vsprops/debug.props: Removed.
        * win/tools64/vsprops/debug.vsprops: Removed.
        * win/tools64/vsprops/debug_all.vsprops: Removed.
        * win/tools64/vsprops/debug_wincairo.props: Removed.
        * win/tools64/vsprops/debug_wincairo.vsprops: Removed.
        * win/tools64/vsprops/debugsuffix.props: Removed.
        * win/tools64/vsprops/production.props: Removed.
        * win/tools64/vsprops/production.vsprops: Removed.
        * win/tools64/vsprops/release.props: Removed.
        * win/tools64/vsprops/release.vsprops: Removed.
        * win/tools64/vsprops/releaseproduction.vsprops: Removed.

2013-06-10  Roger Fong  <roger_fong@apple.com>

        Change WebKitLibraries/win folder structure around.
        <rdar://problem/14097829>

        Reviewed by Lucas Forschler.

        * win/WinTools.make: Copied from win/tools32/WinTools.make.
        * win/tools32/WinTools.make: Removed.
        * win/tools64: Copied from win/tools32.

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.

        * win/tools32/vsprops/FeatureDefines.vsprops:
        * win/tools32/vsprops/FeatureDefinesCairo.vsprops:

2013-06-03  Roger Fong  <roger_fong@apple.com>

        Unreviewed. Some AppleWin VS2010 house cleaning.

        * win/tools32/scripts/auto-version.sh: Replaced with win/tools32/scripts/auto-version2010.sh.
        * win/tools32/scripts/auto-version2010.sh: Removed.
        * win/tools32/scripts/feature-defines.sh: Replaced with win/tools32/scripts/feature-defines2010.sh.
        * win/tools32/scripts/feature-defines2010.sh: Removed.

2013-06-03  Roger Fong  <roger_fong@apple.com>

        Nuke VS2005 files from the tree.
        <rdar://problem/14042021>.

        Rubberstamped by Brent Fulgham.

        * win/lib: Removed.
        * win/lib/WebKitSystemInterface.lib: Removed.
        * win/tools: Removed.
        * win/tools/WinTools.make: Removed.
        * win/tools/scripts: Removed.
        * win/tools/scripts/COPYRIGHT-END-YEAR: Removed.
        * win/tools/scripts/VERSION: Removed.
        * win/tools/scripts/auto-version.sh: Removed.
        * win/tools/scripts/auto-version2010.sh: Removed.
        * win/tools/scripts/feature-defines.sh: Removed.
        * win/tools/scripts/feature-defines2010.sh: Removed.
        * win/tools/vsprops: Removed.
        * win/tools/vsprops/FeatureDefines.props: Removed.
        * win/tools/vsprops/FeatureDefines.vsprops: Removed.
        * win/tools/vsprops/FeatureDefinesCairo.props: Removed.
        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Removed.
        * win/tools/vsprops/WinCairo.props: Removed.
        * win/tools/vsprops/WinCairo.vsprops: Removed.
        * win/tools/vsprops/cURL.props: Removed.
        * win/tools/vsprops/cURL.vsprops: Removed.
        * win/tools/vsprops/common.props: Removed.
        * win/tools/vsprops/common.vsprops: Removed.
        * win/tools/vsprops/debug.props: Removed.
        * win/tools/vsprops/debug.vsprops: Removed.
        * win/tools/vsprops/debug_all.vsprops: Removed.
        * win/tools/vsprops/debug_wincairo.props: Removed.
        * win/tools/vsprops/debug_wincairo.vsprops: Removed.
        * win/tools/vsprops/debugsuffix.props: Removed.
        * win/tools/vsprops/production.props: Removed.
        * win/tools/vsprops/production.vsprops: Removed.
        * win/tools/vsprops/release.props: Removed.
        * win/tools/vsprops/release.vsprops: Removed.
        * win/tools/vsprops/releaseproduction.vsprops: Removed.

2013-05-29  Jeffrey Pfau  <jpfau@apple.com>

        [Mac] Enable cache partitioning and the public suffix list on 10.8
        <rdar://problem/13679019>

        Rubber-stamped by David Kilzer.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-05-14  Beth Dakin  <bdakin@apple.com>

        Printing in 1Password app is broken with screen fonts disabled
        https://bugs.webkit.org/show_bug.cgi?id=116133
        -and corresponding-
        <rdar://problem/13162981>

        Reviewed by Anders Carlsson.

        Need WKExecutableWasLinkedOnOrBeforeMountainLion() for this quirk.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-05-08  Roger Fong  <roger_fong@apple.com>

        Unreviewed. Update WebKitLibraries/win to handle different architectures properly.

        * win/lib32: Copied from win/lib.
        * win/tools/WinTools.make:

2013-05-02  Roger Fong  <roger_fong@apple.com>

        Unreviewed Windows build fix.

        * win/lib/WebKitSystemInterface.lib:

2013-05-01  Alexey Proskuryakov  <ap@apple.com>

        Update WebKitSystemInterface.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-04-29  Chris Fleizach  <cfleizach@apple.com>

        WEB SPEECH: need to identify the default voice per language
        https://bugs.webkit.org/show_bug.cgi?id=115366

        Reviewed by Simon Fraser.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-04-29  Roger Fong  <roger_fong@apple.com>

        Need a tools32 folder for VS2010 builds. 
        tools folder will be nuked when we nuke VS2005.

        * win/tools32: Copied from WebKitLibraries/win/tools.

2013-04-26  Roger Fong  <roger_fong@apple.com>

        Disable sub-pixel-layout on Apple Windows port, VS2005 edition.

        * win/tools/vsprops/FeatureDefines.vsprops:

2013-04-26  Roger Fong  <roger_fong@apple.com>

        Disable sub-pixel-layout on Apple Windows port.

        * win/tools/vsprops/FeatureDefines.props:

2013-04-26  Roger Fong  <roger_fong@apple.com>

        Make Apple Windows VS2010 build results into and get dependencies from __32 suffixed folders.
        Make the DebugSuffix configuration use _debug dependencies.

        * win/tools/WinTools.make:
        * win/tools/scripts/auto-version2010.sh:
        * win/tools/scripts/feature-defines2010.sh:
        * win/tools/vsprops/common.props:
        * win/tools/vsprops/debugsuffix.props:

2013-04-25  Chris Fleizach  <cfleizach@apple.com>

        WEB SPEECH: language support does not work as expected
        https://bugs.webkit.org/show_bug.cgi?id=115119

        Reviewed by Alexey Proskuryakov.

        * WebKitSystemInterface.h:

2013-04-24  Roger Fong  <roger_fong@apple.com>

        Have VS2010 WebKit solution look in WebKit_Libraries/lib32 for dependencies.

        * win/tools/vsprops/common.props:

2013-04-23  Antoine Quint  <graouts@apple.com>

        Initial advance of text runs should be taken into account
        https://bugs.webkit.org/show_bug.cgi?id=114949

        Reviewed by Darin Adler.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-04-12  Jeffrey Pfau  <jpfau@apple.com>

        Query directly for cache partition names
        https://bugs.webkit.org/show_bug.cgi?id=114538

        Reviewed by David Kilzer.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-04-08  Roger Fong  <roger_fong@apple.com>

        Build fix.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2013-04-11  Alexey Proskuryakov  <ap@apple.com>

        <rdar://problem/10416316> [Mac] WebSocket doesn't work with authenticating proxies
        https://bugs.webkit.org/show_bug.cgi?id=114464

        Update WebKitSystemInterface.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

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

        Mass remove all the empty directories

        Rubberstamped by Ryosuke Niwa.

        * win/bin: Removed.
        * win/lib/WebKitSystemInterface: Removed.

2013-04-05  Roger Fong  <roger_fong@apple.com>

        More VS2010 solution makefile fixes.
        <rdar://problem/13588964>

        * win/tools/WinTools.make:

2013-04-03  Brent Fulgham  <bfulgham@webkit.org>

        [Windows, WinCairo] Unreviewed VS2010 Build Correction

        * win/tools/scripts/auto-version2010.sh: Added properties svn:eol-style and svn:executable.
        * win/tools/scripts/feature-defines2010.sh: Added properties svn:eol-style and svn:executable.

2013-04-01  Roger Fong  <roger_fong@apple.com>

        Update FEATURE_DEFINES string generation for VS2010 solution.
        https://bugs.webkit.org/show_bug.cgi?id=113737.

        Reviewed by Timothy Horton.

        * win/tools/scripts/feature-defines2010.sh: Added.

2013-03-29  Roger Fong  <roger_fong@apple.com>

        Unreviewed. Rollout r146818.

        * win/tools/vsprops/FeatureDefines.props:

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.

        * win/tools/vsprops/FeatureDefines.props:
        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.props:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

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

        Unreviewed, rolling out r146816, r146821, and r146830.
        http://trac.webkit.org/changeset/146816
        http://trac.webkit.org/changeset/146821
        http://trac.webkit.org/changeset/146830
        https://bugs.webkit.org/show_bug.cgi?id=113262

        Broke all the Windows tests (Requested by rfong on #webkit).

        * win/tools/vsprops/FeatureDefines.vsprops:

2013-03-25  Roger Fong  <roger_fong@apple.com>

        Unreviewed. Also enable CSS_REGIONS and EXCLUSIONS for VS2010 solution.

        * win/tools/vsprops/FeatureDefines.props:

2013-03-25  Roger Fong  <roger_fong@apple.com>

        Enable CSS_REGIONS and CSS_EXCLUSIONS.
        https://bugs.webkit.org/show_bug.cgi?id=87519

        Reviewed by Timothy Horton.

        * win/tools/vsprops/FeatureDefines.vsprops:

2013-03-21  Roger Fong  <roger_fong@apple.com>

        Unreviewed. Move common props files for VS2010 solution to WebKitLibraries folder and update all projects accordingly.

        * win/tools/vsprops/FeatureDefines.props: Copied from ../Source/WebKit/WebKit.vcxproj/FeatureDefines.props.
        * win/tools/vsprops/FeatureDefinesCairo.props: Copied from ../Source/WebKit/WebKit.vcxproj/FeatureDefinesCairo.props.
        * win/tools/vsprops/WinCairo.props: Copied from ../Source/WebKit/WebKit.vcxproj/WinCairo.props.
        * win/tools/vsprops/cURL.props: Copied from ../Source/WebKit/WebKit.vcxproj/WebKit/cURL.props.
        * win/tools/vsprops/common.props: Copied from ../Source/WebKit/WebKit.vcxproj/common.props.
        * win/tools/vsprops/debug.props: Copied from ../Source/WebKit/WebKit.vcxproj/debug.props.
        * win/tools/vsprops/debug_wincairo.props: Copied from ../Source/WebKit/WebKit.vcxproj/debug_wincairo.props.
        * win/tools/vsprops/debugsuffix.props: Copied from ../Source/WebKit/WebKit.vcxproj/debugsuffix.props.
        * win/tools/vsprops/production.props: Copied from ../Source/WebKit/WebKit.vcxproj/production.props.
        * win/tools/vsprops/release.props: Copied from ../Source/WebKit/WebKit.vcxproj/release.props.

2013-03-19  Brent Fulgham  <bfulgham@webkit.org>

        [WinCairo] Unreviewed build fix.

        * win/tools/vsprops/FeatureDefinesCairo.vsprops: This file was out
        of sync with the main Windows build, and the VS2010 version of the
        WinCairo port, preventing consistent builds.

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2013-03-06  Jer Noble  <jer.noble@apple.com>

        Unreviewed roll-out of r145011.

        * win/tools/vsprops/FeatureDefines.vsprops:

2013-03-06  Jer Noble  <jer.noble@apple.com>

        Unreviewed build fix.  Add ENABLE_CURSOR_VISIBILITY to the list of FEATURE_DEFINES for
        (non-Cairo) Windows builds.

        * win/tools/vsprops/FeatureDefines.vsprops:

2013-03-05  Kiran Muppala  <cmuppala@apple.com>

        Remove deprecated process suppression assertion SPI from WebKitSystemInterface
        https://bugs.webkit.org/show_bug.cgi?id=111501

        Reviewed by Alexey Proskuryakov.

        https://bugs.webkit.org/show_bug.cgi?id=111387 replaced all usage of
        WKNSProcessInfoProcessAssertionWithTypes() with
        -[NSProcessInfo beginSuspensionOfSystemBehaviors:].  Hence, remove
        the now deprecated SPI.

        * WebKitSystemInterface.h: Remove
        WKNSProcessInfoProcessAssertionWithTypes and associated declarations.

2013-03-05  Kiran Muppala  <cmuppala@apple.com>

        Use new assertion API for process suppression on Mac
        https://bugs.webkit.org/show_bug.cgi?id=111387

        Reviewed by Alexey Proskuryakov.

        Add WKProcessSuppressionSystemBehaviors constant for use in WebKit2 to
        take a process suppression assertion.

        * WebKitSystemInterface.h:

2013-03-05  Jeffrey Pfau  <jpfau@apple.com>

        Clear associated cache partitions when deleting origins' cache
        https://bugs.webkit.org/show_bug.cgi?id=111383

        Reviewed by Maciej Stachowiak.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

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).

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2013-02-21  Jeffrey Pfau  <jpfau@apple.com>

        Optionally partition cache to prevent using cache for tracking
        https://bugs.webkit.org/show_bug.cgi?id=110269

        Reviewed by Maciej Stachowiak.

        Update WKSI bindings.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-02-22  Aaron Colwell  <acolwell@chromium.org>

        Disable MediaSource on Apple Windows port
        https://bugs.webkit.org/show_bug.cgi?id=110494

        Reviewed by Tim Horton.

        * win/tools/vsprops/FeatureDefines.vsprops:

2013-02-22  Roger Fong  <roger_fong@apple.com>

        Unreviewed. Make WinTools.make stop copying vsprops into nested vsprops folders.

        * win/tools/WinTools.make:

2013-02-14  Anders Carlsson  <andersca@apple.com>

        Add WKContextIsPlugInUpdateAvailable
        https://bugs.webkit.org/show_bug.cgi?id=109862
        <rdar://problem/13173140>

        Reviewed by Sam Weinig.

        Roll WebKitSystemInterface DEPS.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-02-13  Roger Fong  <roger_fong@apple.com>

        Move all .props files from WebKitLibraries folder to WebKit Source folder.
        https://bugs.webkit.org/show_bug.cgi?id=109761

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/FeatureDefines.props: Removed.
        * win/tools/vsprops/common.props: Removed.
        * win/tools/vsprops/debug.props: Removed.
        * win/tools/vsprops/release.props: Removed.
        * win/tools/vsprops/releaseproduction.props: Removed.

2013-02-07  Roger Fong  <roger_fong@apple.com>

        Unreviewed. More VS2010 WebKit solution touchups.
        Move an ignored warning from a project to common properties.

        * win/tools/vsprops/common.props:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2013-01-30  Alexey Proskuryakov  <ap@apple.com>

        Update WebKitSystemInterface for <rdar://problem/13111288>.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

        * WebKitSystemInterface.h: Removed WKEnterPluginSandbox, which has been unused now.

2013-01-28  Kiran Muppala  <cmuppala@apple.com>

        Add window occlusion criteria to determine page visibility on Mac
        https://bugs.webkit.org/show_bug.cgi?id=107494

        Reviewed by Simon Fraser.

        Add enum constants to specify window occlusion notification type to
        notification registration/unregistration methods.  Add typedef for
        window ID data passed to the window occlusion notification handler.
        Add method to enable occlusion notifications for a particular window.

        * WebKitSystemInterface.h: Add
        WKOcclusionNotificationTypeWindowBecameVisible,
        WKOcclusionNotificationTypeWindowBecameOccluded,
        WKWindowID,
        WKEnableWindowOcclusionNotifications().

2013-01-25  Andy Estes  <aestes@apple.com>

        Update WKSI header and libraries after r140875.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2013-01-24  Brent Fulgham  <bfulgham@webkit.org>

        Get WTF compiling in VS2010 (32bit)
        https://bugs.webkit.org/show_bug.cgi?id=106986

        Reviewed by Tim Horton.

        If you do not have Cygwin in the overall operating system
        PATH, the project will not build.  In VS2005 we had logic
        in the build system to guard against this.  We should
        retain this in the VS2010 work.

        Furthermore, VS2010 has a nasty bug where to Visual Studio
        tools path is not defined when performing a 'clean' phase
        on an NMAKE-based build.  This is corrected here as well.

        * win/tools/vsprops/common.props: Revise environment setup
        to ensure proper tools are in path during build.

2013-01-19  Roger Fong  <roger_fong@apple.com>

        Add WebKitLibraries property sheets for compiling WebKit in VS2010.
        https://bugs.webkit.org/show_bug.cgi?id=106949

        Reviewed by Brent Fulgham.

        * win/tools/vsprops/FeatureDefines.props: Added.
        * win/tools/vsprops/common.props: Added.
        * win/tools/vsprops/debug.props: Added.
        * win/tools/vsprops/release.props: Added.
        * win/tools/vsprops/releaseproduction.props: Added.

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2013-01-10  Roger Fong  <roger_fong@apple.com>

        Update WebkitSystemInterface lib for Windows port.
        This hasn't been done in a while and the current one is out of date.
        In addition I believe it will fix:
        <rdar://problem/12990844>

        Rubberstamped by Timothy Horton.

        * win/lib/WebKitSystemInterface.lib:

2013-01-08  Kiran Muppala  <cmuppala@apple.com>

        Add WebKitSystemInterface needed for overriding system proxies on Mac
        https://bugs.webkit.org/show_bug.cgi?id=106410

        Reviewed by Stephanie Lewis.

        This patch is in anticipation of the fix for https://bugs.webkit.org/show_bug.cgi?id=104197,
        Add user defaults to override system proxy settings for NetworkProcess on Mac, which
        is awaiting the approval of a WebKit2 committer.  Commiting the WKSI portion separately,
        so that the internal repository commit for generating the WKSI libraries does not have to
        be rolled back every time the rest of the patch changes.

        Add WKCFNetworkSetOverrideSystemProxySettings(), needed by NetworkProcess to set
        custom proxies during initialization.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2013-01-01  Dan Bernstein  <mitz@apple.com>

        <rdar://problem/12942239> Update copyright strings

        Reviewed by Sam Weinig.

        * win/tools/scripts/COPYRIGHT-END-YEAR:

2012-12-28  Mark Rowe  <mrowe@apple.com>

        Move logic for extracting the OS X marketing version in to WebCore
        <http://webkit.org/b/105841> / <rdar://problem/10736041>

        Reviewed by Dan Bernstein.

        * WebKitSystemInterface.h:

2012-12-19  Kiran Muppala  <cmuppala@apple.com>

        Adopt new assertion SPI for process suppression on Mac
        https://bugs.webkit.org/show_bug.cgi?id=105378

        Reviewed by Mark Rowe.

        Add WKNSProcessInfoProcessAssertionWithTypes().

        * WebKitSystemInterface.h:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-12-12  Roger Fong  <roger_fong@apple.com>

        Enable VIDEO_TRACK on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=104706.

        Reviewed by Timothy Horton.

        Enable VIDEO_TRACK on Windows and update project property files.

        * win/tools/vsprops/FeatureDefines.vsprops:

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

        Unreviewed, rolling out r137491.
        http://trac.webkit.org/changeset/137491
        https://bugs.webkit.org/show_bug.cgi?id=104828

        broke the builtd (Requested by rfong on #webkit).

        * win/tools/vsprops/FeatureDefines.vsprops:

2012-12-11  Roger Fong  <roger_fong@apple.com>

        Enable VIDEO_TRACK on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=104706.

        Reviewed by Timothy Horton.

        Enable VIDEO_TRACK on Windows and update project property files.

        * win/tools/vsprops/FeatureDefines.vsprops:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

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

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-11-26  Roger Fong  <roger_fong@apple.com>

        Unreviewed. ENABLE_ACCELERATED_OVERFLOW_SCROLLING not enabled on Windows.
        Add a feature flag and skip some failing tests.
        https://bugs.webkit.org/show_bug.cgi?id=103294

        Tests skipped:
        compositing/overflow/scrolling-without-painting.html
        compositing/overflow/updating-scrolling-content.html

        * win/tools/vsprops/FeatureDefines.vsprops:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

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 win and win-cairo prot.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-11-12  Beth Dakin  <bdakin@apple.com>

        Build fix. Forgot these bits last time.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2012-11-12  Beth Dakin  <bdakin@apple.com>

        Zoomed-in scrolling is very slow when deviceScaleFactor > 1
        https://bugs.webkit.org/show_bug.cgi?id=101787

        Reviewed by Simon Fraser.

        wkSetCGFontRenderingMode now takes a BOOL parameter.
        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2012-11-08  Anders Carlsson  <andersca@apple.com>

        Roll WebKitSystemInterface DEPS.

        Rubber-stamped by Andreas Kling.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2012-11-07  Roger Fong  <roger_fong@apple.com>

        Enable Subpixel Layout on Windows. Rebaseline any failing tests that were rebaselined in r133351.
        https://bugs.webkit.org/show_bug.cgi?id=101538

        Rubberstamped by Tim Horton.

        * win/tools/vsprops/FeatureDefines.vsprops:

2012-11-06  Anders Carlsson  <andersca@apple.com>

        Build fix.

        * WebKitSystemInterface.h:

2012-11-06  Anders Carlsson  <andersca@apple.com>

        Update Java related WKSI function names
        https://bugs.webkit.org/show_bug.cgi?id=101414

        Reviewed by Sam Weinig.

        Roll WebKitSystemInterface DEPS.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2012-11-06  Alexey Proskuryakov  <ap@apple.com>

        Clean up which storage cookie jar functions use
        https://bugs.webkit.org/show_bug.cgi?id=101395

        Reviewed by Brady Eidson.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:
        Added WKHTTPCookies() and WKDeleteAllHTTPCookies(). Updated ifdefs for currently
        supported OS versions.

2012-11-06  Alexey Proskuryakov  <ap@apple.com>

        Delete Leopard and Snow Leopard versions of WKSI. These have not been updated in ages.

        Rubber-stampted by Mark Rowe.

        * libWebKitSystemInterfaceLeopard.a: Removed.
        * libWebKitSystemInterfaceSnowLeopard.a: Removed.

2012-11-05  Alexey Proskuryakov  <ap@apple.com>

        Get rid of setCookieStoragePrivateBrowsingEnabled.
        https://bugs.webkit.org/show_bug.cgi?id=101247

        Reviewed by Brady Eidson.

        * WebKitSystemInterface.h: Removed the function.

2012-11-02  Anders Carlsson  <andersca@apple.com>

        Don't instantiate the Java plug-in if it's inactive
        https://bugs.webkit.org/show_bug.cgi?id=101102
        <rdar://problem/12595679>

        Reviewed by Andreas Kling.

        Update WebKitSystemInterface to a version that has WKJLReportWebComponentsUsed.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:
        Roll WebKitSystemInterface DERPS.

2012-10-25  Dominik Röttsches  <dominik.rottsches@intel.com>

        Conditionalize XHR timeout support
        https://bugs.webkit.org/show_bug.cgi?id=100356

        Reviewed by Adam Barth.

        Adding ENABLE_XHR_TIMEOUT feature, which is default off for Apple Win.
        See also https://bugs.webkit.org/show_bug.cgi?id=100349 for an attempt
        to fix timeout support for CF Network.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-10-24  Eric Carlson  <eric.carlson@apple.com>

        Allow ports to override text track rendering style
        https://bugs.webkit.org/show_bug.cgi?id=97800
        <rdar://problem/12044964>

        Reviewed by Maciej Stachowiak.

        Update WKSI header with SPI for getting the user caption appearance preferences.

        * WebKitSystemInterface.h:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:
            Add an ENABLE_CSS3_CONDITIONAL_RULES flag.

2012-10-08  Kiran Muppala  <cmuppala@apple.com>

        Throttle DOM timers on hidden pages.
        https://bugs.webkit.org/show_bug.cgi?id=98474

        Reviewed by Maciej Stachowiak.

        Add HIDDEN_PAGE_DOM_TIMER_THROTTLING feature define.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-10-05  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r130556 and r130564.
        http://trac.webkit.org/changeset/130556
        http://trac.webkit.org/changeset/130564
        https://bugs.webkit.org/show_bug.cgi?id=98572

        The patch wasn't reviewed by a reviewer and it is breaking
        Chromium Windows (Requested by jchaffraix on #webkit).

        * WebKitSystemInterface.h:

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

        Update WebKitSystemInterface libraries and header.

        Reviewed by Simon Fraser.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-10-04  Eric Carlson  <eric.carlson@apple.com>

        Allow ports to override text track rendering style
        https://bugs.webkit.org/show_bug.cgi?id=97800
        <rdar://problem/12044964>

        Reviewed by Silvia Pfeiffer.

        Update WKSI header with SPI for getting the user caption appearance preferences.

        * WebKitSystemInterface.h:

2012-09-28  Eric Carlson  <eric.carlson@apple.com>

        Allow ports to override text track rendering style
        <rdar://problem/12044964>

        Reviewed by Jessie Berlin.

        Update WKSI libraries.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-09-25  Simon Fraser  <simon.fraser@apple.com>

        <rdar://problem/12351906> Have DumpRenderTree and WebKitTestRunner crash logs show which test crashed

        Reviewed by Tim Horton.

        New WKSI libraries and header.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-09-08  Sam Weinig  <sam@webkit.org>

        Switch to entering the sandbox directly from main(), rather than waiting for the initialization message
        https://bugs.webkit.org/show_bug.cgi?id=96194

        Reviewed by Dan Bernstein.

        Update WKSI with SPI for getting the bundle URL from an executable URL.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        Adds WKCopyBundleURLForExecutableURL().

2012-08-29  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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-08-14  Alex Christensen  <alex.christensen@flexsim.com>

        /SAFESEH should not be a common linker option
        https://bugs.webkit.org/show_bug.cgi?id=89372

        Reviewed by Darin Adler.

        * win/tools/vsprops/common.vsprops:
        removed /SAFESEH as a default option for the linker (doesn't work for x64)

2012-08-13  Roger Fong  <roger_fong@apple.com>

        Enable CSS Sticky Position on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=93905

        Reviewed by Tim Horton.

        As per https://bugs.webkit.org/show_bug.cgi?id=90046, the ENABLE_CSS_STICKY_POSITION needs to be turned on for Windows as well.

        * win/tools/vsprops/FeatureDefines.vsprops:
        Include ENABLE_CSS_STICKY_POSITION flag. 
        
2012-08-06  Anders Carlsson  <andersca@apple.com>

        If the Apple Java plug-in is blocked and no runtime is installed, don't load it
        https://bugs.webkit.org/show_bug.cgi?id=93289
        <rdar://problem/11730092>

        Reviewed by Dan Bernstein.

        Add WKJLIsRuntimeAndWebComponentsInstalled().

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:

2012-08-01  Jon Lee  <jonlee@apple.com>

        Update WKSI.

        Reviewed by Mark Rowe.

        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

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

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-07-23  Roger Fong  <roger_fong@apple.com>

        Disable flexbox on Windows
        https://bugs.webkit.org/show_bug.cgi?id=92047
        <rdar://problem/11570384>

        Reviewed by Darin Adler.

        Disabled Flexbox CSS3 syntax on Mac, need to do the same for Windows.

        * win/tools/vsprops/FeatureDefines.vsprops:
        Disable ENABLE_CSS3_FLEXBOX property.
        
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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-07-11  Mark Rowe  <mrowe@apple.com>

        Add a Mountain Lion version of libWebKitSystemInterface.a.

        Update the WebKitSystemInterface header and binaries.

        Reviewed by John Sullivan.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceMountainLion.a: Added.
        * libWebKitSystemInterfaceSnowLeopard.a:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-06-29  Mihai Balan  <mibalan@adobe.com>

        [CSS Regions] Adding feature defines for CSS Regions for Windows
        https://bugs.webkit.org/show_bug.cgi?id=88645

        Reviewed by Tony Chang.

        Re-trying to enable CSS regions on Windows. This time only enabling
        regions since exclusions lead to some very strange compiling/linking
        problems.

        * win/tools/vsprops/FeatureDefines.vsprops: Added default value for ENABLE_CSS_REGIONS
        * win/tools/vsprops/FeatureDefinesCairo.vsprops: ditto

2012-06-28  Brent Fulgham  <bfulgham@webkit.org>

        [WinCairo] Unreviewed build correction.  Add two missing macro
        declarations to vsprops file.

        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Add missing
        ENABLE_HIGH_DPI_CANVAS and ENABLE_REQUEST_ANIMATION_FRAME macros.

2012-06-27  Brent Fulgham  <bfulgham@webkit.org>

        [WinCairo] Unreviewed build correction.  Accidentally turned on
        CSS_FILTERS, which is not available in tree.

        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Turn CSS_FILTERS
        back off for WinCairo target.

2012-06-27  Brent Fulgham  <bfulgham@webkit.org>

        [WinCairo] Unreviewed build correction.  Resync feature defines with
        Apple port. Things have drifted apart a little.

        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Update to match
        Apple port, define some missing features.

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

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-06-15  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r120280.
        http://trac.webkit.org/changeset/120280
        https://bugs.webkit.org/show_bug.cgi?id=89273

        Enabling CSS regions broke all Windows tests (Requested by
        jhomeycutt on #webkit).

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-06-13  Mihai Balan  <mibalan@adobe.com>

        Fix for #88645 - enabling regions on Windows

        [CSS Regions] Adding feature defines for CSS Regions & exclusions for Windows
        https://bugs.webkit.org/show_bug.cgi?id=88645

        Reviewed by Sam Weinig.

        Previous work on #87442 added feature defines to allow proper disabling of CSS Regions and
        exclusions (previously even with the feature disabled, parsing still worked). However, the
        feature defines were enabled on Mac only - they were broken on Windows. This
        patch adds the feature defines to (re)enable regions and exclusions on Windows.

        * win/tools/vsprops/FeatureDefines.vsprops: Added default value for ENABLE_CSS_EXCLUSIONS and ENABLE_CSS_REGIONS
        * win/tools/vsprops/FeatureDefinesCairo.vsprops: ditto

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-06-11  Anders Carlsson  <andersca@apple.com>

        Pass the right color space over to the web process so we can set it on our CA context
        https://bugs.webkit.org/show_bug.cgi?id=88819
        <rdar://problem/11629050>

        Reviewed by John Sullivan.

        Add WKCAContextSetColorSpace and WKCAContextGetColorSpace.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

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.

        * win/tools/vsprops/FeatureDefines.vsprops: Add a macro 'ENABLE_CUSTOM_SCHEME_HANDLER'.
        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Add a macro 'ENABLE_CUSTOM_SCHEME_HANDLER'.

2012-05-29  Jessie Berlin  <jberlin@apple.com>

        [Win] ~1/2 of all the iframe seamless tests fail
        https://bugs.webkit.org/show_bug.cgi?id=87543

        Rubber-stamped by Eric Seidel.

        Finish enabling IFRAME_SEAMLESS on Windows.

        * win/tools/vsprops/FeatureDefines.vsprops:

2012-05-28  Vivek Galatage  <vivekgalatage@gmail.com>

        Remove obsolete feature define ENABLE_3D_CANVAS from FeatureDefines.vsprops for windows
        https://bugs.webkit.org/show_bug.cgi?id=87622

        Reviewed by Eric Seidel.

        Removed the ENABLE_3D_CANVAS from the property define as this is
        obsolete since bug #53041

        * win/tools/vsprops/FeatureDefines.vsprops:

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.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-05-23  Ojan Vafai  <ojan@chromium.org>

        add back the ability to disable flexbox
        https://bugs.webkit.org/show_bug.cgi?id=87147

        Reviewed by Tony Chang.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-05-10  Anders Carlsson  <andersca@apple.com>

        WebKit1: Add a way to blacklist specific plug-ins/plug-in versions
        https://bugs.webkit.org/show_bug.cgi?id=86150
        <rdar://problem/9551196>

        Reviewed by Sam Weinig.

        Add WKShouldBlockPlugin.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-05-08  Jon Lee  <jonlee@apple.com>

        Safari warns that it needs to resend the form in an iFrame when going back
        https://bugs.webkit.org/show_bug.cgi?id=82658
        <rdar://problem/11292558>

        Reviewed by Darin Adler.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-05-07  Eric Seidel  <eric@webkit.org>

        Add ENABLE_IFRAME_SEAMLESS so Apple can turn off SEAMLESS if needed
        https://bugs.webkit.org/show_bug.cgi?id=85822

        Reviewed by Adam Barth.

        * win/tools/vsprops/FeatureDefines.vsprops:

2012-05-06  Eric Seidel  <eric@webkit.org>

        Remove 3D_CANVAS define from vsprops files (it was renamed WEBGL many months ago)
        https://bugs.webkit.org/show_bug.cgi?id=85743

        Reviewed by Adam Barth.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-05-02  Eric Seidel  <eric@webkit.org>

        Resort FeatureDefinesCairo.vcprops to actually be alphabetical (in preparation for autogeneration)
        https://bugs.webkit.org/show_bug.cgi?id=85454

        Reviewed by Adam Barth.

        The PreprocessorDefinitions line is still not sorted, but I'll do that in a separate patch.
        There is no functional change in this patch.  Just moving the defines around.
        Its interesting to me that now that it's sorted and I can easily compare this with other
        ports and found that a whole bunch of defines which should be on for Cairo are off,
        likely due to Cairo simply being overlooked.  These oversights should be easy to avoid
        in an autogenerated world.

        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-05-02  Eric Seidel  <eric@webkit.org>

        Fix tabs vs. space formating in FeatureDefines.vsprops and fix alphabetical sorting
        https://bugs.webkit.org/show_bug.cgi?id=85445

        Reviewed by Adam Barth.

        I noticed this when comparing my auto-generated output for this file vs. the one
        we have checked in.  Seems we might as well fix the checked in file to be
        consistent in style with itself. :)

        * win/tools/vsprops/FeatureDefines.vsprops:

2012-04-27  Gavin Peters  <gavinp@chromium.org>

        Add new ENABLE_LINK_PRERENDER define to control the Prerendering API
        https://bugs.webkit.org/show_bug.cgi?id=84871

        Reviewed by Adam Barth.

        Prerendering is currently covered by the ENABLE_LINK_PREFETCH macro, but the new Prerendering
        API separates it from prefetching.  Having separate include guards lets ports enable prefetching,
        a relatively easy change, without needing to build the infrastructure for prerendering, which
        is considerably more complicated.

        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-04-10  Adam Barth  <abarth@webkit.org>

        Limit -apple- and -khtml- to ENABLE(DASHBOARD_SUPPORT)
        https://bugs.webkit.org/show_bug.cgi?id=83256

        Reviewed by Eric Seidel.

        * win/tools/vsprops/FeatureDefines.vsprops:

2012-04-09  Beth Dakin  <bdakin@apple.com>

        <rdar://problem/11214796>

        New WKSI will hopefully fix a common crash seen by the bots in libRIP.A.dylib: 
        symmetric_convolve

        Reviewed by Simon Fraser.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-04-06  Dan Bernstein  <mitz@apple.com>

        <rdar://problem/10912476> HiDPI: Have canvas use a hidpi backing store, but downsample upon access

        Reviewed by Sam Weinig.

        * win/tools/vsprops/FeatureDefines.vsprops: Added ENABLE_HIGH_DPI_CANVAS.

2012-04-03  Keishi Hattori  <keishi@webkit.org>

        Disable ENABLE_DATALIST for now
        https://bugs.webkit.org/show_bug.cgi?id=82871

        Reviewed by Kent Tamura.

        * win/tools/vsprops/FeatureDefines.vsprops: Disabled ENABLE_DATALIST.

2012-03-30  Keishi Hattori  <keishi@webkit.org>

        Change ENABLE_INPUT_COLOR to ENABLE_INPUT_TYPE_COLOR and enable it for chromium
        https://bugs.webkit.org/show_bug.cgi?id=80972

        Reviewed by Kent Tamura.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-03-20  Steve Falkenburg  <sfalken@apple.com>

        Disable LTCG on Windows to avoid out of process space errors while linking
        https://bugs.webkit.org/show_bug.cgi?id=81714

        Reviewed by Jessie Berlin.

        * win/tools/vsprops/production.vsprops:

2012-03-14  Jer Noble  <jer.noble@apple.com>

        Wrong icon to restore to windowed mode in full screen video panel
        https://bugs.webkit.org/show_bug.cgi?id=70437

        Reviewed by Eric Carlson.

        * WebKitSystemInterface.h: Added WKMediaUIPartExitFullscreenButton.
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2012-03-13  Adam Barth  <abarth@webkit.org> && Benjamin Poulain  <bpoulain@apple.com>

        Always enable ENABLE(CLIENT_BASED_GEOLOCATION)
        https://bugs.webkit.org/show_bug.cgi?id=78853

        Reviewed by Adam Barth.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-03-12  Enrica Casucci  <enrica@apple.com>

        WebKit2: remove NSPasteboard access for promised data from the WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=80073

        * WebKitSystemInterface.h: Touched the file to make build system happy.
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-03-09  Jon Lee  <jonlee@apple.com>

        Add support for ENABLE(LEGACY_NOTIFICATIONS)
        https://bugs.webkit.org/show_bug.cgi?id=80497

        Reviewed by Adam Barth.

        Prep for b80472: Update API for Web Notifications
        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-03-09  Ashod Nakashian  <ashodnakashian@yahoo.com>

        Bash scripts should support LF endings only
        https://bugs.webkit.org/show_bug.cgi?id=79509

        Reviewed by David Kilzer.

        * win/tools/scripts/feature-defines.sh: Modified property svn:eol-style.

2012-03-05  Sam Weinig  <sam@webkit.org>

        Fix the SnowLeoaprd build.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-03-05  Sam Weinig  <sam@webkit.org>

        Update WebKitSystemInterface for WKCAContext additions.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-03-03  Hans Wennborg  <hans@chromium.org>

        Implement Speech JavaScript API
        https://bugs.webkit.org/show_bug.cgi?id=80019

        Reviewed by Adam Barth.

        Add ENABLE_SCRIPTED_SPEECH.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-03-01  Nikolas Zimmermann  <nzimmermann@rim.com>

        Unreviewed, rolling out r109255.
        http://trac.webkit.org/changeset/109255
        https://bugs.webkit.org/show_bug.cgi?id=79932

        Breaks rounded rects with dashed strokes in SVG

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-02-29  Tim Horton  <timothy_horton@apple.com>

        Make use of CG rounded-rect primitives
        https://bugs.webkit.org/show_bug.cgi?id=79932
        <rdar://problem/9274953>

        Reviewed by Simon Fraser.

        Add wkCGPathAddRoundedRect.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-02-28  Jer Noble  <jer.noble@apple.com>

        Full screen video volume slider has "progress bar"
        https://bugs.webkit.org/show_bug.cgi?id=79812

        Reviewed by Eric Carlson.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2012-02-28  Simon Fraser  <simon.fraser@apple.com>

        Update WebKitSystemInterface.

        Reviewed by Sam Weinig.
        
        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-02-28  Alexey Proskuryakov  <ap@apple.com>

        [Mac] Add an experimental SPI for plug-ins to enter sandbox
        https://bugs.webkit.org/show_bug.cgi?id=79709

        This pulls a lot of WKSI changes at once, because the script that updates it didn't
        work for a while.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2012-02-10  Adam Klein  <adamk@chromium.org>

        Enable MUTATION_OBSERVERS by default on all platforms
        https://bugs.webkit.org/show_bug.cgi?id=78196

        Reviewed by Ojan Vafai.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-02-06  Matthew Delaney  <mdelaney@apple.com>

        toDataURL() uses stale data after putImageData()
        https://bugs.webkit.org/show_bug.cgi?id=65767

        Added WKCGContextResetClip for use in reseting clip for new putByteArray method.

        Reviewed by Chris Marrin.
        
        * WebKitSystemInterface.h: Added WKCGContextResetClip.
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceLion.a:

2012-02-02  Chris Marrin  <cmarrin@apple.com>

        Turn on CSS Filters on Windows
        https://bugs.webkit.org/show_bug.cgi?id=76667

        Turned on CSS_FILTERS for Windows

        Reviewed by Adele Peterson.

        * win/tools/vsprops/FeatureDefines.vsprops:

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

        Unreviewed, rolling out r106566.
        http://trac.webkit.org/changeset/106566
        https://bugs.webkit.org/show_bug.cgi?id=77673

        Broke the Windows build (Requested by jessieberlin on
        #webkit).

        * win/tools/vsprops/FeatureDefines.vsprops:

2012-02-02  Chris Marrin  <cmarrin@apple.com>

        Turn on CSS Filters on Windows
        https://bugs.webkit.org/show_bug.cgi?id=76667

        Turned on CSS_FILTERS for Windows

        Reviewed by Adele Peterson.

        * win/tools/vsprops/FeatureDefines.vsprops:

2012-01-26  Nikolas Zimmermann  <nzimmermann@rim.com>

        Not reviewed. Fix win build, by disabling ENABLE_SHADOW_DOM by default.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-01-25  Hajime Morita  <morrita@google.com>>

        ENABLE_SHADOW_DOM should be available via build-webkit --shadow-dom
        https://bugs.webkit.org/show_bug.cgi?id=76863

        Reviewed by Dimitri Glazkov.

        Added a feature flag.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2012-01-16  Brent Fulgham  <bfulgham@webkit.org>

        [WinCairo] Build correction. Switch to Apple style builds without
        the _debug postfix so that launching tools, etc., will work properly.

        * win/tools/vsprops/debug_wincairo.vsprops: Remove use of _debug in
        output files to be consistent with WebKit build/test tools.

2012-01-05  Dan Bernstein  <mitz@apple.com>

        <rdar://problem/10633760> Update copyright strings

        Reviewed by Mark Rowe.

        * win/tools/scripts/COPYRIGHT-END-YEAR:

2011-12-06  Roland Steiner  <rolandsteiner@chromium.org>

        <style scoped>: disable on Windows by default
        https://bugs.webkit.org/show_bug.cgi?id=73893

        Reviewed by Andreas Kling.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-11-20  Roland Steiner  <rolandsteiner@chromium.org>

        <style scoped>: add ENABLE(STYLE_SCOPED) flag to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=72848

        Reviewed by Dimitri Glazkov.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-11-14  Julien Chaffraix  <jchaffraix@webkit.org>

        Add --css-grid-layout to build-webkit and the build systems
        https://bugs.webkit.org/show_bug.cgi?id=72320

        Reviewed by Ojan Vafai.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-11-14  Tony Chang  <tony@chromium.org>

        Remove the CSS3_FLEXBOX compile time flag and enable on all ports
        https://bugs.webkit.org/show_bug.cgi?id=72196

        Reviewed by Ojan Vafai.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-11-11  Alexey Proskuryakov  <ap@apple.com>

        WebProcess should use AppSandbox style quarantine
        https://bugs.webkit.org/show_bug.cgi?id=72168
        <rdar://problem/10434292>

        Reviewed by Darin Adler.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        Added WKEnableSandboxStyleFileQuarantine().

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        Not sure why these also changed, but updating to match most recent build.

2011-11-02  Dean Jackson  <dino@apple.com>

        Add ENABLE_CSS_SHADERS flag
        https://bugs.webkit.org/show_bug.cgi?id=71394

        Reviewed by Sam Weinig.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-10-24  Michael Saboff  <msaboff@apple.com>

        WebKit doesn't build with recent changes to libdispatch
        https://bugs.webkit.org/show_bug.cgi?id=70737

        Added new WebKitSystemInterface method CreateVMPressureDispatchOnMainQueue.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-10-21  Jeff Miller  <jeffm@apple.com>

        Focus rings are too thin in HiDPI in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=70396
        
        Rename wkSetPatternBaseCTM() to wkSetBaseCTM().

        Reviewed by Beth Dakin.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-10-19  Beth Dakin  <bdakin@apple.com>

        Try to fix the Chromium build.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-10-19  Beth Dakin  <bdakin@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=70396
        Focus rings are too thin in HiDPI in WebKit2
        -and corresponding-
        <rdar://problem/10086876>

        Reviewed by Dan Bernstein.

        Renamed an existing WebKitSystemInterface function.
        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-10-18  Adam Barth  <abarth@webkit.org>

        Always enable ENABLE(XPATH)
        https://bugs.webkit.org/show_bug.cgi?id=70217

        Reviewed by Eric Seidel.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-10-17  Adam Roben  <aroben@apple.com>

        Windows build fix

        Here's the error:

        5>c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\obj\webcore\derivedsources\jssvgpathsegcurvetoquadraticrel.cpp(128) : fatal error C1128: number of sections exceeded object file format limit : compile with /bigobj

        * win/tools/vsprops/common.vsprops: Specify /bigobj to the compiler.

2011-10-16  Adam Barth  <abarth@webkit.org>

        Always enable ENABLE(DOM_STORAGE)
        https://bugs.webkit.org/show_bug.cgi?id=70189

        Reviewed by Eric Seidel.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-10-14  Dan Bernstein  <mitz@apple.com>

        REGRESSION (Safari 5.1 - 5.1.1): CSS nesw-resize cursor shows up as a sw-resize cursor
        https://bugs.webkit.org/show_bug.cgi?id=70081

        Reviewed by Anders Carlsson.

        * WebKitSystemInterface.h: Unrelated change, perhaps needed for bug 68478.
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-10-13  Arko Saha  <arko@motorola.com>

        Microdata: Basic implementation of document.getItems() method.
        https://bugs.webkit.org/show_bug.cgi?id=68610

        Reviewed by Ryosuke Niwa.

        Added ENABLE(MICRODATA) feature flag. Implement document.getItems() DOM API.
        Spec: http://www.whatwg.org/specs/web-apps/current-work/complete/microdata.html

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-10-12  Adam Barth  <abarth@webkit.org>

        Remove ENABLE(XHTMLMP) and associated code
        https://bugs.webkit.org/show_bug.cgi?id=69729

        Reviewed by David Levin.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-10-11  Kent Tamura  <tkent@chromium.org>

        C4481 warning should be disabled for OVERRIDE and FINAL.
        https://bugs.webkit.org/show_bug.cgi?id=69904

        Reviewed by Adam Roben.

        * win/tools/vsprops/common.vsprops: Disable C4481.

2011-10-04  Kent Tamura  <tkent@chromium.org>

        Introduce feature flags for incomplete input types
        https://bugs.webkit.org/show_bug.cgi?id=68971

        Reviewed by Hajime Morita.

        * win/tools/vsprops/FeatureDefines.vsprops:
        Add ENABLE_INPUT_TYPE_* flags. They are disabled by default.
        * win/tools/vsprops/FeatureDefinesCairo.vsprops: ditto.

2011-10-04  Scott Graham  <scottmg@chromium.org>

        Add GAMEPAD feature flag
        https://bugs.webkit.org/show_bug.cgi?id=66859

        Reviewed by Darin Fisher.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-09-26  Chris Marrin  <cmarrin@apple.com>

        Enable requestAnimationFrame on Windows
        https://bugs.webkit.org/show_bug.cgi?id=68397

        Reviewed by Simon Fraser.

        Enable REQUEST_ANIMATION_FRAME for Windows

        * win/tools/vsprops/FeatureDefines.vsprops:

2011-09-24  Adam Barth  <abarth@webkit.org>

        Always enable ENABLE(OFFLINE_WEB_APPLICATIONS)
        https://bugs.webkit.org/show_bug.cgi?id=68767

        Reviewed by Eric Seidel.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-09-23  Adam Klein  <adamk@chromium.org>

        Add ENABLE_MUTATION_OBSERVERS feature flag
        https://bugs.webkit.org/show_bug.cgi?id=68732

        Reviewed by Ojan Vafai.

        This flag will guard an implementation of the "Mutation Observers" proposed in
        http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/1622.html

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-09-22  Dean Jackson  <dino@apple.com>

        Add ENABLE_CSS_FILTERS
        https://bugs.webkit.org/show_bug.cgi?id=68652

        Reviewed by Simon Fraser.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-09-19  Adam Barth  <abarth@webkit.org>

        Always enable ENABLE(EVENTSOURCE)
        https://bugs.webkit.org/show_bug.cgi?id=68414

        Reviewed by Eric Seidel.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-09-15  Adam Barth  <abarth@webkit.org>

        Rename ENABLE(DATABASE) to ENABLE(SQL_DATABASE)
        https://bugs.webkit.org/show_bug.cgi?id=68205

        Reviewed by Eric Seidel.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-09-15  Eric Seidel  <eric@webkit.org>

        Remove ENABLE(SVG_AS_IMAGE) since all major ports have it on by default
        https://bugs.webkit.org/show_bug.cgi?id=68182

        Reviewed by Adam Barth.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-09-15  Eric Seidel  <eric@webkit.org>

        Remove ENABLE_SVG_ANIMATION as all major ports have it on by default
        https://bugs.webkit.org/show_bug.cgi?id=68022

        Reviewed by Ryosuke Niwa.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-09-14  Eric Seidel  <eric@webkit.org>

        Remove ENABLE_SVG_USE as <use> is required by HTML5
        https://bugs.webkit.org/show_bug.cgi?id=68019

        Reviewed by Ryosuke Niwa.

        I missed a couple uses of SVG_USE in my previous patch.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-09-13  Eric Seidel  <eric@webkit.org>

        Remove ENABLE_SVG_USE as <use> is required by HTML5
        https://bugs.webkit.org/show_bug.cgi?id=68019

        Reviewed by Ryosuke Niwa.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-09-13  Eric Seidel  <eric@webkit.org>

        Remove ENABLE_SVG_FOREIGN_OBJECT as it is a required part of HTML5
        https://bugs.webkit.org/show_bug.cgi?id=68018

        Reviewed by Ryosuke Niwa.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-09-01  Tim Horton  <timothy_horton@apple.com>

        REGRESSION: Rendering artifacts on a rotated, pattern filled shape
        https://bugs.webkit.org/show_bug.cgi?id=53055
        <rdar://problem/8910917>

        Reviewed by Simon Fraser.

        Introduce wkCGPatternCreateWithImageAndTransform.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-08-30  Aaron Colwell  <acolwell@chromium.org>

        Add MediaSource API to HTMLMediaElement
        https://bugs.webkit.org/show_bug.cgi?id=64731

        Reviewed by Eric Carlson.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-08-24  Lucas Forschler  <lforschler@apple.com>

        Update SVN properties to help out the Windows EWS bots.
        
        Reviewed by Adam Roben.

        * win: Modified properties svn:ignore.
        * win/include: Modified property svn:ignore.
        * win/lib: Modified property svn:ignore.

2011-08-18  Beth Dakin  <bdakin@apple.com>

        Reviewed by Sam Weinig.

        https://bugs.webkit.org/show_bug.cgi?id=66495
        Lion-specific scroller SPIs can use forward declaration instead of 
        WebKitSystemInterface

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-07-28  Dan Bernstein  <mitz@apple.com>

        WebKitSystemInterface support for
        <rdar://problem/9589433> Displaying Japanese dictionary contents in vertical orientation takes a couple of seconds

        Reviewed by Darin Adler.

        * WebKitSystemInterface.h: Added WKGetVerticalGlyphsForCharacters().
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-07-22  Jessie Berlin  <jberlin@apple.com>

        [WebKit2] Changing the cookie accept policy in Private Browsing doesn’t work.
        https://bugs.webkit.org/show_bug.cgi?id=64997

        Reviewed by Ada Chan.

        Add a wrapper around the setter for the CF HTTP cookie accept policy (since it is not
        declared in the public headers on Snow Leopard). This wrapper is not necessary for Windows.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-07-15  Pratik Solanki  <psolanki@apple.com>

        Part of https://bugs.webkit.org/show_bug.cgi?id=63674
        Get webkit to compile with USE(CFNETWORK) enabled on Mac

        Reviewed by David Kilzer.

        New WebKitSystemInterface functions for CFNetwork-based loader.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-07-12  Brent Fulgham  <bfulgham@webkit.org>

        Standardize WinCairo conditionalized code under PLATFORM macro.
        https://bugs.webkit.org/show_bug.cgi?id=64377

        Reviewed by Maciej Stachowiak.

        * win/tools/vsprops/WinCairo.vsprops: Update to comply with PLATFORM
          macro definition (WTF_PLATFORM_WIN_CAIRO)

2011-07-02  Mark Rowe  <mrowe@apple.com>

        Update the header file too.

        * WebKitSystemInterface.h:

2011-07-02  Mark Rowe  <mrowe@apple.com>

        Update WebKitSystemInterface binaries.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceLion.a: Added.
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-06-28  Brent Fulgham  <bfulgham@webkit.org>

        Unreviewed build correction.  Link to correct library for
        the zlib1.dll.

        * win/tools/vsprops/WinCairo.vsprops: Don't link to the static
        zlib.lib when building for WinCairo.

2011-06-21  MORITA Hajime  <morrita@google.com>

        Unreviewed, rolling out r89401 and r89403.
        http://trac.webkit.org/changeset/89401
        http://trac.webkit.org/changeset/89403
        https://bugs.webkit.org/show_bug.cgi?id=62970

        Breaks mac build and mistakenly enables the spellcheck API

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-06-20  MORITA Hajime  <morrita@google.com>

        Reviewed by Kent Tamura.

        Spellcheck API should be build-able.
        https://bugs.webkit.org/show_bug.cgi?id=62970

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-06-20  Pratik Solanki  <psolanki@apple.com>

        Reviewed by David Kilzer.

        HTTP pipelining functions on mac should match windows
        https://bugs.webkit.org/show_bug.cgi?id=63012

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-06-13  Tony Chang  <tony@chromium.org>

        Reviewed by Dimitri Glazkov.

        rename ENABLE_NEW_FLEXBOX to ENABLE_CSS3_FLEXBOX
        https://bugs.webkit.org/show_bug.cgi?id=62578

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-06-13  Tony Chang  <tony@chromium.org>

        Reviewed by Adam Barth.

        rename ENABLE_FLEXBOX to ENABLE_NEW_FLEXBOX
        https://bugs.webkit.org/show_bug.cgi?id=62545

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-06-10  Tony Chang  <tony@chromium.org>

        Reviewed by Ojan Vafai.

        add a compile guard ENABLE(FLEXBOX)
        https://bugs.webkit.org/show_bug.cgi?id=62049

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-06-07  Tim Horton  <timothy_horton@apple.com>

        Reviewed by Alexey Proskuryakov.

        Use correct CFURLStorageSessionRef definition on Snow Leopard
        https://bugs.webkit.org/show_bug.cgi?id=62223

        * WebKitSystemInterface.h:

2011-06-06  Alexandru Chiculita  <achicu@adobe.com>

        Reviewed by Kent Tamura.

        Add ENABLE_CSS_EXCLUSIONS support for build-webkit script
        https://bugs.webkit.org/show_bug.cgi?id=61628

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-06-06  Mihnea Ovidenie  <mihnea@adobe.com>

        Reviewed by Kent Tamura.

        Add ENABLE(CSS_REGIONS) guard for CSS Regions support
        https://bugs.webkit.org/show_bug.cgi?id=61631

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-05-25  Jer Noble  <jer.noble@apple.com>

        Reviewed by Dan Bernstein.

        30 second rewind button dysfunctional viewing trailers fullscreen.
        https://bugs.webkit.org/show_bug.cgi?id=61505

        Updated WKSI Libraries with new images for Backward buttons in default
        video controls.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-05-25  Jer Noble  <jer.noble@apple.com>

        Reviewed by Darin Adler.

        Video fails to play on Vimeo
        https://bugs.webkit.org/show_bug.cgi?id=61403

        Added functions to retrieve the resolved URL for media types supported on 
        mac.

        * WebKitSystemInterface.h:
        * WebKitSystemInterface.m:
        (WKAVAssetResolvedURL): Added.
        (WKQTMovieResolvedURL): Added.

2011-05-24  Keishi Hattori  <keishi@webkit.org>

        Reviewed by Kent Tamura.

        Disable input color. Add INPUT_COLOR feature flag. Implement input color sanitizer.
        https://bugs.webkit.org/show_bug.cgi?id=61273

        * win/tools/vsprops/FeatureDefines.vsprops: Added INPUT_COLOR feature flag.
        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Added INPUT_COLOR feature flag.

2011-05-12  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Darin Adler.

        [Windows WebKit2] Use cookies set in WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=60274

        Update WKSI with the changes to wkCreatePrivateStorageSession.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-05-11  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Steve Falkenburg.

        [Windows WebKit2] Use cookies set in WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=60274

        Take 3 after rolling out KB2465367 from my system.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-05-11  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r86255.
        http://trac.webkit.org/changeset/86255
        https://bugs.webkit.org/show_bug.cgi?id=60660

        REGRESSION (r86255): Lots of tests crashing in
        CFWriteStreamCreateWithAllocatedBuffers on Windows 7 Release
        (WebKit2 Tests) (Requested by aroben on #webkit).

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-05-11  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Steve Falkenburg.

        [Windows WebKit2] Use cookies set in WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=60274

        Take 3 after rolling out KB2465367 from my system.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-05-09  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r86075.
        http://trac.webkit.org/changeset/86075
        https://bugs.webkit.org/show_bug.cgi?id=60495

        broke windows tests (Requested by jessieberlin on #webkit).

        * win/lib/WebKitSystemInterface.lib:

2011-05-09  Jessie Berlin  <jberlin@apple.com>

        Take 2 on updating the WKSI libraries.

        * win/lib/WebKitSystemInterface.lib:

2011-05-08  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r86037.
        http://trac.webkit.org/changeset/86037
        https://bugs.webkit.org/show_bug.cgi?id=60453

        broke Windows tests (Requested by jessieberlin on #webkit).

        * win/lib/WebKitSystemInterface.lib:

2011-05-08  Jessie Berlin  <jberlin@apple.com>

        Rubber-stamped by Alice Liu.

        Update the WKSI libraries.

        * win/lib/WebKitSystemInterface.lib:

2011-05-07  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r86016.
        http://trac.webkit.org/changeset/86016
        https://bugs.webkit.org/show_bug.cgi?id=60445

        caused crashes on the WK2 Windows bots (Requested by
        jessieberlin on #webkit).

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-05-07  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Steve Falkenburg.

        [Windows WebKit2] Use cookies set in WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=60274

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-05-05  Dan Bernstein  <mitz@apple.com>

        Reviewed by Simon Fraser.

        WebKitSystemInterface part of <rdar://problem/9155590> Broken animation in iAd producer

        * WebKitSystemInterface.h: Added WKExecutableWasLinkedOnOrBeforeSnowLeopard().

2011-04-29  Jer Noble  <jer.noble@apple.com>

        Reviewed by Eric Seidel.

        Implement FULLSCREEN_API on Windows, Part 4: Enable it
        https://bugs.webkit.org/show_bug.cgi?id=59798

        * win/tools/vsprops/FeatureDefines.vsprops: Set ENABLE_FULLSCREEN_API to true.

2011-05-03  David Kilzer  <ddkilzer@apple.com>

        Part 1 of 2: <http://webkit.org/b/59838> Implement HTTP pipelining for CoreFoundation-based networking
        <rdar://problem/8924448>

        Reviewed by Adam Roben.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        (wkGetHTTPPipeliningPriority): Added declaration.
        (wkSetHTTPPipeliningMaximumPriority): Added declaration.
        (wkSetHTTPPipeliningPriority): Added declaration.
        * win/lib/WebKitSystemInterface.lib: Updated.

2011-04-28  David Levin  <levin@chromium.org>

        Reviewed by Adam Barth.

        Remove IMAGE_RESIZER related code.
        https://bugs.webkit.org/show_bug.cgi?id=59735

        * win/tools/vsprops/FeatureDefines.vsprops: Also removed WML which was missed in r85256.
        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Ditto.

2011-04-28  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by Maciej Stachowiak.

        Allow remote accessibility API for WK2 to build on SnowLeopard.
        <rdar://problem/9324507>

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-04-27  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Geoff Garen.

        Remove some files that are no longer relevant.

        * libWebKitSystemInterfaceTiger.a: Removed.

2011-04-23  Brent Fulgham  <bfulgham@webkit.org>

        [WinCairo] Unreviewed build change.

        Activate Geolocation API, as it will work with WinCairo assuming
        an appropriate Geolocation Provider is registered.

        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Activate the
          Geolocation features.

2011-04-21  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Adam Roben.

        Add a feature define to allow <details> and <summary> to be disabled
        https://bugs.webkit.org/show_bug.cgi?id=59118
        <rdar://problem/9257045>
        
        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-04-20  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Dan Bernstein.

        Adopt QTKit API for listing and deleting file in its media cache.
        <rdar://problem/9130029> 
        https://bugs.webkit.org/show_bug.cgi?id=58795

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-04-19  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Sam Weinig.

        Roll r81683 back in.

        Going to certain pages causes a download of "st.html" or "jsp.html" (news.yahoo.com, etc.)
        <rdar://problem/9139245>

        "Windows edition".

        * win/lib/WebKitSystemInterface.lib:

2011-04-15  Shishir Agrawal  <shishir@chromium.org>

        Reviewed by James Robinson.

        Add a flag to guard Page Visibility API changes.
        https://bugs.webkit.org/show_bug.cgi?id=58464

        * win/tools/vsprops/FeatureDefines.vsprops:

2011-04-14  Pratik Solanki  <psolanki@apple.com>

        Reviewed by David Kilzer.

        Set minimum priority for fast lane connections
        https://bugs.webkit.org/show_bug.cgi?id=58353

        Add WKSetHTTPPipeliningMinimumFastLanePriority.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-04-08  Alpha Lam  <hclam@chromium.org>

        Unreviewed, rolling out r83335.
        http://trac.webkit.org/changeset/83335
        https://bugs.webkit.org/show_bug.cgi?id=53556

        GTK and QT bots are broken

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-04-07  Anna Cavender  <annacc@chromium.org>

        Reviewed by Eric Carlson.

        Setup ENABLE(TRACK) feature define
        https://bugs.webkit.org/show_bug.cgi?id=53556

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-04-07  Andrew Scherkus  <scherkus@chromium.org>

        Revert ENABLE_TRACK patch due to compile failures.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-04-06  Dai Mikurube  <dmikurube@chromium.org>

        Reviewed by David Levin.

        Add QUOTA build flag for unified quota API
        https://bugs.webkit.org/show_bug.cgi?id=57918

        * win/tools/vsprops/FeatureDefines.vsprops: Added QUOTA build flag
        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Added QUOTA build flag

2011-04-04  David Kilzer  <ddkilzer@apple.com>

        <http://webkit.org/b/57384> CFNetwork and WebCore load priorities should match

        Reviewed by Alexey Proskuryakov.

        * WebKitSystemInterface.h:
        (WKSetHTTPPipeliningMaximumPriority): Added declaration.
        (WKExtractWordDefinitionTokenRangeFromContextualString): Added
        missing declaration from r81890.
        (WKShowWordDefinitionWindow): Ditto.
        (WKHideWordDefinitionWindow): Ditto.
        * libWebKitSystemInterfaceLeopard.a: Updated.
        * libWebKitSystemInterfaceSnowLeopard.a: Updated.

2011-04-04  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        Remove unused AnalyzeWithLargeStack code from Windows build files
        https://bugs.webkit.org/show_bug.cgi?id=57771
        
        This was used for us to build with prefast automatically,
        but it is out-of-date and hasn't been used for some time.
        Removing completely for now.

        * win/tools/vsprops/common.vsprops:

2011-04-04  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Brian Weinstein.

        Fix Windows build warning.
        https://bugs.webkit.org/show_bug.cgi?id=57767

        * win/tools/vsprops/common.vsprops:

2011-04-01  Brent Fulgham  <bfulgham@webkit.org>

        [WinCairo] Unreviewed build fix.

        Define DEBUG_ALL for WinCairo debug builds so that the correct
        labeled DLLs ("*_debug.dll") are linked for testing runs.

        * win/tools/vsprops/debug_wincairo.vsprops:

2011-04-01  Timothy Hatcher  <timothy@apple.com>

        Make momentum scroll event latching work in WebKit2 on Mac.

        <rdar://problem/8751861>

        Reviewed by Darin Adler.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a: Updated to remove WKIsLatchingWheelEvent and add WKGetNSEventMomentumPhase.
        * libWebKitSystemInterfaceSnowLeopard.a: Ditto.

2011-03-30  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        Should turn off frame pointer omission (FPO) for Release (not Production) builds
        https://bugs.webkit.org/show_bug.cgi?id=54403

        Leave it enabled for Windows Production builds.
        Disabling this optimization improves stack traces for memory and performance tools like umdh and xperf.
        
        We use both /Oy- and OmitFramePointers="false" since OmitFramePointers="false" isnt' enough
        to override /O2.

        * win/tools/vsprops/release.vsprops:

2011-03-30  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        Share most vsprops between Release and Production builds in releaseproduction.vsprops
        https://bugs.webkit.org/show_bug.cgi?id=57508

        * win/tools/vsprops/release.vsprops:
        * win/tools/vsprops/releaseproduction.vsprops: Copied from WebKitLibraries/win/tools/vsprops/release.vsprops.

2011-03-30  Steve Falkenburg  <sfalken@apple.com>

        Rubber stamped by Adam Roben.

        Remove unnecessary NDEBUG define.

        * win/tools/vsprops/production.vsprops:

2011-03-30  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        Update Windows production build logic for new production configurations
        https://bugs.webkit.org/show_bug.cgi?id=57494

        * win/tools/vsprops/common.vsprops:
        * win/tools/vsprops/production.vsprops: Added.

2011-03-29  Brent Fulgham  <bfulgham@webkit.org>

        Unreviewed build change to activate MathML for WinCairo.

        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Enable MathML.

2011-03-29  Jessie Berlin  <jberlin@apple.com>

        Update the WebKitSystemInterface libraries for changes in the implementation.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-03-28  Jeff Miller  <jeffm@apple.com>

        Reviewed by Adam Roben.

        Include certificate when sending a WebCore::ResourceError to UI process on Windows
        https://bugs.webkit.org/show_bug.cgi?id=57195

        Rename wkGetSSLPeerCertificateData() to wkGetSSLPeerCertificateDataBytePtr(), since it returns a void*, and
        implement wkGetSSLPeerCertificateData() to return a CFDataRef.  Add wkSetSSLPeerCertificateData() so
        WebCore::ResourceError can set the certificate in the user info dictionary.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-03-28  Jeff Miller  <jeffm@apple.com>

        Rubber-stamped by Adam Roben.

        Remove WebKitSystemInterface_debug.lib, it hasn't been used for a few months now.

        * win/lib/WebKitSystemInterface_debug.lib: Removed.

2011-03-25  Brent Fulgham  <bfulgham@webkit.org>

        Kick the build machines after r81977.

        * win/tools/vsprops/common.vsprops:

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

        Unreviewed, rolling out r81683.
        http://trac.webkit.org/changeset/81683
        https://bugs.webkit.org/show_bug.cgi?id=56872

        Crashing in some tests (Requested by weinig on #webkit).

        * win/lib/WebKitSystemInterface.lib:

2011-03-22  Sam Weinig  <sam@webkit.org>

        Reviewed by Adam Roben.

        Going to certain pages causes a download of "st.html" or "jsp.html" (news.yahoo.com, etc.)
        <rdar://problem/9139245>

        "Windows edition".

        * win/lib/WebKitSystemInterface.lib:

2011-03-22  Sam Weinig  <sam@webkit.org>

        Reviewed by Brady Eidson.

        Going to certain pages causes a download of "st.html" or "jsp.html" (news.yahoo.com, etc.)
        <rdar://problem/9139245>

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-03-17  Anders Carlsson  <andersca@apple.com>

        Add WKWindowWillOrderOffScreenNotification.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-03-14  Pratik Solanki  <psolanki@apple.com>

        Rubber-stamped by Mark Rowe.

        I checked in Intel-only version of these files in r80975. This fixes that by building all
        the correct slices - i386/x86_64/ppc for SnowLeopard and i386/x86_64/ppc/ppc64 for Leopard.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-03-13  Pratik Solanki  <psolanki@apple.com>

        Reviewed by Brady Eidson.

        Make adjustMIMETypeIfNecessary use CFNetwork directly
        https://bugs.webkit.org/show_bug.cgi?id=55912

        Add new WKSI functions needed to implement adjustMIMETypeIfNecessary.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-03-09  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Adam Roben.

        Use the Cookie Storage from the Private Browsing Storage Session directly
        https://bugs.webkit.org/show_bug.cgi?id=55986

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-03-07  Steve Falkenburg  <sfalken@apple.com>

        Bump version.

        * win/tools/scripts/VERSION:

2011-03-06  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Sam Weinig.

        WebKit2: Use CFNetwork Sessions API.
        https://bugs.webkit.org/show_bug.cgi?id=55435.

        When Private Browsing is enabled, use cookies from a in-memory Cookie Storage based on the
        Private Browsing Storage Session.

        Update WebKitSystemInterface headers and libraries with the new functions.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-03-04  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Maciej Stachowiak.

        WebKit2: Use CFNetwork Sessions API.
        https://bugs.webkit.org/show_bug.cgi?id=55435.

        When Private Browsing is enabled, get the cached url response from the cache associated with
        the Private Browsing Storage Session.

        Update WebKitSystemInterface headers and libraries with the new functions.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-03-03  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Adam Roben.

        WebKit2: Use CFNetwork Sessions API.
        https://bugs.webkit.org/show_bug.cgi?id=55435

        Set the Private Browsing Storage Session on requests when Private Browsing is enabled.

        Update WebKitSystemInterface headers and libraries with the new functions.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-03-02  Jessie Berlin  <jberlin@apple.com>

        Update WebKitSystemInterface libraries. Library changes reviewed by Darin Adler.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-03-02  Jessie Berlin  <jberlin@apple.com>

        Windows build fix. Unreviewed.

        * win/lib/WebKitSystemInterface.lib:

2011-03-02  Jessie Berlin  <jberlin@apple.com>

        Rubber-stamped by Adam Roben.

        WebKit2: Use CFNetwork Sessions API.
        https://bugs.webkit.org/show_bug.cgi?id=55435

        Add the ability to create a Private Browsing Storage Session.

        Update WebKitSystemInterface headers and libraries with the new functions.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-03-02  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by David Levin.

        Add feature define for data transfer items
        https://bugs.webkit.org/show_bug.cgi?id=55510

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-03-02  Adam Roben  <aroben@apple.com>

        Try to force a clean build on the Windows bots

        Some of the bots are running into bogus linker errors due to MSVC's "minimal rebuild"
        feature not rebuilding files it should. See <http://queues.webkit.org/results/8076907> for
        an example.

        * win/tools/vsprops/common.vsprops: Touched to force a rebuild.

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

        Unreviewed, rolling out r80079.
        http://trac.webkit.org/changeset/80079
        https://bugs.webkit.org/show_bug.cgi?id=55547

        "Broke the Win debug build?" (Requested by dcheng on #webkit).

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-03-01  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by David Levin.

        Add feature define for data transfer items
        https://bugs.webkit.org/show_bug.cgi?id=55510

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-03-01  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        WebKit2 needs to be made localizable
        <rdar://problem/8728860>

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-02-25  Brian Weinstein  <bweinstein@apple.com>

        Fix linking of Chromium Mac build. 

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-02-21  Brian Weinstein  <bweinstein@apple.com>

        Reviewed by Adam Roben.

        WebResourceCacheManager should be responsible for managing the CFURLCache as well
        as the WebCore memory cache.
        https://bugs.webkit.org/show_bug.cgi?id=54886
        Part of <rdar://problem/8971738>
        
        Update WebKitSystemInterface headers and libraries with new functions.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-02-21  Brian Weinstein  <bweinstein@apple.com>

        Rubber-stamped by Dan Bernstein.

        Update WebKitSystemInterface.h on Mac. The header that was in the tree didn't
        match the current WebKitSystemInterface.h.

        * WebKitSystemInterface.h:

2011-02-08  Patrick Gansterer  <paroga@webkit.org>

        Reviewed by Adam Roben.

        [WIN] Add missing forward declarations in WebKitSystemInterface.h
        https://bugs.webkit.org/show_bug.cgi?id=53889

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:

2011-02-04  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        Bump Windows minimum system requirement to XPSP2
        https://bugs.webkit.org/show_bug.cgi?id=53807

        * win/tools/vsprops/common.vsprops:

2011-02-03  James Kozianski  <koz@chromium.org>

        Reviewed by Dimitri Glazkov.

        Add navigator.registerProtocolHandler behind a flag.
        https://bugs.webkit.org/show_bug.cgi?id=52609

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-02-02  Steve Lacey  <sjl@chromium.org>

        Reviewed by Eric Carlson.

        Implement basic media statistics on media elements.
        https://bugs.webkit.org/show_bug.cgi?id=53322

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2011-01-28  Anders Carlsson  <andersca@apple.com>

        Build fix.
        
        Update WKSI.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-01-26  David Kilzer  <ddkilzer@apple.com>

        <http://webkit.org/b/53192> Add experimental support for HTTP pipelining in CFNetwork
        <rdar://problem/8821760>

        Reviewed by Antti Koivisto.

        * WebKitSystemInterface.h:
            New methods added for HTTP pipelining support.
        (WKGetHTTPPipeliningPriority): Added.
        (WKSetHTTPPipeliningPriority): Added.
            Unrelated methods added after updating the header.
        (WKMakeScrollbarPainter): Added.
        (WKScrollbarPainterPaint): Added.
        * libWebKitSystemInterfaceLeopard.a: Updated.
        * libWebKitSystemInterfaceSnowLeopard.a: Updated.

2011-01-24  Jer Noble  <jer.noble@apple.com>

        Reviewed by Eric Carlson.

        REGRESSION (r72119): Audio never plays on Star Wars intro animation
        https://bugs.webkit.org/show_bug.cgi?id=52467
        
        Add wkGetQuickTimeMIMETypeList() function.
        
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-01-18  Anders Carlsson  <andersca@apple.com>

        Reviewed by Darin Adler.

        Add WKPopupContextMenu.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-01-17  Adam Roben  <aroben@apple.com>

        Make it possible to both set and clear a wkCACFContext's D3D device

        Fixes <http://webkit.org/b/52587> WKCACFLayerRenderer is hard to use

        Reviewed by Chris Marrin.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2011-01-07  Chris Marrin  <cmarrin@apple.com>

        Unreviewed.

        Minor change to check for null context

        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2011-01-07  Chris Marrin  <cmarrin@apple.com>

        Unreviewed.

        Added one more API to WKSI to get the user data
        out of the CACFContext.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2011-01-07  Chris Marrin  <cmarrin@apple.com>

        Unreviewed.

        Adding updated WKSI files missed in http://trac.webkit.org/changeset/75262

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2011-01-05  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Darin Adler.

        Debug and Release builds on Windows clobber each other
        https://bugs.webkit.org/show_bug.cgi?id=49185

        Changes the structure of WebKitBuild build products directory so we
        completely separate each build configuration into independent directories.
        
        Although we previously had per-configuration directories for obj, this change adds
        per-configuration directories for bin, lib, obj, and include. Each configuration's
        build products are stored within a directory inside of WebKitBuild.
        
        Most use of $(WebKitOutputDir) in the build files has been replaced by $(ConfigurationBuildDir),
        defined in common.vsprops to be $(WebKitOutputDir)\$(ConfigurationName).

        * win/tools/vsprops/common.vsprops: 

2011-01-03  Chris Fleizach  <cfleizach@apple.com>

        Reviewed, tweaked and landed by Sam Weinig.

        WebKit2: Accessibility support (42130)
        <rdar://problem/7660629>

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2011-01-02  Dan Bernstein  <mitz@apple.com>

        Rubber-stamped by Simon Fraser.

        <rdar://problem/8812159> Update copyright strings

        * win/tools/scripts/COPYRIGHT-END-YEAR:

2010-12-21  Sam Weinig  <weinig@apple.com>

        Reviewed by Anders Carlsson.

        Add serialization for CFURLRequestRef and CFURLResponseRef.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:

2010-12-14  Anders Carlsson  <andersca@apple.com>

        Reviewed by Dan Bernstein.

        Add WKGetScriptCodeFromCurrentKeyboardInputSource function.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2010-12-10  Chris Marrin  <cmarrin@apple.com>

        Reviewed by Adam Roben.

        Add CACFContextGetLastCommitTime to WebKitSystemInterface for Windows.
        Also got rid of WebKitSystemInterface_debug.lib as recommended by
        Adam Roben. No OpenSource builds use it since r72327.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib: Removed.

2010-12-09  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig.

        Cannot use NSKeyedArchiver in WK2 for ResourceResponses
        https://bugs.webkit.org/show_bug.cgi?id=50792
        <rdar://problem/8741799>

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2010-12-03  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig.

        Dispatch keyboard events in the Carbon event model
        https://bugs.webkit.org/show_bug.cgi?id=50503

        Make WKGetNSEventKeyChar available in 32-bit.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2010-12-02  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig.

        Plug-ins should be able to update the mouse cursor
        https://bugs.webkit.org/show_bug.cgi?id=50399

        Add WKEnableSettingCursorWhenInBackground.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2010-12-01  Adam Roben  <aroben@apple.com>

        Don't let harmless errorlevels from the "set" utility leak into
        project-specific build scripts

        When using set to unset an environment variable that didn't previously
        exist, set raises the errorlevel to 1. This was leaking into
        project-specific scripts, causing them to think the build has failed.
        We now clear the errorlevel after we finish setting environment
        variables.

        Fixes <http://webkit.org/b/50350> Windows builds mysteriously fail in
        some configurations

        Reviewed by Steve Falkenburg.

        * win/tools/vsprops/common.vsprops: Call "cmd /c" after setting
        environment variables to get rid of any errorlevel that "set" set.

2010-12-01  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        vcproj changes can't be applied cleanly by the Windows EWS bot
        https://bugs.webkit.org/show_bug.cgi?id=50328

        * win/tools/vsprops/WinCairo.vsprops: Added property svn:eol-style.
        * win/tools/vsprops/cURL.vsprops: Added property svn:eol-style.
        * win/tools/vsprops/debug_wincairo.vsprops: Added property svn:eol-style.

2010-11-29  Steve Falkenburg  <sfalken@apple.com>

        Windows build fix (part 2).
        Define Visual Studio internal variables used in pre-build/pre-link/post-build commands in environment for separated cmd files.

        * win/tools/vsprops/common.vsprops:

2010-11-19  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        Add a mechanism for Windows pre-build/pre-link/post-build events to be separated into individual cmd files
        https://bugs.webkit.org/show_bug.cgi?id=49858
        
        We're migrating our prebuild/prelink/postbuild steps out of vcproj and vsprops files:
        - To simplify editing (editing vsprops build steps is confusing).
        - For more readable diffs.
        
        To add a prebuild/prelink/postbuild step for a vcproj,
        Add a new file named {ProjectName}PreBuild|PreLink|PostBuild.cmd to the project directory.
        For example, a WTF prebuild script would be named WTFPreBuild.cmd and would be located
        in the directory JavaScriptCore/JavaScriptCore.vcproj/WTF (alongside WTF.vcproj).

        * win/tools/vsprops/common.vsprops:
        * win/tools/vsprops/release.vsprops:

2010-11-29  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig and Simon Fraser.

        WebKitSystemInterface.h piece of r72438.

        * WebKitSystemInterface.h:

2010-11-22  Adam Roben  <aroben@apple.com>

        Use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops files

        Apple's Windows build allows placing header files and import libraries for WebKit's
        dependencies (CoreGraphics, CFNetwork, SQLite, etc.) outside the source tree via the
        $WebKitLibrariesDir environment variable. This is both required for production builds and
        convenient for Apple-internal developer builds. Apple's production builds also require that
        WebKit's shared .vsprops files be accessed relative to $WebKitLibrariesDir. In production
        builds, the files are copied into that directory tree by the
        WebKitLibraries/win/tools/WinTools.make file. In Apple-internal developer builds, the
        copying is done by
        JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make.

        This .vsprops copying is problematic in one very important case: when a developer updates
        their source tree and then tries to build. Visual Studio only reads .vsprops files when a
        project is first loaded. So, when Visual Studio is first opened after the .vsprops files are
        updated, it reads in the old files that were already residing in $WebKitLibrariesDir. When a
        build is started, JavaScriptCoreGenerated.make copies the new .vsprops files into
        $WebKitLibrariesDir, but Visual Studio will not pick up the changes.  The rest of the build
        will proceed with out-of-date .vsprops files, which will likely result in a build failure.

        To fix this, we now use normal relative paths to access the .vsprops files in the source
        tree rather than in $WebKitLibrariesDir, but prefix those paths with a new environment
        variable, $WebKitVSPropsRedirectionDir. In developer builds, this environment variable is
        unset, so the normal relative paths are used to read the .vsprops files out of the source
        tree directly. In production builds, this environment variable is set to a fake directory
        that will cause the .vsprops files in $WebKitLibrariesDir to be found when the relative path
        is resolved.
        
        For example, JavaScriptCore.vcproj uses this path for FeatureDefines.vsprops:

        $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops

        In developer builds, where $WebKitVSPropsRedirectionDir is unset, this will point to the
        files in WebKitLibraries\win\tools\vsprops in the source tree. In production builds,
        JavaScriptCore.make sets $WebKitVSPropsRedirectionDir to
        "$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\", so the full path for
        FeatureDefines.vsprops becomes:

        $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops

        which resolves to:

        $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops

        (We rely on the fact that Windows doesn't care whether the directories "1", "2", and "3"
        actually exist since they are matched by an equal number of ".." path components.)

        Note that Visual Studio still won't pick up changes made to .vsprops files while Visual
        Studio is open, but that problem hasn't seemed to cause developers many headaches so far.

        Fixes <http://webkit.org/b/49181> Windows build fails mysteriously when .vsprops files are
        updated

        Reviewed by Dave Hyatt.

        * win/tools/WinTools.make: Copy the shared .vsprops files into a directory tree beneath
        AppleInternal\tools\vsprops that matches the source directory tree. This allows production
        builds to redirect the relative paths used to find the shared .vsprops files into
        AppleInternal by setting $WebKitVSPropsRedirectionDir to the appropriate value.

2010-11-18  Steve Falkenburg  <sfalken@apple.com>

        Rubber-stamped by Adam Roben.

        Remove unused debug_internal vsprops file.

        * win/tools/vsprops/debug_internal.vsprops: Removed.

2010-11-18  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        Debug_Internal Windows configuration is unnecessary, should be removed
        https://bugs.webkit.org/show_bug.cgi?id=49753

        * win/tools/vsprops/debug.vsprops:
        * win/tools/vsprops/debug_internal.vsprops:

2010-11-17  Steve Falkenburg  <sfalken@apple.com>

        Rubber-stamped by Adam Roben.

        Update WebKitSystemInterfaceWin.

        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-11-16  Adam Roben  <aroben@apple.com>

        Ignore files from libdispatch/zlib

        Rubber-stamped by Eric Seidel.

        * win/include: Modified property svn:ignore.
        * win/lib: Modified property svn:ignore.

2010-11-10  Csaba Osztrogonác  <ossy@webkit.org>

        Reviewed by David Hyatt.

        HTML5 Ruby support should be mandatory feature
        https://bugs.webkit.org/show_bug.cgi?id=49272

        Remove Ruby as optional feature.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-10-29  Dan Bernstein  <mitz@apple.com>

        Snow Leopard PowerPC build fix.

        * libWebKitSystemInterfaceSnowLeopard.a:

2010-10-29  Dan Bernstein  <mitz@apple.com>

        Leopard PowerPC build fix.

        * libWebKitSystemInterfaceLeopard.a:

2010-10-29  Csaba Osztrogonác  <ossy@webkit.org>

        Reviewed by Adam Roben and David Kilzer.

        Fix and cleanup of build systems
        https://bugs.webkit.org/show_bug.cgi?id=48342

        Remove unnecessary ENABLE_SANDBOX.
        Add missing features to converge to FeatureDefines.xcconfig.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-10-28  Dan Bernstein  <mitz@apple.com>

        Reviewed by John Sullivan.

        Added UniCharProvider-based ways to create a CTTypeSetter and a CTLine, to be used in an
        upcoming ComplexTextController patch.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2010-10-28  Ivan Krstić  <ike@apple.com>

        Reviewed by Mark Rowe.

        Remove unused experimental proxied panel interface.
        <rdar://problem/7237059>

        * WebKitSystemInterface.h:

2010-10-27  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig.

        Find indicators do not bounce
        https://bugs.webkit.org/show_bug.cgi?id=48490
        <rdar://problem/8564276>

        Add bounce animation context functions.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2010-10-26  Adam Roben  <aroben@apple.com>

        Fix duplicate vsprops name

        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Renamed to
        "FeatureDefinesCairo" to match the filename.

2010-10-23  Alexey Proskuryakov  <ap@apple.com>

        Windows build fix.

        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:
        
2010-10-23  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Anders Carlsson.

        https://bugs.webkit.org/show_bug.cgi?id=48083
        <rdar://problem/8489082> Need WebKit2 API for private browsing (48083)

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:
        Updated WebKitSystemInterface with necessary methods.

2010-10-22  Adam Roben  <aroben@apple.com>

        Turn on ENABLE_3D_RENDERING on all Windows builds

        Reviewed by Sam Weinig.

        * win/tools/vsprops/FeatureDefines.vsprops:

2010-10-20  Adam Roben  <aroben@apple.com>

        Windows build fix

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:
        Use a WKCFURLCredentialRef type to protect against changes to the
        definition of CFURLCredentialRef.

2010-10-19  Adam Roben  <aroben@apple.com>

        Windows build fix

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h: Check in
        this file that I meant to check in in r70129.

2010-10-19  Adam Roben  <aroben@apple.com>

        Add WKCACFContext and related functions

        Fixes <http://webkit.org/b/43244>.

        Reviewed by Sam Weinig.

        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-10-14  Ada Chan  <adachan@apple.com>

        Rubber-stamped by Adam Roben.

        Fix Windows build.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-10-14  Ada Chan  <adachan@apple.com>

        Reviewed by Steve Falkenburg.

        Add wkGetSSLCertificateChainContext for fetching the certificate chain.
        Needed for https://bugs.webkit.org/show_bug.cgi?id=47603.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-10-11  Mike Thole  <mthole@apple.com>

        Reviewed by Darin Adler.

        Rename WKCertificateInfoGetPeerCertificates() to WKCertificateInfoGetCertificateChain()
        https://bugs.webkit.org/show_bug.cgi?id=47495

        * WebKitSystemInterface.h: 
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2010-10-03  Brent Fulgham  <bfulgham@webkit.org>

        Unreviewed build fix.

        WinCairo also needs access to the <inttypes.h> header requirement
        introduced by Bug 46357.

        * win/tools/vsprops/WinCairo.vsprops:

2010-09-17  Sam Weinig  <sam@webkit.org>

        Reviewed, tweaked, and landed by Anders Carlsson.

        Add WKCopyNSURLResponsePeerCertificates.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2010-09-16  Eric Uhrhane  <ericu@chromium.org>

        Reviewed by Jian Li.

        Unify FILE_SYSTEM and FILE_WRITER enables under the name FILE_SYSTEM.
        https://bugs.webkit.org/show_bug.cgi?id=45798

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-09-09  Jer Noble  <jer.noble@apple.com>

        Reviewed by Eric Carlson.

        Adopt shared control drawing for <video> controls on Windows
        https://bugs.webkit.org/show_bug.cgi?id=45490

        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-09-10  Anders Carlsson  <andersca@apple.com>

        WebKitSystemInterface part of:
        Set the visible name for the web process
        https://bugs.webkit.org/show_bug.cgi?id=45564
        <rdar://problem/8416970>

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:

2010-08-05  Jian Li  <jianli@chromium.org>

        Reviewed by David Levin.

        Unify blob related feature defines to ENABLE(BLOB).
        https://bugs.webkit.org/show_bug.cgi?id=43081

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-08-04  Dan Bernstein  <mitz@apple.com>

        Reviewed by Darin Adler.

        WebKitSystemInterface part of: Allow the language for hyphenation to be specified
        https://bugs.webkit.org/show_bug.cgi?id=43467

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-08-03  Beth Dakin  <bdakin@apple.com>

        Reviewed by Alice Liu.

        Enable MathML on Windows.

        * win/tools/vsprops/FeatureDefines.vsprops:

2010-07-30  Adam Roben  <aroben@apple.com>

        Roll our r64361 and r64363

        We can't make these changes until QuartzCore.lib is included in
        WebKitSupportLibrary.

2010-07-30  Adam Roben  <aroben@apple.com>

        Add WKCACFContext and related functions

        Also added some functions used by WKCAImageQueue.

        Fixes <http://webkit.org/b/43244>.

        Reviewed by Sam Weinig.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-07-27  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Ojan Vafai.

        Add FILE_SYSTEM build flag for FileSystem API
        https://bugs.webkit.org/show_bug.cgi?id=42915

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-07-12  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Sam Weinig.

        Update WebKitSystemInterface.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-07-12  Adam Roben  <aroben@apple.com>

        Stop generating stripped symbols for Release builds

        It turns out we can strip the symbols after-the-fact using PDBCopy.

        Fixes <http://webkit.org/b/42085>.

        Reviewed by Steve Falkenburg.

        * win/tools/vsprops/release.vsprops: Removed the StripPrivateSymbols
        attribute, which caused link.exe to generate a stripped PDB file for
        each project.

2010-07-08  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Dan Bernstein.

        Update WebKitSystemInterface.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-07-07  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Adam Roben.

        Disable MSVC warning 4288.
        https://bugs.webkit.org/show_bug.cgi?id=41804

        MSVC has a non-standard extension that allows variables declared
        in for-loops to remain visible in the same scope even after
        exiting the for-loop
        (http://msdn.microsoft.com/en-us/library/bk5hc10s.aspx). The /Ze
        option (turned on by default) enables all MSVC extensions, and
        /Zc:forScope- tells the compiler to issue a C4288 warning when the
        same variable is declared in the for-loop and re-declared later in
        the same scope.

        There seems to be a bug in VS2005 that erroneously enables
        /Zc:forScope- even when that option is not specified
        (http://connect.microsoft.com/VisualStudio/feedback/details/338010/bogus-compiler-warning-c4288). Looks
        like our build got hit by that bug, so we need to disable warning
        4288 to fix it.

        * win/tools/vsprops/common.vsprops:

2010-07-01  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Sam Weinig.

        <rdar://problem/8154047>
        
        Update WebKitSystemInterface, making some functions used by
        WebKit2 available in 32-bit (for reals this time).

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-07-01  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Sam Weinig.

        <rdar://problem/8154047>
        
        Update WebKitSystemInterface, making some functions used by
        WebKit2 available in 32-bit.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-06-23  John Gregg  <johnnyg@google.com>

        Reviewed by Kent Tamura.

        add ENABLE_DIRECTORY_UPLOAD build support
        https://bugs.webkit.org/show_bug.cgi?id=41100

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-06-27  Steve Falkenburg  <sfalken@apple.com>

        Windows (Cairo) build fix.
        Add missing ENABLE_WEB_TIMING feature define.

        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-06-27  Steve Falkenburg  <sfalken@apple.com>

        Windows build fix.
        Disable ENABLE_WEB_TIMING on Windows.

        * win/tools/vsprops/FeatureDefines.vsprops:

2010-06-26  Tony Gentilcore  <tonyg@chromium.org>

        Reviewed by Dimitri Glazkov.

        Add a VS macro for enabling Web Timing support.
        https://bugs.webkit.org/show_bug.cgi?id=38924

        * win/tools/vsprops/FeatureDefines.vsprops:

2010-06-21  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        Update WebKitSystemInterface.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-06-21  Dan Bernstein  <mitz@apple.com>

        Speculative build fix.

        * WebKitSystemInterface.h:

2010-06-21  Dan Bernstein  <mitz@apple.com>

        Reviewed by Darin Adler.

        WebKitSystemInterface part of CSS3: Implement the 'hyphens' and 'hyphenate-character' properties
        https://bugs.webkit.org/show_bug.cgi?id=10228

        * WebKitSystemInterface.h: Added WKGetHyphenationLocationBeforeIndex().
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-06-21  Satish Sampath  <satish@chromium.org>

        Reviewed by Steve Block.

        Speech Input Patch 0: Added compilation argument to conditionally compile pending patches.
        https://bugs.webkit.org/show_bug.cgi?id=40878

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-06-02  Sterling Swigart  <sswigart@google.com>

        Reviewed by David Levin.

        Image Resizer Patch 0: Added compilation argument to conditionally compile pending patches.
        https://bugs.webkit.org/show_bug.cgi?id=39906

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-05-24  Jer Noble  <jer.noble@apple.com>

        No review; build fix only.
        
        Roll-out changes r60110.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-05-24  Jer Noble  <jer.noble@apple.com>

        No review; build fix only.

        Roll-out changes r60094, 60096-60097.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-05-23  Jer Noble  <jer.noble@apple.com>

        Reviewed by Eric Carlson.

        HTML5 <video> tag performance worse than Flash
        https://bugs.webkit.org/show_bug.cgi?id=39577
        rdar://problem/7982458

        Added WebKitSystemInterface calls for new CAImageQueue APIs.
        
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-05-20  Steve Block  <steveblock@google.com>

        Reviewed by Jeremy Orlow.

        Provide bindings for DeviceOrientation
        https://bugs.webkit.org/show_bug.cgi?id=39210

        Adds ENABLE_DEVICE_ORIENTATION to VisualStudio project files, always disabled.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-04-09  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Maciej Stachowiak.

        https://bugs.webkit.org/show_bug.cgi?id=24572
        XMLHttpRequest.statusText returns always "OK" on Mac

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-04-07  Chris Marrin  <cmarrin@apple.com>

        Reviewed by Steve Falkenburg.

        Remove QuartzCoreInterface from the build
        
        No longer needed since QuartzCore.dll is now included in  the latest Safari release (4.0.5).

        * win/bin/QuartzCoreInterface.dll: Removed.
        * win/include/QuartzCoreInterface: Removed.
        * win/include/QuartzCoreInterface/QuartzCoreInterface.h: Removed.
        * win/lib/QuartzCoreInterface.lib: Removed.

2010-04-02  Jer Noble  <jer.noble@apple.com>

        Reviewed by Eric Carlson.
        
        https://bugs.webkit.org/show_bug.cgi?id=36624

        Update WebKitSystemInterface

        * WebKitSystemInterface.h: add WKQTMovieSelectPreferredAlternates.
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-04-01  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Dmitry Titov.

        Add FileThread for async file operation support in FileReader and FileWriter
        https://bugs.webkit.org/show_bug.cgi?id=36896

        Adds ENABLE_FILE_READER and ENABLE_FILE_WRITER feature flags
        for FileReader and FileWriter support.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-03-25  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Dan Bernstein.

        Update WebCoreSQLite3 to SQLite v3.6.12.

        * WebCoreSQLite3/sqlite3.h:
        * WebCoreSQLite3/sqlite3ext.h:
        * libWebCoreSQLite3.a:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-03-23  Dan Bernstein  <mitz@apple.com>

        Reviewed by John Sullivan.

        WebKitSystemInterface part of
        <rdar://problem/7197736> Plug-in clip rect does not update when overflow
        clip changes
        https://bugs.webkit.org/show_bug.cgi?id=36479.

        * WebKitSystemInterface.h: Added WKSyncSurfaceToView().
        * libWebKitSystemInterfaceSnowLeopard.a: Updated

2010-03-16  Dan Bernstein  <mitz@apple.com>

        Reviewed by Sam Weinig.

        Fix incorrect glyph advances when using the Core Graphics (non-GDI) glyph look.

        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-03-15  Andy Estes  <aestes@apple.com>

        Reviewed by John Sullivan.

        Added two new output arguments to WKGetWheelEventDeltas() to return
        the number of scroll wheel ticks in the x and y directions.

        https://bugs.webkit.org/show_bug.cgi?id=29601.
        <rdar://problem/7453254>

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-03-14  Dan Bernstein  <mitz@apple.com>

        Reviewed by Darin Adler.

        WebKitSystemInterface part of removing support for legacy versions of Core Graphics

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h: Removed
        wkCanCreateCGFontWithLOGFONT(), wkSetFontPlatformInfo(), wkAddFontsInDirectory(),
        wkAddFontsAtPath(), wkAddFontsFromRegistry(), wkAddFontsFromPlist(), and
        wkCreateFontsPlist().
        * win/lib/WebKitSystemInterface.lib: Updated.
        * win/lib/WebKitSystemInterface_debug.lib: Updated.

2010-03-08  Jian Li  <jianli@chromium.org>

        Reviewed by Dmitry Titov.

        Blob.slice support.
        https://bugs.webkit.org/show_bug.cgi?id=32993

        Add ENABLE_BLOB_SLICE feature define.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-02-19  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by David Levin.

        Add an ENABLE flag for sandboxed iframes to make it possible to disable it in releases
        https://bugs.webkit.org/show_bug.cgi?id=35147

        * win/tools/vsprops/FeatureDefines.vsprops:

2010-02-18  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Dan Bernstein.

        WebKit on Windows needs a mechanism to listen for WM_SETTINGCHANGED messages
        https://bugs.webkit.org/show_bug.cgi?id=35076

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib: Updated to add wkSystemFontSmoothingChanged.
        * win/lib/WebKitSystemInterface_debug.lib: Updated to add wkSystemFontSmoothingChanged.

2010-02-16  Gavin Barraclough  <barraclough@apple.com>

        Reviewed by NOBODY (Build fix).

        Disable warnings preventing use of anonymous structs/onions -
        don't take all my fun toys away, these are useful & awesome!

        * win/tools/vsprops/common.vsprops:

2010-02-11  Brian Weinstein  <bweinstein@apple.com>

        Rubber-stamped by Eric Seidel.

        Turn back on SVG Filters on Windows, as they were accidentally disabled and cause
        test breakage.

        * win/tools/vsprops/FeatureDefines.vsprops:

2010-02-08  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Cameron Zwarich.

        Restore ENABLE_RUBY flag so vendors can ship with Ruby disabled if they choose.
        https://bugs.webkit.org/show_bug.cgi?id=34698

        * win/tools/vsprops/FeatureDefines.vsprops:

2010-02-04  Mark Rowe  <mrowe@apple.com>

        Reviewed by Steve Falkenburg.

        Update auto-version.sh to better handle major version numbers with fewer than three digits,
        and the case when WEBKITLIBRARIESDIR is not set.

        * win/tools/scripts/auto-version.sh:

2010-02-04  Steve Falkenburg  <sfalken@apple.com>

        Windows build fix for projects not defining WebKitLibrariesDir.

        * win/tools/scripts/auto-version.sh:

2010-02-03  Dan Bernstein  <mitz@apple.com>

        Reviewed by Anders Carlsson.

        Fixed a bug where WKSetNSURLConnectionDefersCallbacks(true) did not defer callbacks during modal dialogs.

        * libWebKitSystemInterfaceLeopard.a:

2010-02-02  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Darin Adler.

        Copyright year updating for Windows version resources should be automatic
        https://bugs.webkit.org/show_bug.cgi?id=34503

        * win/tools/scripts/auto-version.sh:

2010-02-02  Martin Robinson  <mrobinson@webkit.org>

        Unreviewed build fix.

        The WinCairo build requires this script to be executable.

        * win/tools/scripts/feature-defines.sh: Added property svn:executable.

2010-01-29  Mark Rowe  <mrowe@apple.com>

        Keep the Windows feature defines in sync with FeatureDefines.xcconfig.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-01-26  Alexey Proskuryakov  <ap@apple.com>

        More Windows build fixing.

        * win/tools/vsprops/common.vsprops: Disable warning C4180 (qualifier applied to function
        type has no meaning; ignored). This is a known bug - MSVC tries to compile a wrong
        specialization sometimes - but it's not instantiated, so it's harmless.

2010-01-22  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Darin Adler.

        https://bugs.webkit.org/show_bug.cgi?id=34025
        Enable client-based Geolocation abstraction for Mac, Windows AppleWebKit targets.

        * win/tools/vsprops/FeatureDefines.vsprops:
        * win/tools/vsprops/FeatureDefinesCairo.vsprops:

2010-01-20  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Darin Adler and Adam Roben.

        Feature defines are difficult to maintain on Windows builds
        https://bugs.webkit.org/show_bug.cgi?id=33883
        
        FeatureDefines.vsprops are now maintained in a way similar to
        Configurations/FeatureDefines.xcconfig, with the added advantage
        of having a single FeatureDefines file across all projects.
        
        Keep this list of features (not enabled/disabled state) in sync with
        FeatureDefines.xcconfig files in JavaScriptCore, WebCore, and WebKit.
        
        Add new features to both PreprocessorDefinitions and UserMacro sections.
        Set any ENABLE_FEATURE_NAME macro to an empty string to disable that feature.

        * win/tools/scripts/feature-defines.sh: Added.
        * win/tools/vsprops/FeatureDefines.vsprops: Added.
        * win/tools/vsprops/FeatureDefinesCairo.vsprops: Added.
        * win/tools/vsprops/WinCairo.vsprops: Removed ENABLE_FILTERS. Now set in FeatureDefinesCairo.vsprops.

2010-01-13  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Darin Adler.

        <rdar://problem/7532544>
        
        Expose new method on WebKitSystemInterface, WKGetUserToBaseCTM(), which will
        be used for a shadow drawing fix. Once more, with feeling. On Windows.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-01-13  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Darin Adler.

        <rdar://problem/7532544>
        
        Expose new method on WebKitSystemInterface, WKGetUserToBaseCTM(), which will
        be used for a shadow drawing fix.
        
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2010-01-13  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Darin Adler.

        <rdar://problem/7532544>
        
        Expose new method on WebKitSystemInterface, WKGetUserToBaseCTM(), which will
        be used for a shadow drawing fix.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-01-07  Alexey Proskuryakov  <ap@apple.com>

        Not reviewed, build fix.

        Windows buid fix - disable warning 4251 (class needs to have dll-interface to be used by
        clients of another class). WebCore doesn't use all methods of JSString, so
        we don't export all classes clients could theoretically access via JSString.

        * win/tools/vsprops/common.vsprops:

2009-12-21  Mark Rowe  <mrowe@apple.com>

        Reviewed by Samuel Weinig.

        Update WebKitSystemInterface.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-12-21  Mark Rowe  <mrowe@apple.com>

        Reviewed by Samuel Weinig.

        Update WebKitSystemInterface.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-12-18  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        Update WebKitSystemInterface for <rdar://problem/7237059>.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-12-15  Dan Bernstein  <mitz@apple.com>

        Reviewed by Adam Roben.

        WebKitSystemInterface part of <rdar://problem/7173515> Use LOGFONT support in
        Core Graphics when available

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h: Declared
            wkCanCreateCGFontWithLOGFONT().
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2009-12-12  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Darin Adler.

       <rdar://problem/7453726> Pull shared UI code into WebKit

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-12-11  Chris Marrin  <cmarrin@apple.com>

        Reviewed by Adam Roben.

        Add QuartzCore build files to OpenSource tree
        https://bugs.webkit.org/show_bug.cgi?id=31856
        
        This allows proper building and linking with QuartzCore
        when present.

        * win/bin: Added.
        * win/bin/QuartzCoreInterface.dll: Added.
        * win/include/QuartzCoreInterface: Added.
        * win/include/QuartzCoreInterface/QuartzCoreInterface.h: Added.
        * win/lib/QuartzCoreInterface.lib: Added.

2009-12-07  Adam Roben  <aroben@apple.com>

        Windows build fix for checkouts with a space in the path

        * win/tools/scripts/auto-version.sh: Quote the output file's directory
        before passing it to mkdir.

2009-12-01  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Darin Adler.

        https://bugs.webkit.org/show_bug.cgi?id=32036
        Implement CredentialStorage::getFromPersistentStorage for CFNetwork

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:
        Update WebKitSystemInterface.

2009-11-24  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Brady Eidson.

        https://bugs.webkit.org/show_bug.cgi?id=31844
        SocketStreamHandleCFNet should support CONNECT proxy credentials

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:
        Update WebKitSystemInterface.

2009-11-22  Dan Bernstein  <mitz@apple.com>

        Reviewed by Eric Carlson.

        Updated WebKitSystemInterface.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-11-22  Dan Bernstein  <mitz@apple.com>

        Reviewed by Cameron Zwarich.

        Fixed a leak in WKDrawMediaUIPart().

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-11-20  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Simon Fraser.

        <rdar://problem/7414396> Leopard & Tiger: Support closed caption in <video> element

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-11-19  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Dan Bernstein.

        <rdar://problem/7035231>
        Support closed caption in <video> element

        * WebKitSystemInterface.h:
            Add prototypes for WKQTMovieHasClosedCaptions and WKQTMovieSetShowClosedCaptions,
            define WKMediaUIPartToggleClosedCaptionsButton.

2009-11-13  Anders Carlsson  <andersca@apple.com>

        Reviewed by Dan Bernstein.

        Update WebKitSystemInterface.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-11-13  Brent Fulgham  <bfulgham@webkit.org>

        Build correction.  No review.

        The WinCairo build requires ENABLE_FILTERS to work properly.

        * win/tools/vsprops/WinCairo.vsprops:

2009-11-02  Dan Bernstein  <mitz@apple.com>

        Reviewed by John Sullivan.

        WebKitSystemInterface part of making the appearance of the full-screen video HUD match
        QuickTime Player X’s HUD.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-10-26  Mark Rowe  <mrowe@apple.com>

        Reviewed by Adam Roben.

        Clean up the regex madness in auto-version.sh to make it obvious what the script is doing.

        Also teaches auto-version.sh to handle RC_PROJECTSOURCEVERSION that has more than three digits
        in the major component of the version number.

        * win/tools/scripts/auto-version.sh:

2009-10-19  Marshall Culpepper  <mculpepper@appcelerator.com>

        Reviewed by Eric Seidel.

        added cairo include and lib directories to debug_wincairo.vsprops
        https://bugs.webkit.org/show_bug.cgi?id=29831

        * win/tools/vsprops/debug_wincairo.vsprops:

2009-10-16  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Dan Bernstein.

        https://bugs.webkit.org/show_bug.cgi?id=30456
        Fixes for new Debug_All Windows build configuration.

        * win/tools/vsprops/debug_all.vsprops:
        Define DEBUG_ALL in Debug_All configuration.
        Continue to define USE_DEBUG_SAFARI_THEME for open source SafariTheme header usage.

2009-10-16  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        Add a Debug_All configuration to build entire stack as debug.
        Change Debug_Internal to:
        - stop using _debug suffix for all WebKit/Safari binaries
        - not use _debug as a DLL naming suffix
        - use non-debug C runtime lib.

        * win/tools/vsprops/debug_all.vsprops: Added.
        Use debug C runtime library in debug_all.
        Specify USE_DEBUG_SAFARI_THEME to get "_debug" suffix for debug_all.
        * win/tools/vsprops/debug_internal.vsprops:
        Don't specify debug C runtime library in debug_internal.
        Don't specify _debug suffix for standard debug_internal builds.

2009-10-05  Pierre d'Herbemont  <pdherbemont@webkit.org>

        Reviewed by Simon Fraser
        
        Support fullscreen in MediaPlayer (Mac)
        https://bugs.webkit.org/show_bug.cgi?id=26742
        
        New methods required for video fullscreen.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-10-02  Steve Falkenburg  <sfalken@apple.com>

        Windows build fix.
        Re-apply lost changes to auto-version.sh.
        
        * win/tools/scripts/auto-version.sh:

2009-10-02  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Adam Roben.

        <rdar://problem/7271334> 
        Rename MediaControllerThemeQT to MediaControllerThemeQuickTime

        * WebKitSystemInterface.h: 
        MediaControllerThemeQT -> MediaControllerThemeQuickTime

2009-10-02  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Mark Rowe.

        <https://bugs.webkit.org/show_bug.cgi?id=29989>
        Safari version number shouldn't be exposed in WebKit code
        
        For a WebKit version of 532.3.4:
        Product version is: 5.32.3.4 (was 4.0.3.0)
        File version is: 5.32.3.4 (was 4.532.3.4)

        * win/tools/scripts/PRODUCTVERSION: Removed.
        * win/tools/scripts/auto-version.sh: Re-worked script to remove references to PRODUCTVERSION.

2009-09-25  Dan Bernstein  <mitz@apple.com>

        Reviewed by Adam Roben.

        WebKitSystemInterface changes for
        <rdar://problem/7211635> 2 byte characters are displayed as garbaged
        <rdar://problem/7212626> garbled/gibberish text (off-by-one)

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h: Added
        wkAddFontsFromPlistRepresentation() and replaced
        wkCreateFontsPlistRepresentation() with wkCreateFontsPlist() and
        wkAddFontsFromPlistRepresentation() with wkAddFontsFromPlist().
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2009-09-23  Marshall Culpepper  <mculpepper@appcelerator.com>

        Reviewed by Eric Seidel.
        
        Added $(WebKitLibrariesDir)/include/cairo so cairo.h is found by
        default when the necessary dependencies are extracted into the
        WebKitLibrariesDir.
        https://bugs.webkit.org/show_bug.cgi?id=29661

        * win/tools/vsprops/WinCairo.vsprops:

2009-09-09  Brent Fulgham  <bfulgham@webkit.org>

        Reviewed by Dave Levin.

        Adjust WinCairo-specific property sheet to use static versions of
        libjpeg.lib and libpng.lib.  Change to libpng.lib required addition
        of zlib.lib to link.

        * win/tools/vsprops/WinCairo.vsprops:

2009-08-28  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Adam Roben.

        Define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1
        to automatically use secure versions of C runtime lib calls on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=28824
        
        * win/tools/vsprops/common.vsprops:

2009-08-25  Brent Fulgham  <bfulgham@webkit.org>

        Rubber stamped by Steve Falkenburg.

        debug_wincairo.vsprops was linking against wrong C runtime.

        * win/tools/vsprops/debug_wincairo.vsprops: Link to correct
          C runtime (as in the standard 'debug.vsprops' file.)

2009-08-24  Brent Fulgham  <bfulgham@webkit.org>

        Reviewed by Steve Falkenburg.

        Revise CFLite Debug build to emit DLL's with _debug label.
        https://bugs.webkit.org/show_bug.cgi?id=28695.

        * win/tools/vsprops/debug_wincairo.vsprops: Added.

2009-08-12  Peter Kasting  <pkasting@google.com>

        Reviewed by Darin Adler.

        https://bugs.webkit.org/show_bug.cgi?id=27323
        Change pattern that strips all trailing whitespace to just remove EOL
        chars (\r, \n), to make it clear that varying EOL chars is the primary
        problem being solved.

        * win/tools/scripts/auto-version.sh:

2009-08-10  Peter Kasting  <pkasting@google.com>

        Reviewed by George Staikos.

        https://bugs.webkit.org/show_bug.cgi?id=27323
        Even more line ending-stripping for auto-version.sh, based on output
        provided by Jessie Berlin.

        * win/tools/scripts/auto-version.sh:

2009-08-10  Brent Fulgham  <bfulgham@webkit.org>

        Reviewed by Adam Roben.

        https://bugs.webkit.org/show_bug.cgi?id=28048.
        Move various WinCairo build settings into *.vsprops file.

        * win/tools/vsprops/cURL.vsprops: Added.

2009-08-06  Peter Kasting  <pkasting@google.com>

        Reviewed by Adam Barth.

        https://bugs.webkit.org/show_bug.cgi?id=27323
        Strip line endings at all points auto-version.sh reads data, not just
        the one I happened to run into.

        * win/tools/scripts/auto-version.sh:

2009-07-27  Peter Kasting  <pkasting@google.com>

        Reviewed by Adam Roben.

        https://bugs.webkit.org/show_bug.cgi?id=27323
        Correctly parse command output, even when the line endings are not LF,
        so that we don't create an autoversion.h that MSVC chokes on.

        * win/tools/scripts/auto-version.sh:

2009-07-13  Brent Fulgham  <bfulgham@webkit.org>

        Reviewed by Adam Roben.

        Add new configuration flag for redistributable Windows build.
        https://bugs.webkit.org/show_bug.cgi=27087
        
        * win/tools/vsprops/WinCairo.vsprops: Added.  Defines the
          new WIN_CAIRO flag used to drive non-Apple Windows build.

2009-07-10  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Simon Fraser.

        Update WebKitSystemInterface for <rdar://problem/7049066>.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-07-06  Eric Carlson  <eric.carlson@apple.com>

        Update WebKitSystemInterface for <rdar://problem/7008093>.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-07-06  Anders Carlsson  <andersca@apple.com>

        Update WebKitSystemInterface.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-07-02  Pierre d'Herbemont  <pdherbemont@apple.com>

        Reviewed by Simon Fraser.

        Update WebKitSystemInterface for <rdar://problem/6518119>

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-07-01  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Simon Fraser.

        Update WebKitSystemInterface for <rdar://problem/7014990>

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-06-29  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Simon Fraser.

        Update WebKitSystemInterface for <rdar://problem/7014813>

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-06-25  Simon Fraser  <simon.fraser@apple.com>

        Rubber-stamped by Mark Rowe.
        
        <rdar://problem/6999737>
        
        Update the media controller images.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-06-16  Simon Fraser  <simon.fraser@apple.com>

        Rubber-stamped by Anders Carlsson.

        Update WebKitSystemInterface for <rdar://problem/6937882>.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-06-02  Anders Carlsson  <andersca@apple.com>

        Rubber-stamped by Mark Rowe.

        Update WebKitSystemInterface.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-05-27  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Dan Bernstein.

        Update WebKitSystemInterface.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a: Added.
        * libWebKitSystemInterfaceTiger.a:

2009-05-26  Anders Carlsson  <andersca@apple.com>

        Reviewed by Dan Bernstein.

        <rdar://problem/6901751> 
        REGRESSION (r35515): Tiger crash painting the selection on registration page of car2go.com

        Remove WKCGContextIsSafeToClip.
        
        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceTiger.a:

2009-05-21  Dan Bernstein  <mitz@apple.com>

        Rubber-stamped by Mark Rowe.

        - correct a copyright header accidently reverted in r43964

        * WebKitSystemInterface.h:

2009-05-21  Dan Bernstein  <mitz@apple.com>

        Reviewed by Anders Carlsson.

        - WebKitSystemInterface part of <rdar://problem/6901751> REGRESSION
          (r35515): Tiger crash painting the selection on registration page of
          car2go.com

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceTiger.a:

2009-05-07  Simon Fraser  <simon.fraser@apple.com>

        Source changes reviewed by Darin Adler
        
        <rdar://problem/6864091> Endcap of media controls slider is fuzzy
        
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-04-28  Steve Falkenburg  <sfalken@apple.com>

        Fix extraneous warning about AnalyzeWithLargeStack not being defined in Windows builds.
        Indirected definition through a UserMacro.
        
        Reviewed by Mark Rowe.

        * win/tools/vsprops/common.vsprops:

2009-04-28  Steve Falkenburg  <sfalken@apple.com>

        Fix extraneous warning about PRODUCTION not being defined in Windows builds.
        Indirected definition for __PRODUCTION__ through a UserMacro.
        
        Reviewed by Mark Rowe.

        * win/tools/vsprops/common.vsprops:

2009-04-24  Simon Fraser  <simon.fraser@apple.com>

        Source changes reviewed by Darin Adler
        
        https://bugs.webkit.org/show_bug.cgi?id=22242
        
        Update WebKitSystemInterface for Mac with fixes for video controller drawing.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-04-22  Ada Chan  <adachan@apple.com>

        Update WebKitSystemInterface with new method that maps CFNetwork error code to localized description.
        
        Reviewed by Darin Adler.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2009-04-20  Steve Falkenburg  <sfalken@apple.com>

        Separate JavaScriptCore.dll from WebKit.dll.
        Slight performance improvement or no change on benchmarks.
        
        Allows us to break a circular dependency between CFNetwork and WebKit on Windows,
        and simplifies standalone JavaScriptCore builds.

        Reviewed by Oliver Hunt.

        * win/tools/vsprops/common.vsprops: Add BUILDING_{project} preprocessor define.

2009-04-18  Pierre d'Herbemont  <pdherbemont@apple.com>

        Reviewed by Mark Rowe.

        <rdar://problem/6781295> video.buffered and video.seekable are not
        the same. video.buffered should return only what is buffered and
        not what is seekable

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-04-18  Pierre d'Herbemont  <pdherbemont@apple.com>

        Reviewed by Adele Peterson.
        
        <rdar://problem/6747241> work around QTKit no longer reaching
        QTMovieLoadStateComplete

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-04-15  Steve Falkenburg  <sfalken@apple.com>

        Updated WebKitSystemInterface for Windows.
        Changes needed for <rdar://problem/6785760>

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2009-04-14  Mark Rowe  <mrowe@apple.com>

        Update WebKitSystemInterface so that the Tiger portion supports PowerPC.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-04-13  Antti Koivisto  <antti@apple.com>

        Reviewed by Darin Adler.
        
        <rdar://problem/6740294> Increase the connection count per host

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-04-10  Eric Carlson  <eric.carlson@apple.com>

        WebKitSystemInterface changes for <rdar://problem/6646998>

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2009-04-10  Simon Fraser  <simon.fraser@apple.com>

        Fix the leopard build by updating WebKitSystemInterface.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:

2009-03-30  Steve Falkenburg  <sfalken@apple.com>

        Bump version to 530.

        * win/tools/scripts/VERSION:

2009-03-26  Adam Roben  <aroben@apple.com>

        Remove SafariThemeConstants.h, which is now provided by
        WebKitSupportLibrary

        * win/include/SafariTheme: Removed.
        * win/include/SafariTheme/SafariThemeConstants.h: Removed.

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

        Reviewed by Mark Rowe.

        - WebKitSystemInterface part of removing build-time and run-time support
          for legacy versions of CFNetwork and Core Graphics

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2009-01-30  Dan Bernstein  <mitz@apple.com>

        Reviewed by Timothy Hatcher.

        - <rdar://problem/6545912> expose the build number in autoversion.h

        * win/tools/scripts/auto-version.sh: Added a #define __BUILD_NUMBER__
        with the full build number.

2009-01-08  Dan Bernstein  <mitz@apple.com>

        Reviewed by Adam Roben.

        - WebKitSystemInterface changes to support Core Graphics native glyph drawing

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2008-11-11  Ada Chan  <adachan@apple.com>

        Fix: https://bugs.webkit.org/show_bug.cgi?id=22187
        Bug 22187: CLEARTYPE_QUALITY flag is not supported on Win2000
        
        Update window versions to correspond to Windows XP.

        Reviewed by Steve Falkenburg.

        * win/tools/vsprops/common.vsprops:

2008-10-23  Anders Carlsson  <andersca@apple.com>

        Reviewed by John Sullivan.

        Fix <rdar://problem/6306513> by adding a workaround for <rdar://problem/6304600>.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2008-10-08  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Jon Honeycutt.

        Remove restriction on version number ending in a 4.

        * win/tools/scripts/auto-version.sh:

2008-10-07  Anders Carlsson  <andersca@apple.com>

        Reviewed by Mitz Pettel.

        Update WebKitSystemInterface.
        
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2008-09-09  Dan Bernstein  <mitz@apple.com>

        Reviewed by Darin Adler.

        - WebKitLibraries part of <rdar://problem/6206244> Use alternate character-to-glyph interface on Leopard

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:

2008-09-04  Adam Roben  <aroben@apple.com>

        Ignore warning LNK4221 on Windows

        This warning is emitted when an object file with no public symbols is
        passed to the linker/librarian. This often occurs in WebCore for files
        that have been disabled via ENABLE()/USE() macros.

        Rubberstamped by Anders Carlsson.

        * win/tools/vsprops/common.vsprops: Ignore warning LNK4221.

2008-08-27  Timothy Hatcher  <timothy@apple.com>

        Adds the WKAdvanceDefaultButtonPulseAnimation function.

        <rdar://problem/6173530> Add Mac support for -webkit-appearance: default-button

        Reviewed by Adele Peterson.

        * WebKitSystemInterface.h: Added WKAdvanceDefaultButtonPulseAnimation.
        * libWebKitSystemInterfaceLeopard.a: Updated.
        * libWebKitSystemInterfaceTiger.a: Updated.

2008-08-26  Adam Roben  <aroben@apple.com>

        Disable a truncation warning that is disabled/doesn't exist on Mac

        This warning was firing when initializing floats from double literals.
        I haven't yet found any other situation that would cause this warning
        to arise.

        Reviewed by Sam Weinig.

        * win/tools/vsprops/common.vsprops: Turn off warning C4305.

2008-07-20  Steve Falkenburg  <sfalken@apple.com>

        Build fix.

        * win/tools/vsprops/common.vsprops:

2008-07-08  Dan Bernstein  <mitz@apple.com>

        Reviewed by John Sullivan.

        - WebKitSystemInterface part of <rdar://problem/6008409> Need a way to disable updates in offscreen views

        * WebKitSystemInterface.h: Added WKWindowWillOrderOnScreenNotification.
        * libWebKitSystemInterfaceLeopard.a: Updated.
        * libWebKitSystemInterfaceTiger.a: Updated.

2008-07-01  Steve Falkenburg  <sfalken@apple.com>

        Bump version numbers.
        
        Reviewed by Mark Rowe.

        * win/tools/scripts/PRODUCTVERSION:
        * win/tools/scripts/VERSION:

2008-05-13  Dan Bernstein  <mitz@apple.com>

        Reviewed by John Sullivan.

        - WebKitSystemInterface support for <rdar://problem/5725912> improve render quality of transformed text

        * libWebKitSystemInterfaceLeopard.a: Improved glyph positioning in
        transformed graphics contexts.
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h: Added
        wkSetCGContextFontRenderingStyle().
        * win/lib/WebKitSystemInterface.lib: Updated.
        * win/lib/WebKitSystemInterface_debug.lib: Updated.

2008-05-09  Adam Roben  <aroben@apple.com>

        Disable a MSVC warning

        Reviewed by Darin Adler.

        * win/tools/vsprops/common.vsprops: Add warning 4503 to the list of
        disabled warnings. It's a warning about decorated names being longer
        than MSVC's limit of 4096 characters. This warning doesn't indicate a
        correctness problem, but these truncated decorated names will be
        harder to recognize during debugging or when they appear in linker
        errors.

2008-04-28  Darin Adler  <darin@apple.com>

        Reviewed by Adam.

        - fix Windows build

        * win/tools/vsprops/common.vsprops: Add warning 4344 to the list of disabled warnings.
        It's really a warning about a bug they fixed in MSVC -- not helpful to us in WebKit.

2008-04-24  Mark Rowe  <mrowe@apple.com>

        Reviewed by Sam Weinig.

        Remove code for calculating the glyph cache size.

        * WebKitSystemInterface.h: Remove unused symbol.
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2008-03-28  Steve Falkenburg  <sfalken@apple.com>

        Versioning.

        * win/tools/scripts/PRODUCTVERSION:

2008-03-26  Adam Roben  <aroben@apple.com>

        Windows build fix after r31322

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h: Updated.
        * win/lib/WebKitSystemInterface.lib: Updated.
        * win/lib/WebKitSystemInterface_debug.lib: Updated.

2008-03-26  Mark Rowe  <mrowe@apple.com>

        Reviewed by David Hyatt.

        Make the Ahem font antialias correctly on Acid3 on Tiger.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceTiger.a:

2008-03-19  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Sam Weinig.

        Fix http://bugs.webkit.org/show_bug.cgi?id=17816.
        Bug 17816: libWebCoreSQLite3.a is 2-architecture universal binary (not 4-architecture)

        * libWebCoreSQLite3.a:  Land a 4-way fat binary.

2008-03-12  Steve Falkenburg  <sfalken@apple.com>

        New version of WebKitSystemInterface.lib with
        more compiler warnings suppressed.

        * win/lib/WebKitSystemInterface.lib:
        * win/tools/vsprops/common.vsprops:

2008-03-12  Dan Bernstein  <mitz@apple.com>

        Reviewed by Darin Adler and Sam Weinig.

        - <rdar://problem/4433248> use CoreText API instead of SPI on Leopard

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:

2008-03-11  Steve Falkenburg  <sfalken@apple.com>

        Disable two PGO/LTCG specific warnings.
        
        Reviewed by Oliver.

        * win/tools/vsprops/common.vsprops:

2008-02-29  Mark Rowe  <mrowe@apple.com>

        Update Tiger version of WebKitSystemInterface to match r30690.

        * libWebKitSystemInterfaceTiger.a:

2008-02-29  Adele Peterson  <adele@apple.com>

        Reviewed by Mark.

        Auto-generate image arrays.

        * libWebKitSystemInterfaceLeopard.a:

2008-02-29  Mark Rowe  <mrowe@apple.com>

        Reviewed by Anders Carlsson.

        Replace use of WKPathFromFont with implementation in terms of public API.

        * WebKitSystemInterface.h:  Remove unused symbol.
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2008-02-29  Mark Rowe  <mrowe@apple.com>

        Reviewed by Oliver Hunt.

        Fix spelling of "request" in name of WKNSURLProtocolClassForRequest.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2008-02-29  Mark Rowe  <mrowe@apple.com>

        Reviewed by Oliver Hunt.

        Don't use WKSupportsMultipartXMixedReplace on Leopard as multipart/x-mixed-replace is always handled by NSURLRequest.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:

2008-02-29  Mark Rowe  <mrowe@apple.com>

        Reviewed by Oliver Hunt and Oliver Hunt.

        <rdar://problem/4753845> WebKit should use CGEventSourceSecondsSinceLastEventType in place of WKSecondsSinceLastInputEvent SPI.

        * WebKitSystemInterface.h:  Remove unused symbol.
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2008-02-28  Mark Rowe  <mrowe@apple.com>

        Reviewed by Dan Bernstein.

        Remove two unused functions from WebKitSystemInterface.

        * WebKitSystemInterface.h:  Remove WKPreferRGB32Key and WKGetDefaultGlyphForChar as they are unused. Also remove
        a duplicate declaration of WKSecondsSinceLastInputEvent.
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2008-02-28  Mark Rowe  <mrowe@apple.com>

        Reviewed by Dave Hyatt.

        Make use of new CGFont APIs on Leopard rather than making a WebKitSystemInterface call.

        * WebKitSystemInterface.h:  Only declare WKGetFontMetrics on Tiger.
        * libWebKitSystemInterfaceLeopard.a:  Update for removal of WKGetFontMetrics.

2008-02-27  Brady Eidson  <beidson@apple.com>

        Tiger build fix

        * libWebKitSystemInterfaceTiger.a:

2008-02-27  Brady Eidson  <beidson@apple.com>

        Reviewed by Mark Rowe

        Removed some unused methods:
        WKGetNSURLResponseCalculatedExpiration
        WKGetNSURLResponseMustRevalidate

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2008-02-13  Adam Roben  <aroben@apple.com>

        * win/tools/scripts/auto-version.sh: Removed a redundant symbol.

2008-02-12  Adam Roben  <aroben@apple.com>

        Clean up auto-version.sh a bit

        It now does quite a bit less file I/O and many fewer fork/exec pairs.
        It's also quite a bit easier to read.

        Reviewed by Steve.

        * win/tools/scripts/auto-version.sh:

2008-02-12  Steve Falkenburg  <sfalken@apple.com>

        Versioning script change.

        * win/tools/scripts/auto-version.sh:

2008-02-07  Ada Chan  <adachan@apple.com>

        Added 4 new methods:
        wkSetClientCertificateInSSLProperties, 
        wkCanAccessCFURLRequestHTTPBodyParts,
        wkCFURLRequestCopyHTTPRequestBodyParts,
        wkCFURLRequestSetHTTPRequestBodyParts

        Rubber-stamped by Steve.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2008-02-04  Timothy Hatcher  <timothy@apple.com>

        <rdar://problem/5722735> Merge fix for SQLITE_FULL error
        is given even if the max_page_count is increased (2920)

        * libWebCoreSQLite3.a:

2008-02-01  Steve Falkenburg  <sfalken@apple.com>

        <rdar://problem/5717523> Don't set DEP opt-in flag (data execution prevention) since it is incompaible with the video plugin used on CNN.com
        
        Rubber-stamped by Jon Honeycutt.

        * win/tools/vsprops/common.vsprops:

2008-01-29  Mark Rowe  <mrowe@apple.com>

        Reviewed by Tim Hatcher.

        <rdar://problem/5600926> WebCore on Tiger must link to its own copy of SQLite 3.4 or newer (so HTML database behavior will be correct).

        * WebCoreSQLite3/sqlite3.h: Added.
        * WebCoreSQLite3/sqlite3ext.h: Added.
        * libWebCoreSQLite3.a: Added.

2008-01-29  Alexey Proskuryakov  <ap@webkit.org>

        Debug (external) build fix.

        Removed _DEBUG preprocessor definition, which indicates that debug libraries are used (while they aren't).
        This preprocessor definition is automatically set by Visual Studio as needed anyway.

        * win/tools/vsprops/debug.vsprops:

2008-01-17  Steve Falkenburg  <sfalken@apple.com>

        Add preprocessor define accidently dropped in my unification,
        and required by some builds.  Fixes an issue that caused both
        debug and release DLLs to be loaded.
        
        Rubber-stamped by Jon Honeycutt.

        * win/tools/vsprops/debug_internal.vsprops:

2008-01-16  Steve Falkenburg  <sfalken@apple.com>

        Use recommended security-related compiler settings.
        
        Reviewed by Adam.

        * win/tools/vsprops/common.vsprops:

2008-01-16  Steve Falkenburg  <sfalken@apple.com>

        Build fix.

        * win/tools/vsprops/release.vsprops:

2008-01-15  Adele Peterson  <adele@apple.com>

        Reviewed by Adam and Antti.

        Updated libraries for <rdar://problem/5619062> Add load progress indicator to video controls

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:
        * win/include/SafariTheme: Added.
        * win/include/SafariTheme/SafariThemeConstants.h: Added. Placeholder empty header until we release an updated WebKitSupportLibrary.

2008-01-14  Steve Falkenburg  <sfalken@apple.com>

        Use shared vsprops for most vcproj properties.
        
        Reviewed by Darin Adler.

        * win/tools/vsprops/common.vsprops:
        * win/tools/vsprops/debug.vsprops:
        * win/tools/vsprops/debug_internal.vsprops:
        * win/tools/vsprops/release.vsprops:

2008-01-11  Steve Falkenburg  <sfalken@apple.com>

        Share common files across projects.
        
        Unify vsprops files
        Debug:          common.vsprops, debug.vsprops
        Debug_Internal: common.vsprops, debug.vsprops, debug_internal.vsprops
        Release:        common.vsprops, release.vsprops
        
        Shared properties can go into common.vsprops, shared debug settings can go into debug.vsprops.
        debug_internal.vsprops will be mostly empty except for file path prefix modifiers.

        Moved auto-version.sh, VERSION, PRODUCTVERSION to tools.

        Reviewed by Adam Roben.

        * win/tools/WinTools.make:
        * win/tools/scripts: Added.
        * win/tools/scripts/PRODUCTVERSION: Added.
        * win/tools/scripts/VERSION: Added.
        * win/tools/scripts/auto-version.sh: Copied from WebCore/WebCore.vcproj/auto-version.sh.
        * win/tools/vsprops/debug.vsprops:
        * win/tools/vsprops/debug_internal.vsprops: Added.
        * win/tools/vsprops/release.vsprops:

2008-01-11  Steve Falkenburg  <sfalken@apple.com>

        Add shared vsprops to help unify our Windows tools settings.

        Reviewed by Hyatt.

        * win/tools: Added.
        * win/tools/WinTools.make: Added.
        * win/tools/vsprops: Added.
        * win/tools/vsprops/common.vsprops: Added.
        * win/tools/vsprops/debug.vsprops: Added.
        * win/tools/vsprops/release.vsprops: Added.

2008-01-07  Mark Rowe  <mrowe@apple.com>

        Update Tiger library to a G3-friendly version.

        * libWebKitSystemInterfaceTiger.a:

2008-01-07  Adele Peterson  <adele@apple.com>

        Reviewed by Antti, Adam, and Mitz.

        WebKitLibraries part of fix for 
        <rdar://problem/5619073> Updated look for <video> controls
        <rdar://problem/5619057> Add volume control to video controls

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2008-01-03  Mark Rowe  <mrowe@apple.com>

        Update Tiger library to a G3-friendly version.

        * libWebKitSystemInterfaceTiger.a:

2008-01-03  Adele Peterson  <adele@apple.com>

        Update libraries for <rdar://problem/4106190> Include "Where from" metadata in drag-and-dropped images

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2007-12-21  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Dan Bernstein.

        Fix http://bugs.webkit.org/show_bug.cgi?id=16549.
        Bug 16549: WebKit nightly build failing to launch on PowerPC G3s

        * libWebKitSystemInterfaceTiger.a: Update to a G3-friendly version.

2007-12-07  Dan Bernstein  <mitz@apple.com>

        Reviewed by Darin Adler.

        - updated system interface for fixing <rdar://problem/5499918> REGRESSION: insertion point in input field with custom border cuts holes in focus ring interior edges

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2007-11-27  John Sullivan  <sullivan@apple.com>

        Fixed 5614525, caused by a recent bug in WKGetExtensionsForMIMEType
        that affects Safari.
        
        reviewed by Kevin Decker

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2007-11-26  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Adam Roben.

        Bug 16137: Web Inspector window on Leopard should have a unified toolbar and window title
        http://bugs.webkit.org/show_bug.cgi?id=16137

        Add a new function to make bottom window corners square for textured windows.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceTiger.a:
        * libWebKitSystemInterfaceLeopard.a:

2007-11-23  Adam Roben  <aroben@apple.com>

        Add wkSetPatternPhaseInUserSpace to WebKitSystemInterface on Windows

        Reviewed by Tim.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h: Added
        declaration.
        * win/lib/WebKitSystemInterface.lib: Updated.
        * win/lib/WebKitSystemInterface_debug.lib: Updated.

2007-11-16  Anders Carlsson  <andersca@apple.com>

        Reviewed by Adam.

        <rdar://problem/5603832>
        XMLHttpRequest readyState 3 & responseText buffer issues.

        Add wkSetCFURLRequestShouldContentSniff.
        
        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2007-11-05  Antti Koivisto  <antti@apple.com>

        Reviewed by Sam.
        
        Update WKQTMovieViewSetDrawSynchronously.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2007-11-02  Antti Koivisto  <antti@apple.com>

        Reviewed by Darin Adler.
        
        Update to add WKQTMovieViewSetDrawSynchronously

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2007-10-26  Adele Peterson  <adele@apple.com>

        Reviewed by Tim Hatcher.

        Updating header too for WKDrawCapsLockIndicator.

        * WebKitSystemInterface.h:

2007-10-26  Adele Peterson  <adele@apple.com>

        Reviewed by Oliver.

        Adding WKDrawCapsLockIndicator in preparation for fixing the caps lock indicator.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2007-10-25  Adam Roben  <aroben@apple.com>

        Add wkSetPatternBaseCTM.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2007-10-25  Sam Weinig  <sam@webkit.org>

        Fix the windows build.

        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2007-10-25  Timothy Hatcher  <timothy@apple.com>

        Add WKSetPatternBaseCTM.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2007-10-25  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Adam.

        Update the Leopard WebKitSystemInterface to be 4-way univeral to include 64-bit.

        * libWebKitSystemInterfaceLeopard.a:

2007-10-25  Sam Weinig  <sam@webkit.org>

        Added wrapper for getting the foundation cache directory.

        Reviewed by Adam Roben.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2007-10-24  Adam Roben  <aroben@apple.com>

        Added some font-related functions needed for <rdar://5549919>

        Reviewed by Ada.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2007-10-24  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Mark Rowe.

        <rdar://problem/5069711> OpenSource version of libWebKitSystemInterface.a is Tiger only, causes issues if used on Leopard

        Add system specific versions of WebKitSystemInterface.

        * libWebKitSystemInterface.a: Removed.
        * libWebKitSystemInterfaceLeopard.a: Added.
        * libWebKitSystemInterfaceTiger.a: Added.

2007-10-11  Ada Chan  <adachan@apple.com>

        <rdar://problem/5534421>
        Added wkGetDefaultHTTPCookieStorage().  Updated libraries.

        Reviewed by Darin Adler.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2007-09-27  Sam Weinig  <sam@webkit.org>

        Build fix. Ran update-webkitsysteminterface script on Tiger, because
        the resulting binary differs when built on Tiger.

        * libWebKitSystemInterface.a:

2007-09-27  David Hyatt  <hyatt@apple.com>

        Update WebKitSYstemInterface for @font-face changes.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2007-09-18  Geoffrey Garen  <ggaren@apple.com>

        Build fix. Ran update-webkitsysteminterface script on Tiger, because
        the resulting binary differs when built on Tiger. See 
        <rdar://problem/5490613>.

        * libWebKitSystemInterface.a:

2007-09-18  Geoffrey Garen  <ggaren@apple.com>

        Build fix. Ran update-webkitsysteminterface script.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2007-08-28  Anders Carlsson  <andersca@apple.com>

        Add WKSetNSURLRequestShouldContentSniff.
        
        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2007-08-28  Ada Chan  <adachan@apple.com>

        <rdar://problem/4876242> Added SPI to fetch SSL certificate information.
        Updated libraries.
        
        Reviewed by Adam.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2007-07-23  Ada Chan  <adachan@apple.com>

        Reviewed by Steve.
        
        Update WebKitSystemInterface.{h,lib}.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2007-07-19  Ada Chan  <adachan@apple.com>

        Rubber-stamped by Adam.
        
        Update libraries.

        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2007-07-06  Adam Roben  <aroben@apple.com>

        Update WebKitSystemInterface.{h,lib} for <rdar://problem/5301994>

        Reviewed by Alice.

        * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
        * win/lib/WebKitSystemInterface.lib:
        * win/lib/WebKitSystemInterface_debug.lib:

2007-06-29  Antti Koivisto  <antti@apple.com>

        Reviewed by Maciej.
        
        Added WKQTMovieDataRate and WKQTMovieMaxTimeLoaded

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2007-03-29  Beth Dakin  <bdakin@apple.com>

        Rubber-stamped by Adam.

        Keep OpenSource building.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2007-03-28  Antti Koivisto  <antti@apple.com>

        Update libWebKitSystemInterface, previous version was out of date.

        * libWebKitSystemInterface.a:

2007-03-27  Antti Koivisto  <antti@apple.com>

        Reviewed by Darin Adler.
        
        Added wkGetWheelEventDeltas

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2007-03-07  Mark Rowe  <mrowe@apple.com>

        Build fix.  Rebuild against 10.4 SDK.

        * libWebKitSystemInterface.a:

2007-03-06  Kevin Decker  <kdecker@apple.com>

        Reviewed by Brady

        Fixed: <rdar://problem/4126976> private keys imported by WebKit should not be accessible by all applications

        * libWebKitSystemInterface.a:

2007-02-21  Anders Carlsson  <acarlsson@apple.com>

        Add new version with WKCGContextIsBitmapContext.
        
        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2006-12-16  Adele Peterson  <adele@apple.com>

        Reviewed by Adam.

        WebKitLibraries part of fix for:
        <rdar://problem/4463829> Switch to use new search field implementation for <input type="search">

        Added wkDrawTextFieldCellFocusRing.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2006-10-11  Darin Adler  <darin@apple.com>

        Reviewed by John Sullivan.

        * WebKitSystemInterface.h: Updated to a C++-compatible version.

2006-08-31  Adele Peterson  <adele@apple.com>

        Reviewed by John Sullivan.

        Removed wkSecureEventInput and wkSetSecureEventInput, since this can be done with API.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2006-08-30  Adele Peterson  <adele@apple.com>

        Reviewed by Hyatt.

        Updated for http://bugs.webkit.org/show_bug.cgi?id=10575
        Enable secure input mode for new password fields

        * WebKitSystemInterface.h: Added WKSetSecureEventInput and WKSecureEventInput;
        * libWebKitSystemInterface.a:

2006-07-09  Anders Carlsson  <acarlsson@apple.com>

        Reviewed by Darin Adler.

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:
        Add WKPathFromFont.
        
2006-07-05  Adele Peterson  <adele@apple.com>

        Reviewed by Maciej and Hyatt.

        * WebKitSystemInterface.h: Updated.
        * libWebKitSystemInterface.a: Updated.

2006-06-16  Adele Peterson  <adele@apple.com>

        Reviewed by Alice.

        * WebKitSystemInterface.h: Added WKDrawBezeledTextArea().
        * libWebKitSystemInterface.a: ditto.

2006-04-01  Eric Seidel  <eseidel@apple.com>

        * libWebKitSystemInterface.a: commit a universal binary.

2006-04-01  Darin Adler  <darin@apple.com>

        Reviewed by Beth.

        * libWebKitSystemInterface.a: Changed alpha in the focus-ring drawing
        code to use the system default alpha.

2006-03-17  Eric Seidel  <eseidel@apple.com>

        * libWebKitSystemInterface.a: commit a universal binary.

2006-03-17  Adele Peterson  <adele@apple.com>

        * WebKitSystemInterface.h: Added WKDrawBezeledTextFieldCell()
        * libWebKitSystemInterface.a: ditto

2006-02-28  John Sullivan  <sullivan@apple.com>

        * WebKitSystemInterface.h: Removed WKMouseIsDown()
        * libWebKitSystemInterface.a: ditto

2006-02-23  Timothy Hatcher  <timothy@apple.com>

        New build to fix the i386 arch. (The _cuEnc64 symbol was missing.)

        * libWebKitSystemInterface.a:

2006-02-19  Darin Adler  <darin@apple.com>

        * WebKitSystemInterface.h: Added WKDrawFocusRing.
        * libWebKitSystemInterface.a: Ditto.

2006-02-06  John Sullivan  <sullivan@apple.com>

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:
        removed WKExecutableLinkedInTigerOrEarlier

2005-11-01  Darin Adler  <darin@apple.com>

        * libWebKitSystemInterface.a: Updated.

2005-10-04  Maciej Stachowiak  <mjs@apple.com>

        - updated

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-09-08  Justin Garcia  <justin.garcia@apple.com>

        * WebKitSystemInterface.h: Update to latest
        * libWebKitSystemInterface.a: ditto

2005-09-04  Darin Adler  <darin@apple.com>

        * WebKitSystemInterface.h: Update to latest
        * libWebKitSystemInterface.a: Ditto.

2005-08-07  Darin Adler  <darin@apple.com>

        * libWebKitSystemInterface.a: Universal binary.
        * WebKitSystemInterface.h: Updated for calls that Eric recently removed.

2005-07-01  John Sullivan  <sullivan@apple.com>

        - added WKExecutableLinkedInTigerOrEarlier

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-06-06  Maciej Stachowiak  <mjs@apple.com>

        - updated for crashing bugfix

        * libWebKitSystemInterface.a:

2005-06-06  Maciej Stachowiak  <mjs@apple.com>

        - updated

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-06-06  Maciej Stachowiak  <mjs@apple.com>

        - updated

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-06-06  Maciej Stachowiak  <mjs@apple.com>

        - updated

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-06-06  Maciej Stachowiak  <mjs@apple.com>

        - updated

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-06-06  Maciej Stachowiak  <mjs@apple.com>

        - updated

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-06-06  Maciej Stachowiak  <mjs@apple.com>

        - updated

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-06-06  Maciej Stachowiak  <mjs@apple.com>

        - updated

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-06-06  Maciej Stachowiak  <mjs@apple.com>

        - updated

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-06-05  Maciej Stachowiak  <mjs@apple.com>

        - added a few more bits of SPI

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-06-05  Maciej Stachowiak  <mjs@apple.com>

        - added file type and NSURLResponse caching SPI

        * WebKitSystemInterface.h:
        * libWebKitSystemInterface.a:

2005-06-05  Maciej Stachowiak  <mjs@apple.com>

        - initial checkin of WebKitSystemInterface binary

        * WebKitSystemInterface.h: Added.
        * libWebKitSystemInterface.a: Added.

