2010-01-27  Mark Rowe  <mrowe@apple.com>

        Merge r53512.

    2010-01-19  Jon Honeycutt  <jhoneycutt@apple.com>

        MSAA: The child <option> elements of a non-multiple <select> are not
        exposed

        https://bugs.webkit.org/show_bug.cgi?id=33773
        <rdar://problem/7550556>

        Reviewed by Alice Liu.

        * English.lproj/Localizable.strings:
        Add new localized strings.

2010-01-25  Mark Rowe  <mrowe@apple.com>

        Merge r53195.

    2010-01-13  Kevin Decker  <kdecker@apple.com>

        Reviewed by Mark Rowe.

        https://bugs.webkit.org/show_bug.cgi?id=33610
        <rdar://problem/7288546> Silverlight full screen performance problem seen on Snow Leopard.

         * WebKit.xcodeproj/project.pbxproj: Link the project against OpenGL.

2009-07-02  Adam Roben  <aroben@apple.com>

        Fix warnings from update-webkit-localizable-strings

        Rubber-stamped by Eric Carlson.

        * English.lproj/Localizable.strings: Updated.

2009-07-02  Adam Roben  <aroben@apple.com>

        Update StringsNotToBeLocalized.txt for (not so) recent changes

        Bug 26926: StringsNotToBeLocalized.txt is out-of-date
        <https://bugs.webkit.org/show_bug.cgi?id=26926>

        Reviewed by John Sullivan.

        * StringsNotToBeLocalized.txt:

2009-07-02  Pierre d'Herbemont  <pdherbemont@apple.com>

        Reviewed by Simon Fraser.

        <rdar://problem/6518119>

        Add localized strings for media controller status messages.

        * English.lproj/Localizable.strings: Localized text.

2009-06-08  Dan Bernstein  <mitz@apple.com>

        Rubber-stamped by Mark Rowe.

        - updated the project after giving Objective-C++ the .mm extension

        * WebKit.xcodeproj/project.pbxproj:

2009-06-04  Sam Weinig  <sam@webkit.org>

        Reviewed by Alice Liu.

        Move WebView internal data into WebViewData.h/mm.

        * WebKit.xcodeproj/project.pbxproj:

2009-06-03  Sam Weinig  <sam@webkit.org>

        Reviewed by Mark Rowe.

        Added WebDelegateImplementationCaching.h/mm

        * WebKit.xcodeproj/project.pbxproj:

2009-06-03  Sam Weinig  <sam@webkit.org>

        Reviewed by Mark Rowe.

        Add WebViewInternal.mm.

        * WebKit.xcodeproj/project.pbxproj:

2009-06-03  Dan Bernstein  <mitz@apple.com>

        Reviewed by Anders Carlsson.

        - WebKit project part of eliminating WebCoreTextRenderer

        * WebKit.xcodeproj/project.pbxproj: Changed WebKitNSStringExtras.m to
            compile as Objective-C++.

2009-06-01  Darin Adler  <darin@apple.com>

        Reviewed by Maciej Stachowiak.

        Bug 26113: break WebTextCompletionController out into its own source file
        https://bugs.webkit.org/show_bug.cgi?id=26113

        * WebKit.xcodeproj/project.pbxproj: Add WebTextCompletionController.h/mm.

2009-05-28  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Anders Carlsson.

        Symlink WebKitPluginHost.app in to place if needed.

        * WebKit.xcodeproj/project.pbxproj:

2009-05-24  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes. Got rid of most full-file exceptions.

2009-05-16  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig and Dan Bernstein.

        Fix <rdar://problem/6889644>.
        
        * English.lproj/Localizable.strings:

2009-05-10  Alexey Proskuryakov  <ap@webkit.org>

        Reviewed by Dan Bernstein.

        <rdar://problem/6870383> Have to enter credentials twice when downloading from a protected page

        * WebKit.xcodeproj/project.pbxproj: Renamed Misc/WebDownload.m as WebDownload.mm, so that
        it could use C++ code from AuthenticaitonMac.h.

