2021-10-13  Chris Dumez  <cdumez@apple.com>

        Drop makeWeakPtr() and use WeakPtr { } directly
        https://bugs.webkit.org/show_bug.cgi?id=231679

        Reviewed by Darin Adler.

        * Storage/InProcessIDBServer.cpp:
        (storageQuotaManagerSpaceRequester):
        * WebCoreSupport/PageStorageSessionProvider.h:
        * WebCoreSupport/WebBroadcastChannelRegistry.cpp:
        (WebBroadcastChannelRegistry::getOrCreate):

2021-10-01  Ian Anderson  <iana@apple.com>

        WebKitLegacy's module map files don't get installed
        https://bugs.webkit.org/show_bug.cgi?id=230736

        Reviewed by David Kilzer.

        Revert r271607 because it doesn't work and isn't the right approach.

        * Modules/WebKitLegacy_iOS.private.modulemap: Removed.
        * Modules/WebKitLegacy_macOS.private.modulemap: Removed.
        * WebKitLegacy.xcodeproj/project.pbxproj:

2021-09-29  Jer Noble  <jer.noble@apple.com>

        Build-time optimization: forward declare more things in MediaPlayer.h and HTMLMediaElement.h
        https://bugs.webkit.org/show_bug.cgi?id=230853

        Reviewed by Eric Carlson.

        Use nullptr rather than zero for null values.

        * Storage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::StorageNamespaceImpl):

2021-09-28  Alex Christensen  <achristensen@webkit.org>

        Mostly fix Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=230868

        Reviewed by Don Olmstead.

        * PlatformMac.cmake:

2021-09-20  Chris Dumez  <cdumez@apple.com>

        Stop using makeRef(*this) / makeRefPtr(this)
        https://bugs.webkit.org/show_bug.cgi?id=230464

        Reviewed by Alex Christensen.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::InProcessIDBServer):
        (InProcessIDBServer::deleteDatabase):
        (InProcessIDBServer::didDeleteDatabase):
        (InProcessIDBServer::openDatabase):
        (InProcessIDBServer::didOpenDatabase):
        (InProcessIDBServer::didAbortTransaction):
        (InProcessIDBServer::didCommitTransaction):
        (InProcessIDBServer::didCreateObjectStore):
        (InProcessIDBServer::didDeleteObjectStore):
        (InProcessIDBServer::didRenameObjectStore):
        (InProcessIDBServer::didClearObjectStore):
        (InProcessIDBServer::didCreateIndex):
        (InProcessIDBServer::didDeleteIndex):
        (InProcessIDBServer::didRenameIndex):
        (InProcessIDBServer::didPutOrAdd):
        (InProcessIDBServer::didGetRecord):
        (InProcessIDBServer::didGetAllRecords):
        (InProcessIDBServer::didGetCount):
        (InProcessIDBServer::didDeleteRecord):
        (InProcessIDBServer::didOpenCursor):
        (InProcessIDBServer::didIterateCursor):
        (InProcessIDBServer::abortTransaction):
        (InProcessIDBServer::commitTransaction):
        (InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
        (InProcessIDBServer::createObjectStore):
        (InProcessIDBServer::deleteObjectStore):
        (InProcessIDBServer::renameObjectStore):
        (InProcessIDBServer::clearObjectStore):
        (InProcessIDBServer::createIndex):
        (InProcessIDBServer::deleteIndex):
        (InProcessIDBServer::renameIndex):
        (InProcessIDBServer::putOrAdd):
        (InProcessIDBServer::getRecord):
        (InProcessIDBServer::getAllRecords):
        (InProcessIDBServer::getCount):
        (InProcessIDBServer::deleteRecord):
        (InProcessIDBServer::openCursor):
        (InProcessIDBServer::iterateCursor):
        (InProcessIDBServer::establishTransaction):
        (InProcessIDBServer::fireVersionChangeEvent):
        (InProcessIDBServer::didStartTransaction):
        (InProcessIDBServer::didCloseFromServer):
        (InProcessIDBServer::notifyOpenDBRequestBlocked):
        (InProcessIDBServer::databaseConnectionPendingClose):
        (InProcessIDBServer::databaseConnectionClosed):
        (InProcessIDBServer::abortOpenAndUpgradeNeeded):
        (InProcessIDBServer::didFireVersionChangeEvent):
        (InProcessIDBServer::openDBRequestCancelled):
        (InProcessIDBServer::getAllDatabaseNamesAndVersions):
        (InProcessIDBServer::didGetAllDatabaseNamesAndVersions):
        (InProcessIDBServer::closeAndDeleteDatabasesModifiedSince):

2021-09-17  Alex Christensen  <achristensen@webkit.org>

        Use ObjectIdentifier for ResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=230278

        Reviewed by Michael Catanzaro.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::loadResourceSynchronously):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2021-09-07  Chris Dumez  <cdumez@apple.com>

        Implement origin partitioning (top-origin/frame-origin) for BroadcastChannel
        https://bugs.webkit.org/show_bug.cgi?id=229814

        Reviewed by Alex Christensen.

        Implement origin partitioning (top-origin/frame-origin) for BroadcastChannel to address privacy
        concerns, as discussed here:
        - https://github.com/whatwg/html/issues/5803

        * WebCoreSupport/WebBroadcastChannelRegistry.cpp:
        (WebBroadcastChannelRegistry::registerChannel):
        (WebBroadcastChannelRegistry::unregisterChannel):
        (WebBroadcastChannelRegistry::postMessage):
        * WebCoreSupport/WebBroadcastChannelRegistry.h:

2021-08-27  Russell Epstein  <repstein@apple.com>

        Land Windows build fixes from safari-612.1.29.14-branch.
        https://bugs.webkit.org/show_bug.cgi?id=229627.

        Reviewed by Per Arne Vollan.

        * WebKitLegacy.vcxproj/WebKitLegacy.proj:

2021-08-07  Myles C. Maxfield  <mmaxfield@apple.com>

        Deduplicate logging channel algorithms
        https://bugs.webkit.org/show_bug.cgi?id=228809

        Reviewed by Fujii Hironori.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2021-08-07  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r280756.
        https://bugs.webkit.org/show_bug.cgi?id=228897

        Broke gtk build

        Reverted changeset:

        "Deduplicate logging channel algorithms"
        https://bugs.webkit.org/show_bug.cgi?id=228809
        https://commits.webkit.org/r280756

2021-08-07  Myles C. Maxfield  <mmaxfield@apple.com>

        Deduplicate logging channel algorithms
        https://bugs.webkit.org/show_bug.cgi?id=228809

        Reviewed by Fujii Hironori.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2021-08-02  Chris Dumez  <cdumez@apple.com>

        imported/w3c/web-platform-tests/webmessaging/broadcastchannel/blobs.html is a flaky failure since implementing BlobChannel
        https://bugs.webkit.org/show_bug.cgi?id=228168
        <rdar://problem/80922502>

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebBroadcastChannelRegistry.cpp:
        (WebBroadcastChannelRegistry::postMessage):
        * WebCoreSupport/WebBroadcastChannelRegistry.h:

2021-07-19  Sihui Liu  <sihui_liu@apple.com>

        Implement IDBTransaction.commit()
        https://bugs.webkit.org/show_bug.cgi?id=227815
        <rdar://problem/80651270>

        Reviewed by Brady Eidson.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::commitTransaction):
        * Storage/InProcessIDBServer.h:

2021-07-15  Chris Dumez  <cdumez@apple.com>

        Add initial support for BroadcastChannel behind a runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=227924

        Reviewed by Sam Weinig.

        Add BroadcastChannelRegistry implementation for WebKitLegacy.

        * Sources.txt:
        * WebCoreSupport/WebBroadcastChannelRegistry.cpp: Added.
        (WebBroadcastChannelRegistry::getOrCreate):
        (WebBroadcastChannelRegistry::registerChannel):
        (WebBroadcastChannelRegistry::unregisterChannel):
        (WebBroadcastChannelRegistry::postMessage):
        * WebCoreSupport/WebBroadcastChannelRegistry.h: Added.
        * WebKitLegacy.xcodeproj/project.pbxproj:

2021-06-21  Sihui Liu  <sihui_liu@apple.com>

        Make InProcessIDBServer use WorkQueue instead of Thread
        https://bugs.webkit.org/show_bug.cgi?id=227225

        Reviewed by Chris Dumez.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::~InProcessIDBServer):
        (InProcessIDBServer::InProcessIDBServer):
        (InProcessIDBServer::dispatchTask):
        * Storage/InProcessIDBServer.h:

2021-06-17  Alex Christensen  <achristensen@webkit.org>

        Remove empty header WebTypesInternal.h
        https://bugs.webkit.org/show_bug.cgi?id=227094

        Reviewed by Fujii Hironori.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2021-06-14  Alex Christensen  <achristensen@webkit.org>

        Pass PAL::SessionID by value instead of reference
        https://bugs.webkit.org/show_bug.cgi?id=226983

        Reviewed by Geoffrey Garen.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::idbConnectionToServerForSession):
        * Storage/WebDatabaseProvider.h:
        * WebCoreSupport/NetworkStorageSessionMap.cpp:
        (NetworkStorageSessionMap::storageSession):
        (NetworkStorageSessionMap::ensureSession):
        (NetworkStorageSessionMap::destroySession):
        * WebCoreSupport/NetworkStorageSessionMap.h:

2021-06-10  Alex Christensen  <achristensen@webkit.org>

        Move Timing-Allow-Origin checks to the network process
        https://bugs.webkit.org/show_bug.cgi?id=226678
        <rdar://problem/45227788>

        Reviewed by Chris Dumez.

        * WebCoreSupport/PingHandle.h:
        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::loadResourceSynchronously):

2021-05-30  Darin Adler  <darin@apple.com>

        Remove some of the unneeded WebKitLegacy Windows-specific plug-in code
        https://bugs.webkit.org/show_bug.cgi?id=226410

        Reviewed by Chris Dumez.

        * PlatformFTW.cmake: Removed all the code in the win/Plugins directory,
        and EmbeddedWidget.h/cpp.
        * PlatformWin.cmake: Ditto.

2021-05-27  Darin Adler  <darin@apple.com>

        Next step toward using std::optional directly instead of through WTF::Optional typedef
        https://bugs.webkit.org/show_bug.cgi?id=226280

        Reviewed by Chris Dumez.

        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::diskUsageForOrigin): Accept the renaming done by do-webcore-rename.

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

        Remove StringBuilder::appendLiteral
        https://bugs.webkit.org/show_bug.cgi?id=226137

        Reviewed by Chris Dumez.

        * WebCoreSupport/NetworkStorageSessionMap.cpp:
        (NetworkStorageSessionMap::switchToNewTestingSession): Do not use local
        for return value of makeString.

2021-05-24  Chris Dumez  <cdumez@apple.com>

        Drop CheckedLock / CheckedCondition aliases
        https://bugs.webkit.org/show_bug.cgi?id=226176

        Reviewed by Kate Cheney.

        Drop CheckedLock / CheckedCondition aliases now that they are the default.

        * Storage/StorageAreaSync.h:

2021-05-22  Chris Dumez  <cdumez@apple.com>

        Replace LockHolder with Locker in local variables
        https://bugs.webkit.org/show_bug.cgi?id=226133

        Reviewed by Darin Adler.

        Replace LockHolder with Locker in local variables. It is shorter and it allows switching the lock
        type more easily since the compiler with deduce the lock type T for Locker<T>.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::InProcessIDBServer):
        (InProcessIDBServer::deleteDatabase):
        (InProcessIDBServer::openDatabase):
        (InProcessIDBServer::abortTransaction):
        (InProcessIDBServer::commitTransaction):
        (InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
        (InProcessIDBServer::createObjectStore):
        (InProcessIDBServer::deleteObjectStore):
        (InProcessIDBServer::renameObjectStore):
        (InProcessIDBServer::clearObjectStore):
        (InProcessIDBServer::createIndex):
        (InProcessIDBServer::deleteIndex):
        (InProcessIDBServer::renameIndex):
        (InProcessIDBServer::putOrAdd):
        (InProcessIDBServer::getRecord):
        (InProcessIDBServer::getAllRecords):
        (InProcessIDBServer::getCount):
        (InProcessIDBServer::deleteRecord):
        (InProcessIDBServer::openCursor):
        (InProcessIDBServer::iterateCursor):
        (InProcessIDBServer::establishTransaction):
        (InProcessIDBServer::databaseConnectionPendingClose):
        (InProcessIDBServer::databaseConnectionClosed):
        (InProcessIDBServer::abortOpenAndUpgradeNeeded):
        (InProcessIDBServer::didFireVersionChangeEvent):
        (InProcessIDBServer::openDBRequestCancelled):
        (InProcessIDBServer::getAllDatabaseNamesAndVersions):
        (InProcessIDBServer::closeAndDeleteDatabasesModifiedSince):
        * Storage/StorageAreaSync.cpp:
        (WebKit::StorageAreaSync::syncTimerFired):
        (WebKit::StorageAreaSync::performSync):
        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::finishedImportingOriginIdentifiers):
        (WebKit::StorageTracker::syncImportOriginIdentifiers):
        (WebKit::StorageTracker::syncFileSystemAndTrackerDatabase):
        (WebKit::StorageTracker::setOriginDetails):
        (WebKit::StorageTracker::syncSetOriginDetails):
        (WebKit::StorageTracker::origins):
        (WebKit::StorageTracker::deleteAllOrigins):
        (WebKit::StorageTracker::syncDeleteAllOrigins):
        (WebKit::StorageTracker::deleteOrigin):
        (WebKit::StorageTracker::syncDeleteOrigin):
        (WebKit::StorageTracker::canDeleteOrigin):
        (WebKit::StorageTracker::cancelDeletingOrigin):
        (WebKit::StorageTracker::diskUsageForOrigin):

2021-05-22  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r277913.
        https://bugs.webkit.org/show_bug.cgi?id=226140

        Caused multiple layout-test crash on mac debug queues

        Reverted changeset:

        "Replace LockHolder with Locker in local variables"
        https://bugs.webkit.org/show_bug.cgi?id=226133
        https://trac.webkit.org/changeset/277913

2021-05-21  Chris Dumez  <cdumez@apple.com>

        Replace LockHolder with Locker in local variables
        https://bugs.webkit.org/show_bug.cgi?id=226133

        Reviewed by Darin Adler.

        Replace LockHolder with Locker in local variables. It is shorter and it allows switching the lock
        type more easily since the compiler with deduce the lock type T for Locker<T>.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::InProcessIDBServer):
        (InProcessIDBServer::deleteDatabase):
        (InProcessIDBServer::openDatabase):
        (InProcessIDBServer::abortTransaction):
        (InProcessIDBServer::commitTransaction):
        (InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
        (InProcessIDBServer::createObjectStore):
        (InProcessIDBServer::deleteObjectStore):
        (InProcessIDBServer::renameObjectStore):
        (InProcessIDBServer::clearObjectStore):
        (InProcessIDBServer::createIndex):
        (InProcessIDBServer::deleteIndex):
        (InProcessIDBServer::renameIndex):
        (InProcessIDBServer::putOrAdd):
        (InProcessIDBServer::getRecord):
        (InProcessIDBServer::getAllRecords):
        (InProcessIDBServer::getCount):
        (InProcessIDBServer::deleteRecord):
        (InProcessIDBServer::openCursor):
        (InProcessIDBServer::iterateCursor):
        (InProcessIDBServer::establishTransaction):
        (InProcessIDBServer::databaseConnectionPendingClose):
        (InProcessIDBServer::databaseConnectionClosed):
        (InProcessIDBServer::abortOpenAndUpgradeNeeded):
        (InProcessIDBServer::didFireVersionChangeEvent):
        (InProcessIDBServer::openDBRequestCancelled):
        (InProcessIDBServer::getAllDatabaseNamesAndVersions):
        (InProcessIDBServer::closeAndDeleteDatabasesModifiedSince):
        * Storage/StorageAreaSync.cpp:
        (WebKit::StorageAreaSync::syncTimerFired):
        (WebKit::StorageAreaSync::performSync):
        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::finishedImportingOriginIdentifiers):
        (WebKit::StorageTracker::syncImportOriginIdentifiers):
        (WebKit::StorageTracker::syncFileSystemAndTrackerDatabase):
        (WebKit::StorageTracker::setOriginDetails):
        (WebKit::StorageTracker::syncSetOriginDetails):
        (WebKit::StorageTracker::origins):
        (WebKit::StorageTracker::deleteAllOrigins):
        (WebKit::StorageTracker::syncDeleteAllOrigins):
        (WebKit::StorageTracker::deleteOrigin):
        (WebKit::StorageTracker::syncDeleteOrigin):
        (WebKit::StorageTracker::canDeleteOrigin):
        (WebKit::StorageTracker::cancelDeletingOrigin):
        (WebKit::StorageTracker::diskUsageForOrigin):

2021-05-21  Chris Dumez  <cdumez@apple.com>

        Adopt CheckedLock in StorageAreaSync
        https://bugs.webkit.org/show_bug.cgi?id=226099

        Reviewed by Sam Weinig.

        Adopt CheckedLock in StorageAreaSync to benefit from Clang Thread Safety Analysis.

        * Storage/StorageAreaSync.cpp:
        (WebKit::StorageAreaSync::markImported):
        (WebKit::StorageAreaSync::blockUntilImportComplete):
        * Storage/StorageAreaSync.h:

2021-05-19  Alex Christensen  <achristensen@webkit.org>

        Add support for Navigation Timing Level 2
        https://bugs.webkit.org/show_bug.cgi?id=184363

        Reviewed by Ryosuke Niwa.

        * WebCoreSupport/PingHandle.h:

2021-05-19  Chris Dumez  <cdumez@apple.com>

        Drop "get" prefix from SQLiteStatement member functions as well as out-parameters
        https://bugs.webkit.org/show_bug.cgi?id=225971

        Reviewed by Darin Adler.

        Update code base due to SQLiteStatement API changes.

        * Storage/StorageAreaSync.cpp:
        (WebKit::StorageAreaSync::performImport):
        (WebKit::StorageAreaSync::deleteEmptyDatabase):
        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::syncImportOriginIdentifiers):
        (WebKit::StorageTracker::syncDeleteAllOrigins):
        (WebKit::StorageTracker::databasePathForOrigin):

2021-05-19  Sam Weinig  <weinig@apple.com>

        Update Base64 encoding/decoding to match more modern WebKit conventions
        https://bugs.webkit.org/show_bug.cgi?id=225920

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::loadResourceSynchronously):
        * WebCoreSupport/WebResourceLoadScheduler.h:
        Update to match new signature. char -> uint8_t.

2021-05-17  Chris Dumez  <cdumez@apple.com>

        Avoid more String creations when preparing SQLite statements
        https://bugs.webkit.org/show_bug.cgi?id=225855

        Reviewed by Alex Christensen.

        Avoid more String creations when preparing SQLite statements by using ASCIILiteral. Also rename the
        SQLiteDatabase::prepareStatement() / SQLiteDatabase::executeCommand() overloads that take in a 
        String to make sure they are not called by mistake.

        * Storage/StorageAreaSync.cpp:
        (WebKit::StorageAreaSync::openDatabase):
        (WebKit::StorageAreaSync::migrateItemTableIfNeeded):
        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::openTrackerDatabase):

2021-05-16  Chris Dumez  <cdumez@apple.com>

        Modernize / Optimize SQLiteStatement creation and preparation
        https://bugs.webkit.org/show_bug.cgi?id=225791

        Reviewed by Sam Weinig.

        Update code base now that the SQLiteDatabase & SQLiteStatement API has changed.
        Also use more ASCIILiterals.

        * Storage/StorageAreaSync.cpp:
        (WebKit::StorageAreaSync::migrateItemTableIfNeeded):
        (WebKit::StorageAreaSync::performImport):
        (WebKit::StorageAreaSync::sync):
        (WebKit::StorageAreaSync::deleteEmptyDatabase):
        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::syncImportOriginIdentifiers):
        (WebKit::StorageTracker::syncSetOriginDetails):
        (WebKit::StorageTracker::syncDeleteAllOrigins):
        (WebKit::StorageTracker::syncDeleteOrigin):
        (WebKit::StorageTracker::databasePathForOrigin):

2021-05-14  Chris Dumez  <cdumez@apple.com>

        Rename FileSystem::getFileSize() to FileSystem::fileSize()
        https://bugs.webkit.org/show_bug.cgi?id=225798

        Reviewed by Alex Christensen.

        Update code path to due to the API change.

        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::diskUsageForOrigin):
        * Storage/StorageTracker.h:

2021-05-13  Chris Dumez  <cdumez@apple.com>

        Rename FileSystem::directoryName() to FileSystem::parentPath()
        https://bugs.webkit.org/show_bug.cgi?id=225768

        Reviewed by Darin Adler.

        Rename FileSystem::directoryName() to FileSystem::parentPath() for clarity and
        consistency with std::filesystem::parent_path() which is used internally.

        * Storage/StorageTracker.cpp:
        (WebKit::ensureDatabaseFileExists):

2021-05-11  Chris Dumez  <cdumez@apple.com>

        Port WTF::FileSystem::listDirectory to std::filesystem
        https://bugs.webkit.org/show_bug.cgi?id=225633

        Reviewed by Darin Adler.

        Update FileSystem::listDirectory() call sites to deal with the fact that:
        - The function now returns file names instead of full file paths
        - The callers now have to do filtering by themselves if they need it

        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::syncFileSystemAndTrackerDatabase):

2021-05-04  Alex Christensen  <achristensen@webkit.org>

        Remove unused references to PageGroup from WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=225359

        Reviewed by Sihui Liu.

        * Storage/StorageTracker.cpp:

2021-04-27  Chris Dumez  <cdumez@apple.com>

        Copy-on-write semantics should be an internal implementation detail of StorageMap
        https://bugs.webkit.org/show_bug.cgi?id=225108

        Reviewed by Alex Christensen.

        Update StorageAreaImpl due to StorageMap API changes.

        * Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::StorageAreaImpl):
        (WebKit::StorageAreaImpl::length):
        (WebKit::StorageAreaImpl::key):
        (WebKit::StorageAreaImpl::item):
        (WebKit::StorageAreaImpl::setItem):
        (WebKit::StorageAreaImpl::removeItem):
        (WebKit::StorageAreaImpl::clear):
        (WebKit::StorageAreaImpl::contains):
        (WebKit::StorageAreaImpl::importItems):
        (WebKit::StorageAreaImpl::clearForOriginDeletion):
        (WebKit::StorageAreaImpl::sessionChanged):
        * Storage/StorageAreaImpl.h:

2021-04-27  Chris Dumez  <cdumez@apple.com>

        Don't keep local storage data in memory in the NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=225065

        Reviewed by Alex Christensen.

        * Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::clear):
        (WebKit::StorageAreaImpl::clearForOriginDeletion):
        Use the new StorageMap::clear() to avoid constructing a new StorageMap unnecessarily
        when:
        - The StorageMap is not shared
        - The StorageMap is empty

2021-04-26  Alex Christensen  <achristensen@webkit.org>

        Update Mac-specific CMake files
        https://bugs.webkit.org/show_bug.cgi?id=225064

        Rubber-stamped by Tim Horton.

        * PlatformMac.cmake:

2021-04-13  Sihui Liu  <sihui_liu@apple.com>

        Make WebIDBServer not block main thread during initialization
        https://bugs.webkit.org/show_bug.cgi?id=224299

        Reviewed by Geoffrey Garen.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::InProcessIDBServer):
        (InProcessIDBServer::deleteDatabase):
        (InProcessIDBServer::openDatabase):
        (InProcessIDBServer::abortTransaction):
        (InProcessIDBServer::commitTransaction):
        (InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
        (InProcessIDBServer::createObjectStore):
        (InProcessIDBServer::deleteObjectStore):
        (InProcessIDBServer::renameObjectStore):
        (InProcessIDBServer::clearObjectStore):
        (InProcessIDBServer::createIndex):
        (InProcessIDBServer::deleteIndex):
        (InProcessIDBServer::renameIndex):
        (InProcessIDBServer::putOrAdd):
        (InProcessIDBServer::getRecord):
        (InProcessIDBServer::getAllRecords):
        (InProcessIDBServer::getCount):
        (InProcessIDBServer::deleteRecord):
        (InProcessIDBServer::openCursor):
        (InProcessIDBServer::iterateCursor):
        (InProcessIDBServer::establishTransaction):
        (InProcessIDBServer::databaseConnectionPendingClose):
        (InProcessIDBServer::databaseConnectionClosed):
        (InProcessIDBServer::abortOpenAndUpgradeNeeded):
        (InProcessIDBServer::didFireVersionChangeEvent):
        (InProcessIDBServer::openDBRequestCancelled):
        (InProcessIDBServer::getAllDatabaseNamesAndVersions):
        (InProcessIDBServer::closeAndDeleteDatabasesModifiedSince):
        * Storage/InProcessIDBServer.h:

2021-04-08  Sihui Liu  <sihui_liu@apple.com>

        Remove logging for investigating http/tests/IndexedDB/storage-limit-1.html failure
        https://bugs.webkit.org/show_bug.cgi?id=223086
        <rdar://problem/75591816>

        Reviewed by Chris Dumez.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::quotaManager):

2021-04-05  Alex Christensen  <achristensen@webkit.org>

        Resurrect Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=224084

        Reviewed by Tim Horton.

        * PlatformMac.cmake:

2021-03-28  Sam Weinig  <weinig@apple.com>

        Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS, it seems like it is on for all ports
        https://bugs.webkit.org/show_bug.cgi?id=223810

        Reviewed by Simon Fraser.

        Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS conditionals.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::dispatchTaskReply):
        * Storage/InProcessIDBServer.h:
        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::deleteAllDatabases):
        * Storage/WebDatabaseProvider.h:

2021-03-26  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Deprecate using DERIVED_SOURCES_DIR/FOWARDING_HEADERS_DIR directly
        https://bugs.webkit.org/show_bug.cgi?id=223763

        Reviewed by Michael Catanzaro.

        Remove any usages of DERIVED_SOURCES_DIR and FOWARDING_HEADERS_DIR.

        * PlatformMac.cmake:

2021-03-19  Per Arne  <pvollan@apple.com>

        [Win] Fix build issue
        https://bugs.webkit.org/show_bug.cgi?id=223451
        <rdar://75545172>

        Reviewed by Brent Fulgham.

        Specify that WebKitLegacy links WebCore and PAL statically, since the correctness of the WEBCORE_EXPORT macro depends on that.

        * PlatformWin.cmake:

2021-03-11  Chris Dumez  <cdumez@apple.com>

        Introduce ensureOnMainThread()
        https://bugs.webkit.org/show_bug.cgi?id=223105

        Reviewed by Darin Adler.

        Introduce ensureOnMainThread(), similarly to the recently added ensureOnMainThreadRunLoop(). It runs
        the task synchronously when on the main thread, otherwise dispatches the task to the main thread.

        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::setOriginDetails):

2021-03-11  Sihui Liu  <sihui_liu@appe.com>

        Add some logging to help debug flaky quota tests
        https://bugs.webkit.org/show_bug.cgi?id=222995

        Reviewed by Youenn Fablet.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::quotaManager):

2021-03-10  Chris Dumez  <cdumez@apple.com>

        Use RetainPtr<> / OSObjectPtr<> more in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=223030

        Reviewed by Darin Adler.

        223030_RetainPtr

        * WebCoreSupport/NetworkStorageSessionMap.cpp:
        (NetworkStorageSessionMap::switchToNewTestingSession):
        (NetworkStorageSessionMap::ensureSession):

2021-03-05  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Bump cmake_minimum_required version to 3.12 or later
        https://bugs.webkit.org/show_bug.cgi?id=221727
        <rdar://problem/74454980>

        Reviewed by Konstantin Tokarev.

        Sync cmake_minimum_required version for AppleWin internal builds.

        * CMakeLists.txt:

2021-02-08  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r272480, r272481, and r272500.
        https://bugs.webkit.org/show_bug.cgi?id=221586

        Caused assertion failure seen with EME tests

        Reverted changesets:

        "Permission request API for MediaKeySystem access support"
        https://bugs.webkit.org/show_bug.cgi?id=221187
        https://trac.webkit.org/changeset/272480

        "Unreviewed, build fix after r272480"
        https://trac.webkit.org/changeset/272481

        "Permission request API for MediaKeySystem access support"
        https://bugs.webkit.org/show_bug.cgi?id=221187
        https://trac.webkit.org/changeset/272500

2021-01-22  Sam Weinig  <weinig@apple.com>

        Remove generate-preferences.sh from the WebKitLegacy target so it doesn't get included in the framework
        https://bugs.webkit.org/show_bug.cgi?id=220871
        <rdar://problem/73503409>

        Reviewed by Simon Fraser.

        * WebKitLegacy.xcodeproj/project.pbxproj:
        Remove generate-preferences.sh from the WebKitLegacy target so it doesn't get included in the framework.

2021-01-19  Keith Rollin  <krollin@apple.com>

        Modularize WebKitLegacy.framework
        https://bugs.webkit.org/show_bug.cgi?id=220026
        <rdar://57173237>

        Reviewed by Darin Adler.

        Add .modulemap files to WebKitLegacy to help speed up client builds.

        * Modules/WebKitLegacy_iOS.private.modulemap: Added.
        * Modules/WebKitLegacy_macOS.private.modulemap: Added.
        * WebKitLegacy.xcodeproj/project.pbxproj:

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

        [CMake] Determine correct visibility for linked frameworks
        https://bugs.webkit.org/show_bug.cgi?id=210366

        Reviewed by Michael Catanzaro.

        Remove explicit setting of STATICALLY_LINKED_WITH_${framework}.

        * PlatformFTW.cmake:
        * PlatformWin.cmake:

2020-12-03  Adam Roben  <aroben@apple.com>

        Adopt FALLBACK_PLATFORM
        https://bugs.webkit.org/show_bug.cgi?id=219504

        Reviewed by Tim Horton.

        * scripts/check-xcfilelists.sh: Use FALLBACK_PLATFORM it if it's
        defined, otherwise use PLATFORM_NAME as before.

2020-12-01  Keith Rollin  <krollin@apple.com>

        Consolidate header postprocessing scripts
        https://bugs.webkit.org/show_bug.cgi?id=219388
        <rdar://problem/71840357>

        Reviewed by David Kilzer.

        Our build system contains the following scripts to perform some
        postprocessing of headers that we export to the SDK:

            JavaScriptCore/postprocess-headers.sh
            WebKit/mac/postprocess-framework-headers.sh
            WebKitLegacy/mac/postprocess-headers.sh

        The preceding scripts are used when using the non-XCBuild -- or
        "legacy" -- Xcode build system. They are invoked in a custom Run
        Script build phase after the headers have been exported with the
        standard Xcode facility for creating frameworks.

        Alternatively, we also have the following postprocessing scripts:

            WebKit/Scripts/postprocess-header-rule
            JavaScriptCore/Scripts/postprocess-header-rule
            WebKitLegacy/scripts/postprocess-header-rule

        These scripts are used when using the XCBuild build system. They are
        invoked *during* the header export process to copy and postprocess the
        headers in one blow. They are part of a Custom Build Rule for
        exporting files ending in ".h".

        The reason why we have two sets of scripts is because of the different
        capabilities of the two Xcode build systems. The legacy system does
        not support a custom "export header" step that would allow us to copy
        and postprocess each header in a single step. Therefore, when using
        the legacy build system, we export in one build step and postprocess
        in a subsequent build step. And XCBuild doesn't like the approach
        taken by the old build system where files are exported first and then
        munged in a separate step, since that confuses its notion of the state
        of the build ("Hey! That file I exported in the previous build? I see
        now that it's been changed, so I'm going to export it again. And
        change its modification date. And then rebuild everything downstream
        that uses it."). Therefore, XCBuild added a facility for copying and
        postprocessing in one step.

        The scripts supporting each of these approaches are very similar to
        each other, such that there is a lot of code duplication between them.
        At the same time, by having two sets of scripts that are very similar
        to each other, we run the risk of "drift", where files in one set may
        get updated while their counterparts in the other set are not.

        Address this duplication by making the scripts in the "legacy" set be
        mere stubs that invoke the scripts in the new "XCBuild" set. In doing
        this, we also fix a case of drift: the legacy-based scripts made use
        of a timestamp file to determine if headers needed to be reprocessed
        and exported, while the XCBuild-based scripts used a "process the
        files and export them if any actual changes now exist between this new
        version and any previously-exported version" approach.

        Along the way, fix a bug in WebKitLegacy's postprocess-header-rule
        that resulted in WebKitAvailability.h not being processed. The
        practical effect of this bug is that the file ended up with both macOS
        and iOS code, along with the #if that controlled which chunk of code
        was compiled, instead of just the chunk of code specific to the
        targeted SDK. Normally, the unused chunk of code would get removed
        through the invocation of `unifdef`. But, because of the bug, the
        results of running `unifdef` were being discarded.

        * scripts/postprocess-header-rule:

2020-11-04  David Kilzer  <ddkilzer@apple.com>

        WebKit should remove unused debug variant support
        <https://webkit.org/b/218315>
        <rdar://problem/70785369>

        Reviewed by Darin Adler.

        Remove support for building the debug variant since it is
        currently unused. We now set default values for the
        DEAD_CODE_STRIPPING, DEBUG_DEFINES, GCC_OPTIMIZATION_LEVEL and
        STRIP_INSTALLED_PRODUCT variables.

        Also move these values out of the Xcode project into
        Base.xcconfig files using the [config=Debug] specifier so that
        these overrides are next to the definitions.

        Additional changes in behavior are noted below.

        * WebKitLegacy.xcodeproj/project.pbxproj:
        - Move DEBUG_DEFINES to mac/Configurations/Base.xcconfig.
        - Remove useless OTHER_LDFLAGS definitions.
        - Remove unneeded BUILD_VARIANTS definition.

2020-11-03  David Kilzer  <ddkilzer@apple.com>

        Add test for cacheModelForMainBundle() in WebKitLegacy
        <https://webkit.org/b/217960>

        Reviewed by Darin Adler.

        * WebKitLegacy.xcodeproj/project.pbxproj:
        - Add TestingFunctions.h to the project.
        (Generate Export Files):
        - Append WebKit.Testing.exp to the generated export file if
          WK_BUILD_FOR_TESTING is set to YES.

2020-11-03  Keith Rollin  <krollin@apple.com>

        Extend check-for-inappropriate-files-in-framework to WebKitLegacy and JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=218272
        <rdar://problem/70748116>

        Reviewed by Simon Fraser.

        Bug 218268 reports that some *.txt files got included in WebKitLegacy.
        To help protect against this happening in the future, extend
        check-for-inappropriate-files-in-framework to check for *.txt files,
        and apply the script to WebKitLegacy and JavaScriptCore in addition to
        WebCore and WebKit.

        In order to prevent this change from breaking local engineering builds
        that still have these files in their build output directories, add a
        couple of lines that will delete those *.txt files before making the
        check for them.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2020-10-27  Keith Rollin  <krollin@apple.com>

        Unexpected txt file: .../WebKitLegacy.framework/.../Sources.txt
        https://bugs.webkit.org/show_bug.cgi?id=218268
        <rdar://problem/70742539>

        Reviewed by Tim Horton.

        Sources.txt and SourcesCocoa.txt were added to the WebKitLegacy
        project in https://trac.webkit.org/changeset/247401 as targets of the
        WebKitLegacy target. This caused them to be treated as resources and
        so were copied to the framework's Resources directory on a build.
        These files don't need to be included in the build, and so are removed
        from that target.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2020-10-17  Sam Weinig  <weinig@apple.com>

        [Preferences] Add infrastructure for generating preferences for Windows WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=217876

        Reviewed by Simon Fraser.

        * PlatformWin.cmake:
        Add generation of WebPreferences.

2020-10-07  Keith Rollin  <krollin@apple.com>

        Update post-processing rules for headers to not unnecessarily change timestamps
        https://bugs.webkit.org/show_bug.cgi?id=217371
        <rdar://problem/69992230>

        Reviewed by Darin Adler.

        Under XCBuild, the scripts employed in custom build rules can be
        invoked in innocuous situations. A common example is when the user is
        building from the command-line and they change the `make` output from
        stdout to a file, or vice-versa. Changing the output changes the
        setting of the COLOR_DIAGNOSTICS environment variable, which is enough
        to cause XCBuild to think something is different and that the custom
        build rule needs to be invoked. For the script's part, nothing
        significant has changed, yet it post-processes the header files,
        causing their modification dates to change, causing downstream
        rebuilds to occur.

        Fix this problem by adopting an approach that doesn't modify the
        post-processed header files unless their contents actually change.

        * scripts/postprocess-header-rule:

2020-09-28  Sam Weinig  <weinig@apple.com>

        [Preferences] Move GeneratePreferences.rb and yaml configuration files to WTF to be shared
        https://bugs.webkit.org/show_bug.cgi?id=217056

        Reviewed by Darin Adler.

        Move GeneratePreferences.rb and WebPreferences*.yaml files from WebKitLegacy to WTF, and install them into the existing
        $SDKROOT/usr/local/install/wtf/Scripts for use by down stack projects.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2020-09-26  Sam Weinig  <weinig@apple.com>

        [Preferences] Generate Debug and Internal preferences for WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=217015

        Reviewed by Darin Adler.

        * WebKitLegacy.xcodeproj/project.pbxproj:
        Adds generation of WebPreferencesInternalFeatures.mm from WebPreferencesInternalFeatures.mm.erb.

2020-09-26  Sam Weinig  <weinig@apple.com>

        [Preferences] It should be possible to have different default values for WebKitLegacy and WebKit in preference yaml files
        https://bugs.webkit.org/show_bug.cgi?id=216987

        Reviewed by Darin Adler.

        * WebKitLegacy.xcodeproj/project.pbxproj:
        Update script phase to explicitly specify the frontend (WebKitLegacy) and the templates to generate.

2020-09-25  Sam Weinig  <weinig@apple.com>

        [Preferences] Start generating experimental feature preferences for legacy WebKit
        https://bugs.webkit.org/show_bug.cgi?id=216909

        Reviewed by Tim Horton.

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

2020-09-18  Youenn Fablet  <youenn@apple.com>

        XHR.timeout is affected by long tasks
        https://bugs.webkit.org/show_bug.cgi?id=216266
        <rdar://problem/68908150>

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::isResourceLoadFinished):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2020-09-14  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][MediaFoundation] r264188 introduced linker warning: LNK4199: /DELAYLOAD:mf.dll ignored; no imports found from mf.dll
        https://bugs.webkit.org/show_bug.cgi?id=214170

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:

2020-08-12  Keith Rollin  <krollin@apple.com>

        Remove the need for defining USE_NEW_BUILD_SYSTEM
        https://bugs.webkit.org/show_bug.cgi?id=215439

        Reviewed by Darin Adler.

        When building WebKit for XCBuild, we currently require that the
        external build system (such as the Makefile, build-webkit, etc.)
        defines the USE_NEW_BUILD_SYSTEM=YES build setting. This build setting
        controls parts of our build instructions that are sensitive to when
        XCBuild or the Legacy build system are being used. Notably, we need to
        know when to use our custom “copy and modify” scripts with copying
        certain header files (used with the Legacy build system) vs. using the
        enhanced Copy Headers build phase that’s enabled with
        APPLY_RULES_IN_COPY_HEADERS=YES (introduced with and used by XCBuild).
        The choice of which method to copy headers is used is controlled by
        USE_NEW_BUILD_SYSTEM.

        There is no built-in build setting that we can probe to help us
        determine which approach to take when copying and modifying headers,
        which is why we need to define USE_NEW_BUILD_SYSTEM ourselves. But it
        turns out that we can *detect* which build system is being used by
        taking advantage of a subtle difference between the two systems. As
        noted in:

            https://developer.apple.com/documentation/xcode-release-notes/build-system-release-notes-for-xcode-10

            “When an .xcconfig file contains multiple assignments of the same
             build setting, later assignments using $(inherited) or
             $(<setting_name>) will inherit from earlier assignments in the
             .xcconfig. The legacy build system caused every use of
             $(inherited) or $(<setting_name>) skip any other values defined
             within the .xcconfig.”

        This difference can be exploited as follows:

            WK_WHICH_BUILD_SYSTEM = not_
            WK_WHICH_BUILD_SYSTEM = $(inherited)legacy
            WK_USE_NEW_BUILD_SYSTEM = $(WK_USE_NEW_BUILD_SYSTEM_$(WK_WHICH_BUILD_SYSTEM))
            WK_USE_NEW_BUILD_SYSTEM_legacy = NO
            WK_USE_NEW_BUILD_SYSTEM_not_legacy = YES

        We can then use WK_USE_NEW_BUILD_SYSTEM where we used to use the
        externally-defined USE_NEW_BUILD_SYSTEM.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2020-07-29  Darin Adler  <darin@apple.com>

        Improve range idioms and other changes to prepare the way for more reduction in live range use
        https://bugs.webkit.org/show_bug.cgi?id=214882

        Reviewed by Sam Weinig.

        * WebKitLegacy.xcodeproj/project.pbxproj: Removed singly-building
        DOMUIKitExtensions.mm, which also is built in a unified source file.
        We don't need to build it twice.

2020-07-05  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r263960.
        https://bugs.webkit.org/show_bug.cgi?id=213980

        Re-land, because r263959 somehow fixed the build issue caused
        by r263953

        Reverted changeset:

        "Unreviewed, reverting r263953 and r263959."
        https://bugs.webkit.org/show_bug.cgi?id=213979
        https://trac.webkit.org/changeset/263960

2020-07-05  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r263953 and r263959.
        https://bugs.webkit.org/show_bug.cgi?id=213979

        Broke internal build

        Reverted changesets:

        "[Cocoa] Move almost all features from FeatureDefines.xcconfig
        to PlatformEnableCocoa.h"
        https://bugs.webkit.org/show_bug.cgi?id=212542
        https://trac.webkit.org/changeset/263953

        "[Cocoa] Remove FEATURE_DEFINES from the Cocoa/Xcode build
        system"
        https://bugs.webkit.org/show_bug.cgi?id=213976
        https://trac.webkit.org/changeset/263959

2020-07-05  Darin Adler  <darin@apple.com>

        [Cocoa] Remove FEATURE_DEFINES from the Cocoa/Xcode build system
        https://bugs.webkit.org/show_bug.cgi?id=213976

        Reviewed by Sam Weinig.

        * WebKitLegacy.xcodeproj/project.pbxproj: Removed FeatureDefines.xconfig.

2020-07-05  Andy Estes  <aestes@apple.com>

        [iOS] La Banque Postale app does not respect safe area insets on iOS 14
        https://bugs.webkit.org/show_bug.cgi?id=213974
        <rdar://problem/65109197>

        Reviewed by Darin Adler.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2020-07-03  Darin Adler  <darin@apple.com>

        Make generate-unified-sources.sh not depend on features being listed in FEATURE_DEFINES environment variable
        https://bugs.webkit.org/show_bug.cgi?id=212420

        Reviewed by Don Olmstead.

        * scripts/generate-unified-sources.sh: Removed --feature-flags from the
        arguments passed to generate-unified-source-bundles.rb. Also removed many
        unneeded quotes.

2020-07-02  Alex Christensen  <achristensen@webkit.org>

        Update Mac CMake build

        * PlatformMac.cmake:

2020-06-17  Darryl Pogue  <darryl@dpogue.ca>

        IndexedDB: Support IDBFactory databases method
        https://bugs.webkit.org/show_bug.cgi?id=211043

        Reviewed by Youenn Fablet.

        Plumbing for returning a list of IDB databases and versions.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::getAllDatabaseNamesAndVersions):
        (InProcessIDBServer::didGetAllDatabaseNamesAndVersions):
        (InProcessIDBServer::getAllDatabaseNames): Deleted.
        (InProcessIDBServer::didGetAllDatabaseNames): Deleted.
        * Storage/InProcessIDBServer.h:

2020-06-16  Truitt Savell  <tsavell@apple.com>

        Unreviewed, reverting r263079.

        Broke Internal builds.

        Reverted changeset:

        "IndexedDB: Support IDBFactory databases method"
        https://bugs.webkit.org/show_bug.cgi?id=211043
        https://trac.webkit.org/changeset/263079

2020-06-16  Darryl Pogue  <darryl@dpogue.ca>

        IndexedDB: Support IDBFactory databases method
        https://bugs.webkit.org/show_bug.cgi?id=211043

        Reviewed by Youenn Fablet.

        Plumbing for returning a list of IDB databases and versions.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::getAllDatabaseNamesAndVersions):
        (InProcessIDBServer::didGetAllDatabaseNamesAndVersions):
        (InProcessIDBServer::getAllDatabaseNames): Deleted.
        (InProcessIDBServer::didGetAllDatabaseNames): Deleted.
        * Storage/InProcessIDBServer.h:

2020-06-12  Keith Rollin  <krollin@apple.com>

        Add dependencies for Migrate Headers and Generate Export Files build phases
        https://bugs.webkit.org/show_bug.cgi?id=213072
        <rdar://problem/64249345>

        Reviewed by Tim Horton.

        These build phases have incomplete specifications for the files they
        consume and produce, which can lead to incorrect builds. Address this
        by:

        - Adding the WebCore/PrivateHeaders directory (which contains the
          headers being migrated) as input to the Migrate Headers build phase
        - Touching a timestamp file when re-exporting any headers in the
          Migrate Headers build phase
        - Adding the timestamp file as an output of the Migrate Headers build
          phase
        - Adding the timestamp file as an input of the Generate Export Files
          build phase
        - Adding other files that Generate Export Files consumes to the list
          of input files

        In this way, if any exported headers are changed, both Migrate Headers
        and Generate Export Files will be run.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2020-05-29  Keith Rollin  <krollin@apple.com>

        Revert switch to XCBuild
        https://bugs.webkit.org/show_bug.cgi?id=212530
        <rdar://problem/63764632>

        Unreviewed build fix.

        Bug 209890 enabled the use of XCBuild by default. Since then, some
        build issues have shown up. While addressing them, temporarily turn
        off the use of XCBuild by default.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2020-05-27  Keith Rollin  <krollin@apple.com>

        Enable the use of XCBuild by default in Apple builds
        https://bugs.webkit.org/show_bug.cgi?id=209890
        <rdar://problem/44182078>

        Unreviewed build fix. Check the value of XCODE_VERSION_ACTUAL rather
        than XCODE_VERSION_MAJOR when determining whether to use the XCBuild
        or non-XCBuild method of running header post-processing scripts.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2020-05-26  Keith Rollin  <krollin@apple.com>

        Enable the use of XCBuild by default in Apple builds
        https://bugs.webkit.org/show_bug.cgi?id=209890
        <rdar://problem/44182078>

        Reviewed by Darin Adler.

        Switch from the "legacy" Xcode build system to the "new" build system
        (also known as "XCBuild"). Switching to the new system speeds up
        builds by a small percentage, better validates projects for
        build-related issues (such as dependency cycles), lets WebKit benefit
        from future improvements in XCBuild such as those coming from the
        underlying llbuild open source project, and prepares us for any other
        tools built for this new ecosystem.

        Specific changes:

        - Remove Xcode project and workspace settings that selected the Build
          system, allowing the default to take hold (which is currently the
          New build system).
        - Updated webkitdirs.pm with a terser check for Xcode version.
        - Update build-webkit and Makefile.shared to be explicit when using
          the old build system (no longer treat it as a default or fall-back
          configuration).
        - Update various xcconfig files similarly to treat the default as
          using the new build system.
        - Update various post-processing build steps to check for Xcode 11.4
          and to no longer treat the default as using the old build system.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2020-05-13  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fix AppleWin link error
        https://bugs.webkit.org/show_bug.cgi?id=211843

        Reviewed by Brent Fulgham.

        Make sure uuid.lib comes after WebKitGUID.lib in the list of libraries to link with. Also, add a linker flag
        to allow multiple definitions of the same symbol when linking WebKit.dll.

        * PlatformWin.cmake:

2020-05-01  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fix AppleWin build
        https://bugs.webkit.org/show_bug.cgi?id=211324

        Reviewed by Don Olmstead.

        Remove unknown object target and fix link errors.

        * PlatformWin.cmake:

2020-04-25  Darin Adler  <darin@apple.com>

        [Cocoa] Deal with another round of Xcode upgrade checks
        https://bugs.webkit.org/show_bug.cgi?id=211027

        Reviewed by Alexey Proskuryakov.

        * WebKitLegacy.xcodeproj/project.pbxproj: Bump the upgrade check version.

2020-04-20  Ross Kirsling  <ross.kirsling@sony.com>

        Classes marked final should not use protected access specifier
        https://bugs.webkit.org/show_bug.cgi?id=210775

        Reviewed by Daniel Bates.

        * WebCoreSupport/WebResourceLoadScheduler.h:

2020-04-20  Darin Adler  <darin@apple.com>

        Use #import instead of #include in Objective-C and don't use #pragma once
        https://bugs.webkit.org/show_bug.cgi?id=210724

        Reviewed by David Kilzer.

        * WebKitLegacy.xcodeproj/project.pbxproj: Removed MemoryMeasure.h/mm.

2020-04-17  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WebKit::WebCore target
        https://bugs.webkit.org/show_bug.cgi?id=210445

        Reviewed by Michael Catanzaro.

        Use the WebKit::WebCore target within WebKitLegacy.

        * CMakeLists.txt:
        * PlatformFTW.cmake:
        * PlatformWin.cmake:

2020-04-08  Truitt Savell  <tsavell@apple.com>

        Unreviewed, reverting r259708.

        Broke the iOS device Build

        Reverted changeset:

        "Enable the use of XCBuild by default in Apple builds"
        https://bugs.webkit.org/show_bug.cgi?id=209890
        https://trac.webkit.org/changeset/259708

2020-04-08  Keith Rollin  <krollin@apple.com>

        Enable the use of XCBuild by default in Apple builds
        https://bugs.webkit.org/show_bug.cgi?id=209890
        <rdar://problem/44182078>

        Reviewed by Darin Adler.

        Switch from the "legacy" Xcode build system to the "new" build system
        (also known as "XCBuild"). Switching to the new system speeds up
        builds by a small percentage, better validates projects for
        build-related issues (such as dependency cycles), lets WebKit benefit
        from future improvements in XCBuild such as those coming from the
        underlying llbuild open source project, and prepares us for any other
        tools built for this new ecosystem.

        Specific changes:

        - Remove Xcode project and workspace settings that selected the Build
          system, allowing the default to take hold (which is currently the
          New build system).
        - Updated webkitdirs.pm with a terser check for Xcode version.
        - Update build-webkit and Makefile.shared to be explicit when using
          the old build system (no longer treat it as a default or fall-back
          configuration).
        - Update various xcconfig files similarly to treat the default as
          using the new build system.
        - Update various post-processing build steps to check for Xcode 11.4
          and to no longer treat the default as using the old build system.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2020-03-08  Konstantin Tokarev  <annulen@yandex.ru>

        [CMake] Some fixes for building Mac port
        https://bugs.webkit.org/show_bug.cgi?id=208770

        Reviewed by Don Olmstead.

        * PlatformMac.cmake:

2020-02-27  Don Olmstead  <don.olmstead@sony.com>

        Fix WebCore export macros for declspec
        https://bugs.webkit.org/show_bug.cgi?id=208363

        Reviewed by Konstantin Tokarev.

        Add compilation definitions for static linking of PAL and WebCore in WebKitLegacy.

        * PlatformFTW.cmake:
        * PlatformWin.cmake:

2020-02-27  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WebKit::PAL target
        https://bugs.webkit.org/show_bug.cgi?id=198493

        Reviewed by Michael Catanzaro.

        Add include of PAL target for Apple internal Windows builds.

        * CMakeLists.txt:

2020-02-24  Rob Buis  <rbuis@igalia.com>

        Handle page closure for stale-while-revalidate revalidations
        https://bugs.webkit.org/show_bug.cgi?id=204147

        Reviewed by Youenn Fablet.

        Provide empty stub for new method on LoaderStrategy.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::browsingContextRemoved):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2020-02-17  Alex Christensen  <achristensen@webkit.org> and Pavel Feldman <pavel.feldman@gmail.com>

        Ephemeral session data leaks between processes
        https://bugs.webkit.org/show_bug.cgi?id=207404

        Reviewed by Darin Adler.

        * WebCoreSupport/NetworkStorageSessionMap.cpp:
        (NetworkStorageSessionMap::ensureSession):

2020-02-17  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use builtin targets
        https://bugs.webkit.org/show_bug.cgi?id=205166

        Reviewed by Darin Adler.

        * PlatformFTW.cmake:
        * PlatformWin.cmake:

2020-02-11  Fujii Hironori  <Hironori.Fujii@sony.com>

        Fix declarations marked by wrong export macros (WEBCORE_EXPORT and WTF_EXPORT)
        https://bugs.webkit.org/show_bug.cgi?id=207453

        Reviewed by Ross Kirsling.

        * Storage/InProcessIDBServer.h:

2020-02-11  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][CMake][WK1] WebKitLegacyGUID doesn't get recompiled by updating IDL files
        https://bugs.webkit.org/show_bug.cgi?id=207456

        Reviewed by Don Olmstead.

        In GENERATE_INTERFACE macro, only *.h files were specified to
        OUTPUT of add_custom_command. Generated *_i.c files were just
        marked GENERATED source file property. So, WebKitLegacyGUID didn't
        know which command generates *_i.c files.

        Added a new option HEADER_ONLY to GENERATE_INTERFACE. If
        HEADER_ONLY is not specified, append ${_filewe}_i.c to the OUTPUT.
        Only AccessibleStates.idl and IA2CommonTypes.idl are marked with
        HEADER_ONLY.

        Removed _defines and _depends options to simplify
        GENERATE_INTERFACE.

        * PlatformWin.cmake:

2020-02-10  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r256091.

        Broke internal builds

        Reverted changeset:

        "Move trivial definitions from FeatureDefines.xcconfig to
        PlatformEnableCocoa.h"
        https://bugs.webkit.org/show_bug.cgi?id=207155
        https://trac.webkit.org/changeset/256091

2020-02-08  Sam Weinig  <weinig@apple.com>

        Move trivial definitions from FeatureDefines.xcconfig to PlatformEnableCocoa.h
        https://bugs.webkit.org/show_bug.cgi?id=207155

        Reviewed by Tim Horton.

        To support the move, generate-unified-sources.sh has been updated to generate 
        the list of ENABLE_* features by directly from preprocessing Platform.h, rather 
        than just getting the partial list from the xcconfig file.

        * scripts/generate-unified-sources.sh:

2020-02-07  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r256051.

        Broke internal builds.

        Reverted changeset:

        "Move trivial definitions from FeatureDefines.xcconfig to
        PlatformEnableCocoa.h"
        https://bugs.webkit.org/show_bug.cgi?id=207155
        https://trac.webkit.org/changeset/256051

2020-02-07  Sam Weinig  <weinig@apple.com>

        Move trivial definitions from FeatureDefines.xcconfig to PlatformEnableCocoa.h
        https://bugs.webkit.org/show_bug.cgi?id=207155

        Reviewed by Tim Horton.

        To support the move, generate-unified-sources.sh has been updated to generate 
        the list of ENABLE_* features by directly from preprocessing Platform.h, rather 
        than just getting the partial list from the xcconfig file.

        * scripts/generate-unified-sources.sh:

2020-02-04  Ross Kirsling  <ross.kirsling@sony.com>

        [CMake] Add Cairo::Cairo target
        https://bugs.webkit.org/show_bug.cgi?id=207159

        Reviewed by Konstantin Tokarev.

        * PlatformWin.cmake:

2020-02-03  Sihui Liu  <sihui_liu@apple.com>

        Crash in WebCore::IDBServer::IDBServer::createIndex
        https://bugs.webkit.org/show_bug.cgi?id=207137
        <rdar://problem/59096231>

        Reviewed by Darin Adler.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::createIndex): Create an isolated copy of IDBIndexInfo before passing it to IDB thread.

2020-01-31  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add _PRIVATE_LIBRARIES to framework
        https://bugs.webkit.org/show_bug.cgi?id=207004

        Reviewed by Konstantin Tokarev.

        Move uses of PRIVATE within _LIBRARIES to _PRIVATE_LIBRARIES. Any _LIBRARIES appended
        afterwards will have that visibility set erroneously.

        * CMakeLists.txt:
        * PlatformFTW.cmake:
        * PlatformWin.cmake:

2020-01-24  Keith Rollin  <krollin@apple.com>

        Remove check-xcfilelists.sh from WebKitLegacy Xcode build target
        https://bugs.webkit.org/show_bug.cgi?id=206762
        <rdar://problem/58825997>

        Reviewed by Alexey Proskuryakov.

        When check-xcfilelists.sh got added to the WebKitLegacy Xcode project,
        it was also accidentally added to the WebKitLegacy build target. This
        caused it to be treated as a "resource", and so was copied to the
        output directory in the Resources sub-folder during the build. This
        copying is not expected, needed, or desired. Remove
        check-xcfilelists.sh from the target, which also removes it from the
        Copy Resources build phase, which removes it from the
        WebKitLegacy.framework/Resources directory.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2020-01-20  David Kilzer  <ddkilzer@apple.com>

        Fix missing header guards and clean up empty files in WebCore, WebKitLegacy, WebKit, Tools
        <https://webkit.org/b/206505>

        Reviewed by Eric Carlson.

        * WebCoreSupport/WebViewGroup.h:
        - Add #pragma once statement.

2020-01-16  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fix AppleWin build
        https://bugs.webkit.org/show_bug.cgi?id=206299

        Reviewed by Brent Fulgham.

        Include required targets. Build internal builds with VS2019.

        * CMakeLists.txt:
        * WebKitLegacy.vcxproj/WebKitLegacy.proj:

2020-01-07  Sihui Liu  <sihui_liu@apple.com>

        REGRESSION (r248734): different threads write m_storageMap of StorageAreaImpl at the same time
        https://bugs.webkit.org/show_bug.cgi?id=205764
        <rdar://problem/58179425>

        Reviewed by Maciej Stachowiak.

        In StorageAreaImpl, we avoid modifying m_storageMap from different threads at the same time by blocking main 
        thread access to it until the writes(importing items) of storage thread is done.

        In r248734 we introduced a new case where the main thread could modify m_storageMap for session change, but we 
        didn't add the wait there.

        * Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::importItems):
        (WebKit::StorageAreaImpl::sessionChanged):

2020-01-06  Mark Lam  <mark.lam@apple.com>

        Convert ASSERT_DISABLED to ASSERT_ENABLED, and fix some tests of NDEBUG that should actually test for ASSERT_ENABLED.
        https://bugs.webkit.org/show_bug.cgi?id=205776

        Reviewed by Saam Barati.

        * Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::StorageAreaImpl):
        (WebKit::StorageAreaImpl::close):
        * Storage/StorageAreaImpl.h:

2020-01-03  Simon Fraser  <simon.fraser@apple.com>

        Add some shared schemes to the WebKit.xcworkspace
        https://bugs.webkit.org/show_bug.cgi?id=205698

        Reviewed by Tim Horton.

        Make WebKit.xcworkspace show the following schemes by default:
            All Source
            All Tools
            WTF
            JavaScriptCore
            WebCore
            WebKit
            WebKitLegacy
            DumpRenderTree
            WebKitTestRunner
            TestWebKitAPI
            MiniBrowser
            MobileMiniBrowser.
            
        Also remove the MobileMiniBrowserUITests scheme.

        * WebKitLegacy.xcodeproj/xcshareddata/xcschemes/WebKitLegacy.xcscheme: Copied from Tools/MobileMiniBrowser/MobileMiniBrowser.xcodeproj/xcshareddata/xcschemes/MobileMiniBrowserUITests.xcscheme.

2019-12-18  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: perform IDBServer work only on background thread
        https://bugs.webkit.org/show_bug.cgi?id=203690
        <rdar://problem/56908496>

        Reviewed by Alex Christensen.

        Make class InProcessIDBServer ThreadSafeRefCounted. It now has a background thread which IDBServer runs on. 
        InProcessIDBServer knows to dispatch tasks to database thread and dispatch task replies to main thread.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::create):
        (InProcessIDBServer::~InProcessIDBServer):
        (InProcessIDBServer::InProcessIDBServer):
        (InProcessIDBServer::deleteDatabase):
        (InProcessIDBServer::didDeleteDatabase):
        (InProcessIDBServer::openDatabase):
        (InProcessIDBServer::didOpenDatabase):
        (InProcessIDBServer::didAbortTransaction):
        (InProcessIDBServer::didCommitTransaction):
        (InProcessIDBServer::didCreateObjectStore):
        (InProcessIDBServer::didDeleteObjectStore):
        (InProcessIDBServer::didRenameObjectStore):
        (InProcessIDBServer::didClearObjectStore):
        (InProcessIDBServer::didCreateIndex):
        (InProcessIDBServer::didDeleteIndex):
        (InProcessIDBServer::didRenameIndex):
        (InProcessIDBServer::didPutOrAdd):
        (InProcessIDBServer::didGetRecord):
        (InProcessIDBServer::didGetAllRecords):
        (InProcessIDBServer::didGetCount):
        (InProcessIDBServer::didDeleteRecord):
        (InProcessIDBServer::didOpenCursor):
        (InProcessIDBServer::didIterateCursor):
        (InProcessIDBServer::abortTransaction):
        (InProcessIDBServer::commitTransaction):
        (InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
        (InProcessIDBServer::createObjectStore):
        (InProcessIDBServer::deleteObjectStore):
        (InProcessIDBServer::renameObjectStore):
        (InProcessIDBServer::clearObjectStore):
        (InProcessIDBServer::createIndex):
        (InProcessIDBServer::deleteIndex):
        (InProcessIDBServer::renameIndex):
        (InProcessIDBServer::putOrAdd):
        (InProcessIDBServer::getRecord):
        (InProcessIDBServer::getAllRecords):
        (InProcessIDBServer::getCount):
        (InProcessIDBServer::deleteRecord):
        (InProcessIDBServer::openCursor):
        (InProcessIDBServer::iterateCursor):
        (InProcessIDBServer::establishTransaction):
        (InProcessIDBServer::fireVersionChangeEvent):
        (InProcessIDBServer::didStartTransaction):
        (InProcessIDBServer::didCloseFromServer):
        (InProcessIDBServer::notifyOpenDBRequestBlocked):
        (InProcessIDBServer::databaseConnectionPendingClose):
        (InProcessIDBServer::databaseConnectionClosed):
        (InProcessIDBServer::abortOpenAndUpgradeNeeded):
        (InProcessIDBServer::didFireVersionChangeEvent):
        (InProcessIDBServer::openDBRequestCancelled):
        (InProcessIDBServer::getAllDatabaseNames):
        (InProcessIDBServer::didGetAllDatabaseNames):
        (InProcessIDBServer::closeAndDeleteDatabasesModifiedSince):
        (InProcessIDBServer::dispatchTask):
        (InProcessIDBServer::dispatchTaskReply):
        (InProcessIDBServer::confirmDidCloseFromServer): Deleted.
        * Storage/InProcessIDBServer.h:
        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::deleteAllDatabases):

2019-12-11  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: Introduce WebIDBServer class
        https://bugs.webkit.org/show_bug.cgi?id=205095

        Reviewed by Alex Christensen.

        * Storage/InProcessIDBServer.cpp:
        (InProcessIDBServer::create):

2019-12-11  Sihui Liu  <sihui_liu@apple.com>

        Add type to StorageThread
        https://bugs.webkit.org/show_bug.cgi?id=205082

        Reviewed by Alex Christensen.

        * Storage/StorageThread.cpp:
        (WebCore::StorageThread::StorageThread):
        (WebCore::StorageThread::start):
        * Storage/StorageThread.h:

2019-12-05  Sihui Liu  <sihui_liu@apple.com>

        Move InProcessIDBServer to WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=204896

        Reviewed by Brady Eidson.

        * CMakeLists.txt:
        * Storage/InProcessIDBServer.cpp: Renamed from Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp.
        (InProcessIDBServer::create):
        (InProcessIDBServer::quotaManager):
        (storageQuotaManagerSpaceRequester):
        (InProcessIDBServer::InProcessIDBServer):
        (InProcessIDBServer::identifier const):
        (InProcessIDBServer::connectionToServer const):
        (InProcessIDBServer::connectionToClient const):
        (InProcessIDBServer::deleteDatabase):
        (InProcessIDBServer::didDeleteDatabase):
        (InProcessIDBServer::openDatabase):
        (InProcessIDBServer::didOpenDatabase):
        (InProcessIDBServer::didAbortTransaction):
        (InProcessIDBServer::didCommitTransaction):
        (InProcessIDBServer::didCreateObjectStore):
        (InProcessIDBServer::didDeleteObjectStore):
        (InProcessIDBServer::didRenameObjectStore):
        (InProcessIDBServer::didClearObjectStore):
        (InProcessIDBServer::didCreateIndex):
        (InProcessIDBServer::didDeleteIndex):
        (InProcessIDBServer::didRenameIndex):
        (InProcessIDBServer::didPutOrAdd):
        (InProcessIDBServer::didGetRecord):
        (InProcessIDBServer::didGetAllRecords):
        (InProcessIDBServer::didGetCount):
        (InProcessIDBServer::didDeleteRecord):
        (InProcessIDBServer::didOpenCursor):
        (InProcessIDBServer::didIterateCursor):
        (InProcessIDBServer::abortTransaction):
        (InProcessIDBServer::commitTransaction):
        (InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
        (InProcessIDBServer::createObjectStore):
        (InProcessIDBServer::deleteObjectStore):
        (InProcessIDBServer::renameObjectStore):
        (InProcessIDBServer::clearObjectStore):
        (InProcessIDBServer::createIndex):
        (InProcessIDBServer::deleteIndex):
        (InProcessIDBServer::renameIndex):
        (InProcessIDBServer::putOrAdd):
        (InProcessIDBServer::getRecord):
        (InProcessIDBServer::getAllRecords):
        (InProcessIDBServer::getCount):
        (InProcessIDBServer::deleteRecord):
        (InProcessIDBServer::openCursor):
        (InProcessIDBServer::iterateCursor):
        (InProcessIDBServer::establishTransaction):
        (InProcessIDBServer::fireVersionChangeEvent):
        (InProcessIDBServer::didStartTransaction):
        (InProcessIDBServer::didCloseFromServer):
        (InProcessIDBServer::notifyOpenDBRequestBlocked):
        (InProcessIDBServer::databaseConnectionPendingClose):
        (InProcessIDBServer::databaseConnectionClosed):
        (InProcessIDBServer::abortOpenAndUpgradeNeeded):
        (InProcessIDBServer::didFireVersionChangeEvent):
        (InProcessIDBServer::openDBRequestCancelled):
        (InProcessIDBServer::confirmDidCloseFromServer):
        (InProcessIDBServer::getAllDatabaseNames):
        (InProcessIDBServer::didGetAllDatabaseNames):
        * Storage/InProcessIDBServer.h: Added.
        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::idbConnectionToServerForSession):
        (WebDatabaseProvider::deleteAllDatabases):
        * Storage/WebDatabaseProvider.h:
        * WebKitLegacy.xcodeproj/project.pbxproj:

2019-12-04  Chris Dumez  <cdumez@apple.com>

        PageConfiguration::progressTrackerClient should use a smart pointer
        https://bugs.webkit.org/show_bug.cgi?id=204854

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:

2019-12-02  Fujii Hironori  <Hironori.Fujii@sony.com>

        [AppleWin] WebKitQuartzCoreAdditions.dll isn't compiled since r248444
        https://bugs.webkit.org/show_bug.cgi?id=204695

        Reviewed by Alex Christensen.

        * CMakeLists.txt: Replaced APPLE with USE_CA in the condition of
        building WebKitQuartzCoreAdditions.

2019-10-31  Alex Christensen  <achristensen@apple.com>

        Enable more features in Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=203699

        Rubber-stamped by Tim Horton.

        * PlatformMac.cmake:

2019-10-31  Alex Christensen  <achristensen@webkit.org>

        CMake build should make WebKit framework able to be used by Safari
        https://bugs.webkit.org/show_bug.cgi?id=203685

        Rubber-stamped by Tim Horton.

        * PlatformMac.cmake:

2019-10-01  Alex Christensen  <achristensen@webkit.org>

        Progress towards successful CMake build on Mac
        https://bugs.webkit.org/show_bug.cgi?id=202426

        Rubber-stamped by Tim Horton.

        * PlatformMac.cmake:

2019-10-01  Alex Christensen  <achristensen@webkit.org>

        Unify more WebKitLegacy sources
        https://bugs.webkit.org/show_bug.cgi?id=202410

        Reviewed by Tim Horton.

        * SourcesCocoa.txt:
        * UnifiedSources-output.xcfilelist:
        * WebKitLegacy.xcodeproj/project.pbxproj:
        * scripts/generate-unified-sources.sh:

2019-09-30  Alex Christensen  <achristensen@webkit.org>

        Resurrect Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=202384

        Rubber-stamped by Tim Horton.

        * PlatformMac.cmake:

2019-09-30  Alex Christensen  <achristensen@webkit.org>

        Unify more WebKitLegacy sources
        https://bugs.webkit.org/show_bug.cgi?id=202390

        Reviewed by Tim Horton.

        These files were causing problems with the CMake build, but only if not unified.
        So I unified them and sped up the build too, without changing any behavior.

        * SourcesCocoa.txt:
        * UnifiedSources-output.xcfilelist:
        * WebKitLegacy.xcodeproj/project.pbxproj:
        * scripts/generate-unified-sources.sh:

2019-09-10  Fujii Hironori  <Hironori.Fujii@sony.com>

        Unreviewed, rolling out r239097.

        This is not a right fix. DumpRenderTree, MiniBrowser and
        TestWebKitAPI are still reporting the same warning.

        Reverted changeset:

        "[Win][WebKitLegacy][Clang] WebKit.h warning:
        'IWebEditingDelegate2::shouldInsertNode' hides overloaded
        virtual function [-Woverloaded-virtual]"
        https://bugs.webkit.org/show_bug.cgi?id=192581
        https://trac.webkit.org/changeset/239097

2019-09-03  Chris Dumez  <cdumez@apple.com>

        FrameLoader::FrameProgressTracker::progressCompleted() does not need a pageID
        https://bugs.webkit.org/show_bug.cgi?id=201431

        Reviewed by Antti Koivisto.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::pageLoadCompleted):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2019-08-30  Brent Fulgham  <bfulgham@apple.com>

        [FTW] Use DirectX SharedResource as basis for SharedBitmap
        https://bugs.webkit.org/show_bug.cgi?id=201157

        Reviewed by Alex Christensen.

        * PlatformFTW.cmake: Link to DirectX to avoid build failure.

2019-08-19  Sihui Liu  <sihui_liu@apple.com>

        Remove IDB-specific quota
        https://bugs.webkit.org/show_bug.cgi?id=196545
        <rdar://problem/54201783>

        Reviewed by Youenn Fablet.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::setIDBPerOriginQuota): Deleted.
        * Storage/WebDatabaseProvider.h:

2019-08-19  Youenn Fablet  <youenn@apple.com>

        Remove SessionID::emptySessionID()
        https://bugs.webkit.org/show_bug.cgi?id=200811

        Reviewed by Alex Christensen.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::idbConnectionToServerForSession):
        * Storage/WebDatabaseProvider.h:

2019-08-18  Yusuke Suzuki  <ysuzuki@apple.com>

        [WTF] Add makeUnique<T>, which ensures T is fast-allocated, makeUnique / makeUniqueWithoutFastMallocCheck part
        https://bugs.webkit.org/show_bug.cgi?id=200620

        Reviewed by Geoffrey Garen.

        * Storage/StorageSyncManager.cpp:
        (WebCore::StorageSyncManager::StorageSyncManager):
        * Storage/StorageThread.cpp:
        (WebCore::StorageThread::dispatch):
        (WebCore::StorageThread::terminate):
        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::StorageTracker):
        * WebCoreSupport/NetworkStorageSessionMap.cpp:
        (NetworkStorageSessionMap::defaultStorageSession):
        (NetworkStorageSessionMap::switchToNewTestingSession):
        (NetworkStorageSessionMap::ensureSession):

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

        [FTW] Enable CoreFoundation use if building for Apple target
        https://bugs.webkit.org/show_bug.cgi?id=200799

        Reviewed by Alex Christensen.

        * PlatformFTW.cmake:

2019-08-15  Sihui Liu  <sihui_liu@apple.com>

        Some improvements on web storage
        https://bugs.webkit.org/show_bug.cgi?id=200373

        Reviewed by Geoffrey Garen.

        Do some clean-up and add support for session change of web storage in layout tests.

        * Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::sessionChanged):
        * Storage/StorageAreaImpl.h:
        (): Deleted.

        * Storage/StorageAreaSync.h: make sure StorageAreaSync is destructed on the main thread, as it can be 
        dereferenced in StorageAreaImpl::sessionChanged and its last reference for final sync could be released on the 
        background thread.

        * Storage/StorageNamespaceImpl.cpp: replace EphemeralLocalStorage with LocalStorage, and store SessionID in 
        StorageNamespace.
        (WebKit::StorageNamespaceImpl::createSessionStorageNamespace):
        (WebKit::StorageNamespaceImpl::getOrCreateLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::StorageNamespaceImpl):
        (WebKit::StorageNamespaceImpl::copy):
        (WebKit::StorageNamespaceImpl::close):
        (WebKit::StorageNamespaceImpl::setSessionIDForTesting):
        (WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace): Deleted.
        * Storage/StorageNamespaceImpl.h:
        * Storage/WebStorageNamespaceProvider.cpp:
        (WebKit::WebStorageNamespaceProvider::createSessionStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createTransientLocalStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createEphemeralLocalStorageNamespace): Deleted.
        * Storage/WebStorageNamespaceProvider.h:

2019-08-14  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r248526.

        Caused two IndexedDB perf tests to fail

        Reverted changeset:

        "Remove IDB-specific quota"
        https://bugs.webkit.org/show_bug.cgi?id=196545
        https://trac.webkit.org/changeset/248526

2019-08-12  Youenn Fablet  <youenn@apple.com>

        Remove IDB-specific quota
        https://bugs.webkit.org/show_bug.cgi?id=196545

        Reviewed by Alex Christensen.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::idbConnectionToServerForSession):
        (WebDatabaseProvider::deleteAllDatabases):
        (WebDatabaseProvider::setIDBPerOriginQuota): Deleted.
        * Storage/WebDatabaseProvider.h:

2019-08-10  Tim Horton  <timothy_horton@apple.com>

        Remove some more unused 32-bit code
        https://bugs.webkit.org/show_bug.cgi?id=200607

        Reviewed by Alexey Proskuryakov.

        * PlatformMac.cmake:
        * WebKitLegacy.xcodeproj/project.pbxproj:

2019-08-09  Keith Rollin  <krollin@apple.com>

        Fix WebKitLegacy's post-process-header-rule script to support paths with spaces in them
        https://bugs.webkit.org/show_bug.cgi?id=200595
        <rdar://problem/54045608>

        Reviewed by Darin Adler.

        A number of scripts were added to WebKit, JavaScriptCore, and
        WebKitLegacy to support XCBuild's new facility for copying and
        modifying files in one atomic step. The first two are OK, but
        WebKitLegacy's script (post-process-header-rule) references a file via
        a variable named "header", and does so without quoting the variable's
        value. When the header's path contains spaces -- as can happen when
        building Safari Technology Preview -- the script breaks. Fix this by
        adding quoting.

        * scripts/postprocess-header-rule:

2019-08-08  Brent Fulgham  <bfulgham@apple.com>

        [FTW] Get WebKit, WebKit2, and MiniBrowser building and executing
        https://bugs.webkit.org/show_bug.cgi?id=200539
        <rdar://problem/54082550>

        Reviewed by Dean Jackson.

        * CMakeLists.txt:
        * PlatformFTW.cmake: Added.

2019-08-06  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fix AppleWin build
        https://bugs.webkit.org/show_bug.cgi?id=200455

        Reviewed by Alex Christensen.

        * CMakeLists.txt:
        * PlatformWin.cmake:
        * WebKitLegacy.vcxproj/WebKitLegacy.proj:

2019-07-31  Keith Rollin  <krollin@apple.com>

        Update WebKitLegacy for XCBuild
        https://bugs.webkit.org/show_bug.cgi?id=200310
        <rdar://problem/53773708>

        Reviewed by Alex Christensen.

        Bug 199771 (svn r247570) updated WebKitLegacy to use the unified-build
        technique. Now update WebKitLegacy to build under XCBuild after those
        changes. This work involves adding an "Apply Configuration to
        XCFileLists" build target, adding a check-xcfilelists.sh script,
        adding a "Check xcfilelists" build phase that calls that script,
        adding knowledge of the project to the generate-xcfilelists script,
        creating new .xcfilelist files, and adding those to the project.

        * UnifiedSources-output.xcfilelist: Added.
        * WebKitLegacy.xcodeproj/project.pbxproj:
        * scripts/check-xcfilelists.sh: Added.

2019-07-18  Alex Christensen  <achristensen@webkit.org>

        Unify builds in WebKitLegacy/mac/DOM
        https://bugs.webkit.org/show_bug.cgi?id=199771

        Reviewed by Geoffrey Garen.

        * SourcesCocoa.txt:
        * WebKitLegacy.xcodeproj/project.pbxproj:
        * scripts/generate-unified-sources.sh:

2019-07-16  Chris Dumez  <cdumez@apple.com>

        Speed up StorageManager::getValues()
        https://bugs.webkit.org/show_bug.cgi?id=199812

        Reviewed by Alex Christensen.

        * Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::importItems):
        * Storage/StorageAreaImpl.h:
        * Storage/StorageAreaSync.cpp:
        (WebKit::StorageAreaSync::performImport):

2019-07-12  Alex Christensen  <achristensen@webkit.org>

        Begin unifying WebKitLegacy sources
        https://bugs.webkit.org/show_bug.cgi?id=199730

        Reviewed by Keith Miller.

        * Sources.txt: Added.
        * SourcesCocoa.txt: Added.
        * WebKitLegacy.xcodeproj/project.pbxproj:
        * scripts/generate-unified-sources.sh: Added.

2019-07-03  Jonathan Bedard  <jbedard@apple.com>

        [Catalina] Enable WebKit build
        https://bugs.webkit.org/show_bug.cgi?id=199209

        Reviewed by Darin Adler.

        * mac/WebView/WebHTMLView.mm: Move NSView declaration to SPI header.
        * mac/WebView/WebView.mm: Use _subviewsIvar instead of _subviews.

2019-06-27  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] Bump cmake_minimum_required version to 3.10
        https://bugs.webkit.org/show_bug.cgi?id=199181

        Reviewed by Don Olmstead.

        * CMakeLists.txt:

2019-06-05  Alex Christensen  <achristensen@webkit.org>

        Progress towards resurrecting Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=197132

        Reviewed by Don Olmstead.

        * PlatformMac.cmake:

2019-06-03  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WebKit::JavaScriptCore target
        https://bugs.webkit.org/show_bug.cgi?id=198403

        Reviewed by Konstantin Tokarev.

        Use the WebKit::JavaScriptCore target.

        * CMakeLists.txt:

2019-05-31  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WebKit::WTF target
        https://bugs.webkit.org/show_bug.cgi?id=198400

        Reviewed by Konstantin Tokarev.

        Use the WebKit::WTF target.

        * PlatformWin.cmake:

2019-05-27  Chris Dumez  <cdumez@apple.com>

        Use a strongly-typed identifier for pages
        https://bugs.webkit.org/show_bug.cgi?id=198206

        Reviewed by Youenn Fablet.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::pageLoadCompleted):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2019-05-17  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use builtin FindICU
        https://bugs.webkit.org/show_bug.cgi?id=197934

        Reviewed by Michael Catanzaro.

        Remove uses of ICU_INCLUDE_DIRS and ICU_LIBRARIES.

        * CMakeLists.txt:
        * PlatformWin.cmake:

2019-05-03  Commit Queue  <commit-queue@webkit.org>

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

        Breaks compilation of jsconly on linux, breaking compilation
        for jsc-i386-ews, jsc-mips-ews and jsc-armv7-ews (Requested by
        guijemont on #webkit).

        Reverted changeset:

        "[CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into
        WEBKIT_COPY_FILES"
        https://bugs.webkit.org/show_bug.cgi?id=197174
        https://trac.webkit.org/changeset/244881

2019-05-02  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into WEBKIT_COPY_FILES
        https://bugs.webkit.org/show_bug.cgi?id=197174

        Reviewed by Alex Christensen.

        Replace WEBKIT_MAKE_FORWARDING_HEADERS with WEBKIT_COPY_FILES and make dependencies
        for framework headers explicit.

        * PlatformWin.cmake:

2019-04-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        Unreviewed, rolling out r244669.

        Windows ports can't clean build.

        Reverted changeset:

        "[Win] Add flag to enable version information stamping and
        disable by default."
        https://bugs.webkit.org/show_bug.cgi?id=197249
        https://trac.webkit.org/changeset/244669

2019-04-25  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Win] Add flag to enable version information stamping and disable by default.
        https://bugs.webkit.org/show_bug.cgi?id=197249

        Reviewed by Ross Kirsling.

        This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
        Then enable it by default on AppleWin.

        * PlatformWin.cmake:

2019-04-23  Keith Rollin  <krollin@apple.com>

        Add Xcode version check for Header post-processing scripts
        https://bugs.webkit.org/show_bug.cgi?id=197116
        <rdar://problem/50058968>

        Reviewed by Brent Fulgham.

        There are several places in our Xcode projects that post-process
        header files after they've been exported. Because of XCBuild, we're
        moving to a model where the post-processing is performed at the same
        time the header files are exported, rather than as a distinct
        post-processing step. This patch disables the distinct step when the
        inline processing is available.

        In practice, this means prefixing appropriate post-processing Custom
        Build phases with:

        if [ "${XCODE_VERSION_MAJOR}" -ge "1100" -a "${USE_NEW_BUILD_SYSTEM}" = "YES" ]; then
            # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.
            exit 0
        fi

        * WebKitLegacy.xcodeproj/project.pbxproj:

2019-04-20  Don Olmstead  <don.olmstead@sony.com>

        [CMake][Win] Use target oriented design for WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=197112

        Reviewed by Konstantin Tokarev.

        Enumerate the public framework headers for WebKitLegacy and copy them. Include
        directories should be PRIVATE. Migrate to using WebKitLegacy_DERIVED_SOURCES_DIR.

        * CMakeLists.txt:
        * PlatformMac.cmake:
        * PlatformWin.cmake:

2019-04-19  Keith Rollin  <krollin@apple.com>

        Add postprocess-header-rule scripts
        https://bugs.webkit.org/show_bug.cgi?id=197072
        <rdar://problem/50027299>

        Reviewed by Brent Fulgham.

        Several projects have post-processing build phases where exported
        headers are tweaked after they've been copied. This post-processing is
        performed via scripts called postprocess-headers.sh. For reasons
        related to XCBuild, we are now transitioning to a build process where
        the post-processing is performed at the same time as the
        exporting/copying. To support this process, add similar scripts named
        postprocess-header-rule, which are geared towards processing a single
        file at a time rather than all exported files at once. Also add a
        build rule that makes use of these scripts. These scripts and build
        rules are not used at the moment; they will come into use in an
        imminent patch.

        Note that I've named these postprocess-header-rule rather than
        postprocess-header-rule.sh. Scripts in Tools/Scripts do not have
        suffixes indicating how the tool is implemented. Scripts in
        per-project Scripts folders appear to be mixed regarding the use of
        suffixes. I'm opting here to follow the Tools/Scripts convention, with
        the expectation that over time we completely standardize on that.

        * WebKitLegacy.xcodeproj/project.pbxproj:
        * scripts/postprocess-header-rule: Added.

2019-04-18  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Make WebCore headers copies
        https://bugs.webkit.org/show_bug.cgi?id=182512
        <rdar://problem/37510435>

        Reviewed by Alex Christensen.

        Added WebCorePrivateFrameworkHeaders as a dependency of WebKitLegacy for all
        ports.

        WebCore now uses WebCore_PRIVATE_INCLUDE_DIRECTORIES for all ports. This revealed
        problems with WebKit's usage of WebCore headers. All include directories directly
        referencing the WebCore source tree we're removed from the CMake files.

        * CMakeLists.txt:
        * PlatformWin.cmake:

2019-04-18  Keith Rollin  <krollin@apple.com>

        Move MiG .def files into their own "Copy files" build step
        https://bugs.webkit.org/show_bug.cgi?id=196982

        Reviewed by Alex Christensen.

        WebKitLegacy's MiG files need to be processed differently from the
        other files in the "Copy Headers" build phase, so move them into their
        own "Copy Files" build phase. This arrangement removes them from any
        post-processing performed on the main group of headers.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2019-04-17  Commit Queue  <commit-queue@webkit.org>

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

        Causing build failures on several internal builders (Requested
        by ShawnRoberts on #webkit).

        Reverted changeset:

        "Move MiG .def files into their own "Copy files" build step"
        https://bugs.webkit.org/show_bug.cgi?id=196982
        https://trac.webkit.org/changeset/244386

2019-04-17  Keith Rollin  <krollin@apple.com>

        Move MiG .def files into their own "Copy files" build step
        https://bugs.webkit.org/show_bug.cgi?id=196982

        Reviewed by Alex Christensen.

        WebKitLegacy's MiG files need to be processed differently from the
        other files in the "Copy Headers" build phase, so move them into their
        own "Copy Files" build phase. This arrangement removes them from any
        post-processing performed on the main group of headers.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2019-04-08  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WinCairo] Separate copied headers into different directories
        https://bugs.webkit.org/show_bug.cgi?id=196655

        Reviewed by Michael Catanzaro.

        * CMakeLists.txt:
        * PlatformWin.cmake:

2019-04-05  Commit Queue  <commit-queue@webkit.org>

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

        This change breaks build of WPE and GTK ports (Requested by
        annulen on #webkit).

        Reverted changeset:

        "[CMake][WTF] Mirror XCode header directories"
        https://bugs.webkit.org/show_bug.cgi?id=191662
        https://trac.webkit.org/changeset/243833

2019-04-03  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WTF] Mirror XCode header directories
        https://bugs.webkit.org/show_bug.cgi?id=191662

        Reviewed by Konstantin Tokarev.

        Use WTFFramework as a dependency and include frameworks/WTF.cmake for AppleWin internal
        builds.

        * CMakeLists.txt:
        * PlatformWin.cmake:

2019-04-02  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] WEBKIT_MAKE_FORWARDING_HEADERS shouldn't use POST_BUILD to copy generated headers
        https://bugs.webkit.org/show_bug.cgi?id=182757

        Reviewed by Don Olmstead.

        * PlatformWin.cmake: Do not use DERIVED_SOURCE_DIRECTORIES
        parameter of WEBKIT_MAKE_FORWARDING_HEADERS. Added
        WebKitLegacyGUID_PRIVATE_FRAMEWORK_HEADERS.

2019-03-13  Youenn Fablet  <youenn@apple.com>

        Check IDB quota usage through QuotaManager
        https://bugs.webkit.org/show_bug.cgi?id=195302

        Reviewed by Chris Dumez.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::idbConnectionToServerForSession):

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

        WebKitLegacy does not need to generate an export file for i386 anymore
        https://bugs.webkit.org/show_bug.cgi?id=195380

        Reviewed by Dan Bernstein.

        * WebKitLegacy.xcodeproj/project.pbxproj:
        Update and simplify the "Generate Export Files" phase now that we don't need
        separate export files for i386 and x86_64.

2019-03-01  Tim Horton  <timothy_horton@apple.com>

        Remove unused code in WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=189614

        Reviewed by Simon Fraser.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2019-02-20  Andy Estes  <aestes@apple.com>

        [Xcode] Add SDKVariant.xcconfig to various Xcode projects
        https://bugs.webkit.org/show_bug.cgi?id=194869

        Rubber-stamped by Jer Noble.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2019-01-31  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Remove unnecessary member from NetworkStorageSession.
        https://bugs.webkit.org/show_bug.cgi?id=194137

        Reviewed by Don Olmstead.

        * WebCoreSupport/NetworkStorageSessionMap.cpp:
        (NetworkStorageSessionMap::defaultStorageSession):
        (NetworkStorageSessionMap::ensureSession):

2019-01-31  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Fix DRT crash related to private browsing.
        https://bugs.webkit.org/show_bug.cgi?id=193816

        Reviewed by Alex Christensen.

        * WebCoreSupport/NetworkStorageSessionMap.cpp:
        (NetworkStorageSessionMap::ensureSession):

2019-01-26  Darin Adler  <darin@apple.com>
  
        Replace many uses of String::format with more type-safe alternatives
        https://bugs.webkit.org/show_bug.cgi?id=192742

        Reviewed by Mark Lam.

        * Shared/WebMemorySampler.cpp:
        (WebKit::WebMemorySampler::writeHeaders): Use makeString.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticator::makeCredential): Use string concatentation.

        * UIProcess/WebInspectorUtilities.cpp:
        (WebKit::inspectorPageGroupIdentifierForPage): Use makeString.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processDidFinishLaunching): Ditto.
        (WebKit::WebProcessPool::startMemorySampler): Ditto.

2019-01-24  Ross Kirsling  <ross.kirsling@sony.com>

        Move FileSystem to WTF
        https://bugs.webkit.org/show_bug.cgi?id=193602

        Reviewed by Yusuke Suzuki.

        * Storage/StorageAreaSync.cpp:
        * Storage/StorageSyncManager.cpp:
        * Storage/StorageTracker.cpp:

2019-01-23  Ross Kirsling  <ross.kirsling@sony.com>

        [Curl] Unreviewed build fix for r240292 and friends.

        WinCairo test stability must be restored in subsequent patch.

        * WebCoreSupport/NetworkStorageSessionMap.cpp:
        (NetworkStorageSessionMap::defaultStorageSession):
        (NetworkStorageSessionMap::switchToNewTestingSession):
        (NetworkStorageSessionMap::ensureSession):

2019-01-23  Commit Queue  <commit-queue@webkit.org>

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

        "Causes multiple crashes on macOS port (probably used wrong
        ENABLE macro)" (Requested by ddkilzer on #webkit).

        Reverted changeset:

        "[Curl] Unreviewed build fix for r240292 and friends."
        https://trac.webkit.org/changeset/240403

2019-01-23  Ross Kirsling  <ross.kirsling@sony.com>

        [Curl] Unreviewed build fix for r240292 and friends.

        WinCairo test stability must be restored in subsequent patch.

        * WebCoreSupport/NetworkStorageSessionMap.cpp:
        (NetworkStorageSessionMap::defaultStorageSession):
        (NetworkStorageSessionMap::switchToNewTestingSession):
        (NetworkStorageSessionMap::ensureSession):

2019-01-22  Alex Christensen  <achristensen@webkit.org>

        Fix some builds after r240292
        https://bugs.webkit.org/show_bug.cgi?id=193580

        * WebCoreSupport/NetworkStorageSessionMap.cpp:

2019-01-22  Alex Christensen  <achristensen@webkit.org>

        Move NetworkStorageSession ownership to NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=193580

        Reviewed by Geoff Garen.

        * WebCoreSupport/NetworkStorageSessionMap.cpp: Added.
        (defaultNetworkStorageSession):
        (globalSessionMap):
        (NetworkStorageSessionMap::storageSession):
        (NetworkStorageSessionMap::defaultStorageSession):
        (NetworkStorageSessionMap::switchToNewTestingSession):
        (NetworkStorageSessionMap::ensureSession):
        (NetworkStorageSessionMap::destroySession):
        * WebCoreSupport/NetworkStorageSessionMap.h: Added.
        * WebCoreSupport/PageStorageSessionProvider.h:
        * WebKitLegacy.xcodeproj/project.pbxproj:

2019-01-15  Darin Adler  <darin@apple.com>

        Use references rather than pointers for register/unregister functions, and more
        https://bugs.webkit.org/show_bug.cgi?id=175028

        Reviewed by Daniel Bates.

        * WebKitLegacy.xcodeproj/project.pbxproj: Let Xcode update this project.

2019-01-18  Eric Carlson  <eric.carlson@apple.com>

        Revert r238815, it broke WK1 video fullscreen on Mac
        https://bugs.webkit.org/show_bug.cgi?id=193586
        <rdar://problem/47358941>

        Reviewed by Jer Noble.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2019-01-17  Alex Christensen  <achristensen@webkit.org>

        Stop using NetworkStorageSession::storageSession in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=193529

        Reviewed by Tim Horton.

        * WebCoreSupport/PageStorageSessionProvider.h: Added.
        * WebKitLegacy.xcodeproj/project.pbxproj:

2019-01-04  Youenn Fablet  <youenn@apple.com>

        CSP violation reports should bypass CSP checks
        https://bugs.webkit.org/show_bug.cgi?id=192857
        <rdar://problem/46887236>

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::startPingLoad):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2018-12-27  Alex Christensen  <achristensen@webkit.org>

        Resurrect Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=192658

        Reviewed by Yusuke Suzuki.

        * PlatformMac.cmake:

2018-12-20  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Use Ref<> as much as possible
        https://bugs.webkit.org/show_bug.cgi?id=192808

        Reviewed by Alex Christensen.

        * Storage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::copy):
        (WebKit::StorageNamespaceImpl::storageArea):
        * Storage/StorageNamespaceImpl.h:
        * Storage/WebStorageNamespaceProvider.cpp:
        (WebKit::WebStorageNamespaceProvider::create):
        (WebKit::WebStorageNamespaceProvider::createSessionStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createEphemeralLocalStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createTransientLocalStorageNamespace):
        * Storage/WebStorageNamespaceProvider.h:
        * WebCoreSupport/WebViewGroup.cpp:
        (WebViewGroup::getOrCreate):
        * WebCoreSupport/WebViewGroup.h:

2018-12-11  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][WebKitLegacy][Clang] WebKit.h warning: 'IWebEditingDelegate2::shouldInsertNode' hides overloaded virtual function [-Woverloaded-virtual]
        https://bugs.webkit.org/show_bug.cgi?id=192581

        Reviewed by Alex Christensen.

        Conventionally, WebKit COM interface adds a new interface with
        same name methods with the old interface. For example, both
        IWebEditingDelegate and IWebEditingDelegate2 interfaces has
        shouldInsertNode method.

        This is a part of public API, can't be renamed.

        * PlatformWin.cmake: Added -Wno-overloaded-virtual compiler option
        for WebKitLegacy

2018-12-06  Alex Christensen  <achristensen@webkit.org>

        Remove unused LoaderStrategy::storeDerivedDataToCache and associated dead code
        https://bugs.webkit.org/show_bug.cgi?id=192452

        Reviewed by Anders Carlsson.

        * WebCoreSupport/WebResourceLoadScheduler.h:

2018-12-03  Jer Noble  <jer.noble@apple.com>

        Get rid of old, dead Mac video fullscreen code.
        https://bugs.webkit.org/show_bug.cgi?id=192315

        Reviewed by Eric Carlson.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2018-11-30  Alex Christensen  <achristensen@webkit.org>

        Move URL from WebCore to WTF
        https://bugs.webkit.org/show_bug.cgi?id=190234

        Reviewed by Keith Miller.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        * WebCoreSupport/WebResourceLoadScheduler.h:

2018-11-26  Brent Fulgham  <bfulgham@apple.com>

        [Win] Reduce the use of WKSI library calls: CoreAnimation
        https://bugs.webkit.org/show_bug.cgi?id=191777
        <rdar://problem/46140542>

        Reviewed by Zalan Bujtas.

        Update the Windows build of WebKit to refer to the SPI headers, rather than WebKitSystemInterface.
        Move a small amount of glue code from WKSI to WebCore, and remove any includes or link
        directives for WebKitSystemInterface.lib.

        * PlatformWin.cmake:

2018-11-17  Devin Rousso  <drousso@apple.com>

        Web Inspector: Network: add button to show system certificate dialog
        https://bugs.webkit.org/show_bug.cgi?id=191458
        <rdar://problem/45977019>

        Reviewed by Joseph Pecoraro.

        * WebCoreSupport/WebInspectorClientIOS.mm:
        (WebInspectorFrontendClient::showCertificate): Added.

2018-11-09  Sihui Liu  <sihui_liu@apple.com>

        Remove legacy storage tracker database file after r237330
        https://bugs.webkit.org/show_bug.cgi?id=191423

        Reviewed by Geoffrey Garen.

        r237330 changed the file name of storage tracker database, but it did not remove the old 
        file before using the new one.

        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::internalInitialize):

2018-11-01  Sihui Liu  <sihui_liu@apple.com>

        Add a storage limit for IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=190598
        <rdar://problem/44654715>

        Reviewed by Chris Dumez.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::idbConnectionToServerForSession):
        (WebDatabaseProvider::setIDBPerOriginQuota):
        * Storage/WebDatabaseProvider.h:

2018-10-30  Alexey Proskuryakov  <ap@apple.com>

        Enable InstallAPI for iOS unconditionally
        https://bugs.webkit.org/show_bug.cgi?id=191043
        rdar://problem/32728423

        Reviewed by Dan Bernstein.

        * WebKitLegacy.xcodeproj/project.pbxproj: Added NSURLDownloadSPI.h.

2018-10-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237600 and r237604.
        https://bugs.webkit.org/show_bug.cgi?id=191086

        Breaks internal iOS builds (Requested by ryanhadd_ on
        #webkit).

        Reverted changesets:

        "Enable InstallAPI for iOS unconditionally"
        https://bugs.webkit.org/show_bug.cgi?id=191043
        https://trac.webkit.org/changeset/237600

        "Build fix attempt after enabling InstallAPI for iOS."
        https://bugs.webkit.org/show_bug.cgi?id=191043
        https://trac.webkit.org/changeset/237604

2018-10-30  Alexey Proskuryakov  <ap@apple.com>

        Enable InstallAPI for iOS unconditionally
        https://bugs.webkit.org/show_bug.cgi?id=191043
        rdar://problem/32728423

        Reviewed by Dan Bernstein.

        * WebKitLegacy.xcodeproj/project.pbxproj: Added NSURLDownloadSPI.h.

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

        Modernize WebKit nibs and lprojs for localization's sake
        https://bugs.webkit.org/show_bug.cgi?id=190911
        <rdar://problem/45349466>

        Reviewed by Dan Bernstein.

        * English.lproj/WebJavaScriptTextInputPanel.nib/designable.nib: Removed.
        * English.lproj/WebJavaScriptTextInputPanel.nib/keyedobjects.nib: Removed.
        * WebKitLegacy.xcodeproj/project.pbxproj:
        * en.lproj/WebJavaScriptTextInputPanel.xib: Added.
        NIB->XIB, English->en

2018-10-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake][Ninja][Win] midl.exe fails to create, open and write a temporary file in parallel build in Docker container
        https://bugs.webkit.org/show_bug.cgi?id=187725

        Reviewed by Michael Catanzaro.

        * PlatformWin.cmake: Added USES_TERMINAL to serialize midl.exe
        executions.

2018-10-22  Sihui Liu  <sihui_liu@apple.com>

        Regression (r232410): StorageTracker.db file gets unlinked while in use
        https://bugs.webkit.org/show_bug.cgi?id=190795

        Reviewed by Chris Dumez.

        WK2 stopped using StorageTracker.db file in r232410 and would delete 
        the file for safety.
        It turned out WK1 could use the same file path, so WK2 may delete the 
        file while WK1 is using it.

        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::trackerDatabasePath):

2018-10-18  Alexey Proskuryakov  <ap@apple.com>

        Switch from PLATFORM(IOS) to PLATFORM(IOS_FAMILY)
        https://bugs.webkit.org/show_bug.cgi?id=190729

        Reviewed by Tim Horton.

        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::syncDeleteAllOrigins):
        (WebKit::StorageTracker::syncDeleteOrigin):
        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::loadResource):
        (WebResourceLoadScheduler::scheduleLoad):
        (WebResourceLoadScheduler::remove):
        (WebResourceLoadScheduler::servePendingRequests):

2018-10-11  Keith Rollin  <krollin@apple.com>

        CURRENT_ARCH should not be used in Run Script phase.
        https://bugs.webkit.org/show_bug.cgi?id=190407
        <rdar://problem/45133556>

        Reviewed by Alexey Proskuryakov.

        CURRENT_ARCH is used in a number of Xcode Run Script phases. However,
        CURRENT_ARCH is not well-defined during this phase (and may even have
        the value "undefined") since this phase is run just once per build
        rather than once per supported architecture. Migrate away from
        CURRENT_ARCH in favor of ARCHS, either by iterating over ARCHS and
        performing an operation for each value, or by picking the first entry
        in ARCHS and using that as a representative value.

        * WebKitLegacy.xcodeproj/project.pbxproj: When generating
        WebKitLegacy.*.exp, generate both 32- and 64-bit versions for
        macosx platforms.

2018-10-04  Dan Bernstein  <mitz@apple.com>

        WebKitLegacy part of [Xcode] Update some build settings as recommended by Xcode 10
        https://bugs.webkit.org/show_bug.cgi?id=190250

        Reviewed by Andy Estes.

        * WebKitLegacy.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck.

2018-10-01  Dean Jackson  <dino@apple.com>

        [macOS] Switching to discrete GPU should be done in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=189361
        <rdar://problem/43949622>

        Reviewed by Simon Fraser.

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

2018-09-05  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r235585): WebDownloadInternal.h is missing from WebKitLegacy Xcode project
        <https://bugs.webkit.org/show_bug.cgi?id=189072>

        Found using tidy-Xcode-project-file (see Bug 188754).

        * WebKitLegacy.xcodeproj/project.pbxproj: Remove references to
        WebDownloadInternal.h since the header was removed in r235585.

2018-08-26  Dan Bernstein  <mitz@apple.com>

        [Xcode] Don’t make unnecessary, broken WebKitPluginAgent symlink when WK_USE_OVERRIDE_FRAMEWORKS_DIR=YES
        https://bugs.webkit.org/show_bug.cgi?id=188956
        <rdar://problem/43253221>

        Reviewed by Darin Adler.

        * WebKitLegacy.xcodeproj/project.pbxproj: Updated the Symlink WebKitPluginHost build phase.

2018-08-01  Alex Christensen  <achristensen@webkit.org>

        Move all calls to ResourceLoader::start to WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=184946

        Reviewed by Andy Estes.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::setDefersLoading):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2018-06-25  Keith Rollin  <krollin@apple.com>
        Unreviewed, rolling out r233087.

        Causes 5% Mac PLT regression.

        Reverted changeset:

        "Recalc styles every time defaultAppearance changes."
        https://bugs.webkit.org/show_bug.cgi?id=186866
        https://trac.webkit.org/changeset/233087

2018-06-23  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add user-defined literal for ASCIILiteral
        https://bugs.webkit.org/show_bug.cgi?id=186839

        Reviewed by Darin Adler.

        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::syncFileSystemAndTrackerDatabase):
        * WebCoreSupport/PingHandle.h:

2018-06-09  Dan Bernstein  <mitz@apple.com>

        Added missing file references to the Configuration group.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2018-05-25  Alex Christensen  <achristensen@webkit.org>

        URL::host should return a StringView to reduce allocations
        https://bugs.webkit.org/show_bug.cgi?id=185986

        Reviewed by Geoff Garen.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::hostForURL):

2018-05-11  Charles Vazac  <cvazac@gmail.com>

        Runtime feature flag for Server-Timing
        https://bugs.webkit.org/show_bug.cgi?id=184758

        Reviewed by Youenn Fablet.

        * mac/WebView/WebPreferenceKeysPrivate.h: Added server-timing preference.
        * mac/WebView/WebPreferences.mm:
        (WebKit::WebPreferences::serverTimingEnabled):
        (WebKit::WebPreferences::setServerTimingEnabled):
        * mac/WebView/WebPreferencesPrivate.h:
        (WebKit::WebPreferences::setServerTimingEnabled):
        (WebKit::WebPreferences::serverTimingEnabled):
        * mac/WebView/WebView.mm: Set runtime enabled feature based on preference.
        * win/Interfaces/IWebPreferencesPrivate.idl: define serverTimingEnabled and setServerTimingEnabled.
        * win/WebPreferenceKeysPrivate.h: Added server-timing preference.
        * win/WebPreferences.cpp: Initialize server-timing as false and define setter and getter.
        (WebKit::WebPreferences::serverTimingEnabled):
        (WebKit::WebPreferences::setServerTimingEnabled):
        * win/WebPreferences.h: Define serverTimingEnabled and setServerTimingEnabled.
        * win/WebView.cpp: Set runtime enabled feature based on preference.

2018-05-02  Keith Rollin  <krollin@apple.com>

        Add facility for tracking times and results of page and resource loading
        https://bugs.webkit.org/show_bug.cgi?id=184838
        <rdar://problem/36548974>

        Reviewed by Brent Fulgham.

        Add an empty override of the pure virtual
        LoaderStrategy::pageLoadCompleted method.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::pageLoadCompleted):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2018-05-01  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] remove WK1 support
        https://bugs.webkit.org/show_bug.cgi?id=185136

        Reviewed by Youenn Fablet.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2018-04-30  JF Bastien  <jfbastien@apple.com>

        Use some C++17 features
        https://bugs.webkit.org/show_bug.cgi?id=185135

        Reviewed by Alex Christensen.

        * PlatformMac.cmake:

2018-04-16  Youenn Fablet  <youenn@apple.com>

        Use NetworkLoadChecker to handle synchronous HTTP loads
        https://bugs.webkit.org/show_bug.cgi?id=184240

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::loadResourceSynchronously):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2018-04-04  Alex Christensen  <achristensen@webkit.org>

        Move PingHandle to WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=184145

        Reviewed by Youenn Fablet.

        * WebCoreSupport/PingHandle.h: Copied from Source/WebCore/platform/network/PingHandle.h.
        (): Deleted.
        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        * WebKitLegacy.xcodeproj/project.pbxproj:

2018-03-27  Chris Dumez  <cdumez@apple.com>

        Move online state detection from the WebProcess to the NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=183989
        <rdar://problem/37093299>

        Reviewed by Youenn Fablet.

        No change on WebKit1 except that WebResourceLoadScheduler needs to override
        2 new virtual functions which forward the calls to the NetworkStateNotifier.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::isOnLine const):
        (WebResourceLoadScheduler::addOnlineStateChangeListener):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2018-03-26  Chris Dumez  <cdumez@apple.com>

        Use SecurityOriginData more consistently in Service Worker code
        https://bugs.webkit.org/show_bug.cgi?id=183969

        Reviewed by Darin Adler.

        Use SecurityOrigin::data() instead of SecurityOriginData::fromSecurityOrigin().

        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::diskUsageForOrigin):

2018-03-25  Commit Queue  <commit-queue@webkit.org>

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

        Caused many layout tests to crash on Apple High Sierra,
        Sierra, iOS Simulator and GTK Linux Debug test bots (Requested
        by dydz on #webkit).

        Reverted changeset:

        "Use SecurityOriginData more consistently in Service Worker
        code"
        https://bugs.webkit.org/show_bug.cgi?id=183969
        https://trac.webkit.org/changeset/229954

2018-03-24  Chris Dumez  <cdumez@apple.com>

        Use SecurityOriginData more consistently in Service Worker code
        https://bugs.webkit.org/show_bug.cgi?id=183969

        Reviewed by Darin Adler.

        Use SecurityOrigin::data() instead of SecurityOriginData::fromSecurityOrigin().

        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::diskUsageForOrigin):

2018-03-23  Tim Horton  <timothy_horton@apple.com>

        Adopt WK_PLATFORM_NAME in WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=183948
        <rdar://problem/38803908>

        Reviewed by Dan Bernstein.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2018-02-28  Alex Christensen  <achristensen@webkit.org>

        Reduce use of NetworkingContext in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=183213

        Reviewed by Brady Eidson.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::loadResourceSynchronously):
        (WebResourceLoadScheduler::preconnectTo):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2018-02-26  Don Olmstead  <don.olmstead@sony.com>

        Fix WebCore includes within WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=183147

        Reviewed by Tim Horton.

        * CMakeLists.txt:

2018-02-13  Commit Queue  <commit-queue@webkit.org>

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

        Regressed CMake build stability (Requested by dolmstead on
        #webkit).

        Reverted changeset:

        "[CMake] Make WebCore headers copies"
        https://bugs.webkit.org/show_bug.cgi?id=182512
        https://trac.webkit.org/changeset/228431

2018-02-13  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Make WebCore headers copies
        https://bugs.webkit.org/show_bug.cgi?id=182512

        Reviewed by Keith Miller.

        * PlatformWin.cmake:

2018-02-08  Per Arne Vollan  <pvollan@apple.com>

        Move WebVideoFullscreenController from WebCore to WebKitLegacy.
        https://bugs.webkit.org/show_bug.cgi?id=182615

        Reviewed by Eric Carlson.

        It is only used by WK1. Also there are a few references to NSApp in WebVideoFullscreenController.mm.
        Ideally, we should not reference NSApp in WebCore.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2018-01-23  Alex Christensen  <achristensen@webkit.org>

        Use CompletionHandlers for ResourceHandleClient::didReceiveResponseAsync
        https://bugs.webkit.org/show_bug.cgi?id=181961

        Reviewed by Michael Catanzaro.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:

2018-01-16  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] Remove WebCoreDerivedSources library target
        https://bugs.webkit.org/show_bug.cgi?id=181664

        Reviewed by Carlos Garcia Campos.

        * PlatformWin.cmake: Do not link WebCoreDerivedSources.

2018-01-07  David Kilzer  <ddkilzer@apple.com>

        Enable -Wcast-qual for WebInspectorUI, WebKitLegacy, WebKit projects
        <https://webkit.org/b/181256>
        <rdar://problem/36281730>

        Reviewed by Darin Adler.

        * PlatformMac.cmake:
        * WebKitLegacy.xcodeproj/project.pbxproj:
        - Rename WebNSDataExtras.m to WebNSDataExtras.mm and change file
          type to Objective-C++.

2018-01-03  Ting-Wei Lan  <lantw44@gmail.com>

        Replace hard-coded paths in shebangs with #!/usr/bin/env
        https://bugs.webkit.org/show_bug.cgi?id=181040

        Reviewed by Alex Christensen.

        * scripts/generate-webkitversion.pl:

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

        Remove std::chrono completely
        https://bugs.webkit.org/show_bug.cgi?id=181186

        Reviewed by Alex Christensen.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::deleteAllDatabases):

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

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

        Reviewed by Brent Fulgham.

        * PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.

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

        Drop Thread::tryCreate
        https://bugs.webkit.org/show_bug.cgi?id=180808

        Reviewed by Darin Adler.

        * Storage/StorageThread.cpp:
        (WebCore::StorageThread::start):
        * Storage/StorageThread.h:

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

        [WTF] Thread::create should have Thread::tryCreate
        https://bugs.webkit.org/show_bug.cgi?id=180333

        Reviewed by Darin Adler.

        * Storage/StorageThread.cpp:
        (WebCore::StorageThread::start):

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

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

        Reviewed by Per Arne Vollan.

        * WebKitLegacy.vcxproj/WebKitLegacy.proj:

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

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

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:

2017-11-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] WebPreferences IDL not regenerating
        https://bugs.webkit.org/show_bug.cgi?id=179960

        Reviewed by Darin Adler.

        WebKitLegacy shouldn't include the forwarding header of
        WebKitLegacy itself.

        * CMakeLists.txt: Add ${FORWARDING_HEADERS_DIR} and remove
        ${FORWARDING_HEADERS_DIR}/JavaScriptCore and
        ${FORWARDING_HEADERS_DIR}/WebKitLegacy from
        WebKitLegacy_INCLUDE_DIRECTORIES.

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

        Remove Cocoa CFURLConnection loading code
        https://bugs.webkit.org/show_bug.cgi?id=179688

        Reviewed by Antti Koivisto.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::scheduleLoad):

2017-11-06  Per Arne Vollan  <pvollan@apple.com>

        [Win] Add WebKitQuartzCoreAdditions library.
        https://bugs.webkit.org/show_bug.cgi?id=179331

        Reviewed by Alex Christensen.

        This library should be added to the OpenSource repository.

        * CMakeLists.txt:

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

        Make ResourceLoader::willSendRequestInternal asynchronous
        https://bugs.webkit.org/show_bug.cgi?id=179251

        Reviewed by Andy Estes.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::loadResource):
        (WebResourceLoadScheduler::schedulePluginStreamLoad):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2017-11-02  Christopher Reid  <chris.reid@sony.com>

        Add a FileSystem namespace to FileSystem.cpp
        https://bugs.webkit.org/show_bug.cgi?id=179063

        Reviewed by Darin Adler.

        * Storage/StorageAreaSync.cpp:
        * Storage/StorageSyncManager.cpp:
        * Storage/StorageTracker.cpp:

2017-10-31  Alex Christensen  <achristensen@webkit.org>

        Use asynchronous ResourceHandleClient calls for WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=160677

        Reviewed by Brady Eidson.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::createPingHandle):

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

        Unreviewed, rolling out r223271.

        This change introduced LayoutTest failures on WK1.

        Reverted changeset:

        "Use asynchronous ResourceHandleClient calls for WebKit1"
        https://bugs.webkit.org/show_bug.cgi?id=160677
        https://trac.webkit.org/changeset/223271

2017-10-12  Alex Christensen  <achristensen@webkit.org>

        Use asynchronous ResourceHandleClient calls for WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=160677

        Reviewed by Brady Eidson.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::createPingHandle):

2017-10-10  Sam Weinig  <sam@webkit.org>

        Replace copyKeysToVector/copyValuesToVector with copyToVector(map.keys())/copyToVector(map.values())
        https://bugs.webkit.org/show_bug.cgi?id=178102

        Reviewed by Tim Horton.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::servePendingRequests):

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

        [Win] Link error: cannot open input file 'WebKitLegacyGUID.lib'
        https://bugs.webkit.org/show_bug.cgi?id=178087

        Reviewed by Alexey Proskuryakov.

        For compatibility reasons, the library still has the name WebKitGUID.lib.

        * PlatformWin.cmake:

2017-10-05  Darin Adler  <darin@apple.com>

        Remove additional WebKitSystemInterface remnants
        https://bugs.webkit.org/show_bug.cgi?id=177948

        Reviewed by Andy Estes.

        * PlatformMac.cmake: Removed reference to deleted file WebSystemInterface.mm.

2017-10-04  Alex Christensen  <achristensen@webkit.org>

        Stop linking with WebKitSystemInterface
        https://bugs.webkit.org/show_bug.cgi?id=177915

        Reviewed by Antti Koivisto.

        * WebKitLegacy.xcodeproj/project.pbxproj:

2017-10-02  Per Arne Vollan  <pvollan@apple.com>

        [Win] Link error: cannot open file 'WebKitGUID.lib'
        https://bugs.webkit.org/show_bug.cgi?id=177759

        Reviewed by Alex Christensen.

        For backward compatibility reasons, this library should not be renamed from
        WebKitGUID.lib to WebKitLegacyGUID.lib.

        * PlatformWin.cmake:

2017-09-29  Chris Dumez  <cdumez@apple.com>

        http/tests/preconnect/link-rel-preconnect-https.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=177673

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::preconnectTo):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2017-09-28  Chris Dumez  <cdumez@apple.com>

        Add support for <link rel=preconnect>
        https://bugs.webkit.org/show_bug.cgi?id=177474
        <rdar://problem/33141380>

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::preconnectTo):
        * WebCoreSupport/WebResourceLoadScheduler.h:

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

        [Win] WebKitCOMAPI.h is not copied after build has finished.
        https://bugs.webkit.org/show_bug.cgi?id=177505

        Reviewed by Brent Fulgham.

        The file is located in the WebKitLegacy forwarding headers folder, not the WebKit folder.

        * WebKitLegacy.vcxproj/WebKitLegacy.proj:

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

        Fix the macOS WebKit CMake build

        * CMakeLists.txt:
        Before r222194, this -umbrella flag mentioned "WebKit" twice:
        first, the name of the target to affect; second, the name of the
        umbrella framework. In r222194, the targets were renamed. It turns
        out that a global find and replace isn't a great way to do this,
        because it caught the name of the umbrella framework too.

        Put it back; the umbrella framework will always be named "WebKit".

        This makes it once again possible to link WebKit (before, it was
        complaining about us linking directly to WebKitLegacy instead of the
        nonsensical WebKitLegacy umbrella framework).

2017-09-25  Chris Dumez  <cdumez@apple.com>

        Make StoredCredentials an enum class and rename its header
        https://bugs.webkit.org/show_bug.cgi?id=177455

        Reviewed by Youenn Fablet.

        Make StoredCredentials an enum class and rename its header for clarity. This was error-prone because 0 meant
        "allow" and and 1 meant "do not allow". It was trivial to convert it to a boolean by mistake and get the
        opposite behavior.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::loadResourceSynchronously):
        * WebCoreSupport/WebResourceLoadScheduler.h:

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

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

        Unreviewed, just "fixing" the build.

        * PlatformMac.cmake:
        Set up dependencies correctly for our mig-generated files.
        MAIN_DEPENDENCY is for VS, not what it sounds like.

        Add mig-generated files to WebKitLegacy, not WebKit (I think this was
        missed in the WebKit2 rename).

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

        [Win] Compile error, generate-webkitversion.pl script not found.
        https://bugs.webkit.org/show_bug.cgi?id=177310

        Reviewed by Brent Fulgham.

        The script is located using the WebKitLegacy folder cmake variable, which needs
        to be set in the project file. 
 
        * WebKitLegacy.vcxproj/WebKitLegacy.proj:

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

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

        Reviewed by Alex Christensen.

        With help from Stephan Szabo, thanks!

        * CMakeLists.txt:
        * PlatformMac.cmake:
        * PlatformWin.cmake:

2017-09-16  Tim Horton  <timothy_horton@apple.com>

        Fix the Tools build with CMake on macOS
        https://bugs.webkit.org/show_bug.cgi?id=177030

        Reviewed by Geoffrey Garen.

        * PlatformMac.cmake:
        Add some forwarding headers.

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

        [Win] Link errors when building WebKit from .proj files.
        https://bugs.webkit.org/show_bug.cgi?id=176813

        Reviewed by Brent Fulgham.

        Add missing libraries to WebKit build.

        * PlatformWin.cmake:

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

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

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:

2017-08-30  Andy Estes  <aestes@apple.com>

        [Mac] Upstream Carbon-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176087

        Reviewed by Alex Christensen.

        * WebKitLegacy.xcodeproj/project.pbxproj:

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

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

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:

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

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

        Reviewed by Konstantin Tokarev.

        * PlatformWin.cmake:

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

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

        Reviewed by Konstantin Tokarev.

        * PlatformWin.cmake:

2017-08-20  Chris Dumez  <cdumez@apple.com>

        Simplify calls to LoaderStrategy::startPingLoad()
        https://bugs.webkit.org/show_bug.cgi?id=175756

        Reviewed by Sam Weinig.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::startPingLoad):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2017-08-18  Chris Dumez  <cdumez@apple.com>

        [Beacon] Improve error reporting
        https://bugs.webkit.org/show_bug.cgi?id=175723

        Reviewed by Darin Adler.

        Have Ping loads such as beacons report errors via their completion handler.
        The Beacon API is using this error to log a console message when beacon loads
        fail, provided that the page is still alive.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::startPingLoad):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2017-08-18  Chris Dumez  <cdumez@apple.com>

        [Beacon] Add support for quota limitation
        https://bugs.webkit.org/show_bug.cgi?id=175443
        <rdar://problem/33729002>

        Reviewed by Youenn Fablet.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::startPingLoad):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2017-08-17  Chris Dumez  <cdumez@apple.com>

        Regression(r220817): We should only copy the original request headers for Ping loads
        https://bugs.webkit.org/show_bug.cgi?id=175679

        Reviewed by Youenn Fablet.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::createPingHandle):
        * WebCoreSupport/WebResourceLoadScheduler.h:

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

        [PAL] Relocate SessionID to root
        https://bugs.webkit.org/show_bug.cgi?id=175684

        Reviewed by Alex Christensen.

        * Storage/WebDatabaseProvider.cpp:

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

        [PAL] Move SessionID into PAL
        https://bugs.webkit.org/show_bug.cgi?id=174192

        Reviewed by Antti Koivisto.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::idbConnectionToServerForSession):
        * Storage/WebDatabaseProvider.h:

2017-08-16  Chris Dumez  <cdumez@apple.com>

        Cross origin Beacon requests with a ArrayBuffer / ArrayBufferView payload should not do a CORS preflight
        https://bugs.webkit.org/show_bug.cgi?id=175628
        <rdar://problem/33919278>

        Reviewed by Geoffrey Garen.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::createPingHandle):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2017-08-16  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [PAL] Move spi/ios and spi/win directories into PAL
        https://bugs.webkit.org/show_bug.cgi?id=175171

        Reviewed by Antti Koivisto.

        * Storage/StorageTracker.cpp:

2017-08-10  Dan Bernstein  <mitz@apple.com>

        Restored svn:ignore values that went missing when the project got renamed.

        * WebKitLegacy.xcodeproj: Added property svn:ignore.

2017-08-10  Chris Dumez  <cdumez@apple.com>

        [Beacon] Do connect-src CSP check on redirects as well
        https://bugs.webkit.org/show_bug.cgi?id=175410
        <rdar://problem/33815470>

        Reviewed by Youenn Fablet.

        Update createPingHandle() to take in ContentSecurityPolicy
        object in but no behavior change for WK1.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::createPingHandle):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2017-08-08  Chris Dumez  <cdumez@apple.com>

        [Beacon] Add support for CORS-preflighting for WK2 / NETWORK_SESSION
        https://bugs.webkit.org/show_bug.cgi?id=175264
        <rdar://problem/33547793>

        Reviewed by Youenn Fablet.

        createPingHandle() now takes new parameters but there is currently no behavior
        change on WebKit1.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::createPingHandle):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2017-08-03  Per Arne Vollan  <pvollan@apple.com>

        [Win] WebKit COM header file is not placed in the correct location.
        https://bugs.webkit.org/show_bug.cgi?id=175101

        Reviewed by Brent Fulgham.

        After the transition to WebKitLegacy, the generated WebKit header files should still
        be placed in the WebKit folder, so WebKit clients will find the header files in the
        same place.

        * WebKitLegacy.vcxproj/WebKitLegacy.proj:

2017-08-02  Matthew Hanson  <matthew_hanson@apple.com>

        Build-fix for Windows in Visual Studio after directory rename.

        Reviewed by Per Arne Vollan.

        * WebKitLegacy.vcxproj/WebKitLegacy.proj:
        We still build WebKit.dll, not WebKitLegacy.dll.

2017-07-31  Sam Weinig  <sam@webkit.org>

        Remove unnecessary exceptions from storage code
        https://bugs.webkit.org/show_bug.cgi?id=174572

        Reviewed by Chris Dumez.

        * Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::canAccessStorage): Deleted.
        * Storage/StorageAreaImpl.h:
        Remove canAccessStorage. It is no longer called.

2017-07-14  Filip Pizlo  <fpizlo@apple.com>

        It should be easy to decide how WebKit yields
        https://bugs.webkit.org/show_bug.cgi?id=174298

        Reviewed by Saam Barati.

        * Storage/StorageTracker.h:

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

        Unreviewed, fix Mac cmake build after r219733

        * PlatformMac.cmake:

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

        [cmake][Mac] Unreviewed, fix linking WebKitSystemInterface

        After r219560 link_directories() in PlatformXXX.cmake files does not
        affect corresponding targets.

        * PlatformMac.cmake:

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

        Get rid of WebCore IconDatabase code.
        https://bugs.webkit.org/show_bug.cgi?id=174700

        Reviewed by Tim Horton.

        * WebKitLegacy.xcodeproj/project.pbxproj:

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

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

        Reviewed by Michael Catanzaro.

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

        * PlatformMac.cmake:
        * PlatformWin.cmake:

2017-07-17  Darin Adler  <darin@apple.com>

        Improve use of NeverDestroyed
        https://bugs.webkit.org/show_bug.cgi?id=174348

        Reviewed by Sam Weinig.

        * Storage/StorageThread.cpp:
        (WebCore::StorageThread::releaseFastMallocFreeMemoryInAllThreads):
        Simplify code by using a modern for loop and passing a function without wrapping
        it in a lambda.

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

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

        Reviewed by Alex Christensen.

        * CMakeLists.txt:

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

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

        Reviewed by Michael Catanzaro.

        * CMakeLists.txt:

2017-07-14  Jonathan Bedard  <jbedard@apple.com>

        Add iOS 11 SPI
        https://bugs.webkit.org/show_bug.cgi?id=174430
        <rdar://problem/33269288>

        Reviewed by Tim Horton.

        * Storage/StorageTracker.cpp: sqlite3_private.h no longer exists in the iOS
        Simulator SDK, explicitly define the required macro.

2017-07-13  Dan Bernstein  <mitz@apple.com>

        Removed empty project directories left behind after the rename

        * WebKit.vcxproj: Removed.
        * WebKit.xcodeproj: Removed.

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

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

        Reviewed by Dan Bernstein.

        Rename WebKit to WebKitLegacy.

        * WebKitLegacy.vcxproj/WebKitLegacy.proj: Renamed from Source/WebKitLegacy/WebKit.vcxproj/WebKit.proj.

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

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

        Reviewed by Dan Bernstein.

        Rename WebKit to WebKitLegacy.

        * WebKitLegacy.xcodeproj/project.pbxproj: Renamed from Source/WebKitLegacy/WebKit.xcodeproj/project.pbxproj.

2017-07-10  Per Arne Vollan  <pvollan@apple.com>

        [Win] Link error when building WTF from WTF.proj project file.
        https://bugs.webkit.org/show_bug.cgi?id=174316
        <rdar://problem/33178200>

        Reviewed by Brent Fulgham.

        WTF_CPU_X86 cmake variable needs to be set for link libraries directories to be correct.

        * WebKit.vcxproj/WebKit.proj:

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

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

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:

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

        [WTF] Drop Thread::create(obsolete things) API since we can use lambda
        https://bugs.webkit.org/show_bug.cgi?id=173825

        Reviewed by Saam Barati.

        * Storage/StorageThread.cpp:
        (WebCore::StorageThread::start):
        (WebCore::StorageThread::threadEntryPointCallback): Deleted.
        * Storage/StorageThread.h:

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

        Fix Visual Studio 2017 64-bit build after r218258
        https://bugs.webkit.org/show_bug.cgi?id=173308

        * PlatformWin.cmake:
        We still need the enable_language(ASM_MASM) even if we explicitly call ml64 with VS2017.
        Otherwise CMake complains about a missing variable CMAKE_ASM_MASM_COMPILE_OBJECT.

2017-06-14  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win64] Fails to build Asm.lib (PaintHooks.asm) since Bug 173132
        https://bugs.webkit.org/show_bug.cgi?id=173308

        Reviewed by Alex Christensen.

        Use the same method to process asm file as well as JSC does (Bug 170833).

        * PlatformWin.cmake: Use add_custom_command to assemble PaintHooks.asm.

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

        [Win64] Build error when compiling PaintHooks.asm.
        https://bugs.webkit.org/show_bug.cgi?id=173132

        Reviewed by Brent Fulgham.

        There seems to be too many include paths on the command line for ml64. According to the documentation,
        a maximum of 10 /I options is allowed. Create a separate static library for asm files, in order to
        avoid all the include paths.
        
        * PlatformWin.cmake:

2017-06-06  Yoav Weiss  <yoav@yoav.ws>

        [preload] Conditional support for media preloading and align media `as` values.
        https://bugs.webkit.org/show_bug.cgi?id=172501

        Reviewed by Dean Jackson.

        Add media preloading preference and hook it up to runtime enabled features.

        * mac/WebView/WebPreferenceKeysPrivate.h: Added a media preloading preference.
        * mac/WebView/WebPreferences.mm:
        (WebKit::WebPreferences::setMediaPreloadingEnabled):
        (WebKit::WebPreferences::mediaPreloadingEnabled):
        * mac/WebView/WebPreferencesPrivate.h:
        (WebKit::WebPreferences::setMediaPreloadingEnabled):
        (WebKit::WebPreferences::mediaPreloadingEnabled):
        * mac/WebView/WebView.mm: Set runtime enabled feature based on preference.
        * win/Interfaces/IWebPreferencesPrivate.idl: define mediaPreloadEnabled and setMediaPreloadingEnabled
        * win/WebPreferences.cpp: Initialize media preloading as false and define setter and getter.
        (WebKit::WebPreferences::setMediaPreloadingEnabled):
        (WebKit::WebPreferences::mediaPreloadingEnabled):
        * win/WebPreferences.h:
        * win/WebPreferenceKeysPrivate.h:
        * win/WebView.cpp: Set runtime enabled feature based on preference.

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

        [Win][CMake] Move MSVC compiler options to a common location
        https://bugs.webkit.org/show_bug.cgi?id=172230

        Reviewed by Yusuke Suzuki.

        * PlatformWin.cmake:

2017-04-20  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Define FORWARDING_HEADERS_DIR in WebKitFS and use it everywhere
        https://bugs.webkit.org/show_bug.cgi?id=171071

        Reviewed by Michael Catanzaro.

        "${DERIVED_SOURCES_DIR}/ForwardingHeaders" path occurs very often in the
        build system files. GTK-specifc FORWARDING_HEADERS_DIR variable should
        be available for all ports.

        * CMakeLists.txt:
        * PlatformMac.cmake:
        * PlatformWin.cmake:

2017-04-12  Brady Eidson  <beidson@apple.com>

        QuotaExceededError when saving to localStorage in private mode.
        https://bugs.webkit.org/show_bug.cgi?id=157010

        Reviewed by Alex Christensen.

        * Storage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::StorageNamespaceImpl):
        (WebKit::StorageNamespaceImpl::~StorageNamespaceImpl):
        (WebKit::StorageNamespaceImpl::copy):
        (WebKit::StorageNamespaceImpl::close):
        * Storage/StorageNamespaceImpl.h:

        * Storage/WebStorageNamespaceProvider.cpp:
        (WebKit::WebStorageNamespaceProvider::createEphemeralLocalStorageNamespace):
        * Storage/WebStorageNamespaceProvider.h:

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

        [WTF] Introduce Thread class and use RefPtr<Thread> and align Windows Threading implementation semantics to Pthread one
        https://bugs.webkit.org/show_bug.cgi?id=170502

        Reviewed by Mark Lam.

        Mechanical change. Use Thread:: APIs.

        * Storage/StorageThread.cpp:
        (WebCore::StorageThread::StorageThread):
        (WebCore::StorageThread::~StorageThread):
        (WebCore::StorageThread::start):
        (WebCore::StorageThread::dispatch):
        (WebCore::StorageThread::terminate):
        * Storage/StorageThread.h:

2017-04-10  Chris Dumez  <cdumez@apple.com>

        Drop Timer::startOneShot() overload taking a double
        https://bugs.webkit.org/show_bug.cgi?id=170659

        Reviewed by Yusuke Suzuki.

        Drop Timer::startOneShot() overload taking a double as people should use Seconds type now.

        * Storage/StorageAreaSync.cpp:
        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::StorageTracker):
        * Storage/StorageTracker.h:
        (WebKit::StorageTracker::storageDatabaseIdleInterval):
        (WebKit::StorageTracker::setStorageDatabaseIdleInterval):

2017-04-09  Chris Dumez  <cdumez@apple.com>

        Start dropping Timer API dealing with double
        https://bugs.webkit.org/show_bug.cgi?id=170649

        Reviewed by Yusuke Suzuki.

        Start dropping Timer API dealing with double as people should use Seconds now.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::scheduleServePendingRequests):

2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Only Capture Extra Network Load Metrics when there is a Web Inspector Frontend
        https://bugs.webkit.org/show_bug.cgi?id=170525

        Reviewed by Youenn Fablet.

        * WebCoreSupport/WebResourceLoadScheduler.h:

2017-04-05  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Invalid address specified to RtlValidateHeap at std::ctype<char>::_Tidy() when finishing MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=157067

        Reviewed by Per Arne Vollan.

        WebKit is compiled with /MT switch to use static CRT on Windows.
        But, WinCairo port does not link the static CRT by specifying
        /NODEFAULTLIB:LIBCMT and /NODEFAULTLIB:LIBCMTD switches.
        Eventually, a dynamically linked CRT is linked.  This causes
        potential heap corruption.

        * PlatformWin.cmake: Do not set /NODEFAULTLIB:LIBCMT and
        /NODEFAULTLIB:LIBCMTD, but /NODEFAULTLIB:MSVCRT and
        /NODEFAULTLIB:MSVCRTD as well as AppleWin port does

2017-03-31  Brady Eidson  <beidson@apple.com>

        Clean up the "StorageType" enum.
        https://bugs.webkit.org/show_bug.cgi?id=170349

        Reviewed by Tim Horton.

        * Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::dispatchStorageEvent):
        
        * Storage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::createSessionStorageNamespace):
        (WebKit::StorageNamespaceImpl::getOrCreateLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::StorageNamespaceImpl):
        (WebKit::StorageNamespaceImpl::~StorageNamespaceImpl):
        (WebKit::StorageNamespaceImpl::copy):
        (WebKit::StorageNamespaceImpl::close):

2017-03-27  JF Bastien  <jfbastien@apple.com>

        make build fix for WebDefaultUIDelegate.m
        https://bugs.webkit.org/show_bug.cgi?id=170163

        Unreviewed build fix.

        * PlatformMac.cmake: WebDefaultUIDelegate.m was renamed

2017-03-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Add a UI delegate SPI hook to enable or disable navigation on drop
        https://bugs.webkit.org/show_bug.cgi?id=169168
        <rdar://problem/30688374>

        Reviewed by Tim Horton.

        See WebKit ChangeLog for more details. Renames WebDefaultUIDelegate.m => WebDefaultUIDelegate.mm.

        * WebKit.xcodeproj/project.pbxproj:

2017-03-20  Dan Bernstein  <mitz@apple.com>

        [Xcode] Incremental builds of WebKitLegacy are slow because of the Postprocess Headers phase
        https://bugs.webkit.org/show_bug.cgi?id=169861

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj: Specified that the Postprocess Headers script build
          phase has the Headers and PrivateHeaders directories as its inputs and a timestamp file as
          its output.

2017-03-15  Dean Jackson  <dino@apple.com>

        Sort Xcode project files
        https://bugs.webkit.org/show_bug.cgi?id=169669

        Reviewed by Antoine Quint.

        * WebKit.xcodeproj/project.pbxproj:

2017-02-27  Aakash Jain  <aakash_jain@apple.com>

        Enable SUPPORTS_TEXT_BASED_API in WebKitLegacy for iOS
        https://bugs.webkit.org/show_bug.cgi?id=168919

        Reviewed by Tim Horton.

        * WebKit.xcodeproj/project.pbxproj: Run scripts which are run for installhdrs phase for installapi phase as well.

2017-02-22  Aakash Jain  <aakash_jain@apple.com>

        Export Objective-C symbols for variables in Webkit SPI
        https://bugs.webkit.org/show_bug.cgi?id=168758

        Reviewed by Alexey Proskuryakov.

        * WebKit.xcodeproj/project.pbxproj: Generating separate .exp file for i386 without _OBJC_IVAR symbols.

2017-02-21  Aakash Jain  <aakash_jain@apple.com>

        Make WebKitStatisticsPrivate.h project header
        https://bugs.webkit.org/show_bug.cgi?id=168686

        Reviewed by Alexey Proskuryakov.

        * WebKit.xcodeproj/project.pbxproj:

2017-02-21  Commit Queue  <commit-queue@webkit.org>

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

        Rolling out since this would break other projects. (Requested
        by aakashjain on #webkit).

        Reverted changeset:

        "[iOS] Remove old WebKit1 MemoryMeasure helper."
        https://bugs.webkit.org/show_bug.cgi?id=168675
        http://trac.webkit.org/changeset/212768

2017-02-21  Andreas Kling  <akling@apple.com>

        [iOS] Remove old WebKit1 MemoryMeasure helper.
        <https://webkit.org/b/168675>

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj:

2017-02-21  JF Bastien  <jfbastien@apple.com>

        Fix cmake build
        https://bugs.webkit.org/show_bug.cgi?id=168665

        Reviewed by Mark Lam.

        It was broken by r212555 and r212681.

        * PlatformMac.cmake:

2017-02-20  Alexey Proskuryakov  <ap@apple.com>

        List of WebCore symbols to re-export from WebKitLegacy should be built automatically
        https://bugs.webkit.org/show_bug.cgi?id=168342
        rdar://problem/26182266

        Reviewed by Tim Horton.

        * WebKit.xcodeproj/project.pbxproj: Append ReexportedWebCoreSymbols_${CURRENT_ARCH}.exp
        to WebKitLegacy.generated.exp if it exists. Added it to build phase inputs for
        dependency tracking.

2017-02-20  Alexey Proskuryakov  <ap@apple.com>

        Clean up how WebKit exports _WebCreateFragment
        https://bugs.webkit.org/show_bug.cgi?id=168579

        Reviewed by Dan Bernstein.

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

2017-02-15  Brady Eidson  <beidson@apple.com>

        Stop backing up localStorage databases to iCloud by default.
        <rdar://problem/29045531> and https://bugs.webkit.org/show_bug.cgi?id=168388

        Reviewed by Geoffrey Garen.

        * WebKit.xcodeproj/project.pbxproj:

2017-02-15  Aakash Jain  <aakash_jain@apple.com>

        revert DOMTextEvent.h and DOMHTMLCanvasElement.h to private header
        https://bugs.webkit.org/show_bug.cgi?id=168393

        Reviewed by Dan Bernstein.
        
        Reverting a seemingly accidental change from r204717.

        * WebKit.xcodeproj/project.pbxproj:

2017-02-09  Alex Christensen  <achristensen@webkit.org>

        Fix CMake build.

        * PlatformMac.cmake:

2017-02-07  Alexey Proskuryakov  <ap@apple.com>

        Don't migrate WebKit DOM headers in MigrateHeaders.make
        https://bugs.webkit.org/show_bug.cgi?id=167608

        Reviewed by Darin Adler.

        Stop migrating DOM headers that are now in WebKit.

        * WebKit.xcodeproj/project.pbxproj: Marked DOM headers as private, so that Xcode
        takes care of making them available as SPI.

2017-02-02  Yongjun Zhang  <yongjun_zhang@apple.com>

        In iOS, we should take background assertion when accessing localstorage databases.
        https://bugs.webkit.org/show_bug.cgi?id=165478

        Reviewed by Brady Eidson.

        * WebKit.xcodeproj/project.pbxproj: Moved WebSQLiteDatabaseTrackerClient to WebCore.

2017-01-17  Antti Koivisto  <antti@apple.com>

        Persist derived data
        https://bugs.webkit.org/show_bug.cgi?id=167136

        Reviewed by Andreas Kling.

        * WebCoreSupport/WebResourceLoadScheduler.h:

2017-01-05  Per Arne Vollan  <pvollan@apple.com>

        [Win] Compile error.
        https://bugs.webkit.org/show_bug.cgi?id=166726

        Add include folder.

        * CMakeLists.txt:

2016-12-22  Andy Estes  <aestes@apple.com>

        Reduce QuickLook.h include overhead
        https://bugs.webkit.org/show_bug.cgi?id=166454

        Reviewed by Andreas Kling.

        * WebCoreSupport/WebResourceLoadScheduler.cpp: Stopped including QuickLook.h.

2016-12-15  Myles C. Maxfield  <mmaxfield@apple.com>

        Sort Xcode project files
        https://bugs.webkit.org/show_bug.cgi?id=165937

        Reviewed by Simon Fraser.

        * WebKit.xcodeproj/project.pbxproj:

2016-12-10  Konstantin Tokarev  <annulen@yandex.ru>

        Unreviewed attempt to fix cmake build of Mac port after r209665.

        * PlatformMac.cmake: Avoid using relative path in
        WebKit_INCLUDE_DIRECTORIES.

2016-12-10  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Include WTF, JSC, and WebCore headers automatically to targers using them
        https://bugs.webkit.org/show_bug.cgi?id=165686

        Reviewed by Michael Catanzaro.

        This change reduces duplication of include path lists between modules,
        and reduces future need for fixes like r209605 (broken build because of
        WebCore header suddenly becoming used in WebKit2).

        * CMakeLists.txt:
        * PlatformMac.cmake:
        * PlatformWin.cmake:

2016-12-05  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed cmake buildfix after r209252.

        * PlatformMac.cmake:

2016-12-02  Chris Dumez  <cdumez@apple.com>

        [Mac][WK1] Implement new HTML interactive form validation user interface
        https://bugs.webkit.org/show_bug.cgi?id=164483

        Reviewed by Simon Fraser.

        Add new files to xcode project.

        * WebKit.xcodeproj/project.pbxproj:

2016-11-17  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] WTF::TemporaryChange with WTF::SetForScope
        https://bugs.webkit.org/show_bug.cgi?id=164761

        Reviewed by Saam Barati.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:

2016-11-14  Alex Christensen  <achristensen@webkit.org>

        Move SecurityOrigin::createFromDatabaseIdentifier to SecurityOriginData
        https://bugs.webkit.org/show_bug.cgi?id=164720

        Reviewed by Brady Eidson.

        * Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::StorageAreaImpl):
        (WebKit::StorageAreaImpl::create):
        (WebKit::StorageAreaImpl::dispatchStorageEvent):
        * Storage/StorageAreaImpl.h:
        * Storage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::storageArea):
        (WebKit::StorageNamespaceImpl::clearOriginForDeletion):
        * Storage/StorageNamespaceImpl.h:
        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::origins):
        (WebKit::StorageTracker::deleteOriginWithIdentifier):
        (WebKit::StorageTracker::deleteOrigin):
        * Storage/StorageTracker.h:
        * Storage/WebStorageNamespaceProvider.cpp:
        (WebKit::WebStorageNamespaceProvider::clearLocalStorageForOrigin):
        * Storage/WebStorageNamespaceProvider.h:

2016-11-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] autocorrect and autocapitalize attributes do not work in contenteditable elements
        https://bugs.webkit.org/show_bug.cgi?id=164538
        <rdar://problem/8418711>

        Reviewed by Ryosuke Niwa.

        Introduce WebAutocapitalizeTypes.h to WebKit.

        * WebKit.xcodeproj/project.pbxproj:

2016-11-10  Alex Christensen  <achristensen@webkit.org>

        Move SecurityOrigin::databaseIdentifier() to SecurityOriginData
        https://bugs.webkit.org/show_bug.cgi?id=164573

        Reviewed by Brady Eidson.

        * Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::create):
        * Storage/StorageTracker.cpp:
        (WebKit::StorageTracker::deleteOrigin):
        (WebKit::StorageTracker::diskUsageForOrigin):

2016-11-09  Alex Christensen  <achristensen@webkit.org>

        Clean up Storage code
        https://bugs.webkit.org/show_bug.cgi?id=164562

        Reviewed by Brady Eidson.

        Some classes were in WebCore namespace instead of WebKit.

        * Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::StorageAreaImpl):
        (WebKit::StorageAreaImpl::create):
        (WebKit::StorageAreaImpl::copy):
        (WebCore::StorageAreaImpl::~StorageAreaImpl): Deleted.
        (WebCore::StorageAreaImpl::StorageAreaImpl): Deleted.
        (WebCore::StorageAreaImpl::create): Deleted.
        (WebCore::StorageAreaImpl::copy): Deleted.
        (WebCore::StorageAreaImpl::canAccessStorage): Deleted.
        (WebCore::StorageAreaImpl::storageType): Deleted.
        (WebCore::StorageAreaImpl::length): Deleted.
        (WebCore::StorageAreaImpl::key): Deleted.
        (WebCore::StorageAreaImpl::item): Deleted.
        (WebCore::StorageAreaImpl::setItem): Deleted.
        (WebCore::StorageAreaImpl::removeItem): Deleted.
        (WebCore::StorageAreaImpl::clear): Deleted.
        (WebCore::StorageAreaImpl::contains): Deleted.
        (WebCore::StorageAreaImpl::importItems): Deleted.
        (WebCore::StorageAreaImpl::close): Deleted.
        (WebCore::StorageAreaImpl::clearForOriginDeletion): Deleted.
        (WebCore::StorageAreaImpl::sync): Deleted.
        (WebCore::StorageAreaImpl::blockUntilImportComplete): Deleted.
        (WebCore::StorageAreaImpl::memoryBytesUsedByCache): Deleted.
        (WebCore::StorageAreaImpl::incrementAccessCount): Deleted.
        (WebCore::StorageAreaImpl::decrementAccessCount): Deleted.
        (WebCore::StorageAreaImpl::closeDatabaseTimerFired): Deleted.
        (WebCore::StorageAreaImpl::closeDatabaseIfIdle): Deleted.
        (WebCore::StorageAreaImpl::dispatchStorageEvent): Deleted.
        * Storage/StorageAreaImpl.h:
        * Storage/StorageAreaSync.cpp:
        (WebKit::StorageAreaSync::StorageAreaSync):
        (WebKit::StorageAreaSync::create):
        (WebCore::StorageAreaSync::StorageAreaSync): Deleted.
        (WebCore::StorageAreaSync::create): Deleted.
        (WebCore::StorageAreaSync::~StorageAreaSync): Deleted.
        (WebCore::StorageAreaSync::scheduleFinalSync): Deleted.
        (WebCore::StorageAreaSync::scheduleItemForSync): Deleted.
        (WebCore::StorageAreaSync::scheduleClear): Deleted.
        (WebCore::StorageAreaSync::scheduleCloseDatabase): Deleted.
        (WebCore::StorageAreaSync::syncTimerFired): Deleted.
        (WebCore::StorageAreaSync::openDatabase): Deleted.
        (WebCore::StorageAreaSync::migrateItemTableIfNeeded): Deleted.
        (WebCore::StorageAreaSync::performImport): Deleted.
        (WebCore::StorageAreaSync::markImported): Deleted.
        (WebCore::StorageAreaSync::blockUntilImportComplete): Deleted.
        (WebCore::StorageAreaSync::sync): Deleted.
        (WebCore::StorageAreaSync::performSync): Deleted.
        (WebCore::StorageAreaSync::deleteEmptyDatabase): Deleted.
        (WebCore::StorageAreaSync::scheduleSync): Deleted.
        * Storage/StorageAreaSync.h:
        * Storage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::createSessionStorageNamespace):
        (WebKit::StorageNamespaceImpl::getOrCreateLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::storageArea):
        (WebCore::localStorageNamespaceMap): Deleted.
        (WebCore::StorageNamespaceImpl::createSessionStorageNamespace): Deleted.
        (WebCore::StorageNamespaceImpl::getOrCreateLocalStorageNamespace): Deleted.
        (WebCore::StorageNamespaceImpl::StorageNamespaceImpl): Deleted.
        (WebCore::StorageNamespaceImpl::~StorageNamespaceImpl): Deleted.
        (WebCore::StorageNamespaceImpl::copy): Deleted.
        (WebCore::StorageNamespaceImpl::storageArea): Deleted.
        (WebCore::StorageNamespaceImpl::close): Deleted.
        (WebCore::StorageNamespaceImpl::clearOriginForDeletion): Deleted.
        (WebCore::StorageNamespaceImpl::clearAllOriginsForDeletion): Deleted.
        (WebCore::StorageNamespaceImpl::sync): Deleted.
        (WebCore::StorageNamespaceImpl::closeIdleLocalStorageDatabases): Deleted.
        * Storage/StorageNamespaceImpl.h:
        * Storage/StorageTracker.cpp:
        (WebCore::StorageTracker::initializeTracker): Deleted.
        (WebCore::StorageTracker::internalInitialize): Deleted.
        (WebCore::StorageTracker::tracker): Deleted.
        (WebCore::StorageTracker::StorageTracker): Deleted.
        (WebCore::StorageTracker::setDatabaseDirectoryPath): Deleted.
        (WebCore::StorageTracker::databaseDirectoryPath): Deleted.
        (WebCore::StorageTracker::trackerDatabasePath): Deleted.
        (WebCore::ensureDatabaseFileExists): Deleted.
        (WebCore::StorageTracker::openTrackerDatabase): Deleted.
        (WebCore::StorageTracker::importOriginIdentifiers): Deleted.
        (WebCore::StorageTracker::finishedImportingOriginIdentifiers): Deleted.
        (WebCore::StorageTracker::syncImportOriginIdentifiers): Deleted.
        (WebCore::StorageTracker::syncFileSystemAndTrackerDatabase): Deleted.
        (WebCore::StorageTracker::setOriginDetails): Deleted.
        (WebCore::StorageTracker::syncSetOriginDetails): Deleted.
        (WebCore::StorageTracker::origins): Deleted.
        (WebCore::StorageTracker::deleteAllOrigins): Deleted.
        (WebCore::truncateDatabaseFile): Deleted.
        (WebCore::StorageTracker::syncDeleteAllOrigins): Deleted.
        (WebCore::StorageTracker::deleteOriginWithIdentifier): Deleted.
        (WebCore::StorageTracker::deleteOrigin): Deleted.
        (WebCore::StorageTracker::syncDeleteOrigin): Deleted.
        (WebCore::StorageTracker::willDeleteAllOrigins): Deleted.
        (WebCore::StorageTracker::willDeleteOrigin): Deleted.
        (WebCore::StorageTracker::canDeleteOrigin): Deleted.
        (WebCore::StorageTracker::cancelDeletingOrigin): Deleted.
        (WebCore::StorageTracker::isActive): Deleted.
        (WebCore::StorageTracker::setIsActive): Deleted.
        (WebCore::StorageTracker::databasePathForOrigin): Deleted.
        (WebCore::StorageTracker::diskUsageForOrigin): Deleted.
        * Storage/StorageTracker.h:
        (WebCore::StorageTracker::storageDatabaseIdleInterval): Deleted.
        (WebCore::StorageTracker::setStorageDatabaseIdleInterval): Deleted.
        * Storage/WebStorageNamespaceProvider.cpp:
        (storageNamespaceProviders): Deleted.
        (WebStorageNamespaceProvider::create): Deleted.
        (WebStorageNamespaceProvider::WebStorageNamespaceProvider): Deleted.
        (WebStorageNamespaceProvider::~WebStorageNamespaceProvider): Deleted.
        (WebStorageNamespaceProvider::closeLocalStorage): Deleted.
        (WebStorageNamespaceProvider::clearLocalStorageForAllOrigins): Deleted.
        (WebStorageNamespaceProvider::clearLocalStorageForOrigin): Deleted.
        (WebStorageNamespaceProvider::closeIdleLocalStorageDatabases): Deleted.
        (WebStorageNamespaceProvider::syncLocalStorage): Deleted.
        (WebStorageNamespaceProvider::createSessionStorageNamespace): Deleted.
        (WebStorageNamespaceProvider::createLocalStorageNamespace): Deleted.
        (WebStorageNamespaceProvider::createTransientLocalStorageNamespace): Deleted.
        * Storage/WebStorageNamespaceProvider.h:
        * WebCoreSupport/WebResourceLoadScheduler.h:
        * WebCoreSupport/WebViewGroup.cpp:
        (WebViewGroup::storageNamespaceProvider):

2016-11-02  Per Arne Vollan  <pvollan@apple.com>

        [Win] Copy build results to AAS 'Program Files' folder.
        https://bugs.webkit.org/show_bug.cgi?id=164273

        Reviewed by Brent Fulgham.

        The preferred location for the binaries is the AAS 'Program Files' folder.

        * WebKit.vcxproj/WebKit.proj:

2016-10-25  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Check if jscLib and WebKitGUID targets exist before using them
        https://bugs.webkit.org/show_bug.cgi?id=163945

        Reviewed by Alex Christensen.

        Currently these targets are used under WIN32 condition, however they
        are defined in PlatformWin.cmake, causing CMake warnings if port
        supports WIN32 but does not use PlatformWin.cmake

        * CMakeLists.txt:

2016-10-24  Per Arne Vollan  <pvollan@apple.com>

        [Win] CMake build type is not set.
        https://bugs.webkit.org/show_bug.cgi?id=163917

        Reviewed by Alex Christensen.

        The CMAKE_BUILD_TYPE variable should be set to Debug or Release.

        * WebKit.vcxproj/WebKit.proj:

2016-10-19  Alex Christensen  <achristensen@webkit.org>

        Revert r207151
        https://bugs.webkit.org/show_bug.cgi?id=163675

        Reviewed by Brent Fulgham.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::scheduleLoad):

2016-10-14  Alex Christensen  <achristensen@webkit.org>

        Fix CMake build.

        * PlatformMac.cmake:

2016-10-13  Anders Carlsson  <andersca@apple.com>

        Move BackForwardList from WebCore to WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=163418

        Reviewed by Tim Horton.

        * WebKit.xcodeproj/project.pbxproj:

2016-10-12  Anders Carlsson  <andersca@apple.com>

        Copy BackForwardList from WebCore to WebKit/win
        https://bugs.webkit.org/show_bug.cgi?id=163360

        Reviewed by Alex Christensen.

        This is the first step towards getting rid of BackForwardList in WebCore.

        * PlatformWin.cmake:
        Add new files.

2016-10-11  Alex Christensen  <achristensen@webkit.org>

        Remove dead networking code
        https://bugs.webkit.org/show_bug.cgi?id=163263

        Reviewed by Daniel Bates.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::scheduleLoad):

2016-10-06  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix when building with Direct2D.

        * PlatformWin.cmake: Add missing library references.

2016-10-05  Daniel Bates  <dabates@apple.com>

        Do not follow redirects when sending violation report
        https://bugs.webkit.org/show_bug.cgi?id=162520
        <rdar://problem/27957639>

        Reviewed by Alex Christensen.

        Update implementation of legacy WebKit loader strategy to pass through a boolean,
        shouldFollowRedirects, to PingHandle as to whether to follow redirect responses
        for a ping request.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::createPingHandle):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2016-09-20  Don Olmstead  <don.olmstead@am.sony.com>

        [WinCairo] Use find_package cairo in build
        https://bugs.webkit.org/show_bug.cgi?id=162239

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:

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

        [Win][Direct2D] Provide Direct2D-based geometry and transform cast operations
        https://bugs.webkit.org/show_bug.cgi?id=161818

        Reviewed by Dean Jackson.

        * PlatformWin.cmake: Link to Direct2D on Windows.

2016-09-06  Dan Bernstein  <mitz@apple.com>

        [Xcode] WebKitLegacy.framework is re-signed on incremental build even if nothing’s changed
        https://bugs.webkit.org/show_bug.cgi?id=161642

        Reviewed by Tim Horton.

        * WebKit.xcodeproj/project.pbxproj:  Removed the output file listed under the
        Symlink WebKitPluginHost script build phase, because it doesn’t produce that file on iOS.
        With no outputs listed, the script will still run every time, but the fact that it has run
        won’t trigger re-signing the framework.

2016-08-25  Alex Christensen  <achristensen@webkit.org>

        CMake build fix.

        * PlatformMac.cmake:
        Availability was spelled wrong, resulting in a missing header.

2016-08-22  Alex Christensen  <achristensen@webkit.org>

        Fix Mac CMake build after r204717.

        * PlatformMac.cmake:

2016-08-22  Alex Christensen  <achristensen@webkit.org>

        Mostly fix Mac CMake build after r204717.

        * PlatformMac.cmake:

2016-08-22  Darin Adler  <darin@apple.com>

        Move Objective-C DOM bindings from WebCore to legacy WebKit
        https://bugs.webkit.org/show_bug.cgi?id=160654

        Reviewed by Alex Christensen.

        * WebKit.xcodeproj/project.pbxproj: Added the new source files to the project.
        For now they all have project visibility, since MigrateHeaders.make takes care
        of exporting them as public and private. Later, we can likely use the built-in
        Xcode feature instead of that script. Also pass DOM as an acceptable prefix
        when calling check-for-inappropriate-objc-class-names. Also sorted this file
        with the sort-Xcode-project-file script.

2016-08-17  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] Migrate off of deprecated CoreGraphics API CGContextSelectFont() and CGContextShowTextAtPoint()
        https://bugs.webkit.org/show_bug.cgi?id=160895

        Reviewed by Dean Jackson.

        Link to the existing CoreText framework.

        * PlatformWin.cmake:

2016-08-16  Hunseop Jeong  <hs85.jeong@samsung.com>

        Unreviewed, CMake build fix

        * PlatformMac.cmake:

2016-08-15  Anders Carlsson  <andersca@apple.com>

        Remove OldWebAssertions.c
        https://bugs.webkit.org/show_bug.cgi?id=160862

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:

2016-08-15  Anders Carlsson  <andersca@apple.com>

        Remove WebKeyGenerator
        https://bugs.webkit.org/show_bug.cgi?id=160854

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:

2016-08-15  Joseph Pecoraro  <pecoraro@apple.com>

        Remove unused includes of wtf headers
        https://bugs.webkit.org/show_bug.cgi?id=160839

        Reviewed by Alex Christensen.

        * Storage/StorageSyncManager.h:
        * Storage/StorageThread.cpp:
        * Storage/StorageThread.h:
        * Storage/WebDatabaseProvider.cpp:

2016-08-08  Anders Carlsson  <andersca@apple.com>

        Add a new PluginInfoProvider class, to replace PluginStrategy
        https://bugs.webkit.org/show_bug.cgi?id=160670

        Reviewed by Sam Weinig.

        Add new files.

        * PlatformWin.cmake:
        * WebKit.xcodeproj/project.pbxproj:

2016-08-04  Alex Christensen  <achristensen@webkit.org>

        [Mac][cmake] Fix the build after Objective-C bindings generator removal
        https://bugs.webkit.org/show_bug.cgi?id=160545

        Reviewed by Alex Christensen.

        * PlatformMac.cmake:

2016-07-26  Simon Fraser  <simon.fraser@apple.com>

        Fix the Windows debug build.
        
        WebResourceLoadScheduler's logging was a holdover from it being in WebCore,
        and prior to r203749 WebKit was actually using a WebCore log channel.
        
        For some reason this doesn't build on Windows debug, so just remove
        this logging for now.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::scheduleLoad): Deleted.
        (WebResourceLoadScheduler::servePendingRequests): Deleted.
        (WebResourceLoadScheduler::scheduleServePendingRequests): Deleted.
        (WebResourceLoadScheduler::requestTimerFired): Deleted.
        (WebResourceLoadScheduler::HostInformation::addLoadInProgress): Deleted.

2016-07-26  Simon Fraser  <simon.fraser@apple.com>

        Sort the project files.

        * WebKit.xcodeproj/project.pbxproj:

2016-07-26  Simon Fraser  <simon.fraser@apple.com>

        Allow LOG macros to be used outside the namespace, and other logging cleanup
        https://bugs.webkit.org/show_bug.cgi?id=160216

        Reviewed by Anders Carlsson.

        Fix some issues with the LOG macros.
        
        First, they were not usable outside the WebKit namespace in WebKit2 code. Fix by moving
        its log channels outside of the namespace (they are protected by a unique prefix anyway).
        
        Second, allow LOG_WITH_STREAM to be used in WebKit2 by moving that and a helper macro
        into LogMacros.h, which is exported from WebCore as a private header.
        
        Third, split the Logging.h header into two. Logging.h remains for framework-internal
        log channels and log macros. Add LogInitialization.h which is external, and used to
        initialize the channels.
        
        Finally unify "initializeLogChannels" and "initializeLoggingChannels" terminology everywhere.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:

2016-07-14  Alex Christensen  <achristensen@webkit.org>

        Use SocketProvider to create SocketStreamHandles
        https://bugs.webkit.org/show_bug.cgi?id=159774

        Reviewed by Alex Christensen.

        * PlatformMac.cmake:
        * PlatformWin.cmake:
        * WebKit.xcodeproj/project.pbxproj:

2016-07-12  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fix for build error when trying to version stamp dll.
        https://bugs.webkit.org/show_bug.cgi?id=159692

        Reviewed by Brent Fulgham.

        Use correct path to version stamp script.

        * CMakeLists.txt:

2016-07-12  Per Arne Vollan  <pvollan@apple.com>

        [Win] DLLs are missing version information.
        https://bugs.webkit.org/show_bug.cgi?id=159349

        Reviewed by Brent Fulgham.

        Run perl version stamp utility.

        * CMakeLists.txt:

2016-07-11  Commit Queue  <commit-queue@webkit.org>

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

        This change causes LayoutTest crashes on WK1 ASan (Requested
        by ryanhaddad on #webkit).

        Reverted changeset:

        "Use refs for ResourceLoaders"
        https://bugs.webkit.org/show_bug.cgi?id=159592
        http://trac.webkit.org/changeset/203064

2016-07-08  Alex Christensen  <achristensen@webkit.org>

        Use refs for ResourceLoaders
        https://bugs.webkit.org/show_bug.cgi?id=159592

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (webResourceLoadScheduler):
        (WebResourceLoadScheduler::hostForURL):
        (WebResourceLoadScheduler::WebResourceLoadScheduler):
        (WebResourceLoadScheduler::loadResource):
        (WebResourceLoadScheduler::schedulePluginStreamLoad):
        (WebResourceLoadScheduler::scheduleLoad):
        (WebResourceLoadScheduler::remove):
        (WebResourceLoadScheduler::setDefersLoading):
        (WebResourceLoadScheduler::crossOriginRedirectReceived):
        (WebResourceLoadScheduler::servePendingRequests):
        (WebResourceLoadScheduler::resumePendingRequests):
        (WebResourceLoadScheduler::HostInformation::priorityToIndex):
        (WebResourceLoadScheduler::HostInformation::schedule):
        (WebResourceLoadScheduler::HostInformation::addLoadInProgress):
        (WebResourceLoadScheduler::HostInformation::remove):
        * WebCoreSupport/WebResourceLoadScheduler.h:
        (WebResourceLoadScheduler::HostInformation::name):
        (WebResourceLoadScheduler::HostInformation::requestsPending):
        m_nonHTTPProtocolHost used to be a leaked pointer, and now it's a member variable.

2016-07-08  Commit Queue  <commit-queue@webkit.org>

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

        Caused build failure (Requested by perarne on #webkit).

        Reverted changeset:

        "[Win] DLLs are missing version information."
        https://bugs.webkit.org/show_bug.cgi?id=159349
        http://trac.webkit.org/changeset/202799

2016-07-07  Alex Christensen  <achristensen@webkit.org>

        Use SocketProvider to create WebSocketChannels
        https://bugs.webkit.org/show_bug.cgi?id=158776

        Reviewed by Brent Fulgham.

        * PlatformMac.cmake:
        * PlatformWin.cmake:
        * WebKit.xcodeproj/project.pbxproj:

2016-07-03  Per Arne Vollan  <pvollan@apple.com>

        [Win] DLLs are missing version information.
        https://bugs.webkit.org/show_bug.cgi?id=159349

        Reviewed by Brent Fulgham.

        WTF will generate autoversion.h in the prebuild step.
        Run the perl version stamp utility.

        * CMakeLists.txt:
        * PlatformWin.cmake:

2016-06-21  Anders Carlsson  <andersca@apple.com>

        Rename NoncopyableFunction to Function
        https://bugs.webkit.org/show_bug.cgi?id=158354

        Reviewed by Chris Dumez.

        * Storage/StorageSyncManager.cpp:
        (WebCore::StorageSyncManager::dispatch):
        * Storage/StorageSyncManager.h:
        * Storage/StorageThread.cpp:
        (WebCore::StorageThread::dispatch):
        (WebCore::StorageThread::terminate):
        * Storage/StorageThread.h:

2016-06-22  Anders Carlsson  <andersca@apple.com>

        Move the WebKitLegacy Apple Pay code to the open source repository
        https://bugs.webkit.org/show_bug.cgi?id=159035

        Reviewed by Tim Horton.

        * WebKit.xcodeproj/project.pbxproj:

2016-06-20  Keith Rollin  <krollin@apple.com>

        Remove RefPtr::release() and change calls sites to use WTFMove()
        https://bugs.webkit.org/show_bug.cgi?id=158369

        Reviewed by Chris Dumez.

        RefPtr::release() releases its managed pointer awkwardly. It's more
        direct and clearer to use WTFMove to transfer ownership of the managed
        pointer.

        As part of this cleanup, also change a lot of explicit data types to
        'auto'.

        * Storage/StorageAreaImpl.cpp:
        (WebCore::StorageAreaImpl::setItem):
        (WebCore::StorageAreaImpl::removeItem):

2016-06-13  Alex Christensen  <achristensen@webkit.org>

        Add WebSocketProvider stub
        https://bugs.webkit.org/show_bug.cgi?id=158702

        Reviewed by Brady Eidson.

        * WebKit.xcodeproj/project.pbxproj:

2016-06-10  Alex Christensen  <achristensen@webkit.org>

        Fix CMake build.

        * PlatformMac.cmake:

2016-06-09  Alex Christensen  <achristensen@webkit.org>

        Clean up WebKit.vcxproj directory after switching to CMake.

        * PlatformWin.cmake:
        * WebKit.vcxproj/Interfaces: Removed.
        * WebKit.vcxproj/WebKit: Removed.
        * WebKit.vcxproj/WebKit/resource.h: Removed.
        * WebKit.vcxproj/WebKitGUID: Removed.
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj: Removed.
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters: Removed.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDCommon.props: Removed.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDDebug.props: Removed.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDDebugWinCairo.props: Removed.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDPostBuild.cmd: Removed.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDPreBuild.cmd: Removed.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDProduction.props: Removed.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDRelease.props: Removed.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDReleaseWinCairo.props: Removed.

2016-06-07  Csaba Osztrogonác  <ossy@webkit.org>

        [Mac][cmake] Unreviewed trivial buildfix after r201689. Just for fun.

        * PlatformMac.cmake:

2016-06-04  Anders Carlsson  <andersca@apple.com>

        Remove NPSPI that is no longer used
        https://bugs.webkit.org/show_bug.cgi?id=158384

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj:

2016-06-03  Chris Dumez  <cdumez@apple.com>

        Modernize a few more lambda captures
        https://bugs.webkit.org/show_bug.cgi?id=158370

        Reviewed by Brady Eidson.

        * Storage/StorageTracker.cpp:
        (WebCore::StorageTracker::deleteOrigin):

2016-06-03  Commit Queue  <commit-queue@webkit.org>

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

        Broke the Windows build (Requested by andersca on #webkit).

        Reverted changeset:

        "Rename NoncopyableFunction to Function"
        https://bugs.webkit.org/show_bug.cgi?id=158354
        http://trac.webkit.org/changeset/201663

2016-06-03  Anders Carlsson  <andersca@apple.com>

        Rename NoncopyableFunction to Function
        https://bugs.webkit.org/show_bug.cgi?id=158354

        Reviewed by Chris Dumez.

        * Storage/StorageSyncManager.cpp:
        (WebCore::StorageSyncManager::dispatch):
        * Storage/StorageSyncManager.h:
        * Storage/StorageThread.cpp:
        (WebCore::StorageThread::dispatch):
        (WebCore::StorageThread::terminate):
        * Storage/StorageThread.h:

2016-06-02  Youenn Fablet  <youenn.fablet@crf.canon.fr>

        Use more references in ResourceLoader related code
        https://bugs.webkit.org/show_bug.cgi?id=158222

        Reviewed by Darin Adler.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::loadResource):
        * WebCoreSupport/WebResourceLoadScheduler.h:

2016-05-28  Chris Dumez  <cdumez@apple.com>

        Templatize NoncopyableFunction class similarly to std::function
        https://bugs.webkit.org/show_bug.cgi?id=158185

        Reviewed by Darin Adler.

        Templatize NoncopyableFunction class similarly to std::function, so
        that it can be used as a std::function replacement in more places.

        Previously, NoncopyableFunction could only support "void()" lambdas.

        * Storage/StorageSyncManager.cpp:
        (WebCore::StorageSyncManager::dispatch):
        * Storage/StorageSyncManager.h:
        * Storage/StorageThread.cpp:
        (WebCore::StorageThread::dispatch):
        (WebCore::StorageThread::terminate):
        * Storage/StorageThread.h:

2016-05-27  Chris Dumez  <cdumez@apple.com>

        callOnMainThread() should not copy captured lambda variables
        https://bugs.webkit.org/show_bug.cgi?id=158166

        Reviewed by Brady Eidson.

        callOnMainThread() should not copy captured lambda variables. This 
        function is usually called cross-thread with a lambda and copying
        the lambda (and its captured variables) can lead to thread-safety
        issues.

        This patch updates callOnMainThread() to take a NoncopyableFunction&&
        in parameter instead of a std::function. The call sites of
        callOnMainThread() have also been updated to use C++14's lambda
        capture with initializer.

        * Storage/StorageAreaSync.cpp:
        (WebCore::StorageAreaSync::deleteEmptyDatabase):
        * Storage/StorageSyncManager.cpp:
        (WebCore::StorageSyncManager::dispatch):
        * Storage/StorageSyncManager.h:
        * Storage/StorageThread.cpp:
        (WebCore::StorageThread::dispatch):
        (WebCore::StorageThread::terminate):
        (WebCore::StorageThread::releaseFastMallocFreeMemoryInAllThreads):
        * Storage/StorageThread.h:
        * Storage/StorageTracker.cpp:
        (WebCore::StorageTracker::syncFileSystemAndTrackerDatabase):
        (WebCore::StorageTracker::setOriginDetails):

2016-05-25  Alex Christensen  <achristensen@webkit.org>

        Fix CMake build.

        * PlatformMac.cmake:

2016-05-18  Brady Eidson  <beidson@apple.com>

        Modern IDB: Make TestRunner.clearAllDatabases also delete IndexedDB databases (once doing so is supported).
        https://bugs.webkit.org/show_bug.cgi?id=157823

        Reviewed by Alex Christensen.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::deleteAllDatabases):
        * Storage/WebDatabaseProvider.h:

2016-04-25  Per Arne Vollan  <peavo@outlook.com>

        [Win][IndexedDB] Fix build errors.
        https://bugs.webkit.org/show_bug.cgi?id=156713

        Reviewed by Alex Christensen.

        Fix compile and link errors when building with IndexedDB enabled.

        * PlatformWin.cmake:

2016-04-22  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix after r199841.

        * PlatformWin.cmake: Add missing WebApplicationCache.cpp buid directive.

2016-04-11  Fujii Hironori  <Hironori.Fujii@jp.sony.com>

        [CMake] Make FOLDER property INHERITED
        https://bugs.webkit.org/show_bug.cgi?id=156460

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:
        * PlatformWin.cmake:
        Set FOLDER property as a directory property not a target property

2016-04-08  Alex Christensen  <achristensen@webkit.org>

        Progress towards running CMake WebKit2 on Mac
        https://bugs.webkit.org/show_bug.cgi?id=156426

        Reviewed by Tim Horton.

        * CMakeLists.txt:
        * PlatformMac.cmake:
        * PlatformWin.cmake:

2016-04-08  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Use ICU include dirs in WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=156402

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:

2016-04-07  Fujii Hironori  <Hironori.Fujii@jp.sony.com>

        [CMake][Win] Generating autoversion.h of WebKitGUID is triggered again and again
        https://bugs.webkit.org/show_bug.cgi?id=156332

        Reviewed by Brent Fulgham.

        * PlatformWin.cmake:
        Correct the output path of autoversion.h.

2016-04-06  Alex Christensen  <achristensen@webkit.org>

        Fix CMake DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=156305

        Reviewed by Daniel Bates.

        * PlatformMac.cmake:

2016-04-05  Alex Christensen  <achristensen@webkit.org>

        Make CMake-generated binaries on Mac able to run
        https://bugs.webkit.org/show_bug.cgi?id=156268

        Reviewed by Daniel Bates.

        * CMakeLists.txt:

2016-04-01  Alex Christensen  <achristensen@webkit.org>

        Compile DumpRenderTree with CMake on Mac
        https://bugs.webkit.org/show_bug.cgi?id=156088

        Reviewed by Brent Fulgham.

        * PlatformMac.cmake:

2016-03-28  Alex Christensen  <achristensen@webkit.org>

        Fix Ninja build on Mac
        https://bugs.webkit.org/show_bug.cgi?id=151399

        Reviewed by Darin Adler.

        * PlatformWin.cmake:

2016-03-05  Chris Dumez  <cdumez@apple.com>

        Consolidate RuntimeApplicationChecks and RuntimeApplicationChecksIOS
        https://bugs.webkit.org/show_bug.cgi?id=155035

        Reviewed by Darin Adler.

        Update runtime application checks.

        * WebCoreSupport/WebResourceLoadScheduler.cpp:
        (WebResourceLoadScheduler::servePendingRequests):

2016-03-04  Alex Christensen  <achristensen@webkit.org>

        Remove vcxproj build system
        https://bugs.webkit.org/show_bug.cgi?id=154388

        Rubber-stamped by Brent Fulgham.

        * WebKit.vcxproj/Interfaces/FixMIDLHeaders.pl: Removed.
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj: Removed.
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters: Removed.
        * WebKit.vcxproj/Interfaces/InterfacesCommon.props: Removed.
        * WebKit.vcxproj/Interfaces/InterfacesDebug.props: Removed.
        * WebKit.vcxproj/Interfaces/InterfacesDebugWinCairo.props: Removed.
        * WebKit.vcxproj/Interfaces/InterfacesPostBuild.cmd: Removed.
        * WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd: Removed.
        * WebKit.vcxproj/Interfaces/InterfacesProduction.props: Removed.
        * WebKit.vcxproj/Interfaces/InterfacesRelease.props: Removed.
        * WebKit.vcxproj/Interfaces/InterfacesReleaseWinCairo.props: Removed.
        * WebKit.vcxproj/WebKit.sln: Removed.
        * WebKit.vcxproj/WebKit.submit.sln: Removed.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Removed.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters: Removed.
        * WebKit.vcxproj/WebKit/WebKitANGLE.props: Removed.
        * WebKit.vcxproj/WebKit/WebKitApple.props: Removed.
        * WebKit.vcxproj/WebKit/WebKitCFLite.props: Removed.
        * WebKit.vcxproj/WebKit/WebKitCommon.props: Removed.
        * WebKit.vcxproj/WebKit/WebKitDebug.props: Removed.
        * WebKit.vcxproj/WebKit/WebKitDebugWinCairo.props: Removed.
        * WebKit.vcxproj/WebKit/WebKitDirectX.props: Removed.
        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd: Removed.
        * WebKit.vcxproj/WebKit/WebKitPreBuild.cmd: Removed.
        * WebKit.vcxproj/WebKit/WebKitPreLink.cmd: Removed.
        * WebKit.vcxproj/WebKit/WebKitProduction.props: Removed.
        * WebKit.vcxproj/WebKit/WebKitRelease.props: Removed.
        * WebKit.vcxproj/WebKit/WebKitReleaseWinCairo.props: Removed.
        * WebKit.vcxproj/WebKit/WebKitVersion.cmd: Removed.

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

        Reduce size of internal windows build output
        https://bugs.webkit.org/show_bug.cgi?id=154763

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.proj:

2016-02-26  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Moved WebKit/Storage sources and include dir to CMakeLists.txt.
        https://bugs.webkit.org/show_bug.cgi?id=154722

        Reviewed by Darin Adler.

        This code provides port-independent layer used by all WK1 ports,
        so it belongs to main CMakeLists.txt, not Platform files.

        * CMakeLists.txt:
        * PlatformMac.cmake:
        * PlatformWin.cmake:

2016-02-25  Brady Eidson  <beidson@apple.com>

        Remove LegacyIDB.
        https://bugs.webkit.org/show_bug.cgi?id=150854

        Reviewed by Alex Christensen.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::createIDBFactoryBackend): Deleted.
        * Storage/WebDatabaseProvider.h:

2016-02-25  Brent Fulgham  <bfulgham@apple.com>

        [Win][CMake] Don't use incremental linking
        https://bugs.webkit.org/show_bug.cgi?id=154684
        <rdar://problem/24747822>

        Reviewed by Alex Christensen.

        * PlatformWin.cmake: Make sure the "/INCREMENTAL:NO" flag is used
        (overriding "/INCREMENTAL:YES").

2016-02-22  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Moved library setup code to WEBKIT_FRAMEWORK macro.
        https://bugs.webkit.org/show_bug.cgi?id=154450

        Reviewed by Alex Christensen.

        * CMakeLists.txt:

2016-02-15  Alex Christensen  <achristensen@webkit.org>

        Fix internal Windows build of projects built after WebKit
        https://bugs.webkit.org/show_bug.cgi?id=154249
        rdar://problem/24644805

        Reviewed by Chris Dumez.

        * PlatformWin.cmake:
        Copy all generated headers to ForwardingHeaders/WebKit, not just WebKit.h.
        This should fix problems related to not finding headers from other projects, such as AccessibleApplication.h.
        WebKit.h, WebKitCOMAPI.h, and CFDictionaryPropertyBag.h were copied correctly, so this should copy the rest
        of the needed headers.

2016-02-12  Alex Christensen  <achristensen@webkit.org>

        Fix internal Windows WebKit debug build.
        rdar://problem/24635219

        * PlatformWin.cmake:
        We were making WebKit.dll instead of WebKit_debug.dll.

2016-02-11  Alex Christensen  <achristensen@webkit.org>

        Fix internal Windows build.
        rdar://problem/24622882

        * WebKit.vcxproj/WebKit.proj:
        Don't define DEBUG_SUFFIX in release builds.

2016-02-10  Alex Christensen  <achristensen@webkit.org>

        Fix internal Windows build
        https://bugs.webkit.org/show_bug.cgi?id=154080
        rdar://problem/24584417

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:
        Explicitly make WebKit dependent on WebKitGUID so that WebKit will not start building
        before WebKitGUID is finished generating and copying all headers, including WebKit/WebKit.h.

2016-01-27  Anders Carlsson  <andersca@apple.com>

        Add WebKitAdditions extension points to WebCore, WebKit and WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=153550

        Reviewed by Sam Weinig.

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

2016-01-27  Alex Christensen  <achristensen@webkit.org>

        [Win] Clean build fix after r195680.

        * PlatformWin.cmake:
        Use the post build command for the post build event.

2016-01-27  Alex Christensen  <achristensen@webkit.org>

        Fix Win EWS after r195545.
        https://bugs.webkit.org/show_bug.cgi?id=153434

        * PlatformWin.cmake:
        Copy WebKit.h after building WebKitGUID, because it doesn't exist before.
        This should fix EWS problems like the one seen in bug 153522.

2016-01-25  Alex Christensen  <achristensen@webkit.org>

        [Win] Copy forwarding headers before building a project
        https://bugs.webkit.org/show_bug.cgi?id=153434

        Reviewed by Brent Fulgham.

        * PlatformWin.cmake:

2016-01-22  Darin Adler  <darin@apple.com>

        Reduce use of equalIgnoringCase to just ignore ASCII case
        https://bugs.webkit.org/show_bug.cgi?id=153266

        Reviewed by Ryosuke Niwa.

        * Storage/StorageTracker.cpp:
        (WebCore::StorageTracker::syncFileSystemAndTrackerDatabase):
        Removed extraneous unneeded ", true" in call to String::endsWith.
        Preparation for later removing the boolean argument.

2016-01-14  Brady Eidson  <beidson@apple.com>

        Modern IDB: Support opening and deleting SQLite databases on disk.
        https://bugs.webkit.org/show_bug.cgi?id=153084

        Reviewed by Alex Christensen, Sam Weinig and Andy Estes (oh my!).

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::idbConnectionToServerForSession):
        * Storage/WebDatabaseProvider.h:

        * WebKit.xcodeproj/project.pbxproj:

2016-01-13  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r194900.

        Roll back in as this did not actually regress PLT

        Reverted changeset:

        "Unreviewed, rolling out r194826."
        https://bugs.webkit.org/show_bug.cgi?id=153020
        http://trac.webkit.org/changeset/194900

2016-01-12  Commit Queue  <commit-queue@webkit.org>

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

        Appears to have regressed PLT (Requested by kling on #webkit).

        Reverted changeset:

        "Use NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL
        cont'd"
        https://bugs.webkit.org/show_bug.cgi?id=152902
        http://trac.webkit.org/changeset/194826

2016-01-10  Andreas Kling  <akling@apple.com>

        Use NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL cont'd
        <https://webkit.org/b/152902>

        Reviewed by Andy Estes.

        * Storage/StorageThread.cpp:
        (WebCore::activeStorageThreads):

2015-12-31  Andy Estes  <aestes@apple.com>

        Replace WTF::move with WTFMove
        https://bugs.webkit.org/show_bug.cgi?id=152601

        Reviewed by Brady Eidson.

        * Storage/StorageNamespaceImpl.cpp:
        (WebCore::StorageNamespaceImpl::storageArea):

2015-12-16  Alex Christensen  <achristensen@webkit.org>

        Fix internal Windows build
        https://bugs.webkit.org/show_bug.cgi?id=152364
        rdar://problem/23928759

        Reviewed by Tim Horton.

        * WebKit.vcxproj/WebKit.proj:

2015-12-02  Antti Koivisto  <antti@apple.com>

        Move ResourceLoadScheduler to WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=151743

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebResourceLoadScheduler.cpp: Copied from Source/WebCore/loader/ResourceLoadScheduler.cpp.
        (webResourceLoadScheduler):
        (WebResourceLoadScheduler::hostForURL):
        (WebResourceLoadScheduler::WebResourceLoadScheduler):
        (WebResourceLoadScheduler::~WebResourceLoadScheduler):
        (WebResourceLoadScheduler::scheduleSubresourceLoad):
        (WebResourceLoadScheduler::loadResourceSynchronously):
        (WebResourceLoadScheduler::schedulePluginStreamLoad):
        (WebResourceLoadScheduler::scheduleLoad):
        (WebResourceLoadScheduler::remove):
        (WebResourceLoadScheduler::setDefersLoading):
        (WebResourceLoadScheduler::crossOriginRedirectReceived):
        (WebResourceLoadScheduler::servePendingRequests):
        (WebResourceLoadScheduler::suspendPendingRequests):
        (WebResourceLoadScheduler::resumePendingRequests):
        (WebResourceLoadScheduler::scheduleServePendingRequests):
        (WebResourceLoadScheduler::requestTimerFired):
        (WebResourceLoadScheduler::HostInformation::HostInformation):
        (WebResourceLoadScheduler::HostInformation::~HostInformation):
        (WebResourceLoadScheduler::HostInformation::priorityToIndex):
        (WebResourceLoadScheduler::HostInformation::schedule):
        (WebResourceLoadScheduler::HostInformation::addLoadInProgress):
        (WebResourceLoadScheduler::HostInformation::remove):
        (WebResourceLoadScheduler::HostInformation::hasRequests):
        (WebResourceLoadScheduler::HostInformation::limitRequests):
        (WebResourceLoadScheduler::createPingHandle):
        (WebCore::ResourceLoadScheduler::hostForURL): Deleted.
        (WebCore::resourceLoadScheduler): Deleted.
        (WebCore::ResourceLoadScheduler::ResourceLoadScheduler): Deleted.
        (WebCore::ResourceLoadScheduler::~ResourceLoadScheduler): Deleted.
        (WebCore::ResourceLoadScheduler::scheduleSubresourceLoad): Deleted.
        (WebCore::ResourceLoadScheduler::schedulePluginStreamLoad): Deleted.
        (WebCore::ResourceLoadScheduler::scheduleLoad): Deleted.
        (WebCore::ResourceLoadScheduler::remove): Deleted.
        (WebCore::ResourceLoadScheduler::setDefersLoading): Deleted.
        (WebCore::ResourceLoadScheduler::crossOriginRedirectReceived): Deleted.
        (WebCore::ResourceLoadScheduler::servePendingRequests): Deleted.
        (WebCore::ResourceLoadScheduler::suspendPendingRequests): Deleted.
        (WebCore::ResourceLoadScheduler::resumePendingRequests): Deleted.
        (WebCore::ResourceLoadScheduler::scheduleServePendingRequests): Deleted.
        (WebCore::ResourceLoadScheduler::requestTimerFired): Deleted.
        (WebCore::ResourceLoadScheduler::HostInformation::HostInformation): Deleted.
        (WebCore::ResourceLoadScheduler::HostInformation::~HostInformation): Deleted.
        (WebCore::ResourceLoadScheduler::HostInformation::priorityToIndex): Deleted.
        (WebCore::ResourceLoadScheduler::HostInformation::schedule): Deleted.
        (WebCore::ResourceLoadScheduler::HostInformation::addLoadInProgress): Deleted.
        (WebCore::ResourceLoadScheduler::HostInformation::remove): Deleted.
        (WebCore::ResourceLoadScheduler::HostInformation::hasRequests): Deleted.
        (WebCore::ResourceLoadScheduler::HostInformation::limitRequests): Deleted.
        * WebCoreSupport/WebResourceLoadScheduler.h: Copied from Source/WebCore/loader/ResourceLoadScheduler.h.
        (WebResourceLoadScheduler::isSerialLoadingEnabled):
        (WebResourceLoadScheduler::setSerialLoadingEnabled):
        (WebResourceLoadScheduler::HostInformation::name):
        (WebResourceLoadScheduler::HostInformation::requestsPending):
        (WebCore::ResourceLoadScheduler::isSerialLoadingEnabled): Deleted.
        (WebCore::ResourceLoadScheduler::setSerialLoadingEnabled): Deleted.
        (WebCore::ResourceLoadScheduler::Suspender::Suspender): Deleted.
        (WebCore::ResourceLoadScheduler::Suspender::~Suspender): Deleted.
        (WebCore::ResourceLoadScheduler::HostInformation::name): Deleted.
        (WebCore::ResourceLoadScheduler::HostInformation::requestsPending): Deleted.
        * WebKit.xcodeproj/project.pbxproj:

2015-10-29  Alex Christensen  <achristensen@webkit.org>

        Make WebCore a framework in Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=150702

        Reviewed by Geoffrey Garen.

        * PlatformMac.cmake:

2015-10-29  Alex Christensen  <achristensen@webkit.org>

        Fix Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=150686

        Reviewed by Filip Pizlo.

        * CMakeLists.txt:
        * PlatformMac.cmake:

2015-10-28  Alex Christensen  <achristensen@webkit.org>

        Compile and link with CMake on Mac
        https://bugs.webkit.org/show_bug.cgi?id=150632

        Reviewed by Tim Horton.

        * PlatformMac.cmake:

2015-10-23  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Mac
        https://bugs.webkit.org/show_bug.cgi?id=150517

        Reviewed by Tim Horton.

        * PlatformMac.cmake:

2015-10-18  Sungmann Cho  <sungmann.cho@navercorp.com>

        Fix the builds with ENABLE_INDEX_DATABASE=OFF.
        https://bugs.webkit.org/show_bug.cgi?id=150301

        Reviewed by Darin Adler.

        Add missing #if ENABLE(INDEXED_DATABASE).

        * Storage/WebDatabaseProvider.h:

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

        [Win] Another CMake build fix

        * PlatformWin.cmake: Add missing Psapi.lib to link list.

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

        [Win] Unreviewed CMake build fixes.

        * CMakeLists.txt: Set the same build definitions as the original
        project file.
        * PlatformWin.cmake: Remove some soft-linked files from the static
        link commands. Set build flags to match original project files.

2015-09-28  Brady Eidson  <beidson@apple.com>

        Add an IDB Server that can roundtrip a request back to the client.
        https://bugs.webkit.org/show_bug.cgi?id=149603

        Reviewed by Alex Christensen.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::idbConnectionToServerForSession):
        * Storage/WebDatabaseProvider.h:

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

        Clean up CMake build on Mac
        https://bugs.webkit.org/show_bug.cgi?id=149573

        Reviewed by Chris Dumez.

        * PlatformMac.cmake:

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

        [Win] Switch to CMake
        https://bugs.webkit.org/show_bug.cgi?id=148111

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.proj:

2015-09-24  Ryosuke Niwa  <rniwa@webkit.org>

        Ran sort-Xcode-project-file.

        * WebKit.xcodeproj/project.pbxproj:

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

        [Win] Unreviewed build fix.

        * WebKit.vcxproj/WebKit/WebKitApple.props: We need to link against
        libdispatch on Windows.

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

        Fix Windows tests after r189934.

        * CMakeLists.txt:
        Include WebKit.rc to include resources like missingImage.png in WebKit.dll.

2015-09-15  Brady Eidson  <beidson@apple.com>

        Add empty IDBFactory implementation for Modern IDB.
        https://bugs.webkit.org/show_bug.cgi?id=149191

        Reviewed by Jer Noble.

        * Storage/WebDatabaseProvider.h:

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

        Progress towards CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=149123

        Reviewed by Chris Dumez.

        * CMakeLists.txt:
        * PlatformMac.cmake:
        Added more sources, make non-c99 sources compile as objc++
        * PlatformWin.cmake:
        Moved WebCoreTestSupport sources and includes to CMakeLists.txt to share.

2015-09-13  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        Remove all uses of PassRefPtr in crypto, storage, and history
        https://bugs.webkit.org/show_bug.cgi?id=149091

        Reviewed by Andreas Kling.

        * Storage/StorageNamespaceImpl.cpp:
        (WebCore::StorageNamespaceImpl::storageArea):
        * Storage/StorageNamespaceImpl.h:

2015-08-27  Alex Christensen  <achristensen@webkit.org>

        Isolate Source directories in CMake build
        https://bugs.webkit.org/show_bug.cgi?id=148389

        Reviewed by Brent Fulgham.

        * PlatformWin.cmake:
        Moved WebKitVersion.h generation from WebCore because the scripts required for it are in WebKit.

2015-08-27  Timothy Horton  <timothy_horton@apple.com>

        Factor out Lookup invocation
        https://bugs.webkit.org/show_bug.cgi?id=148509

        Reviewed by Anders Carlsson.

        * WebKit.xcodeproj/project.pbxproj:

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

        Correct build after r188982.

        * WebKit.vcxproj/WebKit.sln:

2015-08-20  Alex Christensen  <achristensen@webkit.org>

        Clean up CMake build after r188673
        https://bugs.webkit.org/show_bug.cgi?id=148234

        Reviewed by Tim Horton.

        * PlatformWin.cmake:
        Include ANGLE forwarding headers directories.

2015-08-19  Alex Christensen  <achristensen@webkit.org>

        CMake Windows build should not include files directly from other Source directories
        https://bugs.webkit.org/show_bug.cgi?id=148198

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:
        * PlatformWin.cmake:

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

        [Win] Replace MIDL [in/out] comments with equivalent SAL
        https://bugs.webkit.org/show_bug.cgi?id=148001

        Reviewed by Tim Horton.

        * WebKit.vcxproj/Interfaces/InterfacesCommon.props: Turn
        on SAL declarations in MIDL output.

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

        Replace all remaining uses of WTF::Mutex with WTF::Lock
        https://bugs.webkit.org/show_bug.cgi?id=148089

        Reviewed by Geoffrey Garen.

        * Storage/StorageAreaSync.cpp:
        (WebCore::StorageAreaSync::syncTimerFired):
        (WebCore::StorageAreaSync::markImported):
        (WebCore::StorageAreaSync::blockUntilImportComplete):
        (WebCore::StorageAreaSync::performSync):
        * Storage/StorageAreaSync.h:
        * Storage/StorageTracker.cpp:
        (WebCore::StorageTracker::setDatabaseDirectoryPath):
        (WebCore::StorageTracker::finishedImportingOriginIdentifiers):
        (WebCore::StorageTracker::syncImportOriginIdentifiers):
        (WebCore::StorageTracker::syncFileSystemAndTrackerDatabase):
        (WebCore::StorageTracker::setOriginDetails):
        (WebCore::StorageTracker::syncSetOriginDetails):
        (WebCore::StorageTracker::origins):
        (WebCore::StorageTracker::deleteAllOrigins):
        (WebCore::StorageTracker::syncDeleteAllOrigins):
        (WebCore::StorageTracker::deleteOrigin):
        (WebCore::StorageTracker::syncDeleteOrigin):
        (WebCore::StorageTracker::canDeleteOrigin):
        (WebCore::StorageTracker::cancelDeletingOrigin):
        (WebCore::StorageTracker::diskUsageForOrigin):
        * Storage/StorageTracker.h:

2015-08-17  Alex Christensen  <achristensen@webkit.org>

        [Win CMake] Allow WebKitLibraries directory to be set from the command line
        https://bugs.webkit.org/show_bug.cgi?id=148112

        Reviewed by Brent Fulgham.

        * PlatformWin.cmake:
        Don't use an environment variable for WEBKIT_LIBRARIES_DIR.  

2015-08-17  Alex Christensen  <achristensen@webkit.org>

        Build Debug Suffix on Windows with CMake
        https://bugs.webkit.org/show_bug.cgi?id=148083

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:
        * PlatformWin.cmake:
        Add DEBUG_SUFFIX

2015-08-17  Alex Christensen  <achristensen@webkit.org>

        Move some commands from ./CMakeLists.txt to Source/cmake
        https://bugs.webkit.org/show_bug.cgi?id=148003

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:
        Added some commands needed to build WebKit by itself.

2015-08-13  Commit Queue  <commit-queue@webkit.org>

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

        broke cmake build (Requested by alexchristensen on #webkit).

        Reverted changeset:

        "Move some commands from ./CMakeLists.txt to Source/cmake"
        https://bugs.webkit.org/show_bug.cgi?id=148003
        http://trac.webkit.org/changeset/188428

2015-08-13  Alex Christensen  <achristensen@webkit.org>

        Move some commands from ./CMakeLists.txt to Source/cmake
        https://bugs.webkit.org/show_bug.cgi?id=148003

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:
        Added some commands needed to build WebKit by itself.

2015-08-12  Alex Christensen  <achristensen@webkit.org>

        Fix Debug CMake builds on Windows
        https://bugs.webkit.org/show_bug.cgi?id=147940

        Reviewed by Chris Dumez.

        * PlatformWin.cmake:
        We need /NODEFAULTLIB with the debug version of libraries, too.

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

        [Win] Switch Windows build to Visual Studio 2015
        https://bugs.webkit.org/show_bug.cgi?id=147887
        <rdar://problem/22235098>

        Reviewed by Alex Christensen.

        Update Visual Studio project file settings to use the current Visual
        Studio and compiler. Continue targeting binaries to run on our minimum
        supported configuration of Windows 7.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
        * WebKit.vcxproj/WebKit.sln:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:

2015-08-10  Alex Christensen  <achristensen@webkit.org>

        Another build fix after r188239.

        * PlatformWin.cmake:
        Link WinCairo with Media Foundation libraries.

2015-08-10  Alex Christensen  <achristensen@webkit.org>

        Build TestWebKitAPI with CMake on Windows
        https://bugs.webkit.org/show_bug.cgi?id=147851

        Reviewed by Chris Dumez.

        * PlatformWin.cmake:
        WinCairo libraries conflict with LIBCMT.lib, AppleWin libraries conflict with MSVCRT.lib,
        so different /NODEFAULTLIB is needed to link WebKit.dll successfully.

2015-08-06  Alex Christensen  <achristensen@webkit.org>

        [Win] Enable all Windows features in CMake
        https://bugs.webkit.org/show_bug.cgi?id=147744

        Reviewed by Tim Horton.

        * PlatformWin.cmake:
        Add some include directories needed for the newly enabled features.

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

        Unreviewed, roll out http://trac.webkit.org/changeset/187972.

        * Storage/StorageAreaSync.cpp:
        (WebCore::StorageAreaSync::syncTimerFired):
        (WebCore::StorageAreaSync::markImported):
        (WebCore::StorageAreaSync::blockUntilImportComplete):
        (WebCore::StorageAreaSync::performSync):
        * Storage/StorageAreaSync.h:
        * Storage/StorageTracker.cpp:
        (WebCore::StorageTracker::setDatabaseDirectoryPath):
        (WebCore::StorageTracker::finishedImportingOriginIdentifiers):
        (WebCore::StorageTracker::syncImportOriginIdentifiers):
        (WebCore::StorageTracker::syncFileSystemAndTrackerDatabase):
        (WebCore::StorageTracker::setOriginDetails):
        (WebCore::StorageTracker::syncSetOriginDetails):
        (WebCore::StorageTracker::origins):
        (WebCore::StorageTracker::deleteAllOrigins):
        (WebCore::StorageTracker::syncDeleteAllOrigins):
        (WebCore::StorageTracker::deleteOrigin):
        (WebCore::StorageTracker::syncDeleteOrigin):
        (WebCore::StorageTracker::canDeleteOrigin):
        (WebCore::StorageTracker::cancelDeletingOrigin):
        (WebCore::StorageTracker::diskUsageForOrigin):
        * Storage/StorageTracker.h:

2015-08-05  Alex Christensen  <achristensen@webkit.org>

        Build DumpRenderTree with CMake.
        https://bugs.webkit.org/show_bug.cgi?id=147519

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:
        * PlatformMac.cmake:
        * PlatformWin.cmake:
        Make the libraries WebKit links with private, which means that CMake will not make everything
        that links with WebKit link with everything WebKit links with.

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

        Rename Mutex to DeprecatedMutex
        https://bugs.webkit.org/show_bug.cgi?id=147675

        Reviewed by Geoffrey Garen.

        * Storage/StorageAreaSync.cpp:
        (WebCore::StorageAreaSync::syncTimerFired):
        (WebCore::StorageAreaSync::markImported):
        (WebCore::StorageAreaSync::blockUntilImportComplete):
        (WebCore::StorageAreaSync::performSync):
        * Storage/StorageAreaSync.h:
        * Storage/StorageTracker.cpp:
        (WebCore::StorageTracker::setDatabaseDirectoryPath):
        (WebCore::StorageTracker::finishedImportingOriginIdentifiers):
        (WebCore::StorageTracker::syncImportOriginIdentifiers):
        (WebCore::StorageTracker::syncFileSystemAndTrackerDatabase):
        (WebCore::StorageTracker::setOriginDetails):
        (WebCore::StorageTracker::syncSetOriginDetails):
        (WebCore::StorageTracker::origins):
        (WebCore::StorageTracker::deleteAllOrigins):
        (WebCore::StorageTracker::syncDeleteAllOrigins):
        (WebCore::StorageTracker::deleteOrigin):
        (WebCore::StorageTracker::syncDeleteOrigin):
        (WebCore::StorageTracker::canDeleteOrigin):
        (WebCore::StorageTracker::cancelDeletingOrigin):
        (WebCore::StorageTracker::diskUsageForOrigin):
        * Storage/StorageTracker.h:

2015-08-04  Alex Christensen  <achristensen@webkit.org>

        Enable WebGL on Windows CMake build.
        https://bugs.webkit.org/show_bug.cgi?id=143311

        Reviewed by Csaba Osztrogonác.

        * PlatformWin.cmake:
        Added some needed source files and include directories.

2015-08-01  Alex Christensen  <achristensen@webkit.org>

        Fix 64-bit CMake build on Windows.

        * PlatformWin.cmake:
        Win64 needs PaintHooks.asm.

2015-07-30  Alex Christensen  <achristensen@webkit.org>

        Build AppleWin port with CMake
        https://bugs.webkit.org/show_bug.cgi?id=147385

        Reviewed by Martin Robinson.

        * PlatformWin.cmake:
        Added missing source files and libraries.

2015-07-27  Alex Christensen  <achristensen@webkit.org>

        Use Ninja on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=147228

        Reviewed by Martin Robinson.

        * PlatformWin.cmake:
        Added /NODEFAULTLIB:LIBCMT to link WebKit.dll successfully with Ninja.

2015-07-27  Alex Christensen  <achristensen@webkit.org>

        Progress towards building AppleWin with CMake
        https://bugs.webkit.org/show_bug.cgi?id=147325

        Reviewed by Martin Robinson.

        * PlatformWin.cmake:
        Removed references to non-existing files.

2015-07-22  Alex Christensen  <achristensen@webkit.org>

        Fix quirks in CMake build on Mac and Windows
        https://bugs.webkit.org/show_bug.cgi?id=147174

        Reviewed by Gyuyoung Kim.

        * PlatformMac.cmake:
        Fixed syntax, removed files that don't exist any more.

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

        [Win] Certain Debug builds can take close to 3 hours to link
        https://bugs.webkit.org/show_bug.cgi?id=147114
        <rdar://problem/21882777>

        Reviewed by Tim Horton.

        Correct the 64-bit DebugSuffix link target to match the 32-bit version.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Turn off the REF and ICF
        flags for the 64-bit DebugSuffix link target.

2015-07-20  Alex Christensen  <achristensen@webkit.org>

        Resurrect CMake build on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=147083

        Reviewed by Gyuyoung Kim.

        * PlatformWin.cmake: Added.
        Based on original work by Patrick Gansterer and Mark Salisbury
        in https://bugs.webkit.org/show_bug.cgi?id=72816

2015-07-16  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed gardening.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters: Move file into the
        appropriate category in the project.

2015-07-14  Lucas Forschler  <lforschler@apple.com>

        Teach platformMac.cmake about El Capitan WKSI.
        <rdar://problem/21822469>
        
        Reviewed by Alex Christensen.

        * PlatformMac.cmake:

2015-07-09  Per Arne Vollan  <peavo@outlook.com>

        [Win] Add memory pressure handler.
        https://bugs.webkit.org/show_bug.cgi?id=146685

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit/WebKitCommon.props: Link with process api library.

2015-07-04  Chris Dumez  <cdumez@apple.com>

        Drop RefPtr::clear() method
        https://bugs.webkit.org/show_bug.cgi?id=146556

        Reviewed by Brady Eidson.

        Drop RefPtr::clear() method in favor of "= nullptr;" pattern.

2015-07-03  Dan Bernstein  <mitz@apple.com>

        [Xcode] Update some build settings as recommended by Xcode 7
        https://bugs.webkit.org/show_bug.cgi?id=146597

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj: Updated LastUpgradeCheck.

2015-07-01  Alex Christensen  <achristensen@webkit.org>

        Re-enable WebGL on WinCairo.
        https://bugs.webkit.org/show_bug.cgi?id=146537

        Reviewed by Csaba Osztrogonác.

        * WebKit.vcxproj/WebKit.sln:
        Build the ANGLE projects on WinCairo again.

2015-06-30  Alex Christensen  <achristensen@webkit.org>

        [Win] Unreviewed build fix after r186169.

        * WebKit.vcxproj/WebKit.sln:
        Temporarily don't build ANGLE projects on Windows.

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

        [Win] Implement WebViewGroup to support WebView::addxxxToGroup().
        https://bugs.webkit.org/show_bug.cgi?id=145908

        Reviewed by Brent Fulgham.

        Make WebViewGroup class sharing on Mac and Win port.

        * WebCoreSupport: Added.
        * WebCoreSupport/WebViewGroup.cpp: Added.
        (webViewGroups):
        (WebViewGroup::getOrCreate):
        (WebViewGroup::get):
        (WebViewGroup::WebViewGroup):
        (WebViewGroup::~WebViewGroup):
        (WebViewGroup::addWebView):
        (WebViewGroup::removeWebView):
        (WebViewGroup::storageNamespaceProvider):
        * WebCoreSupport/WebViewGroup.h: Added.
        (WebViewGroup::userContentController):
        (WebViewGroup::visitedLinkStore):
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:
        * WebKit.vcxproj/WebKit/WebKitCommon.props:
        * WebKit.xcodeproj/project.pbxproj:

2015-06-24  Anders Carlsson  <andersca@apple.com>

        Move PluginMainThreadScheduler to WebKit/win
        https://bugs.webkit.org/show_bug.cgi?id=146289

        Reviewed by Tim Horton.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:

2015-06-17  Commit Queue  <commit-queue@webkit.org>

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

        Caused many crashes on Windows (Requested by ap on #webkit).

        Reverted changeset:

        "[Win] Implement WebViewGroup to support
        WebView::addxxxToGroup()."
        https://bugs.webkit.org/show_bug.cgi?id=145908
        http://trac.webkit.org/changeset/185636

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

        [Win] Implement WebViewGroup to support WebView::addxxxToGroup().
        https://bugs.webkit.org/show_bug.cgi?id=145908

        Reviewed by Brent Fulgham.

        Make WebViewGroup class sharing on Mac and Win port.

        * WebCoreSupport: Added.
        * WebCoreSupport/WebViewGroup.cpp: Copied from Source/WebKit/mac/WebCoreSupport/WebViewGroup.mm.
        * WebCoreSupport/WebViewGroup.h: Copied from Source/WebKit/mac/WebCoreSupport/WebViewGroup.h.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:
        * WebKit.vcxproj/WebKit/WebKitCommon.props:
        * WebKit.xcodeproj/project.pbxproj:

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

        [cmake] Fix the style issues in cmake project files
        https://bugs.webkit.org/show_bug.cgi?id=145755

        Reviewed by Darin Adler.

        * PlatformMac.cmake:

2015-06-07  Anders Carlsson  <andersca@apple.com>

        Remove WebNSArrayExtras
        https://bugs.webkit.org/show_bug.cgi?id=145747

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj:

2015-06-07  Anders Carlsson  <andersca@apple.com>

        Remove WebKitSystemBits
        https://bugs.webkit.org/show_bug.cgi?id=145746

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:

2015-06-06  Anders Carlsson  <andersca@apple.com>

        Remove SPI that's no longer used
        https://bugs.webkit.org/show_bug.cgi?id=145727

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:

2015-05-27  Andreas Kling  <akling@apple.com>

        [WK2] Local storage areas should get torn down when they have no remaining references.
        <https://webkit.org/b/143339>
        <rdar://problem/20156436>

        Reviewed by Darin Adler.

        Add StorageArea::securityOrigin() implementation.

        * Storage/StorageAreaImpl.h:

2015-05-22  Tim Horton  <timothy_horton@apple.com>

        Remove action menu support
        https://bugs.webkit.org/show_bug.cgi?id=145305
        <rdar://problem/21070771>

        Reviewed by Anders Carlsson.

        * WebKit.xcodeproj/project.pbxproj:
        Remove some files.

2015-05-18  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Ignore warnings in system headers
        https://bugs.webkit.org/show_bug.cgi?id=144747

        Reviewed by Darin Adler.

        Separate include directories into WebKit project includes and system includes. Suppress all
        warnings from headers in system include directories using the SYSTEM argument to
        the include_directories command.

        * CMakeLists.txt:
        * PlatformMac.cmake:

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

        [Win] Move Windows build target to Windows 7 (or newer)
        https://bugs.webkit.org/show_bug.cgi?id=144890
        <rdar://problem/20707307>

        Reviewed by Anders Carlsson.

        Update linked SDK and minimal Windows level to be compatible with
        Windows 7 or newer.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:

2015-05-07  Beth Dakin  <bdakin@apple.com>

        New force-related DOM events should fire in WK1 views
        https://bugs.webkit.org/show_bug.cgi?id=144663
        -and corresponding-
        rdar://problem/20281886

        Reviewed by Sam Weinig.

        Pass the lastPressureEvent to WebCore.
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _updateMouseoverWithEvent:]):
        (-[WebHTMLView rightMouseUp:]):
        (-[WebHTMLView menuForEvent:]):
        (-[WebHTMLView acceptsFirstMouse:]):
        (-[WebHTMLView shouldDelayWindowOrderingForEvent:]):
        (-[WebHTMLView mouseDown:mouseDown:]):
        (-[WebHTMLView mouseDragged:]):
        (-[WebHTMLView mouseUp:mouseUp:]):

        New NSRespnder method for pressure changes.
        (-[WebHTMLView pressureChangeWithEvent:]):

        New BOOL _contentPreventsDefault tracks whether the HitTestResult prevented the 
        default action. Get rid of willHandleMouseDown; now that the gesture recognizer 
        sets delaysPrimaryMouseButtonEvents to NO, we don’t need this.
        * WebView/WebImmediateActionController.h:
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _clearImmediateActionState]):

        Set all of the immediateActionStages on EventHandler. This is critical to keep 
        link navigation happening at the right time now that 
        delaysPrimaryMouseButtonEvents is set to NO.
        (-[WebImmediateActionController performHitTestAtPoint:]):
        (-[WebImmediateActionController immediateActionRecognizerDidUpdateAnimation:]):
        (-[WebImmediateActionController immediateActionRecognizerDidCancelAnimation:]):
        (-[WebImmediateActionController immediateActionRecognizerDidCompleteAnimation:]):

        Use a dummy animation controller if the content prevents default.
        (-[WebImmediateActionController _defaultAnimationController]):
        (-[WebImmediateActionController _updateImmediateActionItem]):
        (-[WebImmediateActionController webView:willHandleMouseDown:]): Deleted.

        Set delaysPrimaryMouseButtonEvents to NO so that we get existing mouse events when 
        we expect to.
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

        Cache the most recent pressure event so that we can send it to WebCore for all of 
        the mouse events.
        (-[WebView _pressureEvent]):
        (-[WebView _setPressureEvent:]):
        * WebView/WebViewData.h:
        * WebView/WebViewData.mm:
        (-[WebViewPrivate dealloc]):
        * WebView/WebViewInternal.h:

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.

        * WebKit.vcxproj/WebKit/WebKitANGLE.props: Added.
        * WebKit.vcxproj/WebKit/WebKitCommon.props: Remove ANGLE link
        libraries from common property sheet.
        * WebKit.vcxproj/WebKit/WebKitDebugWinCairo.props: Reference
        the WebKitANGLE property sheet.
        * WebKit.vcxproj/WebKit/WebKitReleaseWinCairo.props: Ditto.

2015-04-24  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Remove native window dock controls
        https://bugs.webkit.org/show_bug.cgi?id=144184

        Reviewed by Joseph Pecoraro.

        * WebKit.xcodeproj/project.pbxproj:

2015-04-15  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=143785

        Reviewed by Csaba Osztrogonác.

        * PlatformMac.cmake:

2015-04-08  Alex Christensen  <achristensen@webkit.org> and Patrick Gansterer  <paroga@webkit.org>

        Add CMake build system for WinCairo port.
        https://bugs.webkit.org/show_bug.cgi?id=115944

        Reviewed by Chris Dumez.

        * CMakeLists.txt:

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

        Get rid of uses of ApplicationCacheStorage::singleton() from WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=143504

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj:
        Add WebApplicationCacheInternal.h.

2015-04-05  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Use constants of sqlite3 directly for status of SQL result in webdatabase
        https://bugs.webkit.org/show_bug.cgi?id=143329

        Reviewed by Darin Adler.

        In webdatabase, it has used own constants vairables as well as using sqlite3 constants directly.
        It causes to use if~else statement which consumes more cpu cycles compared to switch~case. This
        patch makes to use constants of sqlite3.

        * Storage/StorageAreaSync.cpp:
        (WebCore::StorageAreaSync::performImport):
        (WebCore::StorageAreaSync::sync):
        (WebCore::StorageAreaSync::deleteEmptyDatabase):
        * Storage/StorageTracker.cpp:
        (WebCore::StorageTracker::syncImportOriginIdentifiers):
        (WebCore::StorageTracker::syncSetOriginDetails):
        (WebCore::StorageTracker::syncDeleteAllOrigins):
        (WebCore::StorageTracker::syncDeleteOrigin):
        (WebCore::StorageTracker::databasePathForOrigin):
        * WebKit.vcxproj/WebKit/WebKitCommon.props: Add sqlite include path.

2015-04-01  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Windows and Mac.
        https://bugs.webkit.org/show_bug.cgi?id=143293

        Reviewed by Filip Pizlo.

        * PlatformMac.cmake:
        Fixed some include directories.

2015-03-26  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=143112

        Reviewed by Chris Dumez.

        * PlatformMac.cmake:

2015-03-20  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=136003

        Reviewed by Chris Dumez.

        * CMakeLists.txt:
        * PlatformMac.cmake: Added.

2015-03-13  Alex Christensen  <achristensen@webkit.org>

        Progress towards CMake on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=142680

        Reviewed by Gyuyoung Kim.

        * CMakeLists.txt: Added.

2015-03-01  Dan Bernstein  <mitz@apple.com>

        Silence non-fatal errors about failing to create WebKitPluginHost.app and WebKitPluginAgent symlinks.

        Rubber-stamped by Alexey Proskuryakov.

        * WebKit.xcodeproj/project.pbxproj: If a link already exist, don’t try to create it.

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

        [Win] Unreviewed build fix.

        Adjust project dependencies to ensure a consistent build order.

        * WebKit.vcxproj/WebKit.sln:

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

        [Win] Remove WebKitExportGenerator project (and related)
        https://bugs.webkit.org/show_bug.cgi?id=142035

        Reviewed by Dean Jackson.

        * WebKit.vcxproj/WebKit.sln: Remove references to WebKitExportGenerator
        * WebKit.vcxproj/WebKit.submit.sln: Ditto.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Ditto.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters: Ditto.
        * WebKit.vcxproj/WebKitExportGenerator: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj.filters: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorBuildCmd.cmd: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebug.props: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebugWinCairo.props: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPostBuild.cmd: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorProduction.props: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorRelease.props: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorReleaseWinCairo.props: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Removed.
        * WebKit.vcxproj/WebKitExportGenerator/make-export-file-generator: Removed.

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.

        * WebKit.vcxproj/Interfaces/InterfacesPostBuild.cmd:
        * WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd:
        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd:
        * WebKit.vcxproj/WebKit/WebKitPreBuild.cmd:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDPreBuild.cmd:

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

        [Win] Use WEBCORE_EXPORT instead of Definition file
        https://bugs.webkit.org/show_bug.cgi?id=141734

        Reviewed by Alex Christensen.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Visual studio automatic
        file cleanup.
        * WebKit.vcxproj/WebKit/WebKitCommon.props: Don't use the export definition
        file any longer.

2015-02-25  Alexey Proskuryakov  <ap@apple.com>

        <rdar://problem/19949665> Some queues fail to build because of WebKitPluginHost.app symlink

        Fix by Dan Bernstein, reviewed by me.

        * WebKit.xcodeproj/project.pbxproj:

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

        Unreviewed Windows build fix after r180601.

        Export some missing symbols.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2015-02-18  Chris Dumez  <cdumez@apple.com>

        Unreviewed Windows build fix after r180337.

        Export a couple of symbols.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2015-02-17  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CMAKE] Remove CMakeLists.txt in WK1 port
        https://bugs.webkit.org/show_bug.cgi?id=141617

        Reviewed by Anders Carlsson.

        * CMakeLists.txt: Removed.

2015-02-09  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: remove some unnecessary Inspector prefixes from class names in Inspector namespace
        https://bugs.webkit.org/show_bug.cgi?id=141372

        Reviewed by Joseph Pecoraro.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2015-02-11  Alex Christensen  <achristensen@webkit.org>

        [Win] Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Win] 64-bit build fix after r179702 and r179709

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2015-02-05  Chris Dumez  <cdumez@apple.com>

        Unreviewed attempt to fix Windows build after r179702.

        Export a couple of extra symbols.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Win] Unreviewed build fix after r179489.

        Correct symbol export definitions for 32-bit and 64-bit builds.
        Also add some drive-by fixes for 64-bit symbols.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Win] Unreviewed 64-bit build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Correct symbol
        definitions for 64-bit build.

2015-01-30  Chris Dumez  <cdumez@apple.com>

        Rename shared() static member functions to singleton() for singleton classes.
        https://bugs.webkit.org/show_bug.cgi?id=141088

        Reviewed by Ryosuke Niwa and Benjamin Poulain.

        Rename shared() static member functions to singleton() for singleton
        classes as per the recent coding style change.

        * Storage/WebDatabaseProvider.cpp:
        (WebDatabaseProvider::singleton):
        (WebDatabaseProvider::shared): Deleted.
        * Storage/WebDatabaseProvider.h:

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

        [Win] Build fix after r179368.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Remove missing symbol.

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

        [Win] Add WebKit message loop interface.
        https://bugs.webkit.org/show_bug.cgi?id=140857

        Reviewed by Brent Fulgham.

        Added message loop interface which will run the message loop,
        and perform required tasks (like calling CFRunLoopRunInMode)
        on each iteration of the loop.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Added new files to project.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters: Ditto.

2015-01-22  Andreas Kling  <akling@apple.com>

        Remove unused class EmojiFallbackFontSelector.
        <https://webkit.org/b/140809>

        Reviewed by Antti Koivisto.

        * WebKit.xcodeproj/project.pbxproj:

2015-01-21  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(INSPECTOR) ifdef guards
        https://bugs.webkit.org/show_bug.cgi?id=140668

        Reviewed by Darin Adler.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Switch to comparing PLATFORM_NAME in terms of macosx
        <http://webkit.org/b/139516>

        Reviewed by Timothy Hatcher.

        * WebKit.xcodeproj/project.pbxproj:

2015-01-19  Anders Carlsson  <andersca@apple.com>

        Try to fix build warnings with newer versions of clang.

        * Storage/StorageAreaImpl.h:

2015-01-17  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: highlight data for overlay should use protocol type builders
        https://bugs.webkit.org/show_bug.cgi?id=129441

        Reviewed by Timothy Hatcher.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Update symbol.

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

        [Win] Unreviewed build fix after r178459 and r178462.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add some
        missing exports needed by the test infrastructure.

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

        [Win] Unreviewed build fix for DebugSuffix target.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Correct build flags for DebugSuffix
        target to match Release and Debug builds.

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

        [Win] Build fix after r178255.

        Correct path to PaintHooks.asm. This causes a build failure if you perform a
        clean build from a new subversion checkout.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:

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

        [Win] Build fix after r178219.

        Update the project file settings to understand how to process assembly files.
        Also tidy up the plugin code in the project hieararchy.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:

2015-01-06  Anders Carlsson  <andersca@apple.com>

        Move the Windows only plug-in code to WebKit/win
        https://bugs.webkit.org/show_bug.cgi?id=140133

        Reviewed by Darin Adler.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:

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

        [Win] Unreviewed build fix after r178124.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Remove symbol that
        is no longer part of WebCore.

2015-01-07  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: purge PassRefPtr from Inspector code and use Ref for typed and untyped protocol objects
        https://bugs.webkit.org/show_bug.cgi?id=140053

        Reviewed by Andreas Kling.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: update symbol.

2015-01-07  Commit Queue  <commit-queue@webkit.org>

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

        Breaks ObjC Inspector Protocol (Requested by JoePeck on
        #webkit).

        Reverted changeset:

        "Web Inspector: purge PassRefPtr from Inspector code and use
        Ref for typed and untyped protocol objects"
        https://bugs.webkit.org/show_bug.cgi?id=140053
        http://trac.webkit.org/changeset/178039

2015-01-06  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: purge PassRefPtr from Inspector code and use Ref for typed and untyped protocol objects
        https://bugs.webkit.org/show_bug.cgi?id=140053

        Reviewed by Andreas Kling.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: update symbol.

2015-01-06  Anders Carlsson  <andersca@apple.com>

        Add a WebKit1 database provider
        https://bugs.webkit.org/show_bug.cgi?id=140126

        Reviewed by Sam Weinig.

        Add a stubbed out database provider.

        * Storage/WebDatabaseProvider.cpp: Added.
        (WebDatabaseProvider::shared):
        (WebDatabaseProvider::WebDatabaseProvider):
        (WebDatabaseProvider::~WebDatabaseProvider):
        (WebDatabaseProvider::createIDBFactoryBackend):
        * Storage/WebDatabaseProvider.h: Added.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:
        * WebKit.xcodeproj/project.pbxproj:

2015-01-06  Commit Queue  <commit-queue@webkit.org>

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

        Caused lots of crashes (Requested by smfr on #webkit).

        Reverted changeset:

        "Add a WebKit1 database provider"
        https://bugs.webkit.org/show_bug.cgi?id=140126
        http://trac.webkit.org/changeset/177963

2015-01-06  Anders Carlsson  <andersca@apple.com>

        Add a WebKit1 database provider
        https://bugs.webkit.org/show_bug.cgi?id=140126

        Reviewed by Sam Weinig.

        Add a stubbed out database provider.

        * Storage/WebDatabaseProvider.cpp: Added.
        (WebDatabaseProvider::shared):
        (WebDatabaseProvider::WebDatabaseProvider):
        (WebDatabaseProvider::~WebDatabaseProvider):
        (WebDatabaseProvider::createIDBFactoryBackend):
        * Storage/WebDatabaseProvider.h: Added.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:
        * WebKit.xcodeproj/project.pbxproj:

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

        [Win] Unreviewed build fix after r177925.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Correct symbol name.

2014-12-29  Anders Carlsson  <andersca@apple.com>

        Remove unneeded StorageNamespace functions
        https://bugs.webkit.org/show_bug.cgi?id=139997

        Reviewed by Sam Weinig.

        We can just cast to StorageNamespaceImpl directly, no need for virtual dispatch.

        * Storage/StorageNamespaceImpl.h:
        * Storage/WebStorageNamespaceProvider.cpp:
        (WebStorageNamespaceProvider::closeLocalStorage):
        (WebStorageNamespaceProvider::clearLocalStorageForAllOrigins):
        (WebStorageNamespaceProvider::clearLocalStorageForOrigin):
        (WebStorageNamespaceProvider::closeIdleLocalStorageDatabases):
        (WebStorageNamespaceProvider::syncLocalStorage):

2014-12-29  Anders Carlsson  <andersca@apple.com>

        Get rid of some PageGroup storage functions
        https://bugs.webkit.org/show_bug.cgi?id=139996

        Reviewed by Sam Weinig.

        Call WebStorageNamespaceProvider directly instead.

        * Storage/StorageTracker.cpp:
        (WebCore::StorageTracker::deleteAllOrigins):
        (WebCore::StorageTracker::deleteOrigin):

2014-12-29  Anders Carlsson  <andersca@apple.com>

        Move storage code from WebCore to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=139558

        Reviewed by Darin Adler.

        * Storage/StorageAreaImpl.cpp: Renamed from Source/WebCore/storage/StorageAreaImpl.cpp.
        (WebCore::StorageAreaImpl::~StorageAreaImpl):
        (WebCore::StorageAreaImpl::StorageAreaImpl):
        (WebCore::StorageAreaImpl::create):
        (WebCore::StorageAreaImpl::copy):
        (WebCore::StorageAreaImpl::canAccessStorage):
        (WebCore::StorageAreaImpl::storageType):
        (WebCore::StorageAreaImpl::length):
        (WebCore::StorageAreaImpl::key):
        (WebCore::StorageAreaImpl::item):
        (WebCore::StorageAreaImpl::setItem):
        (WebCore::StorageAreaImpl::removeItem):
        (WebCore::StorageAreaImpl::clear):
        (WebCore::StorageAreaImpl::contains):
        (WebCore::StorageAreaImpl::importItems):
        (WebCore::StorageAreaImpl::close):
        (WebCore::StorageAreaImpl::clearForOriginDeletion):
        (WebCore::StorageAreaImpl::sync):
        (WebCore::StorageAreaImpl::blockUntilImportComplete):
        (WebCore::StorageAreaImpl::memoryBytesUsedByCache):
        (WebCore::StorageAreaImpl::incrementAccessCount):
        (WebCore::StorageAreaImpl::decrementAccessCount):
        (WebCore::StorageAreaImpl::closeDatabaseTimerFired):
        (WebCore::StorageAreaImpl::closeDatabaseIfIdle):
        (WebCore::StorageAreaImpl::dispatchStorageEvent):
        * Storage/StorageAreaImpl.h: Renamed from Source/WebCore/storage/StorageAreaImpl.h.
        * Storage/StorageAreaSync.cpp: Renamed from Source/WebCore/storage/StorageAreaSync.cpp.
        (WebCore::StorageAreaSync::StorageAreaSync):
        (WebCore::StorageAreaSync::create):
        (WebCore::StorageAreaSync::~StorageAreaSync):
        (WebCore::StorageAreaSync::scheduleFinalSync):
        (WebCore::StorageAreaSync::scheduleItemForSync):
        (WebCore::StorageAreaSync::scheduleClear):
        (WebCore::StorageAreaSync::scheduleCloseDatabase):
        (WebCore::StorageAreaSync::syncTimerFired):
        (WebCore::StorageAreaSync::openDatabase):
        (WebCore::StorageAreaSync::migrateItemTableIfNeeded):
        (WebCore::StorageAreaSync::performImport):
        (WebCore::StorageAreaSync::markImported):
        (WebCore::StorageAreaSync::blockUntilImportComplete):
        (WebCore::StorageAreaSync::sync):
        (WebCore::StorageAreaSync::performSync):
        (WebCore::StorageAreaSync::deleteEmptyDatabase):
        (WebCore::StorageAreaSync::scheduleSync):
        * Storage/StorageAreaSync.h: Renamed from Source/WebCore/storage/StorageAreaSync.h.
        * Storage/StorageNamespaceImpl.cpp: Renamed from Source/WebCore/storage/StorageNamespaceImpl.cpp.
        (WebCore::localStorageNamespaceMap):
        (WebCore::StorageNamespaceImpl::createSessionStorageNamespace):
        (WebCore::StorageNamespaceImpl::getOrCreateLocalStorageNamespace):
        (WebCore::StorageNamespaceImpl::StorageNamespaceImpl):
        (WebCore::StorageNamespaceImpl::~StorageNamespaceImpl):
        (WebCore::StorageNamespaceImpl::copy):
        (WebCore::StorageNamespaceImpl::storageArea):
        (WebCore::StorageNamespaceImpl::close):
        (WebCore::StorageNamespaceImpl::clearOriginForDeletion):
        (WebCore::StorageNamespaceImpl::clearAllOriginsForDeletion):
        (WebCore::StorageNamespaceImpl::sync):
        (WebCore::StorageNamespaceImpl::closeIdleLocalStorageDatabases):
        * Storage/StorageNamespaceImpl.h: Renamed from Source/WebCore/storage/StorageNamespaceImpl.h.
        * Storage/StorageSyncManager.cpp: Renamed from Source/WebCore/storage/StorageSyncManager.cpp.
        (WebCore::StorageSyncManager::create):
        (WebCore::StorageSyncManager::StorageSyncManager):
        (WebCore::StorageSyncManager::~StorageSyncManager):
        (WebCore::StorageSyncManager::fullDatabaseFilename):
        (WebCore::StorageSyncManager::dispatch):
        (WebCore::StorageSyncManager::close):
        * Storage/StorageSyncManager.h: Renamed from Source/WebCore/storage/StorageSyncManager.h.
        * Storage/StorageThread.cpp: Renamed from Source/WebCore/storage/StorageThread.cpp.
        (WebCore::activeStorageThreads):
        (WebCore::StorageThread::StorageThread):
        (WebCore::StorageThread::~StorageThread):
        (WebCore::StorageThread::start):
        (WebCore::StorageThread::threadEntryPointCallback):
        (WebCore::StorageThread::threadEntryPoint):
        (WebCore::StorageThread::dispatch):
        (WebCore::StorageThread::terminate):
        (WebCore::StorageThread::performTerminate):
        (WebCore::StorageThread::releaseFastMallocFreeMemoryInAllThreads):
        * Storage/StorageThread.h: Renamed from Source/WebCore/storage/StorageThread.h.
        * Storage/StorageTracker.cpp: Renamed from Source/WebCore/storage/StorageTracker.cpp.
        (WebCore::StorageTracker::initializeTracker):
        (WebCore::StorageTracker::internalInitialize):
        (WebCore::StorageTracker::tracker):
        (WebCore::StorageTracker::StorageTracker):
        (WebCore::StorageTracker::setDatabaseDirectoryPath):
        (WebCore::StorageTracker::databaseDirectoryPath):
        (WebCore::StorageTracker::trackerDatabasePath):
        (WebCore::ensureDatabaseFileExists):
        (WebCore::StorageTracker::openTrackerDatabase):
        (WebCore::StorageTracker::importOriginIdentifiers):
        (WebCore::StorageTracker::finishedImportingOriginIdentifiers):
        (WebCore::StorageTracker::syncImportOriginIdentifiers):
        (WebCore::StorageTracker::syncFileSystemAndTrackerDatabase):
        (WebCore::StorageTracker::setOriginDetails):
        (WebCore::StorageTracker::syncSetOriginDetails):
        (WebCore::StorageTracker::origins):
        (WebCore::StorageTracker::deleteAllOrigins):
        (WebCore::truncateDatabaseFile):
        (WebCore::StorageTracker::syncDeleteAllOrigins):
        (WebCore::StorageTracker::deleteOriginWithIdentifier):
        (WebCore::StorageTracker::deleteOrigin):
        (WebCore::StorageTracker::syncDeleteOrigin):
        (WebCore::StorageTracker::willDeleteAllOrigins):
        (WebCore::StorageTracker::willDeleteOrigin):
        (WebCore::StorageTracker::canDeleteOrigin):
        (WebCore::StorageTracker::cancelDeletingOrigin):
        (WebCore::StorageTracker::isActive):
        (WebCore::StorageTracker::setIsActive):
        (WebCore::StorageTracker::databasePathForOrigin):
        (WebCore::StorageTracker::diskUsageForOrigin):
        * Storage/StorageTracker.h: Renamed from Source/WebCore/storage/StorageTracker.h.
        (WebCore::StorageTracker::storageDatabaseIdleInterval):
        (WebCore::StorageTracker::setStorageDatabaseIdleInterval):
        * Storage/StorageTrackerClient.h: Renamed from Source/WebCore/storage/StorageTrackerClient.h.
        (WebCore::StorageTrackerClient::~StorageTrackerClient):
        * Storage/WebStorageNamespaceProvider.cpp:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:
        * WebKit.xcodeproj/project.pbxproj:

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

        [Win] Build fix after r177668.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add missing export definition
        for new symbols.

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

        [Win] Build fix after r177588.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Fix
        symbol declaration.

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

        [Win64] Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Fixed some 64-bit linker symbols.

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

        [Win] Unreviewed build correction after r177513.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Correct for new
        method signature.

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

        [Win] Correct Windows tests after Bug 139149.
        https://bugs.webkit.org/show_bug.cgi?id=139781

        Reviewed by Anders Carlsson.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj: Add new interface.
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters: Ditto.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Add new application cache object.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters: Ditto.

2014-12-18  Andreas Kling  <akling@apple.com>

        Attempt to fix Windows build after Range::create() changes.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Win] Correct DebugSuffix builds under MSBuild
        https://bugs.webkit.org/show_bug.cgi?id=139733
        <rdar://problem/19276880>

        Reviewed by Simon Fraser.

        * WebKit.vcxproj/WebKit.proj: Make sure to use the '_debug' suffix
        when building the DebugSuffix target.

2014-12-17  peavo@outlook.com  <peavo@outlook.com>

        [Win] Link errors.
        https://bugs.webkit.org/show_bug.cgi?id=139729

        Reviewed by Anders Carlsson.

        The list of exported symbols needs to be updated.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Windows] Unreviewed 64bit build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-12-12  Anders Carlsson  <andersca@apple.com>

        Handle null local storage database URLs
        https://bugs.webkit.org/show_bug.cgi?id=139594
        <rdar://problem/19236505>

        Reviewed by Beth Dakin.

        * Storage/WebStorageNamespaceProvider.cpp:
        (WebStorageNamespaceProvider::WebStorageNamespaceProvider):

2014-12-11  Anders Carlsson  <andersca@apple.com>

        Build fix.

        * Storage/WebStorageNamespaceProvider.h:

2014-12-11  Anders Carlsson  <andersca@apple.com>

        Replicate a bunch of PageGroup functions in WebStorageNamespaceProvider
        https://bugs.webkit.org/show_bug.cgi?id=139544

        Reviewed by Antti Koivisto.

        This code is currently unused but will be called by StorageTracker once that class has been
        moved from WebCore to WebKit.

        * Storage/WebStorageNamespaceProvider.cpp:
        (WebStorageNamespaceProvider::clearLocalStorageForAllOrigins):
        (WebStorageNamespaceProvider::clearLocalStorageForOrigin):
        (WebStorageNamespaceProvider::closeIdleLocalStorageDatabases):
        (WebStorageNamespaceProvider::syncLocalStorage):
        * Storage/WebStorageNamespaceProvider.h:

2014-12-10  Beth Dakin  <bdakin@apple.com>

        WK1: Add initial support for immediate actions
        https://bugs.webkit.org/show_bug.cgi?id=139522

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:

2014-12-10  Anders Carlsson  <andersca@apple.com>

        Add session storage handling to StorageNamespaceProvider
        https://bugs.webkit.org/show_bug.cgi?id=139507

        Reviewed by Tim Horton.

        * Storage/WebStorageNamespaceProvider.cpp:
        (WebStorageNamespaceProvider::createSessionStorageNamespace):
        * Storage/WebStorageNamespaceProvider.h:

2014-12-10  Anders Carlsson  <andersca@apple.com>

        Add WebStorageNamespaceProvider::closeLocalStorage
        https://bugs.webkit.org/show_bug.cgi?id=139502

        Reviewed by Tim Horton.

        * Storage/WebStorageNamespaceProvider.cpp:
        (storageNamespaceProviders):
        (WebStorageNamespaceProvider::WebStorageNamespaceProvider):
        (WebStorageNamespaceProvider::~WebStorageNamespaceProvider):
        Keep track of all live storage namespace providers.
        
        (WebStorageNamespaceProvider::closeLocalStorage):
        Loop through all storage namespace providers and call close() on their local storage namespaces.

        * Storage/WebStorageNamespaceProvider.h:

2014-12-09  Commit Queue  <commit-queue@webkit.org>

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

        broke ~50 API tests (Requested by thorton on #webkit).

        Reverted changeset:

        "Use the new storage namespace provider in WebKit1"
        https://bugs.webkit.org/show_bug.cgi?id=139425
        http://trac.webkit.org/changeset/177037

2014-12-08  Anders Carlsson  <andersca@apple.com>

        WebStorageNamespaceProvider should create StorageNamespaceImpls
        https://bugs.webkit.org/show_bug.cgi?id=139419

        Reviewed by Andreas Kling.

        * Storage/WebStorageNamespaceProvider.cpp:
        (WebStorageNamespaceProvider::createLocalStorageNamespace):
        (WebStorageNamespaceProvider::createTransientLocalStorageNamespace):
        Create StorageNamespaceImpls.

        (WebStorageNamespaceProvider::createSessionStorageNamespace): Deleted.
        Delete this for now.

        * Storage/WebStorageNamespaceProvider.h:

2014-12-08  Anders Carlsson  <andersca@apple.com>

        WebStorageNamespaceProvider should know about its local storage database path
        https://bugs.webkit.org/show_bug.cgi?id=139413

        Reviewed by Andreas Kling.

        * Storage/WebStorageNamespaceProvider.cpp:
        (WebStorageNamespaceProvider::create):
        (WebStorageNamespaceProvider::WebStorageNamespaceProvider):
        * Storage/WebStorageNamespaceProvider.h:

2014-12-06  Anders Carlsson  <andersca@apple.com>

        Add a stubbed out version of WebStorageNamespaceProvider
        https://bugs.webkit.org/show_bug.cgi?id=139213

        Reviewed by Sam Weinig.

        * Storage/WebStorageNamespaceProvider.cpp: Added.
        * Storage/WebStorageNamespaceProvider.h: Added.

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

2014-12-05  Roger Fong  <roger_fong@apple.com>

        [Win] proj files copying over too many resources..
        https://bugs.webkit.org/show_bug.cgi?id=139315.
        <rdar://problem/19148278>

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.proj: Only copy resource folders and WebKit.dll.

2014-12-02  Sam Weinig  <sam@webkit.org>

        Remove empty directories

        Reviewed by Anders Carlsson.

        * Source: Removed.
        * Source/WebKit: Removed.
        * Source/WebKit/mac: Removed.
        * Source/WebKit/mac/Resources: Removed.

2014-12-02  Tim Horton  <timothy_horton@apple.com>

        Implement Lookup transition from selection for Legacy WebKit
        https://bugs.webkit.org/show_bug.cgi?id=139180
        <rdar://problem/19067172>

        Reviewed by Beth Dakin.

        * WebKit.xcodeproj/project.pbxproj:
        Add mac/WebView/DictionaryPopupInfo.h.

2014-12-01  Anders Carlsson  <andersca@apple.com>

        Remove IWebCookieManager on Windows
        https://bugs.webkit.org/show_bug.cgi?id=139144

        Reviewed by Sam Weinig.

        Remove files.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:

2014-11-27  Anders Carlsson  <andersca@apple.com>

        Add a stubbed out WebVisitedLinkStore class on Windows
        https://bugs.webkit.org/show_bug.cgi?id=139078

        Reviewed by Sam Weinig.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj:

2014-11-27  Anders Carlsson  <andersca@apple.com>

        Add a stubbed out WebVisitedLinkStore to WebViewGroup
        https://bugs.webkit.org/show_bug.cgi?id=139066

        Reviewed by Antti Koivisto.

        * WebKit.xcodeproj/project.pbxproj:

2014-11-21  Anders Carlsson  <andersca@apple.com>

        Add a new symbol.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-11-21  Anders Carlsson  <andersca@apple.com>

        Remove a symbol that's gone.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-11-11  Chris Dumez  <cdumez@apple.com>

        Mark more virtual functions in HTMLInputElement as final
        https://bugs.webkit.org/show_bug.cgi?id=138644

        Reviewed by Andreas Kling.

        Export an additional symbol to fix Windows build.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-11-08  Darin Adler  <darin@apple.com>

        Replace FileThread class with a single function
        https://bugs.webkit.org/show_bug.cgi?id=138282

        Reviewed by Alexey Proskuryakov.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Removed exports of obsolete threading functions.

2014-11-05  Dan Bernstein  <mitz@apple.com>

        Removed references to deletion UI resources that have been removed.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:

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

        [Win] Unreviewed 64-bit Build Fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Correct symbol
        export declarations.

2014-10-30  Chris Dumez  <cdumez@apple.com>

        Unreviewed Windows build fix after r175391.

        Export a couple of symbols.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-10-30  Ada Chan  <adachan@apple.com>

        Attempt to fix the Windows build after r175384.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-10-24  Alexey Proskuryakov  <ap@apple.com>

        All plug-in tests fail on Yosemite WK1
        https://bugs.webkit.org/show_bug.cgi?id=138040

        Reviewed by Dan Bernstein.

        Fix a symlink for WebKitPluginHost.app. There is also a broken symlink for WebKitPluginAgent,
        which I don't know what to do about, but that seems harmless.

        * WebKit.xcodeproj/project.pbxproj:

2014-10-19  Chris Dumez  <cdumez@apple.com>

        Kill toRenderedDocumentMarker() by using tighter typing
        https://bugs.webkit.org/show_bug.cgi?id=137858

        Reviewed by Darin Adler.

        Update symbol export for Windows due to argument type change.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [WinCairo] Accelerated compositing is not implemented.
        https://bugs.webkit.org/show_bug.cgi?id=137345

        Reviewed by Brent Fulgham.

        This patch is based on GTK, and the texture mapper graphics layer type.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Added new accelerated compositing source files.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters: Ditto.

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

        Implement selection services menu for Legacy WebKit
        https://bugs.webkit.org/show_bug.cgi?id=137582
        <rdar://problem/18604241>

        Reviewed by Brady Eidson.

        * WebKit.xcodeproj/project.pbxproj:

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

        [Win] Unreviewed gardening. Ignore Visual Studio *.sdf files.

        * WebKit.vcxproj: Modified property svn:ignore.

2014-10-10  Daniel Bates  <dabates@apple.com>

        Remove unused classes WebRender{Node, Layer}
        https://bugs.webkit.org/show_bug.cgi?id=137628

        Reviewed by Simon Fraser.

        We no longer make use of the WebKit1-specific classes WebRenderNode and WebRenderLayer.
        For completeness, there is a WebKit2 analogue of WebRenderLayer by the same name.

        * WebKit.xcodeproj/project.pbxproj:

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

        [Win] Unreviewed 64-bit build fix after r174315.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Update exports for
        64-bit symbol names.

2014-10-04  Timothy Horton  <timothy_horton@apple.com>

        Try to fix the Windows build after r174315.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-10-04  Timothy Horton  <timothy_horton@apple.com>

        Try to fix the Windows build after r174315.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-09-28  Myles C. Maxfield  <mmaxfield@apple.com>

        Replace wkGetGlyphsForCharacters() with CGFontGetGlyphsForUnichars()
        https://bugs.webkit.org/show_bug.cgi?id=137197

        Reviewed by Alexey Proskuryakov.

        No new tests because there is no behavior change.

        * mac/WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):
        * WebKit.order:

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

        [Win] 64-bit build fix after r173929.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-09-25  Csaba Osztrogonác  <ossy@webkit.org>

        Remove WinCE port from trunk
        https://bugs.webkit.org/show_bug.cgi?id=136951

        Reviewed by Alex Christensen.

        * PlatformWinCE.cmake: Removed.
        * wince/WebCoreSupport/ChromeClientWinCE.cpp: Removed.
        * wince/WebCoreSupport/ChromeClientWinCE.h: Removed.
        * wince/WebCoreSupport/ContextMenuClientWinCE.cpp: Removed.
        * wince/WebCoreSupport/ContextMenuClientWinCE.h: Removed.
        * wince/WebCoreSupport/DragClientWinCE.cpp: Removed.
        * wince/WebCoreSupport/DragClientWinCE.h: Removed.
        * wince/WebCoreSupport/EditorClientWinCE.cpp: Removed.
        * wince/WebCoreSupport/EditorClientWinCE.h: Removed.
        * wince/WebCoreSupport/FrameLoaderClientWinCE.cpp: Removed.
        * wince/WebCoreSupport/FrameLoaderClientWinCE.h: Removed.
        * wince/WebCoreSupport/FrameNetworkingContextWinCE.cpp: Removed.
        * wince/WebCoreSupport/FrameNetworkingContextWinCE.h: Removed.
        * wince/WebCoreSupport/InspectorClientWinCE.cpp: Removed.
        * wince/WebCoreSupport/InspectorClientWinCE.h: Removed.
        * wince/WebCoreSupport/PlatformStrategiesWinCE.cpp: Removed.
        * wince/WebCoreSupport/PlatformStrategiesWinCE.h: Removed.
        * wince/WebView.cpp: Removed.
        * wince/WebView.h: Removed.

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

        [Win] 64-bit Build fix after r173882.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add correct 64-bit mangled symbol name.

2014-09-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Should be able to attach a debugger to a JSContext before anything is executed
        https://bugs.webkit.org/show_bug.cgi?id=136893

        Reviewed by Timothy Hatcher.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Win] Correct 64-bit Windows export definitions after r173804.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Provide proper
        64-bit mangled symbol names.

2014-09-21  Chris Dumez  <cdumez@apple.com>

        Generate Element casting helper functions
        https://bugs.webkit.org/show_bug.cgi?id=136839

        Reviewed by Darin Adler.

        Update some of the exported symbols on Windows for functions that were
        renamed.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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.

        * WebKit.vcxproj/WebKit/WebKitDebugWinCairo.props: Import GStreamer property file.
        * WebKit.vcxproj/WebKit/WebKitReleaseWinCairo.props: Ditto.

2014-09-06  Darin Adler  <darin@apple.com>

        Make updates suggested by new version of Xcode
        https://bugs.webkit.org/show_bug.cgi?id=136603

        Reviewed by Mark Rowe.

        * WebKit.xcodeproj/project.pbxproj: Updated LastUpgradeCheck.

2014-09-04  Pratik Solanki  <psolanki@apple.com>

        Remove iOS specific disk image cache
        https://bugs.webkit.org/show_bug.cgi?id=136517

        Reviewed by Antti Koivisto.

        Disk image cache code unnecessarily complicates SharedBuffer implementation. We can remove
        this now since we don't enable it in WebKit2 on iOS.

        * WebKit.xcodeproj/project.pbxproj:

2014-08-29  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviwed, remove empty directories.

        * efl: Removed.
        * efl/DefaultTheme: Removed.
        * efl/DefaultTheme/widget: Removed.
        * efl/WebCoreSupport: Removed.
        * efl/ewk: Removed.
        * efl/tests: Removed.
        * efl/tests/UnitTestUtils: Removed.
        * efl/tests/resources: Removed.
        * gtk: Removed.
        * gtk/WebCoreSupport: Removed.
        * gtk/docs: Removed.
        * gtk/gdom: Removed.
        * gtk/resources: Removed.
        * gtk/webkit: Removed.

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

        [Win] Adjust build order to reduce flakiness.

        * WebKit.vcxproj/WebKit.sln: Make sure WebCoreGenerated doesn't
          start until the last JSC tool has finished building.

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

        [Win] Unreviewed Build 'fix' after r173018.

        The new launcher applications were not getting build when driven
        by WebKit.sln. This adds the missing project links and dependencies.

        * WebKit.vcxproj/WebKit.sln: Update to include jscLauncher,
        testapiLauncher, and testRegExpLauncher.

2014-08-26  Andy Estes  <aestes@apple.com>

        [Cocoa] Some projects are incorrectly installed to $BUILT_PRODUCTS_DIR
        https://bugs.webkit.org/show_bug.cgi?id=136267

        Reviewed by Dan Bernstein.

        INSTALL_PATH was set to $BUILT_PRODUCTS_DIR for engineering configurations in r20225 as part of a build fix.
        Not only is this no longer necessary to build, but it causes built products to be incorrectly installed in
        engineering configurations.

        Remove the setting of INSTALL_PATH from the pbxproj file so that the value specified in the xcconfig files is
        used instead.

        * WebKit.xcodeproj/project.pbxproj:

2014-08-20  Benjamin Poulain  <bpoulain@apple.com>

        Remove HTMLInputElement's suggestedValue
        https://bugs.webkit.org/show_bug.cgi?id=136094

        Reviewed by Darin Adler.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-08-20  Mark Rowe  <mrowe@apple.com>

        <https://webkit.org/b/136119> WebKit1 plug-in test failures in production builds after r172595

        Reviewed by Alexey Proskuryakov.

        * WebKit.xcodeproj/project.pbxproj: Add the symlinks at the top level of WebKitLegacy.framework
        even in Production builds. Add the symlinks in the right locations too.

2014-08-15  Andy Estes  <aestes@apple.com>

        [Cocoa] Add migrate-headers.sh and postprocess-headers.sh to WebKit.xcodeproj
        https://bugs.webkit.org/show_bug.cgi?id=135984

        Reviewed by Daniel Bates.

        It's nice to be able to look at these files in Xcode.

        * WebKit.xcodeproj/project.pbxproj:

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

        <https://webkit.org/b/135979> WebKit1 Plug-in test failures in clean builds after r172595

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj: Add a WebKitPluginHost.app symlink at the top level of
        WebKitLegacy.framework that points into Versions/Current. This enables -[NSBundle pathForAuxiliaryExecutable:]
        to work correctly. Adding this symlink requires deleting any content that may already exist
        at that path, since prior to r172595 it may have contained either a symlink or an
        application bundle.

2014-08-13  Mark Rowe  <mrowe@apple.com>

        <https://webkit.org/b/135909> Move helper applications out of the root of the framework.

        As described in <https://developer.apple.com/library/mac/technotes/tn2206/>, for bundles containing
        a Versions directory there may be no other content at the top level of the bundle other than symlinks.
        Upcoming changes to code signing will prevent bundles that violate this rule from being signed.

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj: Add the symlink to WebKitPluginHost.app in the Versions/A
        directory of the framework rather than at the top level.

2014-08-14  Alex Christensen  <achristensen@webkit.org>

        Unreviewed.  Removing empty directories.

        * qt: Removed.
        * qt/declarative: Removed.
        * qt/docs: Removed.
        * qt/docs/webkitsnippets: Removed.
        * qt/examples: Removed.
        * qt/tests: Removed.
        * qt/tests/MIMESniffing: Removed.
        * qt/tests/benchmarks: Removed.
        * qt/tests/qgraphicswebview: Removed.
        * qt/tests/qwebelement: Removed.
        * qt/tests/qwebframe: Removed.
        * qt/tests/qwebhistory: Removed.
        * qt/tests/qwebpage: Removed.
        * qt/tests/qwebsecurityorigin: Removed.
        * qt/tests/qwebview: Removed.

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

        [Win] Unreviewed build fix after r172504

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add missing
        symbol exports.

2014-08-11  Andy Estes  <aestes@apple.com>

        [iOS] Get rid of iOS.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=135809

        Reviewed by Joseph Pecoraro.

        All iOS.xcconfig did was include AspenFamily.xcconfig, so there's no need for the indirection.

        * WebKit.xcodeproj/project.pbxproj:

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

        [Win] Unreviewed gardening.

        * WebKit.vcxproj/WebKit/WebKitCommon.props: Add $(DebugSuffix) to libraries so
        that the DebugSuffix target works properly.

2014-08-07  Timothy Hatcher  <timothy@apple.com>

        Web Inspector: Update glyphs to be more like Xcode 6
        https://bugs.webkit.org/show_bug.cgi?id=135705

        Reviewed by Joseph Pecoraro.

        * WebKit.xcodeproj/project.pbxproj: Added new images.

2014-07-31  Andreas Kling  <akling@apple.com>

        Speculative Windows build fixery, part II.

        This seems to indicate that adding the globalObjectTable to the exports file
        was the wrong idea:

        1>WebKit.exp : error LNK2001: unresolved external symbol "struct JSC::HashTable const JSC::globalObjectTable" (?globalObjectTable@JSC@@3UHashTable@1@B)

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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.

        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd: Use the new
        version-stamp.pl script to version JavaScriptCore.dll.

2014-07-17  David Kilzer  <ddkilzer@apple.com>

        SECTORDER_FLAGS should be defined in target's xcconfig file, not Base.xcconfig
        <http://webkit.org/b/135006>

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj: Remove references to unused
        WebKit.xcconfig file.

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.

        * WebKit.vcxproj/Interfaces/FixMIDLHeaders.pl:
        * WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd:
        * WebKit.vcxproj/WebKit/WebKitPreBuild.cmd:
        * WebKit.vcxproj/WebKit/WebKitVersion.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorBuildCmd.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDPreBuild.cmd:

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

        [Win] Remove use of 'grep' in build steps
        https://bugs.webkit.org/show_bug.cgi?id=134770
        <rdar://problem/17608783>

        Reviewed by Tim Horton.

        Replace uses of the grep command in Windows builds with the equivalent
        Perl program.

        * WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd:
        * WebKit.vcxproj/WebKit/WebKitPreBuild.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDPreBuild.cmd:

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.

        Modify build commands to use new Perl version of the
        auto-version script.

        * WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd:
        * WebKit.vcxproj/WebKit/WebKitPreBuild.cmd:

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.

        * mac/Configurations/FeatureDefines.xcconfig: Moved compile flag to alphabetical order.

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

        [Win64] Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Corrected 64-bit linker symbols.

2014-06-27  Brent Fulgham  <bfulgham@apple.com>

        [Win] Implement parts of the AVFOUNDATION_LOADER_DELEGATE logic for Windows
        https://bugs.webkit.org/show_bug.cgi?id=134418

        Reviewed by Eric Carlson.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add new
        export.

2014-06-26  Brady Eidson  <beidson@apple.com>

        Remove use of PlatformStrategies for Gamepad API.
        https://bugs.webkit.org/show_bug.cgi?id=134348

        Reviewed by Dean Jackson.

        * WebKit.xcodeproj/project.pbxproj:

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

        [Win] Expose Cache Information to WinLauncher
        https://bugs.webkit.org/show_bug.cgi?id=134318

        Reviewed by Dean Jackson.

        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd: Copy the
        CFDictionaryPropertyBag header to WebKit API directory.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Expose the dictionary accessor for the CFDictionaryPropertyBag.

2014-06-25  Brady Eidson  <beidson@apple.com>

        Add HID-based gamepad implementation for Mac
        https://bugs.webkit.org/show_bug.cgi?id=134324

        Reviewed by Dean Jackson.

        * WebKit.xcodeproj/project.pbxproj:

2014-06-23  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Remove the WebKit1 EFL code
        https://bugs.webkit.org/show_bug.cgi?id=134096

        Reviewed by Gyuyoung Kim.

        * PlatformEfl.cmake: Removed.
        * efl: Removed entire efl directory.

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

        Add FTL to Windows build.
        https://bugs.webkit.org/show_bug.cgi?id=134015

        Reviewed by Filip Pizlo.

        * WebKit.vcxproj/WebKit.sln:
        Added libllvmForJSC with a dependency on JavaScriptCoreGenerated, but don't build it yet.

2014-06-11  Alex Christensen  <achristensen@webkit.org>

        [Win] Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Fixed 64-bit linker symbol.

2014-06-04  Alex Christensen  <achristensen@webkit.org>

        Enable WebGL on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=133503

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.sln:
        Build ANGLE projects and add them as a dependency for linking WebKit.dll.
        * WebKit.vcxproj/WebKit/WebKitCommon.props:
        Link to ANGLE libraries to get EGL, GLESv2, and GLSL translator symbols.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Added 64-bit linker symbol.

2014-05-28  Jon Honeycutt  <jhoneycutt@apple.com>

        Roll r168668 back in.

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

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-05-27  Csaba Osztrogonác  <ossy@webkit.org>

        Speculative Windows buildfix after r169358.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-05-22  Antti Koivisto  <antti@apple.com>

        Try to fix windows build.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-05-21  Alex Christensen  <achristensen@webkit.org>

        [Win64] Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Corrected 64-bit linker symbol.

2014-05-13  Jon Honeycutt  <jhoneycutt@apple.com>

        Revert "Don't dispatch 'beforeload' event inside FrameView::layout()",
        commit 84fe8cf6fbe8b5de9a06300ca3ef6d0ffc96948c, and associated
        follow-up fixes:

            "platform/mac/plugins/testplugin-onnew-onpaint.html failing after
                r168668", commit c17be3bf5127baf94310af4b4b9bf5a57d29aaf4
            "[Win] Unreviewed build fix after r168668.", commit
                4fa470ad12c38ee7d4c114541b6dd321181a8bc9

        The original merged patch appears to have caused a regression in
        fast/dom/HTMLObjectElement/object-as-frame.html.

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

        Reviewed by Alexey Proskuryakov.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Step 2 (of 2) fixing the Windows build. Add new setPageScaleFactor.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Step 1 of fixing the windows build. Remove setPageScaleFactor.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Win] Unreviewed build fix after r168668.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add
        missing export symbols.

2014-05-12  Anders Carlsson  <andersca@apple.com>

        Don't make a Frameworks symlink inside WebKitLegacy.framework
        https://bugs.webkit.org/show_bug.cgi?id=132842
        <rdar://problem/16886939>

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:

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

        Rename WebKit2.framework to WebKit.framework
        https://bugs.webkit.org/show_bug.cgi?id=132743
        <rdar://problem/15920046>

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:
        Remove the WebKit framework, it lives inside WebKit2 now.

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

        [Win] Unreviewed 64-bit build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add
        correct 64-bit symbol definitions.

2014-05-07  Oliver Hunt  <oliver@apple.com>

        Fix windows build.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-05-06  Anders Carlsson  <andersca@apple.com>

        Put the symlink in the right place.

        * WebKit.xcodeproj/project.pbxproj:

2014-05-06  Anders Carlsson  <andersca@apple.com>

        Put WebKitPluginHost.app in WebKitLegacy.framework
        https://bugs.webkit.org/show_bug.cgi?id=132592
        <rdar://problem/15920046>

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:

2014-05-05  Andreas Kling  <akling@apple.com>

        Unreviewed, rolling out r168334.

        Broke builds.

        Reverted changeset:

        "Put WebKitPluginHost.app in WebKitLegacy.framework"
        https://bugs.webkit.org/show_bug.cgi?id=132592
        http://trac.webkit.org/changeset/168334

2014-05-05  Anders Carlsson  <andersca@apple.com>

        Put WebKitPluginHost.app in WebKitLegacy.framework
        https://bugs.webkit.org/show_bug.cgi?id=132592
        <rdar://problem/15920046>

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:

2014-05-02  Anders Carlsson  <andersca@apple.com>

        Remove unsuccessful build fix attempts
        https://bugs.webkit.org/show_bug.cgi?id=132476

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:

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

        Support OS-version-specific install paths for WebKit.framework
        https://bugs.webkit.org/show_bug.cgi?id=132448
        <rdar://problem/16784932>

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:
        Add a build step to put a symlink in place from PrivateFrameworks to Frameworks.

2014-05-01  Dan Bernstein  <mitz@apple.com>

        <rdar://problem/16780403> REGRESSION: Plugin tests failing on Mac/WebKit1.

        * WebKit.xcodeproj/project.pbxproj: Keep the WebKitPluginHost.app symlink in
        WebKit.framework for now.

2014-04-30  Eric Carlson  <eric.carlson@apple.com>

        [iOS] do not pause video when entering background while playing to external device
        https://bugs.webkit.org/show_bug.cgi?id=132374

        Reviewed by Jer Noble.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Try yet again to fix the build.

        * WebKit.xcodeproj/project.pbxproj:

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

        Another build fix attempt.

        * WebKit.xcodeproj/project.pbxproj:

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

        Try to fix the iOS build.

        * WebKit.xcodeproj/project.pbxproj:

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

        Another build fix attempt.

        * WebKit.xcodeproj/project.pbxproj:
        Remove headers if it seems like the WKWebViewPrivate header imports itself.
        
2014-04-30  Anders Carlsson  <andersca@apple.com>

        Another build fix.

        * WebKit.xcodeproj/project.pbxproj:
        Remove WK headers from WebKit.framework as well when WebKitLegacy WK headers are encountered.

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

        Try to fix the build.

        * WebKit.xcodeproj/project.pbxproj:
        Remove old WK forwarding headers from WebKitLegacy.

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

        Move the legacy WebKit API into WebKitLegacy.framework and move it inside WebKit.framework
        https://bugs.webkit.org/show_bug.cgi?id=132399
        <rdar://problem/15920046>

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:
        Add a new build target that builds the legacy WebKit API in WebKitLegacy.framework. This framework
        is then re-exported by WebKit.framework, and its headers are copied to WebKit.framework. All the WebKitLegacy
        headers are made private, and the MigrateHeadersFromWebKitLegacy.make Makefile will copy all the headers specified
        in WEBKIT_PUBLIC_HEADERS to WebKit/Headers.

2014-04-29  Alex Christensen  <achristensen@webkit.org>

        [WinCairo] Switch video from GStreamer to Media Foundation.
        https://bugs.webkit.org/show_bug.cgi?id=132358

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        Removed dependencies on GStreamer.

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

        [Win] Support Python 2.7 in Cygwin
        https://bugs.webkit.org/show_bug.cgi?id=132023

        Reviewed by Michael Saboff.

        * WebKit.vcxproj/WebKit/WebKitVersion.cmd: Use correct
        path to Python under Cygwin.

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

        Blind Windows build fix. Hope I guessed the 64-bit mangled form right.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-04-18  Philippe Normand  <pnormand@igalia.com>

        Remove NETWORK_INFO support
        https://bugs.webkit.org/show_bug.cgi?id=131841

        Reviewed by Gyuyoung Kim.

        * PlatformEfl.cmake:

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

        [Win] Unreviewed 64-bit build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Do not
        export 32-bit symbol in 64-bit build. 

2014-04-17  Hyowon Kim  <hw1008.kim@samsung.com>

        [EFL] Remove deprecated ewk_paint code.
        https://bugs.webkit.org/show_bug.cgi?id=131266

        Reviewed by Gyuyoung Kim.

        ewk_paint related code was deprecated since r166637.

        * PlatformEfl.cmake: Remove ewk_paint_context.cpp

2014-04-16  Simon Fraser  <simon.fraser@apple.com>

        Make Windows fail with a link error so I know what the new symbol is.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-04-10  Michael Saboff  <msaboff@apple.com>

        LLInt interpreter code should be generated as part of one function
        https://bugs.webkit.org/show_bug.cgi?id=131205

        Reviewed by Mark Lam.

        Updated VS dependencies for JavaScriptCore changes.

        * WebKit.vcxproj/WebKit.sln:

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

        [Win] Unreviewed 64-bit Build Fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Provide
        proper mangled names for 64-bit build.

2014-04-08  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove the WebKitGTK+ WebKit 1 code
        https://bugs.webkit.org/show_bug.cgi?id=131399

        Reviewed by Anders Carlsson.

        * PlatformGTK.cmake: Removed.
        * gtk: Remove this entire directory.

2014-04-06  Darin Adler  <darin@apple.com>

        Make some bindings improvements, with smaller code size for error message generation
        https://bugs.webkit.org/show_bug.cgi?id=131285

        Reviewed by Andreas Kling.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Updated for
        changes in JavaScript binding functions.

2014-04-05  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: remove unused test hook setInspectorResourcesDataSizeLimits
        https://bugs.webkit.org/show_bug.cgi?id=131268

        Reviewed by Timothy Hatcher.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Remove symbols.

2014-04-05  Brian J. Burg  <burg@cs.washington.edu>

        Web Inspector: remove unused metrics and commands from the Timeline agent
        https://bugs.webkit.org/show_bug.cgi?id=131184

        Reviewed by Timothy Hatcher.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Remove symbols.

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

        Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add missing
        symbol export.

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

        Unreviewed build fix.

        * WebKit.vcxproj/WebKit.sln: Make sure we don't generate the
        WebInspectorUI before the generated JS is ready.

2014-04-02  Benjamin Poulain  <bpoulain@apple.com>

        [iOS] Remove the legacy string drawing code
        https://bugs.webkit.org/show_bug.cgi?id=131088

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj:

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

        [Win] Unreviewed build fix for full Debug rebuild.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Export JSC symbol needed by testing infrastructure.

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

        Subpixel rendering: Transition class Image (and its dependencies) from int to float to enable subpixel positioned/sized images.
        https://bugs.webkit.org/show_bug.cgi?id=130643

        Reviewed by Simon Fraser.

        This is in preparation to support subpixel positioned/sized background images. While 1x bitmap images can't take
        subpixel sizing on hidpi resolutions, both generated and hidpi images can.
        This patch does not change Image behavior in general as both position and size are still snapped to integral values.  

        No change in behavior.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-03-31  Andreas Kling  <akling@apple.com>

        Blind Windows build fix. Check my mangle-fu.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Unreviewed build/test correction.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Export the AXObjectCache::setEnhancedUserInterfaceEnabled
        set function.

2014-03-22  Darin Adler  <darin@apple.com>

        Remove String::deprecatedCharacters
        https://bugs.webkit.org/show_bug.cgi?id=126854

        Reviewed by Sam Weinig.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Removed getData16SlowCase.

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

        [Win] Compile fixes with video not enabled.
        https://bugs.webkit.org/show_bug.cgi?id=130597

        Reviewed by Darin Adler.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Only include MediaSessionManager symbols if video is enabled.

2014-03-21  Pratik Solanki  <psolanki@apple.com>

        Check for inappropriate macros in private headers
        https://bugs.webkit.org/show_bug.cgi?id=130564

        Reviewed by Filip Pizlo.

        Check PrivateHeaders for inappropriate macros as well so that we avoid build breakages like
        the one due to the original commit for bug 130142.

        * WebKit.xcodeproj/project.pbxproj:

2014-03-20  Thiago de Barros Lacerda  <thiago.lacerda@openbossa.org>

        [EFL][GTK] Get CMake to find Freetype2 properly
        https://bugs.webkit.org/show_bug.cgi?id=130150

        Reviewed by Martin Robinson.

        Newer versions of CMake are not able to find Freetype2 correctly.
        FindFreetype2.cmake checks for the version number in freetype.h header, since it seems that bug exists in
        freetype2 repo, because a completely different version number is found in freetype2.pc.

        * PlatformEfl.cmake:

2014-03-20  Beth Dakin  <bdakin@apple.com>

        Speculative build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Build fixes for Win64.
        https://bugs.webkit.org/show_bug.cgi?id=130481

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.sln:
        Don't build ANGLE projects for now, corrected build configurations,
        and build WebInspectorUI.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Added 64-bit linker symbol.

2014-03-20  Gavin Barraclough  <barraclough@apple.com>

        Merge AtomicString, Identifier
        https://bugs.webkit.org/show_bug.cgi?id=128624

        Reviewed by Geoff Garen.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
            - exports no longer needed.

2014-03-20  Commit Queue  <commit-queue@webkit.org>

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

        It broke the build (Requested by Ossy on #webkit).

        Reverted changeset:

        "[EFL][GTK] Get CMake to find Freetype2 properly"
        https://bugs.webkit.org/show_bug.cgi?id=130150
        http://trac.webkit.org/changeset/165962

2014-03-20  Thiago de Barros Lacerda  <thiago.lacerda@openbossa.org>

        [EFL][GTK] Get CMake to find Freetype2 properly
        https://bugs.webkit.org/show_bug.cgi?id=130150

        Reviewed by Csaba Osztrogonác.

        Newer versions of CMake are not able to find Freetype2 correctly.
        FindFreetype2.cmake checks for the version number in freetype.h header, since it seems that bug exists in
        freetype2 repo, because a completely different version number is found in freetype2.pc.

        * PlatformEfl.cmake:

2014-03-18  Samuel White  <samuel_white@apple.com>

        AX: Not able to use arrow keys to read text with VoiceOver before selection is set someplace (anyplace).
        https://bugs.webkit.org/show_bug.cgi?id=130250

        Reviewed by Chris Fleizach.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-03-17  Ryosuke Niwa  <rniwa@webkit.org>

        Revert the erroneous change made by Xcode.

        * WebKit.xcodeproj/project.pbxproj:

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

        Optimize hasTagName when called on an HTMLElement
        https://bugs.webkit.org/show_bug.cgi?id=130090

        Reviewed by Antti Koivisto.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Updated exports for QualifiedName -> HTMLQualifiedName change.

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.

        * scripts/generate-webkitversion.pl:
        (printLicenseHeader):

2014-03-14  Oliver Hunt  <oliver@apple.com>

        Improve dom error messages
        https://bugs.webkit.org/show_bug.cgi?id=130103

        Reviewed by Andreas Kling.

        Make windows build.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        <rdar://problem/16307346> Add new WebKitLegacy.framework.

        Reviewed by Dan Bernstein.

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

2014-03-12  Tim Horton  <timothy_horton@apple.com>

        Hook up image controls for WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=130062
        <rdar://problem/15964809>

        Reviewed by Brady Eidson.

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

2014-03-11  Jae Hyun Park  <jaepark@webkit.org>

        [GTK][CMake] Add HARFBUZZ_INCLUDE_DIRS to WebKit and WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=130070

        Reviewed by Martin Robinson.

        * PlatformGTK.cmake:

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

        [Win] Unreviewed build fix (64-bit).

        * WebKit.vcxproj/WebKit/WebKitCommon.props: Put uuid.lib as the last link library so that
        the MSIE DOM symbols don't conflict with WebKit's.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add missing 64-bit symbol definitions.

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.

        * WebKit.vcxproj/WebKit.make: Removed.
        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd: Use %PlatformArchitecture% rather than
        hard-coded 32-bit path.

2014-03-10  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Clean up library linking
        https://bugs.webkit.org/show_bug.cgi?id=129782

        Reviewed by Philippe Normand.

        * PlatformGTK.cmake: Use the new macro.

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

        [Win] Unreviewed build fix after r165310.

        * WebKit.vcxproj/WebKit/WebKitDirectX.props:
        Replaced Platform macro, which is either "Win32" or "x64"
        with PlatformShortName macro, which is either "x86" or "x64".
        This is correct for finding the DirectX libraries.

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

        [Win] Unreviewed gardening (for 64-bit)

        * WebKit.vcxproj/WebKit/WebKitDirectX.props: Use Platform macro, rather than
        hard-coded path. This allows it to work on 32-bit or 64-bit builds.

2014-03-07  Anders Carlsson  <andersca@apple.com>

        Make it possible to copy WebKit2 headers to WebKit.framework
        https://bugs.webkit.org/show_bug.cgi?id=129935

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj:
        Move the migrate headers script out into its own file.

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

        [Win] Convert WebKit.make to an MSBuild file.
        https://bugs.webkit.org/show_bug.cgi?id=129888

        Reviewed by Dean Jackson.

        * WebKit.vcxproj/WebKit.proj: Added.

2014-03-06  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed follow-up fix for Windows for r165199.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-03-05  Martin Hock  <mhock@apple.com>

        Add support for sessions to MemoryCache.
        https://bugs.webkit.org/show_bug.cgi?id=127794

        Reviewed by Sam Weinig.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-03-03  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Generate documentation for the DOM bindings
        https://bugs.webkit.org/show_bug.cgi?id=126211

        Reviewed by Carlos Garcia Campos.

        * PlatformGTK.cmake: The list of headers for GIR generation has a better name
        now.

2014-03-03  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r165013.
        http://trac.webkit.org/changeset/165013
        https://bugs.webkit.org/show_bug.cgi?id=129646

        New code is not thread safe, asserting on a worker test
        (Requested by ap on #webkit).

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-03-03  Martin Hock  <mhock@apple.com>

        Add support for sessions to MemoryCache.
        https://bugs.webkit.org/show_bug.cgi?id=127794

        Reviewed by Sam Weinig.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Blind Windows build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

            Tweak JSDOMWindowBase::commonVM() return type to be a reference.

2014-02-28  Dan Bernstein  <mitz@apple.com>

        [Mac] Remove MailQuirksUserScript.js
        https://bugs.webkit.org/show_bug.cgi?id=129536

        Reviewed by Andy Estes.

        * WebKit.xcodeproj/project.pbxproj: Removed reference to the file.

2014-02-26  Michael Saboff  <msaboff@apple.com>

        Auto generate bytecode information for bytecode parser and LLInt
        https://bugs.webkit.org/show_bug.cgi?id=129181

        Reviewed by Mark Lam.

        Added ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} to WebKit_INCLUDE_DIRECTORIES due to new
        generated Bytecodes.h include file.

        * CMakeLists.txt:

2014-02-26  Alex Christensen  <achristensen@webkit.org>

        [WinCairo] Fixed linking after disabling WebGL.

        * WebKit.vcxproj/WebKit/WebKitCFLite.props:
        Don't link to ANGLE libraries, which are no longer built.

2014-02-26  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove console.profiles from window.console API
        https://bugs.webkit.org/show_bug.cgi?id=116883

        Reviewed by Timothy Hatcher.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-02-24  Martin Robinson  <mrobinson@igalia.com>

        [GTK] generate-gtkdoc should not generate documentation for source files for unbuilt source files
        https://bugs.webkit.org/show_bug.cgi?id=128417

        Reviewed by Carlos Garcia Campos.

        * PlatformGTK.cmake: Correct the definition of WebKitGTK_ENUM_GENERATION_HEADERS and generate
        a gtkdoc-webkitgtk.cfg file to be used by generate-gtkdoc.

2014-02-24  Anders Carlsson  <andersca@apple.com>

        Add WebViewGroup
        https://bugs.webkit.org/show_bug.cgi?id=129280

        Reviewed by Dan Bernstein.

        Add new files.

        * WebKit.xcodeproj/project.pbxproj:

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

        [WinCairo] Disable ANGLE build on WinCairo port.

        * WebKit.vcxproj/WebKit.sln:

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

        Unreviewed build fix after r164505

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Update exports
        definition for TreeScope::getElementById.

2014-02-21  Eric Carlson  <eric.carlson@apple.com>

        Fix TimeRanges layering violations
        https://bugs.webkit.org/show_bug.cgi?id=128717

        Reviewed by Jer Noble.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: TimeRanges::create(void) for Internals.

2014-02-20  Enrique Ocaña González  <eocanha@igalia.com>

        WebKitGTK+ should stop using COMPILE_ASSERT_MATCHING_ENUM macros
        https://bugs.webkit.org/show_bug.cgi?id=127800

        Reviewed by Martin Robinson.

        * PlatformGTK.cmake: Removed AssertMatchingEnums.cpp

2014-02-18  Ryosuke Niwa  <rniwa@webkit.org>

        Changing selection shouldn't synchronously update editor UI components
        https://bugs.webkit.org/show_bug.cgi?id=129024

        Reviewed by Brent Fulgham.

        Added symbols for internals.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-02-17  Sergio Correia  <sergio.correia@openbossa.org>

        Replace uses of PassOwnPtr/OwnPtr with std::unique_ptr in WebCore/inspector
        https://bugs.webkit.org/show_bug.cgi?id=128681

        Reviewed by Timothy Hatcher.

        Another step towards getting rid of PassOwnPtr/OwnPtr, now targeting
        WebCore/inspector/*. Besides files in there, a few other files in
        JavaScriptCore/inspector, WebKit/, WebKit2/WebProcess/WebCoreSupport/
        and WebCore/testing were touched.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-02-15  Alexey Proskuryakov  <ap@apple.com>

        [Mac] Remove WebSerializedJSValue SPI
        https://bugs.webkit.org/show_bug.cgi?id=128720

        Reviewed by Anders Carlsson.

        * WebKit.xcodeproj/project.pbxproj: Removed WebSerializedJSValue files from the project.

2014-02-11  Alex Christensen  <achristensen@webkit.org>

        Fixed linking on Win64.
        https://bugs.webkit.org/show_bug.cgi?id=128211

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Corrected Win64 linker symbols.

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

        Stop relinking WebKit on every build.

        * WebKit.xcodeproj/project.pbxproj: Fix the case on an input file for the Generate Export Files
        script phase so it will run only when the inputs change rather than on every build.

2014-02-09  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Remove PageClientEfl
        https://bugs.webkit.org/show_bug.cgi?id=128508

        Reviewed by Andreas Kling.

        * PlatformEfl.cmake: Removed PageClientEfl.cpp

2014-02-06  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed Windows Build Fix after r163568.

        Remove old symbol export. It is now const. Waiting for bot to produce new symbol.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-02-05  Csaba Osztrogonác  <ossy@webkit.org>

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

        Reviewed by Sam Weinig.

        * PlatformEfl.cmake:

2014-02-04  Eric Carlson  <eric.carlson@apple.com>

        Refine MediaSession interruptions
        https://bugs.webkit.org/show_bug.cgi?id=128125

        Reviewed by Jer Noble.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Export applicationWillEnterForeground
            and applicationWillEnterBackground for Internals.

2014-02-04  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r163376.
        http://trac.webkit.org/changeset/163376
        https://bugs.webkit.org/show_bug.cgi?id=128184

        Unexpected test failures. (Requested by eric_carlson on
        #webkit).

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-02-04  Eric Carlson  <eric.carlson@apple.com>

        Refine MediaSession interruptions
        https://bugs.webkit.org/show_bug.cgi?id=128125

        Reviewed by Jer Noble.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Export applicationWillEnterForeground
            and applicationWillEnterBackground for Internals.

2014-01-31  Oliver Hunt  <oliver@apple.com>

        Rollout r163195 and related patches

        * CMakeLists.txt:

2014-01-29  Oliver Hunt  <oliver@apple.com>

        Make it possible to implement JS builtins in JS
        https://bugs.webkit.org/show_bug.cgi?id=127887

        Reviewed by Michael Saboff.

        CMake updates

        * CMakeLists.txt:

2014-01-30  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Add support for building against GTK+ 2
        https://bugs.webkit.org/show_bug.cgi?id=127959

        Reviewed by Anders Carlsson.

        * PlatformGTK.cmake: Use the new API version variable and don't use GTK3 directly.

2014-01-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r163052.
        http://trac.webkit.org/changeset/163052
        https://bugs.webkit.org/show_bug.cgi?id=127895

        It was the buildfix after the rolled out r163048 (Requested by
        Ossy on #webkit).

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-01-29  Dan Bernstein  <mitz@apple.com>

        Moved linking against common frameworks and a library from the .xcconfig file into the target.

        Reviewed by Tim Horton.

        * WebKit.xcodeproj/project.pbxproj:

2014-01-29  Sam Weinig  <sam@webkit.org>

        Fix windows.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-01-29  Ryuan Choi  <ryuan.choi@samsung.com>

        EFL port should stop using COMPILE_ASSERT_MATCHING_ENUM macros
        https://bugs.webkit.org/show_bug.cgi?id=127801

        Reviewed by Anders Carlsson.

        * PlatformEfl.cmake: Removed AssertMatchingEnums.cpp

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

        [Windows] Tests crashing on Windows after r162816.
        https://bugs.webkit.org/show_bug.cgi?id=127703.

        Reviewed by Alexey Proskuryakov.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Remove variable export in favor of function export.

2014-01-26  Chris Fleizach  <cfleizach@apple.com>

        AX: Disable accessibility after every test run
        https://bugs.webkit.org/show_bug.cgi?id=127439

        Reviewed by Alexey Proskuryakov.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-01-26  Anders Carlsson  <andersca@apple.com>

        Fix build.
        
        Make HistoryPropertyList an Objective-C++ class.

        * WebKit.xcodeproj/project.pbxproj:

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

        Unreviewed build fix for Win64.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Corrected 64-bit linker symbol.

2014-01-23  Simon Fraser  <simon.fraser@apple.com>

        Attempt to fix Windows DRT link issue.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-01-23  Simon Fraser  <simon.fraser@apple.com>

        Make visibleContentRect() return actualVisibleContentRect() on iOS most of the time
        https://bugs.webkit.org/show_bug.cgi?id=127456
        
        Reviewed by Antti Koivisto.
        
        On iOS, visibleContentRect() returns the entire document rect for historical
        reasons, and actualVisibleContentRect() returns what visibleContentRect()
        returns on other platforms.
        
        In addition, actualVisibleContentRect() was returning an empty rect in WK2.
        
        Reduce the confusion of #ifdefs by making visibleContentRect() behave like
        actualVisibleContentRect() by default on iOS. Where it needs the old behavior,
        an optional parameter, LegacyIOSDocumentVisibleRect, provides this.
        
        Achieve this by having the virtual ScrollableArea::visibleContentRectInternal(),
        which is called by non-virtual visibleContentRect() and visibleContentRectIncludingScrollbars().
        
        Similarly clean up visibleHeight/visibleWidth functions by having visibleSize() be virtual,
        with non-virtual visibleHeight() and visibleWidth().
        
        ScrollableArea subclasses override visibleContentRectInternal() and visibleSize() where necessary.
        
        Mechanically change all the call sites of actualVisibleContentRect() to
        use visibleContentRect(), and the call sites of visibleContentRect()
        to visibleContentRect(..., LegacyIOSDocumentVisibleRect), adding comments
        where this may not be appropriate.
        
        Change callers of visibleContentRect(IncludeScrollbars...) to visibleContentRectIncludingScrollbars().
        
        Also add actualScrollPosition(), and clean up some actualScroll* call sites.
        
        No behavior change.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Win] Update project and solution files for 64-bit builds
        https://bugs.webkit.org/show_bug.cgi?id=127457

        Reviewed by Eric Carlson.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj: Update for VS2013.
        * WebKit.vcxproj/WebKit.submit.sln: Add 64-bit target.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Update for VS2013
        * WebKit.vcxproj/WebKit/WebKitApple.props: Remove unused QTMovieWin
        library dependency.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
        Update for VS2013.
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj: Ditto

2014-01-22  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Avoid a circular dependency when building webkitenumtypes.h
        https://bugs.webkit.org/show_bug.cgi?id=127199

        Reviewed by Daniel Bates.

        * PlatformGTK.cmake: Create a new list of headers consisting of all installed headers
        except webkitenumtypes.h. Use this list when generating webkitenumtypes.h.

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

        Unreviewed build fix for Win64.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Corrected 64-bit linker symbols.

2014-01-18  Brian Burg  <bburg@apple.com>

        Another build fix attempt for Windows and EFL WebKit1.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-01-18  Brian Burg  <bburg@apple.com>

        Unreviewed build fix attempt for Windows.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-01-17  Martin Robinson  <mrobinson@igalia.com>

        Build fix for the CMake GTK+ build

        * PlatformGTK.cmake: We need to include ProgressTrackerClientGtk in the source list.

2014-01-17  Beth Dakin  <bdakin@apple.com>

        Need a way to test the tile cache with margins enabled
        https://bugs.webkit.org/show_bug.cgi?id=127194
        -and corresponding-
        <rdar://problem/15571327>

        Reviewed by Tim Horton.

        Attempt to keep Windows building.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-01-16  Andy Estes  <aestes@apple.com>

        [iOS] Fix build issues with exported headers

        * WebKit.xcodeproj/project.pbxproj: Removed WebPluginPrivate.h from
        the project.

2014-01-15  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK1] Implement ProgressTrackerClientEfl to fix the crash
        https://bugs.webkit.org/show_bug.cgi?id=127031

        Reviewed by Gyuyoung Kim.

        * PlatformEfl.cmake: Added ProgressTrackerClientEfl.cpp into source lists.

2014-01-14  Anders Carlsson  <andersca@apple.com>

        Create separate progress tracker clients
        https://bugs.webkit.org/show_bug.cgi?id=127025

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj:

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

        Correct grave mistake in updating the pbxproj file rather than xcconfig.

        * WebKit.xcodeproj/project.pbxproj:

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

        Attempt to fix 32-bit Mac build.

        * WebKit.xcodeproj/project.pbxproj:

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

        [WK1] Allow generated export files on iOS
        https://bugs.webkit.org/show_bug.cgi?id=127008

        Reviewed by Simon Fraser.

        Modify the export file generation rule to read from
        a shared and platform-specific input file.

        * WebKit.xcodeproj/project.pbxproj:

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

        Unreviewed build fix for Win64.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Corrected 64-bit linker symbols.

2014-01-13  Daniel Bates  <dabates@apple.com>

        [iOS] More build fixes for WebKit

        Add iOS-specific logic to build phases: "Symlink WebKitPluginHost in to place" and "Migrate Headers".

        * WebKit.xcodeproj/project.pbxproj:

2014-01-13  Daniel Bates  <dabates@apple.com>

        [iOS] Fix up WebKit build phases

        Add iOS-specific logic to build phrases "Generate 64-bit Export File" and "Migrate Headers".

        * WebKit.xcodeproj/project.pbxproj:

2014-01-13  Daniel Bates  <dabates@apple.com>

        [iOS] Don't link to Mac-only frameworks when building WebKit

        Currently the Xcode project always links against various Mac-only frameworks (e.g. Carbon.framework).
        Instead the Xcode project should only link against {JavaScriptCore, WebCore}.framework and
        libicucore.dylib, which are the frameworks/libraries that are shared by both the Mac and iOS port. We'll
        use Configuration/WebCore.xcconfig to specify additional port-specific frameworks to link against.

        * WebKit.xcodeproj/project.pbxproj:

2014-01-13  Eric Carlson  <eric.carlson@apple.com>

        Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add missing
            exports needed for Windows build after r161899.

2014-01-13  Andy Estes  <aestes@apple.com>

        [iOS] Build Fix: switch back to calling postprocess-headers.sh

        * WebKit.xcodeproj/project.pbxproj:

2014-01-12  Dan Bernstein  <mitz@apple.com>

        Try to fix the Windows build after r161852.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2014-01-10  Daniel Bates  <dabates@apple.com>

        [iOS] Upstream WebCore and Tools miscellaneous changes
        https://bugs.webkit.org/show_bug.cgi?id=126698

        Reviewed by David Kilzer.

        * WebKit.xcodeproj/project.pbxproj:

2014-01-09  Benjamin Poulain  <bpoulain@apple.com>

        Remove the WebKit layer of the Blackberry port
        https://bugs.webkit.org/show_bug.cgi?id=126715

        Reviewed by Anders Carlsson.

        * PlatformBlackBerry.cmake: Removed.
        * blackberry: Removed.

2014-01-08  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Merge ewk_view_single into ewk_view
        https://bugs.webkit.org/show_bug.cgi?id=126508

        Reviewed by Gyuyoung Kim.

        * PlatformEfl.cmake: Removed ewk_view_single.cpp.

2014-01-08  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Move efl API test binaries to TestWebKitAPI/EWebKit|EWebKit2
        https://bugs.webkit.org/show_bug.cgi?id=126615

        Reviewed by Martin Robinson.

        Now EFL API test binaries created in *bin* directory with other executables.
        It would be good to move them to their folder. This patch moves them to
        *TestWebKitAPI/EWebKit|EWebKit2* directories.

        * PlatformEfl.cmake:

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

        Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add missing
        exports needed for Windows build.

2014-01-07  Eric Carlson  <eric.carlson@apple.com>

        Teach MediaSessionManager to manage interruptions
        https://bugs.webkit.org/show_bug.cgi?id=126530

        Reviewed by Sam Weinig.

        * CMakeLists.txt: Add ${WEBCORE_DIR}/platform/animation to WebCore include directories.

2014-01-06  Martin Robinson  <mrobinson@igalia.com>

        Small build fix for the GTK+ CMake port

        * PlatformGTK.cmake: Include a missing GeoClue include directory.

2014-01-06  Martin Robinson  <mrobinson@igalia.com>

        [CMake] [GTK] Fix the build for the WebKitGTK+ developer configuration
        https://bugs.webkit.org/show_bug.cgi?id=126505

        Reviewed by Gustavo Noronha Silva.

        * PlatformGTK.cmake: Add the geoclue platform directory to the include directory list.

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

        <https://webkit.org/b/126499> Move WebKit off the legacy WebKit availability macros

        The legacy WebKit availability macros are verbose, confusing, and provide no benefit
        over using the system availability macros directly. The original vision was that
        they'd serve a cross-platform purpose but that never came to be.

        Since WebKit1 is API on OS X but SPI on iOS, some indirection is still needed in the
        availability macros to allow the headers to advertise the API as unavailable on OS X
        without interfering with the ability to build on iOS. This is achieved by defining
        WEBKIT-prefixed versions of the Foundation availability macros that are defined to
        their NS-prefixed equivalents. The installed headers are post-processed to map these
        macros back to their Foundation equivalents.

        Part of <rdar://problem/15512304>.

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj: Change the Postprocess Headers build phase to
        invoke mac/postprocess-headers.sh.

2014-01-05  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Ensure that the autotools build and the CMake install the same files
        https://bugs.webkit.org/show_bug.cgi?id=116379

        Reviewed by Gustavo Noronha Silva.

        * PlatformGTK.cmake: Install API headers, gir files, and the pkg-config file. Move
        a couple installed and generated headers to the installed headers list.

2014-01-04  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Improve the way we locate gobject-introspection
        https://bugs.webkit.org/show_bug.cgi?id=126452

        Reviewed by Philippe Normand.

        * PlatformGTK.cmake: Use the new introspection variables.

2014-01-03  Simon Fraser  <simon.fraser@apple.com>

        Attempt to fix EFL build.

        * CMakeLists.txt:

2013-12-31  Andy Estes  <aestes@apple.com>

        [iOS] Upstream PLATFORM(IOS) changes to Source/WebKit/
        https://bugs.webkit.org/show_bug.cgi?id=125746

        Reviewed by David Kilzer.

        * WebKit.xcodeproj/project.pbxproj: Added WebDatabaseManagerInternal.h
        and iOS.xcconfig.

2013-12-30  Martin Robinson  <mrobinson@igalia.com>

        [CMake] [GTK] Add support for GObject introspection
        https://bugs.webkit.org/show_bug.cgi?id=126162

        Reviewed by Daniel Bates.

        * PlatformGTK.cmake: Add the GIR targets.

2013-12-29  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Remove ewk_view_tiled
        https://bugs.webkit.org/show_bug.cgi?id=125961

        Reviewed by Gyuyoung Kim.

        * PlatformEfl.cmake: Removed ewk_view_tiled related files.

2013-12-29  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Convenience libraries that export API should be compiled with --whole-archive on Unix
        https://bugs.webkit.org/show_bug.cgi?id=126232

        Reviewed by Gustavo Noronha Silva.

        * PlatformGTK.cmake: Prefix libGObjectDOMBindings with --whole-archive so that
        symbols are not omitted during final linking.

2013-12-25  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Clean up generated sources directories
        https://bugs.webkit.org/show_bug.cgi?id=126216

        Reviewed by Gustavo Noronha Silva.

        * PlatformGTK.cmake: Use the new derived source variables.

2013-12-22  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] libtool-compatible soversion calculation
        https://bugs.webkit.org/show_bug.cgi?id=125511

        Reviewed by Gustavo Noronha Silva.

        * CMakeLists.txt: Use the POPULATE_LIBRARY_VERSION macro and the
        library-specific version information.

2013-12-23  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] [CMake] Generate pkg-config files
        https://bugs.webkit.org/show_bug.cgi?id=125685

        Reviewed by Martin Robinson.

        * PlatformGTK.cmake: generate webkitgtk-3.0.pc.

2013-12-22  Martin Robinson  <mrobinson@igalia.com>

        Small build fix for GTK+ with the CMake build

        * CMakeLists.txt: Remove duplicate include directory and add missing directories
        necessary for GTK+.

2013-12-20  Simon Fraser  <simon.fraser@apple.com>

        Try to fix the Windows build.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Win] Unreviewed build fix after r160908.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add
        missing export.

2013-12-18  Gustavo Noronha Silva  <gns@gnome.org>

        Unreviewed cmake build fix for GTK+.

        * PlatformGTK.cmake: add missing include directory.

2013-12-16  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Add support for building WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=116377

        Reviewed by Gustavo Noronha Silva.

        * CMakeLists.txt: Updated WebCore include directory list for WebKitGTK+ and
        added BUILDING_WEBKIT to the list of defines.
        * PlatformGTK.cmake: Added.

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.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        Use new GStreamer property sheets for WinCairo.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Fixed 64-bit symbols, added GStreamer symbol.

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

        [Win] Unreviewed build fix for 64-bit.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Corrected 64-bit linker symbols.

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

        [Win] Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Correct typo that added a '\' at the
        end of a line of the file.

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

        [Win] Remove dead code after conversion to VS2013
        https://bugs.webkit.org/show_bug.cgi?id=125795

        Reviewed by Darin Adler.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Remove unused function exports.

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

        Fixed Win64 build on VS2013.
        https://bugs.webkit.org/show_bug.cgi?id=125753

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.sln:
        Use new 64-bit WebInspectorUI configurations.
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:
        Added correct PlatformToolset for 64-bit builds.

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

        [Win] Unreviewed build fix.

        * WebKit.vcxproj/WebKit.sln: Remove reference to QTMovieWin,
        which we do not wish to build.

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

        [Win] Unreviewed build fix

        QTMovieWin should not be build at the moment, but some builders
        are continuing to attempt it. This change marks the project
        file as excluded from building.

        * WebKit.vcxproj/WebKit.sln: Mark QTMovieWin as excluded from build.

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

        Unreviewed build correction after r160548.

        * WebKit.vcxproj/WebKit/WebKitApple.props: Exclude linking with QTMoveWin, which does
        not build with VS2013.

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

        Unreviewed build correction after r160548

        * WebKit.vcxproj/WebKit.sln: Revise build order to avoid errors with ANGLE included.

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

        [Win] Unreviewed build fix after r160548

        * WebKit.vcxproj/WebKit.sln: Revised to build under VS2013.

2013-12-13  Andy Estes  <aestes@apple.com>

        Post-process exported WebKit headers based on PLATFORM_NAME
        https://bugs.webkit.org/show_bug.cgi?id=125682

        Reviewed by Dan Bernstein.

        Added a build phase that calls unifdef(1) on each of WebKit's Public
        and Private headers, defining TARGET_OS_EMBEDDED, TARGET_OS_IPHONE, and
        TARGET_IPHONE_SIMULATOR based on the value of PLATFORM_NAME. This has
        the effect of stripping out bits not needed by the SDK being built for.

        * WebKit.xcodeproj/project.pbxproj:

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

        [Win] Switch WebKit solution to Visual Studio 2013
        https://bugs.webkit.org/show_bug.cgi?id=125192

        Reviewed by Anders Carlsson.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj: Update for VS2013
        * WebKit.vcxproj/WebKit.sln: Ditto
        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Ditto
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj: Ditto
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj: Ditto

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

        [Win] Build fix after r159768.
        https://bugs.webkit.org/show_bug.cgi?id=125467

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit/WebKitVersion.cmd:
        Set PATH environment variable to include cygwin bin directory.

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

        [Win] Unreviewed link fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Corrected 64-bit linker symbols.

2013-12-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Push More Inspector Required Classes Down into JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=125324

        Reviewed by Timothy Hatcher.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-12-11  Mark Rowe  <mrowe@apple.com>

        <https://webkit.org/b/125562> Remove a Leopard-specific check from WebKit.xcodeproj

        Reviewed by Anders Carlsson.

        * WebKit.xcodeproj/project.pbxproj:

2013-12-06  Roger Fong <roger_fong@apple.com> and Brent Fulgham  <bfulgham@apple.com>

        [Win] Support compiling with VS2013.
        https://bugs.webkit.org/show_bug.cgi?id=125353

        Reviewed by Anders Carlsson.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Provide
        proper exports for VS2013 build.

2013-12-06  Dániel Bátyai  <Batyai.Daniel@stud.u-szeged.hu>

        Build fix after r160207, remove the BitmapImage::decodeSize symbol export
        https://bugs.webkit.org/show_bug.cgi?id=125342

        Reviewed by Csaba Osztrogonác.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Win] Avoid copying compiled-in resources to DSTROOT
        https://bugs.webkit.org/show_bug.cgi?id=125309

        Reviewed by Jer Noble.

        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd: Only copy Info.plist to the final WebKit.resource bundle.
        The PNG and RC files are compiled into the WebKit.dll library.

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

        [Win] Correct WebKit.make copy command to land resources in proper directory.
        https://bugs.webkit.org/show_bug.cgi?id=125249

        Reviewed by Tim Horton.

        * WebKit.vcxproj/WebKit.make: Correct the copy command.

2013-12-04  peavo@outlook.com  <peavo@outlook.com>

        [Win][64-bit] Link error.
        https://bugs.webkit.org/show_bug.cgi?id=125234

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Changed 64-bit version of symbol.

2013-12-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Push Remote Inspector debugging connection management into JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=124613

        Reviewed by Timothy Hatcher.

        * WebKit.xcodeproj/project.pbxproj:

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

        [Win] WebKit.make Makefile doesn't copy resource bundle to DSTROOT
        https://bugs.webkit.org/show_bug.cgi?id=125160

        Reviewed by Tim Horton.

        * WebKit.vcxproj/WebKit.make: Add copy command for resource bundle.

2013-12-02  Beth Dakin  <bdakin@apple.com>

        Attempted build fix. I think this is no longer needed.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-12-02  Beth Dakin  <bdakin@apple.com>

        Add a setting to opt into a mode where the background extends and fixed elements 
        don't move on rubber-band
        https://bugs.webkit.org/show_bug.cgi?id=124745

        Reviewed by Tim Horton.

        Keep Windows happy.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Win] WebKit Project doesn't copy resource bundle
        https://bugs.webkit.org/show_bug.cgi?id=125078

        Reviewed by Jer Noble.

        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd: Correct post-build step
        to copy WebKit.resources to build target.

2013-11-28  Thiago de Barros Lacerda  <thiago.lacerda@openbossa.org>

        Building EFL Webkit again with mediastream enabled
        https://bugs.webkit.org/show_bug.cgi?id=124930

        Reviewed by Csaba Osztrogonác.

        * CMakeLists.txt:

2013-11-27  Sam Weinig  <sam@webkit.org>

        Fix the iOS build.

        * WebKit.xcodeproj/project.pbxproj:

2013-11-25  peavo@outlook.com  <peavo@outlook.com>

        [Win] WebKit version in user agent string is incorrect.
        https://bugs.webkit.org/show_bug.cgi?id=124454

        Reviewed by Brent Fulgham.

        Generate WebKitVersion.h file from mac's Version.xcconfig file.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:
        * WebKit.vcxproj/WebKit/WebKitVersion.cmd: Added.

2013-11-23  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer] Remove 0.10 codepath
        https://bugs.webkit.org/show_bug.cgi?id=124534

        Reviewed by Philippe Normand.

        * PlatformEfl.cmake: Removed FullscreenVideoControllerEfl.cpp.

2013-11-21  Alex Christensen  <achristensen@webkit.org>

        Remove ANGLEGenerated from Windows build.
        https://bugs.webkit.org/show_bug.cgi?id=124759

        Reviewed by Darin Adler.

        * WebKit.vcxproj/WebKit.sln:
        Remove references to ANGLEGenerated.vcxproj.

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.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-11-21  peavo@outlook.com  <peavo@outlook.com>

        [WinCairo] Building ANGLE libraries fails.
        https://bugs.webkit.org/show_bug.cgi?id=124679

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit/WebKitCFLite.props: Link with translator_hlsl.lib.

2013-11-19  Mark Lam  <mark.lam@apple.com>

        Add tracking of endColumn for Executables.
        https://bugs.webkit.org/show_bug.cgi?id=124245.

        Reviewed by Geoffrey Garen.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        - Added an exported symbol to make the Win32 build happy. The Win64 symbol
          is currently a copy of the Win32 one. It'll need to be updated if the
          mangled symbol is different for Win64.

2013-11-18  Mark Rowe  <mrowe@apple.com>

        Use hw.activecpu for determining how many processes to spawn.

        It's documented as the preferred way to determine the number of threads
        or processes to create in a SMP aware application.

        Rubber-stamped by Tim Horton.

        * WebKit.xcodeproj/project.pbxproj:

2013-11-18  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Add EWebKitConfig.cmake and EWebKit2Config.cmake
        https://bugs.webkit.org/show_bug.cgi?id=124478

        Reviewed by Gyuyoung Kim.

        EWebKit is built using CMake but applications use *.pc to use it.
        This patch provides EWebKitConfig.cmake and EWebKit2Config.cmake
        for applications which use EWebkit and is compiled by CMake.

        * PlatformEfl.cmake:
        Configure and install EWebKitConfig.cmake and EWebKitConfigVersion.cmake

2013-11-13  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed rollout of r159271, broke Mountain Lion build.

        * WebKit.xcodeproj/project.pbxproj:

2013-11-13  Anders Carlsson  <andersca@apple.com>

        Deprecate WebHistory methods that use NSCalendarDate
        https://bugs.webkit.org/show_bug.cgi?id=124329
        <rdar://problem/15441122>

        Reviewed by Mark Rowe.

        * WebKit.xcodeproj/project.pbxproj:
        Add a shell script phase that uses unifdef to remove the __NSd_10_9 #define from
        WebHistory on Mavericks.

2013-11-11  Alex Christensen  <achristensen@webkit.org>

        Unreviewed build fix for Win64.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Fixed 64-bit linker symbols.

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

        [Mac] .exp files are not source code
        https://bugs.webkit.org/show_bug.cgi?id=124154

        Reviewed by Andy Estes.

        * WebKit.xcodeproj/project.pbxproj: Removed WebKit.iOS.exp from the Compile Sources build
        phase.

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

        Unreviewed. Windows WebKit makefile fixes.

        No need to copy over WebKit.resources.

        * WebKit.vcxproj/WebKit.make:
        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd:

2013-11-07  Denis Nomiyama  <d.nomiyama@samsung.com>

        [GTK] Glyphs in vertical text tests are rotated 90 degrees clockwise
        https://bugs.webkit.org/show_bug.cgi?id=50619

        Reviewed by Martin Robinson.

        Added WebCore/platform/graphics/opentype to the include path.

        * PlatformEfl.cmake:

2013-11-04  Brent Fulgham  <bfulgham@apple.com>

        [Win] Use VersionStamper for official builds
        https://bugs.webkit.org/show_bug.cgi?id=123758

        Reviewed by Tim Horton.

        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd: Restore command to
        call VersionStamper on final stage of build.

2013-11-02  Christophe Dumez  <ch.dumez@samsung.com>

        EnforceRange doesn't enforce range of a short
        https://bugs.webkit.org/show_bug.cgi?id=123661

        Reviewed by Alexey Proskuryakov.

        Export symbols to fix Windows build.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [iOS] Make some headers Private
        https://bugs.webkit.org/show_bug.cgi?id=123626

        Reviewed by Andreas Kling.

        * WebKit.xcodeproj/project.pbxproj:

2013-11-01  Afonso R. Costa Jr.  <afonso.costa@samsung.com>

        Expose setApplicationCacheOriginQuota via window.internals
        https://bugs.webkit.org/show_bug.cgi?id=87838

        Reviewed by Joseph Pecoraro.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add
        symbols for setApplicationCacheOriginQuota from Internals.

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

        Reverted r158443. It broke the build.

        * WebKit.xcodeproj/project.pbxproj:

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

        [iOS] Make some headers Private
        https://bugs.webkit.org/show_bug.cgi?id=123626

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj:

2013-10-31  Ryosuke Niwa  <rniwa@webkit.org>

        Windows build fix attempt after r158421.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-10-29  Andy Estes  <aestes@apple.com>

        [iOS] Upstream Source/WebKit/ios/
        https://bugs.webkit.org/show_bug.cgi?id=123470

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj:

2013-10-30  Myles C. Maxfield  <mmaxfield@apple.com>

        WebKit/win/WebKitGraphics.h:void WebDrawText(WebTextRenderInfo*); is never called
        https://bugs.webkit.org/show_bug.cgi?id=123485

        Reviewed by Brent Fulgham.

        Deleting the function

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-10-30  Alex Christensen  <achristensen@webkit.org>

        [Windows] Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Added missing 32-bit and 64-bit linker symbols.

2013-10-30  Alex Christensen  <achristensen@webkit.org>

        Disabled JIT on Win64.
        https://bugs.webkit.org/show_bug.cgi?id=122472

        Reviewed by Geoffrey Garen.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Added missing 64-bit linker symbol.

2013-10-28  Joseph Pecoraro  <pecoraro@apple.com>

        Upstream remaining PLATFORM(IOS) and ENABLE(REMOTE_INSPECTOR) pieces
        https://bugs.webkit.org/show_bug.cgi?id=123411

        Reviewed by Timothy Hatcher.

        * WebKit.xcodeproj/project.pbxproj:

2013-10-25  Joseph Pecoraro  <pecoraro@apple.com>

        Upstream ENABLE(REMOTE_INSPECTOR) and enable on iOS and Mac
        https://bugs.webkit.org/show_bug.cgi?id=123111

        Reviewed by Timothy Hatcher.

        * WebKit.xcodeproj/project.pbxproj:

2013-10-23  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Integrate css3-images image-orientation with existing EXIF support
        https://bugs.webkit.org/show_bug.cgi?id=91566

        Reviewed by Beth Dakin.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Update export symbols for draw functions.

2013-10-15  Andy Estes  <aestes@apple.com>

        Expose -[WebPluginPackage bundle] as SPI
        https://bugs.webkit.org/show_bug.cgi?id=122814

        Reviewed by Anders Carlsson.

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

2013-10-10  Ryosuke Niwa  <rniwa@webkit.org>

        Windows build fix attempt.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-10-10  Marcelo Morais  <m.morais@samsung.com>

        Web Inspector: Remove the old front-end from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=122295

        Reviewed by Timothy Hatcher.

        * PlatformBlackBerry.cmake: Removed the references for the old
        inspector front-end.

2013-10-10  Anders Carlsson  <andersca@apple.com>

        Remove WebScrollBar
        https://bugs.webkit.org/show_bug.cgi?id=122623

        Reviewed by Brent Fulgham.

        Remove files from VS projects.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:

2013-10-08  Alex Christensen  <achristensen@webkit.org>

        Fixed Win64 linking.
        https://bugs.webkit.org/show_bug.cgi?id=122530

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Added 64-bit linker symbols.

2013-10-06  Andreas Kling  <akling@apple.com>

        No? Okay, let's try that again..

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-10-06  Andreas Kling  <akling@apple.com>

        Attempt to fix the Windows build.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-10-06  Darin Adler  <darin@apple.com>

        Try to fix the Windows build.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Removed export of non-existent Node::treeScope function returning
        a TreeScope*. Probably will have to add an export to fix the next failure.

2013-10-06  Darin Adler  <darin@apple.com>

        Remove unneeded ScriptGCEvent class
        https://bugs.webkit.org/show_bug.cgi?id=122390

        Reviewed by Anders Carlsson.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Replaced symbol from ScriptGCEvent with symbol from JSDOMWindowBase.

2013-10-04  Daniel Bates  <dabates@apple.com>

        [iOS] Upstream disk image cache
        https://bugs.webkit.org/show_bug.cgi?id=121985

        Reviewed by Joseph Pecoraro.

        * WebKit.xcodeproj/project.pbxproj:
        * ios/WebCoreSupport/WebDiskImageCacheClientIOS.h: Added.
        * ios/WebCoreSupport/WebDiskImageCacheClientIOS.mm: Added.

2013-10-04  Anders Carlsson  <andersca@apple.com>

        Remove WebAssertions.h
        https://bugs.webkit.org/show_bug.cgi?id=122328

        Reviewed by Jessie Berlin.

        * WebKit.xcodeproj/project.pbxproj:

2013-10-03  Anders Carlsson  <andersca@apple.com>

        Remove WebNSNotificationCenterExtras
        https://bugs.webkit.org/show_bug.cgi?id=122316

        Reviewed by Dan Bernstein.

        Update Xcode project.

        * WebKit.xcodeproj/project.pbxproj:

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

        Remove WebKit/qt.

        Rubber-stamped by Andreas Kling.

        * qt/Api/qhttpheader.cpp: Removed.
        * qt/Api/qhttpheader_p.h: Removed.
        * qt/Api/qwebdatabase.cpp: Removed.
        * qt/Api/qwebdatabase.h: Removed.
        * qt/Api/qwebdatabase_p.h: Removed.
        * qt/Api/qwebelement.cpp: Removed.
        * qt/Api/qwebelement.h: Removed.
        * qt/Api/qwebelement_p.h: Removed.
        * qt/Api/qwebhistory.cpp: Removed.
        * qt/Api/qwebhistory.h: Removed.
        * qt/Api/qwebhistory_p.h: Removed.
        * qt/Api/qwebhistoryinterface.cpp: Removed.
        * qt/Api/qwebhistoryinterface.h: Removed.
        * qt/Api/qwebkitglobal.cpp: Removed.
        * qt/Api/qwebkitglobal.h: Removed.
        * qt/Api/qwebkitplatformplugin.h: Removed.
        * qt/Api/qwebplugindatabase.cpp: Removed.
        * qt/Api/qwebplugindatabase_p.h: Removed.
        * qt/Api/qwebpluginfactory.cpp: Removed.
        * qt/Api/qwebpluginfactory.h: Removed.
        * qt/Api/qwebscriptworld.cpp: Removed.
        * qt/Api/qwebscriptworld.h: Removed.
        * qt/Api/qwebscriptworld_p.h: Removed.
        * qt/Api/qwebsecurityorigin.cpp: Removed.
        * qt/Api/qwebsecurityorigin.h: Removed.
        * qt/Api/qwebsecurityorigin_p.h: Removed.
        * qt/Api/qwebsettings.cpp: Removed.
        * qt/Api/qwebsettings.h: Removed.
        * qt/ChangeLog-2011-02-16: Removed.
        * qt/WebCoreSupport/ChromeClientQt.cpp: Removed.
        * qt/WebCoreSupport/ChromeClientQt.h: Removed.
        * qt/WebCoreSupport/ContextMenuClientQt.cpp: Removed.
        * qt/WebCoreSupport/ContextMenuClientQt.h: Removed.
        * qt/WebCoreSupport/DragClientQt.cpp: Removed.
        * qt/WebCoreSupport/DragClientQt.h: Removed.
        * qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp: Removed.
        * qt/WebCoreSupport/DumpRenderTreeSupportQt.h: Removed.
        * qt/WebCoreSupport/EditorClientQt.cpp: Removed.
        * qt/WebCoreSupport/EditorClientQt.h: Removed.
        * qt/WebCoreSupport/FrameLoaderClientQt.cpp: Removed.
        * qt/WebCoreSupport/FrameLoaderClientQt.h: Removed.
        * qt/WebCoreSupport/FrameNetworkingContextQt.cpp: Removed.
        * qt/WebCoreSupport/FrameNetworkingContextQt.h: Removed.
        * qt/WebCoreSupport/FullScreenVideoQt.cpp: Removed.
        * qt/WebCoreSupport/FullScreenVideoQt.h: Removed.
        * qt/WebCoreSupport/GeolocationClientQt.cpp: Removed.
        * qt/WebCoreSupport/GeolocationClientQt.h: Removed.
        * qt/WebCoreSupport/GeolocationPermissionClientQt.cpp: Removed.
        * qt/WebCoreSupport/GeolocationPermissionClientQt.h: Removed.
        * qt/WebCoreSupport/IconDatabaseClientQt.cpp: Removed.
        * qt/WebCoreSupport/IconDatabaseClientQt.h: Removed.
        * qt/WebCoreSupport/InitWebCoreQt.cpp: Removed.
        * qt/WebCoreSupport/InitWebCoreQt.h: Removed.
        * qt/WebCoreSupport/InspectorClientQt.cpp: Removed.
        * qt/WebCoreSupport/InspectorClientQt.h: Removed.
        * qt/WebCoreSupport/InspectorServerQt.cpp: Removed.
        * qt/WebCoreSupport/InspectorServerQt.h: Removed.
        * qt/WebCoreSupport/NotificationPresenterClientQt.cpp: Removed.
        * qt/WebCoreSupport/NotificationPresenterClientQt.h: Removed.
        * qt/WebCoreSupport/PlatformStrategiesQt.cpp: Removed.
        * qt/WebCoreSupport/PlatformStrategiesQt.h: Removed.
        * qt/WebCoreSupport/PopupMenuQt.cpp: Removed.
        * qt/WebCoreSupport/PopupMenuQt.h: Removed.
        * qt/WebCoreSupport/QWebFrameAdapter.cpp: Removed.
        * qt/WebCoreSupport/QWebFrameAdapter.h: Removed.
        * qt/WebCoreSupport/QWebPageAdapter.cpp: Removed.
        * qt/WebCoreSupport/QWebPageAdapter.h: Removed.
        * qt/WebCoreSupport/QtPlatformPlugin.cpp: Removed.
        * qt/WebCoreSupport/QtPlatformPlugin.h: Removed.
        * qt/WebCoreSupport/QtPluginWidgetAdapter.cpp: Removed.
        * qt/WebCoreSupport/QtPluginWidgetAdapter.h: Removed.
        * qt/WebCoreSupport/QtPrintContext.cpp: Removed.
        * qt/WebCoreSupport/QtPrintContext.h: Removed.
        * qt/WebCoreSupport/SearchPopupMenuQt.cpp: Removed.
        * qt/WebCoreSupport/SearchPopupMenuQt.h: Removed.
        * qt/WebCoreSupport/TextCheckerClientQt.cpp: Removed.
        * qt/WebCoreSupport/TextCheckerClientQt.h: Removed.
        * qt/WebCoreSupport/TextureMapperLayerClientQt.cpp: Removed.
        * qt/WebCoreSupport/TextureMapperLayerClientQt.h: Removed.
        * qt/WebCoreSupport/UndoStepQt.cpp: Removed.
        * qt/WebCoreSupport/UndoStepQt.h: Removed.
        * qt/WebCoreSupport/WebEventConversion.cpp: Removed.
        * qt/WebCoreSupport/WebEventConversion.h: Removed.
        * qt/WidgetApi/qgraphicswebview.cpp: Removed.
        * qt/WidgetApi/qgraphicswebview.h: Removed.
        * qt/WidgetApi/qwebframe.cpp: Removed.
        * qt/WidgetApi/qwebframe.h: Removed.
        * qt/WidgetApi/qwebframe_p.h: Removed.
        * qt/WidgetApi/qwebinspector.cpp: Removed.
        * qt/WidgetApi/qwebinspector.h: Removed.
        * qt/WidgetApi/qwebinspector_p.h: Removed.
        * qt/WidgetApi/qwebpage.cpp: Removed.
        * qt/WidgetApi/qwebpage.h: Removed.
        * qt/WidgetApi/qwebpage_p.h: Removed.
        * qt/WidgetApi/qwebview.cpp: Removed.
        * qt/WidgetApi/qwebview.h: Removed.
        * qt/WidgetApi/qwebviewaccessible.cpp: Removed.
        * qt/WidgetApi/qwebviewaccessible_p.h: Removed.
        * qt/WidgetSupport/DefaultFullScreenVideoHandler.cpp: Removed.
        * qt/WidgetSupport/DefaultFullScreenVideoHandler.h: Removed.
        * qt/WidgetSupport/FullScreenVideoWidget.cpp: Removed.
        * qt/WidgetSupport/FullScreenVideoWidget.h: Removed.
        * qt/WidgetSupport/InitWebKitQt.cpp: Removed.
        * qt/WidgetSupport/InitWebKitQt.h: Removed.
        * qt/WidgetSupport/InspectorClientWebPage.cpp: Removed.
        * qt/WidgetSupport/InspectorClientWebPage.h: Removed.
        * qt/WidgetSupport/PageClientQt.cpp: Removed.
        * qt/WidgetSupport/PageClientQt.h: Removed.
        * qt/WidgetSupport/QGraphicsWidgetPluginImpl.cpp: Removed.
        * qt/WidgetSupport/QGraphicsWidgetPluginImpl.h: Removed.
        * qt/WidgetSupport/QStyleFacadeImp.cpp: Removed.
        * qt/WidgetSupport/QStyleFacadeImp.h: Removed.
        * qt/WidgetSupport/QWebUndoCommand.cpp: Removed.
        * qt/WidgetSupport/QWebUndoCommand.h: Removed.
        * qt/WidgetSupport/QWidgetPluginImpl.cpp: Removed.
        * qt/WidgetSupport/QWidgetPluginImpl.h: Removed.
        * qt/WidgetSupport/QtFallbackWebPopup.cpp: Removed.
        * qt/WidgetSupport/QtFallbackWebPopup.h: Removed.
        * qt/WidgetSupport/QtWebComboBox.cpp: Removed.
        * qt/WidgetSupport/QtWebComboBox.h: Removed.
        * qt/declarative/declarative.pro: Removed.
        * qt/declarative/experimental/experimental.pri: Removed.
        * qt/declarative/experimental/plugin.cpp: Removed.
        * qt/declarative/experimental/plugin.json: Removed.
        * qt/declarative/experimental/qmldir: Removed.
        * qt/declarative/plugin.cpp: Removed.
        * qt/declarative/plugin.json: Removed.
        * qt/declarative/plugins.qmltypes: Removed.
        * qt/declarative/public.pri: Removed.
        * qt/declarative/qmldir: Removed.
        * qt/docs/qtwebkit-bridge.qdoc: Removed.
        * qt/docs/qtwebkit-goes-mobile.qdoc: Removed.
        * qt/docs/qtwebkit.qdoc: Removed.
        * qt/docs/qwebview-diagram.png: Removed.
        * qt/docs/webkitsnippets/qtwebkit_bridge_snippets.cpp: Removed.
        * qt/docs/webkitsnippets/qtwebkit_build_snippet.qdoc: Removed.
        * qt/docs/webkitsnippets/qtwebkit_goes_mobile_snippets.cpp: Removed.
        * qt/docs/webkitsnippets/qtwebkit_qwebinspector_snippet.cpp: Removed.
        * qt/docs/webkitsnippets/qtwebkit_qwebview_snippet.cpp: Removed.
        * qt/docs/webkitsnippets/simple/main.cpp: Removed.
        * qt/docs/webkitsnippets/simple/simple.pro: Removed.
        * qt/docs/webkitsnippets/webelement/main.cpp: Removed.
        * qt/docs/webkitsnippets/webelement/webelement.pro: Removed.
        * qt/docs/webkitsnippets/webpage/main.cpp: Removed.
        * qt/docs/webkitsnippets/webpage/webpage.pro: Removed.
        * qt/examples/examples.pro: Removed.
        * qt/examples/platformplugin/README: Removed.
        * qt/examples/platformplugin/WebNotificationPresenter.cpp: Removed.
        * qt/examples/platformplugin/WebNotificationPresenter.h: Removed.
        * qt/examples/platformplugin/WebPlugin.cpp: Removed.
        * qt/examples/platformplugin/WebPlugin.h: Removed.
        * qt/examples/platformplugin/platformplugin.pro: Removed.
        * qt/examples/platformplugin/qwebkitplatformplugin.h: Removed.
        * qt/tests/MIMESniffing/MIMESniffing.pro: Removed.
        * qt/tests/MIMESniffing/TestData.h: Removed.
        * qt/tests/MIMESniffing/resources.qrc: Removed.
        * qt/tests/MIMESniffing/resources/application_atom+xml: Removed.
        * qt/tests/MIMESniffing/resources/application_ogg: Removed.
        * qt/tests/MIMESniffing/resources/application_pdf: Removed.
        * qt/tests/MIMESniffing/resources/application_postscript: Removed.
        * qt/tests/MIMESniffing/resources/application_rdf+xml: Removed.
        * qt/tests/MIMESniffing/resources/application_rss+xml: Removed.
        * qt/tests/MIMESniffing/resources/application_x-gzip: Removed.
        * qt/tests/MIMESniffing/resources/application_x-rar-compressed: Removed.
        * qt/tests/MIMESniffing/resources/application_zip: Removed.
        * qt/tests/MIMESniffing/resources/audio_x-wave: Removed.
        * qt/tests/MIMESniffing/resources/image_bmp: Removed.
        * qt/tests/MIMESniffing/resources/image_gif: Removed.
        * qt/tests/MIMESniffing/resources/image_jpeg: Removed.
        * qt/tests/MIMESniffing/resources/image_png: Removed.
        * qt/tests/MIMESniffing/resources/image_vnd.microsoft.icon: Removed.
        * qt/tests/MIMESniffing/resources/image_webp: Removed.
        * qt/tests/MIMESniffing/resources/text_html: Removed.
        * qt/tests/MIMESniffing/resources/text_xml: Removed.
        * qt/tests/MIMESniffing/resources/video_webm: Removed.
        * qt/tests/MIMESniffing/tst_MIMESniffing.cpp: Removed.
        * qt/tests/benchmarks/loading/loading.pro: Removed.
        * qt/tests/benchmarks/loading/tst_loading.cpp: Removed.
        * qt/tests/benchmarks/painting/painting.pro: Removed.
        * qt/tests/benchmarks/painting/tst_painting.cpp: Removed.
        * qt/tests/benchmarks/webgl/10000_triangles.html: Removed.
        * qt/tests/benchmarks/webgl/tst_webgl.cpp: Removed.
        * qt/tests/benchmarks/webgl/tst_webgl.qrc: Removed.
        * qt/tests/benchmarks/webgl/webgl.pro: Removed.
        * qt/tests/cmake/CMakeLists.txt: Removed.
        * qt/tests/cmake/cmake.pro: Removed.
        * qt/tests/hybridPixmap/hybridPixmap.pro: Removed.
        * qt/tests/hybridPixmap/resources.qrc: Removed.
        * qt/tests/hybridPixmap/test.html: Removed.
        * qt/tests/hybridPixmap/tst_hybridPixmap.cpp: Removed.
        * qt/tests/hybridPixmap/widget.cpp: Removed.
        * qt/tests/hybridPixmap/widget.h: Removed.
        * qt/tests/hybridPixmap/widget.ui: Removed.
        * qt/tests/qgraphicswebview/qgraphicswebview.pro: Removed.
        * qt/tests/qgraphicswebview/resources/greendiv.html: Removed.
        * qt/tests/qgraphicswebview/resources/input_types.html: Removed.
        * qt/tests/qgraphicswebview/resources/pointing_right.html: Removed.
        * qt/tests/qgraphicswebview/resources/pointing_up.html: Removed.
        * qt/tests/qgraphicswebview/resources/scrolltest_page.html: Removed.
        * qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp: Removed.
        * qt/tests/qgraphicswebview/tst_qgraphicswebview.qrc: Removed.
        * qt/tests/qobjectbridge/qobjectbridge.pro: Removed.
        * qt/tests/qobjectbridge/tst_qobjectbridge.cpp: Removed.
        * qt/tests/qwebelement/qwebelement.pro: Removed.
        * qt/tests/qwebelement/resources/image.png: Removed.
        * qt/tests/qwebelement/resources/style.css: Removed.
        * qt/tests/qwebelement/resources/style2.css: Removed.
        * qt/tests/qwebelement/tst_qwebelement.cpp: Removed.
        * qt/tests/qwebelement/tst_qwebelement.qrc: Removed.
        * qt/tests/qwebframe/qwebframe.pro: Removed.
        * qt/tests/qwebframe/resources/image.png: Removed.
        * qt/tests/qwebframe/resources/style.css: Removed.
        * qt/tests/qwebframe/resources/test1.html: Removed.
        * qt/tests/qwebframe/resources/test2.html: Removed.
        * qt/tests/qwebframe/resources/testiframe.html: Removed.
        * qt/tests/qwebframe/resources/testiframe2.html: Removed.
        * qt/tests/qwebframe/tst_qwebframe.cpp: Removed.
        * qt/tests/qwebframe/tst_qwebframe.qrc: Removed.
        * qt/tests/qwebhistory/qwebhistory.pro: Removed.
        * qt/tests/qwebhistory/resources/page1.html: Removed.
        * qt/tests/qwebhistory/resources/page2.html: Removed.
        * qt/tests/qwebhistory/resources/page3.html: Removed.
        * qt/tests/qwebhistory/resources/page4.html: Removed.
        * qt/tests/qwebhistory/resources/page5.html: Removed.
        * qt/tests/qwebhistory/resources/page6.html: Removed.
        * qt/tests/qwebhistory/tst_qwebhistory.cpp: Removed.
        * qt/tests/qwebhistory/tst_qwebhistory.qrc: Removed.
        * qt/tests/qwebhistoryinterface/qwebhistoryinterface.pro: Removed.
        * qt/tests/qwebhistoryinterface/tst_qwebhistoryinterface.cpp: Removed.
        * qt/tests/qwebinspector/qwebinspector.pro: Removed.
        * qt/tests/qwebinspector/tst_qwebinspector.cpp: Removed.
        * qt/tests/qwebpage/qwebpage.pro: Removed.
        * qt/tests/qwebpage/resources/content.html: Removed.
        * qt/tests/qwebpage/resources/frame_a.html: Removed.
        * qt/tests/qwebpage/resources/frame_c.html: Removed.
        * qt/tests/qwebpage/resources/framedindex.html: Removed.
        * qt/tests/qwebpage/resources/iframe.html: Removed.
        * qt/tests/qwebpage/resources/iframe2.html: Removed.
        * qt/tests/qwebpage/resources/iframe3.html: Removed.
        * qt/tests/qwebpage/resources/index.html: Removed.
        * qt/tests/qwebpage/resources/script.html: Removed.
        * qt/tests/qwebpage/resources/user.css: Removed.
        * qt/tests/qwebpage/tst_qwebpage.cpp: Removed.
        * qt/tests/qwebpage/tst_qwebpage.qrc: Removed.
        * qt/tests/qwebplugindatabase/qwebplugindatabase.pro: Removed.
        * qt/tests/qwebplugindatabase/tst_qwebplugindatabase.cpp: Removed.
        * qt/tests/qwebsecurityorigin/qwebsecurityorigin.pro: Removed.
        * qt/tests/qwebsecurityorigin/resources/test.html: Removed.
        * qt/tests/qwebsecurityorigin/tst_qwebsecurityorigin.cpp: Removed.
        * qt/tests/qwebsecurityorigin/tst_qwebsecurityorigin.qrc: Removed.
        * qt/tests/qwebview/.gitignore: Removed.
        * qt/tests/qwebview/qwebview.pro: Removed.
        * qt/tests/qwebview/resources/frame_a.html: Removed.
        * qt/tests/qwebview/resources/index.html: Removed.
        * qt/tests/qwebview/resources/input_types.html: Removed.
        * qt/tests/qwebview/resources/scrolltest_page.html: Removed.
        * qt/tests/qwebview/tst_qwebview.cpp: Removed.
        * qt/tests/qwebview/tst_qwebview.qrc: Removed.
        * qt/tests/resources/image2.png: Removed.
        * qt/tests/resources/test.swf: Removed.
        * qt/tests/tests.pri: Removed.
        * qt/tests/util.h: Removed.

2013-09-30  Benjamin Poulain  <benjamin@webkit.org>

        Remove the code guarded by STYLE_SCOPED
        https://bugs.webkit.org/show_bug.cgi?id=122123

        Reviewed by Anders Carlsson.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-09-30  Alex Christensen  <achristensen@webkit.org>

        [Windows] Unreviewed build fix for Win64.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Added correct 64-bit BitmapImage::create symbol.

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

        [Win] Compile errors in WebKit (via peavo@outlook.com).
        https://bugs.webkit.org/show_bug.cgi?id=122106

        Reviewed by Darin Adler.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add link
        declarations missed in r156655.

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

        Take Xcode's advice and enable some extra warnings.

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj:

2013-09-27  Alex Christensen  <achristensen@webkit.org>

        [Windows] Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Fixed linker symbols I broke last time.

2013-09-27  Alex Christensen  <alex.christensen@flexsim.com>

        [Windows] Unreviewed build fix for Win64.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Added and fixed 64-bit linker symbols.

2013-09-26  Darin Adler  <darin@apple.com>

        rename KURL to URL
        https://bugs.webkit.org/show_bug.cgi?id=16214

        Reviewed by Andreas Kling.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Let the script to try to rename here.

2013-09-26  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] make MediaStream testable
        https://bugs.webkit.org/show_bug.cgi?id=121967

        Reviewed by Dean Jackson.

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

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

        [Windows] Unreviewed Build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add missing
        symbol export to support tests.

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

        [Windows] Unreviewed Build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-09-25  Alex Christensen  <achristensen@webkit.org>

        Enabled AssembleBuildLogs on WinCairo port.
        https://bugs.webkit.org/show_bug.cgi?id=121923

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.sln:
        Build AssembleBuildLogs in WinCairo port.

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

        [Windows] Refactor RuntimeEnabledFeatures as a Singleton 
        https://bugs.webkit.org/show_bug.cgi?id=121883

        Reviewed by Jer Noble.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Expose singleton accessor for DLL clients.

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

        [Windows] Unreviewed build fix after r156408.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add new
        version of symbol export declaration.

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

        [Windows] Unreviewed build fix after r156408.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Remove
        symbol export declaration for WebCore::CSSParserContext::CSSParserContext,
        which is no longer provided by the system.

2013-09-25  Allan Sandfeld Jensen  <allan.jensen@digia.com>

        [Qt] Fix build with Qt 5.2 QtPosition module
        https://bugs.webkit.org/show_bug.cgi?id=121089

        Reviewed by Simon Hausmann.

        QtLocation -> QtPositioning

        * WebKit1.pri:

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

        Cleanup CMake files in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=121763

        Reviewed by Gyuyoung Kim.

        Sort files and unify style.

        * PlatformBlackBerry.cmake:
        * PlatformEfl.cmake:
        * PlatformWinCE.cmake:

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

        [Windows] Unreviewed build fix after r156216.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: I
        accidentally exposed the symbol of the calling function, not
        the missing symbol!

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

        [Windows] Unreviewed build fix after r156215.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Expose
        missing symbols needed by DRT.

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

        [CMake] Use COMPILE_DEFINITIONS target property for setting BUILDING_* defines
        https://bugs.webkit.org/show_bug.cgi?id=121672

        Reviewed by Gyuyoung Kim.

        Since the scope of add_definitions() is always a whole file, we need to use
        target properties instead to set definitions only for specific targets.

        * CMakeLists.txt:

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.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add required symbol for enabling CSS Shapes.

2013-09-18  peavo@outlook.com  <peavo@outlook.com>

        [Win] TestWebKitAPI does not compile.
        https://bugs.webkit.org/show_bug.cgi?id=121485

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Export needed symbols.

2013-09-17  Andreas Kling  <akling@apple.com>

        Some build juice for Windows.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-09-13  Tim Horton  <timothy_horton@apple.com>

        Unreviewed; part one of build fix for Windows.
        Sorry for the noise, I thought I'd fixed it.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-09-12  peavo@outlook.com  <peavo@outlook.com>

        [Win] TestWebKitAPI fails to link.
        https://bugs.webkit.org/show_bug.cgi?id=121223

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add required symbol.

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

        [Windows] Avoid converting from IntSize->SIZE->IntSize
        https://bugs.webkit.org/show_bug.cgi?id=121180

        Reviewed by Anders Carlsson.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Remove unused symbol export.

2013-09-08  Antti Koivisto  <antti@apple.com>

        Fix window build.
        
        Not reviewed.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Windows] Unreviewed build correction.
        Update project dependencies so that build logs on machines will include output from the
        WebInspectorUI project.

        * WebKit.vcxproj/WebKit.sln:

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

        [Windows] Unreviewed build fix after r154917

        * WebKit.vcxproj/WebKit.sln: Establish build dependency from WebInspectorUI against
        WebKit. Remove reverse dependency.

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

        [Windows] Unreviewed build fix after r154809

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Remove two no-longer-existing
        export symbols.

2013-08-28  Brent Fulgham  <bfulgham@webkit.org>

        [WinCairo] Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add
        missing Cairo symbols; don't export CG symbols for Cairo build.

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

        AppleWin build fix following r154627.

        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters:

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

        <https://bugs.webkit.org/show_bug.cgi?id=119829> IAccessibleText and IAccessibleEditableText implementation for AppleWindows port.

        Reviewed by Chris Fleizach.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters:

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

        [Windows] Build fix after r154541.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Remove reference
        to deleted Element::pseudoElement(PseudoID), and add exports for new
        beforePseudoElement() and afterPseudoElement().

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.

        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorBuildCmd.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPostBuild.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd:
        Use PlatformArchitecture to determine correct object directory (obj32 or obj64).

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

        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorBuildCmd.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPostBuild.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd:

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

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

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorBuildCmd.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPostBuild.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd:
        Use PlatformArchitecture to determine correct object directory (obj32 or obj64).

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

        <https://webkit.org/b/120098> [Windows] Enable the new Web Inspector

        Reviewed by Brian Weinstein.

        * WebKit.vcxproj/WebKit.sln: Add reference to the new WebInspectorUI
        project so that it will be included in new distributions.

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

        [Windows] Unreviewed build fix for Win64 after r154118.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        <https://webkit.org/b/120076> More work towards a Win64 build

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd:
        Use PlatformArchitecture macro instead of bin32, lib32, and obj32.

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

        Use PlatformArchitecture to distinguish between 32-bit and 64-bit builds on Windows.
        https://bugs.webkit.org/show_bug.cgi?id=119512

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/Interfaces/InterfacesCommon.props:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:
        * WebKit.vcxproj/WebKit/WebKitCommon.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj.filters:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDCommon.props:
        Replaced obj32, bin32, and lib32 with macros for 64-bit build.

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

        [Windows] Unreviewed build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

            Don't export Frame::settings() as it's an inline method now.

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

        [Windows] Unreviewed build fix after r154127.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Remove two symbols that are
        now part of JavaScriptCore.

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

        [Windows] Build correctsion after r154106

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add missing symbol export.

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

        [Windows] Correct build after r154088

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Remove unused
        (and now renamed) export symbols.

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

        Unreviewed build fix for Win64 after r153943.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Added 64-bit linker symbol for frameOrientationAtIndex.

2013-08-12  peavo@outlook.com  <peavo@outlook.com>

        [Win] TestWebKitAPI fails to link.
        https://bugs.webkit.org/show_bug.cgi?id=119619

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Export needed symbol.

2013-08-07  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix on Efl port after r153785.

        * CMakeLists.txt: Added "${WEBCORE_DIR}/style" in include list.

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

        Enabled WebGL on WinCairo port.
        https://bugs.webkit.org/show_bug.cgi?id=119502

        Reviewed by Benjamin Poulain.

        * WebKit.vcxproj/WebKit.sln: Build ANGLE libraries.
        * WebKit.vcxproj/WebKit/WebKitCFLite.props: Link to ANGLE libraries.

2013-08-05  Mark Lam  <mark.lam@apple.com>

        Gardening: fix build after r153728.

        Not reviewed.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-07-29  Alex Christensen  <achristensen@apple.com>

        Separated translator into preprocessor, translator_common,
        translator_hlsl (for libGLESv2), and translator_glsl (for ANGLEWebKitBridge).
        These projects are still not built by default.
        https://bugs.webkit.org/show_bug.cgi?id=119221

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.sln:
        Added separate ANGLE translator projects.

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

        Unreviewed build fix, AppleWin port.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-07-25  Alex Christensen  <achristensen@apple.com>

        Made Windows build system for ANGLE.
        https://bugs.webkit.org/show_bug.cgi?id=119103

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.sln:
        Added ANGLEGenerated, libEGL, libGLESv2, and translator projects.
        These projects are currently not built.

2013-07-23  Tim Horton  <timothy_horton@apple.com>

        Unreviewed build fix after r153054.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-07-22  Alex Christensen  <achristensen@apple.com>

        Fixed WinCairo build configurations.
        https://bugs.webkit.org/show_bug.cgi?id=118932

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.sln: 
        Made WinCairo not build AssembleBuildLogs (wasn't working, not necessary).
        Made Debug_WinCairo build with Debug_WinCairo configuration.
        Made 64-bit WinCairo not build QTMovieWin.

2013-07-19  Alex Christensen  <achristensen@apple.com>

        Unreviewed build fix on Windows after r152930.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Added missing close paren.

2013-07-19  Alex Christensen  <achristensen@apple.com>

        Added 64-bit symbols to WebKitExports.def.in for 64-bit Windows builds
        and a macro to only use them for 64-bit builds.
        https://bugs.webkit.org/show_bug.cgi?id=118887

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Added 64-bit symbols.
        * WebKit.vcxproj/WebKitExportGenerator/make-export-file-generator:
        Added support for new symbolWithPointer macro.

2013-07-19  Alex Christensen  <achristensen@apple.com>

        Added x64 configuration to Visual Studio build.
        https://bugs.webkit.org/show_bug.cgi?id=118888

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
        * WebKit.vcxproj/WebKit.sln:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj.filters:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters:

2013-07-16  Balazs Kelemen  <kbalazs@webkit.org>

        [CMake] Undefined references should be detected at build time
        https://bugs.webkit.org/show_bug.cgi?id=110236

        Reviewed by Christophe Dumez.

        Add library dependencies that were not defined explicitly before.

        * CMakeLists.txt:
        * PlatformEfl.cmake:

2013-07-11  Timothy Hatcher  <timothy@apple.com>

        Revert r152267 and soft link WebInspectorUI.framework again.

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

        Reviewed by David Kilzer.

        * WebKit.xcodeproj/project.pbxproj:

2013-07-01  Timothy Hatcher  <timothy@apple.com>

        Link to WebInspectorUI.framework at build time instead of soft linking.

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

        Reviewed by Joseph Pecoraro.

        * WebKit.xcodeproj/project.pbxproj:

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

        [Windows] Unreviewed build correction.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Need to export tag for textarea element.

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

        Add an accessibility delegate interface to AppleWin port.
        https://bugs.webkit.org/show_bug.cgi?id=118094.

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters:

2013-06-24  Alex Christensen  <achristensen@apple.com>

        Windows build links to opengl32.lib to allow WebGL compiling.
        https://bugs.webkit.org/show_bug.cgi?id=117949

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit/WebKitCommon.props: Added link to opengl32.lib.

2013-06-17  Darin Adler  <darin@apple.com>

        Sort all the Xcode project files
        https://bugs.webkit.org/show_bug.cgi?id=117696

        Reviewed by Anders Carlsson.

        * WebKit.xcodeproj/project.pbxproj: Ran the sort-Xcode-project-file script.

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

        Unreviewed. Fix a missing parenthesis in include directory path.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props:

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

        Make Windows makefile copy build output to a different folder.
        <rdar://problem/14219184>.

        * WebKit.vcxproj/WebKit.make:

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.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
        * WebKit.vcxproj/Interfaces/InterfacesDebug.props:
        * WebKit.vcxproj/Interfaces/InterfacesDebugWinCairo.props:
        * WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd:
        * WebKit.vcxproj/Interfaces/InterfacesProduction.props:
        * WebKit.vcxproj/Interfaces/InterfacesRelease.props:
        * WebKit.vcxproj/Interfaces/InterfacesReleaseWinCairo.props:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKitDebug.props:
        * WebKit.vcxproj/WebKit/WebKitDebugWinCairo.props:
        * WebKit.vcxproj/WebKit/WebKitPreBuild.cmd:
        * WebKit.vcxproj/WebKit/WebKitProduction.props:
        * WebKit.vcxproj/WebKit/WebKitRelease.props:
        * WebKit.vcxproj/WebKit/WebKitReleaseWinCairo.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebug.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebugWinCairo.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorProduction.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorRelease.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorReleaseWinCairo.props:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDDebug.props:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDDebugWinCairo.props:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDProduction.props:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDRelease.props:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDReleaseWinCairo.props:

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

        Modify Windows makefiles to copy some bin output into Program Files.
        https://bugs.webkit.org/show_bug.cgi?id=117714.
        <rdar://problem/14179054>

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.make:

2013-06-17  Michael Brüning  <michael.bruning@digia.com>

        [Qt] Remove Qt specific QTKIT flagged code.
        https://bugs.webkit.org/show_bug.cgi?id=117635

        Reviewed by Simon Hausmann.

        Due to disabling QTKIT for Qt in r151546, the
        code the flags that are not taken into account
        anymore and the code that has been rendered
        unreachable by this are removed.

        * WebKit1.pro:

2013-06-14  Alberto Garcia  <agarcia@igalia.com>

        [BlackBerry] Remove implementation of ContextMenu classes
        https://bugs.webkit.org/show_bug.cgi?id=114860

        Reviewed by Rob Buis.

        This code is not being used so we can safely remove it.

        * PlatformBlackBerry.cmake:

2013-06-13  Christophe Dumez  <ch.dumez@sisa.samsung.com>

        Unreviewed build fix after rr151563.

        Export needed symbols for Windows.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Windows] Revise WebKit project to show generated export definition file.
        https://bugs.webkit.org/show_bug.cgi?id=109629

        Reviewed by Mark Rowe.

        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Add generated file.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters: Ditto

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

        [WinCairo] Unreviewed build correction.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add
        missing symbols needed by TestWebKitAPI on WinCairo build.

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

        [Windows] Implement Accessibility2 APIs in Windows.
        https://bugs.webkit.org/show_bug.cgi?id=117561

        Reviewed by Anders Carlsson.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj: Add new IAccessible2 IDL files.
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters: Ditto.
        * WebKit.vcxproj/Interfaces/InterfacesCommon.props: Reference new Accessible2 folder.
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj: Build IAccessible2 symbols.
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters: Ditto.

2013-06-10  Bear Travis  <betravis@adobe.com>

        [CSS Shapes][CSS Exclusions] Split CSS Exclusions and CSS Shapes code
        https://bugs.webkit.org/show_bug.cgi?id=117162

        Reviewed by Alexandru Chiculita.

        Adding the WebCore/rendering/shapes directory to the include list.

        * CMakeLists.txt:

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

        Unreviewed. Build configuration fix. WebKitExportGenerator's include path should fall back to 
        $(WebKit_Libraries)\include\WebCore if $(ConfigurationBuildDir)\include\WebCore doesn't exist.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props:

2013-06-05  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed. Attempting a build fix for the AppleWin port after r151199.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Export the required symbol.

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

        Unreviewed. Some AppleWin VS2010 house cleaning.

        * WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd:
        * WebKit.vcxproj/WebKit/WebKitPreBuild.cmd:

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

        Unreviewed. Add AssembleBuildLogs project to WebKit solution in preparation for moving buildbots to VCExpress 2010.

        * WebKit.vcxproj/WebKit.sln:

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

        Get rid of JavaScript exports file on AppleWin port.
        https://bugs.webkit.org/show_bug.cgi?id=117050.

        Reviewed by Darin Adler.

        Start linking in WTF.lib now that it's a shared library.

        * WebKit.vcxproj/WebKit.sln:
        * WebKit.vcxproj/WebKit/WebKitCommon.props:

2013-05-28  Brent Fulgham  <bfulgham@apple.com>

        [Windows] Many css2.1 tests fail on Apple's Windows port.
        https://bugs.webkit.org/show_bug.cgi?id=75707

        Reviewed by Darin Adler.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Export the WebCore::directoryName method for use by DRT.

2013-05-27  Patrick Gansterer  <paroga@webkit.org>

        Use ICU_INCLUDE_DIRS in BlackBerry CMake files
        https://bugs.webkit.org/show_bug.cgi?id=116210

        Reviewed by Rob Buis.

        Set and use the ICU_INCLUDE_DIRS variable to avoid
        duplicated adding of the ICU include directory.

        * PlatformBlackBerry.cmake:

2013-05-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [BlackBerry] Move PagePopup implementation to WebKitSupport
        https://bugs.webkit.org/show_bug.cgi?id=116824

        Reviewed by Rob Buis.

        * PlatformBlackBerry.cmake: Update new file paths and names.

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

        [Windows] Expose database storage and cache locations via preferences.
        https://bugs.webkit.org/show_bug.cgi?id=116729

        Reviewed by Tim Horton.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Export
        three symbols needed to implement the feature.

2013-05-24  Anders Carlsson  <andersca@apple.com>

        Move history property list writer to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=116746

        Reviewed by Tim Horton.

        Add files to the Xcode project.

        * WebKit.xcodeproj/project.pbxproj:

2013-05-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [BlackBerry] Make PagePopup implementation independent from WebCore
        https://bugs.webkit.org/show_bug.cgi?id=116448

        Reviewed by Anders Carlsson.

        * PlatformBlackBerry.cmake: Add
        blackberry/WebCoreSupport/PagePopupBlackBerryClient.cpp to
        compilation.

2013-05-18  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Replace *_LIBRARY_NAME with *_OUTPUT_NAME
        https://bugs.webkit.org/show_bug.cgi?id=114554

        Reviewed by Gyuyoung Kim.

        Using variables as target names is very uncommon in CMake.
        The usual way to specify the name of the resulting binary
        is to set the OUTPUT_NAME target property.

        * CMakeLists.txt:
        * PlatformBlackBerry.cmake:
        * PlatformEfl.cmake:

2013-05-15  Ryosuke Niwa  <rniwa@webkit.org>

        Revert the previous commit.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-05-15  Ryosuke Niwa  <rniwa@webkit.org>

        Windows build fix attempt after r150160.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-05-15  Ryosuke Niwa  <rniwa@webkit.org>

        Windows build fix attempt after r150156.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-05-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [BlackBerry] Implement platform strategies
        https://bugs.webkit.org/show_bug.cgi?id=112162

        Reviewed by Rob Buis.

        * PlatformBlackBerry.cmake: Add new files to compilation.

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

        Unreviewed. AppleWin VS2010 build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-05-04  Dean Jackson  <dino@apple.com>

        Animations and Transitions should not start when globally suspended
        https://bugs.webkit.org/show_bug.cgi?id=114915

        Reviewed by Sam Weinig.

        Export AnimationController::isSuspended

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-05-04  Sam Weinig  <sam@webkit.org>

        Move PopupMenuMac and SearchPopupMenuMac to Source/WebKit/mac
        matching where they are in WebKit2.

        Reviewed by Anders Carlsson.

        * WebKit.xcodeproj/project.pbxproj:

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

        Following r149463, set Path for WebKit makefile as well.

        * WebKit.vcxproj/WebKit.make:

2013-05-01  Sergio Villar Senin  <svillar@igalia.com>

        Show a block cursor in overtype mode
        https://bugs.webkit.org/show_bug.cgi?id=114819

        Reviewed by Ryosuke Niwa.

        Export three more WebCore symbols.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [Windows, WinCairo] Remove pthread paths for WebKit build.
        https://bugs.webkit.org/show_bug.cgi?id=115390

        Reviewed by Tim Horton.

        Update Visual Studio property sheets to remove include paths and
        link references for the pthreadsVC2.dll, which is no longer used.

        * WebKit.vcxproj/WebKit/WebKitCommon.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props:

2013-04-28  Ryosuke Niwa  <rniwa@webkit.org>

        Windows build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-04-25  Ryosuke Niwa  <rniwa@webkit.org>

        StaticHashSetNodeList is unnecessary
        https://bugs.webkit.org/show_bug.cgi?id=115219

        Reviewed by Antonio Gomes.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
        * WebKit.vcxproj/Interfaces/InterfacesCommon.props:
        * WebKit.vcxproj/Interfaces/InterfacesDebug.props:
        * WebKit.vcxproj/Interfaces/InterfacesDebugWinCairo.props:
        * WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd:
        * WebKit.vcxproj/Interfaces/InterfacesProduction.props:
        * WebKit.vcxproj/Interfaces/InterfacesRelease.props:
        * WebKit.vcxproj/Interfaces/InterfacesReleaseWinCairo.props:
        * WebKit.vcxproj/WebKit.make:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKitApple.props:
        * WebKit.vcxproj/WebKit/WebKitCommon.props:
        * WebKit.vcxproj/WebKit/WebKitDebug.props:
        * WebKit.vcxproj/WebKit/WebKitDebugWinCairo.props:
        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd:
        * WebKit.vcxproj/WebKit/WebKitPreBuild.cmd:
        * WebKit.vcxproj/WebKit/WebKitProduction.props:
        * WebKit.vcxproj/WebKit/WebKitRelease.props:
        * WebKit.vcxproj/WebKit/WebKitReleaseWinCairo.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorBuildCmd.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebug.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebugWinCairo.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPostBuild.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorProduction.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorRelease.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorReleaseWinCairo.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDCommon.props:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDDebug.props:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDDebugWinCairo.props:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDProduction.props:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDRelease.props:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDReleaseWinCairo.props:

2013-04-25  Andreas Kling  <akling@apple.com>

        Remove ENABLE(PARSED_STYLE_SHEET_CACHING) and make it always-on.

        Rubber-stamped by Anders Koivisto.

        * PlatformWinCE.cmake:

2013-04-25  Patrick Gansterer  <paroga@webkit.org>

        Remove OS(WINCE) from AccessibilityObject.h
        https://bugs.webkit.org/show_bug.cgi?id=115192

        Reviewed by Andreas Kling.

        Use the same files like the the other PLATFORM(WIN) ports use.

        * PlatformWinCE.cmake:

2013-04-24  Jessie Berlin  <jberlin@apple.com>

        Assertion failure (crash in release) attempting to delete database storage in WK1 without
        creating a WebView first
        https://bugs.webkit.org/show_bug.cgi?id=115065

        Reviewed by Brady Eidson.

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

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

        Remove the WebKit layer of wxWebKit
        https://bugs.webkit.org/show_bug.cgi?id=115006

        Reviewed by Anders Carlsson.

        The wxWebKit port is no longer actively maintained by Kevin
        on webkit.org. Remove the code until new maintainers resume the work.

        * wx/WebBrowserShell.cpp: Removed.
        * wx/WebBrowserShell.h: Removed.
        * wx/WebDOMSelection.cpp: Removed.
        * wx/WebDOMSelection.h: Removed.
        * wx/WebEdit.cpp: Removed.
        * wx/WebEdit.h: Removed.
        * wx/WebFrame.cpp: Removed.
        * wx/WebFrame.h: Removed.
        * wx/WebFramePrivate.h: Removed.
        * wx/WebKitDefines.h: Removed.
        * wx/WebKitSupport/ChromeClientWx.cpp: Removed.
        * wx/WebKitSupport/ChromeClientWx.h: Removed.
        * wx/WebKitSupport/ContextMenuClientWx.cpp: Removed.
        * wx/WebKitSupport/ContextMenuClientWx.h: Removed.
        * wx/WebKitSupport/DragClientWx.cpp: Removed.
        * wx/WebKitSupport/DragClientWx.h: Removed.
        * wx/WebKitSupport/EditCommandWx.h: Removed.
        * wx/WebKitSupport/EditorClientWx.cpp: Removed.
        * wx/WebKitSupport/EditorClientWx.h: Removed.
        * wx/WebKitSupport/FrameLoaderClientWx.cpp: Removed.
        * wx/WebKitSupport/FrameLoaderClientWx.h: Removed.
        * wx/WebKitSupport/FrameNetworkingContextWx.h: Removed.
        * wx/WebKitSupport/InspectorClientWx.cpp: Removed.
        * wx/WebKitSupport/InspectorClientWx.h: Removed.
        * wx/WebSettings.cpp: Removed.
        * wx/WebSettings.h: Removed.
        * wx/WebView.cpp: Removed.
        * wx/WebView.h: Removed.
        * wx/WebViewPrivate.h: Removed.
        * wx/bindings/python/samples/simple.py: Removed.
        * wx/bindings/python/webview.i: Removed.
        * wx/bindings/python/wscript: Removed.
        * wx/wscript: Removed.

2013-04-22  Jessie Berlin  <jberlin@apple.com>

        Speculative Windows build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-04-22  Benjamin Poulain  <benjamin@webkit.org>

        Remove the memory instrumentation code
        https://bugs.webkit.org/show_bug.cgi?id=114931

        Reviewed by Andreas Kling.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-04-21  Benjamin Poulain  <benjamin@webkit.org>

        Improve StringImpl code density for older ARM hardware
        https://bugs.webkit.org/show_bug.cgi?id=114898

        Reviewed by Geoffrey Garen.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Unreviewed. WebKit_Source is incorrectly set.

        * WebKit.vcxproj/WebKit.make:

2013-04-19  Jose Lejin PJ  <jose.lejin@gmail.com>

        [EFL] Add method in ewk_settings for setting the CSS media type
        https://bugs.webkit.org/show_bug.cgi?id=113284

        Reviewed by Gyuyoung Kim.

        test_ewk_setting is added.

        * PlatformEfl.cmake:

2013-04-18  Sam Weinig  <sam@webkit.org>

        Network Process crashing trying to read in IDNScriptWhiteList.txt
        https://bugs.webkit.org/show_bug.cgi?id=114827

        Reviewed by Anders Carlsson.

        Move IDNScriptWhiteList.txt from WebKit to WebCore, so that the NetworkProcess does not have to link against
        WebKit. It was a layering violation for WebCore to be trying to access WebKit resources anyway.

        * WebKit.xcodeproj/project.pbxproj:

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

        Copy make-file-export-generator script to the the Source folders of the projects that use it.
        <rdar://problem/13675604>

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj.filters:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorBuildCmd.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/make-export-file-generator: Copied from Source/WebCore/make-export-file-generator.

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

        [Windows] Unreviewed VS2010 build correction.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props:
        Add correct link library to avoid mixture of ICU 4.0 and 4.6
        syumbol use.

2013-04-12  Jer Noble  <jer.noble@apple.com>

        TimeRanges::nearest() returns incorrect results.
        https://bugs.webkit.org/show_bug.cgi?id=114483

        Reviewed by Eric Carlson.

        Add symbols needed by WebCoreTestSupport to the exports list.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-04-11  Rune Lillesveen  <rune@opera.com>

        Incorrect evaluation of resolution media queries
        https://bugs.webkit.org/show_bug.cgi?id=114029

        Reviewed by Kenneth Rohde Christiansen.

        Removed setResolutionOverride from exports.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-04-08  Jeff Rogers  <jrogers@rim.com>

        [BlackBerry] Update BlackBerry JavaScript API
        https://bugs.webkit.org/show_bug.cgi?id=114065

        Reviewed by Rob Buis.

        Internal PR 317350
        Remove obsolete files.

        * PlatformBlackBerry.cmake:

2013-04-07  Patrick Gansterer  <paroga@webkit.org>

        Remove references to Skia and V8 from CMake files
        https://bugs.webkit.org/show_bug.cgi?id=114130

        Reviewed by Geoffrey Garen.

        * PlatformBlackBerry.cmake:

2013-04-06  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Remove general include directories from platform specific files

        Move the include directories, which are required by all CMake ports
        to the general CMakeLists.txt to fix the build for Windows CE port.

        * CMakeLists.txt:
        * PlatformBlackBerry.cmake:
        * PlatformEfl.cmake:

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

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

        * WebKit.vcxproj/WebKit.make:

2013-04-04  Benjamin Poulain  <benjamin@webkit.org>

        Remove Webkit/chromium
        https://bugs.webkit.org/show_bug.cgi?id=113998

        Reviewed by Ryosuke Niwa.

        O Knights of Ni, you are just and fair, and we will return with a shrubbery.

        * chromium: Removed.

2013-04-04  Christophe Dumez  <ch.dumez@sisa.samsung.com>

        [Cairo] Fix canvas drawing of SVG-based patterns and remove NativeImageCairo
        https://bugs.webkit.org/show_bug.cgi?id=113929

        Reviewed by Martin Robinson.

        Remove outdated symbols now that NativeImageCairo was removed.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Unreviewed VS2010 build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-03-27  Mark Lam  <mark.lam@apple.com>

        Rolling out r147044.
        https://bugs.webkit.org/show_bug.cgi?id=113352.

        Not Reviewed.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-03-27  Mark Lam  <mark.lam@apple.com>

        Greening the Apple Win bot (debug build).
        https://bugs.webkit.org/show_bug.cgi?id=113352.

        Not Reviewed.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-03-27  Mark Lam  <mark.lam@apple.com>

        Greening the Apple Win bot.
        https://bugs.webkit.org/show_bug.cgi?id=113352.

        Not Reviewed.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-03-22  Ryosuke Niwa  <rniwa@webkit.org>

        The second part of the build fix for r146702. This should do it.
        I had to see the mangled name for the new signature.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-03-22  Ryosuke Niwa  <rniwa@webkit.org>

        Build fix attempt after r146702.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-03-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [BlackBerry] Add custom BackForwardList client implementation
        https://bugs.webkit.org/show_bug.cgi?id=113024

        Reviewed by Rob Buis.

        PR 310030
        Internally reviewed by Joe Mason.

        * PlatformBlackBerry.cmake: Add new files to compilation.

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.

        * WebKit.vcxproj/FeatureDefines.props: Removed.
        * WebKit.vcxproj/FeatureDefinesCairo.props: Removed.
        * WebKit.vcxproj/WebKit/cURL.props: Removed.
        * WebKit.vcxproj/WinCairo.props: Removed.
        * WebKit.vcxproj/common.props: Removed.
        * WebKit.vcxproj/debug.props: Removed.
        * WebKit.vcxproj/debug_wincairo.props: Removed.
        * WebKit.vcxproj/debugsuffix.props: Removed.
        * WebKit.vcxproj/production.props: Removed.
        * WebKit.vcxproj/release.props: Removed.

2013-03-21  Ryosuke Niwa  <rniwa@webkit.org>

        Windows build fix after r146430.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [WinCairo] Top-level solution change to build under VS2010.
        https://bugs.webkit.org/show_bug.cgi?id=112861.

        Reviewed by Tim Horton.

        * WebKit.vcxproj/WebKit.sln: Add final set of WinCairo build
        targets.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Add #if/def guards around some media-specific exports that
        are not provided by the WinCairo port.

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

        [WinCairo] Build the WebKit.dll under VS2010.
        https://bugs.webkit.org/show_bug.cgi?id=112759

        Reviewed by Tim Horton.

        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj: Update project to
        build WinCairo variant using new property sheets.
        * WebKit.vcxproj/Interfaces/InterfacesDebugWinCairo.props: Added.
        * WebKit.vcxproj/Interfaces/InterfacesReleaseWinCairo.props: Added.
        * WebKit.vcxproj/WebKit.sln: Update solution to use WinCairo
        build targets for WebKit.dll-related projects.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Update project to build
        WinCairo variant using new property sheets.
        * WebKit.vcxproj/WebKit/cURL.props: Added.
        * WebKit.vcxproj/WebKit/WebKitDebugWinCairo.props: Added.
        * WebKit.vcxproj/WebKit/WebKitReleaseWinCairo.props: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
        Update project to build WinCairo variant using new property sheets.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebugWinCairo.props: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorReleaseWinCairo.props: Added.
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj: Update project to
        build WinCairo variant using new property sheets.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDDebugWinCairo.props: Added.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDReleaseWinCairo.props: Added.
        * WebKit.vcxproj/WinCairo.props: Added.
        * WebKit.vcxproj/debug_wincairo.props: Added.

2013-03-20  Eric Carlson  <eric.carlson@apple.com>

        Allow ports specific text track menu
        https://bugs.webkit.org/show_bug.cgi?id=112800

        Reviewed by Dean Jackson.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add new exports.
        * win/WebKit.vcproj/WebKitExports.def.in: Ditto.

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

        AppleWin VS2010 build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        [WinCairo] Build WinCairo port under VS2010 
        https://bugs.webkit.org/show_bug.cgi?id=112604

        Reviewed by Tim Horton.

        * WebKit.vcxproj/WebKit.sln: Add Debug_WinCairo and Release_WinCairo
        build targets. No other changes in this patch.
        * WebKit.vcxproj/FeatureDefinesCairo.props: Add parallel property
        sheet for WinCairo version of build.

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

        AppleWin VS2010 build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-03-14  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Improve the handling of mock geolocation, device orientation and motion clients

        Reviewed by Tor Arne Vestbø.

        The mock versions of these web facing features should be instantiated when
        running in DumpRenderTree only. In order for them to work, no extra Qt modules
        such as QtLocation are actually needed.

        This patch decouples enabling device orientation/motion and geolocation from
        the underlying Qt modules and makes them available in developer builds
        (!production_build) and backed by mock backends when running in drt.

        So if the Qt 5 modules are available, they'll be used (unless drtRun). For
        developers the web facing features are always enabled (although requests will
        time out) and the mock backends are enabled inside DRT, allowing for the layout
        tests to run with less dependencies.

        In addition this also enables the mock device motion client, which was
        previously never instantiated.

        * WebKit1.pri:
        * WebKit1.pro:

2013-03-13  Genevieve Mak  <gmak@rim.com>

        [BlackBerry] Add Proximity Detector.
        https://bugs.webkit.org/show_bug.cgi?id=112278

        Reviewed by Rob Buis.

        Internally Reviewed by Mike Lattanzio.
        PR #243385

        * PlatformBlackBerry.cmake:

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

        Build fix for AppleWin VS2010.

        * WebKit.vcxproj/FeatureDefines.props:

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

        Unreviewed partial roll-out of r145003. Disable
        ENABLE_CURSOR_VISIBILITY on win.

        * WebKit.vcxproj/FeatureDefines.props:

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

        Default mouse cursor behavior should be auto-hide for full screen video with custom controls
        https://bugs.webkit.org/show_bug.cgi?id=107601

        Reviewed by Beth Dakin.

        Enable the CURSOR_VISIBILITY feature.

        * WebKit.vcxproj/FeatureDefines.props:

2013-03-05  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Build break with latest EFL libraries
        https://bugs.webkit.org/show_bug.cgi?id=111028

        Reviewed by Dirk Pranke.

        * PlatformEfl.cmake: Added ECORE_X_INCLUDE_DIRS.

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

        Unreviewed. AppleWin build fix.

        * WebKit.vcxproj/FeatureDefines.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Unreviewed, rolling out r144567.
        http://trac.webkit.org/changeset/144567
        https://bugs.webkit.org/show_bug.cgi?id=111266

        Does not compile on apple-win (Requested by abarth on
        #webkit).

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Unreviewed AppleWin build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props:

2013-02-26  Alberto Garcia  <agarcia@igalia.com>

        [BlackBerry] Upstream the datalist support UI
        https://bugs.webkit.org/show_bug.cgi?id=110736

        Reviewed by Rob Buis.

        Original code by Otto Derek Cheung <otcheung@rim.com>

        * PlatformBlackBerry.cmake:

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

        Unreviewed. VS2010 solution build fix.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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.

        * WebKit.vcxproj/FeatureDefines.props:

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

        Get VS2010 Solution B&I ready.
        <rdar://problem/1322988>

        Rubberstamped by Timothy Horton.        
        
        Add Production configuration. 
        Add a WebKit submit solution with a DebugSuffix configuration. 
        Modify WebKit.make as necessary.
        
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
        * WebKit.vcxproj/Interfaces/InterfacesProduction.props: Added.
        * WebKit.vcxproj/Interfaces/InterfacesRelease.props:
        * WebKit.vcxproj/WebKit.make: Added.
        * WebKit.vcxproj/WebKit.sln:
        * WebKit.vcxproj/WebKit.submit.sln: Added.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj:
        * WebKit.vcxproj/WebKit/WebKitCommon.props:
        * WebKit.vcxproj/WebKit/WebKitProduction.props: Added.
        * WebKit.vcxproj/WebKit/WebKitRelease.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPostBuild.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorProduction.props: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorRelease.props:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDProduction.props: Added.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDRelease.props:
        * WebKit.vcxproj/common.props:
        * WebKit.vcxproj/debugsuffix.props: Added.
        * WebKit.vcxproj/production.props: Added.
        * WebKit.vcxproj/releaseproduction.props: Removed.

2013-02-19  Tony Chang  <tony@chromium.org>

        Unreviewed, include exports for VS2010 as well.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-02-18  Brent Fulgham  <bfulgham@webkit.org>

        [Windows] Unreviewed VS2010 build correction.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Sync
        export definition with VS2005 version.

2013-02-15  Rik Cabanier  <cabanier@adobe.com>

        Add platform support for -webkit-background-blend-mode to CG context
        https://bugs.webkit.org/show_bug.cgi?id=108549

        Reviewed by Dean Jackson.

        Fixed build issue.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Unreviewed. Touch-ups to the VS2010 WebKit solution.
        Remove un-needed include directories and force includes. 
        Update exports file.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        * WebKit.vcxproj/common.props:
        * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherCommon.props:
        * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherCommon.props:
        * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj:
        * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj.filters:
        * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj:
        * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj.filters:
        * WinLauncher/WinLauncher.vcxproj/WinLauncherCommon.props:
        * win/record-memory/record-memoryCommon.props:
        * WebCore.vcxproj/WebCore.vcxproj:
        * WebCore.vcxproj/WebCore.vcxproj.filters:
        * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
        * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
        * JavaScriptCore.vcxproj/jsc/jscCommon.props:
        * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
        * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
        * WTF.vcxproj/WTFCommon.props:

2013-02-14  Tony Chang  <tony@chromium.org>

        Unreviewed, set svn:eol-style native for .sln, .vcproj, and .vsprops files.
        https://bugs.webkit.org/show_bug.cgi?id=96934

        * WebKit.vcxproj/WebKit.sln: Modified property svn:eol-style.

2013-02-14  Tony Chang  <tony@chromium.org>

        Unreviewed, set svn:eol-style CRLF for .sln files.

        * WebKit.vcxproj/WebKit.sln: Modified property svn:eol-style.

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

        Add TestWebKitAPI, gtest-md and record-memory projects to VS2010 WebKit solution.
        https://bugs.webkit.org/show_bug.cgi?id=107034.

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.sln:

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

        Unreviewed. Build fix for VS2010 WebKit solution.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-02-11  Adenilson Cavalcanti  <cavalcantii@gmail.com>

        Build fix: r142549 broke EFL build
        https://bugs.webkit.org/show_bug.cgi?id=109527

        Reviewed by Kentaro Hara.

        Build fix.

        * CMakeLists.txt:

2013-02-11  Brent Fulgham  <bfulgham@webkit.org>

        Rename Visual Studio solution folders to avoid conflicts with project names
        https://bugs.webkit.org/show_bug.cgi?id=109484

        Reviewed by Tim Horton.

        * WebKit.vcxproj/WebKit.sln: Rename several solution folders (e.g.,
        WTF, WebCore, WebKit, JavaScriptCore) so that they do not conflict
        with projects using the same name.

2013-02-08  Benjamin Poulain  <bpoulain@apple.com>

        Move workerThreadCount from TestRunner to WebCore Internals
        https://bugs.webkit.org/show_bug.cgi?id=109239

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj:

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

        Unreviewed. Corrections the exports definition file.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Unreviewed. More VS2010 WebKit solution touchups.
        Make WebKitExports.def.in be treated as a custom build file so that changes to it cause the exports to be rebuilt.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj.filters:
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

        Unreviewed. Touchups to VS2010 WebKit solution.
        Add WinLauncher projects to solution.

        * WebKit.vcxproj/WebKit.sln:

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

        Unreviewed. Get rid of redundant exports in export definitions file.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

2013-02-05  Brent Fulgham  <bfulgham@webkit.org>

        Unreviewed Visual Studio 2010 build correction.

        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
        Link export definitions out of date with ToT.  Corrected.

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

        Add a JavaScriptCore Export Generator project.
        https://bugs.webkit.org/show_bug.cgi?id=108971.

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/WebKit.sln:

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

        Unreviewed. Delete some errant preprocessor definitions.

        * WebKit.vcxproj/WebKit/WebKitCommon.props:

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

        VS2010 WebKit projects, scripts, and property sheets.
        https://bugs.webkit.org/show_bug.cgi?id=106989.

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj/Interfaces: Added.
        * WebKit.vcxproj/Interfaces/FixMIDLHeaders.pl: Copied from win/WebKit.vcproj/FixMIDLHeaders.pl.
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj: Added.
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters: Added.
        * WebKit.vcxproj/Interfaces/Interfaces.vcxproj.user: Added.
        * WebKit.vcxproj/Interfaces/InterfacesCommon.props: Added.
        * WebKit.vcxproj/Interfaces/InterfacesDebug.props: Added.
        * WebKit.vcxproj/Interfaces/InterfacesPostBuild.cmd: Added.
        * WebKit.vcxproj/Interfaces/InterfacesPreBuild.cmd: Added.
        * WebKit.vcxproj/Interfaces/InterfacesRelease.props: Added.
        * WebKit.vcxproj/WebKit: Added.
        * WebKit.vcxproj/WebKit.sln:
        * WebKit.vcxproj/WebKit/WebKit.vcxproj: Added.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters: Added.
        * WebKit.vcxproj/WebKit/WebKit.vcxproj.user: Added.
        * WebKit.vcxproj/WebKit/WebKitApple.props: Added.
        * WebKit.vcxproj/WebKit/WebKitCFLite.props: Added.
        * WebKit.vcxproj/WebKit/WebKitCommon.props: Added.
        * WebKit.vcxproj/WebKit/WebKitDebug.props: Added.
        * WebKit.vcxproj/WebKit/WebKitDirectX.props: Added.
        * WebKit.vcxproj/WebKit/WebKitPostBuild.cmd: Added.
        * WebKit.vcxproj/WebKit/WebKitPreBuild.cmd: Added.
        * WebKit.vcxproj/WebKit/WebKitPreLink.cmd: Added.
        * WebKit.vcxproj/WebKit/WebKitRelease.props: Added.
        * WebKit.vcxproj/WebKit/resource.h: Copied from win/WebKit.vcproj/resource.h.
        * WebKit.vcxproj/WebKitExportGenerator: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj.filters: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj.user: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorBuildCmd.cmd: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorCommon.props: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorDebug.props: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPostBuild.cmd: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorPreBuild.cmd: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExportGeneratorRelease.props: Added.
        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Copied from win/WebKit.vcproj/WebKitExports.def.in.
        * WebKit.vcxproj/WebKitGUID: Added.
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj: Added.
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters: Added.
        * WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.user: Added.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDCommon.props: Added.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDDebug.props: Added.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDPostBuild.cmd: Added.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDPreBuild.cmd: Added.
        * WebKit.vcxproj/WebKitGUID/WebKitGUIDRelease.props: Added.

2013-01-31  Christophe Dumez  <dchris@gmail.com>

        [EFL] Disable Web Intents
        https://bugs.webkit.org/show_bug.cgi?id=108457

        Reviewed by Alexey Proskuryakov.

        Remove intents files from EFL CMake project.

        * PlatformEfl.cmake:

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

        Unreviewed. Rename LLInt projects folder and make appropriate changes to solutions.

        * WebKit.vcxproj/WebKit.sln:

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

        Unreviewed. Add svn:eol-style to solution file, not eol-style.

        * WebKit.vcxproj/WebKit.sln: Added property svn:eol-style. Removed property eol-style.

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

        Unreviewed. Added eol-style=native to solution file.

        * WebKit.vcxproj/WebKit.sln: Added property eol-style.

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

        Unreviewed. Checkin the OpenSource WebKit solution.

        * WebKit.vcxproj/WebKit.sln:

2013-01-23  Tony Chang  <tony@chromium.org>

        Unreviewed, set svn:eol-style to CRLF on Windows .sln files.

        * WebKit.vcxproj/WebKit.sln: Added property svn:eol-style.

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

        Add the VS2010 WebKit solution folder and solution file.
        The solution of course will not load until the dependent projects are all completed.
        https://bugs.webkit.org/show_bug.cgi?id=106949.

        Reviewed by Brent Fulgham.

        * WebKit.vcxproj: Added.
        * WebKit.vcxproj/WebKit.sln: Added.

2013-01-22  Krzysztof Czech  <k.czech@samsung.com>

        [EFL] Adds Accessibility support to wk1
        https://bugs.webkit.org/show_bug.cgi?id=107440

        Reviewed by Gyuyoung Kim.

        * PlatformEfl.cmake: Adds ATK headers and libraries.

2013-01-17  Poul Sysolyatin  <psytonx@gmail.com>

        32-bit build for Qt5 on Mac OS fails.
        https://bugs.webkit.org/show_bug.cgi?id=107094

        We need to define NS_BUILD_32_LIKE_64 for 32-bit build for Mac OS.
        Fixed 32-bit build detection for support Qt5.

        Reviewed by Benjamin Poulain.

        * WebKit1.pro:

2013-01-14  Dean Jackson  <dino@apple.com>

        [ANGLE] Update ANGLE in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=106274

        Unreviewed attempted build fix.

        The khrplatform.h file is now a public header without a directory
        prefix. Update the include path to look in the right place.

        * PlatformEfl.cmake:

2013-01-14  Max Vujovic  <mvujovic@adobe.com>

        [ANGLE] Update ANGLE in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=106274

        Reviewed by Dean Jackson.

        Update ANGLE to r1641.

        * PlatformEfl.cmake: Add ANGLE/include to the include directories list because ShaderLang.h
        now includes "KHR/khrplatform.h", which is located in ANGLE/include/KHR/khrplatform.h.

2013-01-10  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Add gstreamer 1.0.5 to jhbuild
        https://bugs.webkit.org/show_bug.cgi?id=106178

        Reviewed by Laszlo Gombos.

        Remove GSTREAMER_INTERFACES_LIBRARIES from EFL
        CMake configuration.

        * PlatformEfl.cmake:

2013-01-07  Ryosuke Niwa  <rniwa@webkit.org>

        Sorted the xcodeproj file.

        * WebKit.xcodeproj/project.pbxproj:

2012-12-20  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Build break with latest EFL libraries.
        https://bugs.webkit.org/show_bug.cgi?id=104827

        Reviewed by Laszlo Gombos.

        * PlatformEfl.cmake: Includes eo EFL library.

2012-12-18  Joseph Pecoraro  <pecoraro@apple.com>

        [Mac] Add Build Phase to Check Headers for Inappropriate Macros (Platform.h macros)
        https://bugs.webkit.org/show_bug.cgi?id=104279

        Reviewed by David Kilzer.

        Add a build phase to check the public WebKit headers for
        inappropriate macros. Also set the executable as an input
        path on the other check-* build phases.

        * WebKit.xcodeproj/project.pbxproj:

2012-12-12  Mark Lam  <mark.lam@apple.com>

        Encapsulate externally used webdatabase APIs in DatabaseManager.
        https://bugs.webkit.org/show_bug.cgi?id=104741.

        Reviewed by Sam Weinig.

        Use DatabaseManager instead of accessing DatabaseTracker, AbstractDatabase,
        and DatabaseContext directly. This is to prepare for upcoming webkit2
        refactoring.

        * WebKit.xcodeproj/project.pbxproj:

2012-12-05  Halton Huo  <halton.huo@intel.com>

        [CMake] Unify coding style for CMake files
        https://bugs.webkit.org/show_bug.cgi?id=103605

        Reviewed by Laszlo Gombos.

        Update cmake files(.cmake, CMakeLists.txt) with following style rules:
        1. Indentation
        1.1 Use spaces, not tabs.
        1.2 Four spaces as indent.
        2. Spacing
        2.1 Place one space between control statements and their parentheses.
            For eg, if (), else (), elseif (), endif (), foreach (),
            endforeach (), while (), endwhile (), break ().
        2.2 Do not place spaces between function and macro statements and
            their parentheses. For eg, macro(), endmacro(), function(),
            endfunction().
        2.3 Do not place spaces between a command or function or macro and its
            parentheses, or between a parenthesis and its content. For eg,
            message("testing") not message( "testing") or message ("testing" )
        2.4 No space at line ending.
        3. Lowercase when call commands macros and functions. For eg,
           add_executable() not ADD_EXECUTABLE(), set() not SET().

        * CMakeLists.txt:
        * PlatformBlackBerry.cmake:
        * PlatformEfl.cmake:
        * PlatformWinCE.cmake:

2012-12-03  Pierre Rossi  <pierre.rossi@digia.com>

        [Qt] another stab at fixing the windows build 

        It seems the QT_BUILD_{TARGET}_LIB are not set as they should by qt_module.prf.
        Define them by hand to be on the safe side.

        * WebKit1.pro:

2012-11-30  Simon Hausmann  <simon.hausmann@digia.com>, Pierre Rossi  <pierre.rossi@digia.com>

        [Qt] Separate Qt WebKit into Qt WebKit and Qt WebKit Widgets
        https://bugs.webkit.org/show_bug.cgi?id=99314

        Reviewed by Tor Arne Vestbø.

        This big change separates QtWebKit into QtWebKit and QtWebKitWidgets as
        shared libraries.

        It's a big refactoring that mostly involves moving WebCore dependent
        code into QtWebKit and accessing it through exported QWebFrameAdapter
        and QWebPageAdapter classes.

        * WebKit1.pro:
        * WebKitWidgets.pri: Removed.
        * WebKitWidgets.pro: Removed.

2012-11-22  Jeff Rogers  <jrogers@rim.com>

        [BlackBerry] Update Web Notifications Implementation
        https://bugs.webkit.org/show_bug.cgi?id=102621

        Reviewed by George Staikos.

        Reviewed internally by George Staikos and Joe Mason.
        Internal PR 172120
        Add new Notification files and remove obsolete ones.

        * PlatformBlackBerry.cmake:

2012-11-22  Simon Hausmann  <simon.hausmann@digia.com>, Pierre Rossi <pierre.rossi@digia.com>

        [Qt] Separate QWidget dependant code into separate WebKitWidgets static library
        https://bugs.webkit.org/show_bug.cgi?id=102800

        Reviewed by Tor Arne Vestbø.

        This patch separates code that needs to use QWidget related APIs in
        WebKit/qt/WebCoreSupport and Api from code that doesn't. This means for
        example FrameLoaderClientQt.cpp remains in the WebKit1 static library,
        while qwebpage.cpp and qwebframe.cpp become part of the WebKitWidgets
        static library. WebKit1 is compiled without QT += widgets and therefore
        any widget related dependency has been moved "up" and out of WebKit1 into
        the WebKitWidgets library.

        Between the code in WebKit.a and WebKitWidgets.a new adapters and
        interfaces have been introduced, such as QWebPageAdapter and
        QWebFrameAdapter. QWebPageAdapter, when used from WebKit1, is a way to
        call out into the API layer, implemented by QWebPage (QWebPagePrivate).
        The other way around if QWebPage wants to access WebCore or
        WebCoreSupport related functionality, it will go through
        QWebPageAdapater (as base class). The separation in the direction up
        into the API layer is complete with this patch, no code in WebKit1
        depends on QtWidgets. The separation the other way around, code in the
        API layer not using any WebCore types, is not complete yet.

        Some classes such as QWebSettings, QWebElement or
        DumpRenderTreeSupportQt remain in WebKit1. While they are API layer,
        they do not depend on widget related Qt APIs and they make much more
        use of WebCore internal APIs and therefore are easier to keep in
        WebKit1.

        In the future we plan to place a real shared library boundary between
        WebKit1 and WebKitWidgets, by keeping the WebKit1 static library as
        part of the QtWebKit shared library and by turning the WebKitWidgets
        static library into a shared one.

        * WebKit1.pri:
        * WebKit1.pro:
        * WebKitWidgets.pri: Copied from Source/WebKit/WebKit1.pri.
        * WebKitWidgets.pro: Added.

2012-11-21  Kai Koehne  <kai.koehne@digia.com>

        [Qt] MinGW: Don't add OpenGL library dependencies here
        https://bugs.webkit.org/show_bug.cgi?id=102924

        Reviewed by Simon Hausmann.

        As the comment suggests the dependency is already for WebCore, so add it there instead.

        * WebKit1.pri:

2012-11-18  Laszlo Gombos  <l.gombos@samsung.com>

        [CMake] Consolidate common input files
        https://bugs.webkit.org/show_bug.cgi?id=101632

        Reviewed by Rob Buis.

        Consolidate and sort the list of files.

        * PlatformEfl.cmake:

2012-11-12  Timothy Hatcher  <timothy@apple.com>

        Add a dock button to the top right corner of the Web Inspector window (similar to the full screen button).

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

        Reviewed by Joseph Pecoraro.

        * WebKit.xcodeproj/project.pbxproj: Added Dock.pdf.

2012-11-08  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Remove non-variable options from the build system
        https://bugs.webkit.org/show_bug.cgi?id=101506

        Reviewed by Kenneth Rohde Christiansen.

        Remove WTF_USE_FREETYPE and ENABLE_GLIB_SUPPORT cmake variables
        as these are always set to const 1 and not really configurable.

        * PlatformEfl.cmake:

2012-11-07  Andreas Kling  <akling@apple.com>

        Remove build-webkit dependency on Java SDK for Apple Mac WebKit.
        <http://webkit.org/b/101492>

        Reviewed by Anders Carlsson.

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

2012-11-06  Laszlo Gombos  <l.gombos@samsung.com>

        [EFL] Simplify the build system
        https://bugs.webkit.org/show_bug.cgi?id=101392

        Reviewed by Kenneth Rohde Christiansen.

        Use WTF_USE_3D_GRAPHICS to guard the inclusion of surfaces and textmap 
        directories under WebCore/graphics to be consistent with 
        WebCore/PlatformEfl.cmake.

        * PlatformEfl.cmake:

2012-11-04  Halton Huo  <halton.huo@intel.com>

        [EFL] Use _LIBRARIES instead of _LIBRARY
        https://bugs.webkit.org/show_bug.cgi?id=101042

        Reviewed by Gyuyoung Kim.

        In CMake Find files, _LIBRARY is intended for internal use, should
        use _LIBRARIES instead.

        * PlatformEfl.cmake: s/_LIBRARY}/_LIBRARIES}

2012-11-01  Seonae Kim  <sunaeluv.kim@samsung.com>

        [EFL][DRT] Support Geolocation
        https://bugs.webkit.org/show_bug.cgi?id=97427

        Reviewed by Gyuyoung Kim. 

        Add a mock directory to use GeolocationClientMock in DumpRenderTree.

        * PlatformEfl.cmake:

2012-10-31  Otto Derek Cheung  <otcheung@rim.com>

        [BlackBerry] Adding window.external to our port
        https://bugs.webkit.org/show_bug.cgi?id=100868

        Reviewed by Rob Buis.

        Adding ExternalExtension classes to the BB cmake file.

        * PlatformBlackBerry.cmake:

2012-10-31  Michał Pakuła vel Rutka  <m.pakula@samsung.com>

        [EFL][DRT] EventSender requires contextClick implementation
        https://bugs.webkit.org/show_bug.cgi?id=86091

        Reviewed by Gyuyoung Kim.

        Add new unit test file, needed due to ewk API changes.

        * PlatformEfl.cmake:

2012-10-30  Peter Wang  <peter.wang@torchmobile.com.cn>

        [BlackBerry] Clean the code of "JavaScriptDebuggerBlackBerry"
        https://bugs.webkit.org/show_bug.cgi?id=100724

        Reviewed by Rob Buis.

        Remove the code of JavaScriptDebuggerBlackBerry.

        * PlatformBlackBerry.cmake:

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

        Remove references to unsupported OS and Xcode versions.

        Reviewed by Anders Carlsson.

        * WebKit.xcodeproj/project.pbxproj:

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

        Unreviewed, rolling out r132601.
        http://trac.webkit.org/changeset/132601
        https://bugs.webkit.org/show_bug.cgi?id=100494

        It broke the Qt build (Requested by Ossy on #webkit).

        * PlatformEfl.cmake:

2012-10-26  Xiaobo Wang  <xbwang@torchmobile.com.cn>

        [BlackBerry] Support pixel tests for BlackBerry DRT
        https://bugs.webkit.org/show_bug.cgi?id=100210

        Reviewed by Rob Buis.

        Adds a step to build ImageDiff from Qt for DRT. Most of the works are
        accomplished by Christopher Wells.

        * PlatformBlackBerry.cmake:

2012-10-24  Alexey Proskuryakov  <ap@apple.com>

        Add a strategy for shared workers
        https://bugs.webkit.org/show_bug.cgi?id=100165

        EFL build fix by Christophe Dumez.

        Reviewed by Brady Eidson.

        * CMakeLists.txt: Add WebCore/workers to include paths.

2012-10-24  Otto Derek Cheung  <otcheung@rim.com>

        [BlackBerry] Rename GeolocationControllerClientBlackBerry to GeolocationClientBlackBerry
        https://bugs.webkit.org/show_bug.cgi?id=100250

        Reviewed by Rob Buis.

        Rename GeolocationControllerClientBlackBerry to GeolocationClientBlackBerry
        to prevent confusion.

        PR 230196

        * PlatformBlackBerry.cmake:

2012-10-23  Hyowon Kim  <hw1008.kim@samsung.com>

        [Texmap][EFL] Add AcceleratedCompositingContextEfl to the build system.
        https://bugs.webkit.org/show_bug.cgi?id=88630

        Reviewed by Gyuyoung Kim.

        * PlatformEfl.cmake: Add the AcceleratedCompositingContextEfl.cpp file
        and INCLUDE paths for TEXTURE_MAPPER_GL.

2012-10-18  Kangil Han  <kangil.han@samsung.com>

        [EFL] Add unit test for ewk_frame_source_get.
        https://bugs.webkit.org/show_bug.cgi?id=95984

        Reviewed by Gyuyoung Kim.

        Add test_ewk_frame.cpp for unit test.

        * PlatformEfl.cmake:

2012-10-15  David Kilzer  <ddkilzer@apple.com>

        Move framework and library linking into WebKit.xcconfig
        <http://webkit.org/b/99284>

        Reviewed by Mark Rowe.

        * WebKit.xcodeproj/project.pbxproj: Remove frameworks and
        libraries from Xcode project file.

2012-10-15  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL][WK2] Implement Favicons API
        https://bugs.webkit.org/show_bug.cgi?id=99087

        Reviewed by Kenneth Rohde Christiansen.

        Remove ewk_util.cpp from PlatformEfl.cmake now that its
        code has been moved to WebCore to be reused in WK2.

        * PlatformEfl.cmake:

2012-10-15  Dongwoo Joshua Im  <dw.im@samsung.com>

        [EFL] Set the basepath of the File System API.
        https://bugs.webkit.org/show_bug.cgi?id=98344

        Reviewed by Gyuyoung Kim.

        Set the basepath of the File System API using the internal setter function.

        * PlatformEfl.cmake: Add new include path.

2012-10-15  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Share resources installed for inspector
        https://bugs.webkit.org/show_bug.cgi?id=98991

        Reviewed by Gyuyoung Kim.

        * PlatformEfl.cmake:
        Extracted build scripts which install resources to WebKit/PlatformEfl.cmake.

2012-10-15  George Staikos  <staikos@webkit.org>

        [BlackBerry] Adapt to Platform API changes in string handling
        https://bugs.webkit.org/show_bug.cgi?id=99248

        Reviewed by Yong Li.

        Convert usage of WebString, char* and std::string to BlackBerry::Platform::String.

        * PlatformBlackBerry.cmake:

2012-10-13  Jakob Petsovits  <jpetsovits@rim.com>

        [BlackBerry] Fetch blit rects from a viewport accessor
        https://bugs.webkit.org/show_bug.cgi?id=98581
        RIM PR 173292

        Reviewed by George Staikos.
        Internally reviewed by Arvid Nilsson.

        Add new ViewportAccessor files to the build.
        See Source/WebKit/blackberry/ChangeLog for the
        verbose commit message.

        * PlatformBlackBerry.cmake:

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

        Unreviewed, rolling out r131189.
        http://trac.webkit.org/changeset/131189
        https://bugs.webkit.org/show_bug.cgi?id=99187

        Made inspector http tests crash on WK2. (Requested by rakuco
        on #webkit).

        * PlatformEfl.cmake:

2012-10-12  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Share resources installed for inspector
        https://bugs.webkit.org/show_bug.cgi?id=98991

        Reviewed by Gyuyoung Kim.

        * PlatformEfl.cmake:
        Extracted build scripts which install resources to WebKit/PlatformEfl.cmake.

2012-10-11  Chris Guan  <chris.guan@torchmobile.com.cn>

        [Blackberry] makes NavigatorContentUtils work
        https://bugs.webkit.org/show_bug.cgi?id=99022

        Reviewed by Rob Buis.

        Because r126735 renamed RegisterProtocolHandler API to NavigatorContentUtils, So we
        need add Modules/navigatorcontentutils into WebKit_INCLUDE_DIRECTORIES.

        * PlatformBlackBerry.cmake:

2012-10-10  Konrad Piascik  <kpiascik@rim.com>

        [BlackBerry] Install inspector files into staging directory.
        https://bugs.webkit.org/show_bug.cgi?id=98930

        Reviewed by Rob Buis.

        Internally reviewed by Ming Xie.
        Install the web inspector resources into the staging directory to make it easier to flash to device.

        * PlatformBlackBerry.cmake:

2012-10-09  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Fix build with QtMultimedia

        Reviewed by Tor Arne Vestbø.

        * WebKit1.pri: WK1 needs QtMultimediaWidgets for QVideoWidget and friends.

2012-10-08  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Make RenderThemeQStyle/ScrollbarThemeQStyle compile without QStyle/QtWidgets
        https://bugs.webkit.org/show_bug.cgi?id=98268

        Reviewed by Tor Arne Vestbø.

        * WebKit1.pro: Add new files to the build.

2012-10-04  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Sync up CMake files
        https://bugs.webkit.org/show_bug.cgi?id=98442

        Reviewed by Gyuyoung Kim.

        Amongst others use InspectorOverlayBlackBerry.

        * PlatformBlackBerry.cmake:

2012-10-05  Simon Hausmann  <simon.hausmann@digia.com>

        Unreviewed, rolling out r130495.
        http://trac.webkit.org/changeset/130495
        https://bugs.webkit.org/show_bug.cgi?id=98268

        Made WK2 tests crash....

        * WebKit1.pro:

2012-10-05  Simon Hausmann  <simon.hausmann@digia.com>

        [Qt] Make RenderThemeQStyle/ScrollbarThemeQStyle compile without QStyle/QtWidgets
        https://bugs.webkit.org/show_bug.cgi?id=98268

        Reviewed by Tor Arne Vestbø.

        * WebKit1.pro: Add new files to the build.

2012-10-04  Konrad Piascik  <kpiascik@rim.com>

        [BlackBerry] Update how we compile inspector front-end javascript.
        https://bugs.webkit.org/show_bug.cgi?id=98413

        Reviewed by Rob Buis.

        No longer cat all JavaScript together, instead use the lazy init and
        only append our custom changes script to the end of inspectorBB.html.

        * PlatformBlackBerry.cmake:

2012-10-03  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Default.edj should be generated although ENABLE_WEBKIT disabled.
        https://bugs.webkit.org/show_bug.cgi?id=97753

        Reviewed by Laszlo Gombos.

        default.edj is used in both webkit/efl and webkit2/efl.
        However, it has been generated only when ENABLE_WEBKIT is enabled.

        This patch separates the script which generates default.edj
        from source/webkit/platformefl.cmake.

        * PlatformEfl.cmake: Extracted codes which is related to default.edj.

2012-10-03  Otto Derek Cheung  <otcheung@rim.com>

        [BlackBerry] Implementing the NetworkInfo API for BB port
        https://bugs.webkit.org/show_bug.cgi?id=98273

        Reviewed by Rob Buis.

        Adding new classes to support NetworkInfo API in the
        BlackBerry Port.

        * PlatformBlackBerry.cmake:

2012-10-02  Krzysztof Czech  <k.czech@samsung.com>

        [EFL] Add file EWKTestEnvironment.cpp to build system.
        https://bugs.webkit.org/show_bug.cgi?id=94925

        Reviewed by Gyuyoung Kim.

        Change is related to modifications in wk1 unit tests.

        * PlatformEfl.cmake:

2012-09-27  Anders Carlsson  <andersca@apple.com>

        Get rid of more unused WK1 plug-in code
        https://bugs.webkit.org/show_bug.cgi?id=97835

        Reviewed by Mark Rowe.

        Remove WebNetscapeDeprecatedFunctions.c and WebNetscapeDeprecatedFunctions.h from the Xcode project.

        * WebKit.xcodeproj/project.pbxproj:

2012-09-27  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL][CMAKE] Default theme files are outdated in PlatformEfl.cmake
        https://bugs.webkit.org/show_bug.cgi?id=97769

        Reviewed by Kenneth Rohde Christiansen.

        Update Default theme files in PlatformEfl.cmake so that
        changes to those files are properly picked up by CMake
        when building incrementally.

        * PlatformEfl.cmake:

2012-09-24  Arvid Nilsson  <anilsson@rim.com>

        [BlackBerry] Add cookie database API
        https://bugs.webkit.org/show_bug.cgi?id=97102

        Reviewed by Antonio Gomes.

        Add cookie database file to build system.

        Reviewed internally by Otto D. Cheung.

        * PlatformBlackBerry.cmake:

2012-09-21  Arvid Nilsson  <anilsson@rim.com>

        [BlackBerry] Remove obsolete compositing surface code
        https://bugs.webkit.org/show_bug.cgi?id=97314

        Reviewed by Antonio Gomes.

        Remove compositing surface code from build system.

        PR 208038.

        * PlatformBlackBerry.cmake:

2012-09-14  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Make force_static_libs_as_shared work on Mac OS

        We had to move a few LIBS += around that were in the wrong place,
        and not caught when everything was just linked into the final
        QtWebKit library.

        Reviewed by Simon Hausmann.

        * WebKit1.pri: Move multimedia-stuff to WebCore, to share with WK2

2012-09-11  Raphael Kubo da Costa  <rakuco@webkit.org>

        [EFL] Rewrite the EFL-related Find modules
        https://bugs.webkit.org/show_bug.cgi?id=95237

        Reviewed by Kenneth Rohde Christiansen.

        * PlatformEfl.cmake: Stop setting the LINK_FLAGS property and add
        libraries and include directories for each Enlightenment
        Foundation Library used by the port.

2012-09-11  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Add a configure step to the Qt build system

        This allows building the Qt port using just 'qmake WebKit.pro'. Using
        the build-webkit script is still supported, and will add slightly more
        logic to the build, such as detecting the need for clean or incremental
        builds.

        Internally, the build system now uses a new variable, WEBKIT_CONFIG, for
        all things related to configuring the build, such as use/have/enable flags,
        and these are translated to defines in default_post. Project files should
        no longer check contains(DEFINES,...) to detect features, but use the new
        enable?(), use?(), and have?() functions. The no_webkit1 and no_webkit2
        options have been translated into WEBKIT_CONFIG options as well, and can
        be checked using build?().

        Reviewed by Simon Hausmann.

        * WebKit1.pri:
        * WebKit1.pro:

2012-09-06  Crystal Zhang  <haizhang@rim.com>

        [BlackBerry]  Implement a color picker
        https://bugs.webkit.org/show_bug.cgi?id=96001

        Reviewed by Rob Buis.

        Add color picker files into building system.

        * PlatformBlackBerry.cmake:

2012-09-06  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] Fix build with ANGLE on platforms that provide EGL/GLESv2
        https://bugs.webkit.org/show_bug.cgi?id=95965

        Reviewed by Tor Arne Vestbø.

        Depend on ANGLE if necessary, due to the use WebCore types that pull in ANGLE
        headers (GraphicsContext3D.h in particular).

        * WebKit1.pro:

2012-09-04  Michał Pakuła vel Rutka  <m.pakula@samsung.com>

        [EFL] Context menu restore.
        https://bugs.webkit.org/show_bug.cgi?id=74179

        Reviewed by Gyuyoung Kim.

        Adds context menu support for EFL port using non-CROSS_PLATFORM_CONTEXT_MENUS
        approach, the same as used in WebKit2.

        * PlatformEfl.cmake: Added ContextMenuClientEfl.cpp file to sources list.

2012-08-29  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Move several files to remove webkit1 dependency from WebCore.
        https://bugs.webkit.org/show_bug.cgi?id=95264

        Reviewed by Gyuyoung Kim.

        * PlatformEfl.cmake: Added files which is moved.

2012-08-28  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL] Rename knob images to thumb on the default theme
        https://bugs.webkit.org/show_bug.cgi?id=95186

        Reviewed by Kenneth Rohde Christiansen.

        Updated buildsystem after renaming theme images.

        * PlatformEfl.cmake:

2012-08-27  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>

        Rename RegisterProtocolHandler API to NavigatorContentUtils
        https://bugs.webkit.org/show_bug.cgi?id=94920

        Reviewed by Adam Barth.

        Modified PlatformEfl.cmake so that it includes the renamed files.

        * PlatformEfl.cmake:

2012-08-20  Dominik Röttsches  <dominik.rottsches@intel.com>

        [EFL] Get rid of pango backend support once harfbuzz-ng is working
        https://bugs.webkit.org/show_bug.cgi?id=92102

        Reviewed by Kenneth Rohde Christiansen.

        Removing pango-specific includes and libraries.

        * PlatformEfl.cmake: Pango sections removed.

2012-08-17  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Remove some shared libraries from linking
        https://bugs.webkit.org/show_bug.cgi?id=94253

        Reviewed by Yong Li.

        Remove some shared libraries.

        * PlatformBlackBerry.cmake:

2012-08-15  Ryosuke Niwa  <rniwa@webkit.org>

        Update manual tests and comments to refer to TestRunner instead of LayoutTestController
        https://bugs.webkit.org/show_bug.cgi?id=94168

        Reviewed by Kent Tamura.

        * PlatformBlackBerry.cmake:

2012-08-14  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] undefined reference to 'g_type_init' with gold linker
        https://bugs.webkit.org/show_bug.cgi?id=93935

        Unreviewed build fix. Link against glib-gobject to
        fix linking error with gold linker.

        * PlatformEfl.cmake:

2012-08-11  Raphael Kubo da Costa  <rakuco@webkit.org>

        [CMake] Rewrite FindLibSoup2.cmake.
        https://bugs.webkit.org/show_bug.cgi?id=93191

        Reviewed by Rob Buis.

        * PlatformEfl.cmake: Use LIBSOUP_FOO instead of LIBSOUP24_FOO.

2012-08-13  Raphael Kubo da Costa  <rakuco@webkit.org>

        [CMake] Remove glib-related Find modules and write single new one instead.
        https://bugs.webkit.org/show_bug.cgi?id=93786

        Reviewed by Rob Buis.

        * PlatformEfl.cmake: Use GLIB_* instead of Glib_*.

2012-08-12  Loïc Yhuel  <loic.yhuel@softathome.com>

        [Qt] Make it possible to build without QtTest/QtPrintSupport
        https://bugs.webkit.org/show_bug.cgi?id=93492

        Reviewed by Tor Arne Vestbø.

        * WebKit1.pri: Optional printsupport

2012-08-10  Joshua Netterfield  <jnetterfield@rim.com>

        [WebGL] Add support for EXT_robustness
        https://bugs.webkit.org/show_bug.cgi?id=93379

        Reviewed by George Staikos.

        RIM PR# 147510
        Internally reviewed by Arvid Nilsson.

        * CMakeLists.txt: Build system adaptation.

2012-08-10  Benjamin C Meyer  <bmeyer@rim.com>

        Introduce JavaScriptVariant object.
        https://bugs.webkit.org/show_bug.cgi?id=93644

        The JavaScriptVariant can be used for functions that return results from
        JavaScript such as executeJavaScript or functions that take arguments
        to pass a variable to JavaScript and they want to make sure the type
        is correct.

        Convert executeJavaScriptFunction() to use this data type as the
        example, other functions will be converted in the future.

        PR 14929

        Internally reviewed by Joe Mason
        Reviewed by Adam Treat

        * PlatformBlackBerry.cmake:

2012-08-10  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [BlackBerry] Fix wrong include path for notifications.
        https://bugs.webkit.org/show_bug.cgi?id=93714

        Reviewed by Rob Buis.

        * PlatformBlackBerry.cmake: Change path from notifications to Modules/notifications.

2012-08-08  Antonio Gomes  <agomes@rim.com>

        [BlackBerry] Tie up the scrolling machinery to the graphics tree when applicable for in-region scroll
        https://bugs.webkit.org/show_bug.cgi?id=93482

        Reviewed by Rob Buis.

        * PlatformBlackBerry.cmake: Build system adaptation.

2012-08-07  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Remove PlatformTouchEventEfl and PlatformTouchPointEfl
        https://bugs.webkit.org/show_bug.cgi?id=93270

        Reviewed by Eric Seidel.

        * PlatformEfl.cmake: Added ewk_touch_event.cpp

2012-08-07  Konrad Piascik  <kpiascik@rim.com>

        [BlackBerry] InspectorOverlay class duplicated in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=93124

        Reviewed by Rob Buis.

        Updated InspectorOverlay build path.

        * PlatformBlackBerry.cmake:

2012-08-07  No'am Rosenthal  <noam.rosenthal@nokia.com>

        [Qt] Make it possible to build without QtQuick

        Reviewed by Simon Hausmann.

        * WebKit1.pri:

2012-07-19  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] Remove Qt 4 specific code paths
        https://bugs.webkit.org/show_bug.cgi?id=88161

        Reviewed by Kenneth Rohde Christiansen.

        * WebKit.pri:
        * WebKit1.pri:
        * WebKit1.pro:

2012-08-07  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>

        CUSTOM_SCHEME_HANDLER flag should depend on REGISTER_PROTOCOL_HANDLER
        https://bugs.webkit.org/show_bug.cgi?id=93081

        Reviewed by Adam Barth.

        Modified PlatformEfl.cmake so that CUSTOM_SCHEME_HANDLER flag cannot act without REGISTER_PROTOCOL_HANDLER being set.

        * PlatformEfl.cmake:

2012-08-01  Antonio Gomes  <agomes@rim.com>

        [BlackBerry] Implement InRegionScroller class as a in-region scroll controller
        https://bugs.webkit.org/show_bug.cgi?id=92889
        PR #186587

        Reviewed by Yong Li.

        Internally reviewed by Arvid Nilsson.

        * PlatformBlackBerry.cmake: Added InRegionScroller.cpp|h to the build system.

2012-07-30  Simon Hausmann  <simon.hausmann@nokia.com>

        Unreviewed Qt/Mac build fix: Use libWebKitSystemInterfaceMountainLion.a
        on Mountain Lion.

        * WebKit1.pri:

2012-07-27  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL] WebKit API unit tests needs a timeout
        https://bugs.webkit.org/show_bug.cgi?id=92496

        Reviewed by Antonio Gomes.

        Added the same timeout value that we have for WebKit2.

        * PlatformEfl.cmake:

2012-07-27  Dominik Röttsches  <dominik.rottsches@intel.com>

        [Cairo] Add complex font drawing using HarfbuzzNG
        https://bugs.webkit.org/show_bug.cgi?id=91864

        Reviewed by Simon Hausmann and Martin Robinson.

        Adding includes for harfbuzz folders.

        * CMakeLists.txt:

2012-07-26  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL][WK2] Implement Network Information provider
        https://bugs.webkit.org/show_bug.cgi?id=92343

        Reviewed by Kenneth Rohde Christiansen.

        WebKit EFL not longer needs to link against EEZE
        library since the Network Information provider
        was moved to WebCore.

        * CMakeLists.txt:
        * PlatformEfl.cmake:

2012-07-26  Zoltan Nyul  <zoltan.nyul@intel.com>

        [EFL] EFL port should use XDG paths
        https://bugs.webkit.org/show_bug.cgi?id=91719

        Reviewed by Kenneth Rohde Christiansen.

        Add efreet library to get the xdg paths.

        * PlatformEfl.cmake:

2012-07-25  Kihong Kwon  <kihong.kwon@samsung.com>

        [EFL] Add File Chooser API
        https://bugs.webkit.org/show_bug.cgi?id=91957

        Reviewed by Hajime Morita.

        Add ewk_file_chooser source and header.

        * PlatformEfl.cmake:

2012-07-22  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.

        * PlatformEfl.cmake:

2012-07-20  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Proxy configuration should honor the no_proxy environment variable
        https://bugs.webkit.org/show_bug.cgi?id=91747

        Reviewed by Kenneth Rohde Christiansen.

        Add WebCore/platform/network/soup to INCLUDE paths.

        * PlatformEfl.cmake:

2012-07-18  Yong Li  <yoli@rim.com>

        [BlackBerry] Move about: URL handling out of WebCore
        https://bugs.webkit.org/show_bug.cgi?id=91541

        Reviewed by Rob Buis.

        AboutData.cpp is moved from WebCoreSupport to WebKitSupport.

        * PlatformBlackBerry.cmake:

2012-07-18  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [CMake] Make gtest a shared library
        https://bugs.webkit.org/show_bug.cgi?id=90973

        Reviewed by Daniel Bates.

        No need to link with gtest dependencies now since it is a shared library.

        * PlatformEfl.cmake:

2012-07-17  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Move codes related to theme setting from Widget to RenderTheme
        https://bugs.webkit.org/show_bug.cgi?id=89842

        Reviewed by Kenneth Rohde Christiansen.

        * CMakeLists.txt: Added html/shadow to WebKit_INCLUDE_DIRECTORIES.

2012-07-16  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Add RegisterProtocolHandlerClient to the Modules/protocolhandler
        https://bugs.webkit.org/show_bug.cgi?id=90940

        Reviewed by Hajime Morita.

        As a step to let protocol handler be moved to the modules, RegisterProtocolHandlerClient needs
        to be added to the Modules/protocolhandler. Because ChromeClient has some virtual functions for
        protocol handlers, virtual functions should be moved to RegisterProtocolHandlerClient.

        * PlatformEfl.cmake: Add RegisterProtocolHandlerEfl files and include path.

2012-07-16  Joshua Netterfield  <jnetterfield@rim.com>

        [BlackBerry] Upstream WebGL Code
        https://bugs.webkit.org/show_bug.cgi?id=91143

        Reviewed by Rob Buis.

        This patch includes BlackBerry-specific fixes for anti-aliasing, logging, and shader compilation.

        * PlatformBlackBerry.cmake: Define WTF_USE_OPENGL_ES_2 on WebGL-enabled builds.

2012-07-16  Frederik Gladhorn  <frederik.gladhorn@nokia.com>

        Add accessible for QWebView.
        https://bugs.webkit.org/show_bug.cgi?id=91073

        Reviewed by Simon Hausmann.

        Add classes to enable accessibility on the widget level.

        * WebKit.pri:
        * WebKit1.pro:

2012-07-15  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Move files guarded by #ifdef to existing file list.
        https://bugs.webkit.org/show_bug.cgi?id=91336

        Reviewed by Ryosuke Niwa.

        Some EFL files are already guared by #ifdef. So, cmake files doesn't need to guard
        them again. In addition, some files are missing #ifdef guard its header files. 

        * PlatformEfl.cmake:

2012-07-13  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [CMake] Proper handling of ENABLE_API_TESTS build option
        https://bugs.webkit.org/show_bug.cgi?id=91221

        Reviewed by Rob Buis.

        Build unit tests only if ENABLE_API_TESTS is set.

        * PlatformEfl.cmake:

2012-07-12  Simon Hausmann  <simon.hausmann@nokia.com>

        Typo in path in generate-webkitversion.pl
        https://bugs.webkit.org/show_bug.cgi?id=90883

        Reviewed by Mark Rowe.

        Correct default path to version config file. In practice it wasn't a problem because only the Qt
        build system seems to use the script right now and passes the path to the version file as a
        command line parameter.

        * scripts/generate-webkitversion.pl:

2012-07-11  Crystal Zhang  <haizhang@rim.com>

        [BlackBerry] Implement Date/Time picker
        https://bugs.webkit.org/show_bug.cgi?id=90911

        Reviewed by Rob Buis.

        Add files into make file.

        * PlatformBlackBerry.cmake:

2012-07-09  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Battery status code needs refactoring to be reused in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=90760

        Reviewed by Hajime Morita.

        Add BatteryClientEfl to PlatformEfl.cmake.

        * PlatformEfl.cmake:

2012-07-08  Kihong Kwon  <kihong.kwon@samsung.com>

        [EFL] Change notifications directory path of WebKit_INCLUDE_DIRECTORIES in the PlatformEfl.cmake
        https://bugs.webkit.org/show_bug.cgi?id=90650

        Reviewed by Laszlo Gombos.

        Change directory path for including notifications of WebCore
        from WebCore/notifications to WebCore/Modules/notifications

        * PlatformEfl.cmake:

2012-07-07  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL][CMake] Remove non-existent include directory
        https://bugs.webkit.org/show_bug.cgi?id=90605

        Reviewed by Kentaro Hara.

        * PlatformEfl.cmake:

2012-07-06  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL][CMake] Move gtest sources to an upper level
        https://bugs.webkit.org/show_bug.cgi?id=90602

        Reviewed by Chang Shu.

        Removed gtest since it is now built as a separated component.
        This will allow us to share it with WebKit 2 API tests.

        * PlatformEfl.cmake:

2012-07-06  Seokju Kwon  <seokju.kwon@samsung.com>

        [EFL] Add Web Inspector to WebKit-EFL
        https://bugs.webkit.org/show_bug.cgi?id=83865

        Reviewed by Pavel Feldman.

        EFL port implementation for Web Inspector.
        Prepare Web Inspector resources.

        * PlatformEfl.cmake:

2012-07-05  Kihong Kwon  <kihong.kwon@samsung.com>

        [EFL] Change class name from NotificationClientEfl to NotificationPresenterClientEfl.
        https://bugs.webkit.org/show_bug.cgi?id=90542

        Reviewed by Kenneth Rohde Christiansen.

        NotificationClientEfl.cpp is changed to NotificationPresenterClientEfl.cpp
        to be in line with other ports(qt, chromium, gtk).

        * PlatformEfl.cmake:

2012-07-04  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Remove a few un-needed load(features) after r121777

        The features are computed by configure.pro and cached in .qmake.cache.

        Reviewed by Jocelyn Turcotte.

        * WebKit1.pro:

2012-07-04  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Fix broken OR-operator in project file

        Qmake expects |, not ||. The result was that the block was entered, even
        if none of the two defines were set to 1.

        Reviewed by Jocelyn Turcotte.

        * WebKit1.pri:

2012-07-03  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Move BatteryClientEfl from WebKit to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=90063

        Reviewed by Kenneth Rohde Christiansen.

        Move BatteryClientEfl class from WebKit to WebCore
        so that it can be reused in WebKit2.

        * PlatformEfl.cmake:

2012-07-02  Xiaobo Wang  <xbwang@torchmobile.com.cn>

        [BlackBerry] Use PUBLIC_BUILD to enable/disable DRT
        https://bugs.webkit.org/show_bug.cgi?id=90271

        Reviewed by George Staikos.

        RIM PR #154707

        Currently DRT code will be compiled only if ENABLE_DRT is set, and it's not
        defined by default.
        We should enable DRT by default unless PUBLIC_BUILD is set. In this way we don't
        need to rebuild webkit before running DRT.

        * PlatformBlackBerry.cmake:

2012-07-02  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL][CMake] Integrate API unit tests with CTest
        https://bugs.webkit.org/show_bug.cgi?id=87251

        Reviewed by Daniel Bates.

        Add every test to the test runner build target.

        * PlatformEfl.cmake:

2012-07-02  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Rename NotificationPresenterEfl with NotificationClientEfl
        https://bugs.webkit.org/show_bug.cgi?id=90370

        Reviewed by Csaba Osztrogonác.

        Bug 80488 renamed NotificationPresenter with NotificationClient. So, EFL port needs to adjust
        it as well.

        * PlatformEfl.cmake:

2012-06-29  Krzysztof Czech  <k.czech@samsung.com>

        [EFL] Add support for Unit Tests, based on the gtest library.
        https://bugs.webkit.org/show_bug.cgi?id=68509

        Reviewed by Chang Shu.

        Add configuration for building gtest library, testing framework and unit tests.

        * PlatformEfl.cmake:

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

        Unreviewed, rolling out r121398.
        http://trac.webkit.org/changeset/121398
        https://bugs.webkit.org/show_bug.cgi?id=90136

        broke efl build (Requested by ryuan on #webkit).

        * PlatformEfl.cmake:

2012-06-27  Krzysztof Czech  <k.czech@samsung.com>

        [EFL] Add support for Unit Tests, based on the gtest library.
        https://bugs.webkit.org/show_bug.cgi?id=68509

        Reviewed by Chang Shu.

        Add configuration for building gtest library, testing framework and unit tests.

        * PlatformEfl.cmake:

2012-06-26  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt][Win] Symbols are not exported in QtWebKit5.dll
        https://bugs.webkit.org/show_bug.cgi?id=88873

        Reviewed by Tor Arne Vestbø.

        * api.pri: Remove MAKEDLL setting done now in win32/default_post.prf.

2012-06-25  Simon Hausmann  <simon.hausmann@nokia.com>

        Unreviewed build fix: Don't do QT += widgets with Qt 4

        * WebKit1.pro: This is already done in WebKit1.pri.

2012-06-25  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] Make it possible to build WebKit without QtWidgets
        https://bugs.webkit.org/show_bug.cgi?id=78109

        Reviewed by Tor Arne Vestbø.

        Moved WebKit1 sources into a separate static library. Only WK1
        depends on QtWidgets.

        * WebKit1.pri: Added.
        * WebKit1.pro: Added.

2012-06-25  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Implement Network Information API
        https://bugs.webkit.org/show_bug.cgi?id=87067

        Reviewed by Kenneth Rohde Christiansen.

        * PlatformEfl.cmake: Add dependency of eeze library.

2012-06-22  Joshua Netterfield  <jnetterfield@rim.com>

        [BlackBerry] Sanitize GLSL code using ANGLE.

        BlackBerry port does not sanitize GLSL code with ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=89583

        Reviewed by Rob Buis.

        * PlatformBlackBerry.cmake: Add ANGLE sources to BlackBerry builds.

2012-06-19  Csaba Osztrogonác  <ossy@webkit.org>

        [CMake] Unreviewed speculative buildfix after r120786.

        * CMakeLists.txt:

2012-06-13  Robin Cao  <robin.cao@torchmobile.com.cn>

        [BlackBerry] Enable MEDIA_STREAM by default
        https://bugs.webkit.org/show_bug.cgi?id=88849

        Reviewed by Antonio Gomes.

        * PlatformBlackBerry.cmake:

2012-06-12  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Enable SHADOW_DOM flag
        https://bugs.webkit.org/show_bug.cgi?id=87732

        Reviewed by Kentaro Hara.

        Add WebCore/bindings/generic to include directories so
        that we can include RuntimeEnabledFeatures.h.

        * CMakeLists.txt:

2012-06-04  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Don't use WebKit HAVE() macro in public Qt headers

        Reviewed by Kenneth Rohde Christiansen.

        * WebKit.pri:

2012-06-04  Tomasz Morawski  <t.morawski@samsung.com>

        [EFL] Refactor ewk_view_context_paint code.
        https://bugs.webkit.org/show_bug.cgi?id=85588

        Reviewed by Hajime Morita.

        Added new ewk_paint_context.cpp file to source list.

        * PlatformEfl.cmake:

2012-06-01  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] EFL's LayoutTestController needs to implement deliverWebIntent
        https://bugs.webkit.org/show_bug.cgi?id=86865

        Reviewed by Adam Barth.

        Add "${WEBCORE_DIR}/dom/default" to include directories in
        CMakeLists.txt.

        * CMakeLists.txt:

2012-06-01  Sudarsana Nagineni  <sudarsana.nagineni@linux.intel.com>

        [EFL] Implement PlatformStrategies
        https://bugs.webkit.org/show_bug.cgi?id=86946

        Reviewed by Carlos Garcia Campos.

        * PlatformEfl.cmake: Add PlatformStrategiesEfl file to the build
        system.

2012-05-31  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CMAKE][EFL] Remove unneeded include path
        https://bugs.webkit.org/show_bug.cgi?id=87927 

        Reviewed by Kenneth Rohde Christiansen.

        Though *wtf* directory was moved to Source/WTF, PlatformEfl.cmake is still including the previous
        path. In addition, files on EFL port are using <wtf/gobject/XXX> directly in #include line.
        So, EFL port doesn't need to include ${JAVASCRIPTCORE_DIR}/wtf/gobject path anymore.

        * PlatformEfl.cmake: Remove '${JAVASCRIPTCORE_DIR}/wtf/gobject' path from include path list.

2012-05-30  Konrad Piascik  <kpiascik@rim.com>

        [BlackBerry] Add an Accelerated Compositing layer for Web Inspector DOM highlight.
        https://bugs.webkit.org/show_bug.cgi?id=81001

        Reviewed by Antonio Gomes
        
        Added new InspectorOverlay class

        * PlatformBlackBerry.cmake:

2012-05-29  Arvid Nilsson  <anilsson@rim.com>

        [BlackBerry] WebKit-side implementation of SelectionOverlay
        https://bugs.webkit.org/show_bug.cgi?id=87605

        Reviewed by Rob Buis.

        Add SelectionOverlay to the build system.

        PR #160263

        * PlatformBlackBerry.cmake:

2012-05-29  Arvid Nilsson  <anilsson@rim.com>

        [BlackBerry] WebOverlay API
        https://bugs.webkit.org/show_bug.cgi?id=87603

        Reviewed by Rob Buis.

        Add WebOverlay related files to the build system.

        PR #156812

        * PlatformBlackBerry.cmake:

2012-05-28  Arvid Nilsson  <anilsson@rim.com>

        [BlackBerry] Add a default tap highlight
        https://bugs.webkit.org/show_bug.cgi?id=87569

        Reviewed by Rob Buis.

        Add DefaultTapHighlight to the build system

        Reviewed internally by Mike Lattanzio and Mike Fenton.

        PR #154329

        * PlatformBlackBerry.cmake:

2012-05-24  Crystal Zhang  <haizhang@rim.com>

        [BlackBerry] Implement select popup and remove old hook to air popup
        https://bugs.webkit.org/show_bug.cgi?id=87419

        Reviewed by Rob Buis.

        Add new files to make file.

        * PlatformBlackBerry.cmake:

2012-05-24  Raphael Kubo da Costa  <rakuco@webkit.org>

        [EFL] Unreviewed, unbreak `make install' after r117046.

        * PlatformEfl.cmake: Remove ewk_auth_soup.h from the list of
        installed headers, since it has been made private and renamed.

2012-05-22  Dongwoo Im  <dw.im@samsung.com>

        [EFL] Implements the registerProtocolHandler method and option.
        https://bugs.webkit.org/show_bug.cgi?id=73638

        Reviewed by Andreas Kling.

        The registerProtocolHandler() method allows Web sites to register themselves
        as possible handlers for particular schemes.

        http://dev.w3.org/html5/spec/Overview.html#dom-navigator-registerprotocolhandler

        * PlatformEfl.cmake: Adds the new file into the source list.

2012-05-21  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Minor style fixes in web intents code are needed
        https://bugs.webkit.org/show_bug.cgi?id=86986

        Reviewed by Adam Barth.

        Fix minor ordering issues in CMake files.

        * CMakeLists.txt:
        * PlatformEfl.cmake:

2012-05-18  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Add simple implementation of Web Intents
        https://bugs.webkit.org/show_bug.cgi?id=86354

        Reviewed by Eric Seidel.

        Add new ewk_intent.* and ewk_intent_request.* files to CMake.

        * CMakeLists.txt:
        * PlatformEfl.cmake:

2012-05-17  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL] Add API for Web Database handling
        https://bugs.webkit.org/show_bug.cgi?id=85178

        Reviewed by Antonio Gomes.

        Added the new Web Database API to the buildsystem.

        * PlatformEfl.cmake:

2012-05-17  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL] Fix link error caused by not directly linking with edbus
        https://bugs.webkit.org/show_bug.cgi?id=86747

        Unreviewed build fix.

        * PlatformEfl.cmake:

2012-05-16  Kihong Kwon  <kihong.kwon@samsung.com>

        [EFL] Support for Battery Status API on the WebKit-Efl
        https://bugs.webkit.org/show_bug.cgi?id=83254

        Reviewed by Chang Shu.

        Add e_ukit library and include directory to get battery status of device.

        * PlatformEfl.cmake:

2012-05-15  Tomasz Morawski  <t.morawski@samsung.com>

        [EFL] Split ewk_private.h file to multiple private files.
        https://bugs.webkit.org/show_bug.cgi?id=84572

        Reviewed by Antonio Gomes.

        * PlatformEfl.cmake: Removed ewk_logging.h file from EWebKit_HEADERS.

2012-05-10  Sam D  <dsam2912@gmail.com>

        Web Inspector: rename InspectorBackendStub.js to InspectorBackendCommands.js
        https://bugs.webkit.org/show_bug.cgi?id=72306

        Changed name for InspectorBackendStub.js to
        InspectorBackendCommands.js

        Reviewed by Yury Semikhatsky.

        * PlatformBlackBerry.cmake:

2012-05-08  Crystal Zhang  <haizhang@rim.com>

        [BlackBerry] Implement a popup client for HTML controls
        https://bugs.webkit.org/show_bug.cgi?id=85670

        Reviewed by Rob Buis.

        Add popup client file to build system.
        
        * PlatformBlackBerry.cmake:

2012-05-08  Raphael Kubo da Costa  <rakuco@webkit.org>

        [CMake] Rewrite FindGStreamer.cmake.
        https://bugs.webkit.org/show_bug.cgi?id=85857

        Reviewed by Daniel Bates.

        We are currently kind of duplicating the same
        FindGStreamer-Foo.cmake file whenever a new GStreamer plugin needs
        to be found. Besides this approach not scaling very well, it
        relies on pkg-config for version checking, uses the LibFindMacros
        package that we should deprecate and all the find files could be
        merged into one, with users using the COMPONENTS feature of the
        FIND_PACKAGE() call to find the desired plugins.

        FindGStreamer.cmake has then been rewritten to take all that into
        account:
        - The LibFindMacros.cmake package is not used anymore.
        - Version check is performed in the CMake file itself by parsing
        the gstversion.h header.
        - All GStreamer plugins are searched and the COMPONENTS keyword
        used in the FIND_PACKAGE() call is used to check which plugins are
        required.
        - The plugins-base and base GStreamer plugins are not searched, as
        they were not used anywhere in the build system.

        * PlatformEfl.cmake: Update GStreamer-related variable names.

2012-05-08  Jonathan Dong  <jonathan.dong@torchmobile.com.cn>

        [BlackBerry] AutofillManager implementation upstream
        https://bugs.webkit.org/show_bug.cgi?id=85576

        Reviewed by Rob Buis.

        Added WebKit/blackberry/WebCoreSupport/AutofillManager.cpp
        into building system of BlackBerry porting.

        * PlatformBlackBerry.cmake:

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

        Move WebKitFullScreenListener into its own file.
        https://bugs.webkit.org/show_bug.cgi?id=85640

        Reviewed by Maciej Stachowiak .

        Pull WebKitFullScreenListener into its own file.

        * WebKit.xcodeproj/project.pbxproj:

2012-05-03  Raphael Kubo da Costa  <rakuco@webkit.org>

        [CMake] Rewrite FindCairo.cmake.
        https://bugs.webkit.org/show_bug.cgi?id=84895

        Reviewed by Daniel Bates.

        The old approach relied on pkg-config for finding Cairo (which
        introduced a dependency on pkg-config that could be avoided), used
        the LibFindMacros code that we should probably remove in the
        future and did not use the FindPackageHandleStandardArguments
        module.

        Change all that by rewriting the module.
        - Use the pkg-config output optionally instead of requiring it
        like LibFindMacros did.
        - Remove the implicit dependency on FreeType which often found it
        the wrong way via pkg-config and without considering
        CMAKE_PREFIX_PATH.
        - Retrieve the Cairo version by looking at cairo-version.h instead
        of relying on pkg-config. It requires some additional code for
        checking if the desired version has been found, but that will not
        be needed once we start depending on CMake 2.8.3 or later.

        The only downside is that FPHSA sets <UPPERCASED_NAME>_FOUND
        instead of <Name>_FOUND, and to keep things consistent
        Cairo_LIBRARIES and Cairo_INCLUDE_DIRS have become CAIRO_LIBRARIES
        and CAIRO_INCLUDE_DIRS.

        * PlatformEfl.cmake: Use CAIRO_FOO instead of Cairo_FOO.

2012-04-26  Christophe Dumez  <christophe.dumez@intel.com>

        [EFL] Enable VIDEO_TRACK feature
        https://bugs.webkit.org/show_bug.cgi?id=84830

        Reviewed by Gustavo Noronha Silva.

        Enable VIDEO_TRACK feature by default for EFL port.

        * PlatformEfl.cmake:

2012-04-20  Mike Lattanzio  <mlattanzio@rim.com>

        [BlackBerry] Expose WebViewportArguments to WebPageClient
        https://bugs.webkit.org/show_bug.cgi?id=84471

        Reviewed by Antonio Gomes.

        * PlatformBlackBerry.cmake:

2012-04-20  Thiago Marcos P. Santos  <thiago.santos@intel.com>

        [EFL] Add Security Origin API
        https://bugs.webkit.org/show_bug.cgi?id=84023

        Reviewed by Antonio Gomes.

        * PlatformEfl.cmake:

2012-04-10  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Enable USE_FOLDERS property
        https://bugs.webkit.org/show_bug.cgi?id=83571

        Reviewed by Daniel Bates.

        Setting the FOLDER property on targets gives more structure 
        to the generated Visual Studio solutions.
        This does not affect other CMake generators.

        * CMakeLists.txt:

2012-04-07  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Cleanup WTF include directories
        https://bugs.webkit.org/show_bug.cgi?id=82716

        Reviewed by Eric Seidel.

        * CMakeLists.txt:

2012-04-07  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Add Battery Status API support
        https://bugs.webkit.org/show_bug.cgi?id=82615

        Reviewed by George Staikos.

        Add BatteryClientBlackBerry.cpp to the build.

        * PlatformBlackBerry.cmake:

2012-04-06  Charles Wei  <charles.wei@torchmobile.com.cn>

        [BlackBerry] Build fix to match the latest WebCore change
        https://bugs.webkit.org/show_bug.cgi?id=83358

        Reviewed by Rob Buis.

        * PlatformBlackBerry.cmake:

2012-04-05  George Staikos  <staikos@webkit.org>

        Add the vibration client for BlackBerry.
        https://bugs.webkit.org/show_bug.cgi?id=83340

        Reviewed by Rob Buis.

        * PlatformBlackBerry.cmake:

2012-04-05  Jia Pu  <jpu@apple.com>

        Move correction panel related functions from EditorClient into separated AlternativeTextClient class.
        https://bugs.webkit.org/show_bug.cgi?id=82970

        Reviewed by Enrica Casucci.

        See WebCore/ChangeLog for details.

        * WebKit.xcodeproj/project.pbxproj:

2012-04-01  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Support the Network Information API
        https://bugs.webkit.org/show_bug.cgi?id=73528

        Reviewed by Adam Barth.

        * PlatformEfl.cmake: Add dummy NetworkInfoClientEfl.cpp files in order to support network information API.

2012-03-30  Eli Fidler  <efidler@rim.com>

        Enable OpenType Sanitizer for BlackBerry port.
        https://bugs.webkit.org/show_bug.cgi?id=82782

        Reviewed by Eric Seidel.

        * PlatformBlackBerry.cmake: add libots to link

2012-03-22  Raphael Kubo da Costa  <rakuco@FreeBSD.org>

        [CMake] Unreviewed build fix after r111778.

        * CMakeLists.txt: Replace ${JAVASCRIPTCORE_DIR}/wtf includes with
        ${WTF_DIR}/wtf ones.

2012-03-22  Hyowon Kim  <hw1008.kim@samsung.com>

        [EFL] Add PageClientEfl to WebCoreSupport.
        https://bugs.webkit.org/show_bug.cgi?id=80748

        Reviewed by Noam Rosenthal.

        * PlatformEfl.cmake: Add WebCore/platform/graphics/efl to the include path
        and PageClientEfl.cpp to the source list.

2012-03-20  Eric Seidel  <eric@webkit.org>

        Move wtf/Platform.h from JavaScriptCore to Source/WTF/wtf
        https://bugs.webkit.org/show_bug.cgi?id=80911

        Reviewed by Adam Barth.

        * CMakeLists.txt: Look for headers in Source/WTF.

2012-03-20  Charles Wei  <charles.wei@torchmobile.com.cn>

        [BlackBerry] Remove OutOfMemoryHandler from the build system
        https://bugs.webkit.org/show_bug.cgi?id=81649

        Remove OutOfMemoryHandler, and change GLES2Context to WebKitSupport,
        in the build system for BlackBerry porting.

        Reviewed by Rob Buis.

        * PlatformBlackBerry.cmake:

2012-03-16  Kihong Kwon  <kihong.kwon@samsung.com>

        Support for Battery Status API
        https://bugs.webkit.org/show_bug.cgi?id=62698

        Add include directory and file.
        http://www.w3.org/TR/battery-status/

        Reviewed by Adam Barth.

        * PlatformEfl.cmake:

2012-03-11  Timothy Hatcher  <timothy@apple.com>

        Update how the Web Inspector resources are loaded.

        https://bugs.webkit.org/show_bug.cgi?id=80798
        rdar://problem/10359959

        Reviewed by Brian Weinstein.

        * WebKit.xcodeproj/project.pbxproj: Add a framework.

2012-03-06  Raphael Kubo da Costa  <kubo@profusion.mobi>

        [CMake] Make the removal of transitive library dependencies work with CMake < 2.8.7.
        https://bugs.webkit.org/show_bug.cgi?id=80469

        Reviewed by Antonio Gomes.

        * CMakeLists.txt: Manually set the LINK_INTERFACE_LIBRARIES target
        property on the library being created.

2012-03-06  Raphael Kubo da Costa  <kubo@profusion.mobi>

        [EFL] Unreviewed; fix the build after r109877.

        * CMakeLists.txt: Add WebCore/Modules/webdatabase to the list of
        include directories so that #include'ing DatabaseDetails.h and
        friends still works.

2012-03-04  Jonathan Dong  <jonathan.dong@torchmobile.com.cn>

        [BlackBerry] upstream CredentialManager and CredentialTransformData implementation
        https://bugs.webkit.org/show_bug.cgi?id=80107

        Reviewed by Antonio Gomes.

        Initial upstream of CredentialManager.[h|cpp] and
        CredentialTransformData.[h|cpp].
        No new test.

        * PlatformBlackBerry.cmake:

2012-03-04  Raphael Kubo da Costa  <kubo@profusion.mobi>

        [CMake] Libraries are installed to /usr/lib and not /usr/lib64 on x86_64
        https://bugs.webkit.org/show_bug.cgi?id=71507

        Reviewed by Antonio Gomes.

        * CMakeLists.txt: Use ${LIB_INSTALL_DIR} instead of hardcoding "lib".

2012-02-24  Grzegorz Czajkowski  <g.czajkowski@samsung.com>

        [EFL][DRT] Implement setValueForUser and setAutofilled.
        https://bugs.webkit.org/show_bug.cgi?id=79237

        Reviewed by Andreas Kling.

        Adds the main directory of WebKit's source to find headers of JavaScriptCore.

        * PlatformEfl.cmake:

2012-02-23  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Add WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS macro
        https://bugs.webkit.org/show_bug.cgi?id=79371

        Reviewed by Daniel Bates.

        * CMakeLists.txt:
        * PlatformBlackBerry.cmake: Renamed from Source/WebKit/blackberry/CMakeListsBlackBerry.txt.
        * PlatformEfl.cmake: Renamed from Source/WebKit/efl/CMakeListsEfl.txt.
        * PlatformWinCE.cmake: Renamed from Source/WebKit/wince/CMakeListsWinCE.txt.

2012-02-20  Filip Pizlo  <fpizlo@apple.com>

        JSC should be a triple-tier VM
        https://bugs.webkit.org/show_bug.cgi?id=75812
        <rdar://problem/10079694>

        Reviewed by Gavin Barraclough.

        Changed EFL's build system to include a new directory in JavaScriptCore.
        
        * CMakeLists.txt:

2012-02-21  Jon Lee  <jonlee@apple.com>

        Bring notifications support to WK1 mac: showing, canceling, removing notifications
        https://bugs.webkit.org/show_bug.cgi?id=78783
        <rdar://problem/10610578>

        Reviewed by Anders Carlsson.

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

2012-02-21  Adam Roben  <aroben@apple.com>

        Roll out r108309, r108323, and r108326

        They broke the 32-bit Lion build.

        Original bugs is <http://webkit.org/b/75812> <rdar://problem/10079694>.

        * CMakeLists.txt:

2012-02-16  Leo Yang  <leo.yang@torchmobile.com.cn>

        [BlackBerry] Adapt to the removal of WebStringIml.h
        https://bugs.webkit.org/show_bug.cgi?id=78784

        Reviewed by Antonio Gomes.

        blackberry/WebCoreSupport/WebStringImpl.h which hasn't been upstreamed
        has been removed internally. We should adapt to this removal for the
        upstreamed part of the BlackBerry port. Actually WebStringImpl is not necessary
        because it just inherits from WTF::StringImpl but adding nothing.

        * blackberry/Api/WebString.cpp:
        (BlackBerry::WebKit::WebString::WebString):
        (BlackBerry::WebKit::WebString::equalIgnoringCase):
        * blackberry/Api/WebString.h:
        (WTF):

2012-02-16  Nima Ghanavatian  <nghanavatian@rim.com>

        [BlackBerry] Style clean-up in WebPageCompositor
        https://bugs.webkit.org/show_bug.cgi?id=78738

        Reviewed by Rob Buis.

        No new functionality, no new tests.

        * blackberry/WebKitSupport/WebPageCompositor.cpp:
        (BlackBerry::WebKit::WebPageCompositor::drawLayers):
        * blackberry/WebKitSupport/WebPageCompositor.h:
        (WebKit):

2012-02-16  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Add missing include directories.

        * CMakeLists.txt:

2012-02-15  Leo Yang  <leo.yang@torchmobile.com.cn>

        [BlackBerry] Remove ResourceHolderImpl.cpp from build system
        https://bugs.webkit.org/show_bug.cgi?id=78779

        Reviewed by George Staikos.

        blackberry/Api/ResourceHolderImpl.cpp which hasn't been upstreamed
        has been removed internally. So remove it from the build system.

        * blackberry/CMakeListsBlackBerry.txt:

2012-02-15  Leo Yang  <leo.yang@torchmobile.com.cn>

        [BlackBerry] Upstream WebPageGroupLoadDeferrer.{h, cpp}
        https://bugs.webkit.org/show_bug.cgi?id=78770

        Reviewed by Rob Buis.

        Initial upstreaming, no new tests.

        * blackberry/Api/WebPageGroupLoadDeferrer.cpp: Added.
        * blackberry/Api/WebPageGroupLoadDeferrer.h: Added.

2012-02-15  Konrad Piascik  <kpiascik@rim.com>

        [BlackBerry] Upstream BlackBerry specific Web Inspector resources
        https://bugs.webkit.org/show_bug.cgi?id=78727

        Reviewed by Rob Buis.

        * blackberry/WebCoreSupport/inspectorBB.html: Added.
        * blackberry/WebCoreSupport/inspectorBB.js: Added.
        ():
        (InspectorFrontendHost.copyText):

2012-02-15  Mike Fenton  <mifenton@rim.com>

        Initial upstreaming of EditorClientBlackBerry
        https://bugs.webkit.org/show_bug.cgi?id=78730

        Reviewed by Rob Buis.

        Initial upstreaming, no new tests.

        * blackberry/WebCoreSupport/EditorClientBlackBerry.cpp: Added.
        (WebCore):
        (WebCore::EditorClientBlackBerry::EditorClientBlackBerry):
        (WebCore::EditorClientBlackBerry::pageDestroyed):
        (WebCore::EditorClientBlackBerry::shouldDeleteRange):
        (WebCore::EditorClientBlackBerry::shouldShowDeleteInterface):
        (WebCore::EditorClientBlackBerry::smartInsertDeleteEnabled):
        (WebCore::EditorClientBlackBerry::isSelectTrailingWhitespaceEnabled):
        (WebCore::EditorClientBlackBerry::enableSpellChecking):
        (WebCore::EditorClientBlackBerry::shouldSpellCheckFocusedField):
        (WebCore::EditorClientBlackBerry::isContinuousSpellCheckingEnabled):
        (WebCore::EditorClientBlackBerry::toggleContinuousSpellChecking):
        (WebCore::EditorClientBlackBerry::isGrammarCheckingEnabled):
        (WebCore::EditorClientBlackBerry::toggleGrammarChecking):
        (WebCore::EditorClientBlackBerry::spellCheckerDocumentTag):
        (WebCore::EditorClientBlackBerry::shouldBeginEditing):
        (WebCore::EditorClientBlackBerry::shouldEndEditing):
        (WebCore::EditorClientBlackBerry::shouldInsertNode):
        (WebCore::EditorClientBlackBerry::shouldInsertText):
        (WebCore::EditorClientBlackBerry::shouldChangeSelectedRange):
        (WebCore::EditorClientBlackBerry::shouldApplyStyle):
        (WebCore::EditorClientBlackBerry::shouldMoveRangeAfterDelete):
        (WebCore::EditorClientBlackBerry::didBeginEditing):
        (WebCore::EditorClientBlackBerry::respondToChangedContents):
        (WebCore::EditorClientBlackBerry::respondToChangedSelection):
        (WebCore::EditorClientBlackBerry::didEndEditing):
        (WebCore::EditorClientBlackBerry::respondToSelectionAppearanceChange):
        (WebCore::EditorClientBlackBerry::didWriteSelectionToPasteboard):
        (WebCore::EditorClientBlackBerry::didSetSelectionTypesForPasteboard):
        (WebCore::EditorClientBlackBerry::registerCommandForUndo):
        (WebCore::EditorClientBlackBerry::registerCommandForRedo):
        (WebCore::EditorClientBlackBerry::clearUndoRedoOperations):
        (WebCore::EditorClientBlackBerry::canUndo):
        (WebCore::EditorClientBlackBerry::canRedo):
        (WebCore::EditorClientBlackBerry::canCopyCut):
        (WebCore::EditorClientBlackBerry::canPaste):
        (WebCore::EditorClientBlackBerry::undo):
        (WebCore::EditorClientBlackBerry::redo):
        (KeyDownEntry):
        (KeyPressEntry):
        (WebCore::EditorClientBlackBerry::interpretKeyEvent):
        (WebCore::EditorClientBlackBerry::handleKeyboardEvent):
        (WebCore::EditorClientBlackBerry::handleInputMethodKeydown):
        (WebCore::EditorClientBlackBerry::textFieldDidBeginEditing):
        (WebCore::EditorClientBlackBerry::textFieldDidEndEditing):
        (WebCore::EditorClientBlackBerry::textDidChangeInTextField):
        (WebCore::EditorClientBlackBerry::doTextFieldCommandFromEvent):
        (WebCore::EditorClientBlackBerry::textWillBeDeletedInTextField):
        (WebCore::EditorClientBlackBerry::textDidChangeInTextArea):
        (WebCore::EditorClientBlackBerry::ignoreWordInSpellDocument):
        (WebCore::EditorClientBlackBerry::learnWord):
        (WebCore::EditorClientBlackBerry::checkSpellingOfString):
        (WebCore::EditorClientBlackBerry::getAutoCorrectSuggestionForMisspelledWord):
        (WebCore::EditorClientBlackBerry::checkGrammarOfString):
        (WebCore::EditorClientBlackBerry::requestCheckingOfString):
        (WebCore::EditorClientBlackBerry::textChecker):
        (WebCore::EditorClientBlackBerry::updateSpellingUIWithGrammarString):
        (WebCore::EditorClientBlackBerry::updateSpellingUIWithMisspelledWord):
        (WebCore::EditorClientBlackBerry::showSpellingUI):
        (WebCore::EditorClientBlackBerry::spellingUIIsShowing):
        (WebCore::EditorClientBlackBerry::getGuessesForWord):
        (WebCore::EditorClientBlackBerry::willSetInputMethodState):
        (WebCore::EditorClientBlackBerry::setInputMethodState):
        * blackberry/WebCoreSupport/EditorClientBlackBerry.h: Added.
        (WebKit):
        (WebCore):
        (EditorClientBlackBerry):

2012-02-15  Leo Yang  <leo.yang@torchmobile.com.cn>

        [BlackBerry] Upstream WebPageClient.h
        https://bugs.webkit.org/show_bug.cgi?id=78660

        Reviewed by Antonio Gomes.

        Initial upstreaming, no new tests.

        * blackberry/Api/BackingStore.cpp: Add #include <BlackBerryPlatformWindow.h> because this inclusion
        is being removed from WebPageClient.h.
        * blackberry/Api/WebPageClient.h: Added.
        * blackberry/WebCoreSupport/ChromeClientBlackBerry.cpp: Add #include <BlackBerryPlatformWindow.h>
        because this inclusion is being removed from WebPageClient.h.

2012-02-15  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Upstream remaining classes in Api
        https://bugs.webkit.org/show_bug.cgi?id=78644

        Reviewed by Antonio Gomes.

        No functionalities changed, no new tests.

        * blackberry/Api/ActiveNodeContext.h: Renamed from Source/WebKit/blackberry/Api/BlackBerryContext.h.

2012-02-14  Nima Ghanavatian  <nghanavatian@rim.com>

        [BlackBerry] Upstreaming WebSettings code
        https://bugs.webkit.org/show_bug.cgi?id=78633

        Reviewed by Rob Buis.

        Initial upstreaming, no new tests.

        * blackberry/Api/WebSettings.cpp: Added.
        * blackberry/Api/WebSettings.h: Added.
        * blackberry/Api/WebSettings_p.h: Added.

2012-02-14  Nima Ghanavatian  <nghanavatian@rim.com>

        [BlackBerry] Upstreaming DOMSupport files
        https://bugs.webkit.org/show_bug.cgi?id=78607

        Reviewed by Rob Buis.

        Initial upstreaming, no new tests.

        * blackberry/WebKitSupport/DOMSupport.cpp: Added.
        * blackberry/WebKitSupport/DOMSupport.h: Added.

2012-02-14  Jeff Rogers  <jrogers@rim.com>

        [BlackBerry] Remove OpenVG references
        https://bugs.webkit.org/show_bug.cgi?id=78623

        Reviewed by Rob Buis.

        Removed references to USE(OPENVG) and the related code.

        * blackberry/Api/BackingStore.cpp:
        (BlackBerry::WebKit::BackingStorePrivate::BackingStorePrivate):
        (BlackBerry::WebKit::BackingStorePrivate::repaint):
        (BlackBerry::WebKit::BackingStorePrivate::renderContents):
        (BlackBerry::WebKit::BackingStore::createSurface):
        * blackberry/Api/BackingStore_p.h:

2012-02-14  Andy Chen  <andchen@rim.com>

        Initial upstreaming for find-in-page for BlackBerry port
        https://bugs.webkit.org/show_bug.cgi?id=78615

        Create a new class InPageSearchManager for find-in-page and
        remove the functions in SelectionHandler

        Reviewed by Rob Buis.

        * blackberry/CMakeListsBlackBerry.txt:
        * blackberry/WebKitSupport/InPageSearchManager.cpp: Added.
        (BlackBerry::WebKit::InPageSearchManager::InPageSearchManager):
        (BlackBerry::WebKit::InPageSearchManager::~InPageSearchManager):
        (BlackBerry::WebKit::InPageSearchManager::findNextString):
        (BlackBerry::WebKit::InPageSearchManager::clearTextMatches):
        (BlackBerry::WebKit::InPageSearchManager::setMarkerActive):
        * blackberry/WebKitSupport/InPageSearchManager.h: Added.
        * blackberry/WebKitSupport/SelectionHandler.cpp:
        * blackberry/WebKitSupport/SelectionHandler.h:

2012-02-14  Jacky Jiang  <zhajiang@rim.com>

        [BlackBerry] Upstream BlackBerry WebCoreSupport FrameLoaderClientBlackBerry class
        https://bugs.webkit.org/show_bug.cgi?id=78275

        Reviewed by Rob Buis.

        Initial upstream, no new tests.

        * blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.h: Added.

2012-02-14  Lianghui Chen  <liachen@rim.com>

        Separate mimetype and file extension mapping API from WebKit/blackberry/Api/WebKitTextCodec and complete it.
        https://bugs.webkit.org/show_bug.cgi?id=78605

        Reviewed by Rob Buis.

        Now the MIME type and file extension mapping API are in WebKitMIMETypeConverter.

        * blackberry/Api/WebKitMIMETypeConverter.cpp: Added.
        (WebKit):
        (BlackBerry::WebKit::getExtensionForMimeType):
        (BlackBerry::WebKit::getMimeTypeForExtension):
        * blackberry/Api/WebKitMIMETypeConverter.h: Added.
        (WebKit):
        * blackberry/Api/WebKitTextCodec.cpp:
        * blackberry/Api/WebKitTextCodec.h:
        * blackberry/CMakeListsBlackBerry.txt:

2012-02-14  Ed Baker  <edbaker@rim.com>

        [BlackBerry] Dragging a selection handle outside of the content bounding box does not update the selection range correctly
        https://bugs.webkit.org/show_bug.cgi?id=78608

        Ensure that when selection handles leave the content bounding box that
        the handle not being dragged remains fixed. Do not applying padding to
        a direction that would cause the selection to shrink when performing
        the handle direction detection.

        Reviewed by Rob Buis.

        * blackberry/WebKitSupport/SelectionHandler.cpp:
        (BlackBerry::WebKit::directionOfPointRelativeToRect):
        (BlackBerry::WebKit::SelectionHandler::extendSelectionToFieldBoundary):
        (BlackBerry::WebKit::SelectionHandler::clipPointToFocusNode):
        (BlackBerry::WebKit::SelectionHandler::setSelection):
        * blackberry/WebKitSupport/SelectionHandler.h:

2012-02-14  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Upstream remaining classes in Api
        https://bugs.webkit.org/show_bug.cgi?id=78644

        Reviewed by Antonio Gomes.

        Initial upstream, no new tests.

        * blackberry/Api/BlackBerryContext.h: Added.
        * blackberry/Api/BlackBerryGlobal.cpp: Added.
        * blackberry/Api/BlackBerryGlobal.h: Added.
        * blackberry/Api/Version.cpp: Added.
        * blackberry/Api/Version.h: Added.

2012-02-14  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Upstream backing store related classes
        https://bugs.webkit.org/show_bug.cgi?id=78517

        Reviewed by Antonio Gomes.

        Initial upstream, no new tests.

        * blackberry/WebKitSupport/BackingStoreClient.cpp: Added.
        * blackberry/WebKitSupport/BackingStoreClient.h: Added.
        * blackberry/WebKitSupport/BackingStoreCompositingSurface.cpp: Added.
        * blackberry/WebKitSupport/BackingStoreCompositingSurface.h: Added.
        * blackberry/WebKitSupport/BackingStoreTile.cpp: Added.
        * blackberry/WebKitSupport/BackingStoreTile.h: Added.

2012-02-13  Nima Ghanavatian  <nghanavatian@rim.com>

        Initial upstreaming of selection handling code for BlackBerry port
        https://bugs.webkit.org/show_bug.cgi?id=78136

        Reviewed by Rob Buis.

        Initial upstreaming, no new tests.

        * blackberry/WebKitSupport/SelectionHandler.cpp: Added.
        * blackberry/WebKitSupport/SelectionHandler.h: Added.

2012-02-10  Mike Fenton  <mifenton@rim.com>

        BlackBerry Port - Input focus is suppressed during XHR loads
        https://bugs.webkit.org/show_bug.cgi?id=78368

        Allow JS to trigger the VKB and input focus when XHR scripting
        is active.

        This switching the loaded state to checking the webpages loaded state
        which is only updated after initial load.   When additional loading
        events happen for XHR, it remains false and focus events function.

        Also add detailed FocusLog's to shouldAcceptInputFocus.

        Reviewed by Rob Buis.

        * blackberry/WebKitSupport/InputHandler.cpp:
        (BlackBerry::WebKit::InputHandler::shouldAcceptInputFocus):

2012-02-10  Mike Fenton  <mifenton@rim.com>

        BlackBerry Port - JS focus on blur can cause recursion
        https://bugs.webkit.org/show_bug.cgi?id=78368

        Prevent JS recursion of blur/focus by allowing focus
        if we are already trying to prevent focus.

        Reviewed by Rob Buis.

        * blackberry/WebKitSupport/InputHandler.cpp:
        (BlackBerry::WebKit::InputHandler::InputHandler):
        (BlackBerry::WebKit::InputHandler::shouldAcceptInputFocus):
        (BlackBerry::WebKit::InputHandler::setElementFocused):
        * blackberry/WebKitSupport/InputHandler.h:
        (InputHandler):

2012-02-10  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Upstream graphics helper classes in WebKitSupport
        https://bugs.webkit.org/show_bug.cgi?id=78278

        Reviewed by Antonio Gomes.

        Initial upstream, no new tests.

        * blackberry/WebKitSupport/RenderQueue.cpp: Added.
        * blackberry/WebKitSupport/RenderQueue.h: Added.

2012-02-10  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Upstream graphics helper classes in WebKitSupport
        https://bugs.webkit.org/show_bug.cgi?id=78278

        Reviewed by Antonio Gomes.

        Initial upstream, no new tests.

        * blackberry/WebKitSupport/SurfacePool.cpp: Added.
        * blackberry/WebKitSupport/SurfacePool.h: Added.
        * blackberry/WebKitSupport/TileIndex.h: Added.
        * blackberry/WebKitSupport/TileIndexHash.h: Added.

2012-02-09  Leo Yang  <leo.yang@torchmobile.com.cn>

        [BlackBerry] Upstream JavaScriptDebuggerBlackBerry.{h, cpp}
        https://bugs.webkit.org/show_bug.cgi?id=78203

        Reviewed by Rob Buis.

        Initial upstream, no new tests.

        * blackberry/WebCoreSupport/JavaScriptDebuggerBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/JavaScriptDebuggerBlackBerry.h: Added.

2012-02-09  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Upstream BlackBerry WebKitSupport WebPageCompositor class
        https://bugs.webkit.org/show_bug.cgi?id=78276

        Reviewed by Antonio Gomes.

        Initial upstream, no new tests.

        * blackberry/WebKitSupport/WebPageCompositor.cpp: Added.
        * blackberry/WebKitSupport/WebPageCompositor.h: Added.

2012-02-08  Jacky Jiang  <zhajiang@rim.com>

        [BlackBerry] Upstream BlackBerry WebCoreSupport FrameNetworkingContextBlackBerry and IconDatabaseClientBlackBerry classes
        https://bugs.webkit.org/show_bug.cgi?id=78049

        Reviewed by Rob Buis.

        Initial upstream, no new tests.

        * blackberry/WebCoreSupport/FrameNetworkingContextBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/FrameNetworkingContextBlackBerry.h: Added.
        * blackberry/WebCoreSupport/IconDatabaseClientBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/IconDatabaseClientBlackBerry.h: Added.

2012-02-08  Leo Yang  <leo.yang@torchmobile.com.cn>

        [BlackBerry] Upstream InspectorClientBlackBerry.{h, cpp}
        https://bugs.webkit.org/show_bug.cgi?id=78082

        Reviewed by Rob Buis.

        Initial upstream, no new tests.

        * blackberry/WebCoreSupport/InspectorClientBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/InspectorClientBlackBerry.h: Added.

2012-02-08  Leo Yang  <leo.yang@torchmobile.com.cn>

        [BlackBerry] Remove EditCommandBlackBerry.cpp from build system
        https://bugs.webkit.org/show_bug.cgi?id=78078

        Reviewed by Rob Buis.

        WebKit/blackberry/WebCoreSupport/EditCommandBlackBerry.cpp which hasn't
        been upstreamed has been removed from the BlackBerry porting internally.
        So we should remove it from the build system.

        * blackberry/CMakeListsBlackBerry.txt:

2012-02-08  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Upstream DumpRenderTreeBlackBerry
        https://bugs.webkit.org/show_bug.cgi?id=78042

        Reviewed by Antonio Gomes.

        Add abstract interface for our DumpRenderTree solution.

        * blackberry/Api/DumpRenderTreeClient.h: Added.

2012-02-08  Nima Ghanavatian  <nghanavatian@rim.com>

        Initial upstreaming of input handling for BlackBerry port
        https://bugs.webkit.org/show_bug.cgi?id=77992

        Reviewed by Rob Buis.

        * blackberry/WebKitSupport/InputHandler.cpp: Added.
        * blackberry/WebKitSupport/InputHandler.h: Added.

2012-02-07  Robert Kroeger  <rjkroege@chromium.org>

        [chromium] Remove no longer necessary Chromium gesture recognizer code.
        https://bugs.webkit.org/show_bug.cgi?id=77492

        Reviewed by Adam Barth.

        * blackberry/WebCoreSupport/AboutDataEnableFeatures.in:

2012-02-07  Leo Yang  <leo.yang@torchmobile.com.cn>

        [BlackBerry] Upstream ChromeClientBlackBerry.{h, cpp}
        https://bugs.webkit.org/show_bug.cgi?id=77843

        Reviewed by Rob Buis.

        Initial upstream, no new tests.

        * blackberry/WebCoreSupport/ChromeClientBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/ChromeClientBlackBerry.h: Added.

2012-02-07  Rob Buis  <rbuis@rim.com>

        [BlackBerry] Upstream DumpRenderTreeSupport
        https://bugs.webkit.org/show_bug.cgi?id=77991

        Reviewed by Antonio Gomes.

        No functionalities changed, no new tests.

        * blackberry/WebKitSupport/DumpRenderTreeSupport.cpp: Added.
        (toGeolocationClientMock):
        (DumpRenderTreeSupport::DumpRenderTreeSupport):
        (DumpRenderTreeSupport::~DumpRenderTreeSupport):
        (DumpRenderTreeSupport::javaScriptObjectsCount):
        (DumpRenderTreeSupport::garbageCollectorCollect):
        (DumpRenderTreeSupport::garbageCollectorCollectOnAlternateThread):
        (DumpRenderTreeSupport::setLinksIncludedInFocusChain):
        (DumpRenderTreeSupport::linksIncludedInFocusChain):
        (DumpRenderTreeSupport::dumpConfigurationForViewport):
        (DumpRenderTreeSupport::numberOfPendingGeolocationPermissionRequests):
        (DumpRenderTreeSupport::resetGeolocationMock):
        (DumpRenderTreeSupport::setMockGeolocationError):
        (DumpRenderTreeSupport::setMockGeolocationPermission):
        (DumpRenderTreeSupport::setMockGeolocationPosition):
        (DumpRenderTreeSupport::scalePageBy):
        (DumpRenderTreeSupport::computedStyleIncludingVisitedInfo):
        * blackberry/WebKitSupport/DumpRenderTreeSupport.h: Added.
        (WebKit):
        (WebCore):
        (WTF):
        (DumpRenderTreeSupport):

2012-02-07  Jacky Jiang  <zhajiang@rim.com>

        [BlackBerry] Upstream BlackBerry WebCoreSupport DeviceOrientationClientBlackBerry and DeviceMotionClientBlackBerry classes
        https://bugs.webkit.org/show_bug.cgi?id=77993

        Reviewed by Rob Buis.

        Initial upstream, no new tests.

        * blackberry/WebCoreSupport/DeviceMotionClientBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/DeviceMotionClientBlackBerry.h: Added.
        * blackberry/WebCoreSupport/DeviceOrientationClientBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/DeviceOrientationClientBlackBerry.h: Added.

2012-02-06  Leo Yang  <leo.yang@torchmobile.com.cn>

        [BlackBerry] Use WebPagePrivate instead of WebPage in GeolocationControllerClientBlackBerry
        https://bugs.webkit.org/show_bug.cgi?id=77927

        Reviewed by Antonio Gomes.

        WebKit/blackberry/Api/WebPage which has a d pointer is designed for public API.
        GeolocationControllerClientBlackBerry in WebKit/blackberry/WebCoreSupport should
        use the d pointer directly because the client is internal implementation.

        No functionalities changed, no new tests.

        * blackberry/WebCoreSupport/GeolocationControllerClientBlackBerry.cpp:
        (GeolocationControllerClientBlackBerry::GeolocationControllerClientBlackBerry):
        (GeolocationControllerClientBlackBerry::requestPermission):
        (GeolocationControllerClientBlackBerry::cancelPermissionRequest):
        (GeolocationControllerClientBlackBerry::onLocationUpdate):
        (GeolocationControllerClientBlackBerry::onLocationError):
        * blackberry/WebCoreSupport/GeolocationControllerClientBlackBerry.h:
        (WebKit):
        (GeolocationControllerClientBlackBerry):

2012-02-06  Robin Cao  <robin.cao@torchmobile.com.cn>

        [BlackBerry] Remove unused variable in BackingStore
        https://bugs.webkit.org/show_bug.cgi?id=77851

        Reviewed by Kentaro Hara.

        * blackberry/Api/BackingStore.cpp:
        (BlackBerry::WebKit::BackingStorePrivate::blitContents):

2012-02-04  Jacky Jiang  <zhajiang@rim.com>

        [BlackBerry] Upstream BlackBerry WebCoreSupport ClientExtension and GeolocationControllerClientBlackBerry classes
        https://bugs.webkit.org/show_bug.cgi?id=77751

        Reviewed by Rob Buis.

        Initial upstream, no new tests.

        * blackberry/WebCoreSupport/ClientExtension.cpp: Added.
        * blackberry/WebCoreSupport/ClientExtension.h: Added.
        * blackberry/WebCoreSupport/GeolocationControllerClientBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/GeolocationControllerClientBlackBerry.h: Added.

2012-01-11  Jacky Jiang  <zhajiang@rim.com>

        [BlackBerry] ASSERT failure in BackingStorePrivate::blitVisibleContents()
        https://bugs.webkit.org/show_bug.cgi?id=76096

        Reviewed by Rob Buis.

        We shouldn't blit visible contents for direct rendering. Guard it from
        call sites.

        * blackberry/Api/BackingStore.cpp:
        (BlackBerry::WebKit::BackingStorePrivate::repaint):
        (BlackBerry::WebKit::BackingStorePrivate::slowScroll):

2012-01-11  Rafael Brandao  <rafael.lobo@openbossa.org>

        [Qt][WK2] Fix the build for newer Qt5
        https://bugs.webkit.org/show_bug.cgi?id=75964

        Reviewed by Simon Hausmann.

        * WebKit.pri: Added the new files to the buildsystem.

2012-01-10  Mike Lattanzio  <mlattanzio@rim.com>

        [BlackBerry] Fix assertion failure in BackingStore::blitContents
        https://bugs.webkit.org/show_bug.cgi?id=75976

        Prevent an assertion failure in BackingStore::blitContents by
        checking that the srcRect of the transformation matrix is non empty.

        Reviewed by Adam Treat.

        Upstream BlackBerry port is not yet building and testable.

        * blackberry/Api/BackingStore.cpp:
        (BlackBerry::WebKit::BackingStorePrivate::blitContents):

2012-01-06  Benjamin Poulain  <bpoulain@apple.com>

        [Mac] Sort the resources of WebKit.xcodeproj
        https://bugs.webkit.org/show_bug.cgi?id=75634

        Reviewed by Andreas Kling.

        * WebKit.xcodeproj/project.pbxproj:

2012-01-06  Jacky Jiang  <zhajiang@rim.com>

        [BlackBerry] Upstream BlackBerry WebCoreSupport cache client
        https://bugs.webkit.org/show_bug.cgi?id=75649

        Reviewed by Antonio Gomes.

        Initial upstream, no new tests.

        * blackberry/WebCoreSupport/CacheClientBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/CacheClientBlackBerry.h: Added.

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

        Leak of WebNotificationClient when page is destroyed
        https://bugs.webkit.org/show_bug.cgi?id=74980
        <rdar://problem/10611231>

        Reviewed by Mark Rowe.

        * blackberry/WebCoreSupport/NotificationPresenterImpl.cpp:
        (WebKit::NotificationPresenterImpl::notificationControllerDestroyed): Empty implementation, because ownership
        model differs.
        * blackberry/WebCoreSupport/NotificationPresenterImpl.h:

2011-12-15  Jacky Jiang  <zhajiang@rim.com>

        [BlackBerry] Upstream BlackBerry WebCoreSupport drag client and context menu client
        https://bugs.webkit.org/show_bug.cgi?id=74643

        Reviewed by Rob Buis.

        Initial upstream, no new tests.

        * blackberry/WebCoreSupport/ContextMenuClientBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/ContextMenuClientBlackBerry.h: Added.
        * blackberry/WebCoreSupport/DragClientBlackBerry.cpp: Added.
        * blackberry/WebCoreSupport/DragClientBlackBerry.h: Added.

2011-12-15  Jacky Jiang  <zhajiang@rim.com>

        [BlackBerry] Regression: lots of checkerboarding
        https://bugs.webkit.org/show_bug.cgi?id=74611

        Reviewed by Daniel Bates.

        Fix a regression caused by r102843 which introduced a lot of unnecessary
        checkerboarding. R102843 changed behavior by removing a check for blit
        based on whether the render actually took place and whether the
        backingstore was in the midst of suspended updates.
        The initial anthor is Adam Treat <atreat@rim.com>.

        * blackberry/Api/BackingStore.cpp:
        (BlackBerry::WebKit::BackingStorePrivate::repaint):
        (BlackBerry::WebKit::BackingStorePrivate::slowScroll):
        (BlackBerry::WebKit::BackingStorePrivate::renderVisibleContents):
        (BlackBerry::WebKit::BackingStorePrivate::renderBackingStore):
        * blackberry/Api/BackingStore_p.h:
        (BlackBerry::WebKit::BackingStorePrivate::isSuspended):

2011-12-15  Adam Treat  <atreat@rim.com>

        Reviewed by Rob Buis.

        https://bugs.webkit.org/show_bug.cgi?id=74609
        PR 122703

        For certain configurations of webpage content and zoom level we were
        failing to produce a valid backingstore matrix by being to strict on
        whether a given matrix fits the preferred matrix orientation.
        This patch fixes this by insisting on storing a candidate divisor
        whether or not it agrees with the preferred matrix orientation and then
        comparing all subsequent divisors.

        * blackberry/Api/BackingStore.cpp:
        (BlackBerry::WebKit::divisorIsPerfectWidth):
        (BlackBerry::WebKit::divisorIsPerfectHeight):
        (BlackBerry::WebKit::divisorIsPreferredDirection):
        (BlackBerry::WebKit::bestDivisor):

2011-12-14  Jacky Jiang  <zhajiang@rim.com>

        [BlackBerry] Refactor code and add some debug messages in backing store
        https://bugs.webkit.org/show_bug.cgi?id=74539

        Reviewed by Antonio Gomes.

        Refactor and get rid of the confusing and unnecessary
        'renderContentOnly' flag from the family of render methods in the
        backing store.
        Remove the overload of the render method that takes a list of rects from
        the backing store since it is just a for loop and only one place calls it.
        Add a debug message to illustrate when we start showing checkerboard and
        when we stop.
        Fix the debug messages in the DEBUG_BACKINGSTORE so that they actually compile
        and add a new message for debugging WebCore invalidation requests.
        The original author is Adam Treat <atreat@rim.com>

        * blackberry/Api/BackingStore.cpp:
        (BlackBerry::WebKit::BackingStorePrivate::resumeScreenAndBackingStoreUpdates):
        (BlackBerry::WebKit::BackingStorePrivate::repaint):
        (BlackBerry::WebKit::BackingStorePrivate::slowScroll):
        (BlackBerry::WebKit::BackingStorePrivate::renderDirectToWindow):
        (BlackBerry::WebKit::BackingStorePrivate::render):
        (BlackBerry::WebKit::BackingStorePrivate::renderVisibleContents):
        (BlackBerry::WebKit::BackingStorePrivate::renderBackingStore):
        (BlackBerry::WebKit::BackingStorePrivate::blitVisibleContents):
        (BlackBerry::WebKit::BackingStorePrivate::blitContents):
        (BlackBerry::WebKit::BackingStorePrivate::updateTile):
        (BlackBerry::WebKit::BackingStorePrivate::invalidateWindow):
        * blackberry/Api/BackingStore_p.h:

2011-12-14  Robin Qiu  <robin.qiu@torchmobile.com.cn>

        [BlackBerry] Add notification support for the BlackBerry port
        https://bugs.webkit.org/show_bug.cgi?id=73194

        Reviewed by Nikolas Zimmermann.

        Contributed by Torch team, the main contributor is Robin Qiu
        <robin.qiu@torchmobile.com.cn>.

        Initial upstream, no new tests.

        * blackberry/WebCoreSupport/NotificationPresenterImpl.cpp: Added.
        (WebKit::NotificationPresenterImpl::instance):
        (WebKit::NotificationPresenterImpl::NotificationPresenterImpl):
        (WebKit::NotificationPresenterImpl::~NotificationPresenterImpl):
        (WebKit::NotificationPresenterImpl::show):
        (WebKit::NotificationPresenterImpl::cancel):
        (WebKit::NotificationPresenterImpl::notificationObjectDestroyed):
        (WebKit::NotificationPresenterImpl::requestPermission):
        (WebKit::NotificationPresenterImpl::onPermission):
        (WebKit::NotificationPresenterImpl::cancelRequestsForPermission):
        (WebKit::NotificationPresenterImpl::checkPermission):
        (WebKit::NotificationPresenterImpl::notificationClicked):
        * blackberry/WebCoreSupport/NotificationPresenterImpl.h: Added.
        There is already a header file: Source/WebCore/notifications/NotificationPresenter.h.
        To avoid conflicting with the it, I name my header file to NotificationPresenterImpl.

2011-12-14  Jacky Jiang  <zhajiang@rim.com>

        [BlackBerry] Switch to libjpeg for decoding
        https://bugs.webkit.org/show_bug.cgi?id=74475

        Reviewed by Daniel Bates.

        Append libjpeg instead of libimg.

        * blackberry/CMakeListsBlackBerry.txt:

2011-12-14  Jacky Jiang  <zhajiang@rim.com>

        Upstream text codec and web string files of BlackBerry API
        https://bugs.webkit.org/show_bug.cgi?id=73586

        Reviewed by Daniel Bates.

        Initial upstream, no new tests.

        * blackberry/Api/WebKitTextCodec.cpp: Added.
        (BlackBerry::WebKit::isSameEncoding):
        (BlackBerry::WebKit::isASCIICompatibleEncoding):
        (BlackBerry::WebKit::transcode):
        (BlackBerry::WebKit::base64DecodePolicyForWebCore):
        (BlackBerry::WebKit::base64Decode):
        (BlackBerry::WebKit::base64Encode):
        (BlackBerry::WebKit::unescapeURL):
        (BlackBerry::WebKit::escapeURL):
        (BlackBerry::WebKit::getExtensionForMimeType):
        * blackberry/Api/WebKitTextCodec.h: Added.
        * blackberry/Api/WebString.cpp: Added.
        (BlackBerry::WebKit::WebString::WebString):
        (BlackBerry::WebKit::WebString::~WebString):
        (BlackBerry::WebKit::WebString::fromUtf8):
        (BlackBerry::WebKit::WebString::operator=):
        (BlackBerry::WebKit::WebString::utf8):
        (BlackBerry::WebKit::WebString::characters):
        (BlackBerry::WebKit::WebString::length):
        (BlackBerry::WebKit::WebString::isEmpty):
        (BlackBerry::WebKit::WebString::equal):
        (BlackBerry::WebKit::WebString::equalIgnoringCase):
        * blackberry/Api/WebString.h: Added.

2011-12-13  Arvid Nilsson  <anilsson@rim.com>

        [Blackberry] Fix a leak in BackingStore class

        Don't leak the blit generation condvar and mutex.

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

        Reviewed by Antonio Gomes.

        * blackberry/Api/BackingStore.cpp:
        (BlackBerry::WebKit::BackingStorePrivate::~BackingStorePrivate):

2011-12-09  Jacky Jiang  <zhajiang@rim.com>

        Upstream BlackBerry API backing store files
        https://bugs.webkit.org/show_bug.cgi?id=73668

        Reviewed by Daniel Bates.

        Contributed by Torch team, the main contributor is Adam Treat
        <atreat@rim.com>.

        Initial upstream, no new tests.

        * blackberry/Api/BackingStore.cpp: Added.
        * blackberry/Api/BackingStore.h: Added.
        * blackberry/Api/BackingStore_p.h: Added.

2011-12-06  Leo Yang  <leo.yang@torchmobile.com.cn>

        Upstream about: feature in WebKit/blackberry/WebCoreSupport/
        https://bugs.webkit.org/show_bug.cgi?id=73612

        Reviewed by Antonio Gomes.

        * blackberry/CMakeListsBlackBerry.txt:
        * blackberry/WebCoreSupport/AboutData.cpp: Added.
        (WebCore::numberToHTMLTr):
        (WebCore::configPage):
        (WebCore::cacheTypeStatisticToHTMLTr):
        (WebCore::memoryPage):
        * blackberry/WebCoreSupport/AboutData.h: Added.
        * blackberry/WebCoreSupport/AboutDataEnableFeatures.in: Added.
        * blackberry/WebCoreSupport/AboutDataHaveFeatures.in: Added.
        * blackberry/WebCoreSupport/AboutDataUseFeatures.in: Added.
        * blackberry/WebCoreSupport/generateAboutDataFeatures.pl: Added.

2011-12-01  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Cleanup includes to reduce code complexity.
        https://bugs.webkit.org/show_bug.cgi?id=73540

        Reviewed by Gustavo Noronha Silva.

        * CMakeLists.txt: Add loader/appcache to WebKit_INCLUDE_DIRECTORIES.

2011-11-28  Jon Lee  <jonlee@apple.com>

        Create skeleton framework for notifications support in WK2
        https://bugs.webkit.org/show_bug.cgi?id=73253
        <rdar://problem/10356943>

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj: Add WebNotificationClient class.

2011-11-26  Jonathan Dong  <jonathan.dong@torchmobile.com.cn>

        [CMake] Clean up Web Inspector target in Source/WebKit/blackberry/CMakeListsBlackBerry.txt
        https://bugs.webkit.org/show_bug.cgi?id=72784

        Reviewed by Nikolas Zimmermann.

        Abstracted the JavaScript file names from inspector/front-end/inspector.html
        to keep them in-sync with the changes of inspector.html.

        * blackberry/CMakeListsBlackBerry.txt:

2011-11-23  Raphael Kubo da Costa  <kubo@profusion.mobi>

        [CMake] Move the top-level logic to the top-level directory.
        https://bugs.webkit.org/show_bug.cgi?id=72685

        Reviewed by Brent Fulgham.

        * blackberry/CMakeListsBlackBerry.txt: Adjust the Source/ directory.

2011-11-20  Mark Rowe  <mrowe@apple.com>

        <http://webkit.org/b/72661> Switch to a more modern approach to retrieving the startup volume name

        Use the DiskArbitration framework to retrieve the name of the startup volume rather than using Carbon
        File Manager APIs.

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj: Link against DiskArbitration.framework. It lives in the shared cache
        so it should add only negligible launch time overhead.

2011-11-18  Daniel Bates  <dbates@rim.com>

        Add CMake build infrastructure for the BlackBerry port
        https://bugs.webkit.org/show_bug.cgi?id=72768

        Reviewed by Antonio Gomes.

        * blackberry: Added.
        * blackberry/CMakeListsBlackBerry.txt: Added.

2011-11-18  Patrick Gansterer  <paroga@webkit.org>

        [CMake] Add possibility to overwrite WEBKIT_PORT_DIR in platform specific files
        https://bugs.webkit.org/show_bug.cgi?id=72710

        Reviewed by Brent Fulgham.

        * CMakeLists.txt:

2011-11-17  Simon Hausmann  <simon.hausmann@nokia.com>

        [Qt] Layer violation: qt_runtime.cpp accesses QWebElement and QTDRTNode
        https://bugs.webkit.org/show_bug.cgi?id=72595

        Reviewed by Noam Rosenthal.

        * WebKit.pri: Add qwebelement_p.h to HEADERS.

2011-11-11  Darin Adler  <darin@apple.com>

        * WebKit.xcodeproj/project.pbxproj: Let a newer Xcode update this file.
        If an older Xcode downgrades this file and we have a risk of some kind of
        oscillating commit situation, please contact me so I know not to do this again.

2011-11-08  Nikolas Zimmermann  <nzimmermann@rim.com>

        Switch SVGImage cache to store ImageBuffers instead of whole SVGImages, including a DOM/Render tree
        https://bugs.webkit.org/show_bug.cgi?id=71368

        Reviewed by Antti Koivisto.

        * CMakeLists.txt: Add svg/graphics include, for SVGImageCache.h.

2011-11-04  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        [Qt] Refactor and clean up the qmake build system

        The qmake build system has accumulated a bit of cruft and redundancy
        over time. There's also a fairly tight coupling between how to build
        the various targets, and _what_ to build, making it harder to add new
        rules or sources. This patch aims to elevate these issues somewhat.

        This is a short-list of the changes:

          * The rules for how to build targets are now mostly contained as
            prf-files in Tools/qmake/mkspecs/features. Using mkspecs also
            allows us to do pre- and post-processing of each project file,
            which helps to clean up the actual project files.

          * Derived sources are no longer generated as a separate make-step
            but is part of each target's project file as a subdir. Makefile
            rules are used to ensure that we run make on the derived sources
            before running qmake on the actual target makefile. This makes
            it easier to keep a proper dependency between derived sources
            and the target.

          * We use GNU make and the compiler to generate dependencies on
            UNIX-based systems running Qt 5. This allows us to lessen the
            need to run qmake, which should reduce compile time.

          * WebKit2 is now build by default if building with Qt 5. It can
            be disabled by passing --no-webkit2 to build-webkit.

        The result of these changes are hopefully a cleaner and easier
        build system to modify, and faster build times due to no longer
        running qmake on every single build. It's also a first step
        towards possibly generating the list of sources using another
        build system.

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

        Reviewed by Simon Hausmann.

        * WebKit.pri: Added.

2011-10-10  Joseph Pecoraro  <joepeck@webkit.org>

        Extract WebOpenPanelResultListener out into its own file
        https://bugs.webkit.org/show_bug.cgi?id=69575

        Reviewed by David Kilzer.

        * WebKit.xcodeproj/project.pbxproj:

2011-10-06  Anders Carlsson  <andersca@apple.com>

        When building with clang, enable -Wglobal-constructors and -Wexit-time-destructors
        https://bugs.webkit.org/show_bug.cgi?id=69586

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj:
        When building with clang, we don't need to run the check-for-global-initializers and
        check-for-exit-time-destructors anymore.

2011-09-27  Andy Estes  <aestes@apple.com>

        WebKitLinkedOnOrAfter() check is ineffective for Solar Walk app-specific hack.
        https://bugs.webkit.org/show_bug.cgi?id=68863

        Reviewed by Darin Adler.

        The SolarWalk binary does not link against WebKit.framework directly,
        so calling NSVersionOfLinkTimeLibrary() will not return the version of
        WebKit against which SolarWalk was linked. Since Solar Walk has
        released an update that addresses the issue for which this app-specific
        hack was originally added, we should just remove the hack.

        * WebKit.xcodeproj/project.pbxproj: Remove SolarWalkQuirksUserScript.js.

2011-09-25  Adam Barth  <abarth@webkit.org>

        Remove PLATFORM(HAIKU) and associated code
        https://bugs.webkit.org/show_bug.cgi?id=68774

        Reviewed by Sam Weinig.

        * haiku: Removed.
        * haiku/WebCoreSupport: Removed.
        * haiku/WebCoreSupport/ChromeClientHaiku.cpp: Removed.
        * haiku/WebCoreSupport/ChromeClientHaiku.h: Removed.
        * haiku/WebCoreSupport/ContextMenuClientHaiku.cpp: Removed.
        * haiku/WebCoreSupport/ContextMenuClientHaiku.h: Removed.
        * haiku/WebCoreSupport/DragClientHaiku.cpp: Removed.
        * haiku/WebCoreSupport/DragClientHaiku.h: Removed.
        * haiku/WebCoreSupport/EditorClientHaiku.cpp: Removed.
        * haiku/WebCoreSupport/EditorClientHaiku.h: Removed.
        * haiku/WebCoreSupport/FrameLoaderClientHaiku.cpp: Removed.
        * haiku/WebCoreSupport/FrameLoaderClientHaiku.h: Removed.
        * haiku/WebCoreSupport/InspectorClientHaiku.cpp: Removed.
        * haiku/WebCoreSupport/InspectorClientHaiku.h: Removed.

2011-09-23  Anders Carlsson  <andersca@apple.com>

        Axe WebImageRendererFactory
        https://bugs.webkit.org/show_bug.cgi?id=68715

        Reviewed by Darin Adler.

        Remove WebImageRendererFactory.m from the Xcode project.

        * WebKit.xcodeproj/project.pbxproj:

2011-09-23  Anders Carlsson  <andersca@apple.com>

        Add OVERRIDE to a bunch of virtual member functions on clients
        https://bugs.webkit.org/show_bug.cgi?id=68712

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj:

2011-09-21  Dan Bernstein  <mitz@apple.com>

        WebKit part of: Prevent the WebKit frameworks from defining inappropriately-named Objective-C classes
        https://bugs.webkit.org/show_bug.cgi?id=68451

        Reviewed by Darin Adler.

        * WebKit.xcodeproj/project.pbxproj: Added a script build phase that invokes
        check-for-inappropriate-objc-class-names, allowing only class names prefixed with "Web" or "_Web".

2011-09-19  Anders Carlsson  <andersca@apple.com>

        Remove WebViewEventHandling.mm
        https://bugs.webkit.org/show_bug.cgi?id=68387

        Reviewed by Adam Roben.

        Remove WebViewEventHandling.mm from the Xcode project.

        * WebKit.xcodeproj/project.pbxproj:

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

        WebKit part of [mac] WebKit contains Objective-C classes that are not prefixed with its standard prefixes
        https://bugs.webkit.org/show_bug.cgi?id=68323

        Reviewed by Sam Weinig.

        Updated for the renaming of NonBlockingPanel to WebNonBlockingPanel.

        * English.lproj/WebJavaScriptTextInputPanel.nib/classes.nib: Removed.
        * English.lproj/WebJavaScriptTextInputPanel.nib/designable.nib: Added.
        * English.lproj/WebJavaScriptTextInputPanel.nib/info.nib: Removed.
        * English.lproj/WebJavaScriptTextInputPanel.nib/keyedobjects.nib:

2011-09-16  Filip Pizlo  <fpizlo@apple.com>

        DFG JIT should inline Math.abs
        https://bugs.webkit.org/show_bug.cgi?id=68227

        Reviewed by Oliver Hunt.

        Added JavaScriptCore/dfg to include path path.

        * CMakeLists.txt:

2011-09-14  Anders Carlsson  <andersca@apple.com>

        Get rid of WebCoreViewFactory and its WebViewFactory subclass
        https://bugs.webkit.org/show_bug.cgi?id=68124

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj:

2011-08-23  Jonas M. Gastal <jgastal@profusion.mobi>

        Reviewed by Antonio Gomes.

        [EFL] Exporting JavaScript objects for EFL port
        https://bugs.webkit.org/show_bug.cgi?id=43446

        This patch allows to export objects to JavaScript API,
        just like qt does, but it uses the netscape api
        to do the convertion to javascript object.

        * CMakeLists.txt:
        Adding necessary files for the patch.

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

        Remove PluginHalter
        https://bugs.webkit.org/show_bug.cgi?id=65729

        Reviewed by Darin Adler.

        Remove deleted files from Xcode project.

        * WebKit.xcodeproj/project.pbxproj:

2011-07-28  Tony Chang  <tony@chromium.org>

        Add sql to svn:ignore and remove app.

        * chromium: Modified property svn:ignore.

2011-07-08  David Reveman  <reveman@chromium.org>

        Reviewed by Stephen White.

        [Chromium] Edge anti-aliasing for composited layers.
        https://bugs.webkit.org/show_bug.cgi?id=61388

        Track changes to TilingData class which now uses an outer border.

        * chromium/tests/TilingDataTest.cpp:

2011-06-30  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Simon Hausmann.

        generate-webkitversion.pl should not "use Switch"
        https://bugs.webkit.org/show_bug.cgi?id=63628

        Switch got deprecated on recent Perl versions and the script wasn't
        using the switch statement.
        
        * scripts/generate-webkitversion.pl: Remove "use Switch;" line.

2011-06-01  Jer Noble  <jer.noble@apple.com>

        Reviewed by Eric Carlson.

        Move Full Screen Controllers into WebCore.

        Remove dependency on QTKit from wekitExitFullscreen()
        https://bugs.webkit.org/show_bug.cgi?id=61843

        WebVideoFullscreenController, WebVideoFullscreenHUDController, and WebWindowAnimation
        have been moved into WebCore.

        * WebKit.xcodeproj/project.pbxproj:

2011-06-15  David Kilzer  <ddkilzer@apple.com>

        <http://webkit.org/b/62745> Convert WebNSFileManagerExtras.m to Objective-C++

        Reviewed by Joseph Pecoraro.

        * WebKit.xcodeproj/project.pbxproj:
        (WebNSFileManagerExtras.m): Rename to WebNSFileManagerExtras.mm
        and change file type to Objective-C++.

2011-06-02  Adam Barth  <abarth@webkit.org>

        Reviewed by Ryosuke Niwa.

        Update svn:ignore property on Source/WebKit/chromium
        https://bugs.webkit.org/show_bug.cgi?id=61952

        Add some more generated files and directories mapped in using DEPS to svn:ignore.

        * chromium: Modified property svn:ignore.

2011-05-20  Andy Estes  <aestes@apple.com>

        Reviewed by Darin Adler.

        WebView loses firstResponder status when entering full-screen mode.
        https://bugs.webkit.org/show_bug.cgi?id=61153

        * WebKit.xcodeproj/project.pbxproj: Export WebNSWindowExtras.h as a
        private header so that WebKit2 can include it.

2011-05-16  Dan Bernstein  <mitz@apple.com>

        No need to compile .js files, that is what the JIT is for.

        * WebKit.xcodeproj/project.pbxproj:

2011-05-12  Adele Peterson  <adele@apple.com>

        Reviewed by Darin Adler and Adam Barth.

        Fix for <rdar://problem/9253454> Solar Walk For Mac: Info window is blank (HTML5 parser)
        https://bugs.webkit.org/show_bug.cgi?id=60685

        * WebKit.xcodeproj/project.pbxproj: Added Misc/SolarWalkQuirksUserScript.js and copy it to Resources during the build phase. 

2011-04-18  Timothy Hatcher  <timothy@apple.com>

        Make update-webkit-localizable-strings put WebKit/win strings in WebCore
        now that all localized strings in WebKit/win use WEB_UI_STRING.

        https://webkit.org/b/58747

        Reviewed by Dan Bernstein.

        * English.lproj/Localizable.strings: Removed.

2011-04-17  Joseph Pecoraro  <joepeck@webkit.org>

        Reviewed by Timothy Hatcher.

        Move WebNodeHighlighter into its own file
        https://bugs.webkit.org/show_bug.cgi?id=58746

        * WebKit.xcodeproj/project.pbxproj: Add WebNodeHighlighter.{h,mm}.

2011-04-13  Ryuan Choi  <ryuan.choi@samsung.com>

        Reviewed by Kenneth Rohde Christiansen.

        [CMAKE] Separate DerivedSources.
        https://bugs.webkit.org/show_bug.cgi?id=58427

        * CMakeLists.txt: Change DERIVED_SOURCES_DIR to DERIVED_SOURCES_WEBCORE_DIR

2011-04-11  Alexis Menard  <alexis.menard@openbossa.org>

        Unreviewed build fix for Mac.

        * WebKit.xcodeproj/project.pbxproj:

2011-04-11  Anna Cavender  <annacc@chromium.org>

        Reviewed by Eric Carlson.

        Setup ENABLE(TRACK) feature define + initial HTMLTrackElement
        https://bugs.webkit.org/show_bug.cgi?id=53556

        * WebKit.xcodeproj/project.pbxproj:

2011-04-08  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Oliver Hunt.

        A few heap-related renames and file moves.
        
        WeakGCPtr<T> => Weak<T>
        Global<T> => Strong<T>
        collector/ => heap/
        collector/* => heap/*
        runtime/WeakGCPtr.h => heap/Weak.h
        
        (Eventually, even more files should move into the heap directory. Like
        Heap.h and Heap.cpp, for example.)

        * CMakeLists.txt:

2011-04-08  Dan Bernstein  <mitz@apple.com>

        No need to compile .js files, that is what the JIT is for.

        * WebKit.xcodeproj/project.pbxproj:

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

        * WebKit.xcodeproj/project.pbxproj:

2011-04-07  Anna Cavender  <annacc@chromium.org>

        Reviewed by Eric Carlson.

        Setup ENABLE(TRACK) feature define + initial HTMLTrackElement
        https://bugs.webkit.org/show_bug.cgi?id=53556

        * WebKit.xcodeproj/project.pbxproj:

2011-04-07  Andrew Scherkus  <scherkus@chromium.org>

        Revert ENABLE_TRACK patch due to compile failures.

        * WebKit.xcodeproj/project.pbxproj:

2011-04-07  Andy Estes  <aestes@apple.com>

        Reviewed by Darin Adler.

        REGRESSION (r64712): Microsoft Outlook 2011: original message contents
        not included when replying to an email.
        https://bugs.webkit.org/show_bug.cgi?id=57794

        * WebKit.xcodeproj/project.pbxproj:

2011-04-05  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Darin Adler.

        Move attributedStringFromRange down to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=57905

        * WebKit.xcodeproj/project.pbxproj: Removed WebNSAttributedStringExtras, which is now in WebCore.

2011-03-29  Timothy Hatcher  <timothy@apple.com>

        Update WebKit Localizable.strings to only contain WebKit/win strings.

        https://webkit.org/b/57354

        Reviewed by Sam Weinig.

        * English.lproj/Localizable.strings: Updated.

2011-03-23  Jia Pu  <jpu@apple.com>

        Reviewed by Darin Adler.

        Hook up new AppKit autocorrection UI with WK2.
        https://bugs.webkit.org/show_bug.cgi?id=56055
        <rdar://problem/8947463>

        Please see WebCore/ChangeLog for detail.

        * WebKit.xcodeproj/project.pbxproj:

2011-03-17  Jeff Miller  <jeffm@apple.com>

        Use a consistent set of file patterns in the svn:ignore property for all .xcodeproj directories, specifically:
        
        *.mode*
        *.pbxuser
        *.perspective*
        project.xcworkspace
        xcuserdata

        * WebKit.xcodeproj: Modified property svn:ignore.

2011-03-15  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Darin Adler.

        REGRESSION (WebKit2): keygen element doesn't work
        https://bugs.webkit.org/show_bug.cgi?id=56402
        <rdar://problem/9006545>

        * WebKit.xcodeproj/project.pbxproj: Renamed WebKeyGenerator.m to use Objective C++.

2011-03-11  Anton D'Auria  <adauria@apple.com>

        Reviewed and landed by Brady Eidson.

        Add WebKit1 API to view and delete local storage
        https://bugs.webkit.org/show_bug.cgi?id=51878

        * WebKit.xcodeproj/project.pbxproj:

2011-03-02  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        Fix remaining localization issues by piping all localized strings through WebCore's
        localization bottleneck.
        <rdar://problem/8728860>

        * WebKit.xcodeproj/project.pbxproj:

2011-03-01  Sam Weinig  <sam@webkit.org>

        Reviewed by Timothy Hatcher.

        WebKit2 needs to be made localizable
        https://bugs.webkit.org/show_bug.cgi?id=55483

        * StringsNotToBeLocalized.txt: Removed.
        * WebKit.xcodeproj/project.pbxproj:
        Copied Localizable.strings to WebCore, it can't be removed entirely
        yet since Windows is still using it.

2011-02-24  Peter Kasting  <pkasting@google.com>

        Reviewed by Eric Seidel.

        Drop the "U; " encryption level from the User Agent string.
        https://bugs.webkit.org/show_bug.cgi?id=54566

        * StringsNotToBeLocalized.txt:

2011-02-22  Laszlo Gombos  <laszlo.1.gombos@nokia.com>

        Reviewed by Alexey Proskuryakov.

        Drop the language tag part from the User Agent string
        https://bugs.webkit.org/show_bug.cgi?id=54560

        * StringsNotToBeLocalized.txt: Change the User Agent string
        template.

2011-02-18  Patrick Gansterer  <paroga@webkit.org>

        Unreviewed build fix after r78634 and r78786.

        * CMakeLists.txt:

2011-02-16  Luiz Agostini  <luiz.agostini@openbossa.org>

        Reviewed by Adam Roben.

        HTML5 <details> and <summary>: localized text
        https://bugs.webkit.org/show_bug.cgi?id=54260

        Default details summary text must be localizable.

        * English.lproj/Localizable.strings:

2011-02-06  Patrick Gansterer  <paroga@webkit.org>

        Reviewed by Andreas Kling.

        [CMake] Add dependencies for Visual Studio projects
        https://bugs.webkit.org/show_bug.cgi?id=53773

        Add a WebCore dependecy to WebKit, so CMake can 
        generate the correct build order for the solution.

        Remove JavaScriptCore dependecy, since WebCore already depends on it.

        * CMakeLists.txt:

2011-01-23  Mark Rowe  <mrowe@apple.com>

        Follow-up to r76477.

        Fix the scripts that detect problematic code such as static initializers
        and destructors, weak vtables, inappropriate files in the framework wrappers,
        and public headers including private headers. These had all been broken
        since the projects were moved in to the Source directory as the paths to the
        scripts were not updated at that time.

        * WebKit.xcodeproj/project.pbxproj:

2011-01-20  Zoltan Horvath  <zoltan@webkit.org>

        Reviewed by Csaba Osztrogonác.

        Refactoring of the custom allocation framework
        https://bugs.webkit.org/show_bug.cgi?id=49897

        Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
        The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
        equivalent macro implementation at the necessary places.

2011-01-17  Dan Bernstein  <mitz@apple.com>

        Rubber-stamped by Mark Rowe.

        Update xcodeproj svn:ignore to include xcuserdata.

        * WebKit.xcodeproj: Modified property svn:ignore.

2011-01-17  Brady Eidson  <beidson@apple.com>

        Rubberstamped by Adam Roben.

        Fix up the `make` build on Macs

        * Makefile: Point to the correct Makefile.shared

2011-01-16  Adam Barth  <abarth@webkit.org>

        Rubber-stamped by Eric Seidel.

        Move WebKit into Source
        https://bugs.webkit.org/show_bug.cgi?id=52530

        * Makefile:
        * scripts/generate-webkitversion.pl:

2011-01-07  Enrica Casucci  <enrica@apple.com>

        Reviewed by Alexey Proskuryakov.

        Paste and drag and drop use different code paths to interact with the pasteboard.
        https://bugs.webkit.org/show_bug.cgi?id=52093
        The change consists in a refactoring of the code to have only one class that
        deals with the pasteboard on Mac.

        * WebKit.xcodeproj/project.pbxproj: Removed WebPasteboardHelper.mm and WebPasteboardHelper.h.

2010-12-31  Adam Barth  <abarth@webkit.org>

        Update SVN ignore property to hide two more external dependencies.

        * chromium: Modified property svn:ignore.

2010-12-22  Dan Bernstein  <mitz@apple.com>

        Rubber-stamped by Mark Rowe.

        Changed WebKitTools to Tools in script build phases.

        * WebKit.xcodeproj/project.pbxproj:

2010-12-14  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Eric Seidel.

        [EFL] Add linker script to export less symbols
        https://bugs.webkit.org/show_bug.cgi?id=44609

        Filter the exported symbols by using a linker script. Only symbols
        starting with "ewk_" are exported.

        * CMakeLists.txt: Add link flags to webkit library when there's a
        version script.

2010-12-07  Simon Fraser  <simon.fraser@apple.com>

        Update Xcode project for newer Xcode.

        * WebKit.xcodeproj/project.pbxproj:

2010-11-18  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes.

2010-11-16  Patrick Gansterer  <paroga@webkit.org>

        Reviewed by Andreas Kling.

        [CMake] Remove platform dependent include directories
        https://bugs.webkit.org/show_bug.cgi?id=49553

        * CMakeLists.txt:

2010-11-12  John Knottenbelt  <jknotten@chromium.org>

        Reviewed by Steve Block.

        Rename GeolocationControllerClient to GeolocationClient.
        https://bugs.webkit.org/show_bug.cgi?id=49259

        * WebKit.xcodeproj/project.pbxproj:

2010-11-08  Leandro Pereira  <leandro@profusion.mobi>

        [EFL] Unreviewed. Build fix after r71496.

        * CMakeLists.txt: Add WebCore/loader/cache directory to WebKit's
        include directories list.

2010-11-04  Mike Thole  <mthole@apple.com>

        Reviewed by Dan Bernstein.

        Title for images should use localized numerals
        https://bugs.webkit.org/show_bug.cgi?id=49017

        * English.lproj/Localizable.strings: Updated.

2010-10-28  Mark Rowe  <mrowe@apple.com>

        Stop allowing deprecated methods to be used in NetscapePluginHostProxy.mm now
        that deprecated methods are no longer used.

        * WebKit.xcodeproj/project.pbxproj:

2010-10-26  Dan Bernstein  <mitz@apple.com>

        Build fix.

        * WebKit.xcodeproj/project.pbxproj: Allow deprecated methods to be used in NetscapePluginHostProxy.mm.

2010-10-23  David Kilzer  <ddkilzer@apple.com>

        <http://webkit.org/b/48186> Remove unneeded WebHTMLRepresentationInternal.h header

        Reviewed by Sam Weinig.

        The only method defined in WebHTMLRepresentationInternal.h is
        also defined in WebHTMLRepresentation.h, so use that instead.

        * WebKit.xcodeproj/project.pbxproj: Removed references to
        WebHTMLRepresentationInternal.h.

2010-10-21  David Kilzer  <ddkilzer@apple.com>

        <http://webkit.org/b/48047> Fix warnings found by check-Xcode-source-file-types

        Reviewed by Adam Roben.

        Fixes the following warning:

            WARNING: Incorrect file type 'sourcecode.cpp.objcpp' for file 'WebStringTruncator.h'.
            1 issues found for WebKit/WebKit.xcodeproj/project.pbxproj.

        * WebKit.xcodeproj/project.pbxproj: Removed explicit file type
        for WebStringTruncator.h to make it match other header files.

2010-10-20  Nikolas Zimmermann  <nzimmermann@rim.com>

        Not reviewed.

        Fix efl build, add missing svg/properties include directory.

        * CMakeLists.txt:

2010-10-18  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by David Kilzer.

        https://bugs.webkit.org/show_bug.cgi?id=47864
        Convert WebNSUserDefaultsExtras.m to .mm

        * WebKit.xcodeproj/project.pbxproj: Renamed WebNSUserDefaultsExtras.m.

2010-10-12  Eric Seidel  <eric@webkit.org>

        Reviewed by Darin Adler.

        REGRESSION (new parser): Leopard/Tiger Mail <head>/<body> quirk is gone
        https://bugs.webkit.org/show_bug.cgi?id=45693

        * WebKit.xcodeproj/project.pbxproj:
         - Add the MailQuirksUserScript.js to the project.

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

        Reviewed by Darin Adler.

        Remove WebIconFetcher from WebKit and IconFetcher from WebCore
        https://bugs.webkit.org/show_bug.cgi?id=47523

        Remove all traces of the WebKit WebIconFetcher class. It's SPI that nobody uses.

        * WebKit.xcodeproj/project.pbxproj:

2010-10-07  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Sam Weinig.

        Add Private API for creating a WebKit1 WebSerializedJSValue from the internal
        representation of a WebKit2 WebSerializedScriptValue.
        https://bugs.webkit.org/show_bug.cgi?id=47390

        * WebKit.xcodeproj/project.pbxproj:
        Add WebSerializedJSValuePrivate.h.

2010-10-05  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Get the link from a plugin when creating a context menu
        https://bugs.webkit.org/show_bug.cgi?id=47130

        * chromium/public/WebPlugin.h:
        (WebKit::WebPlugin::linkAtPosition):
        * chromium/public/WebView.h:
        * chromium/src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::mouseDidMoveOverElement):
        * chromium/src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):

2010-09-22  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Unreviewed, EFL build fix.

        * CMakeLists.txt:

2010-09-20  Philippe Normand  <pnormand@igalia.com>

        Reviewed by Eric Carlson.

        [GTK] enhanced context menu for media elements
        https://bugs.webkit.org/show_bug.cgi?id=45021

        Updated localizable strings.

        * English.lproj/Localizable.strings:

2010-09-17  David Kilzer  <ddkilzer@apple.com>

        <http://webkit.org/b/45989> Add WebArchiveInternal.h to Xcode project

        Reviewed by Joseph Pecoraro.

        * WebKit.xcodeproj/project.pbxproj: Added missing
        WebArchiveInternal.h header file to the project.  It has been
        missing since r31281!

2010-09-16  Dan Bernstein  <mitz@apple.com>

        Reverted the previous change because r67628 has been reverted.

        * English.lproj/Localizable.strings:

2010-09-16  Dan Bernstein  <mitz@apple.com>

        Updated localizable strings.

        * English.lproj/Localizable.strings:

2010-09-10  Darin Adler  <darin@apple.com>

        Reviewed by Sam Weinig.

        Move some Dashboard stuff from WebCore to WebKit along with a bit more FrameMac cleanup
        https://bugs.webkit.org/show_bug.cgi?id=45582

        * WebKit.xcodeproj/project.pbxproj: Added WebDashboardRegion.h/mm and
        also gave the header private visibility so it will get installed in the
        PrivateHeaders directory.

2010-09-02  Steve Block  <steveblock@google.com>

        Reviewed by Adam Barth.

        Hook up LayoutTestController.setMockDeviceOrientation() on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=43181

        * WebKit.xcodeproj/project.pbxproj:

2010-08-30  Andy Estes  <aestes@apple.com>

        Reviewed by Darin Adler.

        Add 'application/x-snkp' to StringsNotToBeLocalized.txt.

        * StringsNotToBeLocalized.txt:

2010-08-20  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Unreviewed build fix.

        As opposed to WebCore, JavascriptCore and wtf, webkit is always a
        shared library. After r65366, libewebkit.so was not being installed
        anymore when building with SHARED_CORE=0 (which is the default). This
        partially reverts that revision in order to fix this issue.

        * CMakeLists.txt: always install webkit library.

2010-08-17  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>

        Reviewed by Darin Adler.

        Add NetworkingContext to avoid layer violations
        https://bugs.webkit.org/show_bug.cgi?id=42292

        Preparation: Just add the files to the build system.

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

2010-08-17  Brady Eidson  <beidson@apple.com>

        Reviewed by Sam Weinig.

        Remove developmentRegion from the project file as it shouldn't have been checked in.

        * WebKit.xcodeproj/project.pbxproj:

2010-08-16  Leandro Pereira  <leandro@profusion.mobi>

        [EFL] Build fix after r65366.

        * CMakeLists.txt: Use if (VAR) instead of if (${VAR}) to check if
        they're empty.

2010-08-14  Joseph Pecoraro  <joepeck@webkit.org>

        Reviewed by Pavel Feldman.

        Web Inspector: -[WebInspector attach] and detach should work
        https://bugs.webkit.org/show_bug.cgi?id=43924

        * WebKit.xcodeproj/project.pbxproj: Added WebInspectorFrontend.{h,mm}.

2010-08-14  Patrick Gansterer  <paroga@paroga.com>

        Reviewed by Kenneth Rohde Christiansen.

        [CMake] Set target properties only if available
        https://bugs.webkit.org/show_bug.cgi?id=43978

        * CMakeLists.txt:

2010-08-13  Gavin Barraclough  <barraclough@apple.com>

        Rubber stamped by Sam Weinig.
        Switch String::/UString::ascii() to return a CString.

        * WebKit.xcodeproj/project.pbxproj:

2010-08-06  Gavin Barraclough  <barraclough@apple.com>

        Rubber stamped by Sam Weinig

        Bug 43594 - Add string forwards to Forward.h
        This allows us to remove forward declarations for these classes from
        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).

        * WebKit.xcodeproj/project.pbxproj:

2010-08-06  Jessie Berlin  <jberlin@apple.com>

        Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build.
        Unreviewed.

        * WebKit.xcodeproj/project.pbxproj:

2010-08-03  Joseph Pecoraro  <joepeck@webkit.org>

        Reviewed by David Kilzer.

        Limit ApplicationCache Total and Per-Origin Storage Capacity (Quotas)
        https://bugs.webkit.org/show_bug.cgi?id=40627

        Part 5 - Refactor Quota Management in WebSecurityOrigin into Managers

        * WebKit.xcodeproj/project.pbxproj: Add new Quota Managers, remove old SecurityOrigin subclasses.

2010-07-31  David Kilzer  <ddkilzer@apple.com>

        <http://webkit.org/b/43307> Make sure all private headers are copied to PrivateHeaders directory

        Reviewed by Dan Bernstein.

        This also fixes compilation of DumpRenderTree after changes for
        Bug 40627.

        * WebKit.xcodeproj/project.pbxproj: Set the PRIVATE attribute on
        the following headers:
        - WebFormDelegatePrivate.h
        - WebKitStatisticsPrivate.h
        - WebSecurityOriginPrivate.h

2010-07-30  Joseph Pecoraro  <joepeck@webkit.org>

        Reviewed by David Kilzer.

        Limit ApplicationCache Total and Per-Origin Storage Capacity (Quotas)
        https://bugs.webkit.org/show_bug.cgi?id=40627

        * WebKit.xcodeproj/project.pbxproj:
        * efl/WebCoreSupport/ChromeClientEfl.cpp:
        (WebCore::ChromeClientEfl::reachedApplicationCacheOriginQuota):
        * efl/WebCoreSupport/ChromeClientEfl.h:

2010-07-30  Rafael Antognolli  <antognolli@profusion.mobi>

        Reviewed by Antonio Gomes.

        [EFL] Add library version and soname to EFL generated libraries and binary.
        https://bugs.webkit.org/show_bug.cgi?id=43212

        Add version and soname to libewebkit.so.

        * CMakeLists.txt:

2010-07-26  Rafael Antognolli  <antognolli@profusion.mobi>

        Reviewed by Antonio Gomes.

        [EFL] Move CMakeListsEfl.txt to WebKit/efl/
        https://bugs.webkit.org/show_bug.cgi?id=43002

        This should reduce the noise in WebKit/ChangeLog that comes from EFL
        port. Most of the changes on EFL port should be logged in
        WebKit/efl/ChangeLog.

        * CMakeLists.txt: Just change the path from where to include the file.

2010-07-23  Rafael Antognolli  <antognolli@profusion.mobi>

        Reviewed by Antonio Gomes.

        [EFL] Cleanup glib support (make it optional)
        https://bugs.webkit.org/show_bug.cgi?id=42480

        Just add glib flags and directories if necessary.

        * CMakeListsEfl.txt:

2010-07-23  Rafael Antognolli  <antognolli@profusion.mobi>

        Reviewed by Antonio Gomes.

        [EFL] Add support for using libcurl network backend.
        https://bugs.webkit.org/show_bug.cgi?id=42286

        Just add soup/curl directories and flags for the specific
        backend being used.

        * CMakeLists.txt:
        * CMakeListsEfl.txt:

2010-07-22  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Antonio Gomes.

        [EFL] Implement input method notification
        https://bugs.webkit.org/show_bug.cgi?id=42640

        Notify browser when keyboard should be shown/hidden. Input method
        hints are updated before sending the signal. Client should be able to
        determine the input type by calling ewk_view_imh_get().

        * efl/EWebLauncher/main.c:
        (on_inputmethod_changed): example implementation that just prints to
        stdout if keyboard should be shown or hidden and the imh flags.
        (browserCreate): listen to signal about input method changing its
        state.
        * efl/WebCoreSupport/EditorClientEfl.cpp:
        (WebCore::EditorClientEfl::setInputMethodState): call new function
        responsible for implementing this notification.
        * efl/ewk/ewk_private.h: ewk_view_input_method_state_set() is called
        only from inside WebKit.
        * efl/ewk/ewk_view.cpp: implement setters and getters
        (ewk_view_imh_get):
        (ewk_view_input_method_state_set):
        * efl/ewk/ewk_view.h: introduce Ewk_Imh enum which contains the
        possible input types.
        (_Ewk_View_Smart_Class::):

2010-07-20  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Fix zoom in/out on EFL after r62666. The patch for adding viewport
        missed the initialization of zoom_range.user_scalable. In case browser
        doesn't care about the viewport and does not listen to the signal,
        user_scalable will be always false, thus inhibiting zoom in/out.
        https://bugs.webkit.org/show_bug.cgi?id=42656

        * efl/EWebLauncher/main.c:
        (on_viewport_changed): when listening to signal about viewport meta tag,
        it's not sufficient to receive the parameters. One needs also to enforce
        these parameters in WebKit.
        * efl/ewk/ewk_view.cpp:
        (_ewk_view_priv_new): initialize user_scalable parameter to allow
        browser zooming in and out.

2010-07-16  Zhe Su  <suzhe@chromium.org>

        Reviewed by Darin Adler.

        REGRESSION(r61484): Broke focus behaviour on Qt and probably other platforms
        https://bugs.webkit.org/show_bug.cgi?id=42253

        Dummy implementation of EditorClient::willSetInputMethodState.

        * efl/WebCoreSupport/EditorClientEfl.cpp:
        (WebCore::EditorClientEfl::willSetInputMethodState):
        * efl/WebCoreSupport/EditorClientEfl.h:

2010-07-15  Mark Rowe  <mrowe@apple.com>

        Update the sorting in the Xcode project files.

        * WebKit.xcodeproj/project.pbxproj:

2010-07-14  Sam Weinig  <sam@webkit.org>

        Reviewed by Darin Adler.

        Patch for https://bugs.webkit.org/show_bug.cgi?id=42232
        Make changing Cursors work in WebKit2.

        * efl/WebCoreSupport/ChromeClientEfl.cpp:
        (WebCore::ChromeClientEfl::setCursor):
        * efl/WebCoreSupport/ChromeClientEfl.h:
        Change prototype to match new one.

2010-07-14  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Antonio Gomes.

        [EFL] Add eina_safety to popup menu deletion.
        https://bugs.webkit.org/show_bug.cgi?id=41873

        Since this is a public call, it's better to have an eina_safety on
        public calls. It would crash if browser calls this function to select
        an item of a nonexistent popup.

        * efl/ewk/ewk_view.cpp: add eina_safety to return if popup menu client does
        not exist.

2010-07-13  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Dan Bernstein.

        <rdar://problem/8186963> Expose RenderLayer hierarchy via Obj-C for debugging.
        
        Add WebRenderLayer files.

        * WebKit.xcodeproj/project.pbxproj:

2010-07-13  Rafael Antognolli  <antognolli@profusion.mobi>

        Reviewed by Antonio Gomes.

        This commit implements an API for configuring a path to the cookie
        file in the Mozilla "cookies.txt" format, and functions to deal with it
        in a more EFL like API.

        [EFL] Add API for dealing with cookies in EFL port.
        https://bugs.webkit.org/show_bug.cgi?id=41770

        * CMakeListsEfl.txt:
        * efl/ewk/EWebKit.h:
        * efl/ewk/ewk_cookies.cpp: Added.
        (ewk_cookies_file_set): Set a path to the file storing cookies.
        (ewk_cookies_clear): Clear all the cookies from the current cookie jar.
        (ewk_cookies_get_all): Get all the cookies from the current cookie jar.
        (ewk_cookies_cookie_del): Delete a specific cookie from the cookie jar.
        (ewk_cookies_cookie_free): Free memory used by a cookie.
        (ewk_cookies_policy_set): Set which acceptance policy will be used.
        (ewk_cookies_policy_get): Get current acceptance policy being used.
        * efl/ewk/ewk_cookies.h: Added.
        (_Ewk_Cookie::):

2010-07-12  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Unreviewed build fix after r60050.

        * CMakeLists.txt: Add WebCore/bindings to the include path.

2010-07-11  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Reviewed by Adam Barth.

        [EFL] Fix style errors in ewk_private.h.
        https://bugs.webkit.org/show_bug.cgi?id=41742

        * efl/ewk/ewk_private.h:

2010-07-09  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes.

2010-07-08  Joone Hur  <joone@kldp.org>

        Reviewed by Antonio Gomes.

        [EFL] fix cmake build for EWebLauncher
        https://bugs.webkit.org/show_bug.cgi?id=41830

        * CMakeListsEfl.txt: add ${LIBSOUP24_LDFLAGS} for link flags

2010-07-08  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Implement several notification hooks in FrameLoaderClient.
        We just notify browser, making the appropriate type conversions about
        the events occurring in WebCore.
        https://bugs.webkit.org/show_bug.cgi?id=41005

        * efl/WebCoreSupport/FrameLoaderClientEfl.cpp:
        (WebCore::FrameLoaderClientEfl::dispatchWillSendRequest): alloc 2 new
        wrapper structures in stack in order to give client the opportunity to
        change parameters. Then, call the function it defines.
        (WebCore::FrameLoaderClientEfl::assignIdentifierToInitialRequest):
        (WebCore::FrameLoaderClientEfl::didPerformFirstNavigation): notify
        client.
        (WebCore::FrameLoaderClientEfl::saveViewStateToItem): notify client.
        (WebCore::FrameLoaderClientEfl::restoreViewState): notify client.
        (WebCore::FrameLoaderClientEfl::dispatchDidChangeLocationWithinPage):
        notify browser that the url changed.
        (WebCore::FrameLoaderClientEfl::dispatchDidReceiveIcon): notify
        browser.
        (WebCore::FrameLoaderClientEfl::dispatchDidStartProvisionalLoad):
        notify browser.
        (WebCore::FrameLoaderClientEfl::dispatchDidFinishDocumentLoad): notify
        browser.
        (WebCore::FrameLoaderClientEfl::dispatchDidFirstLayout): norify
        browser.
        (WebCore::FrameLoaderClientEfl::dispatchDidFirstVisuallyNonEmptyLayout):
        notify browser.
        (WebCore::FrameLoaderClientEfl::dispatchShow): notify browser.
        * efl/ewk/ewk_frame.cpp:
        (ewk_frame_request_will_send): emit signal notifying browser.
        (ewk_frame_request_assign_identifier): emit signal notifying browser.
        (ewk_frame_did_perform_first_navigation): emit signal notifying browser.
        (ewk_frame_view_state_save): emit signal notifying browser.
        (ewk_frame_load_provisional): emit signal notifying browser.
        (ewk_frame_load_firstlayout_finished): emit signal notifying browser.
        (ewk_frame_load_firstlayout_nonempty_finished): emit signal notifying browser.
        (ewk_frame_load_document_finished): emit signal notifying browser.
        * efl/ewk/ewk_frame.h: update documentation about signals being sent
        and implement wrapper struct for ResourceRequest.
        * efl/ewk/ewk_private.h: export private functions.

2010-07-08  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Flush backing store when going to new page.
        Call client method to flush backing store when going to a new page. This
        is the notification that data related to current page should be dropped,
        since a new page is being loaded.
        https://bugs.webkit.org/show_bug.cgi?id=41008

        * efl/WebCoreSupport/FrameLoaderClientEfl.cpp:
        (WebCore::FrameLoaderClientEfl::transitionToCommittedForNewPage):

2010-07-07  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Unreviewed build fix after r62676.

        [EFL] Fix build after Page constructor has changed. By now, the
        introduced BackForwardControllerClient is not used.
        https://bugs.webkit.org/show_bug.cgi?id=41825

        * efl/ewk/ewk_view.cpp:
        (_ewk_view_priv_new): Add missing parameter to WebCore::Page
        constructor.

2010-07-07  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig.

        Rename the WebBaseNetscapePluginStream.cpp and .h files to WebNetscapePluginStream.cpp and .h to match the class name.

        * WebKit.xcodeproj/project.pbxproj:

2010-07-07  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] EFLWebKit doesn't support viewport meta tag.
        Support viewport meta tag on EFL Port.
        https://bugs.webkit.org/show_bug.cgi?id=40278

        * efl/EWebLauncher/main.c: Process 'viewport,changed' signal.
        (viewport_set):
        (on_viewport_changed): Add a callback function for the 'viewport,changed' signal.
        (browserCreate): Register the callback function for the 'viewport,changed' signal.
        * efl/WebCoreSupport/ChromeClientEfl.cpp: Implement method to process viewport tag.
        (WebCore::ChromeClientEfl::didReceiveViewportArguments):
        * efl/WebCoreSupport/ChromeClientEfl.h: Define method to process viewport tag.
        * efl/WebCoreSupport/FrameLoaderClientEfl.cpp:
        (WebCore::FrameLoaderClientEfl::FrameLoaderClientEfl): Implement a function to set layout
        when website doesn't contain viewport tag.
        (WebCore::FrameLoaderClientEfl::dispatchDidCommitLoad):
        (WebCore::FrameLoaderClientEfl::dispatchDidFirstLayout):
        * efl/WebCoreSupport/FrameLoaderClientEfl.h:
        (WebCore::FrameLoaderClientEfl::setInitLayoutCompleted):
        (WebCore::FrameLoaderClientEfl::getInitLayoutCompleted):
        * efl/ewk/ewk_private.h: Added internal APIs to process viewport tag.
        * efl/ewk/ewk_view.cpp: Added APIs to process and to handle viewport tag.
        (_ewk_view_priv_new):
        (ewk_view_fixed_layout_size_set):
        (ewk_view_zoom_set):
        (ewk_view_zoom_weak_set):
        (ewk_view_zoom_animated_set):
        (ewk_view_viewport_set): Reports that viewport has changed.
        (ewk_view_viewport_get): Reports that viewport has changed.
        (ewk_view_zoom_range_set): Sets the zoom range.
        (ewk_view_zoom_range_min_get): Gets minimum value of zoom range.
        (ewk_view_zoom_range_max_get): Gets maximum value of zoom range.
        (ewk_view_user_scalable_set): Sets if zoom is enabled.
        (ewk_view_user_scalable_get): Gets if zoom is enabled.
        * efl/ewk/ewk_view.h:

2010-07-07  Rafael Antognolli  <antognolli@profusion.mobi>

        Reviewed by Adam Barth.

        [EFL] Fix cmake build and libsoup detection
        Some changes should be done to cmake build system to fix the detection of libsoup and correct some link paths:
        - LINK_FLAGS should be set using quotes, otherwise some wrong
        substitution takes place;
        - we should use LIBSOUP24_* instead of LIBSOUP_* since this is the
        version we are using;
        - need to set HAVE_LIBSOUP_2_29_90 if we find a version equal or newer
        than that.
        https://bugs.webkit.org/show_bug.cgi?id=41717

        * CMakeLists.txt:
        * CMakeListsEfl.txt:

2010-07-05  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Implement downloadURL in ContextMenuClientEfl
        When user selects a download menu from context menu, send the download 
        request to application.
        https://bugs.webkit.org/show_bug.cgi?id=41149

        * efl/WebCoreSupport/ContextMenuClientEfl.cpp:
        (WebCore::ContextMenuClientEfl::downloadURL): Get url for downloading 
        file and Send it to application.
        * efl/WebCoreSupport/ContextMenuClientEfl.h:

2010-06-30  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Implement windowRect() and setWindowRect() in ChromeClientEfl.cpp
        https://bugs.webkit.org/show_bug.cgi?id=40876

        * efl/WebCoreSupport/ChromeClientEfl.cpp: Implements two methods
        to change window size.

        (WebCore::ChromeClientEfl::windowRect):
        (WebCore::ChromeClientEfl::setWindowRect):

2010-06-28  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Unreviewed build fix.

        [EFL] Build fix for latest version of Ecore library.
        Ecore recently changed return type of callbacks from int to Eina_Bool.

        * efl/EWebLauncher/main.c:
        * efl/ewk/ewk_view.cpp:
        (_ewk_view_zoom_animator_cb): Return Eina_Bool instead of int.

2010-06-28  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Simplify zoom setting by narrowing with WebCore API.
        Instead of creating a zoom_text_only field, use the already defined enum
        by WebCore.
        https://bugs.webkit.org/show_bug.cgi?id=40993

        * efl/ewk/ewk_frame.cpp: sd->zoom_text_only => sd->zoom_mode
        (ewk_frame_zoom_set):
        (ewk_frame_zoom_text_only_get):
        (ewk_frame_zoom_text_only_set):

2010-06-28  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Implement download requests
        When a download request arrives through FrameLoaderClient, forward it to
        browser in order to be possible to download files.
        https://bugs.webkit.org/show_bug.cgi?id=40967

        * efl/WebCoreSupport/FrameLoaderClientEfl.cpp:
        (WebCore::FrameLoaderClientEfl::download): get file names and
        forward to ewk_view_download_request()
        * efl/ewk/ewk_private.h: export private function to WebCoreSupport

2010-06-25  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Stop frame loaders when deleting view.
        Frame loaders were still alive after view is deleted, causing
        segmentation fault when libsoup had something to deliver yet.
        https://bugs.webkit.org/show_bug.cgi?id=41007

        * efl/ewk/ewk_view.cpp:
        (_ewk_view_smart_del): stop loaders.

2010-06-25  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Fix warnings about printf format
        When printing uint64_t the macro PRIu64 is needed in order to be
        portable across 32 and 64 bits. It was previously showing warning
        messages on 32-bits systems.
        https://bugs.webkit.org/show_bug.cgi?id=40965

        * efl/ewk/ewk_view.cpp:
        (ewk_view_exceeded_database_quota):

2010-06-25  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Do not load error message for download and cancellation.
        When a download is made or a request is cancelled an error page should
        not be shown.
        https://bugs.webkit.org/show_bug.cgi?id=40956

        * efl/WebCoreSupport/FrameLoaderClientEfl.cpp:
        (WebCore::FrameLoaderClientEfl::dispatchDidFailLoading): return if it
        should not fallback.
        (WebCore::FrameLoaderClientEfl::dispatchDidFailLoad): return if it
        should not fallback.
        (WebCore::FrameLoaderClientEfl::interruptForPolicyChangeError): fix
        typo in related error message.
        (WebCore::FrameLoaderClientEfl::shouldFallBack): if user cancelled the
        request or the policy changed (for example, because the request is a
        download) then it should not fallback.

2010-06-25  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Implement runOpenPanel method. The interface with browser was
        already implemented. Now we are actually calling it.
        https://bugs.webkit.org/show_bug.cgi?id=40923

        * efl/WebCoreSupport/ChromeClientEfl.cpp:
        (WebCore::ChromeClientEfl::runOpenPanel): implement method.
        * efl/ewk/ewk_private.h: export to WebCoreSupport the needed method

2010-06-24  Jer Noble  <jer.noble@apple.com>

        Reviewed by Eric Carlson.

        Full-screened content doesn't keep the display on: Safari not grabbing a power assertion?
        https://bugs.webkit.org/show_bug.cgi?id=40939
        rdar://problem/7996172
        
        Add IOKit.framework to the list of linked frameworks.

        * WebKit.xcodeproj/project.pbxproj:

2010-06-23  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Gustavo Noronha Silva.

        [EFL] Add Libs.private to ewebkit.pc when building with SHARED_CORE.
        https://bugs.webkit.org/show_bug.cgi?id=40862
        
        * CMakeListsEfl.txt:
        * efl/ewebkit.pc.in:

2010-06-23  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Gustavo Noronha Silva.

        Add implementaion of new windows for EFL port. Both cases of a link
        with target="_blank" and a javascript that does window.open() are
        treated, delegating to browser the role of actually creating the
        window (or blocking it).
        https://bugs.webkit.org/show_bug.cgi?id=40930

        * CMakeListsEfl.txt: add new file that wraps the WindowFeatures struct
        * efl/WebCoreSupport/ChromeClientEfl.cpp:
        (WebCore::ChromeClientEfl::createWindow): implement method for
        creating new window by delegating to browser its creation. Browser
        might decide to continue on the same window by returning the same
        view object.
        * efl/WebCoreSupport/FrameLoaderClientEfl.cpp:
        (WebCore::FrameLoaderClientEfl::dispatchCreatePage): implement method
        for creating new window when its creation is done by a javascript
        script.
        * efl/ewk/EWebKit.h: new header for WindowFeatures.
        * efl/ewk/ewk_private.h:
        * efl/ewk/ewk_view.cpp:
        (ewk_view_window_create): call the method implemented by browser.
        * efl/ewk/ewk_view.h:
        * efl/ewk/ewk_window_features.cpp: Added.
        (ewk_window_features_unref):
        (ewk_window_features_ref):
        (ewk_window_features_bool_property_get):
        (ewk_window_features_int_property_get):
        (ewk_window_features_new_from_core): create and wrapped struct
        containing the core struct.
        * efl/ewk/ewk_window_features.h: Added.

2010-06-18  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig.

        Rename WebPluginPackage.m to make it an Objective-C++ file.

        * WebKit.xcodeproj/project.pbxproj:

2010-06-18  Anders Carlsson  <andersca@apple.com>

        Reviewed by Sam Weinig.

        Make WebCoreSystemInterface.h a C++ only header
        https://bugs.webkit.org/show_bug.cgi?id=40867

        * WebKit.xcodeproj/project.pbxproj:

2010-06-18  Anders Carlsson  <andersca@apple.com>

        Reviewed by Dan Bernstein.

        Add stubbed out WebPlatformStrategies class to WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=40851

        * WebKit.xcodeproj/project.pbxproj:

2010-06-18  Alexis Menard  <alexis.menard@nokia.com>

        Reviewed by Simon Hausmann.

        [qt] Better check for the declarative plugin inclusion.

        * WebKit.pro:

2010-06-17  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Eric Seidel.

        Clean EFL header files in order to diminish the compilation time with
        EFL from subversion. We remove the EFL includes from header files and use
        forward declarations, including the headers in correspondent source
        files when needed. This causes only the needed source files to be
        recompiled in case a new version of EFL is installed instead of
        triggering a recompilation of almost all WebCore/WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=40575

        * efl/WebCoreSupport/ChromeClientEfl.cpp: include needed header.
        * efl/WebCoreSupport/ChromeClientEfl.h: forward declaration.
        * efl/WebCoreSupport/EditorClientEfl.h: forward declaration.

2010-06-15  Gustavo Noronha Silva  <gns@gnome.org>

        Unreviewed EFL build fix. Simple typo.

        * efl/WebCoreSupport/InspectorClientEfl.cpp:
        (WebCore::InspectorClientEfl::sendMessageToFrontend):

2010-06-14  Tony Chang  <tony@chromium.org>

        Reviewed by Darin Fisher.

        Chromium shouldn't build inside the source directory
        https://bugs.webkit.org/show_bug.cgi?id=40489

        Ignore directories fetched by chromium and chromium mac output dir.

        * chromium: Added property svn:ignore.

2010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
        data from inspected page to WebInspector as JSON string via http. The native
        serialization to JSON string is supported by InspectorValue's classes. This patch
        has the implementation of sendMessageToFrontend function. WebKit version of it still
        uses ScriptFunctionCall and will be switched to another transport a little bit later.
        https://bugs.webkit.org/show_bug.cgi?id=40134

        * efl/WebCoreSupport/InspectorClientEfl.cpp:
        (WebCore::InspectorClientEfl::sendMessageToFrontend):
        * efl/WebCoreSupport/InspectorClientEfl.h:

2010-06-09  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r60889.
        http://trac.webkit.org/changeset/60889
        https://bugs.webkit.org/show_bug.cgi?id=40365

        gtk bot has some kind of memory corruption (Requested by
        loislo on #webkit).

        * efl/WebCoreSupport/InspectorClientEfl.cpp:
        * efl/WebCoreSupport/InspectorClientEfl.h:

2010-06-07  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
        data from inspected page to WebInspector as JSON string via http. The native
        serialization to JSON string is supported by InspectorValue's classes. This patch
        has the implementation of sendMessageToFrontend function. WebKit version of it still
        uses ScriptFunctionCall and will be switched to another transport a little bit later.
        https://bugs.webkit.org/show_bug.cgi?id=40134

        * efl/WebCoreSupport/InspectorClientEfl.cpp:
        (WebCore::InspectorClientEfl::sendMessageToFrontend):
        * efl/WebCoreSupport/InspectorClientEfl.h:

2010-06-01  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Sam Weinig.

        https://bugs.webkit.org/show_bug.cgi?id=39434
        REGRESSION (r59811): Geolocation callbacks cannot be created

        Removing unused WebGeolocationMock.

        * WebKit.xcodeproj/project.pbxproj:

2010-05-31  Lyon Chen  <liachen@rim.com>

        Reviewed by Kent Tamura.

        Enum value FORWARD, BACKWARD, RIGHT, LEFT are causing macro conflicts.
        https://bugs.webkit.org/show_bug.cgi?id=35530

        Change enum EAlteration from { MOVE, EXTEND } to { AlterationMove, AlterationExtend } and enum EDirection { FORWARD, BACKWARD, RIGHT, LEFT} to { DirectionForward, DirectionBackward, DirectionRight, DirectionLeft } to avoid macro conflict, and also better coding style conformance.

        * efl/WebCoreSupport/EditorClientEfl.cpp:
        (WebCore::EditorClientEfl::handleEditingKeyboardEvent):

2010-05-31  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Add Context Menu implementation
        https://bugs.webkit.org/show_bug.cgi?id=39821

        * CMakeListsEfl.txt: add context menu files.
        * efl/WebCoreSupport/ContextMenuClientEfl.cpp:
        (WebCore::ContextMenuClientEfl::getCustomMenuFromDefaultItems):
        (WebCore::ContextMenuClientEfl::newPlatformDescription):
        (WebCore::ContextMenuClientEfl::freePlatformDescription):
        (WebCore::ContextMenuClientEfl::appendItem):
        (WebCore::ContextMenuClientEfl::show):
        * efl/WebCoreSupport/ContextMenuClientEfl.h:
        * efl/ewk/EWebKit.h:
        * efl/ewk/ewk_contextmenu.cpp: Added. Implement the API used by
        browser for manipulating context menus.
        (ewk_context_menu_ref):
        (ewk_context_menu_unref):
        (ewk_context_menu_destroy):
        (ewk_context_menu_item_list_get):
        (ewk_context_menu_item_new):
        (ewk_context_menu_item_select):
        (ewk_context_menu_item_free):
        (ewk_context_menu_item_type_get):
        (ewk_context_menu_item_type_set):
        (ewk_context_menu_item_action_get):
        (ewk_context_menu_item_action_set):
        (ewk_context_menu_item_title_get):
        (ewk_context_menu_item_title_set):
        (ewk_context_menu_item_checked_get):
        (ewk_context_menu_item_checked_set):
        (ewk_context_menu_item_enabled_get):
        (ewk_context_menu_item_enabled_set):
        (ewk_context_menu_new):
        (ewk_context_menu_free):
        (ewk_context_menu_item_append):
        (ewk_context_menu_custom_get):
        (ewk_context_menu_show):
        * efl/ewk/ewk_contextmenu.h: Added.
        * efl/ewk/ewk_private.h:
        * efl/ewk/ewk_view.cpp:
        (ewk_view_context_menu_forward_event): inform browser a new context
        menu was created.
        (ewk_view_exceeded_database_quota): small fix to previous
        changed function.
        * efl/ewk/ewk_view.h:

2010-05-28  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EF] Remove compiler warnings and add test for switching page
        encoding.
        https://bugs.webkit.org/show_bug.cgi?id=39871

        * efl/EWebLauncher/main.c:
        (print_history):
        (on_key_down):
        (main):

2010-05-28  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Allow client to override default database quota. We increase the
        default database quota to 1MB (it was incorrectly set to 1KB, which is
        too low) and add methods to allow client to iteratively database quota
        when it becomes greater than the allowed value.
        https://bugs.webkit.org/show_bug.cgi?id=39867

        * efl/WebCoreSupport/ChromeClientEfl.cpp:
        (WebCore::ChromeClientEfl::exceededDatabaseQuota): reimplement method
        to allow client to increase database quota iteratively.
        * efl/ewk/ewk_private.h:
        * efl/ewk/ewk_settings.cpp:
        * efl/ewk/ewk_view.h:

2010-05-28  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Add default path to web database and methods to set it.
        If a default path is not set, it will default to "/", in which a
        normal user usually does not have write permission.

        * efl/EWebLauncher/main.c: overwrite default directory with another
        one.
        (main):
        * efl/ewk/ewk_main.cpp:
        (ewk_init): add default path
        * efl/ewk/ewk_settings.cpp: add methods to set and get database path
        (ewk_settings_web_database_path_set):
        (ewk_settings_web_database_path_get):
        * efl/ewk/ewk_settings.h:

2010-05-28  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Fix wrongly set clipper. Now the scrollbars from main
        frame are shown even on a zoom level lower than 1.0.

        * efl/ewk/ewk_view_single.c:
        (_ewk_view_single_smart_add):
        (_ewk_view_single_smart_backing_store_add):
        (ewk_view_single_smart_set):

2010-05-28  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        [EFL] Add support for Popup menus
        https://bugs.webkit.org/show_bug.cgi?id=39629

        * efl/WebCoreSupport/ChromeClientEfl.cpp: implement methods to create
        and destroy popup menu.
        (WebCore::ChromeClientEfl::createSelectPopup): ditto.
        (WebCore::ChromeClientEfl::destroySelectPopup): ditto.
        * efl/WebCoreSupport/ChromeClientEfl.h: ditto.
        * efl/ewk/ewk_private.h: add function to call browser when a popup is
        created/deleted

2010-05-25  Joone Hur  <joone.hur@samsung.com>

        Reviewed by Gustavo Noronha Silva.

        [EFL] Build fix.
        http://webkit.org/b/39648

        * efl/ewk/ewk_frame.cpp:
        (ewk_frame_zoom_get): Add missed namespace 
        (ewk_frame_zoom_set): Ditto.
        (ewk_frame_zoom_text_only_set): Ditto.
        * efl/ewk/ewk_view.cpp:
        (_ewk_view_priv_new): Add a null parameter when creating a Page.

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

        Reviewed by Eric Seidel.

        Move view-related functions from Frame to FrameView
        https://bugs.webkit.org/show_bug.cgi?id=39366

        * efl/ewk/ewk_frame.cpp:
        (ewk_frame_editable_set): Removed call to empty function,
        removeEditingStyleFromBodyElement.
        (ewk_frame_zoom_get): Call function on FrameView.
        (ewk_frame_zoom_set): Ditto.
        (ewk_frame_zoom_text_only_set): Ditto.

2010-05-15  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Adam Treat.

        [EFL] Add build system for the EFL port.
        http://webkit.org/b/37945

        * CMakeLists.txt: Added.
        * CMakeListsEfl.txt: Added.

2010-05-14  Lucas De Marchi  <lucas.demarchi@profusion.mobi>

        Reviewed by David Levin.

        [EF] Include missing header.
        http://webkit.org/b/38905

        * efl/ewk/ewk_main.cpp: Include PageGroup.h

2010-05-08  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Laszlo Gombos.

        [EFL] Only compile database stuff if ENABLE_DATABASE is set. 
        http://webkit.org/b/38777

        * efl/WebCoreSupport/ChromeClientEfl.cpp:

2010-05-05  Dan Bernstein  <mitz@apple.com>

        Reviewed by Simon Fraser.

        <rdar://problem/7932072> Iframes in composited layers don’t repaint correctly (affects Yahoo! Mail with Flash Player 10.1)
        https://bugs.webkit.org/show_bug.cgi?id=38427

        * WebKit.xcodeproj/project.pbxproj: Renamed WebClipView.m to WebClipView.mm and changed it to
        Objective-C++.

2010-05-03  Darin Adler  <darin@apple.com>

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

2010-05-03  Jens Alfke  <snej@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add "willSendSubmitEvent" hook to WebFrameClient and FrameLoaderClient
        https://bugs.webkit.org/show_bug.cgi?id=38397

        No tests (functionality is exposed only through native WebKit API.)

        * efl/WebCoreSupport/FrameLoaderClientEfl.h:
        (WebCore::FrameLoaderClientEfl::dispatchWillSendSubmitEvent):

2010-04-22  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Gustavo Noronha Silva.

        Implement findThemePath to locate the correct theme file instead of
        relying on a hardcoded location.
        http://webkit.org/b/37996

        * efl/EWebLauncher/main.c:
        (findThemePath): Fix to locate the correct theme files.
        (main): Use findThemePath() instead of a hardcoded one.

2010-04-22  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Gustavo Noronha Silva.

        Update efl/ewebkit.pc.in to match the variable substitution syntax
        of CMake.
        http://webkit.org/b/37999

        * efl/ewebkit.pc.in: Updated.

2010-04-22  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Gustavo Noronha Silva.

        Update EWebKit (EFL port) to match recent API changes.
        http://webkit.org/b/37997

        * efl/ewk/ewk_frame.cpp:
        (ewk_frame_zoom_set): Change to use WebCore::ZoomMode.
        (ewk_frame_zoom_text_only_set): Change to use WebCore::ZoomMode.
        (_ewk_frame_handle_key_scrolling): s/WebCore::VK_/VK_/g
        (ewk_frame_plugin_create): Disable temporarily PluginView-related
        code until a proper plugin implementation is made.
        * efl/ewk/ewk_view.cpp: Fix typo in _parent_sc declaration.
        (ewk_view_selection_get): Fix a reference to WebCore::CString to
        WTF::CString.

2010-04-22  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Gustavo Noronha Silva.

        Update EFL port files to match recent API changes.
        http://webkit.org/b/37876

        * efl/WebCoreSupport/ChromeClientEfl.cpp:
        (kit): Added.
        (WebCore::ChromeClientEfl::ChromeClientEfl): Coding style fix.
        (WebCore::ChromeClientEfl::runBeforeUnloadConfirmPanel): Coding
        style fix.
        (WebCore::ChromeClientEfl::mouseDidMoveOverElement): Coding style fix.
        (WebCore::ChromeClientEfl::runOpenPanel): Implemented.
        (WebCore::ChromeClientEfl::cancelGeolocationPermissionRequestForFrame): Stubbed.
        (WebCore::ChromeClientEfl::cancelGeolocationPermissionForFrame): Stubbed.
        (WebCore::ChromeClientEfl::invalidateContents): Stubbed.
        (WebCore::ChromeClientEfl::invalidateWindow): Stubbed.
        (WebCore::ChromeClientEfl::invalidateContentsAndWindow): Implemented.
        (WebCore::ChromeClientEfl::invalidateContentsForSlowScroll): Implemented.
        (WebCore::ChromeClientEfl::scroll): Updated.
        (WebCore::ChromeClientEfl::iconForFiles): Stubbed.
        (WebCore::ChromeClientEfl::chooseIconForFiles): Stubbed.
        * efl/WebCoreSupport/ChromeClientEfl.h: Add new method prototypes.
        * efl/WebCoreSupport/FrameLoaderClientEfl.cpp:
        (WebCore::FrameLoaderClientEfl::committedLoad): Call setEncoding()
        from FrameLoader::writer.
        (WebCore::FrameLoaderClientEfl::finishedLoading): Ditto.
        (WebCore::FrameLoaderClientEfl::dispatchDidFailLoading): Ditto.
        (WebCore::FrameLoaderClientEfl::setMainDocumentError): Ditto.

2010-04-21  Gustavo Sverzut Barbieri  <barbieri@profusion.mobi>

        Reviewed by Nikolas Zimmermann.

        Add missing EFL WebKit/efl theme files.
        http://webkit.org/b/37854

        * efl/DefaultTheme/default.edc: Added.
        * efl/DefaultTheme/widget/button/button.edc: Added.
        * efl/DefaultTheme/widget/check/check.edc: Added.
        * efl/DefaultTheme/widget/combo/combo.edc: Added.
        * efl/DefaultTheme/widget/entry/entry.edc: Added.
        * efl/DefaultTheme/widget/file/file.edc: Added.
        * efl/DefaultTheme/widget/radio/radio.edc: Added.
        * efl/DefaultTheme/widget/scrollbar/scrollbar.edc: Added.
        * efl/DefaultTheme/widget/search/cancel/search_cancel.edc: Added.
        * efl/DefaultTheme/widget/search/decoration/search_decoration.edc: Added.
        * efl/DefaultTheme/widget/search/field/search_field.edc: Added.

2010-04-21  Gustavo Sverzut Barbieri  <barbieri@profusion.mobi>

        Reviewed by Adam Roben.

        Update EFL port to match recent API changes.
        http://webkit.org/b/37853

        * efl/WebCoreSupport/EditorClientEfl.cpp:
        * efl/WebCoreSupport/FrameLoaderClientEfl.cpp:
        (WebCore::FrameLoaderClientEfl::didTransferChildFrameToNewDocument):
        (WebCore::FrameLoaderClientEfl::objectContentType):
        (WebCore::FrameLoaderClientEfl::dispatchDidChangeIcons):
        (WebCore::FrameLoaderClientEfl::canShowMIMEType):
        * efl/WebCoreSupport/FrameLoaderClientEfl.h:

2010-04-15  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add EFL port files to efl/WebCoreSupport.
        http://webkit.org/b/35915

        * efl/WebCoreSupport/FrameLoaderClientEfl.cpp: Added.
        * efl/WebCoreSupport/FrameLoaderClientEfl.h: Added.

2010-04-15  Adam Roben  <aroben@apple.com>

        Expose UserContentURLPattern as WebKit SPI

        Fixes <http://webkit.org/b/37354>.

        Reviewed by Tim Hatcher.

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

2010-04-15  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add EFL port files to efl/WebCoreSupport.
        http://webkit.org/b/35918

        * efl/WebCoreSupport/EditorClientEfl.cpp: Added.
        * efl/WebCoreSupport/EditorClientEfl.h: Added.

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

        Reviewed by Dan Bernstein.

        <rdar://problem/7845305> Further adoption of formal protocols for delegates.

        Move EmptyProtocolDefinitions.h down in to WebCore, and add the new protocols. Adopt the protocols in the appropriate places.

        * WebKit.xcodeproj/project.pbxproj:

2010-04-07  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add ewk_view (the high level object to acces the WebKit-EFL browser
        component) to efl/ewk.
        http://webkit.org/b/35932

        * efl/ewk/ewk_view.cpp: Added.
        * efl/ewk/ewk_view.h: Added.

2010-04-05  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Darin Adler.

        https://bugs.webkit.org/show_bug.cgi?id=37111
        <rdar://problem/7790327> Draw replacement text when plug-in host crashes

        https://bugs.webkit.org/show_bug.cgi?id=37111
        <rdar://problem/7790327> Draw replacement text when plug-in host crashes

        * English.lproj/Localizable.strings: Added a string for plug-in failure.

2010-04-01  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Gustavo Noronha Silva.

        Add EFL's pkg-config metadata file file to efl/.
        http://webkit.org/b/36766

        * efl/ewebkit.pc.in: Added.

2010-03-30  Gavin Barraclough  <barraclough@apple.com>

        Rubber stamped by Sam Weinig.

        https://bugs.webkit.org/show_bug.cgi?id=36866
        Move CString to WTF

        * efl/WebCoreSupport/ChromeClientEfl.cpp:
        * efl/ewk/ewk_frame.cpp:
        (ewk_frame_name_get):
        (ewk_frame_selection_get):
        (ewk_frame_uri_changed):
        * efl/ewk/ewk_history.cpp:
        * efl/ewk/ewk_settings.cpp:

2010-03-28  Alexey Proskuryakov  <ap@apple.com>

        Build fix. Include WindowsKeyboardCodes.h instead of KeyboardCodes.h.

        * efl/ewk/ewk_frame.cpp:

2010-03-22  Kevin Decker  <kdecker@apple.com>

        Reviewed by Simon Fraser.

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

        * WebKit.xcodeproj/project.pbxproj: Remove WebNullPluginView and nullplugin.tiff from the project.

2010-03-22  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes.

2010-03-22  Kevin Decker  <kdecker@apple.com>

        Reviewed by John Sullivan.

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

        * English.lproj/Localizable.strings: Added "Missing Plug-in" string.

2010-03-18  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add EFL port files to efl/ewk.
        http://webkit.org/b/35931

        * efl/ewk/ewk_settings.cpp: Added.
        * efl/ewk/ewk_settings.h: Added.

2010-03-17  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add default theme files to efl/DefaultTheme.
        http://webkit.org/b/36240

        * efl/DefaultTheme/widget/radio/img_radio_on.png: Added.
        * efl/DefaultTheme/radio/img_radio_off_hover.png: Added.
        * efl/DefaultTheme/radio/img_radio_on_hover.png: Added.
        * efl/DefaultTheme/radio/img_radio_off.png: Added.
        * efl/DefaultTheme/radio/img_radio_off_focus.png: Added.
        * efl/DefaultTheme/radio/img_radio_on_focus.png: Added.
        * efl/DefaultTheme/combo/combo_normal.png: Added.
        * efl/DefaultTheme/combo/combo_focus_button.png: Added.
        * efl/DefaultTheme/combo/combo_hover_button.png: Added.
        * efl/DefaultTheme/combo/combo_hover.png: Added.
        * efl/DefaultTheme/combo/combo_focus.png: Added.
        * efl/DefaultTheme/combo/combo_press_button.png: Added.
        * efl/DefaultTheme/combo/combo_normal_button.png: Added.
        * efl/DefaultTheme/combo/combo_press.png: Added.
        * efl/DefaultTheme/combo/icon.png: Added.
        * efl/DefaultTheme/file/file_normal.png: Added.
        * efl/DefaultTheme/file/file_press.png: Added.
        * efl/DefaultTheme/file/file_hover.png: Added.
        * efl/DefaultTheme/file/file_focus.png: Added.
        * efl/DefaultTheme/search/cancel/cancel_normal_button.png: Added.
        * efl/DefaultTheme/search/cancel/cancel_normal_button2.png: Added.
        * efl/DefaultTheme/search/decoration/decoration_normal_button.png: Added.
        * efl/DefaultTheme/search/field/field_focused.png: Added.
        * efl/DefaultTheme/search/field/field_normal.png: Added.
        * efl/DefaultTheme/search/field/field_hovered.png: Added.
        * efl/DefaultTheme/entry/img_normal.png: Added.
        * efl/DefaultTheme/entry/img_hovered.png: Added.
        * efl/DefaultTheme/entry/img_focused.png: Added.
        * efl/DefaultTheme/check/img_check_off_hover.png: Added.
        * efl/DefaultTheme/check/img_check_on.png: Added.
        * efl/DefaultTheme/check/img_check_off_focus.png: Added.
        * efl/DefaultTheme/check/img_check_on_focus.png: Added.
        * efl/DefaultTheme/check/img_check_off.png: Added.
        * efl/DefaultTheme/check/img_check_on_hover.png: Added.
        * efl/DefaultTheme/scrollbar/scrollbar_knob_h.png: Added.
        * efl/DefaultTheme/scrollbar/scrollbar_knob_v.png: Added.
        * efl/DefaultTheme/scrollbar/scrollbar_hilight.png: Added.
        * efl/DefaultTheme/scrollbar/scrollbar_v.png: Added.
        * efl/DefaultTheme/scrollbar/scrollbar_h.png: Added.
        * efl/DefaultTheme/button/img_button_normal.png: Added.
        * efl/DefaultTheme/button/img_button_focus.png: Added.
        * efl/DefaultTheme/button/img_button_hover.png: Added.
        * efl/DefaultTheme/button/img_button_press.png: Added.

2010-03-17  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add EFL example browser to efl/EWebLauncher.
        http://webkit.org/b/36176

        * efl/EWebLauncher/main.c: Added.

2010-03-16  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add EFL port files to efl/WebCoreSupport.
        http://webkit.org/b/35916

        * efl/WebCoreSupport/ContextMenuClientEfl.cpp: Added.
        * efl/WebCoreSupport/ContextMenuClientEfl.h: Added.

2010-03-16  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Introduce InspectorFrontendClient that provides InspectorFrontend with an interface to the embedder. InspectorClient now serves as a delegate for InspectorController and does not contain methods for managing inspector frontend window. That allows to create remote InspectorFrontendHost.

        Introduce InspectorFrontendClient that would provide InspectorFrontend with an interface to the embedder
        https://bugs.webkit.org/show_bug.cgi?id=35036

        * efl/WebCoreSupport/InspectorClientEfl.cpp:
        (WebCore::InspectorClientEfl::openInspectorFrontend):
        * efl/WebCoreSupport/InspectorClientEfl.h:

2010-03-13  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add EFL port files to efl/ewk.
        http://webkit.org/b/35925

        * efl/ewk/ewk_history.cpp: Added.
        * efl/ewk/ewk_history.h: Added.

2010-03-13  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add EFL port files to efl/ewk.
        http://webkit.org/b/35928

        * efl/ewk/ewk_main.cpp: Added.
        * efl/ewk/ewk_main.h: Added.

2010-03-13  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add EFL port files to efl/ewk.
        http://webkit.org/b/35924

        * efl/ewk/ewk_frame.cpp: Added.
        * efl/ewk/ewk_frame.h: Added.

2010-03-13  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add EFL port files to efl/ewk.
        http://webkit.org/b/35936

        * efl/ewk/ewk_view_single.c: Added.

2010-03-13  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add EFL port files to efl/ewk.
        http://webkit.org/b/35929

        * efl/ewk/ewk_util.cpp: Added.
        * efl/ewk/ewk_util.h: Added.

2010-03-13  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Kenneth Rohde Christiansen.

        Add EFL port files to efl/ewk.
        http://webkit.org/b/35934

        * efl/ewk/EWebKit.h: Added.
        * efl/ewk/ewk_eapi.h: Added.
        * efl/ewk/ewk_logging.h: Added.
        * efl/ewk/ewk_private.h: Added.

2010-03-11  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Gustavo Noronha Silva.

        Add EFL port files to efl/WebCoreSupport.
        http://webkit.org/b/35917

        * efl/WebCoreSupport/InspectorClientEfl.h: Added.
        * efl/WebCoreSupport/InspectorClientEfl.cpp: Added.

2010-03-11  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Gustavo Noronha Silva.

        Add EFL port files to efl/WebCoreSupport.
        http://webkit.org/b/35914

        * efl/WebCoreSupport/DragClientEfl.h: Added.
        * efl/WebCoreSupport/DragClientEfl.cpp: Added.

2010-03-11  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Mark Rowe.

        Sort the project file.

        * WebKit.xcodeproj/project.pbxproj:

2010-03-10  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Holger Freyther.

        Add EFL port files to efl/WebCoreSupport.
        http://webkit.org/b/35913

        * efl/WebCoreSupport/ChromeClientEfl.cpp: Added.
        * efl/WebCoreSupport/ChromeClientEfl.h: Added.

2010-03-09  John Sullivan  <sullivan@apple.com>

        Fixed localized string key collision. update-webkit-localized-strings now
        runs without errors.

        Reviewed by Adam Roben.

        * English.lproj/Localizable.strings:
        Regenerated.

2010-03-09  John Sullivan  <sullivan@apple.com>

        * StringsNotToBeLocalized.txt:
        Brought this file up to date. update-webkit-localizable-strings still lists
        one key collision, but that's a separate issue.

2010-03-04  Mark Rowe  <mrowe@apple.com>

        Reviewed by Sam Weinig.

        Add a script to verify that WebKit framework headers are internally consistent.

        * WebKit.xcodeproj/project.pbxproj: Run the script during the build and fail with
        an error should the consistency check fail.

2010-02-25  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Geoffrey Garen.

        https://bugs.webkit.org/show_bug.cgi?id=35394
        <rdar://problem/7685262> Make passing objects between Java and plug-ins work

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

2010-02-04  Mark Rowe  <mrowe@apple.com>

        Reviewed by Timothy Hatcher.

        Build fix.  Remove a symbol corresponding to an inline function from the linker export
        file to prevent a weak external failure.

        * WebKit.xcodeproj/project.pbxproj: Accommodate rename of script.

2010-02-04  John Sullivan  <sullivan@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=34611
        WebLocalizedString() could use an assertion that it is being called on the main thread

        Reviewed by Tim Hatcher.

        * WebKit.xcodeproj/project.pbxproj:
        Updated for renamed file (WebLocalizableStrings.m -> WebLocalizableStrings.mm)

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

        Sort Xcode projects.

        * WebKit.xcodeproj/project.pbxproj:

2010-01-19  Dan Bernstein  <mitz@apple.com>

        Redo DumpRenderTree build fix without making WebTypesInternal.h a private header

        * WebKit.xcodeproj/project.pbxproj:

2010-01-19  Simon Fraser  <simon.fraser@apple.com>

        Build fix, no review.

        Fix build of DumpRenderTree by making the header WebTypesInternal.h Private
        in WebKit.

        * WebKit.xcodeproj/project.pbxproj:

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-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-12-25  Darin Adler  <darin@apple.com>

        * StringsNotToBeLocalized.txt: Updated for recent changes.

2009-12-18  Dan Bernstein  <mitz@apple.com>

        Updated localizable strings after r52368

        * English.lproj/Localizable.strings:

2009-12-18  Sam Weinig  <sam@webkit.org>

        Reviewed by Dan Bernstein.

        Add Mac WebKit side of the client based geolocation provider.

        * WebKit.xcodeproj/project.pbxproj:

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

        Build fix.  Disable debug variants of WebKit frameworks.

        * WebKit.xcodeproj/project.pbxproj:

2009-12-16  John Sullivan  <sullivan@apple.com>

        Brought this file up to date, sans review.

        * StringsNotToBeLocalized.txt:

2009-11-30  Mark Rowe  <mrowe@apple.com>

        Use the correct path to Info.plist to avoid creating an empty file at the top of the WebKit directory.

        * WebKit.xcodeproj/project.pbxproj:

2009-11-24  Dmitry Titov  <dimich@chromium.org>

        Reviewed by Eric Seidel.

        Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit
        https://bugs.webkit.org/show_bug.cgi?id=31444

        * chromium/features.gypi:

2009-11-24  Mark Rowe  <mrowe@apple.com>

        Fix production builds where the source tree may be read-only.

        * WebKit.xcodeproj/project.pbxproj:

2009-11-20  Dave Hyatt  <hyatt@apple.com>

        Reviewed by Oliver Hunt and Jon Honeycutt.

        Add support for WebSerializedJSValue to WebKit.  This object wraps the SerializedScriptValue functionality in WebCore
        and exposes the ability to do JS value serialization/deserialization to WebKit clients.

        * WebKit.xcodeproj/project.pbxproj:

2009-11-20  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by Beth Dakin.

        WAI-ARIA: add support for 'math' role
        https://bugs.webkit.org/show_bug.cgi?id=31706

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

2009-11-19  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Dan Bernstein.

        <rdar://problem/7035231>
        Support closed caption in <video> element

        * English.lproj/Localizable.strings:
            Add strings for toggle captions button.

2009-11-18  Michelangelo De Simone  <micdesim@gmail.com>

        Reviewed by Darin Adler.

        Fix for <https://bugs.webkit.org/show_bug.cgi?id=27959>.
        Support for validationMessage attribute, as per HTML5 specs.

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

2009-11-18  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        Make the Mac Geolocation API async.

        * WebKit.xcodeproj/project.pbxproj: Remove WebGeolocation.

2009-11-13  Adam Roben  <aroben@apple.com>

        Add WebFrameLoadDelegatePrivat.h to WebKit.xcodeproj

        Fixes <http://webkit.org/b/31124> Tell the WebFrameLoadDelegate when
        window objects in isolated worlds are cleared

        Reviewed by Dave Hyatt.

        * WebKit.xcodeproj/project.pbxproj: Added
        WebFrameLoadDelegatePrivate.h, which already existed.

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

        Replace worldIDs with world objects

        Part of <http://webkit.org/b/31414> Implement new SPI for dealing with
        user scripts/stylesheets and isolated worlds

        Reviewed by Sam Weinig.

        * WebKit.xcodeproj/project.pbxproj: Added WebScriptWorld to the project.

2009-11-12  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by Darin Adler.

        ARIA: add alert type roles
        https://bugs.webkit.org/show_bug.cgi?id=31392

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

2009-11-02  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by John Sullivan and Mark Rowe.

        <rdar://problem/7356733> Voiceover does not read correct media controller time values
        
        Fix localized strings for media controller time values.

        * English.lproj/Localizable.strings:

2009-11-02  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by Beth Dakin.

        Support ARIA "tab" roles
        https://bugs.webkit.org/show_bug.cgi?id=30842

        Add a localizable string for tab panel.

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

2009-10-27  Dan Bernstein  <mitz@apple.com>

        Reviewed by Darin Adler.

        Updated license

        * LICENSE:

2009-10-26  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        Move some WebView event handling code into its own file, WebViewEventHandling.mm

        * WebKit.xcodeproj/project.pbxproj:

2009-10-19  John Gregg  <johnnyg@google.com>

        Reviewed by Dimitri Glazkov.

        set ENABLE_NOTIFICATIONS=1 for Chromium
        https://bugs.webkit.org/show_bug.cgi?id=29949

        * chromium/features.gypi:

2009-10-13  Drew Wilson  <atwilson@atwilson-macpro.local>

        Reviewed by David Levin.

        Enable SHARED_WORKERS for Chromium
        https://bugs.webkit.org/show_bug.cgi?id=30289

        * chromium/features.gypi:
        Turned on ENABLE_SHARED_WORKERS by default. This doesn't actually turn on
        SharedWorkers yet, as Chromium overrides this flag in its feature_overrides.gypi.

2009-10-12  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Chromium Port - Windows
        https://bugs.webkit.org/show_bug.cgi?id=29969

        * chromium/DEPS: Added gtest dep required by windows and incremented some of the deps revisions.

2009-10-06  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Mark Rowe.

        accessibility/media-element.html crashes (and has incorrect result)
        https://bugs.webkit.org/show_bug.cgi?id=30108

        Fix up the accessibilty label for the newly added fullscreen button,
        and update the test result accordingly.

        * English.lproj/Localizable.strings:

2009-10-05  Kevin Decker  <kdecker@apple.com>

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj: Add WebPluginHalterClient to the project.

2009-10-05  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        One of the dependencies' SVN url was missing a @ before the revision number.

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

        * chromium/DEPS:

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

        Add new files for video fullscreen.

        * WebKit.xcodeproj/project.pbxproj:

2009-10-05  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Web Inspector: add testing harness for Web Inspector.

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

        * WebKit.xcodeproj/project.pbxproj:

2009-10-04  Fumitoshi Ukai  <ukai@chromium.org>

        Reviewed by Eric Seidel

        Enable Web Sockets in chromium build.
        https://bugs.webkit.org/show_bug.cgi?id=29917

        * chromium/features.gypi:

2009-10-02  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Added gyp_webkit that does a subset of the things gyp_chromium does
        plus some specialization for an upstream chromium build.

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

        * chromium/DEPS: Points to gyp_webkit instead of gyp_chromium.
        * chromium/gyp_webkit: A new python file.

2009-10-01  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Make it possible to override the list of feature defines when building
        downstream.

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

        * chromium/features.gypi:

2009-10-01  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        Added windows-specific dependencies, updated some revisions and
        re-organized file to make revision tracking easier. Also removed
        extensions/v8 dependency that is no longer needed upstream.

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

        * chromium/DEPS:

2009-09-30  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

        1. Keeping up with downstream revisions.
        2. Turning off v8 snapshot build step.

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

        * chromium/DEPS

2009-09-29  Brady Eidson  <beidson@apple.com>

        Reviewed by John Sullivan.

        WebKit Mac API should provide a delegate interface for global history.
        <rdar://problem/7042773> and https://webkit.org/b/29904

        * WebKit.xcodeproj/project.pbxproj:

2009-09-28  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by Dimitri Glazkov.

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

        * chromium/DEPS: Describes the chromium port's dependencies and
          is used by gclient to fetch them.
        * chromium/webkit.gyp: Currently only builds webcore but in
          the future will also build the webkit api.

2009-09-26  David Kilzer  <ddkilzer@apple.com>

        Part 2 of 2: <http://webkit.org/b/29753> DerivedSources.make broken for non-Mac targets

        Reviewed by Darin Adler.

        Fix ENABLE_ORIENTATION_EVENTS for non-Mac platforms.

        * chromium/features.gypi: Added 'ENABLE_ORIENTATION_EVENTS=0' to
        disable this feature by default.

2009-09-22  Yaar Schnitman  <yaar@chromium.org>

        Reviewed by David Levin.

        Create chromium directory and ported chromium.org's features.gypi for 
        the webkit chromium port.

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

        * chromium/features.gypi: Added.

2009-09-21  Dan Bernstein  <mitz@apple.com>

        Reviewed by Anders Carlsson.

        <rdar://problem/4137135> iFrame with PDF not being handled correctly on
        usps.com
        https://bugs.webkit.org/show_bug.cgi?id=4151

        * WebKit.xcodeproj/project.pbxproj: Added WebPDFDocumentExtras.{h,mm}
        and WebJSPDFDoc.{h,mm} and changed WebPDFRepresentation to
        Objective-C++.

2009-09-07  Steve Block  <steveblock@google.com>

        Reviewed by Adam Barth.

        Adds a mock Geolocation service. This will be used to provide predictable behavior of the
        Geolocation API for use in LayoutTests. Later changes will integrate the the mock
        Geolocation service with DumpRenderTree.
        https://bugs.webkit.org/show_bug.cgi?id=28264

        * WebKit.xcodeproj/project.pbxproj: Modified. Adds WebGeolocationMock.

2009-09-03  John Sullivan  <sullivan@apple.com>

        Reviewed by Adam Roben

        * StringsNotToBeLocalized.txt:
        Brought this file up to date.

2009-08-31  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Beth Dakin.

        Remove WebViewEditingContextMenu.nib and WebViewEditingContextMenuOld.nib.
        We stopped using these back in r18592 when we switched over to context menus
        driven by WebCore.

        * English.lproj/WebViewEditingContextMenu.nib/classes.nib: Removed.
        * English.lproj/WebViewEditingContextMenu.nib/info.nib: Removed.
        * English.lproj/WebViewEditingContextMenu.nib/objects.nib: Removed.
        * English.lproj/WebViewEditingContextMenuOld.nib/classes.nib: Removed.
        * English.lproj/WebViewEditingContextMenuOld.nib/info.nib: Removed.
        * English.lproj/WebViewEditingContextMenuOld.nib/objects.nib: Removed.
        * WebKit.xcodeproj/project.pbxproj:

2009-08-28  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by John Sullivan.

        update-webkit-localizable-strings script can no longer complete
        https://bugs.webkit.org/show_bug.cgi?id=28792

        * English.lproj/Localizable.strings:

2009-08-27  John Sullivan  <sullivan@apple.com>

        * StringsNotToBeLocalized.txt:
        Brought up to date, other than the problem mentioned in https://bugs.webkit.org/show_bug.cgi?id=28792

2009-08-25  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Oliver Hunt.

        <video> and <audio> controller should be accessible
        https://bugs.webkit.org/show_bug.cgi?id=28081

        Add localized strings for media controller accessiblility.

        * English.lproj/Localizable.strings:

2009-08-20  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by Darin Adler.

        Enable various "grouping" ARIA roles
        https://bugs.webkit.org/show_bug.cgi?id=28486

        * English.lproj/Localizable.strings:

2009-08-18  Drew Wilson  <atwilson@google.com>

        Reviewed by Eric Seidel.

        Need to extend DumpRenderTree to expose number of worker threads.
        https://bugs.webkit.org/show_bug.cgi?id=28292

        * WebKit.xcodeproj/project.pbxproj:
        Added WebWorkersPrivate APIs to mac WebKit to expose workerThreadCount() for DumpRenderTree.

2009-08-06  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Sam Weinig.

        Add explicit dependencies for our build verification scripts to ensure that they always run after linking has completed.

        * WebKit.xcodeproj/project.pbxproj:

2009-08-06  Mark Rowe  <mrowe@apple.com>

        Bring a little order to our otherwise out of control lives.

        * WebKit.xcodeproj/project.pbxproj:

2009-08-06  Mark Rowe  <mrowe@apple.com>

        Build fix.

        Don't attempt to build a file that Anders just deleted.

        * WebKit.xcodeproj/project.pbxproj:

2009-07-29  David Kilzer  <ddkilzer@apple.com>

        <http://webkit.org/b/27788> Don't export WebPluginController.h as a private header

        Reviewed by Mark Rowe.

        WebPluginController.h includes WebPluginContainerCheck.h, which
        is not a private header.  Since WebPluginController.h doesn't
        appear to be used anywhere, remove its private header status.

        * WebKit.xcodeproj/project.pbxproj: Remove private header
        attribute from WebPluginController.h.

2009-07-28  Maxime Simon  <simon.maxime@gmail.com>

        Reviewed by David Levin.

        Added FrameLoaderClient for Haiku WebCore support.
        https://bugs.webkit.org/show_bug.cgi?id=26952

        * haiku/WebCoreSupport/FrameLoaderClientHaiku.cpp: Added.
        (WebCore::FrameLoaderClientHaiku::FrameLoaderClientHaiku):
        (WebCore::FrameLoaderClientHaiku::setFrame):
        (WebCore::FrameLoaderClientHaiku::setWebView):
        (WebCore::FrameLoaderClientHaiku::detachFrameLoader):
        (WebCore::FrameLoaderClientHaiku::hasWebView):
        (WebCore::FrameLoaderClientHaiku::hasBackForwardList):
        (WebCore::FrameLoaderClientHaiku::resetBackForwardList):
        (WebCore::FrameLoaderClientHaiku::provisionalItemIsTarget):
        (WebCore::FrameLoaderClientHaiku::makeRepresentation):
        (WebCore::FrameLoaderClientHaiku::forceLayout):
        (WebCore::FrameLoaderClientHaiku::forceLayoutForNonHTML):
        (WebCore::FrameLoaderClientHaiku::updateHistoryForCommit):
        (WebCore::FrameLoaderClientHaiku::updateHistoryForBackForwardNavigation):
        (WebCore::FrameLoaderClientHaiku::updateHistoryForReload):
        (WebCore::FrameLoaderClientHaiku::updateHistoryForStandardLoad):
        (WebCore::FrameLoaderClientHaiku::updateHistoryForInternalLoad):
        (WebCore::FrameLoaderClientHaiku::updateHistoryAfterClientRedirect):
        (WebCore::FrameLoaderClientHaiku::setCopiesOnScroll):
        (WebCore::FrameLoaderClientHaiku::tokenForLoadErrorReset):
        (WebCore::FrameLoaderClientHaiku::resetAfterLoadError):
        (WebCore::FrameLoaderClientHaiku::doNotResetAfterLoadError):
        (WebCore::FrameLoaderClientHaiku::willCloseDocument):
        (WebCore::FrameLoaderClientHaiku::detachedFromParent2):
        (WebCore::FrameLoaderClientHaiku::detachedFromParent3):
        (WebCore::FrameLoaderClientHaiku::dispatchDidHandleOnloadEvents):
        (WebCore::FrameLoaderClientHaiku::dispatchDidReceiveServerRedirectForProvisionalLoad):
        (WebCore::FrameLoaderClientHaiku::dispatchDidCancelClientRedirect):
        (WebCore::FrameLoaderClientHaiku::dispatchWillPerformClientRedirect):
        (WebCore::FrameLoaderClientHaiku::dispatchDidChangeLocationWithinPage):
        (WebCore::FrameLoaderClientHaiku::dispatchWillClose):
        (WebCore::FrameLoaderClientHaiku::dispatchDidStartProvisionalLoad):
        (WebCore::FrameLoaderClientHaiku::dispatchDidReceiveTitle):
        (WebCore::FrameLoaderClientHaiku::dispatchDidCommitLoad):
        (WebCore::FrameLoaderClientHaiku::dispatchDidFinishDocumentLoad):
        (WebCore::FrameLoaderClientHaiku::dispatchDidFinishLoad):
        (WebCore::FrameLoaderClientHaiku::dispatchDidFirstLayout):
        (WebCore::FrameLoaderClientHaiku::dispatchDidFirstVisuallyNonEmptyLayout):
        (WebCore::FrameLoaderClientHaiku::dispatchShow):
        (WebCore::FrameLoaderClientHaiku::cancelPolicyCheck):
        (WebCore::FrameLoaderClientHaiku::dispatchWillSubmitForm):
        (WebCore::FrameLoaderClientHaiku::dispatchDidLoadMainResource):
        (WebCore::FrameLoaderClientHaiku::revertToProvisionalState):
        (WebCore::FrameLoaderClientHaiku::postProgressStartedNotification):
        (WebCore::FrameLoaderClientHaiku::postProgressEstimateChangedNotification):
        (WebCore::FrameLoaderClientHaiku::postProgressFinishedNotification):
        (WebCore::FrameLoaderClientHaiku::progressStarted):
        (WebCore::FrameLoaderClientHaiku::progressCompleted):
        (WebCore::FrameLoaderClientHaiku::setMainFrameDocumentReady):
        (WebCore::FrameLoaderClientHaiku::willChangeTitle):
        (WebCore::FrameLoaderClientHaiku::didChangeTitle):
        (WebCore::FrameLoaderClientHaiku::finishedLoading):
        (WebCore::FrameLoaderClientHaiku::canShowMIMEType):
        (WebCore::FrameLoaderClientHaiku::representationExistsForURLScheme):
        (WebCore::FrameLoaderClientHaiku::generatedMIMETypeForURLScheme):
        (WebCore::FrameLoaderClientHaiku::frameLoadCompleted):
        (WebCore::FrameLoaderClientHaiku::saveViewStateToItem):
        (WebCore::FrameLoaderClientHaiku::restoreViewState):
        (WebCore::FrameLoaderClientHaiku::restoreScrollPositionAndViewState):
        (WebCore::FrameLoaderClientHaiku::provisionalLoadStarted):
        (WebCore::FrameLoaderClientHaiku::shouldTreatURLAsSameAsCurrent):
        (WebCore::FrameLoaderClientHaiku::addHistoryItemForFragmentScroll):
        (WebCore::FrameLoaderClientHaiku::didFinishLoad):
        (WebCore::FrameLoaderClientHaiku::prepareForDataSourceReplacement):
        (WebCore::FrameLoaderClientHaiku::setTitle):
        (WebCore::FrameLoaderClientHaiku::userAgent):
        (WebCore::FrameLoaderClientHaiku::dispatchDidReceiveIcon):
        (WebCore::FrameLoaderClientHaiku::frameLoaderDestroyed):
        (WebCore::FrameLoaderClientHaiku::canHandleRequest):
        (WebCore::FrameLoaderClientHaiku::partClearedInBegin):
        (WebCore::FrameLoaderClientHaiku::updateGlobalHistory):
        (WebCore::FrameLoaderClientHaiku::updateGlobalHistoryRedirectLinks):
        (WebCore::FrameLoaderClientHaiku::shouldGoToHistoryItem):
        (WebCore::FrameLoaderClientHaiku::saveScrollPositionAndViewStateToItem):
        (WebCore::FrameLoaderClientHaiku::canCachePage):
        (WebCore::FrameLoaderClientHaiku::setMainDocumentError):
        (WebCore::FrameLoaderClientHaiku::committedLoad):
        (WebCore::FrameLoaderClientHaiku::cancelledError):
        (WebCore::FrameLoaderClientHaiku::blockedError):
        (WebCore::FrameLoaderClientHaiku::cannotShowURLError):
        (WebCore::FrameLoaderClientHaiku::interruptForPolicyChangeError):
        (WebCore::FrameLoaderClientHaiku::cannotShowMIMETypeError):
        (WebCore::FrameLoaderClientHaiku::fileDoesNotExistError):
        (WebCore::FrameLoaderClientHaiku::shouldFallBack):
        (WebCore::FrameLoaderClientHaiku::createDocumentLoader):
        (WebCore::FrameLoaderClientHaiku::download):
        (WebCore::FrameLoaderClientHaiku::assignIdentifierToInitialRequest):
        (WebCore::FrameLoaderClientHaiku::dispatchWillSendRequest):
        (WebCore::FrameLoaderClientHaiku::shouldUseCredentialStorage):
        (WebCore::FrameLoaderClientHaiku::dispatchDidReceiveAuthenticationChallenge):
        (WebCore::FrameLoaderClientHaiku::dispatchDidCancelAuthenticationChallenge):
        (WebCore::FrameLoaderClientHaiku::dispatchDidReceiveResponse):
        (WebCore::FrameLoaderClientHaiku::dispatchDidReceiveContentLength):
        (WebCore::FrameLoaderClientHaiku::dispatchDidFinishLoading):
        (WebCore::FrameLoaderClientHaiku::dispatchDidFailLoading):
        (WebCore::FrameLoaderClientHaiku::dispatchDidLoadResourceFromMemoryCache):
        (WebCore::FrameLoaderClientHaiku::dispatchDidLoadResourceByXMLHttpRequest):
        (WebCore::FrameLoaderClientHaiku::dispatchDidFailProvisionalLoad):
        (WebCore::FrameLoaderClientHaiku::dispatchDidFailLoad):
        (WebCore::FrameLoaderClientHaiku::dispatchCreatePage):
        (WebCore::FrameLoaderClientHaiku::dispatchDecidePolicyForMIMEType):
        (WebCore::FrameLoaderClientHaiku::dispatchDecidePolicyForNewWindowAction):
        (WebCore::FrameLoaderClientHaiku::dispatchDecidePolicyForNavigationAction):
        (WebCore::FrameLoaderClientHaiku::dispatchUnableToImplementPolicy):
        (WebCore::FrameLoaderClientHaiku::startDownload):
        (WebCore::FrameLoaderClientHaiku::createFrame):
        (WebCore::FrameLoaderClientHaiku::objectContentType):
        (WebCore::FrameLoaderClientHaiku::createPlugin):
        (WebCore::FrameLoaderClientHaiku::redirectDataToPlugin):
        (WebCore::FrameLoaderClientHaiku::pluginWillHandleLoadError):
        (WebCore::FrameLoaderClientHaiku::createJavaAppletWidget):
        (WebCore::FrameLoaderClientHaiku::overrideMediaType):
        (WebCore::FrameLoaderClientHaiku::windowObjectCleared):
        (WebCore::FrameLoaderClientHaiku::documentElementAvailable):
        (WebCore::FrameLoaderClientHaiku::didPerformFirstNavigation):
        (WebCore::FrameLoaderClientHaiku::registerForIconNotification):
        (WebCore::FrameLoaderClientHaiku::savePlatformDataToCachedFrame):
        (WebCore::FrameLoaderClientHaiku::transitionToCommittedFromCachedFrame):
        (WebCore::FrameLoaderClientHaiku::transitionToCommittedForNewPage):
        * haiku/WebCoreSupport/FrameLoaderClientHaiku.h: Added.
        (WebCore::FrameLoaderClientHaiku::~FrameLoaderClientHaiku):

2009-07-28  Maxime Simon  <simon.maxime@gmail.com>

        Reviewed by David Levin.

        Added ChromeClient for Haiku WebCore support.
        https://bugs.webkit.org/show_bug.cgi?id=26952

        * haiku/WebCoreSupport/ChromeClientHaiku.cpp: Added.
        (WebCore::ChromeClientHaiku::ChromeClientHaiku):
        (WebCore::ChromeClientHaiku::~ChromeClientHaiku):
        (WebCore::ChromeClientHaiku::chromeDestroyed):
        (WebCore::ChromeClientHaiku::setWindowRect):
        (WebCore::ChromeClientHaiku::windowRect):
        (WebCore::ChromeClientHaiku::pageRect):
        (WebCore::ChromeClientHaiku::scaleFactor):
        (WebCore::ChromeClientHaiku::focus):
        (WebCore::ChromeClientHaiku::unfocus):
        (WebCore::ChromeClientHaiku::canTakeFocus):
        (WebCore::ChromeClientHaiku::takeFocus):
        (WebCore::ChromeClientHaiku::createWindow):
        (WebCore::ChromeClientHaiku::createModalDialog):
        (WebCore::ChromeClientHaiku::show):
        (WebCore::ChromeClientHaiku::canRunModal):
        (WebCore::ChromeClientHaiku::runModal):
        (WebCore::ChromeClientHaiku::setToolbarsVisible):
        (WebCore::ChromeClientHaiku::toolbarsVisible):
        (WebCore::ChromeClientHaiku::setStatusbarVisible):
        (WebCore::ChromeClientHaiku::statusbarVisible):
        (WebCore::ChromeClientHaiku::setScrollbarsVisible):
        (WebCore::ChromeClientHaiku::scrollbarsVisible):
        (WebCore::ChromeClientHaiku::setMenubarVisible):
        (WebCore::ChromeClientHaiku::menubarVisible):
        (WebCore::ChromeClientHaiku::setResizable):
        (WebCore::ChromeClientHaiku::addMessageToConsole):
        (WebCore::ChromeClientHaiku::canRunBeforeUnloadConfirmPanel):
        (WebCore::ChromeClientHaiku::runBeforeUnloadConfirmPanel):
        (WebCore::ChromeClientHaiku::closeWindowSoon):
        (WebCore::ChromeClientHaiku::runJavaScriptAlert):
        (WebCore::ChromeClientHaiku::runJavaScriptConfirm):
        (WebCore::ChromeClientHaiku::runJavaScriptPrompt):
        (WebCore::ChromeClientHaiku::setStatusbarText):
        (WebCore::ChromeClientHaiku::shouldInterruptJavaScript):
        (WebCore::ChromeClientHaiku::tabsToLinks):
        (WebCore::ChromeClientHaiku::windowResizerRect):
        (WebCore::ChromeClientHaiku::repaint):
        (WebCore::ChromeClientHaiku::scroll):
        (WebCore::ChromeClientHaiku::screenToWindow):
        (WebCore::ChromeClientHaiku::windowToScreen):
        (WebCore::ChromeClientHaiku::platformWindow):
        (WebCore::ChromeClientHaiku::contentsSizeChanged):
        (WebCore::ChromeClientHaiku::scrollRectIntoView):
        (WebCore::ChromeClientHaiku::addToDirtyRegion):
        (WebCore::ChromeClientHaiku::scrollBackingStore):
        (WebCore::ChromeClientHaiku::updateBackingStore):
        (WebCore::ChromeClientHaiku::mouseDidMoveOverElement):
        (WebCore::ChromeClientHaiku::setToolTip):
        (WebCore::ChromeClientHaiku::print):
        (WebCore::ChromeClientHaiku::exceededDatabaseQuota):
        (WebCore::ChromeClientWx::reachedMaxAppCacheSize):
        (WebCore::ChromeClientHaiku::requestGeolocationPermissionForFrame):
        (WebCore::ChromeClientHaiku::runOpenPanel):
        (WebCore::ChromeClientHaiku::setCursor):
        (WebCore::ChromeClientHaiku::formStateDidChange):
        (WebCore::ChromeClientHaiku::createHTMLParserQuirks):
        * haiku/WebCoreSupport/ChromeClientHaiku.h: Added.

2009-07-28  Robert Hogan  <robert@roberthogan.net>

        Reviewed by Simon Hausmann.

        Add WebKit version API to Qt.

        Get the current version of WebKit from WebKit/mac/Configurations/Version.xcconfig
        at compile time and make it available to webkit ports through WebKitVersion.h.

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

        * scripts/generate-webkitversion.pl: Added

2009-07-24  Andrei Popescu  <andreip@google.com>

        ApplicationCache should have size limit
        https://bugs.webkit.org/show_bug.cgi?id=22700
        
        Updated the project after adding WebApplicationCache.h/mm

        * WebKit.xcodeproj/project.pbxproj:

2009-07-16  Maxime Simon  <simon.maxime@gmail.com>

        Reviewed by Eric Seidel.

        Added InspectorClient for Haiku WebCore support.
        https://bugs.webkit.org/show_bug.cgi?id=26952

        Adding two files, InspectorClientHaiku.h and InspectorClientHaiku.cpp

        * haiku/WebCoreSupport/InspectorClientHaiku.cpp: Added.
        (WebCore::InspectorClientHaiku::inspectorDestroyed):
        (WebCore::InspectorClientHaiku::createPage):
        (WebCore::InspectorClientHaiku::localizedStringsURL):
        (WebCore::InspectorClientHaiku::hiddenPanels):
        (WebCore::InspectorClientHaiku::showWindow):
        (WebCore::InspectorClientHaiku::closeWindow):
        (WebCore::InspectorClientHaiku::attachWindow):
        (WebCore::InspectorClientHaiku::detachWindow):
        (WebCore::InspectorClientHaiku::setAttachedWindowHeight):
        (WebCore::InspectorClientHaiku::highlight):
        (WebCore::InspectorClientHaiku::hideHighlight):
        (WebCore::InspectorClientHaiku::inspectedURLChanged):
        (WebCore::InspectorClientHaiku::populateSetting):
        (WebCore::InspectorClientHaiku::storeSetting):
        (WebCore::InspectorClientHaiku::removeSetting):
        * haiku/WebCoreSupport/InspectorClientHaiku.h: Added.

2009-07-16  Maxime Simon  <simon.maxime@gmail.com>

        Reviewed by Oliver Hunt.

        Added EditorClient for Haiku WebCore support.
        https://bugs.webkit.org/show_bug.cgi?id=26952

        Adding two files, EditorClientHaiku.h and EditorClientHaiku.cpp

        * haiku/WebCoreSupport/EditorClientHaiku.cpp: Added.
        (WebCore::EditorClientHaiku::EditorClientHaiku):
        (WebCore::EditorClientHaiku::setPage):
        (WebCore::EditorClientHaiku::pageDestroyed):
        (WebCore::EditorClientHaiku::shouldDeleteRange):
        (WebCore::EditorClientHaiku::shouldShowDeleteInterface):
        (WebCore::EditorClientHaiku::smartInsertDeleteEnabled):
        (WebCore::EditorClientHaiku::isSelectTrailingWhitespaceEnabled):
        (WebCore::EditorClientHaiku::isContinuousSpellCheckingEnabled):
        (WebCore::EditorClientHaiku::toggleContinuousSpellChecking):
        (WebCore::EditorClientHaiku::isGrammarCheckingEnabled):
        (WebCore::EditorClientHaiku::toggleGrammarChecking):
        (WebCore::EditorClientHaiku::spellCheckerDocumentTag):
        (WebCore::EditorClientHaiku::isEditable):
        (WebCore::EditorClientHaiku::shouldBeginEditing):
        (WebCore::EditorClientHaiku::shouldEndEditing):
        (WebCore::EditorClientHaiku::shouldInsertNode):
        (WebCore::EditorClientHaiku::shouldInsertText):
        (WebCore::EditorClientHaiku::shouldChangeSelectedRange):
        (WebCore::EditorClientHaiku::shouldApplyStyle):
        (WebCore::EditorClientHaiku::shouldMoveRangeAfterDelete):
        (WebCore::EditorClientHaiku::didBeginEditing):
        (WebCore::EditorClientHaiku::respondToChangedContents):
        (WebCore::EditorClientHaiku::respondToChangedSelection):
        (WebCore::EditorClientHaiku::didEndEditing):
        (WebCore::EditorClientHaiku::didWriteSelectionToPasteboard):
        (WebCore::EditorClientHaiku::didSetSelectionTypesForPasteboard):
        (WebCore::EditorClientHaiku::registerCommandForUndo):
        (WebCore::EditorClientHaiku::registerCommandForRedo):
        (WebCore::EditorClientHaiku::clearUndoRedoOperations):
        (WebCore::EditorClientHaiku::canUndo):
        (WebCore::EditorClientHaiku::canRedo):
        (WebCore::EditorClientHaiku::undo):
        (WebCore::EditorClientHaiku::redo):
        (WebCore::EditorClientHaiku::handleKeyboardEvent):
        (WebCore::EditorClientHaiku::handleInputMethodKeydown):
        (WebCore::EditorClientHaiku::textFieldDidBeginEditing):
        (WebCore::EditorClientHaiku::textFieldDidEndEditing):
        (WebCore::EditorClientHaiku::textDidChangeInTextField):
        (WebCore::EditorClientHaiku::doTextFieldCommandFromEvent):
        (WebCore::EditorClientHaiku::textWillBeDeletedInTextField):
        (WebCore::EditorClientHaiku::textDidChangeInTextArea):
        (WebCore::EditorClientHaiku::ignoreWordInSpellDocument):
        (WebCore::EditorClientHaiku::learnWord):
        (WebCore::EditorClientHaiku::checkSpellingOfString):
        (WebCore::EditorClientHaiku::getAutoCorrectSuggestionForMisspelledWord):
        (WebCore::EditorClientHaiku::checkGrammarOfString):
        (WebCore::EditorClientHaiku::updateSpellingUIWithGrammarString):
        (WebCore::EditorClientHaiku::updateSpellingUIWithMisspelledWord):
        (WebCore::EditorClientHaiku::showSpellingUI):
        (WebCore::EditorClientHaiku::spellingUIIsShowing):
        (WebCore::EditorClientHaiku::getGuessesForWord):
        (WebCore::EditorClientHaiku::setInputMethodState):
        (WebCore::EditorClientHaiku::isEditing):
        * haiku/WebCoreSupport/EditorClientHaiku.h: Added.

2009-07-16  Maxime Simon  <simon.maxime@gmail.com>

        Reviewed by Eric Seidel.

        Added DragClient for Haiku WebCore support.
        https://bugs.webkit.org/show_bug.cgi?id=26952

        Adding two files, DragClientHaiku.h and DragClientHaiku.cpp

        * haiku/WebCoreSupport/DragClientHaiku.cpp: Added.
        (WebCore::DragClientHaiku::actionMaskForDrag):
        (WebCore::DragClientHaiku::willPerformDragDestinationAction):
        (WebCore::DragClientHaiku::dragControllerDestroyed):
        (WebCore::DragClientHaiku::dragSourceActionMaskForPoint):
        (WebCore::DragClientHaiku::willPerformDragSourceAction):
        (WebCore::DragClientHaiku::startDrag):
        (WebCore::DragClientHaiku::createDragImageForLink):
        * haiku/WebCoreSupport/DragClientHaiku.h: Added.

2009-07-16  Maxime Simon  <simon.maxime@gmail.com>

        Reviewed by Oliver Hunt.

        Added ContextMenuClient for Haiku WebCore support.
        https://bugs.webkit.org/show_bug.cgi?id=26952

        Adding two files, ContextMenuClientHaiku.h
        and ContextMenuClientHaiku.cpp

        * haiku/WebCoreSupport/ContextMenuClientHaiku.cpp: Added.
        (WebCore::ContextMenuClientHaiku::contextMenuDestroyed):
        (WebCore::ContextMenuClientHaiku::getCustomMenuFromDefaultItems):
        (WebCore::ContextMenuClientHaiku::contextMenuItemSelected):
        (WebCore::ContextMenuClientHaiku::downloadURL):
        (WebCore::ContextMenuClientHaiku::lookUpInDictionary):
        (WebCore::ContextMenuClientHaiku::speak):
        (WebCore::ContextMenuClientHaiku::isSpeaking):
        (WebCore::ContextMenuClientHaiku::stopSpeaking):
        (WebCore::ContextMenuClientHaiku::searchWithGoogle):
        * haiku/WebCoreSupport/ContextMenuClientHaiku.h: Added.

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

        Sort all our Xcode projects

        Accomplished using sort-Xcode-project-file.

        Requested by Dave Kilzer.

        * WebKit.xcodeproj/project.pbxproj:

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.