2009-04-27  Douglas R. Davidson  <ddavidso@apple.com>

        Add localizable strings for 
        <rdar://problem/6724106> WebViews need to implement text checking

        Reviewed by Justin Garcia.

        * English.lproj/Localizable.strings:

2009-04-27  Kevin Decker  <kdecker@apple.com>

        Reviewed by Anders Carlsson.
                
        <rdar://problem/6352982>

        * WebKit.xcodeproj/project.pbxproj: Added WebNetscapeContainerCheckContextInfo.mm to the project.

2009-04-23  Kevin Decker  <kdecker@apple.com>

        Reviewed by Anders Carlsson.

        * WebKit.xcodeproj/project.pbxproj: Added WebNetscapeContainerCheckPrivate.mm and header to the project.

2009-04-21  Adam Roben  <aroben@apple.com>

        Update StringsNotToBeLocalized.txt for recent changes

        Rubber-stamped by John Sullivan.

        * StringsNotToBeLocalized.txt:

2009-04-19  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes.

2009-04-17  David Kilzer  <ddkilzer@apple.com>

        Simplify FEATURE_DEFINES definition

        Reviewed by Darin Adler.

        This moves FEATURE_DEFINES and its related ENABLE_FEATURE_NAME
        variables to their own FeatureDefines.xcconfig file.  It also
        extracts a new ENABLE_GEOLOCATION variable so that
        FEATURE_DEFINES only needs to be defined once.

        * WebKit.xcodeproj/project.pbxproj: Added
        FeatureDefines.xcconfig file.

2009-04-10  Timothy Hatcher  <timothy@apple.com>

        Remove DOMDocumentPrivate.h now that <rdar://problem/6730996> is fixed.

        Rubber-stamped by Mark Rowe.

        * WebKit.xcodeproj/project.pbxproj:

2009-04-09  Mike Thole  <mthole@apple.com>

        Reviewed by Adam Roben.

        * WebKit.xcodeproj/project.pbxproj:
            Set the Localizable.strings encoding to UTF-16.

2009-04-07  Anders Carlsson  <andersca@apple.com>

        Try to fix the Leopard build once more.

        * WebKit.xcodeproj/project.pbxproj:

2009-04-07  Anders Carlsson  <andersca@apple.com>

        Another attempt at fixing the build.
        
        * WebKit.xcodeproj/project.pbxproj:

2009-04-02  Adele Peterson  <adele@apple.com>

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj: 
        Add WebDOMOperationsInternal.h and make WebDOMOperationsPrivate.h private. 

2009-04-01  Greg Bolsinga  <bolsinga@apple.com>

        Reviewed by Mark Rowe.

        https://bugs.webkit.org/show_bug.cgi?id=24990
        Put SECTORDER_FLAGS into xcconfig files.

        * WebKit.xcodeproj/project.pbxproj:

2009-03-27  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes.

2009-03-16  Darin Adler  <darin@apple.com>

        Reviewed by Dan Bernstein.

        * English.lproj/Localizable.strings: Updated.
        * StringsNotToBeLocalized.txt: Updated for recent changes.

2009-03-13  Greg Bolsinga  <bolsinga@apple.com>

        Reviewed by Simon Fraser.

        Update Geolocation perimission dialogs to be asynchronous.
        https://bugs.webkit.org/show_bug.cgi?id=24505

        Add WebGeolocation, a wrapper around WebCore::Geolocation. It mimics the
        coding style set by WebSecurityOrigin.

        * WebKit.xcodeproj/project.pbxproj:

2009-03-13  Anders Carlsson  <andersca@apple.com>

        Reviewed by Dan Bernstein.

        <rdar://problem/6610666> Revise the Cocoa event model text API
        
        Remove nptextinput.h
        
        * WebKit.xcodeproj/project.pbxproj:

2009-03-03  David Kilzer  <ddkilzer@apple.com>

        <rdar://problem/6581203> WebCore and WebKit should install the same set of headers during installhdrs phase as build phase

        Reviewed by Mark Rowe.

        The fix is to add INSTALLHDRS_COPY_PHASE = YES and
        INSTALLHDRS_SCRIPT_PHASE = YES to WebKit.xcconfig, then to
        make sure various build phase scripts work with the installhdrs
        build phase.

        * WebKit.xcodeproj/project.pbxproj:
        - Added shell code to prevent running "Check For Global
          Initializers", "Check For Exit Time Destructors" and "Check
          For Weak VTables" scripts during the installhdrs build phase.
        - Removed UMBRELLA_FRAMEWORKS_DIR from the Debug and Release
          targets since it's no longer needed after defining
          WEBCORE_PRIVATE_HEADERS_DIR in WebKit.xcconfig.

2009-03-03  David Kilzer  <ddkilzer@apple.com>

        Remove last vestiges of JAVASCRIPTCORE_PRIVATE_HEADERS_DIR from WebKit

        Reviewed by Adam Roben.

        Use of JAVASCRIPTCORE_PRIVATE_HEADERS_DIR was removed in r37465
        since NPAPI headers had migrated from JavaScriptCore to WebCore
        before that.

        * WebKit.xcodeproj/project.pbxproj: Removed
        JAVASCRIPTCORE_PRIVATE_HEADERS_DIR build setting from from Debug
        and Release configurations.

2009-03-02  Anders Carlsson  <andersca@apple.com>

        WebNetscapePluginPackage.mm is an Objective-C++ file.

        * WebKit.xcodeproj/project.pbxproj:

2009-03-02  Anders Carlsson  <andersca@apple.com>

        Reviewed by John Sullivan.

        Rename WebNetscapePluginPackage.m to WebNetscapePluginPackage.mm
        
        * WebKit.xcodeproj/project.pbxproj:

2009-02-20  Anders Carlsson  <andersca@apple.com>

        Reviewed by Dan Bernstein.

        Add new files.
        
        * WebKit.xcodeproj/project.pbxproj:

2009-02-13  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes.

2009-02-07  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes.

2009-02-04  Timothy Hatcher  <timothy@apple.com>

        Removed the WebDefaultScriptDebugDelegate now that we have CallScriptDebugDelegate.

        <rdar://problem/6508457> Launching widget in Dashcode debugger is
        super-slow due forwardInvocation: calling debug delegate

        Reviewed by Oliver Hunt.

        * WebKit.xcodeproj/project.pbxproj:

2009-02-02  Anders Carlsson  <andersca@apple.com>

        Reviewed by Dan Bernstein.
        
        Remove WebKitPluginContainerView.{h|mm}, they aren't used anywhere.
        
        * WebKit.xcodeproj/project.pbxproj:

2009-01-26  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Sam Weinig.

        Clean up after r40240.

        * WebKit.xcodeproj/project.pbxproj: Reinstate WebKitPluginHost.defs.

2009-01-25  Darin Adler  <darin@apple.com>

        Try to fix full build on Mac Leopard.

        * WebKit.xcodeproj/project.pbxproj: Removed WebKitPluginClient.defs from the WebKit target.
        Maybe this is temporary, but I had to do it to get the full build to succeed.

2009-01-25  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Dan Bernstein.

        Improve the consistency of settings in our .xcconfig files.

        * WebKit.xcodeproj/project.pbxproj:

2009-01-23  Brady Eidson  <beidson@apple.com>

        Rubberstamped by Darin Adler

        Rename CachedPagePlatformData to CachedFramePlatformData to more accurately reflect its true role.

        * WebKit.xcodeproj/project.pbxproj:

2009-01-20  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig.

        Add ProxyInstance files.
        
        * WebKit.xcodeproj/project.pbxproj:

2009-01-04  David Kilzer  <ddkilzer@apple.com>

        Don't install internal headers in WebKit framework

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj: Remove roles from internal
        headers so they're not installed.

2009-01-02  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated.

2008-12-23  Darin Adler  <darin@apple.com>

        Reviewed by Alexey Proskuryakov.

        - fix https://bugs.webkit.org/show_bug.cgi?id=22976
          crash due to Mail's use of WebArchive and WebResource on non-main thread

        * StringsNotToBeLocalized.txt: Updated.

        * WebKit.xcodeproj/project.pbxproj: Added new file WebNSObjectExtras.mm and
        existing file WebResourceInternal.h.

2008-12-08  David Kilzer  <ddkilzer@apple.com>

        Bug 22555: Sort "children" sections in Xcode project files

        <https://bugs.webkit.org/show_bug.cgi?id=22555>

        Reviewed by Eric Seidel.

        * WebKit.xcodeproj/project.pbxproj: Sorted.

2008-12-08  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes.

2008-12-05  Dan Bernstein  <mitz@apple.com>

        Mac build fix.

        * WebKit.xcodeproj/project.pbxproj:

2008-12-05  Dan Bernstein  <mitz@apple.com>

        Mac build fix.

        * WebKit.xcodeproj/project.pbxproj:

2008-12-04  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig.

        Add HostedNetscapePluginStream.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-12-03  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig.
        
        Move WebPluginRequest to its own file.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-12-03  Steve Falkenburg  <sfalken@apple.com>

        Update strings not to be localized.

        Reviewed by Adam Roben.

        * StringsNotToBeLocalized.txt:

2008-11-26  Mark Rowe  <mrowe@apple.com>

        Build fix.

        Fix up the references to files under WebKit/mac/Plugins/Hosted.

        * WebKit.xcodeproj/project.pbxproj:

2008-11-26  Anders Carlsson  <andersca@apple.com>

        Reviewed by Mark Rowe.

        Add plug-in host related files to the Xcode project.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-11-14  Dan Bernstein  <mitz@apple.com>

        Reviewed by Darin Adler.

        - part of <rdar://problem/6234337> Add a Text Direction menu to the default context menu when appropriate

        * English.lproj/Localizable.strings: Added the Text Direction submenu
        title.

2008-11-13  John Sullivan  <sullivan@apple.com>

        fixed <rdar://problem/6361578> Web Kit UI strings: a few edits

        Reviewed by Tim Hatcher

        * English.lproj/Localizable.strings:
        updated for these changes
        
        * StringsNotToBeLocalized.txt:
        removed unused exception

2008-11-12  John Sullivan  <sullivan@apple.com>

        fixed <rdar://problem/3839110> Authentication dialogs talk about passwords being sent "in the clear"

        Reviewed by Tim Hatcher

        * English.lproj/Localizable.strings:
        * StringsNotToBeLocalized.txt:
        updated for this change

2008-11-10  Anders Carlsson  <andersca@apple.com>

        Reviewed by Kevin Decker.
        
        Add WebHostedNetscapePluginView to the project.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-11-10  Anders Carlsson  <andersca@apple.com>

        Reviewed by Kevin Decker.

        Add a new WebBaseNetscapePluginView class.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-11-10  Anders Carlsson  <andersca@apple.com>

        Reviewed by Adam Roben.
                
        Rename WebBaseNetscapePluginView to WebNetscapePluginView.

        * StringsNotToBeLocalized.txt:
        * WebKit.xcodeproj/project.pbxproj:

2008-11-05  Anders Carlsson  <andersca@apple.com>

        Reviewed by Kevin Decker.

        Remove WebPlugInStreamLoaderDelegate.h
        
        * WebKit.xcodeproj/project.pbxproj:

2008-11-03  Darin Adler  <darin@apple.com>

        Reviewed by Tim Hatcher.

        - https://bugs.webkit.org/show_bug.cgi?id=22061
          create script to check for exit-time destructors

        * WebKit.xcodeproj/project.pbxproj: Added a script
        phase that runs the check-for-exit-time-destructors script.

2008-10-31  Anders Carlsson  <andersca@apple.com>

        Reviewed by Kevin Decker.

        Move WebNetscapePluginEventHandler classes to a subgroup of Netscape Plug-Ins.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-10-29  Matt Lilek  <webkit@mattlilek.com>

        Not reviewed, build fix.

        * WebKit.xcodeproj/project.pbxproj:

2008-10-28  Adele Peterson  <adele@apple.com>

        Reviewed by John Sullivan.

        Fix for https://bugs.webkit.org/show_bug.cgi?id=21880
        "files" string for multifile uploads needs to be localized

        * English.lproj/Localizable.strings: Updated with new string.

2008-10-28  Adele Peterson  <adele@apple.com>

        Reviewed by Sam Weinig. 

        * English.lproj/Localizable.strings:
        Updated.

2008-10-27  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes.

2008-10-24  Timothy Hatcher  <timothy@apple.com>

        Implement new InspectorClient methods to work with Settings.

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

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj: Add the new InspectorClientCF.cpp file.

2008-10-15  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Brady Eidson.

        <rdar://problem/5803460> A file named StringsNotToBeLocalized.txt file is installed Webkit.framework/Resources.

        * WebKit.xcodeproj/project.pbxproj: Don't install StringsNotToBeLocalized.txt.

2008-10-14  Maxime Britto  <britto@apple.com>

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj: Added two files for the 
        WebTextIterator, and made the WebTextIterator.h private

2008-10-04  Mark Rowe  <mrowe@apple.com>

        Reviewed by Tim Hatcher.

        Add a 'Check For Weak VTables' build phase to catch weak vtables as early as possible.

        * WebKit.xcodeproj/project.pbxproj:

2008-09-24  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes.

2008-09-15  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by Darin Adler, Beth Dakin

        Support strings for AXLists

        * English.lproj/Localizable.strings:

2008-09-15  Anders Carlsson  <andersca@apple.com>

        Reviewed by Mitz.

        Merge WebNetscapePluginStream into WebBaseNetscapePluginStream.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-09-02  Mark Rowe  <mrowe@apple.com>

        Reviewed by Tim Hatcher.

        Build fix.  Remove the now unnecessary check for "4" in the user agent string.

        * WebKit.xcodeproj/project.pbxproj:

2008-08-17  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Cameron Zwarich.
        
        Updated project files to XCode 3.1.

        * WebKit.xcodeproj/project.pbxproj:

2008-08-15  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Geoff Garen.

        <rdar://problem/6139914> Please include a _debug version of JavaScriptCore framework

        * WebKit.xcodeproj/project.pbxproj: Enable the debug variant.

2008-08-05  Anders Carlsson  <andersca@apple.com>

        Reviewed by Darin Adler.

        Remove MainThreadObjectDeallocator.{h|mm}.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-08-04  Mark Rowe  <mrowe@apple.com>

        Reviewed by Darin Adler.

        Declare empty protocols when using versions of AppKit that do not use formal protocols for delegates and data sources.
        Part one of fix for <rdar://problem/5853147>.

        * WebKit.xcodeproj/project.pbxproj:

2008-07-31  David D. Kilzer  <ddkilzer@webkit.org>

        Fix layout test results for webarchive/test-xml-stylesheet.xml

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj: Added WebHTMLRepresentationInternal.h.
        Changed WebHTMLRepresentationInternal.h and WebHTMLRepresentationPrivate.h
        to private so they're copied into PrivateHeaders.

2008-07-11  Stephanie Lewis  <slewis@apple.com>

        Reviewed by Darin Adler.

        Move WebPreferences.m to objc++ so it can include the new WTF leak counting class.

        * WebKit.xcodeproj/project.pbxproj:

2008-07-07  Mark Rowe  <mrowe@apple.com>

        Fix references to WebRenderNode.h and WebRenderNode.mm in Xcode project
        so that they don't have an unnecessary ".." in the path.

        * WebKit.xcodeproj/project.pbxproj:

2008-07-05  Mark Rowe  <mrowe@apple.com>

        Reviewed by John Sullivan.

        Remove WebSearchableTextView as it has been unused for some time now.

        * WebKit.xcodeproj/project.pbxproj:

2008-06-26  Anders Carlsson  <andersca@apple.com>

        Reviewed by Darin Adler.

        Add MainThreadObjectDeallocator to sources.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-06-24  John Sullivan  <sullivan@apple.com>

        Rubber-stamped by Sam Weinig

        * StringsNotToBeLocalized.txt:
        brought this file up to date

2008-06-17  Mark Rowe  <mrowe@apple.com>

        Reviewed by Darin Adler.

        <rdar://problem/5775802> WebKit should not force use of GCC 4.0.

        * WebKit.xcodeproj/project.pbxproj:

2008-05-22  Timothy Hatcher  <timothy@apple.com>

        <rdar://problem/5956403> Update the Develop menu to match the new Inspector items

        Reviewed by Adam Roben.

        * English.lproj/Localizable.strings: Added new strings.

2008-05-21  Anders Carlsson  <andersca@apple.com>

        Reviewed by Maciej.

        Add WebIconFetcher files.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-05-16  Timothy Hatcher  <timothy@apple.com>

        Removes WebScriptDebugServer files and related calls. This removes
        the hooks that Drosera uses for debugging. Now that the Web Inspector
        has a better debugger, we don't need these anymore.

        Reviewed by Sam Weinig.

        * StringsNotToBeLocalized.txt:
        * WebKit.xcodeproj/project.pbxproj:

2008-05-13  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by Beth Dakin

        <rdar://problem/4780592> WebKit application has its window announced as HTML content

        * English.lproj/Localizable.strings:
        * WebKit.xcodeproj/project.pbxproj:

2008-05-09  Anders Carlsson  <andersca@apple.com>

        Reviewed by Oliver.

        <rdar://problem/5774495> Make Unicode text input possible in Netscape-style plug-ins
        
        Add nptextinput.h as a public header.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-05-06  Stephanie Lewis  <slewis@apple.com>

        Reviewed by Andersca.

        prepare for plugin fast teardown work - make WebPluginDatabase a objective C++ file.

        * WebKit.xcodeproj/project.pbxproj:

2008-05-01  Anders Carlsson  <andersca@apple.com>

        Reviewed by Tim.

        Remove npfunctions.h
        
        * WebKit.xcodeproj/project.pbxproj:

2008-05-01  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        Turn off deprecated warnings for WebNetscapePluginEventHandlerCarbon.mm.

        * WebKit.xcodeproj/project.pbxproj:

2008-04-30  Anders Carlsson  <andersca@apple.com>

        Reviewed by Adam.

        Add Cocoa event handler.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-04-29  Anders Carlsson  <andersca@apple.com>

        Reviewed by Adam.

        Add new event handlers.
        
        * WebKit.xcodeproj/project.pbxproj:

2008-04-07  John Sullivan  <sullivan@apple.com>

        Reviewed by Tim
        
        - made the JavaScript text input panel not block Quit (part of 4133196)

        * English.lproj/WebJavaScriptTextInputPanel.nib/classes.nib:
        * English.lproj/WebJavaScriptTextInputPanel.nib/info.nib:
        * English.lproj/WebJavaScriptTextInputPanel.nib/keyedobjects.nib:
        Made the panel be a NonBlockingPanel

2008-04-04  Ada Chan  <adachan@apple.com>

        Updated the format string for window title for a standalone image to take integers.

        Reviewed by Dan.

        * English.lproj/Localizable.strings:

2008-03-28  Brady Eidson  <beidson@apple.com>

        Rubberstamped by Darin Adler

        Remove WebArchiver.h/mm

        * WebKit.xcodeproj/project.pbxproj:

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

        Reviewed by Darin

        <rdar://problem/4516169> - Support WebArchives on Windows

        * WebKit.xcodeproj/project.pbxproj:

2008-03-24  Brady Eidson  <beidson@apple.com>

        Reviewed by Darin's rubberstamp

        Rename a .m to .mm

        * WebKit.xcodeproj/project.pbxproj:

2008-03-20  John Sullivan  <sullivan@apple.com>

        * StringsNotToBeLocalized.txt:
        Brought this file up to date

2008-03-20  Adam Roben  <aroben@apple.com>

        Mark WebNodeHighlight.m and WebNodeHighlightView.m Obj-C++

        Reviewed by Tim Hatcher.

        * WebKit.xcodeproj/project.pbxproj:

2008-03-12  Darin Adler  <darin@apple.com>

        Reviewed by Anders.

        - http://bugs.webkit.org/show_bug.cgi?id=17640
          eliminate WebCoreFrameBridge

        * StringsNotToBeLocalized.txt: Updated for recent changes.
        * WebKit.xcodeproj/project.pbxproj: Removed WebFrameBridge.h and WebFrameBridge.mm.

2008-03-11  Darin Adler  <darin@apple.com>

        Reviewed by Anders.

        * WebKit.xcodeproj/project.pbxproj: Change WebDynamicScrollBarsView.m to be Obj-C++.
        We can rename the file later.

2008-03-07  Mark Rowe  <mrowe@apple.com>

        Reviewed by Oliver Hunt.

        Fix WebKit build with GCC 4.2.

        * WebKit.xcodeproj/project.pbxproj:  Mark WebTypesInternal.h as a private header so that DumpRenderTree can use it.

2008-03-06  Darin Adler  <darin@apple.com>

        * WebKit.xcodeproj/project.pbxproj: Added WebHistoryInternal.h.

2008-03-06  David D. Kilzer  <ddkilzer@apple.com>

        Name the WebKit build phase script that generates WebKit.LP64.exp.

        * WebKit.xcodeproj/project.pbxproj: Name the build phase script
        that generates the 64-bit export file to match the corresponding
        build phase script in WebCore.

2008-03-05  Adam Roben  <aroben@apple.com>

        Remove WebCoreScriptDebugger.{h,mm}

        Reviewed by Kevin M.

        * WebKit.xcodeproj/project.pbxproj:

2008-03-05  Adam Roben  <aroben@apple.com>

        Rename WebCoreScriptDebuggerImp.{h,mm} to WebScriptDebugger.{h,mm}

        Reviewed by Kevin M.

        * WebKit.xcodeproj/project.pbxproj:

2008-03-05  Adam Roben  <aroben@apple.com>

        Remove WebScriptDebugger

        Reviewed by Kevin M.

        * WebKit.xcodeproj/project.pbxproj: Remove
        WebScriptDebugDelegatePrivate.h from the project.

2008-03-05  Adam Roben  <aroben@apple.com>

        Move WebCoreScriptDebuggerImp to its own source files

        Reviewed by Kevin M.

        * WebKit.xcodeproj/project.pbxproj: Added new files to the project.

2008-03-05  Adam Roben  <aroben@apple.com>

        Move WebCoreScriptDebugger to WebKit

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj: Added WebCoreScriptDebugger.{h,mm}
        to the project.

2008-01-26  Greg Bolsinga  <bolsinga@apple.com>

        <rdar://problem/5708388> WebDashboardRegion.h duplicated between WebCore / WebKit

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj: Removed WebDashboardRegion.h.

2008-01-23  Steve Falkenburg  <sfalken@apple.com>

        Update localization exceptions.
        
        Reviewed by Darin Adler.

        * English.lproj/Localizable.strings:
        * StringsNotToBeLocalized.txt:

2008-01-20  Mark Rowe  <mrowe@apple.com>

        Reviewed by Dan Bernstein.

        Remove code bracketed by REMOVE_SAFARI_DOM_TREE_DEBUG_ITEM as we are no longer
        interested in supporting Safari 2 with TOT WebKit.

        * WebKit.xcodeproj/project.pbxproj: Don't define REMOVE_SAFARI_DOM_TREE_DEBUG_ITEM
        as it is no longer used. 

2008-01-03  Darin Adler  <darin@apple.com>

        - fix Safari build

        * WebKit.xcodeproj/project.pbxproj: Mark header private (fixes Safari build).

2008-01-02  Alexey Proskuryakov  <ap@webkit.org>

        Reviewed by Darin Adler.

        Removed "BackwardDelete", which is no longer present in source code.

        * StringsNotToBeLocalized.txt:

2007-12-16  Mark Rowe  <mrowe@apple.com>

        Reviewed by Maciej Stachowiak.

        Refactor Mac plugin stream code to use the shared NetscapePlugInStreamLoader implementation.

        * WebKit.xcodeproj/project.pbxproj: Add new files.

2007-12-14  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated.

2007-12-12  Brady Eidson  <beidson@apple.com>

        Reviewed by Sam Weinig

        Fix for <rdar://problem/4886844> and lay groundwork for <rdar://problem/4516170> (Back/Forward Cache on Windows)

        * WebKit.xcodeproj/project.pbxproj: Added a new file

2007-12-12  Mark Rowe  <mrowe@apple.com>

        Reviewed by Dave Kilzer.

        Remove abuse of projectDirPath from WebKit.xcodeproj to fix Production builds.

        * WebKit.xcodeproj/project.pbxproj:

2007-11-19  Brady Eidson <beidson@apple.com>

        Reviewed by Maciej

        * WebKit.xcodeproj/project.pbxproj: Sorted!

2007-11-17  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Mark Rowe.

        Bug 13470: i18n: The Web Inspector is not localizable
        http://bugs.webkit.org/show_bug.cgi?id=13470

        Update the localized strings and the file encoding of WebInspectorClient.mm.

        * English.lproj/Localizable.strings:
        * StringsNotToBeLocalized.txt:
        * WebKit.xcodeproj/project.pbxproj:

2007-11-16  Mark Rowe  <mrowe@apple.com>

        Reviewed by Tim Hatcher.

        Build WebCore as a sub-framework of WebKit in all configurations.

        * WebKit.xcodeproj/project.pbxproj:

2007-11-16  Brady Eidson  <beidson@apple.com>

        * WebKit.xcodeproj/project.pbxproj: WebDatabaseManagerPrivate.h, also!

2007-11-16  Brady Eidson  <beidson@apple.com>

        * WebKit.xcodeproj/project.pbxproj: Mark WebSecurityOriginPrivate.h private so
          it is exported

2007-11-16  Brady Eidson  <beidson@apple.com>

        Reviewed by John

        Database management API tweaks

        * WebKit.xcodeproj/project.pbxproj:

2007-11-15  Brady Eidson  <beidson@apple.com>

        Reviewed by John

        Stubbing out everything required for a WebKit API for databases

        * WebKit.xcodeproj/project.pbxproj:

2007-11-12  Adam Roben  <aroben@apple.com>

        * StringsNotToBeLocalized.txt: Updated.

2007-11-08  Kevin Ollivier  <kevino@theolliviers.com>

        Adding the wx WebKit implementation.

        Reviewed by Mark Rowe.

        * wx: Added.

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

        Reviewed by Kevin Decker.

        Fix 64-bit Mac build.

        * WebKit.xcodeproj/project.pbxproj: Change paths specified relative to SRCROOT
        to be relative to PROJECT_DIR.  PROJECT_DIR takes into account the projectDirPath
        setting of the project, which in this instance includes the necessary "mac"
        subdirectory.

