2013-11-22  Benjamin Poulain  <bpoulain@apple.com>

        [WK2] Fix the build of the NetworkProcess on iOS
        https://bugs.webkit.org/show_bug.cgi?id=124794

        Reviewed by Alexey Proskuryakov.

        * NetworkProcess/AsynchronousNetworkLoaderClient.cpp:
        (WebKit::AsynchronousNetworkLoaderClient::didReceiveBuffer):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/SynchronousNetworkLoaderClient.cpp:
        (WebKit::SynchronousNetworkLoaderClient::willSendRequest):

2013-11-22  Anders Carlsson  <andersca@apple.com>

        Move the remaining page loader clients out into separate files
        https://bugs.webkit.org/show_bug.cgi?id=124792

        Reviewed by Dan Bernstein.

        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/C/WKPageContextMenuClient.h: Added.
        * UIProcess/API/C/WKPageFindClient.h: Added.
        * UIProcess/API/C/WKPageFindMatchesClient.h: Added.
        * UIProcess/API/C/WKPageFormClient.h: Added.
        * UIProcess/API/C/WKPageLoaderClient.h:
        * UIProcess/API/C/WKPagePolicyClient.h: Added.
        * UIProcess/API/C/WKPageUIClient.h: Added.
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-22  Anders Carlsson  <andersca@apple.com>

        Move WKPageLoaderClient out into a separate header
        https://bugs.webkit.org/show_bug.cgi?id=124790

        Reviewed by Dan Bernstein.

        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/C/WKPageLoaderClient.h: Added.
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-22  Anders Carlsson  <andersca@apple.com>

        Fix 32-bit build.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController dealloc]):
        (-[WKBrowsingContextController _initWithPageRef:]):

2013-11-22  Dan Bernstein  <mitz@apple.com>

        Debug builds unconditionally dump remote layer tree transactions to stderr.

        Reviewed by Sam Weinig.

        * Platform/Logging.h: Declared RemoteLayerTree logging channel.
        * Shared/mac/RemoteLayerTreeTransaction.h: Declared description().
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::dump): Changed to use description().
        (WebKit::RemoteLayerTreeTransaction::description): Returns a CString with the description.
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::commit): Changed to use logging instead of calling dump().

2013-11-21  Anders Carlsson  <andersca@apple.com>

        Send out the right KVO callbacks when the page title changes
        https://bugs.webkit.org/show_bug.cgi?id=124753

        Reviewed by Simon Fraser.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (PageLoadStateObserver::PageLoadStateObserver):
        New class that sends the right KVO notifications when the load state changes.

        (-[WKBrowsingContextController dealloc]):
        Remove the observer.

        (-[WKBrowsingContextController _initWithPageRef:]):
        Allocate the observer and add it.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::~PageLoadState):
        Assert that we don't have any observers left.

        (WebKit::PageLoadState::addObserver):
        Add the observer to the list.

        (WebKit::PageLoadState::removeObserver):
        Remove the observer from the list.

        (WebKit::PageLoadState::reset):
        Call title change callbacks.

        (WebKit::PageLoadState::setTitle):
        Ditto.

        (WebKit::PageLoadState::callObserverCallback):
        Helper function to dispatch callbacks to observers.

        * UIProcess/PageLoadState.h:
        Add new members.

2013-11-21  Sergio Correia  <sergio.correia@openbossa.org>

        [EFL][WK2] Fix build after r159656
        https://bugs.webkit.org/show_bug.cgi?id=124755

        Reviewed by Gyuyoung Kim.

        Page title was moved to page load state.

        * UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:
        (WebKit::WebInspectorServer::buildPageList):

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

        <https://webkit.org/b/124702> Stop overriding VALID_ARCHS.

        All modern versions of Xcode set it appropriately for our needs.

        Reviewed by Alexey Proskuryakov.

        * Configurations/Base.xcconfig:

2013-11-21  Gwang Yoon Hwang  <ryumiel@company100.net>

        [GTK] Unreviewed buildfix after r159614 and r159656.

        * UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp:
        (WebKit::WebInspectorServer::buildPageList): Use the page load state to get page title.

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

        <https://webkit.org/b/124701> Fix an error in a few Xcode configuration setting files.

        Reviewed by Alexey Proskuryakov.

        * Configurations/Base.xcconfig:

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

        <https://webkit.org/b/124700> Fix some deprecation warnings.

        Reviewed by Anders Carlsson.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView namesOfPromisedFilesDroppedAtDestination:]): Move off a deprecated NSFileWrapper method.

2013-11-21  Anders Carlsson  <andersca@apple.com>

        Didn't mean to commit this.

        * UIProcess/PageLoadState.h:

2013-11-21  Anders Carlsson  <andersca@apple.com>

        Move page title handling to the page load state
        https://bugs.webkit.org/show_bug.cgi?id=124748

        Reviewed by Dan Bernstein.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageCopyTitle):
        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::reset):
        (WebKit::PageLoadState::didCommitLoad):
        (WebKit::PageLoadState::title):
        (WebKit::PageLoadState::setTitle):
        * UIProcess/PageLoadState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReceiveTitleForFrame):
        * UIProcess/WebPageProxy.h:

2013-11-21  Daniel Bates  <dabates@apple.com>

        Remove unused functions from WebCore and WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=124739

        Reviewed by Alexey Proskuryakov.

        Remove unused functions autoreleased({WKURLRequestRef, WKURLResponseRef}).

        * UIProcess/API/mac/WKBrowsingContextController.mm:

2013-11-21  Csaba Osztrogonác  <ossy@webkit.org>

        Rename PlatformCertificateInfo to CertificateInfo
        https://bugs.webkit.org/show_bug.cgi?id=124150

        Reviewed by Darin Adler.

        * GNUmakefile.list.am:
        * NetworkProcess/AsynchronousNetworkLoaderClient.cpp:
        (WebKit::AsynchronousNetworkLoaderClient::didReceiveResponse):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost):
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost):
        * PlatformEfl.cmake:
        * PlatformGTK.cmake:
        * Shared/API/c/mac/WKCertificateInfoMac.mm:
        (WKCertificateInfoCreateWithCertficateChain):
        (WKCertificateInfoGetCertificateChain):
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge):
        (WebKit::AuthenticationManager::useCredentialForChallenge):
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/Authentication/AuthenticationManager.messages.in:
        * Shared/Authentication/mac/AuthenticationManager.mac.mm:
        (WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebCertificateInfo.h:
        (WebKit::WebCertificateInfo::create):
        (WebKit::WebCertificateInfo::certificateInfo):
        (WebKit::WebCertificateInfo::WebCertificateInfo):
        * Shared/mac/CertificateInfo.h: Renamed from Source/WebKit2/Shared/mac/PlatformCertificateInfo.h.
        (WebKit::CertificateInfo::certificateChain):
        * Shared/mac/CertificateInfo.mm: Renamed from Source/WebKit2/Shared/mac/PlatformCertificateInfo.mm.
        (WebKit::CertificateInfo::CertificateInfo):
        (WebKit::CertificateInfo::encode):
        (WebKit::CertificateInfo::decode):
        (WebKit::CertificateInfo::dump):
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (CoreIPC::::encodePlatformData):
        (CoreIPC::::decodePlatformData):
        * Shared/soup/CertificateInfo.cpp: Renamed from Source/WebKit2/Shared/soup/PlatformCertificateInfo.cpp.
        (WebKit::CertificateInfo::CertificateInfo):
        (WebKit::CertificateInfo::~CertificateInfo):
        (WebKit::CertificateInfo::encode):
        (WebKit::CertificateInfo::decode):
        * Shared/soup/CertificateInfo.h: Renamed from Source/WebKit2/Shared/soup/PlatformCertificateInfo.h.
        (WebKit::CertificateInfo::certificate):
        (WebKit::CertificateInfo::tlsErrors):
        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (CoreIPC::::encodePlatformData):
        (CoreIPC::::decodePlatformData):
        * UIProcess/API/gtk/WebKitCertificateInfo.cpp:
        (webkitCertificateInfoGetCertificateInfo):
        * UIProcess/API/gtk/WebKitCertificateInfoPrivate.h:
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_get_tls_info):
        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        (WebKit::AuthenticationChallengeProxy::useCredential):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::allowSpecificHTTPSCertificateForHost):
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::didCommitLoad):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::didReceiveResponseWithCertificateInfo):
        * WebProcess/Network/WebResourceLoader.h:
        * WebProcess/Network/WebResourceLoader.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::allowSpecificHTTPSCertificateForHost):

2013-11-21  Sergio Correia  <sergio.correia@openbossa.org>

        [EFL][GTK][WK2] Build fix after r159641
        https://bugs.webkit.org/show_bug.cgi?id=124742

        Reviewed by Csaba Osztrogonác.

        Should fetch activeURL from page load state.

        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewUpdateURI):
        * UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:
        (WebKit::WebInspectorServer::buildPageList):
        * UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp:
        (WebKit::WebInspectorServer::buildPageList):

2013-11-21  Anders Carlsson  <andersca@apple.com>

        Fetch all page loading related URLs from the page load state
        https://bugs.webkit.org/show_bug.cgi?id=124732

        Reviewed by Dan Bernstein.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageCopyActiveURL):
        (WKPageCopyProvisionalURL):
        (WKPageCopyCommittedURL):
        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController unreachableURL]):
        * UIProcess/PageLoadState.h:
        (WebKit::PageLoadState::provisionalURL):
        (WebKit::PageLoadState::url):
        (WebKit::PageLoadState::unreachableURL):
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:

2013-11-20  Brady Eidson  <beidson@apple.com>

        Hook up WebProcess-side of getOrEstablishIDBDatabaseMetadata
        https://bugs.webkit.org/show_bug.cgi?id=124698

        Reviewed by Anders Carlsson.

        With this change the IDB API in WebKit2 using the DatabaseProcess finally does something observable:
        window.indexedDB.open() sends an error to Javascript.

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata): Continue calling back to the
          WebProcess with dummy data, but include the request ID for reference.
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        Add a new class that wraps a completion callback function and gives it a unique integer identifier.
        It also allows for wrapping an abort callback function (in case a connection is lost, for example).
        It is templated to flexibly handle any callback function signature.
        * Shared/AsyncRequest.cpp: Added.
        (WebKit::generateRequestID):
        (WebKit::AsyncRequest::AsyncRequest):
        (WebKit::AsyncRequest::~AsyncRequest):
        (WebKit::AsyncRequest::setAbortHandler):
        (WebKit::AsyncRequest::requestAborted):
        (WebKit::AsyncRequest::clearAbortHandler):
        * Shared/AsyncRequest.h: Added.
        (WebKit::AsyncRequest::requestID):
        (WebKit::AsyncRequest::requestCompleted):

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::getOrEstablishIDBDatabaseMetadata): Wrap the completion handler in an
          AsyncRequest and save off the request for later use.
        (WebKit::WebIDBServerConnection::didGetOrEstablishIDBDatabaseMetadata): Send the results to the AsyncRequest.
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        * WebKit2.xcodeproj/project.pbxproj:

2013-11-20  Anders Carlsson  <andersca@apple.com>

        Move activeURL getter to PageLoadState
        https://bugs.webkit.org/show_bug.cgi?id=124690

        Reviewed by Tim Horton.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::activeURL):
        * UIProcess/PageLoadState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::activeURL):

2013-11-20  Simon Fraser  <simon.fraser@apple.com>

        Clean up WebKit2 initialization
        https://bugs.webkit.org/show_bug.cgi?id=124696

        Reviewed by Sam Weinig.
        
        Call InitializeWebKit2() everywhere we need to do one-time
        initialization in WebKit2, rather than having a hotch-potch
        of init code.

        * Shared/APIObject.cpp:
        (API::Object::Object):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm: Removed an unused #include.
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::create):

2013-11-21  Dan Bernstein  <mitz@apple.com>

        Reverted r159603, as it appears to have caused Safari’s Web processes to crash on launch.

        Requested by Sam Weinig.

        * Scripts/webkit2/messages.py:
        (struct_or_class):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * Shared/mac/ObjCObjectGraphCoders.h:
        * Shared/mac/ObjCObjectGraphCoders.mm:
        (WebKit::ObjCObjectGraphEncoder::baseEncode):
        (WebKit::WebContextObjCObjectGraphEncoderImpl::WebContextObjCObjectGraphEncoderImpl):
        (WebKit::WebContextObjCObjectGraphEncoderImpl::encode):
        (WebKit::InjectedBundleObjCObjectGraphEncoderImpl::encode):
        (WebKit::WebContextObjCObjectGraphEncoder::WebContextObjCObjectGraphEncoder):
        (WebKit::WebContextObjCObjectGraphEncoder::encode):
        * UIProcess/WebConnectionToWebProcess.cpp:
        (WebKit::WebConnectionToWebProcess::encodeMessageBody):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::createNewWebProcess):
        (WebKit::WebContext::createWebPage):
        (WebKit::WebContext::postMessageToInjectedBundle):
        (WebKit::WebContext::didReceiveSyncMessage):
        * UIProcess/WebContextUserMessageCoders.h:
        (WebKit::WebContextUserMessageEncoder::WebContextUserMessageEncoder):
        (WebKit::WebContextUserMessageEncoder::encode):
        (WebKit::WebContextUserMessageDecoder::decode):
        * UIProcess/WebPageGroup.cpp:
        * UIProcess/WebPageGroup.h:
        (WebKit::WebPageGroup::sendToAllProcessesInGroup):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::create):
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::loadURL):
        (WebKit::WebPageProxy::loadURLRequest):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadHTMLString):
        (WebKit::WebPageProxy::loadAlternateHTMLString):
        (WebKit::WebPageProxy::loadPlainTextString):
        (WebKit::WebPageProxy::loadWebArchiveData):
        (WebKit::WebPageProxy::postMessageToInjectedBundle):
        (WebKit::WebPageProxy::initializeCreationParameters):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::disconnect):
        (WebKit::WebProcessProxy::createWebPage):
        * UIProcess/WebProcessProxy.h:
        * WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h:
        (WebKit::InjectedBundleUserMessageEncoder::encode):
        (WebKit::InjectedBundleUserMessageDecoder::decode):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::webPageGroup):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2013-11-20  Brady Eidson  <beidson@apple.com>

        Add more infrastructure for ServerConnection communication between Web and Database processes
        https://bugs.webkit.org/show_bug.cgi?id=124693

        Reviewed by Anders Carlsson.

        * DatabaseProcess/DatabaseToWebProcessConnection.cpp:
        (WebKit::DatabaseToWebProcessConnection::establishIDBConnection):
        (WebKit::DatabaseToWebProcessConnection::removeDatabaseProcessIDBConnection): Added for WebProcess to be able
          to invalidate the DatabaseProcess side of a server connection.
        * DatabaseProcess/DatabaseToWebProcessConnection.h:
        * DatabaseProcess/DatabaseToWebProcessConnection.messages.in:

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::DatabaseProcessIDBConnection):
        (WebKit::DatabaseProcessIDBConnection::disconnectedFromWebProcess): Added for future cleanup.
        (WebKit::DatabaseProcessIDBConnection::establishConnection):
        (WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata): Callback to the WebProcess, even if
          it is just dummy data for now.
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        (WebKit::DatabaseProcessIDBConnection::create):

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::create): Register the new object with the WebToDatabaseProcessConnection.
        (WebKit::WebIDBServerConnection::~WebIDBServerConnection): Remove from the WebToDatabaseProcessConnection.
        (WebKit::WebIDBServerConnection::getOrEstablishIDBDatabaseMetadata):
        (WebKit::WebIDBServerConnection::didGetOrEstablishIDBDatabaseMetadata): Callback from the DatabaseProcess,
          a no-op for now.
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in: Copied from Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.messages.in.

        * WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
        (WebKit::WebToDatabaseProcessConnection::didReceiveMessage):
        (WebKit::WebToDatabaseProcessConnection::didClose):
        (WebKit::WebToDatabaseProcessConnection::registerWebIDBServerConnection): Hold a collection of all
          server connections for messaging.
        (WebKit::WebToDatabaseProcessConnection::removeWebIDBServerConnection): Remove a connection from the collection,
          and also message the DatabaseProcess that it’s gone away.
        * WebProcess/Databases/WebToDatabaseProcessConnection.h:

        Project files, etc etc:
        * DerivedSources.make:
        * Scripts/webkit2/messages.py:
        (struct_or_class):
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-18  Sam Weinig  <sam@webkit.org>

        WebPageGroup's should keep track of what processes they are being used by
        https://bugs.webkit.org/show_bug.cgi?id=124556

        Reviewed by Dan Bernstein.

        * Scripts/webkit2/messages.py:
        (struct_or_class):
        Mark WebPageGroupData as a struct.

        * Shared/UserMessageCoders.h:
        * Shared/mac/ObjCObjectGraphCoders.h:
        * Shared/mac/ObjCObjectGraphCoders.mm:
        * WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h:
        * UIProcess/WebConnectionToWebProcess.cpp:
        * UIProcess/WebContext.cpp:
        * UIProcess/WebContextUserMessageCoders.h:
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        Pass the WebProcess/WebProcessProxy to both encode and decode.

        * Shared/WebPageCreationParameters.h:
        Pass the page group by ID when creating a page, as it will have had its own
        creation message sent already.

        * UIProcess/WebPageGroup.cpp:
        * UIProcess/WebPageGroup.h:
        Keep track of processes.

        * UIProcess/WebProcessProxy.cpp:
        * UIProcess/WebProcessProxy.h:
        Keep track of the page groups used by the process.

        * WebProcess/WebPage/WebPage.cpp:
        Get the already created page group on creation.

        * WebProcess/WebProcess.cpp:
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        Explicitly create page groups in the WebProcess.

2013-11-20  Brady Eidson  <beidson@apple.com>

        IDB related cleanup in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=124691

        Reviewed by Enrica Casucci.

        - WebIDBServerConnection.cpp should use the WebCore namespace and get rid of "WebCore::" throughout
        - "backendIndentifier" should be renamed to "serverConnectionIdentifier" throughout

        * DatabaseProcess/DatabaseToWebProcessConnection.cpp:
        (WebKit::DatabaseToWebProcessConnection::establishIDBConnection):
        * DatabaseProcess/DatabaseToWebProcessConnection.h:
        * DatabaseProcess/DatabaseToWebProcessConnection.messages.in:

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::DatabaseProcessIDBConnection):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        (WebKit::DatabaseProcessIDBConnection::create):

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::generateServerConnectionIdentifier):
        (WebKit::WebIDBServerConnection::WebIDBServerConnection):
        (WebKit::WebIDBServerConnection::openTransaction):
        (WebKit::WebIDBServerConnection::setIndexKeys):
        (WebKit::WebIDBServerConnection::createObjectStore):
        (WebKit::WebIDBServerConnection::createIndex):
        (WebKit::WebIDBServerConnection::deleteIndex):
        (WebKit::WebIDBServerConnection::get):
        (WebKit::WebIDBServerConnection::put):
        (WebKit::WebIDBServerConnection::openCursor):
        (WebKit::WebIDBServerConnection::count):
        (WebKit::WebIDBServerConnection::deleteRange):
        (WebKit::WebIDBServerConnection::clearObjectStore):
        (WebKit::WebIDBServerConnection::deleteObjectStore):
        (WebKit::WebIDBServerConnection::changeDatabaseVersion):
        (WebKit::WebIDBServerConnection::cursorAdvance):
        (WebKit::WebIDBServerConnection::cursorIterate):
        (WebKit::WebIDBServerConnection::cursorPrefetchIteration):
        (WebKit::WebIDBServerConnection::cursorPrefetchReset):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:

2013-11-20  Brady Eidson  <beidson@apple.com>

        Add argument coders for IDBDatabaseMetadata classes
        https://bugs.webkit.org/show_bug.cgi?id=124689

        Reviewed by Anders Carlsson.

        Add coders for:
          - IDBDatabaseMetadata
          - IDBIndexMetadata
          - IDBKeyPath
          - IDBObjectStoreMetadata

        * Shared/WebCoreArgumentCoders.cpp:
        (CoreIPC::::encode):
        (CoreIPC::::decode):
        * Shared/WebCoreArgumentCoders.h:

2013-11-20  Anders Carlsson  <andersca@apple.com>

        Enable PageLoadTest assertions again
        https://bugs.webkit.org/show_bug.cgi?id=124681

        Reviewed by Tim Horton.

        Remove an overzealous assertion and re-enable assertions in PageLoadState again.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::didCommitLoad):
        Remove assertion - it's fine for a page to have a null URL.

        (WebKit::PageLoadState::didFinishLoad):
        Ditto.

        (WebKit::PageLoadState::didFailLoad):
        Update the state.

2013-11-20  Anders Carlsson  <andersca@apple.com>

        PageLoadState should keep track of unreachable URLs
        https://bugs.webkit.org/show_bug.cgi?id=124677

        Reviewed by Dan Bernstein.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::reset):
        (WebKit::PageLoadState::didStartProvisionalLoad):
        (WebKit::PageLoadState::didFailProvisionalLoad):
        (WebKit::PageLoadState::setUnreachableURL):
        * UIProcess/PageLoadState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadAlternateHTMLString):

2013-11-20  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: 100% repro crasher on the IPC thread when creating lots of layers
        https://bugs.webkit.org/show_bug.cgi?id=124643

        Reviewed by Anders Carlsson.

        * Platform/CoreIPC/mac/ConnectionMac.cpp:
        (CoreIPC::Connection::sendOutgoingMessage):
        Dynamically allocate storage for the message if needed.

2013-11-20  Tim Horton  <timothy_horton@apple.com>

        machMessageSize uses sizeof(mach_msg_ool_ports_descriptor_t) for out-of-line *memory*
        https://bugs.webkit.org/show_bug.cgi?id=124644

        Reviewed by Anders Carlsson.

        * Platform/CoreIPC/mac/ConnectionMac.cpp:
        (CoreIPC::machMessageSize):
        mach_msg_ool_descriptor_t is the correct type, given that
        out-of-line memory descriptors use the mach_msg_ool_descriptor_t
        member of the mach_msg_descriptor_t union.

2013-11-20  Brady Eidson  <beidson@apple.com>

        Cleanup getOrEstablishIDBDatabaseMetadata and stub it out in WK2
        https://bugs.webkit.org/show_bug.cgi?id=124635

        Reviewed by Tim Horton.

        Stub out the message for getOrEstablishIDBDatabaseMetadata in the DatabaseProcess.

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::establishConnection):
        (WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        * Shared/SecurityOriginData.cpp:
        (WebKit::SecurityOriginData::fromSecurityOrigin):
        * Shared/SecurityOriginData.h:

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::WebIDBServerConnection):
        (WebKit::WebIDBServerConnection::deleteDatabase):
        (WebKit::WebIDBServerConnection::getOrEstablishIDBDatabaseMetadata):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:

2013-11-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Do not use deprecated callbacks in WebKitPolicyClient
        https://bugs.webkit.org/show_bug.cgi?id=124648

        Reviewed by Philippe Normand.

        Fixes compile warnings for uninitialized callbacks.

        * UIProcess/API/gtk/WebKitPolicyClient.cpp:
        (decidePolicyForNavigationAction): Add originatingFrame parameter.
        (decidePolicyForNewWindowAction): Renamed for consistency.
        (decidePolicyForResponse): Add canShowMIMEType parameter.
        (attachPolicyClientToView): Add new callbacks.

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

        Enable HTMLTemplateElement on Mac port
        https://bugs.webkit.org/show_bug.cgi?id=124637

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

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

        Add WebIDBServerConnection and DatabaseProcessIDBConnection stubs
        https://bugs.webkit.org/show_bug.cgi?id=124562

        Reviewed by Alexey Proskuryakov.

        Also remove Web/DatabaseProcessDatabaseBackend stubs, as that is no longer the abstraction layer.

        * DatabaseProcess/DatabaseToWebProcessConnection.cpp:
        (WebKit::DatabaseToWebProcessConnection::didReceiveMessage):
        (WebKit::DatabaseToWebProcessConnection::establishIDBConnection):
        * DatabaseProcess/DatabaseToWebProcessConnection.h:
        * DatabaseProcess/DatabaseToWebProcessConnection.messages.in:

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp: Renamed from Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBDatabaseBackend.cpp.
        (WebKit::DatabaseProcessIDBConnection::DatabaseProcessIDBConnection):
        (WebKit::DatabaseProcessIDBConnection::~DatabaseProcessIDBConnection):
        (WebKit::DatabaseProcessIDBConnection::establishConnection):
        (WebKit::DatabaseProcessIDBConnection::messageSenderConnection):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h: Renamed from Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBDatabaseBackend.h.
        (WebKit::DatabaseProcessIDBConnection::create):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in: Renamed from Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBDatabaseBackend.messages.in.

        * Shared/Databases/IndexedDB/IDBUtilities.cpp:
        (WebKit::uniqueDatabaseIdentifier): Modified to take two security origin arguments.
        * Shared/Databases/IndexedDB/IDBUtilities.h:

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::open):

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp: Added. Stubbed out all the pure virtual methods.
        (WebKit::generateBackendIdentifier):
        (WebKit::WebIDBServerConnection::WebIDBServerConnection):
        (WebKit::WebIDBServerConnection::~WebIDBServerConnection):
        (WebKit::WebIDBServerConnection::isClosed):
        (WebKit::WebIDBServerConnection::getOrEstablishIDBDatabaseMetadata):
        (WebKit::WebIDBServerConnection::deleteDatabase):
        (WebKit::WebIDBServerConnection::close):
        (WebKit::WebIDBServerConnection::openTransaction):
        (WebKit::WebIDBServerConnection::beginTransaction):
        (WebKit::WebIDBServerConnection::commitTransaction):
        (WebKit::WebIDBServerConnection::resetTransaction):
        (WebKit::WebIDBServerConnection::rollbackTransaction):
        (WebKit::WebIDBServerConnection::setIndexKeys):
        (WebKit::WebIDBServerConnection::createObjectStore):
        (WebKit::WebIDBServerConnection::createIndex):
        (WebKit::WebIDBServerConnection::deleteIndex):
        (WebKit::WebIDBServerConnection::get):
        (WebKit::WebIDBServerConnection::put):
        (WebKit::WebIDBServerConnection::openCursor):
        (WebKit::WebIDBServerConnection::count):
        (WebKit::WebIDBServerConnection::deleteRange):
        (WebKit::WebIDBServerConnection::clearObjectStore):
        (WebKit::WebIDBServerConnection::deleteObjectStore):
        (WebKit::WebIDBServerConnection::changeDatabaseVersion):
        (WebKit::WebIDBServerConnection::cursorAdvance):
        (WebKit::WebIDBServerConnection::cursorIterate):
        (WebKit::WebIDBServerConnection::cursorPrefetchIteration):
        (WebKit::WebIDBServerConnection::cursorPrefetchReset):
        (WebKit::WebIDBServerConnection::messageSenderConnection):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h: Added.

        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.cpp: Removed.
        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h: Removed.

        * WebProcess/Databases/WebToDatabaseProcessConnection.cpp:

        * DerivedSources.make:
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-19  Michał Pakuła vel Rutka  <m.pakula@samsung.com>

        Unreviewed EFL and GTK build fix attempt after r159507

        * CMakeLists.txt: Changed Platform/CoreIPC/DataReference.cpp to Platform/IPC/DataReference.cpp
        * GNUmakefile.list.am: Ditto

2013-11-19  Anders Carlsson  <andersca@apple.com>

        Move DataReference to Platform/IPC.

        * Platform/IPC/DataReference.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/DataReference.cpp.
        * Platform/IPC/DataReference.h: Renamed from Source/WebKit2/Platform/CoreIPC/DataReference.h.
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-19  Anders Carlsson  <andersca@apple.com>

        Add and call PageLoadState::reset
        https://bugs.webkit.org/show_bug.cgi?id=124591

        Reviewed by Dan Bernstein.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::reset):
        * UIProcess/PageLoadState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::processDidCrash):

2013-11-18  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Initialize efreet before getting directories
        https://bugs.webkit.org/show_bug.cgi?id=124560

        Reviewed by Gyuyoung Kim.

        efreet is used to get several directories including home dierectory since
        r123731, but it does not call efreet_init/efreet_shutdown explicitly.

        * UIProcess/API/efl/ewk_main.cpp: Call efreet_init()/efreet_shutdown() explicitly.
        (ewk_init):
        (ewk_shutdown):

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.

        * WebKit2.xcodeproj/project.pbxproj:

2013-11-18  Anders Carlsson  <andersca@apple.com>

        Let's try this again.

        * UIProcess/PageLoadState.cpp:

2013-11-18  Anders Carlsson  <andersca@apple.com>

        Disable assertions in PageLoadState.cpp for now.

        * UIProcess/PageLoadState.cpp:

2013-11-18  Anders Carlsson  <andersca@apple.com>

        TestWebKitAPI crashes when running under GuardMalloc
        https://bugs.webkit.org/show_bug.cgi?id=124546

        Reviewed by Tim Horton.

        * UIProcess/Downloads/DownloadProxyMap.cpp:
        (WebKit::DownloadProxyMap::downloadFinished):
        Grab the download ID before removing the DownloadProxy from the map.

2013-11-18  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix attempt on GTK and EFL port after r159461

        * CMakeLists.txt: Added APINavigationData.cpp and removed WebNavigationData.cpp
        * GNUmakefile.list.am: Ditto.

2013-11-18  Anders Carlsson  <andersca@apple.com>

        Rename WebNavigationData to API::NavigationData
        https://bugs.webkit.org/show_bug.cgi?id=124542

        Reviewed by Dan Bernstein.

        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/API/C/WKNavigationDataRef.cpp:
        (WKNavigationDataGetTypeID):
        * UIProcess/API/Cocoa/WKNavigationData.mm:
        (-[WKNavigationData dealloc]):
        (-[WKNavigationData title]):
        (-[WKNavigationData originalRequest]):
        (-[WKNavigationData destinationURL]):
        (-[WKNavigationData response]):
        * UIProcess/API/Cocoa/WKNavigationDataInternal.h:
        (WebKit::wrapper):
        * UIProcess/API/mac/WKProcessGroup.mm:
        * UIProcess/APINavigationData.cpp: Renamed from Source/WebKit2/UIProcess/WebNavigationData.cpp.
        (API::NavigationData::NavigationData):
        (API::NavigationData::~NavigationData):
        * UIProcess/APINavigationData.h: Renamed from Source/WebKit2/UIProcess/WebNavigationData.h.
        (API::NavigationData::create):
        (API::NavigationData::title):
        (API::NavigationData::url):
        (API::NavigationData::originalRequest):
        (API::NavigationData::response):
        * UIProcess/WebHistoryClient.cpp:
        (WebKit::WebHistoryClient::didNavigateWithNavigationData):
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-18  David Hyatt  <hyatt@apple.com>

        Add a quirk to not respect center text-align when positioning

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

        Reviewed by Simon Fraser.

        Added fast/block/legacy-text-align-position-quirk.html

        * Shared/WebPreferencesStore.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesUseLegacyTextAlignPositionedElementBehavior):
        (WKPreferencesSetUseLegacyTextAlignPositionedElementBehavior):
        * UIProcess/API/C/WKPreferencesPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2013-11-18  Anders Carlsson  <andersca@apple.com>

        Add State to PageLoadState
        https://bugs.webkit.org/show_bug.cgi?id=124538

        Reviewed by Tim Horton.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::PageLoadState):
        (WebKit::PageLoadState::didStartProvisionalLoad):
        (WebKit::PageLoadState::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::PageLoadState::didFailProvisionalLoad):
        (WebKit::PageLoadState::didCommitLoad):
        (WebKit::PageLoadState::didFinishLoad):
        (WebKit::PageLoadState::didSameDocumentNavigation):
        * UIProcess/PageLoadState.h:

2013-11-18  Anders Carlsson  <andersca@apple.com>

        The PageLoadState object should keep track of the current URL
        https://bugs.webkit.org/show_bug.cgi?id=124536

        Reviewed by Dan Bernstein.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::didCommitLoad):
        (WebKit::PageLoadState::didFinishLoad):
        (WebKit::PageLoadState::didFailLoad):
        (WebKit::PageLoadState::didSameDocumentNavigation):
        * UIProcess/PageLoadState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):

2013-11-18  Csaba Osztrogonác  <ossy@webkit.org>

        URTBF after r159444.

        * GNUmakefile.list.am:

2013-11-18  Anders Carlsson  <andersca@apple.com>

        PageLoadState should keep track of the provisional URL
        https://bugs.webkit.org/show_bug.cgi?id=124535

        Reviewed by Dan Bernstein.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::didStartProvisionalLoad):
        (WebKit::PageLoadState::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::PageLoadState::didCommitLoad):
        * UIProcess/PageLoadState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didCommitLoadForFrame):

2013-11-18  Anders Carlsson  <andersca@apple.com>

        Move m_pendingAPIRequestURL to PageLoadState
        https://bugs.webkit.org/show_bug.cgi?id=124531

        Reviewed by Tim Horton.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageCopyPendingAPIRequestURL):
        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::pendingAPIRequestURL):
        (WebKit::PageLoadState::setPendingAPIRequestURL):
        (WebKit::PageLoadState::clearPendingAPIRequestURL):
        * UIProcess/PageLoadState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadURL):
        (WebKit::WebPageProxy::loadURLRequest):
        (WebKit::WebPageProxy::reload):
        (WebKit::WebPageProxy::goForward):
        (WebKit::WebPageProxy::goBack):
        (WebKit::WebPageProxy::goToBackForwardItem):
        (WebKit::WebPageProxy::activeURL):
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::estimatedProgress):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::pageLoadState):
        * UIProcess/cf/WebPageProxyCF.cpp:
        (WebKit::WebPageProxy::sessionStateData):
        (WebKit::WebPageProxy::restoreFromSessionStateData):

2013-11-18  Michał Pakuła vel Rutka  <m.pakula@samsung.com>

        Unreviewed EFL build fix after r159444

        * CMakeLists.txt: Added PageLoadState.cpp.

2013-11-18  Anders Carlsson  <andersca@apple.com>

        Add PageLoadState class
        https://bugs.webkit.org/show_bug.cgi?id=124528

        Reviewed by Dan Bernstein.

        Trying to use the main frame load state as the page load state was a bad idea,
        add a new PageLoadState and use it instead. Ultimately the long term plan is to
        transition away from FrameLoadState entirely.

        * UIProcess/PageLoadState.cpp: Added.
        (WebKit::PageLoadState::PageLoadState):
        (WebKit::PageLoadState::~PageLoadState):
        (WebKit::PageLoadState::didStartProvisionalLoad):
        * UIProcess/PageLoadState.h: Added.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        * UIProcess/WebPageProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-14  David Farler  <dfarler@apple.com>

        [ASAN] WebKit2: Remove calls to dead DownloadAuthenticationClient code
        https://bugs.webkit.org/show_bug.cgi?id=124367

        Reviewed by Alexey Proskuryakov.

        * Shared/Downloads/DownloadAuthenticationClient.cpp:
        (WebKit::DownloadAuthenticationClient::receivedCredential):
        (WebKit::DownloadAuthenticationClient::receivedRequestToContinueWithoutCredential):
        (WebKit::DownloadAuthenticationClient::receivedCancellation):
        Remove calls to nowhere:
        WebKit::Download::cancelAuthenticationChallenge(WebCore::AuthenticationChallenge const&)
        WebKit::Download::continueWithoutCredential(WebCore::AuthenticationChallenge const&)
        WebKit::Download::useCredential(WebCore::AuthenticationChallenge const&, WebCore::Credential const&)

2013-11-18  Anders Carlsson  <andersca@apple.com>

        Use a strong enum for frame load states
        https://bugs.webkit.org/show_bug.cgi?id=124524

        Reviewed by Dan Bernstein.

        * UIProcess/API/C/WKFrame.cpp:
        (WKFrameGetFrameLoadState):
        * UIProcess/FrameLoadState.cpp:
        (WebKit::FrameLoadState::FrameLoadState):
        (WebKit::FrameLoadState::didStartProvisionalLoad):
        (WebKit::FrameLoadState::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::FrameLoadState::didFailProvisionalLoad):
        (WebKit::FrameLoadState::didCommitLoad):
        (WebKit::FrameLoadState::didFinishLoad):
        (WebKit::FrameLoadState::didFailLoad):
        * UIProcess/FrameLoadState.h:
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::activeURL):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::loadStateAtProcessExit):

2013-11-18  Anders Carlsson  <andersca@apple.com>

        Remove unnecessary COMPILER(CLANG) #ifdefs in Mac-only code
        https://bugs.webkit.org/show_bug.cgi?id=124523

        Reviewed by Dan Bernstein.

        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::beginModal):
        * PluginProcess/mac/PluginProcessShim.mm:
        * Shared/Plugins/Netscape/NetscapePluginModule.cpp:
        (WebKit::NetscapePluginModule::tryLoad):
        * Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::getPluginProcessSerialNumber):
        (WebKit::PluginProcessProxy::makePluginProcessTheFrontProcess):
        (WebKit::PluginProcessProxy::makeUIProcessTheFrontProcess):
        (WebKit::PluginProcessProxy::exitFullscreen):

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 EWebKit2Config.cmake and EWebKit2ConfigVersion.cmake
        * efl/EWebKit2Config.cmake.in: Added.
        * efl/EWebKit2ConfigVersion.cmake.in: Added.

2013-11-18  Eunmi Lee  <eunmi15.lee@samsung.com>

        [EFL][WK2] Process single tap using mouse move, down and up event.
        https://bugs.webkit.org/show_bug.cgi?id=106864

        Reviewed by Christophe Dumez.

        Send mouse events to the web process to perform the clicking when
        single tap gesture is recognized.
        Additionally, add WKViewSendMouseDownEvent(), WKViewSendMouseUpEvent()
        and WKViewSendMouseMoveEvent() to avoid using WK2 internals in the EFL
        API implementation.

        * UIProcess/API/C/efl/WKViewEfl.cpp:
        (WKViewSendMouseDownEvent):
        (WKViewSendMouseUpEvent):
        (WKViewSendMouseMoveEvent):
        * UIProcess/API/C/efl/WKViewEfl.h:
        * UIProcess/API/efl/GestureRecognizer.cpp:
        (WebKit::GestureHandler::handleSingleTap):
        * UIProcess/efl/WebViewEfl.cpp:
        (WebKit::WebViewEfl::sendMouseEvent):
        * UIProcess/efl/WebViewEfl.h:

2013-11-17  Dan Bernstein  <mitz@apple.com>

        Try to fix the EFL build.

        * UIProcess/efl/PagePolicyClientEfl.cpp:
        (WebKit::PagePolicyClientEfl::decidePolicyForResponseCallback): No need to call
        WKFrameCanShowMIMEType now that this information is passed in as a parameter.

2013-11-16  Dan Bernstein  <mitz@apple.com>

        No way for policy client to determine if a the response’s MIME type can be shown
        https://bugs.webkit.org/show_bug.cgi?id=124445

        Reviewed by Sam Weinig.

        * Platform/CoreIPC/HandleMessage.h:
        (CoreIPC::callMemberFunction): Added a fifth message parameter to this template.

        * UIProcess/API/C/WKPage.h: Added a canShowMIMEType parameter to
        WKPageDecidePolicyForResponseCallback and deprecated the old version.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (setUpPagePolicyClient): Include whether the response MIME type can be shown under a new key
        in the action information dictionary.
        * UIProcess/API/mac/WKBrowsingContextPolicyDelegate.h: Declared
        WKActionCanShowMIMETypeKey.

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::createInspectorPage): Updated for changes in the policy client.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForResponse): Added canShowMIMEType parameter, which is
        passed to the policy client.
        (WebKit::WebPageProxy::decidePolicyForResponseSync): Added canShowMIMEType parameter, which
        is passed to the above function.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in: Added canShowMIMEType paramter to
        DecidePolicyForResponseSync.

        * UIProcess/WebPolicyClient.cpp:
        (WebKit::WebPolicyClient::decidePolicyForResponse): Added canShowMIMEType parameter, which
        is passed to the client callback.
        * UIProcess/WebPolicyClient.h:

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse): Determine if the response
        MIME type can be shown and pass this information along in the message to the UI process.

2013-11-15  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed EFL build fix after r159358.

        * UIProcess/efl/PagePolicyClientEfl.cpp:
        (WebKit::PagePolicyClientEfl::decidePolicyForNavigationAction):
        * UIProcess/efl/PagePolicyClientEfl.h:

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

        Let IDBDatabaseBackend create IDBTransactionBackend's directly
        https://bugs.webkit.org/show_bug.cgi?id=124438

        Reviewed by Beth Dakin.

        Remove maybeCreateTransactionBackend():
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

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

        Remove last vestiges of IDBBackingStore* from IDBTransactionBackend.
        https://bugs.webkit.org/show_bug.cgi?id=124436

        Reviewed by Tim Horton.

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp: Removed createCursorBackend.
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

2013-11-15  Dan Bernstein  <mitz@apple.com>

        Give the policy client the originating frame of a navigation action
        https://bugs.webkit.org/show_bug.cgi?id=124431

        Reviewed by Anders Carlsson.

        * Platform/CoreIPC/HandleMessage.h:
        (CoreIPC::callMemberFunction): Added a seventh message parameter to this template.

        * Shared/APIClientTraits.cpp: Defined API traits for WKPagePolicyClient, which now has two
        versions.
        * Shared/APIClientTraits.h: Declared APIClientTraits<WKPagePolicyClient>.

        * UIProcess/API/C/WKPage.h: Added an originatingFrame parameter to
        WKPageDecidePolicyForNavigationActionCallback and deprecated the old version. Bumped the
        policy client version to 1.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (setUpPagePolicyClient): Include the originating frame’s URL under a new key in the
        action information dictionary.
        * UIProcess/API/mac/WKBrowsingContextPolicyDelegate.h: Declared
        WKActionOriginatingFrameURLKey.

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::decidePolicyForNavigationAction): Added originatingFrame parameter.
        (WebKit::WebInspectorProxy::createInspectorPage): Updated to the new version of the policy
        client interface.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction): Added originatingFrameID parameter
        and passing the originating frame to the policy client.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in: Added originatingFrameID paremeter to
        DecidePolicyForNavigationAction.

        * UIProcess/WebPolicyClient.cpp:
        (WebKit::WebPolicyClient::decidePolicyForNavigationAction): Added originatingFrame
        parameter, which is passed to the client callback.
        * UIProcess/WebPolicyClient.h:

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Determine the
        originating frame for link activation and form submission actions and send its ID in the
        DecidePolicyForNavigationAction message.

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

        Move execution of IDBTransactionBackendOperations to the IDBServerConnection
        https://bugs.webkit.org/show_bug.cgi?id=124385

        Reviewed by Tim Horton.

        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h:

2013-11-15  Peter Molnar  <pmolnar.u-szeged@partner.samsung.com>

        Fixed incorrectly placed NETWORK_PROCESS guard in NetworkConnectionToWebProcess.cpp
        https://bugs.webkit.org/show_bug.cgi?id=124398

        Reviewed by Brady Eidson.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:

2013-11-15  Tibor Meszaros  <mtibor@inf.u-szeged.hu>

        Cleanup the build from unused parameters in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=124201

        Reviewed by Darin Adler.

        * Shared/Plugins/Netscape/PluginInformation.cpp:
        (WebKit::getPluginModuleInformation):
        * UIProcess/API/C/WKBatteryManager.cpp:
        (WKBatteryManagerSetProvider):
        (WKBatteryManagerProviderDidChangeBatteryStatus):
        (WKBatteryManagerProviderUpdateBatteryStatus):
        * UIProcess/API/C/WKBatteryStatus.cpp:
        (WKBatteryStatusCreate):
        * UIProcess/API/C/WKColorPickerResultListener.cpp:
        (WKColorPickerResultListenerSetColor):
        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetBatteryManager):
        (WKContextGetDatabaseManager):
        (WKContextGetNetworkInfoManager):
        * UIProcess/API/C/WKDatabaseManager.cpp:
        (WKDatabaseManagerSetClient):
        (WKDatabaseManagerGetDatabasesByOrigin):
        (WKDatabaseManagerGetDatabaseOrigins):
        (WKDatabaseManagerDeleteDatabasesWithNameForOrigin):
        (WKDatabaseManagerDeleteDatabasesForOrigin):
        (WKDatabaseManagerDeleteAllDatabases):
        (WKDatabaseManagerSetQuotaForOrigin):
        * UIProcess/API/C/WKNetworkInfo.cpp:
        (WKNetworkInfoCreate):
        * UIProcess/API/C/WKNetworkInfoManager.cpp:
        (WKNetworkInfoManagerSetProvider):
        (WKNetworkInfoManagerProviderDidChangeNetworkInformation):
        * UIProcess/API/C/WKOpenPanelParameters.cpp:
        (WKOpenPanelParametersCopyCapture):
        * UIProcess/API/C/WKVibration.cpp:
        (WKVibrationSetProvider):
        * UIProcess/API/efl/EwkView.cpp:
        (EwkView::createNewPage):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setVisibilityState):
        (WebKit::WebPageProxy::unavailablePluginButtonClicked):
        * UIProcess/efl/ViewClientEfl.cpp:
        (WebKit::ViewClientEfl::didChangeContentsPosition):
        (WebKit::ViewClientEfl::didRenderFrame):
        (WebKit::ViewClientEfl::didChangeViewportAttributes):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setDatabaseQuota):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::createWindow):

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

        [Cocoa] WKBrowsingContextController's policy client implementation over-releases WKURLRequests and WKURLResponses
        https://bugs.webkit.org/show_bug.cgi?id=124386

        Reviewed by Sam Weinig.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (setUpPagePolicyClient): Changed to release the Cocoa objects we copy out of the WK objects
        passed into the client callbacks, but not the WK objects themselves, which are not owned by
        the callbacks.

2013-11-14  Andy Estes  <aestes@apple.com>

        Replace calls to deprecated CFPropertyList functions in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=124384

        Reviewed by Anders Carlsson.

        * UIProcess/cf/WebPageProxyCF.cpp:
        (WebKit::WebPageProxy::sessionStateData): Replaced CFPropertyListWriteToStream() with CFPropertyListWrite().
        (WebKit::WebPageProxy::restoreFromSessionStateData): Replaced CFPropertyListCreateFromXMLData() with CFPropertyListCreateWithData().

2013-11-14  Gergo Balogh  <geryxyz@inf.u-szeged.hu>

        generate-message-receiver.py can't handle nested #ifs
        https://bugs.webkit.org/show_bug.cgi?id=121877

        Reviewed by Darin Adler.

        parser.py was modifieded to collect and combine conditions of nested #ifs.
        messages_unittest.py extended to check these modifications.

        * Scripts/webkit2/messages_unittest.py:
        (LoadSomething):
        (std):
        (AddEvent):
        (LoadSomethingElse):
        * Scripts/webkit2/parser.py:
        (combine_condition):
        (bracket_if_needed):
        (parse):

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

        [Cocoa] WKAction keys are not exported
        https://bugs.webkit.org/show_bug.cgi?id=124378

        Reviewed by Anders Carlsson.

        * UIProcess/API/mac/WKBrowsingContextController.mm: Made the keys constant pointers.
        * UIProcess/API/mac/WKBrowsingContextPolicyDelegate.h: Exported the keys.

2013-11-14  Ryuan Choi  <ryuan.choi@samsung.com>

        [WK2] Move Coordinated Graphics related code out of DrawingAreaProxy
        https://bugs.webkit.org/show_bug.cgi?id=124328

        Reviewed by Andreas Kling.

        Refactored for DrawingAreaProxy not to include Coordinated Graphics specific code.

        * PlatformEfl.cmake:
        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.cpp: Moved from DrawingAreaProxy.cpp.
        (WebKit::CoordinatedDrawingAreaProxy::updateViewport):
        (WebKit::CoordinatedDrawingAreaProxy::contentsRect):
        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.h: Ditto.
        (WebKit::CoordinatedDrawingAreaProxy::coordinatedLayerTreeHostProxy): Refactored to return reference instead of pointer.
        (WebKit::CoordinatedDrawingAreaProxy::viewportVisibleRect):
        (WebKit::CoordinatedDrawingAreaProxy::page):
        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:
        (WebKit::CoordinatedLayerTreeHostProxy::CoordinatedLayerTreeHostProxy):
        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:
        * UIProcess/CoordinatedGraphics/PageViewportController.cpp:
        Renamed from Source/WebKit2/UIProcess/PageViewportController.cpp because it depends on Coordinated Graphics.
        (WebKit::fuzzyCompare):
        (WebKit::PageViewportController::PageViewportController):
        (WebKit::PageViewportController::innerBoundedViewportScale):
        (WebKit::PageViewportController::outerBoundedViewportScale):
        (WebKit::PageViewportController::deviceScaleFactor):
        (WebKit::isIntegral):
        (WebKit::PageViewportController::pixelAlignedFloatPoint):
        (WebKit::PageViewportController::boundContentsPositionAtScale):
        (WebKit::PageViewportController::boundContentsPosition):
        (WebKit::PageViewportController::didCommitLoad):
        (WebKit::PageViewportController::didChangeContentsSize):
        (WebKit::PageViewportController::didRenderFrame):
        (WebKit::PageViewportController::pageTransitionViewportReady):
        (WebKit::PageViewportController::pageDidRequestScroll):
        (WebKit::PageViewportController::didChangeViewportSize):
        (WebKit::PageViewportController::didChangeContentsVisibility):
        (WebKit::PageViewportController::syncVisibleContents): Added cast to access CoordinatedDrawingAreaProxy method.
        (WebKit::PageViewportController::didChangeViewportAttributes):
        (WebKit::PageViewportController::visibleContentsSize):
        (WebKit::PageViewportController::applyScaleAfterRenderingContents):
        (WebKit::PageViewportController::applyPositionAfterRenderingContents):
        (WebKit::PageViewportController::updateMinimumScaleToFit):
        * UIProcess/CoordinatedGraphics/PageViewportController.h:
        Renamed from Source/WebKit2/UIProcess/PageViewportController.cpp because it depends on Coordinated Graphics.
        (WebKit::PageViewportController::~PageViewportController):
        (WebKit::PageViewportController::hadUserInteraction):
        (WebKit::PageViewportController::allowsUserScaling):
        (WebKit::PageViewportController::contentsLayoutSize):
        (WebKit::PageViewportController::minimumScale):
        (WebKit::PageViewportController::maximumScale):
        (WebKit::PageViewportController::currentScale):
        (WebKit::PageViewportController::setHadUserInteraction):
        * UIProcess/CoordinatedGraphics/WebView.cpp: Added some casts to access CoordinatedDrawingAreaProxy methods.
        (WebKit::WebView::coordinatedGraphicsScene): Simplified code using reference.
        (WebKit::WebView::updateViewportSize):
        * UIProcess/DrawingAreaProxy.cpp: Removed Coordinated Graphics macro and related codes.
        * UIProcess/DrawingAreaProxy.h: Ditto.

2013-11-13  Nick Diego Yamane  <nick.yamane@openbossa.org>

        Rename some ImmutableArray leftovers
        https://bugs.webkit.org/show_bug.cgi?id=124320

        Reviewed by Anders Carlsson.

        ImmutableArray has been renamed to API::Array in r159234.

        * Shared/API/c/WKContextMenuItem.cpp:
        * Shared/WebContextMenuItem.cpp:
        * Shared/WebContextMenuItem.h:
        * UIProcess/API/C/WKBackForwardListRef.cpp:
        * UIProcess/API/Cocoa/WKBackForwardList.mm:
        * UIProcess/API/gtk/WebKitBackForwardList.cpp:
        * UIProcess/API/gtk/WebKitWebViewGroup.cpp:
        * UIProcess/WebBackForwardList.cpp:
        * UIProcess/WebBackForwardList.h:

2013-11-13  Dan Bernstein  <mitz@apple.com>

        REGRESSION (r159263): caused 50+ crashes on all mac webkit2 bots
        https://bugs.webkit.org/show_bug.cgi?id=124327

        Reviewed by Tim Horton.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject): Allocate extra memory for the WebError inside the WKNSError.

2013-11-13  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Add WKNSError
        https://bugs.webkit.org/show_bug.cgi?id=124295

        Reviewed by Anders Carlsson.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject): Allocate a WKNSError if the object is a WebError.
        * Shared/Cocoa/WKNSError.h: Added.
        (WebKit::wrapper): Added. Returns a WebError’s wrapper as an NSError.
        * Shared/Cocoa/WKNSError.mm: Added.
        (-[WKNSError _web_createTarget]): Override this WKObject method to return a copy of the
        underlying CFError.
        (-[WKNSError copyWithZone:]): Retains self.
        * WebKit2.xcodeproj/project.pbxproj: Added new files.

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

        Tweak the property syntax after https://bugs.webkit.org/show_bug.cgi?id=124317

        Reviewed by Dan Bernstein.

        * UIProcess/API/mac/WKViewPrivate.h:

2013-11-13  Anders Carlsson  <andersca@apple.com>

        Move more state tracking to FrameLoadState
        https://bugs.webkit.org/show_bug.cgi?id=124316

        Reviewed by Simon Fraser.

        * UIProcess/FrameLoadState.cpp:
        (WebKit::FrameLoadState::didStartProvisionalLoad):
        (WebKit::FrameLoadState::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::FrameLoadState::didFailProvisionalLoad):
        (WebKit::FrameLoadState::didCommitLoad):
        (WebKit::FrameLoadState::didFinishLoad):
        (WebKit::FrameLoadState::didFailLoad):
        (WebKit::FrameLoadState::didSameDocumentNotification):
        (WebKit::FrameLoadState::setUnreachableURL):
        * UIProcess/FrameLoadState.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::didCommitLoad):
        (WebKit::WebFrameProxy::didFinishLoad):
        (WebKit::WebFrameProxy::didFailLoad):
        (WebKit::WebFrameProxy::didSameDocumentNavigation):
        (WebKit::WebFrameProxy::setUnreachableURL):

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

        Expose a private flag on WKView to indicate whether it's using a remote layer tree drawing area
        https://bugs.webkit.org/show_bug.cgi?id=124317

        Reviewed by Anders Carlsson.
        
        Expose isUsingUISideCompositing on WKView in the private header,
        which returns YES if the view is using a DrawingAreaTypeRemoteLayerTree.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView isUsingUISideCompositing]):
        * UIProcess/API/mac/WKViewPrivate.h:

2013-11-13  Csaba Osztrogonác  <ossy@webkit.org>

        Maybe the last attempt to fix the GTK build.

        * UIProcess/API/gtk/WebKitBackForwardListPrivate.h:
        * UIProcess/API/gtk/WebKitContextMenuPrivate.h:

2013-11-13  Csaba Osztrogonác  <ossy@webkit.org>

        One more attempt to fix the GTK build.

        * UIProcess/API/gtk/WebKitWebViewPrivate.h:

2013-11-13  Anders Carlsson  <andersca@apple.com>

        Plug-in processes hang around for 10 sec after Safari quits
        https://bugs.webkit.org/show_bug.cgi?id=124314
        <rdar://problem/15460613>

        Reviewed by Simon Fraser.

        Call stopRunLoop instead of instead of RunLoop::stop().

        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::didClose):

2013-11-13  Csaba Osztrogonác  <ossy@webkit.org>

        URTBF after r159234.

        * CMakeLists.txt:
        * GNUmakefile.list.am:
        * Shared/efl/WebEventFactory.cpp:
        (WebKit::WebEventFactory::createWebTouchEvent):
        * UIProcess/API/C/WKGrammarDetail.cpp:
        * UIProcess/API/C/efl/WKEventEfl.cpp:
        * UIProcess/API/gtk/WebKitBackForwardList.cpp:
        (webkitBackForwardListCreateList):
        (webkitBackForwardListChanged):
        (webkit_back_forward_list_get_back_list_with_limit):
        (webkit_back_forward_list_get_forward_list_with_limit):
        * UIProcess/API/gtk/WebKitBackForwardListPrivate.h:
        * UIProcess/API/gtk/WebKitContextMenu.cpp:
        (webkitContextMenuCreate):
        * UIProcess/API/gtk/WebKitContextMenuItem.cpp:
        (webkitContextMenuItemCreate):
        * UIProcess/API/gtk/WebKitContextMenuPrivate.h:
        * UIProcess/API/gtk/WebKitCookieManager.cpp:
        (webkitCookieManagerGetDomainsWithCookiesCallback):
        * UIProcess/API/gtk/WebKitFileChooserRequest.cpp:
        (webkit_file_chooser_request_get_mime_types):
        (webkit_file_chooser_request_get_mime_types_filter):
        (webkit_file_chooser_request_select_files):
        (webkit_file_chooser_request_get_selected_files):
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewPopulateContextMenu):
        * UIProcess/API/gtk/WebKitWebViewGroup.cpp:
        (toImmutableArray):
        (webkit_web_view_group_add_user_style_sheet):
        * UIProcess/API/gtk/WebKitWebViewPrivate.h:
        * UIProcess/WebGrammarDetail.cpp:
        (WebKit::WebGrammarDetail::create):
        (WebKit::WebGrammarDetail::WebGrammarDetail):
        (WebKit::WebGrammarDetail::guesses):
        * UIProcess/WebGrammarDetail.h:
        * UIProcess/WebTextCheckerClient.cpp:
        (WebKit::WebTextCheckerClient::checkGrammarOfString):
        (WebKit::WebTextCheckerClient::guessesForWord):
        * UIProcess/efl/WebUIPopupMenuClient.cpp:
        (WebUIPopupMenuClient::showPopupMenu):

2013-11-13  Anders Carlsson  <andersca@apple.com>

        Fix build.

        Not sure why these weren't added.

        * Shared/APIArray.cpp: Added.
        * Shared/APIArray.h: Added.

2013-11-13  Anders Carlsson  <andersca@apple.com>

        Rename ImmutableArray to API::Array
        https://bugs.webkit.org/show_bug.cgi?id=124307

        Reviewed by Andreas Kling.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (ensureObjectStream):
        (-[WKRemoteObjectDecoder initWithInterface:rootObjectDictionary:WebKit::]):
        * Shared/API/c/WKArray.cpp:
        (WKArrayGetTypeID):
        (WKArrayCreate):
        (WKArrayCreateAdoptingValues):
        * Shared/API/c/WKContextMenuItem.cpp:
        * Shared/API/c/WKDictionary.cpp:
        (WKDictionaryCopyKeys):
        * Shared/API/c/WKMutableArray.cpp:
        (WKMutableArrayCreate):
        * Shared/API/c/WKRenderObject.cpp:
        (WKRenderObjectGetChildren):
        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toImpl):
        * Shared/API/c/mac/WKWebArchive.cpp:
        (WKWebArchiveCopySubresources):
        (WKWebArchiveCopySubframeArchives):
        * Shared/APIArray.cpp: Renamed from Source/WebKit2/Shared/ImmutableArray.cpp.
        (API::Array::create):
        (API::Array::createStringArray):
        (API::Array::Array):
        (API::Array::~Array):
        * Shared/APIArray.h: Renamed from Source/WebKit2/Shared/ImmutableArray.h.
        * Shared/Cocoa/WKNSArray.h:
        (wrapper):
        * Shared/Cocoa/WKNSArray.mm:
        (-[WKNSArray dealloc]):
        (-[WKNSArray count]):
        (-[WKNSArray objectAtIndex:]):
        (-[WKNSArray API::]):
        * Shared/ImmutableDictionary.cpp:
        (WebKit::ImmutableDictionary::keys):
        * Shared/ImmutableDictionary.h:
        * Shared/SecurityOriginData.cpp:
        (WebKit::performAPICallbackWithSecurityOriginDataVector):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebArchive.cpp:
        (WebKit::WebArchive::create):
        (WebKit::WebArchive::WebArchive):
        (WebKit::WebArchive::subresources):
        (WebKit::WebArchive::subframeArchives):
        * Shared/WebArchive.h:
        * Shared/WebContextMenuItem.cpp:
        (WebKit::WebContextMenuItem::create):
        (WebKit::WebContextMenuItem::submenuItemsAsImmutableArray):
        * Shared/WebContextMenuItem.h:
        * Shared/WebOpenPanelParameters.cpp:
        (WebKit::WebOpenPanelParameters::acceptMIMETypes):
        (WebKit::WebOpenPanelParameters::selectedFileNames):
        * Shared/WebOpenPanelParameters.h:
        * Shared/WebRenderLayer.cpp:
        (WebKit::WebRenderLayer::create):
        (WebKit::WebRenderLayer::createArrayFromLayerList):
        (WebKit::WebRenderLayer::WebRenderLayer):
        * Shared/WebRenderLayer.h:
        (WebKit::WebRenderLayer::negativeZOrderList):
        (WebKit::WebRenderLayer::normalFlowList):
        (WebKit::WebRenderLayer::positiveZOrderList):
        * Shared/WebRenderObject.cpp:
        (WebKit::WebRenderObject::create):
        (WebKit::WebRenderObject::WebRenderObject):
        (WebKit::WebRenderObject::~WebRenderObject):
        * Shared/WebRenderObject.h:
        (WebKit::WebRenderObject::children):
        (WebKit::WebRenderObject::elementClassNames):
        * UIProcess/API/C/WKBackForwardListRef.cpp:
        * UIProcess/API/C/WKOpenPanelParameters.cpp:
        * UIProcess/API/C/WKPage.cpp:
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextGetInfoForInstalledPlugIns):
        * UIProcess/API/Cocoa/WKBackForwardList.mm:
        (-[WKBackForwardList backListWithLimit:]):
        (-[WKBackForwardList forwardListWithLimit:]):
        * UIProcess/API/mac/WKBrowsingContextGroup.mm:
        (createWKArray):
        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
        (WebKit::WebNotificationManagerProxy::populateCopyOfNotificationPermissions):
        (WebKit::WebNotificationManagerProxy::providerDidCloseNotifications):
        (WebKit::WebNotificationManagerProxy::providerDidRemoveNotificationPolicies):
        * UIProcess/Notifications/WebNotificationManagerProxy.h:
        * UIProcess/Notifications/WebNotificationProvider.cpp:
        (WebKit::WebNotificationProvider::clearNotifications):
        * UIProcess/Plugins/PlugInAutoStartProvider.cpp:
        (WebKit::PlugInAutoStartProvider::setAutoStartOriginsArray):
        * UIProcess/Plugins/PlugInAutoStartProvider.h:
        * UIProcess/Plugins/WebPluginSiteDataManager.cpp:
        (WebKit::WebPluginSiteDataManager::didGetSitesWithData):
        (WebKit::WebPluginSiteDataManager::clearSiteData):
        * UIProcess/Plugins/WebPluginSiteDataManager.h:
        * UIProcess/StatisticsRequest.cpp:
        (WebKit::StatisticsRequest::completedRequest):
        * UIProcess/WebApplicationCacheManagerProxy.h:
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::backListAsImmutableArrayWithLimit):
        (WebKit::WebBackForwardList::forwardListAsImmutableArrayWithLimit):
        * UIProcess/WebBackForwardList.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::setPlugInAutoStartOrigins):
        (WebKit::WebContext::pluginInfoStoreDidLoadPlugins):
        * UIProcess/WebContext.h:
        * UIProcess/WebContextClient.cpp:
        (WebKit::WebContextClient::plugInInformationBecameAvailable):
        * UIProcess/WebContextClient.h:
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::didGetHostnamesWithCookies):
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebDatabaseManagerProxy.cpp:
        (WebKit::WebDatabaseManagerProxy::didGetDatabasesByOrigin):
        (WebKit::WebDatabaseManagerProxy::didGetDatabaseOrigins):
        * UIProcess/WebFindClient.cpp:
        (WebKit::WebFindMatchesClient::didFindStringMatches):
        * UIProcess/WebFindClient.h:
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebKeyValueStorageManager.cpp:
        (WebKit::didGetKeyValueStorageOrigins):
        * UIProcess/WebKeyValueStorageManager.h:
        * UIProcess/WebLoaderClient.cpp:
        (WebKit::WebLoaderClient::didChangeBackForwardList):
        * UIProcess/WebMediaCacheManagerProxy.cpp:
        (WebKit::WebMediaCacheManagerProxy::didGetHostnamesWithMediaCache):
        * UIProcess/WebMediaCacheManagerProxy.h:
        * UIProcess/WebOpenPanelResultListenerProxy.cpp:
        (WebKit::WebOpenPanelResultListenerProxy::chooseFiles):
        * UIProcess/WebOpenPanelResultListenerProxy.h:
        * UIProcess/WebOriginDataManagerProxy.h:
        * UIProcess/WebPageContextMenuClient.cpp:
        (WebKit::WebPageContextMenuClient::getContextMenuFromProposedMenu):
        (WebKit::WebPageContextMenuClient::showContextMenu):
        * UIProcess/WebPageGroup.cpp:
        (WebKit::toStringVector):
        (WebKit::WebPageGroup::addUserStyleSheet):
        (WebKit::WebPageGroup::addUserScript):
        * UIProcess/WebPageGroup.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::relatedPages):
        (WebKit::WebPageProxy::didFindStringMatches):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebResourceCacheManagerProxy.cpp:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleCopyOriginsWithApplicationCache):
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (contextMenuItems):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::originsWithApplicationCache):
        (WebKit::toStringVector):
        (WebKit::InjectedBundle::addUserScript):
        (WebKit::InjectedBundle::addUserStyleSheet):
        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp:
        (WebKit::InjectedBundleBackForwardListItem::children):
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h:
        * WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:
        (WebKit::InjectedBundlePageContextMenuClient::getCustomMenuFromDefaultItems):
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
        (WebKit::InjectedBundlePageEditorClient::getPasteboardDataForRange):
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
        (WebKit::InjectedBundlePageFormClient::didAssociateFormControls):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::featuresUsedInPage):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::findLargestFrameInFrameSet):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::childFrames):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::trackedRepaintRects):
        * WebProcess/WebPage/WebPage.h:

2013-11-13  Nick Diego Yamane  <nick.yamane@openbossa.org>

        [GTK] Fix build after r159222
        https://bugs.webkit.org/show_bug.cgi?id=124305

        Reviewed by Tim Horton.

        WebGraphicsContext and its API has been removed.

        * CMakeLists.txt:
        * GNUmakefile.list.am:
        * Shared/API/c/gtk/WKGraphicsContextGtk.cpp: Removed.
        * Shared/API/c/gtk/WKGraphicsContextGtk.h: Removed.

2013-11-13  Tim Horton  <timothy_horton@apple.com>

        Remove redundant return after r159173
        https://bugs.webkit.org/show_bug.cgi?id=124303

        Reviewed by Geoff Garen.

        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::loadResourceSynchronously):
        Remove redundant return.

2013-11-13  Michał Pakuła vel Rutka  <m.pakula@samsung.com>

        Unreviewed EFL build fix after r159222.

        * CMakeLists.txt:

2013-11-13  Anders Carlsson  <andersca@apple.com>

        Remove WebGraphicsContext
        https://bugs.webkit.org/show_bug.cgi?id=124302

        Reviewed by Dan Bernstein.

        WebGraphicsContext and its API "object", WKGraphicsContextRef was only used
        for the overhang paint callback which has been removed.

        * Shared/API/c/WKDeprecatedFunctions.cpp:
        (WKGraphicsContextGetCGContext):
        * Shared/API/c/WKGraphicsContext.cpp: Removed.
        * Shared/API/c/WKGraphicsContext.h: Removed.
        * Shared/API/c/cg/WKGraphicsContextCG.cpp: Removed.
        * Shared/API/c/cg/WKGraphicsContextCG.h: Removed.
        * Shared/APIObject.h:
        * Shared/WebGraphicsContext.cpp: Removed.
        * Shared/WebGraphicsContext.h: Removed.
        * UIProcess/API/C/WebKit2_C.h:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:

2013-11-13  Anders Carlsson  <andersca@apple.com>

        WKArrayIsMutable should not be mangled
        https://bugs.webkit.org/show_bug.cgi?id=124299

        Reviewed by Andreas Kling.

        * Shared/API/c/WKDeprecatedFunctions.cpp:

2013-11-13  Anders Carlsson  <andersca@apple.com>

        Move provisional load state handling to FrameLoadState
        https://bugs.webkit.org/show_bug.cgi?id=124291

        Reviewed by Dan Bernstein.

        * UIProcess/FrameLoadState.cpp:
        (WebKit::FrameLoadState::didStartProvisionalLoad):
        (WebKit::FrameLoadState::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::FrameLoadState::didFailProvisionalLoad):
        * UIProcess/FrameLoadState.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::didStartProvisionalLoad):
        (WebKit::WebFrameProxy::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::WebFrameProxy::didFailProvisionalLoad):

2013-11-13  Csaba Osztrogonác  <ossy@webkit.org>

        One more fix after r159197.

        * UIProcess/efl/EwkTouchEvent.h:
        * UIProcess/efl/EwkTouchPoint.h:

2013-11-13  Brendan Long  <b.long@cablelabs.com>

        [Gtk][EFL] Fix builds by updating Object::TypeX to Object::Type::X
        https://bugs.webkit.org/show_bug.cgi?id=124289

        Reviewed by Alexey Proskuryakov.

        * Shared/API/c/WKContextMenuItem.cpp:
        (WKContextMenuItemGetTypeID):
        * Shared/WebBatteryStatus.h:
        * Shared/WebNetworkInfo.h:
        * UIProcess/API/C/WKGrammarDetail.cpp:
        (WKGrammarDetailGetTypeID):
        * UIProcess/API/C/WKPluginSiteDataManager.cpp:
        (WKPluginSiteDataManagerGetTypeID):
        * UIProcess/CoordinatedGraphics/WebView.h:
        * UIProcess/WebBatteryManagerProxy.h:
        * UIProcess/WebNetworkInfoManagerProxy.h:
        * UIProcess/WebTextChecker.h:
        * UIProcess/WebVibrationProxy.h:
        * UIProcess/WebViewportAttributes.h:
        * UIProcess/efl/WebPopupItemEfl.h:
        * UIProcess/soup/WebSoupRequestManagerProxy.h:

2013-11-13  Tamas Gergely  <gertom@inf.u-szeged.hu>

        Remove prefixed template class processing from message receiver generator.
        https://bugs.webkit.org/show_bug.cgi?id=123095

        Reviewed by Anders Carlsson.

        There was a FIXME in messages.py to remove unprefixed WTF template classes,
        but in the discussion of the bug report we concluded that in the messages.in
        files we should follow the C++ naming convention where none of the WTF
        classes require the WTF prefix.

        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * Scripts/webkit2/messages.py:
        (class_template_headers):
        * Scripts/webkit2/messages_unittest.py:
        (std):
        * UIProcess/Storage/StorageManager.messages.in:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebPage.messages.in:

2013-11-13  Csaba Osztrogonác  <ossy@webkit.org>

        URTBF after r159199 to make cmake and GTK build happy.

        * CMakeLists.txt:
        * GNUmakefile.list.am:

2013-11-13  Anders Carlsson  <andersca@apple.com>

        Add WKDeprecatedFunctions.cpp and move WKArrayIsMutable there
        https://bugs.webkit.org/show_bug.cgi?id=124284

        Reviewed by Andreas Kling.

        * Shared/API/c/WKDeprecatedFunctions.cpp: Copied from Source/WebKit2/Shared/API/c/WKMutableArray.h.
        (WKArrayIsMutable):
        * Shared/API/c/WKMutableArray.cpp:
        * Shared/API/c/WKMutableArray.h:
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-12  Anders Carlsson  <andersca@apple.com>

        API::Object::Type should be a strongly typed enum
        https://bugs.webkit.org/show_bug.cgi?id=124258

        Reviewed by Tim Horton.

        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        (-[WKRemoteObjectRegistry _handleMessageWithName:body:]):
        * Shared/APIObject.h:
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/ImmutableArray.h:
        * Shared/ImmutableDictionary.h:
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebArchive.h:
        * Shared/WebArchiveResource.h:
        * Shared/WebBackForwardListItem.h:
        * Shared/WebCertificateInfo.h:
        * Shared/WebConnection.h:
        * Shared/WebContextMenuItem.h:
        * Shared/WebData.h:
        * Shared/WebError.h:
        * Shared/WebGeolocationPosition.h:
        * Shared/WebGeometry.h:
        * Shared/WebGraphicsContext.h:
        * Shared/WebHitTestResult.h:
        * Shared/WebImage.h:
        * Shared/WebNumber.h:
        * Shared/WebOpenPanelParameters.h:
        * Shared/WebRenderLayer.h:
        * Shared/WebRenderObject.h:
        * Shared/WebSecurityOrigin.h:
        * Shared/WebSerializedScriptValue.h:
        * Shared/WebString.h:
        * Shared/WebURL.h:
        * Shared/WebURLRequest.h:
        * Shared/WebURLResponse.h:
        * Shared/WebUserContentURLPattern.h:
        * Shared/mac/ObjCObjectGraph.h:
        * UIProcess/Authentication/AuthenticationChallengeProxy.h:
        * UIProcess/Authentication/AuthenticationDecisionListener.h:
        * UIProcess/Authentication/WebCredential.h:
        * UIProcess/Authentication/WebProtectionSpace.h:
        * UIProcess/Downloads/DownloadProxy.h:
        * UIProcess/GeolocationPermissionRequestProxy.h:
        * UIProcess/Notifications/NotificationPermissionRequest.h:
        * UIProcess/Notifications/WebNotification.h:
        * UIProcess/Notifications/WebNotificationManagerProxy.h:
        * UIProcess/Plugins/WebPluginSiteDataManager.h:
        * UIProcess/WebApplicationCacheManagerProxy.h:
        * UIProcess/WebBackForwardList.h:
        * UIProcess/WebColorPickerResultListenerProxy.h:
        * UIProcess/WebContext.h:
        * UIProcess/WebContextUserMessageCoders.h:
        (WebKit::WebContextUserMessageEncoder::encode):
        (WebKit::WebContextUserMessageDecoder::decode):
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebDatabaseManagerProxy.h:
        * UIProcess/WebEditCommandProxy.h:
        * UIProcess/WebFormSubmissionListenerProxy.h:
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebGrammarDetail.h:
        * UIProcess/WebIconDatabase.h:
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebKeyValueStorageManager.h:
        * UIProcess/WebMediaCacheManagerProxy.h:
        * UIProcess/WebNavigationData.h:
        * UIProcess/WebOpenPanelResultListenerProxy.h:
        * UIProcess/WebOriginDataManagerProxy.h:
        * UIProcess/WebPageGroup.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPreferences.h:
        * UIProcess/WebResourceCacheManagerProxy.h:
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:
        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/InjectedBundleBackForwardList.h:
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h:
        * WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.h:
        * WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:
        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
        * WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:
        * WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h:
        (WebKit::InjectedBundleUserMessageEncoder::encode):
        (WebKit::InjectedBundleUserMessageDecoder::decode):
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::load):
        * WebProcess/WebPage/PageBanner.h:
        * WebProcess/WebPage/PageOverlay.h:
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPageGroupProxy.h:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:
        (-[WKAccessibilityWebPageObject accessibilityParameterizedAttributeNames]):
        (-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]):

2013-11-13  Anders Carlsson  <andersca@apple.com>

        Remove custom overhang area painting code
        https://bugs.webkit.org/show_bug.cgi?id=124282

        Reviewed by Andreas Kling.

        This code was only used by the Mac port, to draw the linen background color on Lion.
        We now do that on the GPU instead so get rid of this code.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2013-11-13  Sergio Correia  <sergio.correia@openbossa.org>

        [EFL][WK2] Convert some more OwnPtr/PassOwnPtr to std::unique_ptr
        https://bugs.webkit.org/show_bug.cgi?id=124241

        Reviewed by Gyuyoung Kim.

        The modified files are located under UIProcess/{efl,API/efl}.

        * UIProcess/API/efl/EwkView.cpp:
        * UIProcess/API/efl/EwkView.h:
        * UIProcess/API/efl/GestureRecognizer.cpp:
        * UIProcess/API/efl/GestureRecognizer.h:
        * UIProcess/API/efl/ewk_back_forward_list_private.h:
        * UIProcess/API/efl/ewk_color_picker_private.h:
        * UIProcess/API/efl/ewk_context.cpp:
        * UIProcess/API/efl/ewk_context_menu.cpp:
        * UIProcess/API/efl/ewk_context_menu_item.cpp:
        * UIProcess/API/efl/ewk_context_menu_item_private.h:
        * UIProcess/API/efl/ewk_context_private.h:
        * UIProcess/API/efl/ewk_cookie_manager.cpp:
        * UIProcess/API/efl/ewk_cookie_manager_private.h:
        * UIProcess/API/efl/ewk_database_manager_private.h:
        * UIProcess/API/efl/ewk_favicon_database_private.h:
        * UIProcess/API/efl/ewk_popup_menu.cpp:
        * UIProcess/API/efl/ewk_popup_menu_item_private.h:
        * UIProcess/API/efl/ewk_popup_menu_private.h:
        * UIProcess/API/efl/ewk_settings_private.h:
        * UIProcess/API/efl/ewk_storage_manager.cpp:
        * UIProcess/API/efl/ewk_storage_manager_private.h:
        * UIProcess/API/efl/ewk_view.cpp:
        * UIProcess/API/efl/tests/test_ewk2_auth_request.cpp:
        * UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp:
        * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:
        * UIProcess/API/efl/tests/test_ewk2_download_job.cpp:
        * UIProcess/API/efl/tests/test_ewk2_favicon_database.cpp:
        * UIProcess/API/efl/tests/test_ewk2_refptr_evas_object.cpp:
        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
        * UIProcess/efl/ContextHistoryClientEfl.h:
        * UIProcess/efl/ContextMenuClientEfl.h:
        * UIProcess/efl/DownloadManagerEfl.h:
        * UIProcess/efl/FindClientEfl.h:
        * UIProcess/efl/FormClientEfl.h:
        * UIProcess/efl/PageLoadClientEfl.h:
        * UIProcess/efl/PagePolicyClientEfl.h:
        * UIProcess/efl/PageUIClientEfl.h:
        * UIProcess/efl/PageViewportControllerClientEfl.h:
        * UIProcess/efl/RequestManagerClientEfl.h:
        * UIProcess/efl/VibrationClientEfl.cpp:
        * UIProcess/efl/VibrationClientEfl.h:
        * UIProcess/efl/ViewClientEfl.h:

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

        Disable WebCrypto on Mountain Lion
        https://bugs.webkit.org/show_bug.cgi?id=124261

        Rubber-stamped by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig:

2013-11-12  Nick Diego Yamane  <nick.yamane@openbossa.org>

        [GTK][EFL] More on renaming WebKit::APIObject to API::Object
        https://bugs.webkit.org/show_bug.cgi?id=124255

        Reviewed by Anders Carlsson.

        In r159163 WebKit::APIObject has been renamed to API::Object.
        This patch refactors the remaining files which were still
        using WebKit::APIObject and WebKit::TypedAPIObject.

        * Shared/WebBatteryStatus.h:
        * Shared/WebNetworkInfo.h:
        * UIProcess/API/C/WKGrammarDetail.cpp:
        * UIProcess/API/gtk/WebKitContextMenuItem.cpp:
        * UIProcess/API/gtk/WebKitFileChooserRequest.cpp:
        * UIProcess/API/gtk/WebKitWebViewGroup.cpp:
        * UIProcess/CoordinatedGraphics/WebView.h:
        * UIProcess/WebBatteryManagerProxy.cpp:
        * UIProcess/WebBatteryManagerProxy.h:
        * UIProcess/WebGrammarDetail.cpp:
        * UIProcess/WebNetworkInfoManagerProxy.cpp:
        * UIProcess/WebNetworkInfoManagerProxy.h:
        * UIProcess/WebTextChecker.h:
        * UIProcess/WebVibrationProxy.h:
        * UIProcess/WebViewportAttributes.h:
        * UIProcess/efl/EwkTouchEvent.h:
        * UIProcess/efl/EwkTouchPoint.h:
        * UIProcess/efl/WebPopupItemEfl.h:
        * UIProcess/efl/WebUIPopupMenuClient.cpp:
        * UIProcess/gtk/WebFullScreenClientGtk.h:
        * UIProcess/gtk/WebInspectorClientGtk.h:
        * UIProcess/soup/WebSoupRequestManagerProxy.cpp:
        * UIProcess/soup/WebSoupRequestManagerProxy.h:
        * WebProcess/InjectedBundle/efl/InjectedBundleEfl.cpp:
        * WebProcess/InjectedBundle/gtk/InjectedBundleGtk.cpp:

2013-11-12  Anders Carlsson  <andersca@apple.com>

        fast/canvas/webgl/draw-arrays-out-of-bounds.html is flaky on Mavericks WK2 testers, fails about 20% of the time
        https://bugs.webkit.org/show_bug.cgi?id=124223
        <rdar://problem/15333977>

        Reviewed by Tim Horton.

        It's wrong to use DataReferences in sync IPC replies; the underlying MessageDecoder will be freed after the call to
        sendSync returns and the DataReference will point to freed memory. Use a Vector<char> instead.

        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/SynchronousNetworkLoaderClient.cpp:
        (WebKit::SynchronousNetworkLoaderClient::didReceiveBuffer):
        (WebKit::SynchronousNetworkLoaderClient::sendDelayedReply):
        * NetworkProcess/SynchronousNetworkLoaderClient.h:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::loadResourceSynchronously):

2013-11-12  Gustavo Noronha Silva  <gns@gnome.org>

        Unreviewed try at fixing the GTK+ build.

        * UIProcess/soup/WebSoupRequestManagerProxy.h: rename TypedAPIObject to API:TypedObject.

2013-11-12  Nick Diego Yamane  <nick.yamane@openbossa.org>

        [EFL][GTK] Remove MutableArray leftovers from build systems
        https://bugs.webkit.org/show_bug.cgi?id=124248

        Reviewed by Anders Carlsson.

        MutableArray.cpp and .h file has been removed by r159155.

        * CMakeLists.txt:
        * GNUmakefile.list.am:

2013-11-12  Anders Carlsson  <andersca@apple.com>

        Rename APIObject to API::Object
        https://bugs.webkit.org/show_bug.cgi?id=124247

        Reviewed by Tim Horton.

        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        (-[WKRemoteObjectRegistry _handleMessageWithName:body:]):
        * Shared/API/c/WKArray.cpp:
        (WKArrayCreate):
        (WKArrayCreateAdoptingValues):
        * Shared/API/c/WKContextMenuItem.cpp:
        (WKContextMenuItemGetTypeID):
        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toAPI):
        * Shared/API/c/WKType.cpp:
        (WKGetTypeID):
        (WKRetain):
        (WKRelease):
        * Shared/APIObject.cpp:
        (API::Object::Object):
        * Shared/APIObject.h:
        (API::Object::~Object):
        (API::TypedObject::~TypedObject):
        (API::TypedObject::TypedObject):
        * Shared/Cocoa/APIObject.mm:
        (API::Object::ref):
        (API::Object::deref):
        (API::Object::newObject):
        * Shared/Cocoa/WKNSArray.mm:
        (-[WKNSArray objectAtIndex:]):
        (-[WKNSArray API::]):
        * Shared/Cocoa/WKNSDictionary.mm:
        (-[WKNSDictionary objectForKey:]):
        (-[WKNSDictionary API::]):
        * Shared/Cocoa/WKObject.h:
        * Shared/Cocoa/WKObject.mm:
        (-[WKObject dealloc]):
        (-[WKObject API::]):
        * Shared/ImmutableArray.cpp:
        (WebKit::ImmutableArray::create):
        (WebKit::ImmutableArray::createStringArray):
        (WebKit::ImmutableArray::ImmutableArray):
        * Shared/ImmutableArray.h:
        * Shared/ImmutableDictionary.cpp:
        (WebKit::ImmutableDictionary::keys):
        * Shared/ImmutableDictionary.h:
        (WebKit::ImmutableDictionary::get):
        * Shared/MutableDictionary.cpp:
        (WebKit::MutableDictionary::add):
        (WebKit::MutableDictionary::set):
        * Shared/MutableDictionary.h:
        * Shared/SecurityOriginData.cpp:
        (WebKit::performAPICallbackWithSecurityOriginDataVector):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageEncoder::UserMessageEncoder):
        (WebKit::UserMessageDecoder::baseDecode):
        (WebKit::UserMessageDecoder::UserMessageDecoder):
        * Shared/WebArchive.cpp:
        (WebKit::WebArchive::subresources):
        (WebKit::WebArchive::subframeArchives):
        * Shared/WebArchive.h:
        * Shared/WebArchiveResource.h:
        * Shared/WebBackForwardListItem.h:
        * Shared/WebCertificateInfo.h:
        * Shared/WebConnection.cpp:
        (WebKit::WebConnection::postMessage):
        (WebKit::WebConnection::handleMessage):
        * Shared/WebConnection.h:
        * Shared/WebConnectionClient.cpp:
        (WebKit::WebConnectionClient::didReceiveMessage):
        * Shared/WebConnectionClient.h:
        * Shared/WebContextMenuItem.cpp:
        (WebKit::WebContextMenuItem::submenuItemsAsImmutableArray):
        (WebKit::WebContextMenuItem::userData):
        (WebKit::WebContextMenuItem::setUserData):
        * Shared/WebContextMenuItem.h:
        * Shared/WebContextMenuItemData.cpp:
        (WebKit::WebContextMenuItemData::userData):
        (WebKit::WebContextMenuItemData::setUserData):
        * Shared/WebContextMenuItemData.h:
        * Shared/WebData.h:
        * Shared/WebError.h:
        * Shared/WebGeolocationPosition.h:
        * Shared/WebGeometry.h:
        * Shared/WebGraphicsContext.h:
        * Shared/WebHitTestResult.h:
        * Shared/WebImage.h:
        * Shared/WebNumber.h:
        * Shared/WebOpenPanelParameters.h:
        * Shared/WebRenderLayer.cpp:
        (WebKit::WebRenderLayer::createArrayFromLayerList):
        * Shared/WebRenderLayer.h:
        * Shared/WebRenderObject.cpp:
        (WebKit::WebRenderObject::WebRenderObject):
        * Shared/WebRenderObject.h:
        * Shared/WebSecurityOrigin.h:
        * Shared/WebSerializedScriptValue.h:
        * Shared/WebString.h:
        * Shared/WebURL.h:
        * Shared/WebURLRequest.h:
        * Shared/WebURLResponse.h:
        * Shared/WebUserContentURLPattern.h:
        * Shared/mac/ObjCObjectGraph.h:
        * Shared/mac/ObjCObjectGraphCoders.mm:
        (WebKit::WebContextObjCObjectGraphDecoderImpl::decode):
        (WebKit::InjectedBundleObjCObjectGraphDecoderImpl::decode):
        * UIProcess/API/C/WKPluginSiteDataManager.cpp:
        (WKPluginSiteDataManagerGetTypeID):
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextGetInfoForInstalledPlugIns):
        * UIProcess/API/Cocoa/WKBackForwardList.mm:
        (-[WKBackForwardList API::]):
        * UIProcess/API/Cocoa/WKBackForwardListItem.mm:
        (-[WKBackForwardListItem API::]):
        * UIProcess/API/Cocoa/WKNavigationData.mm:
        (-[WKNavigationData API::]):
        * UIProcess/API/mac/WKBrowsingContextGroup.mm:
        (createWKArray):
        * UIProcess/Authentication/AuthenticationChallengeProxy.h:
        * UIProcess/Authentication/AuthenticationDecisionListener.h:
        * UIProcess/Authentication/WebCredential.h:
        * UIProcess/Authentication/WebProtectionSpace.h:
        * UIProcess/Downloads/DownloadProxy.h:
        * UIProcess/GeolocationPermissionRequestProxy.h:
        * UIProcess/Notifications/NotificationPermissionRequest.h:
        * UIProcess/Notifications/WebNotification.h:
        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
        (WebKit::WebNotificationManagerProxy::refWebContextSupplement):
        (WebKit::WebNotificationManagerProxy::derefWebContextSupplement):
        * UIProcess/Notifications/WebNotificationManagerProxy.h:
        * UIProcess/Notifications/WebNotificationProvider.cpp:
        (WebKit::WebNotificationProvider::clearNotifications):
        * UIProcess/Plugins/WebPluginSiteDataManager.h:
        * UIProcess/StatisticsRequest.cpp:
        (WebKit::StatisticsRequest::completedRequest):
        * UIProcess/WebApplicationCacheManagerProxy.cpp:
        (WebKit::WebApplicationCacheManagerProxy::refWebContextSupplement):
        (WebKit::WebApplicationCacheManagerProxy::derefWebContextSupplement):
        * UIProcess/WebApplicationCacheManagerProxy.h:
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::addItem):
        (WebKit::WebBackForwardList::backListAsImmutableArrayWithLimit):
        (WebKit::WebBackForwardList::forwardListAsImmutableArrayWithLimit):
        (WebKit::WebBackForwardList::clear):
        * UIProcess/WebBackForwardList.h:
        * UIProcess/WebColorPickerResultListenerProxy.h:
        * UIProcess/WebConnectionToWebProcess.cpp:
        (WebKit::WebConnectionToWebProcess::encodeMessageBody):
        (WebKit::WebConnectionToWebProcess::decodeMessageBody):
        * UIProcess/WebConnectionToWebProcess.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::createNewWebProcess):
        (WebKit::WebContext::postMessageToInjectedBundle):
        (WebKit::WebContext::didReceiveMessageFromInjectedBundle):
        (WebKit::WebContext::didReceiveSynchronousMessageFromInjectedBundle):
        (WebKit::WebContext::didReceiveMessage):
        (WebKit::WebContext::didReceiveSyncMessage):
        (WebKit::WebContext::pluginInfoStoreDidLoadPlugins):
        * UIProcess/WebContext.h:
        (WebKit::WebContext::setInjectedBundleInitializationUserData):
        * UIProcess/WebContextInjectedBundleClient.cpp:
        (WebKit::WebContextInjectedBundleClient::didReceiveMessageFromInjectedBundle):
        (WebKit::WebContextInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):
        (WebKit::WebContextInjectedBundleClient::getInjectedBundleInitializationUserData):
        * UIProcess/WebContextInjectedBundleClient.h:
        * UIProcess/WebContextUserMessageCoders.h:
        (WebKit::WebContextUserMessageEncoder::WebContextUserMessageEncoder):
        (WebKit::WebContextUserMessageEncoder::encode):
        (WebKit::WebContextUserMessageDecoder::WebContextUserMessageDecoder):
        (WebKit::WebContextUserMessageDecoder::decode):
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::refWebContextSupplement):
        (WebKit::WebCookieManagerProxy::derefWebContextSupplement):
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebDatabaseManagerProxy.cpp:
        (WebKit::WebDatabaseManagerProxy::refWebContextSupplement):
        (WebKit::WebDatabaseManagerProxy::derefWebContextSupplement):
        (WebKit::WebDatabaseManagerProxy::didGetDatabasesByOrigin):
        (WebKit::WebDatabaseManagerProxy::didGetDatabaseOrigins):
        * UIProcess/WebDatabaseManagerProxy.h:
        * UIProcess/WebEditCommandProxy.h:
        * UIProcess/WebFormClient.cpp:
        (WebKit::WebFormClient::willSubmitForm):
        * UIProcess/WebFormClient.h:
        * UIProcess/WebFrameListenerProxy.h:
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::refWebContextSupplement):
        (WebKit::WebGeolocationManagerProxy::derefWebContextSupplement):
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebGrammarDetail.h:
        * UIProcess/WebIconDatabase.h:
        * UIProcess/WebIconDatabaseClient.h:
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebKeyValueStorageManager.cpp:
        (WebKit::WebKeyValueStorageManager::refWebContextSupplement):
        (WebKit::WebKeyValueStorageManager::derefWebContextSupplement):
        (WebKit::didGetKeyValueStorageOrigins):
        * UIProcess/WebKeyValueStorageManager.h:
        * UIProcess/WebLoaderClient.cpp:
        (WebKit::WebLoaderClient::didStartProvisionalLoadForFrame):
        (WebKit::WebLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebLoaderClient::didFailProvisionalLoadWithErrorForFrame):
        (WebKit::WebLoaderClient::didCommitLoadForFrame):
        (WebKit::WebLoaderClient::didFinishDocumentLoadForFrame):
        (WebKit::WebLoaderClient::didFinishLoadForFrame):
        (WebKit::WebLoaderClient::didFailLoadWithErrorForFrame):
        (WebKit::WebLoaderClient::didSameDocumentNavigationForFrame):
        (WebKit::WebLoaderClient::didReceiveTitleForFrame):
        (WebKit::WebLoaderClient::didFirstLayoutForFrame):
        (WebKit::WebLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
        (WebKit::WebLoaderClient::didLayout):
        (WebKit::WebLoaderClient::didRemoveFrameFromHierarchy):
        (WebKit::WebLoaderClient::didDisplayInsecureContentForFrame):
        (WebKit::WebLoaderClient::didRunInsecureContentForFrame):
        (WebKit::WebLoaderClient::didDetectXSSForFrame):
        (WebKit::WebLoaderClient::didChangeBackForwardList):
        (WebKit::WebLoaderClient::willGoToBackForwardListItem):
        * UIProcess/WebLoaderClient.h:
        * UIProcess/WebMediaCacheManagerProxy.cpp:
        (WebKit::WebMediaCacheManagerProxy::refWebContextSupplement):
        (WebKit::WebMediaCacheManagerProxy::derefWebContextSupplement):
        * UIProcess/WebMediaCacheManagerProxy.h:
        * UIProcess/WebNavigationData.h:
        * UIProcess/WebOpenPanelResultListenerProxy.h:
        * UIProcess/WebOriginDataManagerProxy.cpp:
        (WebKit::WebOriginDataManagerProxy::refWebContextSupplement):
        (WebKit::WebOriginDataManagerProxy::derefWebContextSupplement):
        * UIProcess/WebOriginDataManagerProxy.h:
        * UIProcess/WebPageContextMenuClient.cpp:
        (WebKit::WebPageContextMenuClient::getContextMenuFromProposedMenu):
        (WebKit::WebPageContextMenuClient::showContextMenu):
        * UIProcess/WebPageContextMenuClient.h:
        * UIProcess/WebPageGroup.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::relatedPages):
        (WebKit::WebPageProxy::loadURL):
        (WebKit::WebPageProxy::loadURLRequest):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadHTMLString):
        (WebKit::WebPageProxy::loadAlternateHTMLString):
        (WebKit::WebPageProxy::loadPlainTextString):
        (WebKit::WebPageProxy::loadWebArchiveData):
        (WebKit::WebPageProxy::didChangeBackForwardList):
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::didReceiveTitleForFrame):
        (WebKit::WebPageProxy::didFirstLayoutForFrame):
        (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
        (WebKit::WebPageProxy::didLayout):
        (WebKit::WebPageProxy::didRemoveFrameFromHierarchy):
        (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
        (WebKit::WebPageProxy::didRunInsecureContentForFrame):
        (WebKit::WebPageProxy::didDetectXSSForFrame):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::unableToImplementPolicy):
        (WebKit::WebPageProxy::willSubmitForm):
        (WebKit::WebPageProxy::mouseDidMoveOverElement):
        (WebKit::WebPageProxy::didFindStringMatches):
        (WebKit::WebPageProxy::postMessageToInjectedBundle):
        (WebKit::WebPageProxy::internalShowContextMenu):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPolicyClient.cpp:
        (WebKit::WebPolicyClient::decidePolicyForNavigationAction):
        (WebKit::WebPolicyClient::decidePolicyForNewWindowAction):
        (WebKit::WebPolicyClient::decidePolicyForResponse):
        (WebKit::WebPolicyClient::unableToImplementPolicy):
        * UIProcess/WebPolicyClient.h:
        * UIProcess/WebPreferences.h:
        * UIProcess/WebResourceCacheManagerProxy.cpp:
        (WebKit::WebResourceCacheManagerProxy::refWebContextSupplement):
        (WebKit::WebResourceCacheManagerProxy::derefWebContextSupplement):
        * UIProcess/WebResourceCacheManagerProxy.h:
        * UIProcess/WebUIClient.cpp:
        (WebKit::WebUIClient::mouseDidMoveOverElement):
        * UIProcess/WebUIClient.h:
        * UIProcess/mac/WebContextMenuProxyMac.mm:
        (-[WKUserDataWrapper initWithUserData:API::]):
        (-[WKUserDataWrapper API::]):
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundlePostSynchronousMessage):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (contextMenuItems):
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::postMessage):
        (WebKit::InjectedBundle::postSynchronousMessage):
        (WebKit::InjectedBundle::originsWithApplicationCache):
        (WebKit::InjectedBundle::didReceiveMessage):
        (WebKit::InjectedBundle::didReceiveMessageToPage):
        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/InjectedBundleBackForwardList.h:
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp:
        (WebKit::InjectedBundleBackForwardListItem::children):
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h:
        * WebProcess/InjectedBundle/InjectedBundleClient.cpp:
        (WebKit::InjectedBundleClient::didReceiveMessage):
        (WebKit::InjectedBundleClient::didReceiveMessageToPage):
        * WebProcess/InjectedBundle/InjectedBundleClient.h:
        * WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.h:
        * WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:
        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
        * WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:
        (WebKit::InjectedBundlePageContextMenuClient::getCustomMenuFromDefaultItems):
        * WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
        (WebKit::InjectedBundlePageFormClient::willSubmitForm):
        (WebKit::InjectedBundlePageFormClient::didAssociateFormControls):
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::willLoadURLRequest):
        (WebKit::InjectedBundlePageLoaderClient::willLoadDataRequest):
        (WebKit::InjectedBundlePageLoaderClient::shouldGoToBackForwardListItem):
        (WebKit::InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didFailProvisionalLoadWithErrorForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didCommitLoadForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didFinishDocumentLoadForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didFinishLoadForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didFailLoadWithErrorForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didSameDocumentNavigationForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didReceiveTitleForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didRemoveFrameFromHierarchy):
        (WebKit::InjectedBundlePageLoaderClient::didDisplayInsecureContentForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didRunInsecureContentForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didDetectXSSForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didFirstLayoutForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didLayout):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.cpp:
        (WebKit::InjectedBundlePagePolicyClient::decidePolicyForNavigationAction):
        (WebKit::InjectedBundlePagePolicyClient::decidePolicyForNewWindowAction):
        (WebKit::InjectedBundlePagePolicyClient::decidePolicyForResponse):
        (WebKit::InjectedBundlePagePolicyClient::unableToImplementPolicy):
        * WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
        (WebKit::InjectedBundlePageUIClient::mouseDidMoveOverElement):
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
        * WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:
        * WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h:
        (WebKit::InjectedBundleUserMessageEncoder::InjectedBundleUserMessageEncoder):
        (WebKit::InjectedBundleUserMessageEncoder::encode):
        (WebKit::InjectedBundleUserMessageDecoder::InjectedBundleUserMessageDecoder):
        (WebKit::InjectedBundleUserMessageDecoder::decode):
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::load):
        * WebProcess/WebConnectionToUIProcess.cpp:
        (WebKit::WebConnectionToUIProcess::encodeMessageBody):
        (WebKit::WebConnectionToUIProcess::decodeMessageBody):
        * WebProcess/WebConnectionToUIProcess.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::mouseDidMoveOverElement):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::detachedFromParent2):
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidChangeLocationWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidPushStateWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidReplaceStateWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidPopStateWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveTitle):
        (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidFailLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidFinishLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidLayout):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        (WebKit::WebFrameLoaderClient::dispatchUnableToImplementPolicy):
        (WebKit::WebFrameLoaderClient::dispatchWillSubmitForm):
        (WebKit::WebFrameLoaderClient::shouldGoToHistoryItem):
        (WebKit::WebFrameLoaderClient::didDisplayInsecureContent):
        (WebKit::WebFrameLoaderClient::didRunInsecureContent):
        (WebKit::WebFrameLoaderClient::didDetectXSS):
        * WebProcess/WebPage/PageBanner.h:
        * WebProcess/WebPage/PageOverlay.h:
        * WebProcess/WebPage/WebContextMenu.cpp:
        (WebKit::WebContextMenu::show):
        (WebKit::WebContextMenu::menuItemsWithUserData):
        (WebKit::WebContextMenu::items):
        * WebProcess/WebPage/WebContextMenu.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::childFrames):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::trackedRepaintRects):
        (WebKit::WebPage::loadURLRequest):
        (WebKit::WebPage::loadDataImpl):
        (WebKit::WebPage::postInjectedBundleMessage):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPageGroupProxy.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::postInjectedBundleMessage):

2013-11-12  Nick Diego Yamane  <nick.yamane@openbossa.org>

        Fix GTK build after r159142
        https://bugs.webkit.org/show_bug.cgi?id=124243

        Reviewed by Anders Carlsson.

        Use Vector + ImmutableArray instead of MutableArray

        * UIProcess/API/gtk/WebKitContextMenuItem.cpp:
        (webkitContextMenuItemCreate):

2013-11-12  Anders Carlsson  <andersca@apple.com>

        Remove ImmutableArray::isMutable
        https://bugs.webkit.org/show_bug.cgi?id=124242

        Reviewed by Dan Bernstein.

        * Shared/API/c/WKMutableArray.cpp:
        (WKArrayIsMutable):
        * Shared/Cocoa/WKNSArray.mm:
        (-[WKNSArray copyWithZone:]):
        * Shared/ImmutableArray.h:

2013-11-12  Anders Carlsson  <andersca@apple.com>

        WKMutableArrayRef should be an ImmutableArray
        https://bugs.webkit.org/show_bug.cgi?id=124239

        Reviewed by Sam Weinig.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (ensureObjectStream):
        * Shared/API/c/WKMutableArray.cpp:
        (WKMutableArrayCreate):
        * Shared/API/c/WKSharedAPICast.h:

2013-11-12  Anders Carlsson  <andersca@apple.com>

        Remove more functionality from MutableArray
        https://bugs.webkit.org/show_bug.cgi?id=124235

        Reviewed by Beth Dakin.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (encodeToObjectStream):
        * Shared/API/c/WKMutableArray.cpp:
        (WKArrayAppendItem):
        (WKArrayRemoveItemAtIndex):
        * Shared/Cocoa/WKNSArray.mm:
        (-[WKNSArray copyWithZone:]):
        * Shared/ImmutableArray.h:
        (WebKit::ImmutableArray::elements):
        * Shared/MutableArray.cpp:
        * Shared/MutableArray.h:

2013-11-12  Anders Carlsson  <andersca@apple.com>

        Remove most uses of MutableArray
        https://bugs.webkit.org/show_bug.cgi?id=124232

        Reviewed by Sam Weinig.

        * Shared/API/c/WKMutableArray.cpp:
        (WKMutableArrayCreate):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebRenderLayer.h:
        (WebKit::WebRenderLayer::create):
        (WebKit::WebRenderLayer::WebRenderLayer):
        * Shared/WebRenderObject.cpp:
        (WebKit::WebRenderObject::WebRenderObject):
        * Shared/WebRenderObject.h:
        (WebKit::WebRenderObject::create):
        (WebKit::WebRenderObject::WebRenderObject):
        * WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:
        (WebKit::InjectedBundlePageContextMenuClient::getCustomMenuFromDefaultItems):

2013-11-12  Anders Carlsson  <andersca@apple.com>

        Use Vector + ImmutableArray instead of MutableArray
        https://bugs.webkit.org/show_bug.cgi?id=124221

        Reviewed by Andreas Kling.

        * Shared/WebRenderLayer.cpp:
        (WebKit::WebRenderLayer::createArrayFromLayerList):
        * Shared/WebRenderLayer.h:
        * UIProcess/Notifications/WebNotificationProvider.cpp:
        (WebKit::WebNotificationProvider::clearNotifications):
        * UIProcess/WebPageContextMenuClient.cpp:
        (WebKit::WebPageContextMenuClient::getContextMenuFromProposedMenu):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (contextMenuItems):
        (WKBundlePageCopyContextMenuItems):
        (WKBundlePageCopyContextMenuAtPointInWindow):

2013-11-12  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK build fix after r159129.

        * UIProcess/API/gtk/WebKitFileChooserRequest.cpp:
        (webkit_file_chooser_request_select_files): Use ImmutableArray::create() instead.
        * UIProcess/API/gtk/WebKitWebViewGroup.cpp:
        (toImmutableArray): Ditto.

2013-11-12  Anders Carlsson  <andersca@apple.com>

        Stop using WKArrayCreate internally
        https://bugs.webkit.org/show_bug.cgi?id=124217

        Reviewed by Andreas Kling.

        * UIProcess/API/mac/WKBrowsingContextGroup.mm:
        (createWKArray):
        (-[WKBrowsingContextGroup addUserStyleSheet:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:mainFrameOnly:]):
        (-[WKBrowsingContextGroup addUserScript:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:injectionTime:mainFrameOnly:]):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageCopyContextMenuItems):

2013-11-12  Csaba Osztrogonác  <ossy@webkit.org>

        URTBF after r159129, use create() instead of adopt() everywhere.

        * UIProcess/WebGrammarDetail.cpp:
        (WebKit::WebGrammarDetail::guesses):
        * UIProcess/efl/WebUIPopupMenuClient.cpp:
        (WebUIPopupMenuClient::showPopupMenu):

2013-11-12  Anders Carlsson  <andersca@apple.com>

        Simplify ImmutableArray creation
        https://bugs.webkit.org/show_bug.cgi?id=124213

        Reviewed by Andreas Kling.

        Get rid of the various ImmutableArray::adopt functions and have a single create function instead.
        Use std::move to avoid unnecessarily copying vector data.

        * Shared/API/c/WKArray.cpp:
        (WKArrayCreate):
        (WKArrayCreateAdoptingValues):
        * Shared/Cocoa/WKNSArray.mm:
        (-[WKNSArray copyWithZone:]):
        * Shared/ImmutableArray.cpp:
        (WebKit::ImmutableArray::create):
        (WebKit::ImmutableArray::createStringArray):
        (WebKit::ImmutableArray::ImmutableArray):
        * Shared/ImmutableArray.h:
        (WebKit::ImmutableArray::at):
        (WebKit::ImmutableArray::size):
        (WebKit::ImmutableArray::entries):
        * Shared/ImmutableDictionary.cpp:
        (WebKit::ImmutableDictionary::keys):
        * Shared/MutableArray.cpp:
        (WebKit::MutableArray::MutableArray):
        (WebKit::MutableArray::append):
        (WebKit::MutableArray::reserveCapacity):
        (WebKit::MutableArray::removeItemAtIndex):
        * Shared/SecurityOriginData.cpp:
        (WebKit::performAPICallbackWithSecurityOriginDataVector):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebArchive.cpp:
        (WebKit::WebArchive::subresources):
        (WebKit::WebArchive::subframeArchives):
        * Shared/WebContextMenuItem.cpp:
        (WebKit::WebContextMenuItem::submenuItemsAsImmutableArray):
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextGetInfoForInstalledPlugIns):
        * UIProcess/StatisticsRequest.cpp:
        (WebKit::StatisticsRequest::completedRequest):
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::backListAsImmutableArrayWithLimit):
        (WebKit::WebBackForwardList::forwardListAsImmutableArrayWithLimit):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::pluginInfoStoreDidLoadPlugins):
        * UIProcess/WebDatabaseManagerProxy.cpp:
        (WebKit::WebDatabaseManagerProxy::didGetDatabasesByOrigin):
        (WebKit::WebDatabaseManagerProxy::didGetDatabaseOrigins):
        * UIProcess/WebKeyValueStorageManager.cpp:
        (WebKit::didGetKeyValueStorageOrigins):
        * UIProcess/WebLoaderClient.cpp:
        (WebKit::WebLoaderClient::didChangeBackForwardList):
        * UIProcess/WebPageContextMenuClient.cpp:
        (WebKit::WebPageContextMenuClient::showContextMenu):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::relatedPages):
        (WebKit::WebPageProxy::didFindStringMatches):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::originsWithApplicationCache):
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp:
        (WebKit::InjectedBundleBackForwardListItem::children):
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
        (WebKit::InjectedBundlePageFormClient::didAssociateFormControls):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::childFrames):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::trackedRepaintRects):

2013-11-12  Csaba Osztrogonác  <ossy@webkit.org>

        The last URTBF after r159108 to make GTK happy.

        * GNUmakefile.am:

2013-11-12  Csaba Osztrogonác  <ossy@webkit.org>

        One more URTBF after r159108, I hope the last one.

        * GNUmakefile.am:

2013-11-12  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Assertions during layer flushing after replaceSublayer()
        https://bugs.webkit.org/show_bug.cgi?id=124194

        Reviewed by Anders Carlsson.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::replaceSublayer):
        Only remove the old layer from the children array once (via removeFromSuperlayer).
        Update the superlayer backpointer on the new layer.

2013-11-12  Anders Carlsson  <andersca@apple.com>

        Add ImmutableArray::createStringArray
        https://bugs.webkit.org/show_bug.cgi?id=124210

        Reviewed by Andreas Kling.

        Creating an ImmutableArray of WebStrings is a common operation, so add a 
        helper function to ImmutableArray that does this from a Vector of Strings.

        * Shared/ImmutableArray.cpp:
        (WebKit::ImmutableArray::createStringArray):
        * Shared/ImmutableArray.h:
        * Shared/ImmutableDictionary.cpp:
        (WebKit::ImmutableDictionary::keys):
        * Shared/WebOpenPanelParameters.cpp:
        (WebKit::WebOpenPanelParameters::acceptMIMETypes):
        (WebKit::WebOpenPanelParameters::selectedFileNames):
        * UIProcess/Plugins/WebPluginSiteDataManager.cpp:
        (WebKit::WebPluginSiteDataManager::didGetSitesWithData):
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::didGetHostnamesWithCookies):
        * UIProcess/WebMediaCacheManagerProxy.cpp:
        (WebKit::WebMediaCacheManagerProxy::didGetHostnamesWithMediaCache):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::featuresUsedInPage):

2013-11-12  Csaba Osztrogonác  <ossy@webkit.org>

        One more URTBF after r159108.

        * GNUmakefile.am:

2013-11-12  Anders Carlsson  <andersca@apple.com>

        Begin cleaning up handling of ImmutableArray vectors
        https://bugs.webkit.org/show_bug.cgi?id=124208

        Reviewed by Andreas Kling.

        Use range based for to iterate the loops. Use reserveInitialCapacity + uncheckedAppend
        when appending vector elements.

        * Shared/SecurityOriginData.cpp:
        (WebKit::performAPICallbackWithSecurityOriginDataVector):
        * Shared/WebArchive.cpp:
        (WebKit::WebArchive::subresources):
        (WebKit::WebArchive::subframeArchives):
        * Shared/WebContextMenuItem.cpp:
        (WebKit::WebContextMenuItem::submenuItemsAsImmutableArray):
        * Shared/WebOpenPanelParameters.cpp:
        (WebKit::WebOpenPanelParameters::acceptMIMETypes):
        (WebKit::WebOpenPanelParameters::selectedFileNames):
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextGetInfoForInstalledPlugIns):
        * UIProcess/Plugins/WebPluginSiteDataManager.cpp:
        (WebKit::WebPluginSiteDataManager::didGetSitesWithData):
        * UIProcess/StatisticsRequest.cpp:
        (WebKit::StatisticsRequest::completedRequest):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::pluginInfoStoreDidLoadPlugins):
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::didGetHostnamesWithCookies):
        * UIProcess/WebDatabaseManagerProxy.cpp:
        (WebKit::WebDatabaseManagerProxy::didGetDatabasesByOrigin):
        (WebKit::WebDatabaseManagerProxy::didGetDatabaseOrigins):
        * UIProcess/WebMediaCacheManagerProxy.cpp:
        (WebKit::WebMediaCacheManagerProxy::didGetHostnamesWithMediaCache):
        * UIProcess/WebPageContextMenuClient.cpp:
        (WebKit::WebPageContextMenuClient::showContextMenu):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::relatedPages):
        (WebKit::WebPageProxy::didFindStringMatches):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::originsWithApplicationCache):
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp:
        (WebKit::InjectedBundleBackForwardListItem::children):
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
        (WebKit::InjectedBundlePageFormClient::didAssociateFormControls):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::featuresUsedInPage):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::trackedRepaintRects):

2013-11-12  Csaba Osztrogonác  <ossy@webkit.org>

        One more URTBF after r159108.

        * CMakeLists.txt:

2013-11-12  Csaba Osztrogonác  <ossy@webkit.org>

        URTBF after r159108.

        * CMakeLists.txt:
        * GNUmakefile.list.am:

2013-11-12  Anders Carlsson  <andersca@apple.com>

        Move StringReference to Platform/IPC
        https://bugs.webkit.org/show_bug.cgi?id=124203

        Reviewed by Antti Koivisto.

        * Platform/IPC/StringReference.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/StringReference.cpp.
        (CoreIPC::StringReference::toString):
        (CoreIPC::StringReference::encode):
        (CoreIPC::StringReference::decode):
        (CoreIPC::StringReference::Hash::hash):
        * Platform/IPC/StringReference.h: Renamed from Source/WebKit2/Platform/CoreIPC/StringReference.h.
        (CoreIPC::StringReference::StringReference):
        (CoreIPC::StringReference::isEmpty):
        (CoreIPC::StringReference::size):
        (CoreIPC::StringReference::data):
        (CoreIPC::StringReference::operator==):
        (CoreIPC::StringReference::Hash::equal):
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-11  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Sporadic memory corruption during painting
        https://bugs.webkit.org/show_bug.cgi?id=124191

        Reviewed by Brady Eidson.

        Fix a logic error (flipped the logic, didn't flip the operator)
        made in the last version of r158982 that caused some crashes because
        it allowed us to overrun the end of cgPaintingRects.

        * Shared/mac/RemoteLayerBackingStore.mm:
        (RemoteLayerBackingStore::drawInContext):

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

        Unreviewed, rolling out r159088.
        http://trac.webkit.org/changeset/159088
        https://bugs.webkit.org/show_bug.cgi?id=124187

        It broke the EFL build, because it removed a used function
        (rs=thorton) (Requested by Ossy_night on #webkit).

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::urlAtProcessExit):
        (WebKit::WebPageProxy::loadStateAtProcessExit):

2013-11-11  Csaba Osztrogonác  <ossy@webkit.org>

        URTBF after r159077 to make GTK build happy.

        * GNUmakefile.list.am:

2013-11-11  Gustavo Noronha Silva  <gns@gnome.org>

        REGRESSION(r158976): Web Inspector: unable to start docked or dock
        https://bugs.webkit.org/show_bug.cgi?id=124148

        Reviewed by Timothy Hatcher.

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::canAttach): check for a level that is greater than 1 rather than 0
        to deny attachment, since 1 is the first level of inspectors.

2013-11-11  Anders Carlsson  <andersca@apple.com>

        FrameFilter can just be an std::function instead
        https://bugs.webkit.org/show_bug.cgi?id=124176

        Reviewed by Tim Horton.

        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::webArchiveData):

2013-11-11  Anders Carlsson  <andersca@apple.com>

        Remove unused Qt cruft
        https://bugs.webkit.org/show_bug.cgi?id=124174

        Reviewed by Tim Horton.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/WebPageProxy.h:

2013-11-11  Anders Carlsson  <andersca@apple.com>

        REGRESSION (r158927): curly-braces-escaping.html is broken on Mac WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=124164

        Reviewed by Alexey Proskuryakov.

        Back out the change to use NSSecureCoding for encoding/decoding NSURLRequest and
        NSURLResponse objects; turns out the NSURL encoding/decoding doesn't preserve the raw URL bytes.

        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (CoreIPC::encodePlatformData):
        (CoreIPC::decodePlatformData):

2013-11-11  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix on CMake Based port since r159077.

        * CMakeLists.txt:

2013-11-11  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Implement Page Overlays
        https://bugs.webkit.org/show_bug.cgi?id=124165
        <rdar://problem/15199056>

        Reviewed by Anders Carlsson.

        Implement page overlays, very similar to how they work in TiledCoreAnimationDrawingArea,
        but manipulating the PlatformCALayer tree instead of the CALayer tree directly.

        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::outOfTreeLayerWasAdded):
        (WebKit::RemoteLayerTreeContext::outOfTreeLayerWillBeRemoved):
        (WebKit::RemoteLayerTreeContext::flushLayers):
        Add a list of out-of-tree GraphicsLayers which are flushed in addition
        to the page's GraphicsLayer tree, and functions to manipulate this list.

        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        Make RemoteLayerTreeDrawingArea a GraphicsLayerClient, so we can get callbacks
        from the GraphicsLayers that drive our page overlays.
        Override the relevant page overlay functions.
        Add storage for the root layer, view size, and a map of PageOverlay->GraphicsLayer.

        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::setRootCompositingLayer):
        Store the root GraphicsLayer for later use.

        (WebKit::RemoteLayerTreeDrawingArea::updateGeometry):
        Update the size of the page overlays when the DrawingArea's geometry changes.

        (WebKit::RemoteLayerTreeDrawingArea::updatePreferences):
        Update the page overlay settings when necessary.

        (WebKit::RemoteLayerTreeDrawingArea::didInstallPageOverlay):
        Create a GraphicsLayer for our page overlay, set it up, and parent it.
        Inform the RemoteLayerTreeContext that it will need to flush this GraphicsLayer,
        since it's not a part of the page's GraphicsLayer tree.

        (WebKit::RemoteLayerTreeDrawingArea::didUninstallPageOverlay):
        Tear down our page overlay's GraphicsLayer.

        (WebKit::RemoteLayerTreeDrawingArea::setPageOverlayNeedsDisplay):
        (WebKit::RemoteLayerTreeDrawingArea::setPageOverlayOpacity):
        (WebKit::RemoteLayerTreeDrawingArea::paintContents):
        (WebKit::RemoteLayerTreeDrawingArea::deviceScaleFactor):

2013-11-11  Anders Carlsson  <andersca@apple.com>

        Add a FrameLoadState object and begin moving loading related members from WebFrameProxy
        https://bugs.webkit.org/show_bug.cgi?id=124163

        Reviewed by Beth Dakin.

        * UIProcess/API/C/WKFrame.cpp:
        (WKFrameGetFrameLoadState):
        * UIProcess/FrameLoadState.cpp: Added.
        (WebKit::FrameLoadState::FrameLoadState):
        (WebKit::FrameLoadState::~FrameLoadState):
        * UIProcess/FrameLoadState.h: Added.
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::WebFrameProxy):
        (WebKit::WebFrameProxy::didStartProvisionalLoad):
        (WebKit::WebFrameProxy::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::WebFrameProxy::didFailProvisionalLoad):
        (WebKit::WebFrameProxy::didCommitLoad):
        (WebKit::WebFrameProxy::didFinishLoad):
        (WebKit::WebFrameProxy::didFailLoad):
        (WebKit::WebFrameProxy::didSameDocumentNavigation):
        (WebKit::WebFrameProxy::setUnreachableURL):
        * UIProcess/WebFrameProxy.h:
        (WebKit::WebFrameProxy::frameLoadState):
        (WebKit::WebFrameProxy::loadState):
        (WebKit::WebFrameProxy::url):
        (WebKit::WebFrameProxy::provisionalURL):
        (WebKit::WebFrameProxy::unreachableURL):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::activeURL):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::loadStateAtProcessExit):
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-11  Gergo Balogh  <geryxyz@inf.u-szeged.hu>

        Remove #include from test input of the *Messages.in processing scripts.
        https://bugs.webkit.org/show_bug.cgi?id=123563

        Reviewed by Darin Adler.

        * Scripts/webkit2/messages_unittest.py:

2013-11-11  Anders Carlsson  <andersca@apple.com>

        Remove block based APIs from the WebKit2 C API
        https://bugs.webkit.org/show_bug.cgi?id=124157

        Reviewed by Sam Weinig.

        Remove most of the block based C APIs from WebKit2. We want to discourage people from using
        them since any C API "objects" captured by blocks won't be implicitly retained which
        can lead to dangling pointer bugs.

        * UIProcess/API/C/WKDatabaseManager.cpp:
        * UIProcess/API/C/WKDatabaseManager.h:
        * UIProcess/API/C/WKFrame.cpp:
        * UIProcess/API/C/WKFrame.h:
        * UIProcess/API/C/WKPage.cpp:
        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/C/WKPagePrivate.h:

2013-11-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Crash when printing via javascript in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=124043

        Reviewed by Martin Robinson.

        It happens because the print operation when started by the
        WebProcess due to a DOM operation is supposed to be synchronous
        and our print operation is always asynchronous. This is currently
        handled only in the UI process because other ports print
        synchronously in the WebProcess. In the GTK+ port we need to
        notify the WebProcess that the print operation should run
        synchronously when request by a DOM operation. Together with the
        print settings and page setup we now send a print mode that can be
        sync or async. When printing in sync mode we run a nested main loop
        for the print operation, making sure that print sources have a
        higher priority.

        * Shared/PrintInfo.cpp:
        (WebKit::PrintInfo::encode): Encode the print mode.
        (WebKit::PrintInfo::decode): Decode the print mode.
        * Shared/PrintInfo.h: Add PrintMode enum.
        * Shared/gtk/PrintInfoGtk.cpp:
        (WebKit::PrintInfo::PrintInfo): Initialize print mode.
        * UIProcess/API/gtk/WebKitPrintOperation.cpp:
        (drawPagesForPrintingCompleted): Do not call endPrinting() when
        printing synchronously because WebPageProxy already calls it right
        after sending the message to the WebProcess.
        (webkitPrintOperationPrintPagesForFrame): Create the PrintInfo
        struct with a print mode.
        (webkitPrintOperationSetPrintMode): Helper private function to set
        the print mode of the print operation.
        * UIProcess/API/gtk/WebKitPrintOperationPrivate.h:
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewPrintFrame): Set sync print mode when printing due
        to a UIClient request.
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
        (WebKit::PrintPagesData::PrintPagesData): Create a main loop when
        printing synchronously.
        (WebKit::WebPrintOperationGtk::WebPrintOperationGtk): Initialize
        print mode.
        (WebKit::WebPrintOperationGtk::printPagesIdleDone): Finish the
        nested main loop when printing synchronously.
        (WebKit::WebPrintOperationGtk::print): Run a nested main loop when
        printing synchronously.
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.h:
        (WebKit::WebPrintOperationGtk::printMode): Return the print mode.

2013-11-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] [WebKit2] Crash when printing to a file via javascript
        https://bugs.webkit.org/show_bug.cgi?id=122801

        Reviewed by Martin Robinson.

        This crash is caused by a GTK+ bug, but we can work around it by
        ensuring the print dialog is always shown with a valid
        GtkPrintSettings object.

        * UIProcess/API/gtk/WebKitPrintOperation.cpp:
        (webkitPrintOperationRunDialog):

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

        Use createCFURLFromBuffer when converting a String to a CFURL
        https://bugs.webkit.org/show_bug.cgi?id=124113

        Reviewed by Anders Carlsson.

        * Shared/API/c/cf/WKURLCF.mm:
        (WKURLCopyCFURL): Replaced some code with a call to createCFURLFromBuffer(), which does the
        same thing.

        * Shared/Cocoa/WKNSURLExtras.h: Added.
        * Shared/Cocoa/WKNSURLExtras.mm: Added.
        (+[NSURL _web_URLWithWTFString:relativeToURL:]): Added. Returns nil for the null String,
        otherwise returns the result of createCFURLFromBuffer().

        * UIProcess/API/Cocoa/WKBackForwardListItem.mm:
        (-[WKBackForwardListItem URL]): Changed to use +_web_URLWithWTFString:relativeToURL:.
        (-[WKBackForwardListItem originalURL]): Ditto.

        * UIProcess/API/Cocoa/WKNavigationData.mm:
        (-[WKNavigationData destinationURL]): Ditto.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController unreachableURL]): Ditto.

        * WebKit2.xcodeproj/project.pbxproj: Added references to new files.

2013-11-09  Anders Carlsson  <andersca@apple.com>

        Encode form data using the KeyedEncoder
        https://bugs.webkit.org/show_bug.cgi?id=124107

        Reviewed by Sam Weinig.

        * Shared/cf/KeyedEncoder.cpp:
        (WebKit::KeyedEncoder::encodeBool):
        (WebKit::KeyedEncoder::encodeDouble):
        * Shared/cf/KeyedEncoder.h:

2013-11-09  Anders Carlsson  <andersca@apple.com>

        Remove an unused file.

        Rubber-stamped by Andreas Kling.

        * WebProcess/WebPage/gtk/ChunkedUpdateDrawingAreaGtk.cpp: Removed.

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

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

        Reviewed by Anders Carlsson.

        * DatabaseProcess/DatabaseProcess.cpp:
        * DatabaseProcess/DatabaseToWebProcessConnection.cpp:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        * NetworkProcess/NetworkProcess.cpp:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/mac/DiskCacheMonitor.h:
        * NetworkProcess/unix/NetworkProcessMainUnix.cpp:
        * Platform/CoreIPC/Connection.cpp:
        * Platform/CoreIPC/Connection.h:
        * Platform/CoreIPC/mac/ConnectionMac.cpp:
        * PluginProcess/EntryPoint/mac/LegacyProcess/PluginProcessMain.mm:
        * PluginProcess/EntryPoint/mac/XPCService/PluginServiceEntryPoint.mm:
        * PluginProcess/PluginControllerProxy.h:
        * PluginProcess/PluginProcess.cpp:
        * PluginProcess/PluginProcess.h:
        * PluginProcess/WebProcessConnection.cpp:
        * PluginProcess/unix/PluginProcessMainUnix.cpp:
        * Shared/ChildProcess.cpp:
        * Shared/ChildProcess.h:
        * Shared/ChildProcessProxy.cpp:
        * Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessEntryPoint.h:
        * Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessEntryPoint.mm:
        * Shared/Plugins/NPObjectProxy.cpp:
        * Shared/WebKit2Initialize.cpp:
        (WebKit::InitializeWebKit2):
        * UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
        * UIProcess/API/mac/FindIndicatorWindow.h:
        * UIProcess/API/mac/WKPrintingView.mm:
        * UIProcess/API/mac/WKView.mm:
        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.h:
        * UIProcess/DrawingAreaProxyImpl.h:
        * UIProcess/Launcher/efl/ProcessLauncherEfl.cpp:
        * UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        * UIProcess/ResponsivenessTimer.cpp:
        * UIProcess/ResponsivenessTimer.h:
        * UIProcess/VisitedLinkProvider.h:
        * UIProcess/WebContext.cpp:
        * UIProcess/WebProcessProxy.cpp:
        * WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
        * WebProcess/EntryPoint/mac/LegacyProcess/WebContentProcessMain.mm:
        * WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm:
        * WebProcess/Network/WebResourceLoadScheduler.h:
        * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h:
        * WebProcess/Plugins/Netscape/NetscapePlugin.h:
        * WebProcess/Plugins/Netscape/NetscapePluginStream.h:
        * WebProcess/Plugins/PluginView.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h:
        * WebProcess/WebPage/DrawingAreaImpl.h:
        * WebProcess/WebPage/EventDispatcher.cpp:
        * WebProcess/WebPage/PageOverlay.h:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebProcess.cpp:
        * WebProcess/efl/WebProcessMainEfl.cpp:
        * WebProcess/gtk/WebProcessMainGtk.cpp:

2013-11-08  Brady Eidson  <beidson@apple.com>

        Merge IDBDatabaseBackendInterface and IDBDatabaseBackendImpl
        https://bugs.webkit.org/show_bug.cgi?id=124088

        Reviewed by Tim Horton.

        This abstraction is no longer meaningful in its current form in WebCore.
        The current groundwork for the WK2 DatabaseProcess relied on this abstraction,
        but that will be reworked in a future patch.

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBDatabaseBackend.h:

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::maybeCreateTransactionBackend):
        (WebKit::WebIDBFactoryBackend::createCursorBackend):
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.cpp:
        (WebKit::WebProcessIDBDatabaseBackend::put):
        (WebKit::WebProcessIDBDatabaseBackend::openCursor):
        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h:

2013-11-08  Jaehun Lim  <ljaehun.lim@samsung.com>

        Unreviewed build fix after r158984.

        No needs to include "KeyedEncoder.h".
        WebKit/Source/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp:31:26: fatal error: KeyedEncoder.h: No such file or directory

        * WebProcess/WebPage/WebBackForwardListProxy.cpp: Removed #include line.

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

        Implement encoding of arrays of objects
        https://bugs.webkit.org/show_bug.cgi?id=124091

        Reviewed by Beth Dakin.

        Add a new array stack and push and pop from it accordingly.

        * Shared/cf/KeyedEncoder.cpp:
        (WebKit::KeyedEncoder::~KeyedEncoder):
        (WebKit::KeyedEncoder::encodeBytes):
        (WebKit::KeyedEncoder::encodeUInt32):
        (WebKit::KeyedEncoder::encodeInt32):
        (WebKit::KeyedEncoder::encodeInt64):
        (WebKit::KeyedEncoder::encodeFloat):
        (WebKit::KeyedEncoder::beginArray):
        (WebKit::KeyedEncoder::beginArrayElement):
        (WebKit::KeyedEncoder::endArrayElement):
        (WebKit::KeyedEncoder::endArray):
        * Shared/cf/KeyedEncoder.h:

2013-11-08  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: RemoteLayerBackingStore partial repaint is broken for the tile cache
        https://bugs.webkit.org/show_bug.cgi?id=123944

        Reviewed by Simon Fraser.

        Rework RemoteLayerBackingStore painting to fix some rounding issues
        that would cause pixel cracks upon repaint, and to speed it up a bit.

        * Shared/mac/RemoteLayerBackingStore.h:
        Redefine RepaintRectList because we can't include WebLayer.h here yet.
        Remove createBackingStore, which was never implemented.
        Remove mapToContentCoordinates, because we don't need it on Mac.

        (WebKit::RemoteLayerBackingStore::paintingRects): Added.

        * Shared/mac/RemoteLayerBackingStore.mm:
        (RemoteLayerBackingStore::setNeedsDisplay):
        (RemoteLayerBackingStore::display):
        Stop using mapToContentCoordinates.

        (RemoteLayerBackingStore::drawInContext):
        Use clipping instead of painting the image multiple times.
        Never repaint more than the dirty region's bounds.
        Don't waste time with all of the drawNativeImage code, just use CG.
        Unindent the switch's cases.
        Store the rects we're painting so that enumerateRectsBeingDrawn can get them.
        Pixel-snap the rects we're painting.
        Clip the context before going to paint.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::enumerateRectsBeingDrawn):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        Retrieve the rects currently being painted from our backing store, and
        transform them (mostly) according to the CTM, to match the transformation
        that will have occurred underneath wkCALayerEnumerateRectsBeingDrawnWithBlock.

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

        Implement more KeyedEncoder functionality
        https://bugs.webkit.org/show_bug.cgi?id=124089

        Reviewed by Beth Dakin.

        * Shared/cf/KeyedEncoder.cpp:
        (WebKit::KeyedEncoder::encodeBytes):
        (WebKit::KeyedEncoder::encodeInt32):
        (WebKit::KeyedEncoder::encodeFloat):
        * Shared/cf/KeyedEncoder.h:

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

        KeyedEncoder should be able to encoder objects
        https://bugs.webkit.org/show_bug.cgi?id=124085

        Reviewed by Sam Weinig.

        Add a dictionary stack to KeyedEncoder that's pushed and popped by
        beginObject/endObject.

        * Shared/cf/KeyedEncoder.cpp:
        (WebKit::KeyedEncoder::KeyedEncoder):
        (WebKit::KeyedEncoder::~KeyedEncoder):
        (WebKit::KeyedEncoder::encodeUInt32):
        (WebKit::KeyedEncoder::encodeString):
        (WebKit::KeyedEncoder::beginObject):
        (WebKit::KeyedEncoder::endObject):
        * Shared/cf/KeyedEncoder.h:

2013-11-08  Alexandru Chiculita  <achicu@adobe.com>

        Web Inspector: It should be possible to debug the Inspector code
        https://bugs.webkit.org/show_bug.cgi?id=124065

        Reviewed by Timothy Hatcher.

        When the script is paused, the debugger will pause all the pages in the same PageGroup.
        All the Inspector windows were created in the same PageGroup, so pausing one debugger
        would stop the other too.

        Added WebInspectorPageGroups to manage the PageGroups created for the Inspectors.
        The WebInspectors will now use the inspection "level" to figure out which PageGroup to use.
        The inspector that debugs the main page will use "__WebInspectorPageGroupLevel1__",
        the second inspector (that debugs the first inspector) will use "__WebInspectorPageGroupLevel2__" ...

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorPageGroups::shared):
        (WebKit::WebInspectorPageGroups::inspectorLevel):
        (WebKit::WebInspectorPageGroups::isInspectorPageGroup):
        (WebKit::WebInspectorPageGroups::inspectorPageGroupLevel):
        (WebKit::WebInspectorPageGroups::inspectorPageGroupForLevel):
        (WebKit::WebInspectorPageGroups::createInspectorPageGroup):
        (WebKit::WebInspectorProxy::WebInspectorProxy):
        (WebKit::WebInspectorProxy::inspectorPageGroup):
        (WebKit::WebInspectorProxy::isInspectorPage):
        (WebKit::WebInspectorProxy::canAttach):
        * UIProcess/WebInspectorProxy.h:

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

        Begin stubbing out a KeyedEncoder class in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=124079

        Reviewed by Sam Weinig.

        * Shared/KeyedEncoder.h: Removed.
        * Shared/cf/KeyedCodingValueCF.cpp: Removed.
        * Shared/cf/KeyedEncoder.cpp: Added.
        Remove old keyed encoders.

        (WebKit::createDictionary):
        Helper function to create a mutable dictionary.
        (WebKit::KeyedEncoder::KeyedEncoder):
        Create the root dictionary.

        (WebKit::KeyedEncoder::encodeUInt32):
        Create a CFNumberRef and add it to the dictionary.

        * Shared/cf/KeyedEncoder.h: Added.
        * WebKit2.xcodeproj/project.pbxproj:
        Add new files.

        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::updateBackForwardItem):
        Create a KeyedEncoder and encode the history tree.

2013-11-08  Brady Eidson  <beidson@apple.com>

        Merge IDBTransactionBackendInterface and IDBTransactionBackendImpl
        https://bugs.webkit.org/show_bug.cgi?id=124077

        Reviewed by Alexey Proskuryakov.

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

2013-11-08  Brady Eidson  <beidson@apple.com>

        Merge IDBCursorBackendInterface and IDBCursorBackendImpl
        https://bugs.webkit.org/show_bug.cgi?id=124068

        Reviewed by Anders Carlsson.

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::createCursorBackend):
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

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

        Remove a workaround for a bug in malloc on Symbian
        https://bugs.webkit.org/show_bug.cgi?id=124069

        Reviewed by Sam Weinig.

        * Platform/CoreIPC/ArgumentDecoder.cpp:
        (CoreIPC::ArgumentDecoder::~ArgumentDecoder):
        (CoreIPC::ArgumentDecoder::initialize):
        * Platform/CoreIPC/ArgumentDecoder.h:

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

        More build fixes.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        * UIProcess/API/mac/WKConnection.mm:
        (didReceiveMessage):

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

        More build fixes.

        * UIProcess/API/mac/WKConnection.h:
        * UIProcess/API/mac/WKConnection.mm:
        (didReceiveMessage):

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

        Try to fix the 32-bit build.

        * Shared/API/Cocoa/WKBrowsingContextHandleInternal.h:

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

        Replace __alignof with alignof.

        Rubber-stamped by Beth Dakin.

        * Platform/CoreIPC/ArgumentCoders.cpp:
        (CoreIPC::::encode):
        (CoreIPC::decodeStringText):
        * Platform/CoreIPC/ArgumentCoders.h:
        (CoreIPC::SimpleArgumentCoder::encode):
        (CoreIPC::SimpleArgumentCoder::decode):
        * Platform/CoreIPC/ArgumentDecoder.h:
        (CoreIPC::ArgumentDecoder::bufferIsLargeEnoughToContain):
        * WebProcess/WebPage/DecoderAdapter.cpp:
        (WebKit::DecoderAdapter::decodeString):
        * WebProcess/WebPage/EncoderAdapter.cpp:
        (WebKit::EncoderAdapter::encodeString):

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

        Add a way to get a WKWebProcessPlugInBrowserContextController from a handle
        https://bugs.webkit.org/show_bug.cgi?id=124063

        Reviewed by Beth Dakin.

        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (+[WKWebProcessPlugInBrowserContextController lookUpBrowsingContextFromHandle:]):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

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

        More work on WKBrowsingContextHandle
        https://bugs.webkit.org/show_bug.cgi?id=124060

        Reviewed by Beth Dakin.

        Implement -hash and -isEqual: and add -[WKWebProcessPlugInBrowserContextController handle].

        * Shared/API/Cocoa/WKBrowsingContextHandle.mm:
        (-[WKBrowsingContextHandle hash]):
        (-[WKBrowsingContextHandle isEqual:]):
        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (decodeInvocation):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController mainFrameDocument]):
        (-[WKWebProcessPlugInBrowserContextController selectedRange]):
        (-[WKWebProcessPlugInBrowserContextController handle]):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

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

        Add A WKBrowsingContextHandle class
        https://bugs.webkit.org/show_bug.cgi?id=124058

        Reviewed by Sam Weinig.

        The WKBrowsingContextHandle class represents a browsing context and can be sent across process boundaries.

        * Shared/API/Cocoa/WKBrowsingContextHandle.h: Added.
        * Shared/API/Cocoa/WKBrowsingContextHandle.mm: Added.
        (-[WKBrowsingContextHandle _initWithPageID:]):
        (-[WKBrowsingContextHandle encodeWithCoder:]):
        (-[WKBrowsingContextHandle initWithCoder:]):
        (+[WKBrowsingContextHandle supportsSecureCoding]):
        * Shared/API/Cocoa/WKBrowsingContextHandleInternal.h: Added.
        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController handle]):
        * UIProcess/API/mac/WKBrowsingContextControllerInternal.h:
        * UIProcess/API/mac/WKBrowsingContextControllerPrivate.h:
        (NS_ENUM):
        * WebKit2.xcodeproj/project.pbxproj:

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

        Add WKRemoteObjectRegistry to WKConnection
        https://bugs.webkit.org/show_bug.cgi?id=124054

        Reviewed by Sam Weinig.

        * UIProcess/API/mac/WKConnection.h:
        * UIProcess/API/mac/WKConnection.mm:
        (-[WKConnection delegate]):
        (-[WKConnection setDelegate:]):
        (-[WKConnection remoteObjectRegistry]):
        (didReceiveMessage):

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

        Encode and decode NSURLRequests using NSCoder
        https://bugs.webkit.org/show_bug.cgi?id=124051

        Reviewed by Sam Weinig.

        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (CoreIPC::archiveAndEncodeObject):
        (CoreIPC::decodeAndUnarchiveObject):
        (CoreIPC::::encodePlatformData):
        (CoreIPC::::decodePlatformData):

2013-11-07  Anders Carlsson  <andersca@apple.com>

        Encode and decode NSURLResponse objects using NSCoder
        https://bugs.webkit.org/show_bug.cgi?id=124028

        Reviewed by Andreas Kling.

        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (CoreIPC::::encodePlatformData):
        (CoreIPC::::decodePlatformData):

2013-11-07  Anders Carlsson  <andersca@apple.com>

        Move m_destinationID to MessageDecoder
        https://bugs.webkit.org/show_bug.cgi?id=124026

        Reviewed by Andreas Kling.

        * Platform/CoreIPC/ArgumentDecoder.h:
        * Platform/CoreIPC/MessageDecoder.h:
        (CoreIPC::MessageDecoder::destinationID):

2013-11-07  Anders Carlsson  <andersca@apple.com>

        Get rid of the out-of-line memory attachment type
        https://bugs.webkit.org/show_bug.cgi?id=124023

        Reviewed by Andreas Kling.

        We're only using out-of-line memory for when the message body is too big, so
        isolate that code in Connection and get rid of the out of line attachment type.

        * Platform/CoreIPC/Attachment.cpp:
        (CoreIPC::Attachment::Attachment):
        * Platform/CoreIPC/Attachment.h:
        (CoreIPC::Attachment::port):
        (CoreIPC::Attachment::disposition):
        * Platform/CoreIPC/mac/ConnectionMac.cpp:
        (CoreIPC::Connection::sendOutgoingMessage):
        (CoreIPC::createMessageDecoder):

2013-11-07  Simon Fraser  <simon.fraser@apple.com>

        Lots of layers get solid color but transparent contents layers now
        https://bugs.webkit.org/show_bug.cgi?id=123537

        Reviewed by Tim Horton.
        
        Add some properties to the list of things not to implicitly animate.

        * Shared/mac/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::disableActionsForLayer):

2013-11-07  Anders Carlsson  <andersca@apple.com>

        Remove more dead code
        https://bugs.webkit.org/show_bug.cgi?id=124016

        Reviewed by Beth Dakin.

        We're always layer backed now so we never scroll using the PageClient.

        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::canScrollView):
        (WebKit::PageClientImpl::scrollView):

2013-11-07  Anders Carlsson  <andersca@apple.com>

        Don't repaint the view when the web process crashes
        https://bugs.webkit.org/show_bug.cgi?id=124013

        Reviewed by Dan Bernstein.

        It's up to each individual port to decide whether the view should be repainted when the web process crashes.

        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::setViewNeedsDisplay):
        (WebKit::PageClientImpl::displayView):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetStateAfterProcessExited):

2013-11-07  Tamas Gergely  <gertom@inf.u-szeged.hu>

        Report error on unknown template class usage.
        https://bugs.webkit.org/show_bug.cgi?id=123096

        Reviewed by Darin Adler.

        Report error when template class is not found in the dictionary.

        * Scripts/webkit2/messages.py:
        (class_template_headers):
        (class_template_headers.template):

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:
        * PlatformGTK.cmake:

2013-11-07  Brendan Long  <b.long@cablelabs.com>

        [Gtk] Remove old takeFocus() method from PageClientImpl and mark methods as OVERRIDE
        https://bugs.webkit.org/show_bug.cgi?id=123919

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/gtk/PageClientImpl.cpp: Remove takeFocus().
        * UIProcess/API/gtk/PageClientImpl.h: Remove takeFocus() and mark methods as OVERRIDE.

2013-11-06  Dan Bernstein  <mitz@apple.com>

        Moved UIProcess/Cocoa to UIProcess/API/Cocoa.

        Rubber-stamped by Anders Carlsson.

        * UIProcess/API/Cocoa: Copied from Source/WebKit2/UIProcess/Cocoa.
        * UIProcess/Cocoa: Removed.
        * UIProcess/Cocoa/WKBackForwardList.h: Removed.
        * UIProcess/Cocoa/WKBackForwardList.mm: Removed.
        * UIProcess/Cocoa/WKBackForwardListInternal.h: Removed.
        * UIProcess/Cocoa/WKBackForwardListItem.h: Removed.
        * UIProcess/Cocoa/WKBackForwardListItem.mm: Removed.
        * UIProcess/Cocoa/WKBackForwardListItemInternal.h: Removed.
        * UIProcess/Cocoa/WKBrowsingContextHistoryDelegate.h: Removed.
        * UIProcess/Cocoa/WKNavigationData.h: Removed.
        * UIProcess/Cocoa/WKNavigationData.mm: Removed.
        * UIProcess/Cocoa/WKNavigationDataInternal.h: Removed.
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-06  Brendan Long  <b.long@cablelabs.com>

        [Gtk][EFL] Fix build after r158759
        https://bugs.webkit.org/show_bug.cgi?id=123910

        Reviewed by Gyuyoung Kim.

        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.cpp:
        (WebKit::CoordinatedDrawingAreaProxy::incorporateUpdate): Remove call to flashBackingStoreUpdates().

2013-11-06  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: RemoteLayerTreeDrawingArea doesn't make layers for fixedpos elements
        https://bugs.webkit.org/show_bug.cgi?id=123943

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::updatePreferences):
        Make fixed position elements create compositing layers and stacking contexts
        in the RemoteLayerTreeDrawingArea just like they do in TiledCoreAnimationDrawingArea.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::updatePreferences):
        Fix the comment, since we have long since achieved this goal.

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

        Implement enough functionality so that NSURLRequest objects can be decoded
        https://bugs.webkit.org/show_bug.cgi?id=123942

        Reviewed by Andreas Kling.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (-[WKRemoteObjectEncoder requiresSecureCoding]):
        Add new method. Return YES.

        (-[WKRemoteObjectDecoder decodeValueOfObjCType:at:]):
        Add new method. This currently only handles 'i', but we'll add more variants as needed.

        (-[WKRemoteObjectDecoder decodeBoolForKey:]):
        Get a WebBoolean from the dictionary and return its value.

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

        Encoded object stream should be sequential
        https://bugs.webkit.org/show_bug.cgi?id=123939

        Reviewed by Andreas Kling.

        Reserve space in the object stream for objects that are to be encoded, otherwise
        the object stream will not be sequential.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (encodeToObjectStream):
        * Shared/ImmutableArray.h:
        (WebKit::ImmutableArray::entries):

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

        Allow property list classes to exist in containers
        https://bugs.webkit.org/show_bug.cgi?id=123938

        Reviewed by Andreas Kling.

        * Shared/API/Cocoa/WKRemoteObjectInterface.mm:
        (isContainerClass):
        Return whether a given class is a container class.

        (propertyListClasses):
        Return the set of property list classes.

        (allowedArgumentClassesForMethod):
        Allow all property list classes for container type arguments.

2013-11-06  Daniel Bates  <dabates@apple.com>

        [iOS] Upstream Letterpress effect
        https://bugs.webkit.org/show_bug.cgi?id=123932

        Reviewed by Sam Weinig.

        Add feature define ENABLE_LETTERPRESS disabled by default. We only enable
        letterpress on iOS.

        * Configurations/FeatureDefines.xcconfig:

2013-11-06  Dan Bernstein  <mitz@apple.com>

        Fixed multiple API test failures after r158764.

        Reviewed by Sam Weinig.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (setUpPagePolicyClient): If the delegate isn’t set or doesn’t respond to a selector, respond
        with WKFramePolicyListenerUse().

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

        Move allowed classes handling to decodeObject
        https://bugs.webkit.org/show_bug.cgi?id=123930

        Reviewed by Andreas Kling.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (decodeObjectFromObjectStream):
        Pass allowed classes through to decodeObject.

        (decodeObject):
        Update to take an NSSet of allowed classes. If the set is nil, use the current set.

        (-[WKRemoteObjectDecoder decodeObjectOfClasses:forKey:]):
        Pass classes to decodeObject.

2013-11-06  Sergio Correia  <sergio.correia@openbossa.org>

        Fix EFL build after r158753
        https://bugs.webkit.org/show_bug.cgi?id=123923

        r158753 renamed WKNavigationData.h as WKNavigationDataRef.h, so
        update it in UIProcess/API/efl/ewk_navigation_data_private.h.

        Reviewed by Csaba Osztrogonác.

        * UIProcess/API/efl/ewk_navigation_data_private.h:

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

        Implement more decoding methods
        https://bugs.webkit.org/show_bug.cgi?id=123922

        Reviewed by Dan Bernstein.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (-[WKRemoteObjectDecoder decodeObjectForKey:]):
        Call decodeObjectOfClasses:forKey: passing nil as the classes set.

        (-[WKRemoteObjectDecoder decodeInt64ForKey:]):
        Try to get a WebUInt64 and return its value.

        (-[WKRemoteObjectDecoder decodeDoubleForKey:]):
        Try to get a WebDouble and return its value.

        (-[WKRemoteObjectDecoder decodeBytesForKey:returnedLength:]):
        Move this method next to the other decoding methods.

        (-[WKRemoteObjectDecoder requiresSecureCoding]):
        Ditto.

2013-11-06  Brendan Long  <b.long@cablelabs.com>

        [Gtk][EFL] Fix build after r158759
        https://bugs.webkit.org/show_bug.cgi?id=123910

        Reviewed by Gustavo Noronha Silva.

        * UIProcess/API/gtk/PageClientImpl.cpp: Remove flashBackingStoreUpdates().
        * UIProcess/API/gtk/PageClientImpl.h: Same.
        * UIProcess/CoordinatedGraphics/WebView.cpp: Same.
        * UIProcess/CoordinatedGraphics/WebView.h: Same.
        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::incorporateUpdate): Don't call flashBackingStoreUpdates().

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

        Unreviewed Mac build fix; include ResourceResponse.

        * Shared/WebNavigationDataStore.h:

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

        Decode invocation arguments
        https://bugs.webkit.org/show_bug.cgi?id=123917

        Reviewed by Sam Weinig.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (-[WKRemoteObjectDecoder initWithInterface:rootObjectDictionary:WebKit::]):
        Initialize the object stream.

        (decodeObjectFromObjectStream):
        Check that we're not reading past the end of the stream, then decode the object.

        (decodeInvocationArguments):
        Decode arguments from the object stream.

        (decodeInvocation):
        Call decodeInvocationArguments and set up the selector argument.
        
        * Shared/ImmutableArray.h:
        (WebKit::ImmutableArray::at):
        (WebKit::ImmutableArray::size):
        (WebKit::ImmutableArray::entries):
        Constify.

2013-11-06  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Add -[WKNavigationData response]
        https://bugs.webkit.org/show_bug.cgi?id=123918

        Reviewed by Sam Weinig.

        * Shared/WebNavigationDataStore.h: Added a ResourceResponse data member.
        (WebKit::WebNavigationDataStore::encode): Encode the response.
        (WebKit::WebNavigationDataStore::decode): Decode the response.
        * UIProcess/Cocoa/WKNavigationData.h: Declared new property.
        * UIProcess/Cocoa/WKNavigationData.mm:
        (-[WKNavigationData response]): Added.
        * UIProcess/WebNavigationData.h:
        (WebKit::WebNavigationData::response): Added.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::updateGlobalHistory): Set the response in the data store.

2013-11-06  Sam Weinig  <sam@webkit.org>

        Fix the 32-bit build.

        * UIProcess/API/mac/WKBrowsingContextController.h:
        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController dealloc]):
        (-[WKBrowsingContextController _initWithPageRef:]):

2013-11-06  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Add -[WKBrowsingContextController unreachableURL]
        https://bugs.webkit.org/show_bug.cgi?id=123909

        Reviewed by Anders Carlsson.

        * UIProcess/API/mac/WKBrowsingContextController.h: Declared unreachableURL property.
        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController unreachableURL]): Added.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::unreachableURL): Added.
        * UIProcess/WebPageProxy.h:

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

        Encode parameters as objects
        https://bugs.webkit.org/show_bug.cgi?id=123912

        Reviewed by Beth Dakin.

        We want to ensure that the objects have the right types when decoded, so just encode them as objects.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (encodeInvocation):
        (-[WKRemoteObjectEncoder encodeValueOfObjCType:at:]):

2013-11-06  Sam Weinig  <sam@webkit.org>

        Add WKBrowsingContextPolicyDelegate
        https://bugs.webkit.org/show_bug.cgi?id=123904

        Reviewed by Anders Carlsson.

        * UIProcess/API/mac/WKBrowsingContextController.h:
        * UIProcess/API/mac/WKBrowsingContextController.mm:
        Implement a WKPagePolicyClient in terms of the new WKBrowsingContextPolicyDelegate protocol.
        
        * UIProcess/API/mac/WKBrowsingContextPolicyDelegate.h: 
        Added.

        * UIProcess/API/mac/WebKit2.h:
        Add new #include of WKBrowsingContextPolicyDelegate.h

        * WebKit2.xcodeproj/project.pbxproj:
        Add new file.

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

        WKRemoteObjectInterface should keep track of allowed decodable classes
        https://bugs.webkit.org/show_bug.cgi?id=123903

        Reviewed by Sam Weinig.

        * Shared/API/Cocoa/WKRemoteObjectInterface.mm:
        (allowedArgumentClassesForMethod):
        Helper function that returns a vector of sets of allowed classes for each method argument.

        (initializeAllowedArgumentClasses):
        Iterate over the methods in the protocol, get the extended method type encoding and create an
        NSMethodSignature from it. Finally, pass the signature to allowedArgumentClassesForMethod.

        (initializeAllowedArgumentClasses):
        Call the other initializeAllowedArgumentClasses twice, once for required methods,
        and once for optional methods.

        (-[WKRemoteObjectInterface initWithProtocol:identifier:]):
        Call initializeAllowedArgumentClasses.

        (-[WKRemoteObjectInterface _allowedArgumentClassesForSelector:]):
        Add new getter.

        * Shared/API/Cocoa/WKRemoteObjectInterfaceInternal.h:

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

        Remove dead code
        https://bugs.webkit.org/show_bug.cgi?id=123902

        Reviewed by Tim Horton.

        Remove the PageClient::containingWindowGraphicsContext() as well as the
        WKPageSetDebugPaintFlags and WKPageGetDebugPaintFlags API functions.

        * UIProcess/API/C/WKPage.cpp:
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::searchTheWeb):

2013-11-06  Dan Bernstein  <mitz@apple.com>

        Promoted WKBrowsingContextHistoryDelegate.h to private.

        Rubber-stamped by Sam Weinig.

        * WebKit2.xcodeproj/project.pbxproj:

2013-11-06  Dan Bernstein  <mitz@apple.com>

        [Cocoa] History delegate
        https://bugs.webkit.org/show_bug.cgi?id=123837

        Reviewed by Sam Weinig.

        * Shared/Cocoa/APIObject.mm:
        (WebKit::APIObject::newObject): Allocate a WKNavigationData if the object is a
        WebNavigationData.

        * Shared/Cocoa/WKNSString.h:
        (WebKit::wrapper): Added. Returns a WebString’s wrapper as an NSString.

        * Shared/Cocoa/WKNSURL.h:
        (WebKit::wrapper): Added. Returns a WebURL’s wrapper as an NSURL.

        * UIProcess/API/C/WKNavigationData.cpp: Renamed.
        * UIProcess/API/C/WKNavigationData.h: Renamed.
        * UIProcess/API/C/WKNavigationDataRef.cpp: Copied from Source/WebKit2/UIProcess/API/C/WKNavigationData.cpp.
        * UIProcess/API/C/WKNavigationDataRef.h: Copied from Source/WebKit2/UIProcess/API/C/WKNavigationData.h.

        * UIProcess/API/mac/WKBrowsingContextController.h: Declared historyDelegate property.

        * UIProcess/API/mac/WKProcessGroup.mm:
        (didNavigateWithNavigationData): Added history client callback that calls the browsing
        context’s history delegate.
        (didPerformClientRedirect): Ditto.
        (didPerformServerRedirect): Ditto.
        (didUpdateHistoryTitle): Ditto.
        (setUpHistoryClient): Added.
        (-[WKProcessGroup initWithInjectedBundleURL:]): Added call to setUpHistoryClient.
        (-[WKProcessGroup dealloc]): Clear the history client.

        * UIProcess/Cocoa/WKBrowsingContextHistoryDelegate.h: Added.

        * UIProcess/Cocoa/WKNavigationData.h: Added.
        * UIProcess/Cocoa/WKNavigationData.mm: Added.
        (-[WKNavigationData dealloc]): Calls the WebNavigationData destructor.
        (-[WKNavigationData title]): Added.
        (-[WKNavigationData originalRequest]): Added.
        (-[WKNavigationData destinationURL]): Added.
        (-[WKNavigationData _apiObject]): Returns the wrapped WebNavigationData.
        * UIProcess/Cocoa/WKNavigationDataInternal.h: Added.
        (WebKit::wrapper): Added. Returns a WebNavigationData’s wrapper as a WKNavigationData.
        * WebKit2.xcodeproj/project.pbxproj: Updated for renames and additions.

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

        Begin work on decoding invocations
        https://bugs.webkit.org/show_bug.cgi?id=123838

        Reviewed by Dan Bernstein.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (encodeInvocation):
        Declare the type string and selector keys as constants.

        (encodeObject):
        Make sure to encode the class name for NSInvocations as well.

        (decodeInvocation):
        Figure out the local and remove method signatures and make sure that they are equal.

        * Shared/API/Cocoa/WKRemoteObjectInterface.mm:
        (methodArgumentTypeEncodingForSelector):
        Helper function that returns the type encoding for a given selector.

        (-[WKRemoteObjectInterface _methodSignatureForSelector:]):
        Helper function that returns a method signature for the method with the name referred to by selector.

        * Shared/API/Cocoa/WKRemoteObjectInterfaceInternal.h: Added.
        Add internal header.

        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        (-[WKRemoteObjectRegistry _invokeMessageWithInterfaceIdentifier:encodedInvocation:]):
        Pass the right object to the WKRemoteObjectDecoder initializer and decode the invocation.

        * WebKit2.xcodeproj/project.pbxproj:
        Add internal header.

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

        WKRemoteObjectDecoder should know which interface it's decoding for
        https://bugs.webkit.org/show_bug.cgi?id=123833

        Reviewed by Andreas Kling.

        Move the interface identifier out into the root object body dictionary and make 
        the encoded invocation a sibling of it. That way we can look up the interface before
        creating the decoder.
        
        Also, manage exported objects and interfaces in a separate hash map.

        * Shared/API/Cocoa/WKRemoteObjectCoder.h:
        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (-[WKRemoteObjectDecoder initWithInterface:rootObjectDictionary:WebKit::]):
        (decodeInvocation):
        (decodeObject):
        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        (-[WKRemoteObjectRegistry registerExportedObject:interface:]):
        (-[WKRemoteObjectRegistry unregisterExportedObject:interface:]):
        (-[WKRemoteObjectRegistry _sendInvocation:interface:]):
        (-[WKRemoteObjectRegistry _handleMessageWithName:body:]):
        (-[WKRemoteObjectRegistry _invokeMessageWithInterfaceIdentifier:encodedInvocation:]):

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

        Add support for decoding NSStrings
        https://bugs.webkit.org/show_bug.cgi?id=123829

        Reviewed by Andreas Kling.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (encodeObject):
        (-[WKRemoteObjectDecoder allowsKeyedCoding]):
        Always return YES.

        (-[WKRemoteObjectDecoder containsValueForKey:]):
        Look up the key in the current dictionary.

        (-[WKRemoteObjectDecoder decodeBytesForKey:returnedLength:]):
        Try to get the WebData object and return its data + size.

        (-[WKRemoteObjectDecoder requiresSecureCoding]):
        Return YES.

        (checkIfClassIsAllowed):
        Check if the class or any of its superclasses are are allowed.

        (validateClass):
        Call checkIfClassIsAllowed and validate that the class conforms to NSSecureCoding.

        (decodeObject):
        Get the class name, verify that the class exists and is allowed. 
        Allocate and initialize an object using initWithCoder:.

        (-[WKRemoteObjectDecoder decodeObjectOfClasses:forKey:]):
        Set the allowed classes, look up the object in _currentDictionary and call decodeObject.

        (-[WKRemoteObjectDecoder allowedClasses]):
        Return _allowedClasses.

        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        (-[WKRemoteObjectRegistry _sendInvocation:interface:]):
        Declare interfaceIdentifier as a constant.

        (-[WKRemoteObjectRegistry _invokeMessageWithBody:]):
        Decode the interface identifier.

        * Shared/ImmutableDictionary.h:
        (WebKit::ImmutableDictionary::get):
        (WebKit::ImmutableDictionary::size):
        (WebKit::ImmutableDictionary::map):
        Make member functions const.

2013-11-05  Benjamin Poulain  <benjamin@webkit.org>

        Fix Mountain Lion Debug bot after r158689

        Unreviewed.

        It looks like WebGeolocationManagerProxy::stopUpdating() and WebGeolocationManagerProxy::processDidClose()
        are racing in some cases, causing the assertion to fail.

        That case is handled properly in the last if() branch of WebGeolocationManagerProxy::removeRequester().
        This patch remove the overzealous assertion.

        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::removeRequester):

2013-11-05  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Apply layer changes to LayerTypeCustom layers to the custom layer in the Web process, not to the CALayerHost
        https://bugs.webkit.org/show_bug.cgi?id=123818

        Reviewed by Anders Carlsson.

        Changes to the properties of a PlatformCALayer of type LayerTypeCustom are intended
        to affect the custom CALayer; however, we were bundling them up with the transaction
        and applying them to the CALayerHost, leading to important properties being lost.

        Instead, apply them to the Web-process-side CALayer when building the transaction.

        * Shared/mac/RemoteLayerTreePropertyApplier.h: Added.
        * Shared/mac/RemoteLayerTreePropertyApplier.mm: Added.
        (WebKit::cgColorFromColor):
        (WebKit::toCAFilterType):
        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
        (WebKit::RemoteLayerTreePropertyApplier::disableActionsForLayer):
        Move code to apply LayerProperties to a CALayer from RemoteLayerTreeHost.
        Move code to disable actions on a CALayer from RemoteLayerTreeHost.

        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::commit):
        (WebKit::RemoteLayerTreeHost::createLayer):
        Use RemoteLayerTreePropertyApplier.
        Hand it a map of LayerID->CALayer so that it can look up related layers
        for children and mask layers.

        * WebKit2.xcodeproj/project.pbxproj:
        Add RemoteLayerTreePropertyApplier.{h,mm}

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::recursiveBuildTransaction):
        Upon commit, apply changes to LayerTypeCustom layers to the platform layer.
        Setting children or maskLayer won't work, since we don't know about other raw CALayers.
        This is OK, since nothing uses those properties on custom layers.

        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.cpp:
        (PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):
        Disable actions on the root custom layer.

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

        Begin work on a WKRemoteObjectDecoder object
        https://bugs.webkit.org/show_bug.cgi?id=123819

        Reviewed by Dan Bernstein.

        * Shared/API/Cocoa/WKRemoteObjectCoder.h:
        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (-[WKRemoteObjectDecoder initWithRootObjectDictionary:]):
        Add designated initializer.

        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        (-[WKRemoteObjectRegistry _handleMessageWithName:body:]):
        If the message has the expected name and body type, pass it along to -_invokeMessageWithBody:.

        (-[WKRemoteObjectRegistry _invokeMessageWithBody:]):
        Create a decoder.

2013-11-05  Benjamin Poulain  <benjamin@webkit.org>

        [WK2] Add a WebKit2 API for Geolocation's highAccuracy
        https://bugs.webkit.org/show_bug.cgi?id=123786

        Reviewed by Darin Adler.

        This adds support for highAccuracy Geolocation with WebKit2.

        The key is to track which page/requester need what kind of geolocation
        in order to change between high and low accuracy as pages run and disappear.

        WebGeolocationManager and WebGeolocationManagerProxy have very similar roles
        but for different sources:
        -WebGeolocationManager tracks which live page require high accuracy geolocation.
         When the state changes, it forward the information to the UIProcess.
        -WebGeolocationManagerProxy tracks which WebContent processes needs high accuracy.

        * Shared/APIClientTraits.cpp:
        * Shared/APIClientTraits.h:
        * UIProcess/API/C/WKGeolocationManager.h:
        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::startUpdating):
        (WebKit::WebGeolocationManagerProxy::removeRequester):
        (WebKit::WebGeolocationManagerProxy::setEnableHighAccuracy):
        * UIProcess/WebGeolocationManagerProxy.h:
        (WebKit::WebGeolocationManagerProxy::isUpdating):
        (WebKit::WebGeolocationManagerProxy::isHighAccuracyEnabled):
        * UIProcess/WebGeolocationManagerProxy.messages.in:
        * UIProcess/WebGeolocationProvider.cpp:
        (WebKit::WebGeolocationProvider::setEnableHighAccuracy):
        * UIProcess/WebGeolocationProvider.h:
        * WebProcess/Geolocation/WebGeolocationManager.cpp:
        (WebKit::WebGeolocationManager::registerWebPage):
        (WebKit::WebGeolocationManager::unregisterWebPage):
        (WebKit::WebGeolocationManager::setEnableHighAccuracyForPage):
        * WebProcess/Geolocation/WebGeolocationManager.h:
        (WebKit::WebGeolocationManager::isUpdating):
        (WebKit::WebGeolocationManager::isHighAccuracyEnabled):
        * WebProcess/WebCoreSupport/WebGeolocationClient.cpp:
        (WebKit::WebGeolocationClient::setEnableHighAccuracy):

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

        Implement more NSCoder methods
        https://bugs.webkit.org/show_bug.cgi?id=123815

        Reviewed by Dan Bernstein.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (encodeObject):
        Assert that object is not nil.

        (createEncodedObject):
        Handle nil objects.

        (-[WKRemoteObjectEncoder encodeValueOfObjCType:at:]):
        Call the right object stream encoding function based on the object type.

        (-[WKRemoteObjectEncoder encodeBool:forKey:]):
        (-[WKRemoteObjectEncoder encodeInt64:forKey:]):
        (-[WKRemoteObjectEncoder encodeDouble:forKey:]):
        Create APIObjects and add them to the current dictionary.

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

        Encode the class name
        https://bugs.webkit.org/show_bug.cgi?id=123813

        Reviewed by Dan Bernstein.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (encodeObject):
        Get the Class using -[NSObject classForCoder] and encode its name in the object dictionary.

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

        Clean up the WKRemoteObjectEncoder code
        https://bugs.webkit.org/show_bug.cgi?id=123811

        Reviewed by Dan Bernstein.

        Add a new object stream array to be used for the non-keyed encoding values
        and free functions for encoding values to the object stream. Simplify object encoding
        by moving the dictionary creation out into a separate function and ditching the block based methods.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (ensureObjectStream):
        Add helper function to create an object stream.

        (encodeToObjectStream):
        Add overloads for encoding values into the object streams.

        (encodeInvocation):
        Add helper function for encoding an NSInvocation.

        (encodeObject):
        Call encodeInvocation if needed, otherwise just use encodeWithCoder:.

        (createEncodedObject):
        Helper function that sets up a dictionary, encodes the object into the dictionary and then returns the dictionary.

        (-[WKRemoteObjectEncoder encodeObject:forKey:]):
        Call createEncodedObject.    

2013-11-04  Brady Eidson  <beidson@apple.com>

        IDB: Split backend Cursors and Transactions into their own files
        https://bugs.webkit.org/show_bug.cgi?id=123789

        Reviewed by Alexey Proskuryakov.

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::createCursorBackend):
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

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

        DumpRenderTree should reset its preferences file on launch
        https://bugs.webkit.org/show_bug.cgi?id=29751

        Reviewed by Dan Bernstein.

        * UIProcess/mac/WKFullKeyboardAccessWatcher.mm:
        (-[WKFullKeyboardAccessWatcher retrieveKeyboardUIModeFromPreferences:]):
        Further fix reading of AppleKeyboardUIMode - reading it from kCFPreferencesAnyApplication
        domain meant that current application's domain was explcitly ignored, and the only
        way to override the setting in WTR was through argument domain.

2013-11-04  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Make LayerTypeCustom remote-host CALayers from the Web process
        https://bugs.webkit.org/show_bug.cgi?id=123766

        Reviewed by Anders Carlsson.

        Put each LayerTypeCustom layer into a CAContext, so that we can
        host small CALayer trees (for video, plugins, etc.) from the Web process
        to the UI process without proxying their (more complex) content.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::decode):
        (WebKit::RemoteLayerTreeTransaction::dump):
        Store, encode, and dump the CAContext ID of custom layers.

        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::createLayer):
        Create a CALayerHost with the CAContext ID from the Web process.

        * WebKit2.xcodeproj/project.pbxproj:
        Add PlatformCALayerRemoteCustom.

        * WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp:
        (WebKit::GraphicsLayerCARemote::createPlatformCALayer):
        Call the newly-added custom-layer constructor.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::create):
        (PlatformCALayerRemote::PlatformCALayerRemote):
        Move the call to layerWasCreated() out to ::create(), so that all of
        the constructors for this class and all subclasses have completed
        before we call it (so that layerWasCreated() can store the context ID
        in the created layer properties object).

        (WebKit::PlatformCALayerRemote::hostingContextID):
        Should never be reached on the base class, only PlatformCALayerRemoteCustom.

        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.cpp: Added.
        (PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):
        (PlatformCALayerRemoteCustom::~PlatformCALayerRemoteCustom):
        (PlatformCALayerRemoteCustom::hostingContextID):
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.h: Added.
        Add PlatformCALayerRemoteCustom, which owns a LayerHostingContext
        which it will use to share a custom CALayer tree with the UI process.

        * WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.cpp:
        Drive-by remove an unnecessary include.

        * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::layerWasCreated):
        Store the CAContext ID with the layer creation properties so it can
        be used to create a CALayerHost upon commit in the UI process.

2013-11-04  Tim Horton  <timothy_horton@apple.com>

        Remove PlatformCALayer::playerLayer
        https://bugs.webkit.org/show_bug.cgi?id=123764

        Reviewed by Sam Weinig.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        Remove playerLayer().

2013-11-04  Anders Carlsson  <andersca@apple.com>

        WKRemoteObjectEncoder should escape keys
        https://bugs.webkit.org/show_bug.cgi?id=123761

        Reviewed by Tim Horton.

        Keys that start with $ will be reserved for use by the coder, so prepend an extra
        $ to keys that already start with $ to avoid clashes.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (escapeKey):
        (-[WKRemoteObjectEncoder encodeBytes:length:forKey:]):
        (-[WKRemoteObjectEncoder _encodeObjectForKey:usingBlock:]):

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

        [WK2] Update WebGeolocationManager to support multiple WebContent processes
        https://bugs.webkit.org/show_bug.cgi?id=123658

        Reviewed by Anders Carlsson.

        Change WebGeolocationManagerProxy to track which WebProcessProxy needs geolocation.

        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::disconnectProcess):
        WebContext::disconnectProcess does not handle ContextSupplement yet when using multiple
        WebContent processes. Add an explicit call for WebGeolocationManagerProxy as a temporary
        solution.

        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy):
        (WebKit::WebGeolocationManagerProxy::contextDestroyed):
        (WebKit::WebGeolocationManagerProxy::processDidClose):
        (WebKit::WebGeolocationManagerProxy::startUpdating):
        (WebKit::WebGeolocationManagerProxy::stopUpdating):
        (WebKit::WebGeolocationManagerProxy::removeRequester):
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebGeolocationManagerProxy.messages.in:

2013-11-01  Jer Noble  <jer.noble@apple.com>

        [PluginProxy] Add a setting to disable video plugin proxy support in HTMLMediaElement.
        https://bugs.webkit.org/show_bug.cgi?id=123621

        Reviewed by Eric Carlson.

        Add WebKit2 functions for setting then new isVideoPluginProxyEnabled preference.

        * Shared/WebPreferencesStore.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetVideoPluginProxyEnabled):
        (WKPreferencesGetVideoPluginProxyEnabled):
        * UIProcess/API/C/WKPreferences.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2013-11-04  Anders Carlsson  <andersca@apple.com>

        More WKRemoteObjectRegistry work
        https://bugs.webkit.org/show_bug.cgi?id=123754

        Reviewed by Dan Bernstein.

        * Shared/API/Cocoa/WKRemoteObjectCoder.h:
        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (-[WKRemoteObjectEncoder rootObjectDictionary]):
        Add a getter for the root object dictionary.

        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        (-[WKRemoteObjectRegistry _sendInvocation:interface:]):
        Call _sendMessageWithBody:.
        (-[WKRemoteObjectRegistry _sendMessageWithBody:]):
        Call WebConnection::postMessage.

2013-11-03  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Wrappers' -copyWithZone: should copy if the collection is mutable
        https://bugs.webkit.org/show_bug.cgi?id=123707

        Reviewed by Geoff Garen and Anders Carlsson.

        * Shared/Cocoa/WKNSArray.mm:
        (-[WKNSArray copyWithZone:]): If the array is mutable, make a copy.
        * Shared/Cocoa/WKNSDictionary.mm:
        (-[WKNSDictionary copyWithZone:]): If the dictionary is mutable, make a copy.
        * Shared/ImmutableArray.h:
        (WebKit::ImmutableArray::entries): Added this accessor.

2013-11-03  Dan Bernstein  <mitz@apple.com>

        Reverted r158538.

        * Shared/Cocoa/WKNSArray.mm:
        (-[WKNSArray copyWithZone:]):
        * Shared/Cocoa/WKNSDictionary.mm:
        (-[WKNSDictionary copyWithZone:]):
        * Shared/ImmutableArray.h:

2013-11-03  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Wrappers' -copyWithZone: should copy if the collection is mutable
        https://bugs.webkit.org/show_bug.cgi?id=123707

        Reviewed by Geoff Garen.

        * Shared/Cocoa/WKNSArray.mm:
        (-[WKNSArray copyWithZone:]): If the array is mutable, make a copy.
        * Shared/Cocoa/WKNSDictionary.mm:
        (-[WKNSDictionary copyWithZone:]): If the dictionary is mutable, make a copy.
        * Shared/ImmutableArray.h:
        (WebKit::ImmutableArray::entries): Added this accessor.

2013-11-02  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Wrappers mishandle NULL values in arrays and dictionaries
        https://bugs.webkit.org/show_bug.cgi?id=123671

        Reviewed by Darin Adler.

        * Shared/Cocoa/WKNSArray.mm:
        (-[WKNSArray objectAtIndex:]): Represent a NULL object as NSNull.
        * Shared/Cocoa/WKNSDictionary.mm:
        (-[WKNSDictionary objectForKey:]): Represent a NULL value as NSNull.
        * Shared/ImmutableDictionary.h:
        (WebKit::ImmutableDictionary::get): Added this overload that returns whether the key exists.

2013-11-02  Dan Bernstein  <mitz@apple.com>

        Fixed release builds.

        * Shared/Cocoa/WKNSDictionary.mm:
        (-[WKNSDictionary initWithObjects:forKeys:count:]):

2013-11-02  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Add WKNSDictionary
        https://bugs.webkit.org/show_bug.cgi?id=123660

        Reviewed by Anders Carlsson.

        * Shared/Cocoa/APIObject.mm:
        (WebKit::APIObject::newObject): Allocate a WKNSDictionary if the APIObject is a dictionary.
        * Shared/Cocoa/WKNSDictionary.h: Added.
        (WebKit::wrapper):  Added. Returns an ImmutableDictionary’s wrapper as an NSDictionary.
        * Shared/Cocoa/WKNSDictionary.mm: Added.
        (-[WKNSDictionary dealloc]): Calls the ImmutableDictionary destructor.
        (-[WKNSDictionary count]): Added.
        (-[WKNSDictionary objectForKey:]): Added.
        (-[WKNSDictionary keyEnumerator]): Added.
        (-[WKNSDictionary copyWithZone:]): Retains self.
        (-[WKNSDictionary _apiObject]): Returns the wrapped ImmutableDictionary.
        * WebKit2.xcodeproj/project.pbxproj: Added references to new files.

2013-11-02  Tim Horton  <timothy_horton@apple.com>

        Address some review comments noted in r158463
        https://bugs.webkit.org/show_bug.cgi?id=123646

        Reviewed by Darin Adler.

        * Shared/mac/RemoteLayerBackingStore.mm:
        Put our __has_include ifs all on one line.

        (createIOSurface):
        IOSurfaceAlignProperty returns size_t, not unsigned long.

        (RemoteLayerBackingStore::display):
        (RemoteLayerBackingStore::drawInContext):
        Create the frontImage in display() and hand it to drawInContext().

        Use the GraphicsContext API instead of CG itself for clearRect().

        When using ShareableBitmap, replace m_frontBuffer instead of
        having a backBuffer local; the CGImageRef will retain the
        ShareableBitmap it references.

        Duplicate our drawInContext() calls so we don't have to allocate
        a GraphicsContext on the heap in the IOSurface case.

        Don't bother clearing frontContext; it'll happen for us at
        the appropriate time. Instead, assert that it's still alive after
        we drop our reference to the frontImage created from it.

2013-11-02  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] invalid use of incomplete type 'class WTF::PassOwnPtr<WTF::Vector<unsigned char> >'
        https://bugs.webkit.org/show_bug.cgi?id=123601

        Reviewed by Carlos Garcia Campos.

        * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp: Explicitly include the PassOwnPtr.h header
        as certain configurations on the GTK port don't ensure that the header is included indirectly.

2013-11-02  Vitaly Katunin  <vkatunin@luxoft.com>

        [GTK] invalid application of 'sizeof' to incomplete type
        https://bugs.webkit.org/show_bug.cgi?id=123502

        Reviewed by Carlos Garcia Campos.

        * Shared/WebCoreArgumentCoders.cpp:

2013-11-01  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Crashes allocating incredibly large backing store for tiled backing layers
        https://bugs.webkit.org/show_bug.cgi?id=123651

        Reviewed by Simon Fraser.

        * Shared/mac/RemoteLayerBackingStore.mm:
        (RemoteLayerBackingStore::display):
        (RemoteLayerBackingStore::drawInContext):
        We can't dirty the whole layer if we have no existing front buffer if
        we have no paints, because that will lead to layers which were never
        setNeedsDisplay()'d getting backing store. Added back an assertion
        that will catch this, too.

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

        [Cocoa] WKObject seems to be initializing its target in a thread-safe manner, but really is not
        https://bugs.webkit.org/show_bug.cgi?id=123640

        Reviewed by Darin Adler.

        * Shared/Cocoa/WKObject.mm:
        (initializeTargetIfNeeded): Removed misleading incorrect code.

2013-11-01  Benjamin Poulain  <benjamin@webkit.org>

        [WK2] Create a unique identifier for WebPageGroup if the input name is empty
        https://bugs.webkit.org/show_bug.cgi?id=123606

        Reviewed by Andreas Kling.

        Strengthen the "public" API of page group.
        If someone uses WKBrowsingContextGroup with a nil or empty string, the related WKString
        would be empty, and all the WKBrowsingContextGroup end up with the same identifier.

        * UIProcess/WebPageGroup.cpp:
        (WebKit::WebPageGroup::WebPageGroup):

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

        [Cocoa] Avoid some double-wrapping of strings and URLs
        https://bugs.webkit.org/show_bug.cgi?id=123632

        Reviewed by Anders Carlsson.

        * Shared/API/c/cf/WKStringCF.cpp: Removed.
        * Shared/API/c/cf/WKStringCF.mm: Copied from Source/WebKit2/Shared/API/c/cf/WKStringCF.cpp.
        (wkNSStringClass): Added this helper.
        (WKStringCreateWithCFString): If the passed-in CFString is already wrapping a WebString,
        then retain it and return it.
        * Shared/API/c/cf/WKURLCF.cpp: Removed.
        * Shared/API/c/cf/WKURLCF.mm: Copied from Source/WebKit2/Shared/API/c/cf/WKURLCF.cpp.
        (wkNSURLClass): Added this helper.
        (WKURLCreateWithCFURL): If the passed-in CFURL is already wrapping a WebURL, then retain it
        and return it.
        * WebKit2.xcodeproj/project.pbxproj: Updated for renames.

2013-11-01  Anders Carlsson  <andersca@apple.com>

        Begin work on encoding argument types
        https://bugs.webkit.org/show_bug.cgi?id=123631

        Reviewed by Dan Bernstein.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (-[WKRemoteObjectEncoder _encodeInvocation:forKey:]):
        Encode argument types in an array.

        (-[WKRemoteObjectEncoder _encodedObjectUsingBlock:]):
        Add new helper method that encodes an object and returns the dictionary.

        (-[WKRemoteObjectEncoder _encodeObjectForKey:usingBlock:]):
        Implement this in terms of _encodedObjectUsingBlock:.

        * Shared/MutableArray.cpp:
        (WebKit::MutableArray::append):
        * Shared/MutableArray.h:
        Change append to take a PassRefPtr.

2013-10-31  Gavin Barraclough  <barraclough@apple.com>

        Rename InWindowState -> ViewState
        https://bugs.webkit.org/show_bug.cgi?id=123584

        Rubber stamped by Sam Weinig.

        WebPageProxy::setViewState offers the option to wait for a reply. Previously this option
        was only available via setIsInWindow, hence the mechanism to wait to the update has
        'InWindowState' in method and variable names (i.e.
        'WebPageProxy::waitForDidUpdateInWindowState'). Since the mechanism is now applicable to
        all ViewState changes, rename to reflect this.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView endDeferringViewInWindowChangesSync]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::waitForDidUpdateViewState):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::didUpdateViewState):
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::didUpdateViewStateTimerFired):
        (WebKit::WebPage::setViewState):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::didUpdateViewStateTimerFired):

2013-11-01  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Move RemoteLayerBackingStore to Shared/
        https://bugs.webkit.org/show_bug.cgi?id=123646

        Reviewed by Darin Adler.

        Move RemoteLayerBackingStore to Shared/, since it is
        used on both the UI and Web process side of things.

        * Shared/mac/RemoteLayerBackingStore.h: Renamed from Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.h.
        * Shared/mac/RemoteLayerBackingStore.mm: Renamed from Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.mm.
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-01  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Vend layer contents via IOSurfaces
        https://bugs.webkit.org/show_bug.cgi?id=123600

        Reviewed by Anders Carlsson.

        Address some review comments from Darin (and subsequently Anders).

        * WebProcess/WebPage/mac/RemoteLayerBackingStore.h:
        (WebKit::RemoteLayerBackingStore::surface):
        No need for .get() here.

        * WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:
        (RemoteLayerBackingStore::ensureBackingStore):
        All on one line for readability.

        (createIOSurfaceContext):
        This 'if' is meaningless.

        (createIOSurface):
        No need for a RetainPtr here, the dictionary is autoreleased.

        (RemoteLayerBackingStore::display):
        Snuggle 'context' up next to the other declarations.

2013-11-01  Anders Carlsson  <andersca@apple.com>

        Don't use the C API in WKRemoteObjectCoder
        https://bugs.webkit.org/show_bug.cgi?id=123627

        Reviewed by Dan Bernstein.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (-[WKRemoteObjectEncoder init]):
        (-[WKRemoteObjectEncoder encodeBytes:length:forKey:]):
        (-[WKRemoteObjectEncoder _encodeObjectForKey:usingBlock:]):
        * Shared/ImmutableDictionary.h:
        * Shared/MutableDictionary.cpp:
        (WebKit::MutableDictionary::add):
        (WebKit::MutableDictionary::set):
        * Shared/MutableDictionary.h:

2013-11-01  Emilio Pozuelo Monfort  <pochu27@gmail.com>

        Fix build on non-linux platforms
        https://bugs.webkit.org/show_bug.cgi?id=123622

        Reviewed by Darin Adler.

        * UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:

2013-11-01  Brian Holt  <brian.holt@samsung.com>

        [GTK] [WK2] Crash in webkitWebViewLoadFailedWithTLSErrors
        https://bugs.webkit.org/show_bug.cgi?id=123618

        Reviewed by Mario Sanchez Prada.

        The GOwnPtrSoup header was not included which meant that the
        specialization for GOwnPtr<SoupURI> was not used and instead the
        default freeOwnedGPtr which calls g_free is used and crashes.

        * UIProcess/API/gtk/WebKitWebView.cpp:

2013-10-31  Tim Horton  <timothy_horton@apple.com>

        Fix a typo/review comment from Dan, in http://trac.webkit.org/changeset/158413

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:

2013-10-31  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Vend layer contents via IOSurfaces
        https://bugs.webkit.org/show_bug.cgi?id=123600

        Reviewed by Anders Carlsson.

        * Configurations/WebKit2.xcconfig:
        Link WebKit2 against IOSurface.

        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::dumpChangedLayers):
        Dump the size of the backing store instead of the pointer of its
        SharedBitmap, because that's slightly more useful.

        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::commit):
        If a layer's backing store uses accelerated drawing, hand the IOSurface
        to the CALayer for display.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::PlatformCALayerRemote):
        Initialize contentsScale to 1 to match CA. Other properties will follow.

        (PlatformCALayerRemote::ensureBackingStore):
        Instead of replacing the RemoteLayerBackingStore when its properties
        change, allow it to update them on the fly. Replacing them caused
        us to throw away repaint rects when the accelerated drawing
        flag was flipped.

        (PlatformCALayerRemote::acceleratesDrawing):
        (PlatformCALayerRemote::setAcceleratesDrawing):
        Store the accelerated drawing flag and mark it dirty when it changes.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        * WebProcess/WebPage/mac/RemoteLayerBackingStore.h:
        (WebKit::RemoteLayerBackingStore::image):
        Rename bitmap() to image() and have it create a CGImageRef from
        the ShareableBitmap, ready for direct application to a CALayer.

        (WebKit::RemoteLayerBackingStore::surface):
        Return a IOSurface ready for direct application to a CALayer.

        (WebKit::RemoteLayerBackingStore::acceleratesDrawing):
        (WebKit::RemoteLayerBackingStore::hasFrontBuffer):
        Return whether or not we have a front buffer/surface.

        * WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:
        Forward-declare some CGIOSurface SPI.

        (RemoteLayerBackingStore::RemoteLayerBackingStore):
        (RemoteLayerBackingStore::ensureBackingStore):
        Throw away our front image and reset flags if needed.

        (RemoteLayerBackingStore::encode):
        (RemoteLayerBackingStore::decode):
        En/decode the front surface instead of the ShareableBitmap if needed,
        using CoreIPC::MachPort. Destroy the port on receipt.

        (createIOSurfaceContext):
        Create a CGIOSurfaceContext from an IOSurface.

        (createIOSurface):
        Create an IOSurface of the given size.

        (RemoteLayerBackingStore::image):
        Return a CGImageRef, if we're not using accelerated drawing.
        Moved from the header.

        (RemoteLayerBackingStore::display):
        (RemoteLayerBackingStore::drawInContext):
        If using accelerated drawing, create and paint into an IOSurface.
        Reorganize some code to make the copying-from-the-front-image code
        work for both software and IOSurfaces.
        Flush the context when completed, to ensure that any asynchronous
        painting is complete before we vend the surface to the UI process.

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

        Begin stubbing out the WKRemoteObjectCoder NSCoder subclass
        https://bugs.webkit.org/show_bug.cgi?id=123596

        Reviewed by Tim Horton.

        * Shared/API/Cocoa/WKRemoteObject.mm:
        (-[WKRemoteObject forwardInvocation:]):
        Call through to the WKRemoteObjectRegistry.

        * Shared/API/Cocoa/WKRemoteObjectCoder.h: Added.
        * Shared/API/Cocoa/WKRemoteObjectCoder.mm: Added.
        (-[WKRemoteObjectEncoder init]):
        Create a root WKDictionary.

        (-[WKRemoteObjectEncoder dealloc]):
        Assert that the current dictionary is the root dictionary; that we're back where we started.

        (-[WKRemoteObjectEncoder allowsKeyedCoding]):
        Return YES.

        (-[WKRemoteObjectEncoder encodeObject:forKey:]):
        Check that the object is valid and then encode it.

        (-[WKRemoteObjectEncoder _encodeInvocation:forKey:]):
        Encode the method type string and invocation selector.

        (-[WKRemoteObjectEncoder encodeBytes:length:forKey:]):
        Create a WKDataRef and add it to the dictionary.

        (-[WKRemoteObjectEncoder _encodeObjectForKey:usingBlock:]):
        Create a new dictionary and call the block.

        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        (-[WKRemoteObjectRegistry _sendInvocation:interface:]):
        Create an encoder and encode the invocation and interface.

        * Shared/API/Cocoa/WKRemoteObjectRegistryInternal.h: Added.
        Add IPI header.

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

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

        Address review comments.

        * Shared/API/Cocoa/WKRemoteObject.h:
        * Shared/API/Cocoa/WKRemoteObject.mm:
        (-[WKRemoteObject conformsToProtocol:]):

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

        Add a WKRemoteObject class
        https://bugs.webkit.org/show_bug.cgi?id=123586

        Reviewed by Dan Bernstein.

        * Shared/API/Cocoa/WKRemoteObject.h: Added.
        * Shared/API/Cocoa/WKRemoteObject.mm: Added.
        (-[WKRemoteObject _initWithObjectRegistry:interface:]):
        Add designated initializer.

        (-[WKRemoteObject conformsToProtocol:]):
        Check if the interface protocol conforms to our protocol.

        (methodArgumentTypeEncodingForSelector):
        Helper function that looks up a method in a given protocol and returns its type encoding.

        (-[WKRemoteObject methodSignatureForSelector:]):
        Try to find the method argument type encoding for the given selector and return its NSMethodSignature.

        (-[WKRemoteObject forwardInvocation:]):
        Add stub.

        * Shared/API/Cocoa/WKRemoteObjectInterface.mm:
        Remove a newline.

        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        (-[WKRemoteObjectRegistry remoteObjectProxyWithInterface:]):
        Establish a mapping between interface identifiers and remote object proxies.

        * WebKit2.xcodeproj/project.pbxproj:

2013-10-31  Alexey Proskuryakov  <ap@apple.com>

        Enable WebCrypto on Mac
        https://bugs.webkit.org/show_bug.cgi?id=123587

        Reviewed by Anders Carlsson.

        * Configurations/FeatureDefines.xcconfig: Do it.

2013-10-31  Sergio Correia  <sergio.correia@openbossa.org>

        [WK2] Convert SeccompFilters to using unique_ptr instead of OwnPtr/PassOwnPtr
        https://bugs.webkit.org/show_bug.cgi?id=122883

        Reviewed by Darin Adler.

        * Shared/linux/SeccompFilters/OpenSyscall.cpp:
        (WebKit::OpenSyscall::createFromOpenatContext):
        (WebKit::OpenSyscall::createFromCreatContext):
        (WebKit::OpenSyscall::execute):
        * Shared/linux/SeccompFilters/OpenSyscall.h:
        * Shared/linux/SeccompFilters/SeccompBroker.cpp:
        (WebKit::SIGSYSHandler):
        (WebKit::SeccompBrokerClient::dispatch):
        (WebKit::SeccompBroker::runLoop):
        * Shared/linux/SeccompFilters/SigactionSyscall.cpp:
        (WebKit::SigactionSyscall::createFromContext):
        * Shared/linux/SeccompFilters/SigactionSyscall.h:
        * Shared/linux/SeccompFilters/SigprocmaskSyscall.cpp:
        (WebKit::SigprocmaskSyscall::createFromContext):
        * Shared/linux/SeccompFilters/SigprocmaskSyscall.h:
        * Shared/linux/SeccompFilters/Syscall.cpp:
        (WebKit::Syscall::createFromContext):
        (WebKit::Syscall::createFromDecoder):
        (WebKit::SyscallResult::createFromDecoder):
        * Shared/linux/SeccompFilters/Syscall.h:
        * Shared/linux/SeccompFilters/SyscallPolicy.cpp:

2013-10-31  Gavin Barraclough  <barraclough@apple.com>

        Change WebPage, WebPageProxy, WebPageCreationParameters to use ViewState
        https://bugs.webkit.org/show_bug.cgi?id=123379

        Reviewed by Darin Adler.

        Visibility state of the Page should be stored and communicated consistently.

        Remove individual visibility flags from WebPageProxy, WebPageCreationParameters,
        and replace them with a ViewState, and add a ViewState member to WebPage.
        Merge together all messages that convey and individual aspect of the ViewState.

        Restructure WebPageProxy::viewStateDidChange to break the operation down into
        three steps: 1) update m_viewState, 2) send the new ViewState to the WebProcess,
        and 3) perform any further work necessary in the UIProcess.

        This patch fixes a problem that if the web process crashes m_isVisible &
        m_isInWindow in WebPageProxy were not updated, and could have held stale values
        on reattach.

        In WebPage, add a new message to update the entire ViewState - diff the prior
        value against the new one to detect changes, call existing methods accordingly.

        * Shared/ViewState.h:
            - Add constants 'Reset', 'AllFlags'
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
            - Removed boolean visibility flags, added viewState.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
            - Constructor calls updateViewState to initialize m_viewState.
        (WebKit::WebPageProxy::reattachToWebProcess):
            - ViewStaet is not updated while detatched; recalculate.
        (WebKit::WebPageProxy::initializeWebPage):
            - m_isVisible -> isViewVisible()
        (WebKit::WebPageProxy::updateViewState):
            - Added, update m_viewState by querying the page client.
        (WebKit::WebPageProxy::viewStateDidChange):
            - Restructured to use m_viewState, reordered to combine messages.
        (WebKit::WebPageProxy::creationParameters):
            - Removed boolean visibility flags, added viewState.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::isInWindow):
        (WebKit::WebPageProxy::isViewVisible):
            - Removed boolean visibility flags, added viewState.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
            - initial state now passed as a ViewState.
        (WebKit::WebPage::setIsInWindow):
            - Remove code to send reply (this is handled by setViewState).
        (WebKit::WebPage::setViewState):
            - Set m_viewState - diff from prior & call methods to update.
        * WebProcess/WebPage/WebPage.h:
            - Added setViewState, m_viewState.
        * WebProcess/WebPage/WebPage.messages.in:
            - Add SetViewState, remove individual messages.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
            - initial state now passed as a ViewState.

2013-10-30  Gavin Barraclough  <barraclough@apple.com>

        WebPageCreationParameters should be consistent in Window.open
        https://bugs.webkit.org/show_bug.cgi?id=123557

        Reviewed by Sam Weinig.

        When Window.open in called in WebKit2 the WebProcess sends a synchronous request to open
        a page (WebPageProxy::createNewPage). The UIProcess creates a WebpageProxy, and responds
        with instructions to the WebProcess to create the WebPage. The initial creation state of
        the WebPage is communicated to the WebProcess via two routes (firstly an asynchronous
        WebProcess::CreateWebPage message, and secondly in the synchronous response from
        WebPageProxy::createNewPage). Unfortunately these responses are inconsistent with each
        other. The creationParameters() for the page are calculated twice, and since the WKView
        will be added to a window between the async message being sent and the synchronous reply
        being returned the visibility state of the page can change.

        To fix the inconsistency we can set the creation parameters at the point that the
        WebPageProxy is instantiated. This will result in a functional change that is web
        visible, since the page will initially be opened in a hidden/blurred state, and may
        later become visible/focussed. This change is consistent with the direction we want to
        evolve in. Whilst we will still probably require a synchronous message from the
        WebProcess to the UIProcess on Window.open, we'll probably make this return much earlier
        – having just created the WebPageProxy, but avoiding blocking the WebProcess over the
        client delegate callback that opens the new window.

        This fix results in a layout test result change, due to the change in behavior (page is
        created blurred, and becomes focussed, resulting in a focus event being fired – rather
        than the window opening directly into a focussed state). This is reported as a
        progression (test is broken in WebKit1, fixed in WebKit2 after this change). In reality
        the test is actually slightly broken in DRT/test-runner – the test runs differently than
        in browser, since there is is no visible main window. In-browser this patch results in
        no change in behavior on dom/Window/mozilla-focus-blur.html (the affected test).

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeWebPage):
            - call initializeCreationParameters
        (WebKit::WebPageProxy::initializeCreationParameters):
            - calculate m_creationParameters
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::creationParameters):
            - Added m_creationParameters, initializeCreationParameters,
              creationParameters returns m_creationParameters

2013-10-31  Philippe Normand  <pnormand@igalia.com>

        [WK2][GTK] enable-media-stream Setting
        https://bugs.webkit.org/show_bug.cgi?id=123145

        Reviewed by Anders Carlsson.

        * Shared/WebPreferencesStore.h: New MediaStreamEnabled boolean preference.
        * UIProcess/API/C/WKPreferences.cpp: MediaStreamEnabled getter and
        setter functions.
        (WKPreferencesSetMediaStreamEnabled):
        (WKPreferencesGetMediaStreamEnabled):
        * UIProcess/API/C/WKPreferences.h:
        * UIProcess/API/gtk/WebKitSettings.cpp: Add a enable-media-stream
        property to the GTK WebKitSettings class. It will act as a facade
        to the MediaStreamEnabled preference.
        (webKitSettingsSetProperty):
        (webKitSettingsGetProperty):
        (webkit_settings_class_init):
        (webkit_settings_get_enable_media_stream):
        (webkit_settings_set_enable_media_stream):
        * UIProcess/API/gtk/WebKitSettings.h:
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
        * UIProcess/API/gtk/tests/TestWebKitSettings.cpp:
        (testWebKitSettings): Test enable-media-stream websetting.
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
        Allow WKTR to override the MediaStreamEnabled preference.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences): Update MediaStreamEnabled
        along with the other settings.

2013-10-30  Brady Eidson  <beidson@apple.com>

        IDB Database versions are uint64_t, not int64_t
        https://bugs.webkit.org/show_bug.cgi?id=123556

        Reviewed by Alexey Proskuryakov.

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::open):
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.cpp:
        (WebKit::WebProcessIDBDatabaseBackend::openConnection):
        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h:

2013-10-30  Dan Bernstein  <mitz@apple.com>

        Fixed a potential race condition around the initializtion of WKObject’s target.

        Reviewed by Mark Rowe.

        * Shared/Cocoa/WKObject.mm:
        (initializeTargetIfNeeded): Removed the early return if _target is non-nil. As Mark pointed
        out, when stores are reordered relative to other stores, it is possible for the early return
        to occur while the object _target is pointing to is not yet valid.

2013-10-30  Ryosuke Niwa  <rniwa@webkit.org>

        Remove code for Mac Lion
        https://bugs.webkit.org/show_bug.cgi?id=123542

        Reviewed by Anders Carlsson.


        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView viewWillMoveToWindow:]):
        * WebProcess/com.apple.WebProcess.sb.in:

2013-10-30  Dan Bernstein  <mitz@apple.com>

        Try to fix the !WK_API_ENABLED Mac build.

        * Shared/Cocoa/APIObject.mm:

2013-10-30  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Make all API objects have Cocoa wrappers, and delegate refcounting to those wrappers
        https://bugs.webkit.org/show_bug.cgi?id=123394

        Reviewed by Darin Adler.

        All wrappers conform to a new WKObject protocol and contain the wrapped object inline.
        APIObject-derived classes override operator new to call newObject, which allocates the
        wrapper and returns a pointer to the inline API object.

        There are three kinds of wrapper classes: (a) classes that inherit directly from NSObject
        and implement their API by calling the wrapped object (example: WKBackForwardList),
        (b) internal classes that inherit from a class cluster, and implement the primitive methods
        of the class cluster by calling the wrapped object (example: WKNSArray), and (c) internal
        classes that inerit from the new WKObject class, and proxy to an object of some public type,
        which is created from the wrapped object (example: WKNSURL).

        * Shared/APIObject.h:
        (WebKit::APIObject::wrapper): Added this getter.
        (WebKit::TypedAPIObject::operator new): Added override that calls newObject.
        * Shared/Cocoa/APIObject.mm: Added.
        (WebKit::APIObject::ref): Retains the wrapper.
        (WebKit::APIObject::deref): Releases the wrapper. When the wrapper is deallocated, it calls
        the API object destructor.
        (WebKit::APIObject::newObject): Allocates the wrapper and returns a pointer to the API
        object inside the wrapper.

        * Shared/Cocoa/WKNSArray.h:
        (WebKit::wrapper): Added. Returns an ImmutableArray’s wrapper as an NSArray.
        Replaced the RefPtr<ImmutableArray> ivar with space for an ImmutableArray to live inside
        the wrapper.
        (-[WKNSArray dealloc]): Calls the ImmutableArray destructor.
        (-[WKNSArray count]): Updated for ivar change.
        (-[WKNSArray objectAtIndex:]): Ditto.
        (-[WKNSArray _apiObject]): Returns the wrapped ImmutableArray.

        * Shared/Cocoa/WKNSObjectExtras.h: Removed.
        * Shared/Cocoa/WKNSObjectExtras.mm: Removed.

        * Shared/Cocoa/WKNSString.h: Added.
        * Shared/Cocoa/WKNSString.mm: Added.
        (-[WKNSString _web_createTarget]): Override this WKObject method to create an NSString from
        the WebString.
        (-[WKNSString copyWithZone:]): Retains self.

        * Shared/Cocoa/WKNSURL.h: Added.
        * Shared/Cocoa/WKNSURL.mm: Added.
        (-[WKNSURL _web_createTarget]): Override this WKObject method to create an NSURL from
        the WebURL.
        (-[WKNSURL copyWithZone:]): Retains self.

        * Shared/Cocoa/WKObject.h: Added.
        * Shared/Cocoa/WKObject.mm: Added.
        (-[WKObject dealloc]): Calls the destructor of the wrapped object and releases the target
        object.
        (initializeTargetIfNeeded): Helper function. Tries to create the target exactly once.
        (-[WKObject isEqual:]): NSObject override that creates and compares to the target
        object if necessary.
        (-[WKObject hash]): NSObject override that creates and hashes the target object if
        there is one.
        (-[WKObject isKindOfClass:]): NSObject override that delegates to the target object.
        (-[WKObject isMemberOfClass:]): Ditto.
        (-[WKObject respondsToSelector:]): NSObject override that creates the target object if
        necessary and returns whether it or self responds to the selector.
        (-[WKObject conformsToProtocol:]): Similarly for protocols.
        (-[WKObject forwardingTargetForSelector:]): NSObject override that creates the target object
        if necessary and returns it as the target.
        (-[WKObject description]): NSObject override that creates the target object if necessary and
        forwards to it.
        (-[WKObject _web_createTarget]): Added. The base implementation returns nil.
        (-[WKObject _apiObject]): Returns the wrapped object.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController backForwardList]): Changed to return the existing wrapper.
        (didChangeBackForwardList): Changed to use existing wrappers.

        Replaced the RefPtr<WebBackForwardList> ivar with space for a WebBackForwardList to live
        inside the wrapper.
        (-[WKBackForwardList dealloc]): Call the WebBackForwardList destructor.
        (toWKBackForwardListItem): Changed to us the existing wrapper.
        (-[WKBackForwardList currentItem]): Updated for ivar change.
        (-[WKBackForwardList backItem]): Ditto.
        (-[WKBackForwardList forwardItem]): Ditto.
        (-[WKBackForwardList itemAtIndex:]): Ditto.
        (-[WKBackForwardList backListCount]): Ditto.
        (-[WKBackForwardList forwardListCount]): Ditto,
        (-[WKBackForwardList backListWithLimit:]): Ditto, and also changed to use the
        ImmutableArray’s existing wrapper.
        (-[WKBackForwardList forwardListWithLimit:]): Ditto.
        (-[WKBackForwardList _apiObject]): Returns the WebBackForwardListItem.
        * UIProcess/Cocoa/WKBackForwardListInternal.h:
        (WebKit::wrapper): Added. Returns a WebBackForwardList’s wrapper as a WKBackForwardList.

        * UIProcess/Cocoa/WKBackForwardListItem.mm:
        Replaced the RefPtr<WebBackForwardListItem> ivar with space for a WebBackForwardListItem to
        live inside the wrapper.
        (-[WKBackForwardListItem dealloc]): Call the WebBackForwardListItem destructor.
        (-[WKBackForwardListItem URL]): Updated for ivar change, and changed to make an NSURL
        directly instead of going through a wrapper.
        (-[WKBackForwardListItem title]): Updated for ivar change, and changed to use
        String’s operator NSString*.
        (-[WKBackForwardListItem originalURL]): Updated for ivar change, and changed to make an
        NSURL directly instead of going through a wrapper.
        (-[WKBackForwardListItem _apiObject]): Returns the WebBackForwardListItem.
        (-[WKBackForwardListItem _item]): Ditto.
        * UIProcess/Cocoa/WKBackForwardListItemInternal.h:
        (WebKit::wrapper): Added. Returns a WebBackForwardListItem’s wrapper as a
        WKBackForwardListItem.

        * UIProcess/WebColorPickerResultListenerProxy.h: Changed into a TypedAPIObject.

        * UIProcess/WebFormSubmissionListenerProxy.h:
        (WebKit::WebFormSubmissionListenerProxy::operator new): Override to call newObject.

        * UIProcess/WebFramePolicyListenerProxy.h:
        (WebKit::WebFramePolicyListenerProxy::operator new): Ditto.

        * WebKit2.xcodeproj/project.pbxproj: Updated for file additions and removals.

2013-10-30  Anders Carlsson  <andersca@apple.com>

        Begin fleshing out an API test for WKRemoteObjectRegistry
        https://bugs.webkit.org/show_bug.cgi?id=123531

        Reviewed by Andreas Kling.

        * Shared/API/Cocoa/WKRemoteObjectInterface.h:
        Add WK_API_CLASS annotation.

        * Shared/API/Cocoa/WKRemoteObjectRegistry.h:
        Add WK_API_CLASS annotation.

        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        Add a WebConnection ivar.

        (-[WKRemoteObjectRegistry _initWithConnectionRef:]):
        Add SPI to create an WKRemoteObjectRegistry object with an existing WKConnectionRef.

        (-[WKRemoteObjectRegistry _handleMessageWithName:body:]):
        Add SPI that will be used to process incoming messages from an existing WKConnectionRef.

        * Shared/API/Cocoa/WKRemoteObjectRegistryPrivate.h: Added.
        Add SPI header.

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

2013-10-30  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Lots of ASSERT(m_children.isEmpty()); on Poster Circle
        https://bugs.webkit.org/show_bug.cgi?id=123517

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::setSublayers):
        When setting our list of sublayers, remove all of the new layers from
        their parents first.

2013-10-30  Antti Koivisto  <antti@apple.com>

        Add debug settings for simple line layout
        https://bugs.webkit.org/show_bug.cgi?id=123514

        Reviewed by Andreas Kling.
        
        Expose debug settings.

        * Shared/WebPreferencesStore.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetSimpleLineLayoutEnabled):
        (WKPreferencesGetSimpleLineLayoutEnabled):
        (WKPreferencesSetSimpleLineLayoutDebugBordersEnabled):
        (WKPreferencesGetSimpleLineLayoutDebugBordersEnabled):
        * UIProcess/API/C/WKPreferencesPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2013-10-30  Anders Carlsson  <andersca@apple.com>

        Add stubbed out WKRemoteObjectRegistry class
        https://bugs.webkit.org/show_bug.cgi?id=123512

        Reviewed by Andreas Kling.

        Also add a WKRemoteObjectInterface class that represents a remote object interface.

        * Shared/API/Cocoa/WKRemoteObjectInterface.h: Added.
        * Shared/API/Cocoa/WKRemoteObjectInterface.mm: Added.
        (-[WKRemoteObjectInterface initWithProtocol:identifier:]):
        (+[WKRemoteObjectInterface remoteObjectInterfaceWithProtocol:]):
        * Shared/API/Cocoa/WKRemoteObjectRegistry.h: Added.
        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm: Added.
        (-[WKRemoteObjectRegistry registerExportedObject:interface:]):
        (-[WKRemoteObjectRegistry unregisterExportedObject:interface:]):
        (-[WKRemoteObjectRegistry remoteObjectProxyWithInterface:]):
        * WebKit2.xcodeproj/project.pbxproj:

2013-10-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] webkit_web_context_allow_tls_certificate_for_host doc is missing Since tag
        https://bugs.webkit.org/show_bug.cgi?id=123499

        Reviewed by Philippe Normand.

        * UIProcess/API/gtk/WebKitWebContext.cpp: Add Since: 2.4.

2013-10-29  Alexey Proskuryakov  <ap@apple.com>

        Result of focus-option-control-on-page.html depends on system preferences
        https://bugs.webkit.org/show_bug.cgi?id=123304

        Reviewed by Simon Fraser.

        * UIProcess/mac/WKFullKeyboardAccessWatcher.mm:
        (-[WKFullKeyboardAccessWatcher retrieveKeyboardUIModeFromPreferences:]):
        Read the preference from its correct domain. This doesn't affect behavior in practice
        and isn't part of the fix, but it's a good opportunity to correct this code.

2013-10-29  Brady Eidson  <beidson@apple.com>

        Move IDBTransactionBackendLevelDB to generic IDBBackingStoreInterface
        https://bugs.webkit.org/show_bug.cgi?id=123483

        Reviewed by Andreas Kling.

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::createCursorBackend): Stubbed out.
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.cpp:
        (WebKit::WebProcessIDBDatabaseBackend::factoryBackend): Stubbed out.
        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h:

2013-10-29  Jer Noble  <jer.noble@apple.com>

        [MSE] [Mac] Enable MediaSource on the Mac
        https://bugs.webkit.org/show_bug.cgi?id=122484

        Reviewed by Darin Adler.

        Enable ENABLE_MEDIA_SOURCE.

        * Configurations/FeatureDefines.xcconfig:

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

        More correct build fix after 158223.

        Only fails in release because it's inline.
        Include the relevant header to get the function.

        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:

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

        Remote Layer Tree: Support tiled drawing and use it for the main frame
        https://bugs.webkit.org/show_bug.cgi?id=123422

        Reviewed by Simon Fraser.

        Add a PlatformCALayerRemote subclass that behaves similarly to
        WebTiledBackingLayer, forwarding relevant things (setNeedsDisplay, etc.)
        to the TileController which it owns.

        Teach the remote layer tree code enough to proxy these layers across,
        and paint them in a manner similar to WebSimpleLayer (just calling
        straight back to the TileController to paint).

        * Shared/mac/RemoteLayerTreeTransaction.h:
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        (WebKit::dumpChangedLayers):
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::commit):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::setEdgeAntialiasingMask):
        Add support for adjusting/encoding/decoding/dumping/applying edgeAntialiasingMask.

        (WebKit::RemoteLayerTreeTransaction::dump):
        Drive-by fix dumping of created layers to have one layer per line.

        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::createLayer):
        Create CALayers for Simple, TiledBacking, PageTiledBacking, and TiledBackingTile layers.

        * WebKit2.xcodeproj/project.pbxproj:
        Add PlatformCALayerRemoteTiledBacking.{h, cpp}.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::create):
        Create a PlatformCALayerRemoteTiledBacking for TiledBacking and PageTiledBacking layers.

        (PlatformCALayerRemote::removeAllSublayers):
        Fix removeAllSublayers to make a copy of the PlatformCALayerList before
        mutating it, to avoid crashes when iterating a mutated list.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        Definalize PlatformCALayerRemote so we can have PlatformCALayerRemoteTiledBacking.
        Note that we will use a tiled backing layer in some cases.
        Make the constructor protected, not private, so our subclass can use it.

        * WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.cpp: Added.
        (PlatformCALayerRemoteTiledBacking::PlatformCALayerRemoteTiledBacking):
        (PlatformCALayerRemoteTiledBacking::~PlatformCALayerRemoteTiledBacking):
        (PlatformCALayerRemoteTiledBacking::setNeedsDisplay):
        (PlatformCALayerRemoteTiledBacking::customSublayers):
        (PlatformCALayerRemoteTiledBacking::setBounds):
        (PlatformCALayerRemoteTiledBacking::isOpaque):
        (PlatformCALayerRemoteTiledBacking::setOpaque):
        (PlatformCALayerRemoteTiledBacking::acceleratesDrawing):
        (PlatformCALayerRemoteTiledBacking::setAcceleratesDrawing):
        (PlatformCALayerRemoteTiledBacking::setContentsScale):
        (PlatformCALayerRemoteTiledBacking::setBorderWidth):
        (PlatformCALayerRemoteTiledBacking::setBorderColor):
        * WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.h: Added.
        Add a subclass of PlatformCALayerRemote which forwards operations
        to TileController, very similar to what WebTiledBackingLayer does.
        It also owns the TileController, and overrides customSublayers() and
        tiledBacking() to return the right thing.

        * WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:
        (RemoteLayerBackingStore::display):
        Teach RemoteLayerBackingStore about how to paint different kinds of layers.
        Simple layers and Tile layers will call paintContents directly,
        WebLayers will do what WebLayer does and use drawLayerContents.
        Other kinds of layers won't paint at all right now.
        I would like to centralize this behavior (and get rid of our CALayer
        subclasses entirely, moving all that behavior to be shared between Mac,
        Windows, and the remote layer tree), but that is a patch for another day.

        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::shouldUseTiledBackingForFrameView):
        Force accelerated compositing on always when using the remote layer tree.
        Use a TiledBacking for the main frame.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        Drive-by OVERRIDE.

2013-10-29  Brady Eidson  <beidson@apple.com>

        Get IDBTransactionBackendLevelDBOperations *almost* ready to go cross platform.
        https://bugs.webkit.org/show_bug.cgi?id=123451

        Reviewed by Andreas Kling.

        Stub out more pure virtual methods.

        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.cpp:
        (WebKit::WebProcessIDBDatabaseBackend::backingStore):
        (WebKit::WebProcessIDBDatabaseBackend::id):
        (WebKit::WebProcessIDBDatabaseBackend::addObjectStore):
        (WebKit::WebProcessIDBDatabaseBackend::removeObjectStore):
        (WebKit::WebProcessIDBDatabaseBackend::addIndex):
        (WebKit::WebProcessIDBDatabaseBackend::removeIndex):
        (WebKit::WebProcessIDBDatabaseBackend::metadata):
        (WebKit::WebProcessIDBDatabaseBackend::setCurrentVersion):
        (WebKit::WebProcessIDBDatabaseBackend::hasPendingSecondHalfOpen):
        (WebKit::WebProcessIDBDatabaseBackend::setPendingSecondHalfOpen):
        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h:

2013-10-29  Gavin Barraclough  <barraclough@apple.com>

        SessionState.h should not include WebBackForwardList.h
        https://bugs.webkit.org/show_bug.cgi?id=123454

        Reviewed by Geoff Garen.

        WebBackForwardList is a UIProcess type, SessionState is in shared code.
        Also, WebBackForwardListItemVector should be in WebBackForwardListItem.h, not WebBackForwardList.h
        (the vector type is used in the WebProcess, the item header is shared but the list type is in the UIProcess).

        * Shared/SessionState.cpp:
            - fixed includes
        * Shared/SessionState.h:
            - WebBackForwardList.h -> WebBackForwardListItem.h
        * Shared/WebBackForwardListItem.h:
            - Moved WebBackForwardListVector from WebBackForwardList.h
        * Shared/WebPageCreationParameters.h:
            - fixed includes
        * UIProcess/WebBackForwardList.h:
            - Moved WebBackForwardListVector to WebBackForwardListItem.h
        * WebProcess/WebPage/DrawingArea.cpp:
            - fixed includes
        * WebProcess/WebPage/WebPage.cpp:
            - fixed includes

2013-10-29  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed Mac debug build fix after r158183.
        Remove the duplicated << overloaded operator from RemoteLayerTreeTextStream for printing out
        a given FloatSize object. The RemoteLayerTreeTextStream inherits from TextStream, which already
        provides that overloaded operator. Format of the output is a bit different so hopefully nothing
        breaks further.

        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTextStream::operator<<):

2013-10-28  Brady Eidson  <beidson@apple.com>

        Refactor IDB factory creation.
        https://bugs.webkit.org/show_bug.cgi?id=123347

        Reviewed by Andreas Kling.

        - Rework how database directory location is passed around.
        - Make (some) SecurityOrigin arguments be references instead of pointers.
        - Add two SecurityOrigin arguments to opening databases for future use.

        * Shared/Databases/IndexedDB/IDBUtilities.cpp:
        (WebKit::uniqueDatabaseIdentifier):
        * Shared/Databases/IndexedDB/IDBUtilities.h:

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::WebIDBFactoryBackend):
        (WebKit::WebIDBFactoryBackend::open):
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:
        (WebKit::WebIDBFactoryBackend::create):

        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.cpp:
        (WebKit::WebProcessIDBDatabaseBackend::WebProcessIDBDatabaseBackend):
        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h:

        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::createIDBFactoryBackend):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2013-10-28  Tim Horton  <timothy_horton@apple.com>

        Make TileController create the appropriate PlatformCALayer subclasses
        https://bugs.webkit.org/show_bug.cgi?id=123418

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::createCompatibleLayer):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        Add createCompatibleLayer and implement it in the subclasses.

2013-10-28  Benjamin Poulain  <benjamin@webkit.org>

        Rename applyPageScaleFactorInCompositor to delegatesPageScaling
        https://bugs.webkit.org/show_bug.cgi?id=123417

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setUseFixedLayout):

2013-10-28  Myles C. Maxfield  <mmaxfield@apple.com>

        Parsing support for -webkit-text-decoration-skip: ink
        https://bugs.webkit.org/show_bug.cgi?id=123358

        Reviewed by Dean Jackson.

        Adding ENABLE(CSS3_TEXT_DECORATION)

        * Configurations/FeatureDefines.xcconfig:

2013-10-28  Tim Horton  <timothy_horton@apple.com>

        Make TileController manipulate PlatformCALayers instead of CALayers
        https://bugs.webkit.org/show_bug.cgi?id=123279

        Reviewed by Simon Fraser.

        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::dump):
        Support the new LayerTypes.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::setEdgeAntialiasingMask):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        Add an empty implementation of setEdgeAntialiasingMask.

        * WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:
        (RemoteLayerBackingStore::display):
        Removed a parameter from drawLayerContents.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::updateDebugInfoLayer):
        TiledCoreAnimationDrawingArea still operates in terms of CALayers, so
        grab the PlatformLayer out from TileController's indicator.

2013-10-28  Bastien Nocera <hadess@hadess.net>

        Name all the GLib timeout sources
        https://bugs.webkit.org/show_bug.cgi?id=123229

        Reviewed by Anders Carlsson.

        Give a name to GLib timeout sources, this is helpful when
        profiling WebKitGTK applications.

2013-10-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix make distcheck.

        * GNUmakefile.am: Add messages.in files in
        UIProcess/Network/CustomProtocols/ to EXTRA_DIST.
        * GNUmakefile.list.am: Remove
        WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp from
        compilation because it depends on code generated only when
        database process is enabled.

2013-10-28  Alberto Garcia  <berto@igalia.com>

        [WK2] [GTK] Allow running the web process with an arbitrary prefix command
        https://bugs.webkit.org/show_bug.cgi?id=123201

        Reviewed by Carlos Garcia Campos.

        Launch the web process using WEB_PROCESS_CMD_PREFIX as a
        prefix. Useful for debugging the web process with gdb, valgrind,
        etc.

        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/gtk/WebProcessProxyGtk.cpp:
        (WebKit::WebProcessProxy::platformGetLaunchOptions):

2013-10-27  Brady Eidson  <beidson@apple.com>

        WebIconDatabase can miss private browsing state changes.
        <rdar://problem/15322318> and https://bugs.webkit.org/show_bug.cgi?id=123375

        Reviewed by Alexey Proskuryakov.

        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::willStartUsingPrivateBrowsing): Call setAnyPageGroupMightHavePrivateBrowsingEnabled(true) on each context.
        (WebKit::WebContext::willStopUsingPrivateBrowsing): Call setAnyPageGroupMightHavePrivateBrowsingEnabled(false) on each context.
        (WebKit::WebContext::setPrivateBrowsingEnabled): In addition to notifying other processes about private browsing
          sessions, notify the context’s WebIconDatabase about the change in value.
        * UIProcess/WebContext.h:

        * UIProcess/WebIconDatabase.cpp:
        (WebKit::WebIconDatabase::setDatabasePath): Prime the IconDatabase with an initial private browsing value.
        (WebKit::WebIconDatabase::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        * UIProcess/WebIconDatabase.h:

2013-10-26  Tim Horton  <timothy_horton@apple.com>

        [mac] Remove WebTiledLayer
        https://bugs.webkit.org/show_bug.cgi?id=123395

        Reviewed by Anders Carlsson.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        Remove synchronouslyDisplayTilesInRect.

2013-10-26  Dan Bernstein  <mitz@apple.com>

        [Cocoa] -[WKBackForwardList forwardItem] returns the back item
        https://bugs.webkit.org/show_bug.cgi?id=123391

        Reviewed by Mark Rowe.

        * UIProcess/Cocoa/WKBackForwardList.mm:
        (-[WKBackForwardList forwardItem]): Changed back to forward.

2013-10-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r158075.
        http://trac.webkit.org/changeset/158075
        https://bugs.webkit.org/show_bug.cgi?id=123389

        Broke WebKit2.PrivateBrowsingPushStateNoHistoryCallback API
        test (Requested by ap on #webkit).

        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::willStartUsingPrivateBrowsing):
        (WebKit::WebContext::willStopUsingPrivateBrowsing):
        * UIProcess/WebContext.h:
        * UIProcess/WebIconDatabase.cpp:
        * UIProcess/WebIconDatabase.h:

2013-10-26  Jae Hyun Park  <jae.park@company100.net>

        Remove Coordinated Graphics bits from DrawingAreaProxyImpl
        https://bugs.webkit.org/show_bug.cgi?id=123382

        Reviewed by Anders Carlsson.

        As of r156861, Coordinated Graphics does not use DrawingAreaProxyImpl.
        So, Coordinated Graphics bits should be removed from DrawingAreaProxyImpl.

        * UIProcess/DrawingAreaProxyImpl.h:

2013-10-26  Dan Bernstein  <mitz@apple.com>

        [Cocoa] clang static analyzer warns about object being autoreleased too many times in +[WKNSArray web_arrayWithImmutableArray:]
        https://bugs.webkit.org/show_bug.cgi?id=123384

        Reviewed by Mark Rowe.

        * Shared/Cocoa/WKNSArray.h: Annotated -web_initWithImmutableArray: as an init method.

2013-10-25  Csaba Osztrogonác  <ossy@webkit.org>

        Fix the ENABLE(CSS_FILTERS) && USE(COORDINATED_GRAPHICS) build after r157803
        https://bugs.webkit.org/show_bug.cgi?id=123330

        Reviewed by Darin Adler.

        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:

2013-10-25  Brady Eidson  <beidson@apple.com>

        WebIconDatabase can miss private browsing state changes.
        <rdar://problem/15322318> and https://bugs.webkit.org/show_bug.cgi?id=123375

        Reviewed by Beth Dakin.

        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::willStartUsingPrivateBrowsing): Call setPrivateBrowsingEnabled(true) on each context.
        (WebKit::WebContext::willStopUsingPrivateBrowsing): Call setPrivateBrowsingEnabled(false) on each context.
        (WebKit::WebContext::setPrivateBrowsingEnabled): In addition to notifying other processes, notify WebIconDatabase.
        * UIProcess/WebContext.h:

        * UIProcess/WebIconDatabase.cpp:
        (WebKit::WebIconDatabase::setPrivateBrowsingEnabled):
        * UIProcess/WebIconDatabase.h:

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.

        * Configurations/FeatureDefines.xcconfig:

2013-10-25  Gavin Barraclough  <barraclough@apple.com>

        Merge viewInWindowStateDidChange into viewStateDidChange
        https://bugs.webkit.org/show_bug.cgi?id=123351

        Reviewed by Tim Horton.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView endDeferringViewInWindowChanges]):
        (-[WKView endDeferringViewInWindowChangesSync]):
            - viewInWindowStateDidChange -> viewStateDidChange
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::viewStateDidChange):
            - removed viewInWindowStateDidChange, renamed parameter to viewStateDidChange
        * UIProcess/WebPageProxy.h:
            - removed viewInWindowStateDidChange, named parameter to viewStateDidChange

2013-10-25  Csaba Osztrogonác  <ossy@webkit.org>

        One more URTBF for GTK after r158028.

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseMap):
        (webkitWebViewBaseUnmap):

2013-10-25  Csaba Osztrogonác  <ossy@webkit.org>

        URTBF for non-Mac platforms after r158028.

        * GNUmakefile.list.am:
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (toplevelWindowFocusInEvent):
        (toplevelWindowFocusOutEvent):
        (toplevelWindowVisibilityEvent):
        (webkitWebViewBaseSetToplevelOnScreenWindow):
        (webkitWebViewBaseSetFocus):
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::setActive):
        (WebKit::WebView::setFocused):
        (WebKit::WebView::setVisible):

2013-10-25  Gavin Barraclough  <barraclough@apple.com>

        Move ViewStateFlags out of WebPageProxy
        https://bugs.webkit.org/show_bug.cgi?id=123323

        Reviewed by Sam Weinig.

        WebPageProxy contains an enum and typedef that provide a bitfield
        of flags describing the visibility of the view containing the page.
        We're going to want to use this bitfield in a message to the
        WebProcess, so moving out from the UIProcess to shared code.
        Creating struct 'ViewState' to scope the enum and typedef.
        Renamed ViewStateFlags to ViewState::Flags, and removed redundant
        'View' from enum entries.

        * Shared/ViewState.h: Added.
        * UIProcess/API/mac/WKView.mm:
        (-[WKView becomeFirstResponder]):
        (-[WKView resignFirstResponder]):
        (-[WKView viewDidMoveToWindow]):
        (-[WKView _windowDidBecomeKey:]):
        (-[WKView _windowDidResignKey:]):
        (-[WKView _windowDidMiniaturize:]):
        (-[WKView _windowDidDeminiaturize:]):
        (-[WKView _windowDidOrderOffScreen:]):
        (-[WKView _windowDidOrderOnScreen:]):
        (-[WKView _windowDidChangeOcclusionState:]):
        (-[WKView viewDidHide]):
        (-[WKView viewDidUnhide]):
        (-[WKView _activeSpaceDidChange:]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::viewStateDidChange):
        * UIProcess/WebPageProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:

2013-10-25  Gavin Barraclough  <barraclough@apple.com>

        Move ViewStateFlags out of WebPageProxy
        https://bugs.webkit.org/show_bug.cgi?id=123323

        Unreviewed

        Rolling out 158026 - landed extra chnages!

        * Shared/ViewState.h: Removed.
        * UIProcess/API/mac/WKView.mm:
        (-[WKView becomeFirstResponder]):
        (-[WKView resignFirstResponder]):
        (-[WKView viewDidMoveToWindow]):
        (-[WKView _windowDidBecomeKey:]):
        (-[WKView _windowDidResignKey:]):
        (-[WKView _windowDidMiniaturize:]):
        (-[WKView _windowDidDeminiaturize:]):
        (-[WKView _windowDidOrderOffScreen:]):
        (-[WKView _windowDidOrderOnScreen:]):
        (-[WKView _windowDidChangeOcclusionState:]):
        (-[WKView viewDidHide]):
        (-[WKView viewDidUnhide]):
        (-[WKView _activeSpaceDidChange:]):
        (-[WKView endDeferringViewInWindowChanges]):
        (-[WKView endDeferringViewInWindowChangesSync]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::viewInWindowStateDidChange):
        (WebKit::WebPageProxy::viewStateDidChange):
        * UIProcess/WebPageProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:

2013-10-24  Gavin Barraclough  <barraclough@apple.com>

        Move ViewStateFlags out of WebPageProxy
        https://bugs.webkit.org/show_bug.cgi?id=123323

        Reviewed by Sam Weinig.

        WebPageProxy contains an enum and typedef that provide a bitfield
        of flags describing the visibility of the view containing the page.
        We're going to want to use this bitfield in a message to the
        WebProcess, so moving out from the UIProcess to shared code.
        Creating struct 'ViewState' to scope the enum and typedef.
        Renamed ViewStateFlags to ViewState::Flags, and removed redundant
        'View' from enum entries.

        * Shared/ViewState.h: Added.
        * UIProcess/API/mac/WKView.mm:
        (-[WKView becomeFirstResponder]):
        (-[WKView resignFirstResponder]):
        (-[WKView viewDidMoveToWindow]):
        (-[WKView _windowDidBecomeKey:]):
        (-[WKView _windowDidResignKey:]):
        (-[WKView _windowDidMiniaturize:]):
        (-[WKView _windowDidDeminiaturize:]):
        (-[WKView _windowDidOrderOffScreen:]):
        (-[WKView _windowDidOrderOnScreen:]):
        (-[WKView _windowDidChangeOcclusionState:]):
        (-[WKView viewDidHide]):
        (-[WKView viewDidUnhide]):
        (-[WKView _activeSpaceDidChange:]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::viewStateDidChange):
        * UIProcess/WebPageProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:

2013-10-25  Sergio Villar Senin  <svillar@igalia.com>

        [GTK][WK2] Build break after r157967 and r157972
        https://bugs.webkit.org/show_bug.cgi?id=123325

        Reviewed by Carlos Garcia Campos.

        DrawingArea::visibilityDidChange was removed in favour of a new
        message called SetIsVisible which is sent to the WebPage. This
        means that {suspend|resume}Paiting are now implemented in a
        cross-platform way in WebPage and do not require specific code
        from the DrawingArea implementations.

        This means that we have to track the toplevel window visibility
        and notify the WebPage appropriately about its changes.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::isWindowVisible):
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (toplevelWindowVisibilityEvent):
        (webkitWebViewBaseSetToplevelOnScreenWindow):
        (webkitWebViewBaseIsWindowVisible):
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/DrawingAreaProxyImpl.cpp:
        * UIProcess/DrawingAreaProxyImpl.h:
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::suspendPainting):
        (WebKit::DrawingAreaImpl::resumePainting):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::windowAndWebPageAreFocused):

2013-10-25  Anton Obzhirov  <a.obzhirov@samsung.com>

        [GTK] [WebKit2] CanHandleRequest API test fails
        https://bugs.webkit.org/show_bug.cgi?id=88453

        Reviewed by Martin Robinson.

        Make WebPage::platformCanHandleRequest return false by default 
        for unknown schemes.

        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::platformCanHandleRequest):

2013-10-25  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK2] Build break after r157967 and r157972
        https://bugs.webkit.org/show_bug.cgi?id=123324

        Reviewed by Tim Horton.

        Since r157967 and r157972, visibilityDidChange was removed from DrawingAreaProxy.

        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.cpp:
        (WebKit::CoordinatedDrawingAreaProxy::visibilityDidChange):
        Removed common logic which r157967 moved to WebProcess.
        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.h:
        Make visibilityDidChange to public method.
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::setVisible):
        (WebKit::WebView::isWindowVisible): Added.
        * UIProcess/CoordinatedGraphics/WebView.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::setWindowIsVisible):
        * WebProcess/WebPage/WebPage.h:
        Moved m_windowIsVisible to use at all WK2 based port.
        (WebKit::WebPage::windowIsVisible):
        * WebProcess/WebPage/WebPage.messages.in:
        Moved SetWindowIsVisible message to use at all WK2 based port.

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

        Remove references to OS X 10.7 from Xcode configuration settings.

        Now that we're not building for OS X 10.7 they're no longer needed.

        Reviewed by Anders Carlsson.

        * Configurations/Base.xcconfig:
        * Configurations/BaseXPCService.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * Configurations/FeatureDefines.xcconfig:
        * Configurations/Version.xcconfig:
        * Configurations/WebContentProcess.xcconfig:

2013-10-24  Gavin Barraclough  <barraclough@apple.com>

        Coalesce calls to viewStateDidChange
        https://bugs.webkit.org/show_bug.cgi?id=123307

        Reviewed by Tim Horton.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView viewDidMoveToWindow]):
        (-[WKView _windowDidOrderOffScreen:]):
        (-[WKView _windowDidOrderOnScreen:]):
            - coalesce calls to viewStateDidChange
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::viewStateDidChange):
            - handle changes to view visibility & active state in correct order.

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

        <rdar://problem/15312643> Prepare for the mysterious future.

        Reviewed by David Kilzer.

        * Configurations/Base.xcconfig:
        * Configurations/BaseXPCService.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * Configurations/FeatureDefines.xcconfig:
        * Configurations/Version.xcconfig:
        * Configurations/WebContentProcess.xcconfig:

2013-10-24  Gavin Barraclough  <barraclough@apple.com>

        Fold updateWindowIsVisible into viewStateDidChange
        https://bugs.webkit.org/show_bug.cgi?id=123305

        Reviewed by Simon Fraser.

        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::isWindowVisible):
            - Added accessor to check if window is visible
        * UIProcess/API/mac/WKView.mm:
        (-[WKView viewDidMoveToWindow]):
        (-[WKView _windowDidMiniaturize:]):
        (-[WKView _windowDidDeminiaturize:]):
        (-[WKView _windowDidOrderOffScreen:]):
        (-[WKView _windowDidOrderOnScreen:]):
            - _updateWindowVisibility -> viewStateDidChange
        * UIProcess/PageClient.h:
            - Added accessor to check if winow is visible
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::viewStateDidChange):
            - handle WindowIsVisible
        * UIProcess/WebPageProxy.h:
            - added WindowIsVisible
        * UIProcess/mac/WebPageProxyMac.mm:
            - removed updateWindowIsVisible

2013-10-24  Anders Carlsson  <andersca@apple.com>

        Stop bringing in the std namespace
        https://bugs.webkit.org/show_bug.cgi?id=123273

        Reviewed by Andreas Kling.

        * WebProcess/mac/WebProcessMac.mm:
        (WebKit::WebProcess::platformSetCacheModel):

2013-10-24  Gavin Barraclough  <barraclough@apple.com>

        Simplify window occlusion detection code
        https://bugs.webkit.org/show_bug.cgi?id=123300

        Reviewed by Tim Horton.

        Currently the WKView tries to maintain a copy of the window's occluded state,
        but forced to NO when occlusion detection is disabled (and capable of handling
        dectection being dynamically toggled). Simpler to just rely on the actual value
        from the window, && the enabled setting. Cleaning this up revealed that we're
        not sending a viewStateDidChange to the WebPageProxy when the occlusion state
        changes, which we probably should be.

        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::isViewVisible):
            - check the real value of occlusion state from the window.
        * UIProcess/API/mac/WKView.mm:
        (-[WKView viewDidMoveToWindow]):
            - don't update cached value.
        (-[WKView _windowDidChangeOcclusionState:]):
            - don't update cached value, but do send viewStateDidChange to the WebPageProxy.
        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
            - removed _isWindowOccluded.
        (-[WKView windowOcclusionDetectionEnabled]):
        (-[WKView setWindowOcclusionDetectionEnabled:]):
            - Just toggle the flag - no cached state to update any more.
        * UIProcess/API/mac/WKViewInternal.h:
            - removed _isWindowOccluded.

2013-10-24  Gavin Barraclough  <barraclough@apple.com>

        SetIsVisible message should be sent to WebPage
        https://bugs.webkit.org/show_bug.cgi?id=123296

        Reviewed by Tim Horton.

        * UIProcess/DrawingAreaProxy.h:
            - remove visibilityDidChange - WebPageProxy now mesages WebPage.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::viewStateDidChange):
            - Send view visibility updates to the WebPage, not the drawing area.
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
            - remove visibilityDidChange - WebPageProxy now mesages WebPage.
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::suspendPainting):
        (WebKit::DrawingArea::resumePainting):
        * WebProcess/WebPage/DrawingArea.messages.in:
            - Instead of suspendPainting/resumePainting being private in the WebProcess but avaialble to the UIProcess,
              make them private to the WebProcess but accessible from WebPage.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setViewIsVisible):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
            - Added SetViewIsVisible message.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
            - Instead of suspendPainting/resumePainting being private in the WebProcess but avaialble to the UIProcess,
              make them private to the WebProcess but accessible from WebPage.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::suspendPainting):
        (WebKit::TiledCoreAnimationDrawingArea::resumePainting):
            - Moved animation suspend code out to WebPage.

2013-10-24  Dan Bernstein  <mitz@apple.com>

        Tried to fix the Mountain Lion build.

        * Shared/API/Cocoa/WKFoundation.h:

2013-10-24  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Add -[WKBrowsingContextController goToBackForwardItem:]
        https://bugs.webkit.org/show_bug.cgi?id=123289

        Reviewed by Sam Weinig.

        * Shared/API/Cocoa/WKFoundation.h: Defined WK_API_CLASS.
        * UIProcess/API/mac/WKBrowsingContextController.h: Declared -goToBackForwardListItem:.
        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController goToBackForwardListItem:]): Added.
        * UIProcess/Cocoa/WKBackForwardList.h: Deployed WK_API_CLASS to make the class exported.
        * UIProcess/Cocoa/WKBackForwardListItem.h: Ditto.
        * UIProcess/Cocoa/WKBackForwardListItem.mm:
        (-[WKBackForwardListItem _item]): Added. Returns the underlying WebBackForwardListItem.
        * UIProcess/Cocoa/WKBackForwardListItemInternal.h: Declared _item.

2013-10-23  ChangSeok Oh  <changseok.oh@collabora.com>

        Unreviewed build fix since r157823.
        FilterOperation::getOperationType() is renamed FilterOperation::type().

        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
        (CoreIPC::::encode):
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::checkCustomFilterProgramProxies):

2013-10-23  Tibor Meszaros  <tmeszaros@inf.u-szeged.hu>

        Web Inspector: Make WebKitEFL port work with chromedevtools
        https://bugs.webkit.org/show_bug.cgi?id=123017

        Reviewed by Gustavo Noronha Silva.

        Added /json path and extended the returned JSON format
        with the required extra informations

        * UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:
        (WebKit::WebInspectorServer::platformResourceForPath):
        (WebKit::WebInspectorServer::buildPageList):

2013-10-23  Anders Carlsson  <andersca@apple.com>

        Remove HAVE_XPC
        https://bugs.webkit.org/show_bug.cgi?id=123226

        Reviewed by Dan Bernstein.

        HAVE_XPC has been true on Mac since Lion, so remove it.

        * DatabaseProcess/EntryPoint/mac/XPCService/DatabaseServiceEntryPoint.mm:
        (DatabaseServiceInitializer):
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm:
        (NetworkServiceInitializer):
        * Platform/CoreIPC/Connection.h:
        (CoreIPC::Connection::Identifier::Identifier):
        * Platform/CoreIPC/mac/ConnectionMac.cpp:
        (CoreIPC::Connection::platformInvalidate):
        (CoreIPC::Connection::platformInitialize):
        * Platform/WorkQueue.h:
        * PluginProcess/EntryPoint/mac/XPCService/PluginServiceEntryPoint.mm:
        (PluginServiceInitializer):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        * UIProcess/Databases/mac/DatabaseProcessProxyMac.mm:
        (WebKit::shouldUseXPC):
        (WebKit::DatabaseProcessProxy::platformGetLaunchOptions):
        * UIProcess/Launcher/ProcessLauncher.cpp:
        (WebKit::ProcessLauncher::didFinishLaunchingProcess):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::setUpTerminationNotificationHandler):
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Network/mac/NetworkProcessProxyMac.mm:
        (WebKit::shouldUseXPC):
        (WebKit::NetworkProcessProxy::platformGetLaunchOptions):
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::shouldUseXPC):
        (WebKit::PluginProcessProxy::platformGetLaunchOptions):
        * UIProcess/mac/WebProcessProxyMac.mm:
        (WebKit::shouldUseXPC):
        (WebKit::WebProcessProxy::platformGetLaunchOptions):
        * WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm:
        (WebContentServiceInitializer):

2013-10-23  Tim Horton  <timothy_horton@apple.com>

        Remove the ifdef to exclude remote layer tree transaction logging
        on Lion and before.

        Rubber-stamped by Anders Carlsson.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::commit):

2013-10-23  Brady Eidson  <beidson@apple.com>

        Make IDBDatabaseBackendLevelDB.cpp be cross platform
        https://bugs.webkit.org/show_bug.cgi?id=123027

        Attentively reviewed by Dean Jackson.

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::maybeCreateTransactionBackend):
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

2013-10-23  Dan Bernstein  <mitz@apple.com>

        Fixed a typo.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (didChangeBackForwardList):
        * UIProcess/API/mac/WKBrowsingContextLoadDelegate.h:

2013-10-23  Anton Obzhirov  <a.obzhirov@samsung.com>

        [GTK] Enable respect image orientation by default
        https://bugs.webkit.org/show_bug.cgi?id=122120

        Reviewed by Gustavo Noronha Silva.

        Add enable respect image orientation by default in GTK port.

        * UIProcess/API/gtk/WebKitSettings.cpp:
        (webKitSettingsConstructed):

2013-10-23  Brian Holt  <brian.holt@samsung.com>

        [GTK] Add WebKit2 API for TLS errors
        https://bugs.webkit.org/show_bug.cgi?id=120160

        Reviewed by Mario Sanchez Prada.

        Revert back to using PlatformCertificateInfo following the rollout
        of https://bugs.webkit.org/show_bug.cgi?id=118520.

        * Shared/soup/PlatformCertificateInfo.cpp:
        (WebKit::PlatformCertificateInfo::PlatformCertificateInfo):
        * Shared/soup/PlatformCertificateInfo.h:
        * UIProcess/API/gtk/WebKitCertificateInfo.cpp:
        (webkitCertificateInfoGetCertificateInfo):
        * UIProcess/API/gtk/WebKitCertificateInfoPrivate.h:

2013-10-23  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Implement superlayer, removeFromSuperlayer, replaceSublayer, and adoptSublayers
        https://bugs.webkit.org/show_bug.cgi?id=123130

        Reviewed by Anders Carlsson.

        Implement the remaining layer-hierarchy-manipulation methods.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::PlatformCALayerRemote):
        (PlatformCALayerRemote::~PlatformCALayerRemote):
        Null out the superlayer back-pointer on our sublayers.

        (PlatformCALayerRemote::recursiveBuildTransaction):
        Ensure that our children all have us as their superlayer.

        (PlatformCALayerRemote::superlayer):
        Return the stored superlayer pointer.

        (PlatformCALayerRemote::removeFromSuperlayer):
        Call removeSublayer on our superlayer, if we have one.

        (PlatformCALayerRemote::removeSublayer):
        Remove the given layer if it's in our list of sublayers, clear its
        reference to us, and note that we'll need to commit hierarchy changes.

        (PlatformCALayerRemote::setSublayers):
        removeAllSublayers() before setting the new list, to clear superlayer
        back-pointers. Children will be protected by the PlatformCALayerList.
        Update the new layers' superlayers.

        (PlatformCALayerRemote::removeAllSublayers):
        Remove each sublayer from its superlayer, then clear our list of children.

        (PlatformCALayerRemote::appendSublayer):
        (PlatformCALayerRemote::insertSublayer):
        Protect the layer from deletion, so that we can remove it from its prior
        superlayer before appending or inserting it.

        (PlatformCALayerRemote::replaceSublayer):
        Find the reference sublayer, if it exists, and replace it with the new one.

        (PlatformCALayerRemote::adoptSublayers):
        adoptSublayers is really just "set sublayers to this other layer's sublayers".
        Since setSublayers already removes layers from the existing superlayer,
        we can just go ahead and call it.

        (PlatformCALayerRemote::addAnimationForKey):
        (PlatformCALayerRemote::removeAnimationForKey):
        (PlatformCALayerRemote::animationForKey):
        Add some ASSERT_NOT_REACHEDs in animation code.
        We ought not get here because we've disabled hardware animations
        in GraphicsLayerCARemote.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        Add m_superlayer and removeSublayer().

2013-10-22  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix attempt on Soup based port after r157842.

        WebCore::CertificateInfo was reverted to WebKit::PlatformCertificateInfo.

        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::allowSpecificHTTPSCertificateForHost):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::allowSpecificHTTPSCertificateForHost):

2013-10-22  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix attempt on EFL port after r157842.

        * Shared/soup/PlatformCertificateInfo.h: Removed message of merge confliction.

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

        Fix build failures after r157842.

        * WebProcess/WebProcess.h: Don't try to #include a file that was deleted.
        It won't work.

2013-10-22  Brady Eidson  <beidson@apple.com>

        Get rid of IDBObjectStoreBackendLevelDB
        https://bugs.webkit.org/show_bug.cgi?id=123174

        Reviewed by Tim Horton.

        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h:

2013-10-22  Dean Jackson  <dino@apple.com>

        [WebGL] Implement a software rendering option on Mac
        https://bugs.webkit.org/show_bug.cgi?id=123177

        Reviewed by Tim Horton.

        Implement a way to force software OpenGL rendering
        for WebGL, via a Setting/Preference.

        * Shared/WebPreferencesStore.h: New ForceSoftwareWebGLRendering entry.
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetForceSoftwareWebGLRendering):
        (WKPreferencesGetForceSoftwareWebGLRendering):
        * UIProcess/API/C/WKPreferencesPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):
        * mac/WebKit2.order:

2013-10-22  Anders Carlsson  <andersca@apple.com>

        Revert r157445 since it broke certificates on Mac.
        <rdar://problem/15246926&15254017&15269117>

        * GNUmakefile.list.am:
        * NetworkProcess/AsynchronousNetworkLoaderClient.cpp:
        (WebKit::AsynchronousNetworkLoaderClient::didReceiveResponse):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost):
        * PlatformEfl.cmake:
        * PlatformGTK.cmake:
        * Shared/API/c/mac/WKCertificateInfoMac.mm:
        (WKCertificateInfoCreateWithCertficateChain):
        (WKCertificateInfoGetCertificateChain):
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::tryUsePlatformCertificateInfoForChallenge):
        (WebKit::AuthenticationManager::useCredentialForChallenge):
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/Authentication/AuthenticationManager.messages.in:
        * Shared/Authentication/mac/AuthenticationManager.mac.mm:
        (WebKit::AuthenticationManager::tryUsePlatformCertificateInfoForChallenge):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebCertificateInfo.h:
        (WebKit::WebCertificateInfo::create):
        (WebKit::WebCertificateInfo::platformCertificateInfo):
        (WebKit::WebCertificateInfo::WebCertificateInfo):
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/mac/PlatformCertificateInfo.h: Renamed from Source/WebCore/platform/network/soup/CertificateInfoSoup.cpp.
        (WebKit::PlatformCertificateInfo::certificateChain):
        * Shared/mac/PlatformCertificateInfo.mm: Renamed from Source/WebCore/platform/network/mac/CertificateInfoMac.mm.
        (WebKit::PlatformCertificateInfo::PlatformCertificateInfo):
        (WebKit::PlatformCertificateInfo::encode):
        (WebKit::PlatformCertificateInfo::decode):
        (WebKit::PlatformCertificateInfo::dump):
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (CoreIPC::::encodePlatformData):
        (CoreIPC::::decodePlatformData):
        * Shared/soup/PlatformCertificateInfo.cpp: Added.
        (WebKit::PlatformCertificateInfo::PlatformCertificateInfo):
        (WebKit::PlatformCertificateInfo::~PlatformCertificateInfo):
        (WebKit::PlatformCertificateInfo::encode):
        (WebKit::PlatformCertificateInfo::decode):
        * Shared/soup/PlatformCertificateInfo.h: Renamed from Source/WebCore/platform/network/CertificateInfo.h.
        (WebKit::PlatformCertificateInfo::certificate):
        (WebKit::PlatformCertificateInfo::tlsErrors):
        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (CoreIPC::::encodePlatformData):
        (CoreIPC::::decodePlatformData):
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_get_tls_info):
        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        (WebKit::AuthenticationChallengeProxy::useCredential):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::allowSpecificHTTPSCertificateForHost):
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::didCommitLoad):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::didReceiveResponseWithCertificateInfo):
        * WebProcess/Network/WebResourceLoader.h:
        * WebProcess/Network/WebResourceLoader.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):

2013-10-22  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Disable threaded scrolling for RemoteLayerTreeDrawingArea
        https://bugs.webkit.org/show_bug.cgi?id=123187

        Reviewed by Dean Jackson.

        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::supportsThreadedScrolling):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        Threaded scrolling doesn't work with remote layer trees yet.
        Let the DrawingArea subclass tell WebPage if it supports threaded
        scrolling, and make TiledCoreAnimationDrawingArea say that it does.

2013-10-22  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix on EFL port after r157823

        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
        (CoreIPC::::encode): renamed getOperationType() to type().

2013-10-22  Tim Horton  <timothy_horton@apple.com>

        {ClipPathOperation, FilterOperation}::getOperationType() should not include 'get'
        https://bugs.webkit.org/show_bug.cgi?id=123172

        Reviewed by Simon Fraser.

        * Shared/WebCoreArgumentCoders.cpp:
        (CoreIPC::encodeFilterOperation):
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTextStream::operator<<):
        Adopt the new name.

2013-10-22  Csaba Osztrogonác  <ossy@webkit.org>

        URTBF after r157803 for !ENABLE(CSS_FILTERS) platforms.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h:
        * Shared/WebCoreArgumentCoders.cpp:

2013-10-22  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Support hardware accelerated filters
        https://bugs.webkit.org/show_bug.cgi?id=123139

        Reviewed by Anders Carlsson.

        * Shared/WebCoreArgumentCoders.cpp:
        (CoreIPC::ArgumentCoder<Length>::encode):
        (CoreIPC::ArgumentCoder<Length>::decode):
        Add simple coders for Length.

        (CoreIPC::encodeFilterOperation):
        (CoreIPC::decodeFilterOperation):
        Serialize and deserialize FilterOperations, except for CUSTOM and VALIDATED_CUSTOM.

        (CoreIPC::ArgumentCoder<Length>::encode):
        (CoreIPC::ArgumentCoder<Length>::decode):
        Add coders for FilterOperations that delegate to {en,de}codeFilterOperation
        for each operation in the list.

        * Shared/WebCoreArgumentCoders.h:
        Drive-by fix indentation.
        Expose the Length and FilterOperations coders.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        Add FiltersChanged and LayerProperties::filters.

        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        Encode and decode our FilterOperations.

        (WebKit::dumpChangedLayers):
        Dump information about the layers' filters.

        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::commit):
        Use PlatformCAFilters code to apply a FilterOperations object to our CALayer.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::setFilters):
        Replace existing filters with our new set, and note that they've changed.

        (PlatformCALayerRemote::copyFiltersFrom):
        Not yet implemented. Not critical for this feature, either.

        (PlatformCALayerRemote::filtersCanBeComposited):
        For now, this is the same as the Mac version.

2013-10-22  Brian Holt  <brian.holt@samsung.com>

        [GTK] Add WebKit2 API for TLS errors
        https://bugs.webkit.org/show_bug.cgi?id=120160

        Reviewed by Carlos Garcia Campos.

        Add a new signal load-failed-with-tls-errors that is emitted with
        a WebKitCertificateInfo boxed type to allow users to deal with TLS
        errors. A new API is exposed in WebKitWebContext to allow
        exceptions for TLS errors on a given host.

        * GNUmakefile.list.am:
        * PlatformGTK.cmake:
        * UIProcess/API/gtk/WebKitCertificateInfo.cpp: Added.
        (webkitCertificateInfoGetCertificateInfo):
        (webkit_certificate_info_copy):
        (webkit_certificate_info_free):
        (webkit_certificate_info_get_tls_certificate):
        (webkit_certificate_info_get_tls_errors):
        * UIProcess/API/gtk/WebKitCertificateInfo.h: Added.
        * UIProcess/API/gtk/WebKitCertificateInfoPrivate.h: Added.
        (_WebKitCertificateInfo::_WebKitCertificateInfo):
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkit_web_context_allow_tls_certificate_for_host): Support TLS
        exceptions for a given host.
        * UIProcess/API/gtk/WebKitWebContext.h:
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_class_init): Added new signal.
        (webkitWebViewLoadFailedWithTLSErrors): Emit new signal with
        WebKitCertificateInfo and host.
        * UIProcess/API/gtk/WebKitWebView.h:
        * UIProcess/API/gtk/WebKitWebViewPrivate.h:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
        * UIProcess/API/gtk/docs/webkit2gtk.types:
        * UIProcess/API/gtk/tests/TestSSL.cpp:
        (testLoadFailedWithTLSErrors):
        (httpsServerCallback):
        (beforeAll): Added new test.
        * UIProcess/API/gtk/webkit2.h:
        * UIProcess/API/gtk/webkit2marshal.list:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::allowSpecificHTTPSCertificateForHost): Send
        message to WebProcess to allow a certificate and host pair.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in: New message to tell
        WebProcess to allow a specific TLS certificate for a given host.
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::allowSpecificHTTPSCertificateForHost): Allow
        certificate and host pair.

2013-10-22  Dan Bernstein  <mitz@apple.com>

        Try to make the 32-bit Mac build happy.

        * UIProcess/API/mac/WKBrowsingContextLoadDelegate.h:

2013-10-21  Dan Bernstein  <mitz@apple.com>

        Try to make the 32-bit Mac build happy.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (setUpPageLoaderClient):

2013-10-21  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Add load delegate method for didChangeBackForwardList
        https://bugs.webkit.org/show_bug.cgi?id=123136

        Reviewed by Anders Carlsson.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (didChangeBackForwardList): Added. Calls new delegate method.
        (setUpPageLoaderClient):  Hook up new client function.
        * UIProcess/API/mac/WKBrowsingContextLoadDelegate.h: Declare new delegate method.

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

        Add a version of WebKitSystemInterface for Mavericks.

        Reviewed by Ryosuke Niwa.

        * Configurations/DebugRelease.xcconfig:

2013-10-21  Dan Bernstein  <mitz@apple.com>

        Try to fix the Mac 32-bit build.

        * UIProcess/API/mac/WKBrowsingContextController.h:
        * UIProcess/API/mac/WKBrowsingContextController.mm:

2013-10-21  Tim Horton  <timothy_horton@apple.com>

        Give up on building RemoteLayerTreeTransaction::dump on Lion, it just won't work.

        This definitely ought to fix the build.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::commit):

2013-10-21  Tim Horton  <timothy_horton@apple.com>

        Maybe a Lion build fix after r157731, part 2.

        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTextStream::operator<<):

2013-10-21  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Back/forward list UI process API
        https://bugs.webkit.org/show_bug.cgi?id=123109

        Reviewed by Darin Adler.

        * CMakeLists.txt: Updated for renames.
        * GNUmakefile.list.am: Ditto.

        * Shared/Cocoa: Added.
        * Shared/Cocoa/WKNSArray.h: Added. WKNSArray is an internal NSArray subclass backed by
        a WebKit::ImmutableArray.
        * Shared/Cocoa/WKNSArray.mm: Added.
        (+[WKNSArray web_arrayWithImmutableArray:]): Added.
        (-[WKNSArray web_initWithImmutableArray:]): Added.
        (-[WKNSArray count]): Added.
        (-[WKNSArray objectAtIndex:]): Added.
        (-[WKNSArray copyWithZone:]): Added.

        * Shared/Cocoa/WKNSObjectExtras.h: Added. Declares a category on NSObject that allows us to
        vend WebKit API objects as Objective-C objects.
        * Shared/Cocoa/WKNSObjectExtras.mm: Added.
        (-[WKObject initWithAPIObject:]): WKObject is the generic Cocoa wrapper for API objects.
        (-[WKObject isEqual:]): Check for equality of the underlying object.
        (-[WKObject hash]): Return a pointer to the underlying object.
        (-[WKObject description]): Added.
        (+[NSObject _web_objectWithAPIObject:]): Added. Returns an appropriate Objective-C object
        for the given API object. Currently returns a WKBackForwardListItem for a back/forward list
        item and a generic WKObject for all other types.

        * UIProcess/API/C/WKBackForwardList.cpp: Renamed.
        * UIProcess/API/C/WKBackForwardList.h: Renamed.
        * UIProcess/API/C/WKBackForwardListItem.cpp: Renamed.
        * UIProcess/API/C/WKBackForwardListItem.h: Renamed.
        * UIProcess/API/C/WKBackForwardListItemRef.cpp: Copied from Source/WebKit2/UIProcess/API/C/WKBackForwardListItem.cpp.
        * UIProcess/API/C/WKBackForwardListItemRef.h: Copied from Source/WebKit2/UIProcess/API/C/WKBackForwardListItem.h.
        * UIProcess/API/C/WKBackForwardListRef.cpp: Copied from Source/WebKit2/UIProcess/API/C/WKBackForwardList.cpp.
        * UIProcess/API/C/WKBackForwardListRef.h: Copied from Source/WebKit2/UIProcess/API/C/WKBackForwardList.h.

        * UIProcess/API/C/WebKit2_C.h: Updated for header renames.

        * UIProcess/API/efl/ewk_back_forward_list.cpp: Updated for rename.
        * UIProcess/API/efl/ewk_back_forward_list_item.cpp: Ditto.

        * UIProcess/API/mac/WKBrowsingContextController.h: Declared backForwardList property.
        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController backForwardList]): Added this accessor.

        * UIProcess/Cocoa: Added.
        * UIProcess/Cocoa/WKBackForwardList.h: Added.
        * UIProcess/Cocoa/WKBackForwardList.mm: Added.
        (toWKBackForwardListItem): Added this helper.
        (-[WKBackForwardList currentItem]): Added.
        (-[WKBackForwardList backItem]): Added.
        (-[WKBackForwardList forwardItem]): Added.
        (-[WKBackForwardList itemAtIndex:]): Added.
        (-[WKBackForwardList backListCount]): Added.
        (-[WKBackForwardList forwardListCount]): Added.
        (-[WKBackForwardList backListWithLimit:]): Added.
        (-[WKBackForwardList forwardListWithLimit:]): Added.
        (-[WKBackForwardList _initWithList:]): Added.
        * UIProcess/Cocoa/WKBackForwardListInternal.h: Added.

        * UIProcess/Cocoa/WKBackForwardListItem.h: Added.
        * UIProcess/Cocoa/WKBackForwardListItem.mm: Added.
        (-[WKBackForwardListItem URL]): Added.
        (-[WKBackForwardListItem title]): Added.
        (-[WKBackForwardListItem originalURL]): Added.
        (-[WKBackForwardListItem isEqual:]): Check for equality of the underlying object.
        (-[WKBackForwardListItem hash]): Return a pointer to the underlying object
        (-[WKBackForwardListItem _initWithItem:]): Added.
        * UIProcess/Cocoa/WKBackForwardListItemInternal.h: Added.

        * WebKit2.xcodeproj/project.pbxproj: Updated for renames and additions.

2013-10-21  Tim Horton  <timothy_horton@apple.com>

        Maybe a Lion build fix after r157731.

        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTextStream::operator<<):

2013-10-21  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Clean up transaction logging
        https://bugs.webkit.org/show_bug.cgi?id=123116

        Reviewed by Anders Carlsson.

        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTextStream::RemoteLayerTreeTextStream):
        (WebKit::RemoteLayerTreeTextStream::increaseIndent):
        (WebKit::RemoteLayerTreeTextStream::decreaseIndent):
        (WebKit::RemoteLayerTreeTextStream::writeIndent):
        (WebKit::RemoteLayerTreeTextStream::operator<<):
        Add some stream operator overrides for various types we need to dump.
        Add a notion of current indent to our TextStream subclass to make it
        easy to keep track of where we are.

        (WebKit::dumpProperty):
        Added, hand any arbitrary type to RemoteLayerTreeTransaction.

        (WebKit::dumpChangedLayers):
        (WebKit::RemoteLayerTreeTransaction::dump):
        Make use of TextStream.

2013-10-21  Brady Eidson  <beidson@apple.com>

        Transition most use of IDBBackingStoreLevelDB to IDBBackingStoreInterface
        https://bugs.webkit.org/show_bug.cgi?id=123105

        Reviewed by Anders Carlsson.

        Stub out a new pure virtual method:
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::createTransactionBackend):
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

2013-10-21  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Backing store should take contentsScale into account
        https://bugs.webkit.org/show_bug.cgi?id=123106

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::ensureBackingStore):
        (PlatformCALayerRemote::setNeedsDisplay):
        (PlatformCALayerRemote::setContentsScale):
        Inform the backing store of the contentsScale, and when it changes.

        * WebProcess/WebPage/mac/RemoteLayerBackingStore.h:
        (WebKit::RemoteLayerBackingStore::scale): Added.
        (WebKit::RemoteLayerBackingStore::mapToContentCoordinates): Added.
        * WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:
        (RemoteLayerBackingStore::RemoteLayerBackingStore):
        (RemoteLayerBackingStore::encode):
        (RemoteLayerBackingStore::decode):
        (RemoteLayerBackingStore::mapToContentCoordinates):
        Factor out flipping so we can use it for repaints in multiple places.

        (RemoteLayerBackingStore::setNeedsDisplay):
        (RemoteLayerBackingStore::display):
        Create a buffer scaled up by contentsScale, take the scale into account
        when copying clean bits from the front buffer, and apply the scale before
        painting into the back buffer.

2013-10-21  Gergo Balogh  <geryxyz@inf.u-szeged.hu>

        Remove qt from generate-forwarding-headers.pl
        https://bugs.webkit.org/show_bug.cgi?id=123090

        Reviewed by Andreas Kling.

        * Scripts/generate-forwarding-headers.pl:

2013-10-21  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] g-ir-scanner should use the configured C compiler
        https://bugs.webkit.org/show_bug.cgi?id=123088

        Reviewed by Carlos Garcia Campos.

        * GNUmakefile.am: Pass the C compiler that was detected at configuration to the g-ir-scanner command
        via the CC environment variable. This solves the issue of the scanner running the GCC compiler with
        the Clang-specific CFLAGS.

2013-10-20  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Loading progress API
        https://bugs.webkit.org/show_bug.cgi?id=123069

        Reviewed by Sam Weinig.

        * UIProcess/API/mac/WKBrowsingContextController.h: Declared estimatedProgress property.
        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController estimatedProgress]): Added.
        (didStartProgress): Added. Calls new delegate method
        -browsingContextControllerDidStartProgress:.
        (didChangeProgress): Added. Calls new delegate method
        -browsingContextController:estimatedProgressChangedTo:.
        (didFinishProgress): Added. Calls new delegate method
        -browsingContextControllerDidFinishProgress:.
        (setUpPageLoaderClient): Hook up new client functions.
        * UIProcess/API/mac/WKBrowsingContextLoadDelegate.h: Declared new delegate methods.

2013-10-20  Thiago de Barros Lacerda  <thiago.lacerda@openbossa.org>

        Removing "unused parameter" compiling warnings from WebKit2 and WebCore
        https://bugs.webkit.org/show_bug.cgi?id=123075

        Reviewed by Andreas Kling.

        * NetworkProcess/NetworkProcessPlatformStrategies.cpp:
        (WebKit::NetworkProcessPlatformStrategies::loadResourceSynchronously):
        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetPluginSiteDataManager):
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetInspectorUsesWebKitUserInterface):
        (WKPreferencesGetInspectorUsesWebKitUserInterface):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getPlugins):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageSetFullScreenClient):
        (WKBundlePageWillEnterFullScreen):
        (WKBundlePageDidEnterFullScreen):
        (WKBundlePageWillExitFullScreen):
        (WKBundlePageDidExitFullScreen):
        * WebProcess/MediaCache/WebMediaCacheManager.cpp:
        (WebKit::WebMediaCacheManager::clearCacheForHostname):
        * WebProcess/OriginData/WebOriginDataManager.cpp:
        (WebKit::WebOriginDataManager::getOrigins):
        (WebKit::WebOriginDataManager::deleteEntriesForOrigin):
        (WebKit::WebOriginDataManager::deleteAllEntries):
        (WebKit::WebOriginDataManager::startObservingChanges):
        (WebKit::WebOriginDataManager::stopObservingChanges):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::createPlugin):
        (WebKit::WebFrameLoaderClient::recreatePlugin):
        * WebProcess/WebPage/EventDispatcher.cpp:
        (WebKit::EventDispatcher::wheelEvent):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::canPluginHandleResponse):

2013-10-19  Jer Noble  <jer.noble@apple.com>

        Unreviewed roll out of r157695; broke Mac builds.

        * Configurations/FeatureDefines.xcconfig:

2013-10-07  Jer Noble  <jer.noble@apple.com>

        [MSE] [Mac] Enable MediaSource on the Mac
        https://bugs.webkit.org/show_bug.cgi?id=122484

        Reviewed by Darin Adler.

        Enable ENABLE_MEDIA_SOURCE.

        * Configurations/FeatureDefines.xcconfig:

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

        Fix the Mac 32-bit build by reverting r157676, r157678, and r157679.

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

        Try to fix the Mac 32-bit build.

        * UIProcess/mac/WKFullScreenWindowController.h:
        * UIProcess/mac/WKFullScreenWindowController.mm:

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

        Try to fix the Mac 32-bit build.

        * UIProcess/API/mac/WKView.h:
        * UIProcess/API/mac/WKView.mm:
        * UIProcess/API/mac/WKViewInternal.h:
        * UIProcess/API/mac/WKViewPrivate.h:

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

        [Cocoa] Remove some indirection that was only necessary for supporting the legacy Objective-C runtime
        https://bugs.webkit.org/show_bug.cgi?id=123065

        Reviewed by Sam Weinig.

        * UIProcess/API/mac/WKBrowsingContextController.h: Added WK_API_ENABLED guard. Removed _data
        ivar and WKBrowsingContextControllerData class declaration.
        * UIProcess/API/mac/WKBrowsingContextController.mm: Added WK_API_ENABLED guard. Removed
        WKBrowsingContextControllerData class and moved _pageRef ivar directly into
        WKBrowsingContextController, declaring it in the @implementation. Removed ivar and accessors
        for the loadDelegate property, letting the compiler synthesize them.
        (-[WKBrowsingContextController dealloc]): Removed indirection via _data.
        (-[WKBrowsingContextController _pageRef]): Ditto.
        (-[WKBrowsingContextController loadRequest:userData:]): Removed indirection via -_pageRef.
        (-[WKBrowsingContextController loadFileURL:restrictToFilesWithin:userData:]): Ditto.
        (-[WKBrowsingContextController loadHTMLString:baseURL:userData:]): Ditto.
        (-[WKBrowsingContextController loadData:MIMEType:textEncodingName:baseURL:userData:]):
        Ditto.
        (-[WKBrowsingContextController stopLoading]): Ditto.
        (-[WKBrowsingContextController reload]): Ditto.
        (-[WKBrowsingContextController reloadFromOrigin]): Ditto.
        (-[WKBrowsingContextController goForward]): Ditto.
        (-[WKBrowsingContextController canGoForward]): Ditto.
        (-[WKBrowsingContextController goBack]): Ditto.
        (-[WKBrowsingContextController canGoBack]): Ditto.
        (-[WKBrowsingContextController activeURL]): Ditto.
        (-[WKBrowsingContextController provisionalURL]): Ditto.
        (-[WKBrowsingContextController committedURL]): Ditto.
        (-[WKBrowsingContextController title]): Ditto.
        (-[WKBrowsingContextController textZoom]): Ditto.
        (-[WKBrowsingContextController setTextZoom:]): Ditto.
        (-[WKBrowsingContextController pageZoom]): Ditto.
        (-[WKBrowsingContextController setPageZoom:]): Ditto.
        (-[WKBrowsingContextController setPaginationMode:]): Ditto.
        (-[WKBrowsingContextController paginationMode]): Ditto.
        (-[WKBrowsingContextController setPaginationBehavesLikeColumns:]): Ditto.
        (-[WKBrowsingContextController paginationBehavesLikeColumns]): Ditto.
        (-[WKBrowsingContextController setPageLength:]): Ditto.
        (-[WKBrowsingContextController pageLength]): Ditto.
        (-[WKBrowsingContextController setGapBetweenPages:]): Ditto.
        (-[WKBrowsingContextController gapBetweenPages]): Ditto.
        (-[WKBrowsingContextController pageCount]): Ditto.
        (-[WKBrowsingContextController _initWithPageRef:]): Removed indirection via _data.
        * UIProcess/API/mac/WKBrowsingContextControllerInternal.h: Added WK_API_ENABLED guard.
        * UIProcess/API/mac/WKBrowsingContextControllerPrivate.h: Ditto.

        * UIProcess/API/mac/WKBrowsingContextGroup.h: Added WK_API_ENABLED guard. Removed _data ivar
        and WKBrowsingContextGroupData class declaration.
        * UIProcess/API/mac/WKBrowsingContextGroup.mm: Added WK_API_ENABLED guard. Removed
        WKBrowsingContextGroupData class and moved _pageGroupRef ivar directly info
        WKBrowsingContextGroup, declaring it in the @implementation.
        (-[WKBrowsingContextGroup initWithIdentifier:]): Removed indirection via _data.
        (-[WKBrowsingContextGroup _pageGroupRef]): Ditto.
        * UIProcess/API/mac/WKBrowsingContextGroupPrivate.h: Added WK_API_ENABLED guard.

        * UIProcess/API/mac/WKConnection.h: Added WK_API_ENABLED guard. Removed _data ivar and
        WKConnectionData class declaration.
        * UIProcess/API/mac/WKConnection.mm: Added WK_API_ENABLED guard. Removed WKConnectionData
        class and moved _connectionRef ivar directly into WKConnection, declaring it in the
        @implementation. Removed ivar and accessors for the delegate property, letting the compiler
        synthesize them.
        (-[WKConnection dealloc]): Removed indirection via _data.
        (-[WKConnection sendMessageWithName:body:]): Ditto.
        (-[WKConnection _initWithConnectionRef:]): Ditto.
        * UIProcess/API/mac/WKConnectionInternal.h: Added WK_API_ENABLED guard.

        * UIProcess/API/mac/WKProcessGroup.h: Added WK_API_ENABLED guard. Replaced forward
        declaration of WKConnection with an import. Removed _data ivar and WKProcessGroupData class
        declaration.
        * UIProcess/API/mac/WKProcessGroup.mm: Added WK_API_ENABLED guard. Removed
        WKProcessGroupData class and moved _contextRef ivar directly into WKProcessGroup, declaring
        it in the @implementation. Removed ivar and accessors for the delegate property, letting the
        compiler synthesize them.
        (-[WKProcessGroup initWithInjectedBundleURL:]): Removed indirection via _data.
        (-[WKProcessGroup dealloc]): Ditto.
        (-[WKProcessGroup _contextRef]): Ditto.
        * UIProcess/API/mac/WKProcessGroupPrivate.h: Added WK_API_ENABLED guard.

2013-10-19  Andreas Kling  <akling@apple.com>

        Attempt to get Lion building.

        * UIProcess/mac/WebColorPickerMac.h:

2013-10-18  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Double-buffering and minimization of repaints
        https://bugs.webkit.org/show_bug.cgi?id=123043

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::ensureBackingStore):
        Don't worry about isOpaque with RemoteLayerBackingStore; this is a
        optimization that is causing trouble; we can re-add it later.

        (PlatformCALayerRemote::setBounds):
        Make sure that we will repaint if our bounds change.

        * WebProcess/WebPage/mac/RemoteLayerBackingStore.h:
        (WebKit::RemoteLayerBackingStore::bitmap):
        Keep a front and back buffer; return the front buffer when being asked for the bitmap.
        Keep a Region of repaint areas.

        * WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:
        (RemoteLayerBackingStore::RemoteLayerBackingStore):
        (RemoteLayerBackingStore::encode):
        (RemoteLayerBackingStore::decode):
        Serialize only the front buffer, since the UI process only needs that.

        (RemoteLayerBackingStore::setNeedsDisplay):
        Store repaint rects instead of always setting the whole layer to be dirty.

        (RemoteLayerBackingStore::display):
        Paint into the back buffer (copying valid parts over from the front buffer),
        then swap it to the front buffer. Use drawLayerContents so we get repaint counters, etc.

2013-10-18  Anders Carlsson  <andersca@apple.com>

        Try to fix the Lion build.

        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:

2013-10-18  Anders Carlsson  <andersca@apple.com>

        Remove spaces between template angle brackets
        https://bugs.webkit.org/show_bug.cgi?id=123040

        Reviewed by Andreas Kling.

        * UIProcess/mac/WebColorPickerMac.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::setProcessSuppressionEnabled):

2013-10-18  Brady Eidson  <beidson@apple.com>

        Get rid of IDBFactoryBackendLevelDB and IDBTransactionBackendLevelDB in IDBDatabaseBackendLevelDB.
        https://bugs.webkit.org/show_bug.cgi?id=123039

        Reviewed by Anders Carlsson.

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::removeIDBDatabaseBackend): Stub out this new interface method.
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

2013-10-18  Dan Bernstein  <mitz@apple.com>

        [Cocoa] WKBrowsingController accessors crash instead of returning nil
        https://bugs.webkit.org/show_bug.cgi?id=123036

        Reviewed by Anders Carlsson.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (autoreleased): Return nil if the object is NULL.

2013-10-18  Anders Carlsson  <andersca@apple.com>

        Remove some Windows specific code from WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=123034

        Reviewed by Beth Dakin.

        * Platform/PlatformProcessIdentifier.h:
        * Shared/API/c/WKDeclarationSpecifiers.h:
        * UIProcess/API/C/WKNativeEvent.h:
        * UIProcess/API/C/WKPreferencesPrivate.h:
        * config.h:

2013-10-18  Dan Bernstein  <mitz@apple.com>

        Removed the __MAC_OS_X_VERSION_MIN_REQUIRED condition from the definition of WK_API_ENABLED.

        Rubber-stamped by Anders Carlsson.

        * Shared/API/Cocoa/WKFoundation.h:

2013-10-17  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Proxy layer contents to the UI process
        http://bugs.webkit.org/show_bug.cgi?id=123003

        Reviewed by Anders Carlsson.

        Proxy layer contents to the UI process. Contents are painted into ShareableBitmaps
        for now, and are fully repainted on any invalidation. Also, contents do not respect
        any kind of scale or use of contentsRect/etc.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        (WebKit::dumpChangedLayers):
        Store/encode/decode/dump the new RemoteLayerBackingStore.

        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::commit):
        Fix a mistake where contentsRect was getting reset when contentsScale changed.
        Set the layer contents when the backing store changes.

        * WebKit2.xcodeproj/project.pbxproj:
        Add RemoteLayerBackingStore.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::recursiveBuildTransaction):
        Paint while building our transaction, and mark the backing store as changed
        if we did any painting.

        (PlatformCALayerRemote::ensureBackingStore):
        Keep the backing store's properties up-to-date with our layer.

        (PlatformCALayerRemote::setNeedsDisplay):
        Inform the backing store that it needs to paint.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:

        * WebProcess/WebPage/mac/RemoteLayerBackingStore.h: Added.
        * WebProcess/WebPage/mac/RemoteLayerBackingStore.mm: Added.
        (RemoteLayerBackingStore::RemoteLayerBackingStore):
        (RemoteLayerBackingStore::encode):
        (RemoteLayerBackingStore::decode):
        Encode/decode our ShareableBitmap (via its handle) and size.

        (RemoteLayerBackingStore::setNeedsDisplay):
        For now, repaint the world.

        (RemoteLayerBackingStore::display):
        Create a new bitmap if needed, and paint into it.

2013-10-17  Dan Bernstein  <mitz@apple.com>

        Fixed a typo in the definition of WK_API_ENABLED.

        * Shared/API/Cocoa/WKFoundation.h: It’s 101000, not 10100.

2013-10-17  Dan Bernstein  <mitz@apple.com>

        Add and deploy WK_API_ENABLED guards
        https://bugs.webkit.org/show_bug.cgi?id=123008

        Reviewed by Darin Adler.

        * Shared/API/Cocoa: Added.
        * Shared/API/Cocoa/WKFoundation.h: Added. Defined WK_API_ENABLED based on whether the
        Objective-C API should be enabled in the current configuration.
        * Shared/mac/ObjCObjectGraphCoders.mm:
        (WebKit::typeFromObject): Changed to use WK_API_ENABLED.
        (WebKit::WebContextObjCObjectGraphEncoderImpl::encode): Ditto.
        (WebKit::WebContextObjCObjectGraphDecoderImpl::decode): Ditto.
        (WebKit::InjectedBundleObjCObjectGraphEncoderImpl::encode): Ditto.
        (WebKit::InjectedBundleObjCObjectGraphDecoderImpl::decode): Ditto.
        * UIProcess/API/mac/WKTypeRefWrapper.h: Ditto.
        * UIProcess/API/mac/WKTypeRefWrapper.mm: Ditto.
        * UIProcess/API/mac/WebKit2.h: Imported WKFoundation.h.
        * WebKit2.xcodeproj/project.pbxproj: Added new Cocoa group in Shared/API. Added
        WKFoundation.h as a public header.
        * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm:
        * WebProcess/InjectedBundle/API/mac/WKDOMElement.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMElement.mm:
        * WebProcess/InjectedBundle/API/mac/WKDOMInternals.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm:
        * WebProcess/InjectedBundle/API/mac/WKDOMNode.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMNode.mm:
        * WebProcess/InjectedBundle/API/mac/WKDOMNodePrivate.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMRange.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMRange.mm:
        * WebProcess/InjectedBundle/API/mac/WKDOMRangePrivate.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMText.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMText.mm:
        * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInPrivate.h:
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::load):

2013-10-17  Csaba Osztrogonác  <ossy@webkit.org>

        [WK2] Speculative buildfixes for GTK and EFL after r157582.

        * CMakeLists.txt:
        * GNUmakefile.am:

2013-10-17  Martin Hock  <mhock@apple.com>

        Refactor stored website data APIs
        https://bugs.webkit.org/show_bug.cgi?id=122781

        Reviewed by Brady Eidson.

        Add WebOriginDataManager along with corresponding class
        WebOriginDataManagerProxy and API WKOriginDataManager.

        Currently, the new files are unused.

        WKOriginDataManager should subsume the functionality of:
        WKApplicationCacheManager, WKCookieManager, WKDatabaseManager,
        WKKeyValueStorageManager, WKMediaCacheManager,
        WKPluginSiteDataManager, and WKResourceCacheManager.

        * CMakeLists.txt:
        * DerivedSources.make:
        * GNUmakefile.am:
        * GNUmakefile.list.am:
        * Shared/API/c/WKBase.h:
        * Shared/APIObject.h:
        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetOriginDataManager):
        * UIProcess/API/C/WKContext.h:
        * UIProcess/API/C/WKOriginDataManager.cpp: Added.
        (WKOriginDataManagerGetTypeID):
        (WKOriginDataManagerGetOrigins):
        (WKOriginDataManagerDeleteEntriesForOrigin):
        (WKOriginDataManagerDeleteAllEntries):
        (WKOriginDataManagerStartObservingChanges):
        (WKOriginDataManagerStopObservingChanges):
        (WKOriginDataManagerSetChangeClient):
        * UIProcess/API/C/WKOriginDataManager.h: Added.
        * UIProcess/WebOriginDataManagerProxy.cpp: Added.
        (WebKit::WebOriginDataManagerProxy::supplementName):
        (WebKit::WebOriginDataManagerProxy::create):
        (WebKit::WebOriginDataManagerProxy::WebOriginDataManagerProxy):
        (WebKit::WebOriginDataManagerProxy::~WebOriginDataManagerProxy):
        (WebKit::WebOriginDataManagerProxy::contextDestroyed):
        (WebKit::WebOriginDataManagerProxy::processDidClose):
        (WebKit::WebOriginDataManagerProxy::shouldTerminate):
        (WebKit::WebOriginDataManagerProxy::refWebContextSupplement):
        (WebKit::WebOriginDataManagerProxy::derefWebContextSupplement):
        (WebKit::WebOriginDataManagerProxy::getOrigins):
        (WebKit::WebOriginDataManagerProxy::didGetOrigins):
        (WebKit::WebOriginDataManagerProxy::deleteEntriesForOrigin):
        (WebKit::WebOriginDataManagerProxy::deleteAllEntries):
        (WebKit::WebOriginDataManagerProxy::startObservingChanges):
        (WebKit::WebOriginDataManagerProxy::stopObservingChanges):
        (WebKit::WebOriginDataManagerProxy::setChangeClient):
        (WebKit::WebOriginDataManagerProxy::didChange):
        * UIProcess/WebOriginDataManagerProxy.h: Added.
        * UIProcess/WebOriginDataManagerProxy.messages.in: Added.
        * UIProcess/WebOriginDataManagerProxyChangeClient.cpp: Added.
        (WebKit::WebOriginDataManagerProxyChangeClient::didChange):
        * UIProcess/WebOriginDataManagerProxyChangeClient.h: Added.
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/OriginData/WebOriginDataManager.cpp: Added.
        (WebKit::WebOriginDataManager::supplementName):
        (WebKit::WebOriginDataManager::WebOriginDataManager):
        (WebKit::WebOriginDataManager::getOrigins):
        (WebKit::WebOriginDataManager::deleteEntriesForOrigin):
        (WebKit::WebOriginDataManager::deleteAllEntries):
        (WebKit::WebOriginDataManager::startObservingChanges):
        (WebKit::WebOriginDataManager::stopObservingChanges):
        * WebProcess/OriginData/WebOriginDataManager.h: Added.
        * WebProcess/OriginData/WebOriginDataManager.messages.in: Added.

2013-10-17  Brady Eidson  <beidson@apple.com>

        Blind attempt at gtk-wk2 build fix.

        * GNUmakefile.am:

2013-10-17  Brady Eidson  <beidson@apple.com>

        Add scaffolding for IDBDatabaseBackends in Web and Database processes
        https://bugs.webkit.org/show_bug.cgi?id=122971

        Reviewed by Tim Horton.

        This patch:
        - Adds a WebProcessIDBDatabaseBackend
        - Adds a DatabaseProcessIDBDatabaseBackend
        - Establishes the basic messaging between them
        - Actually creates those backends as the result of an indexedDB.open() call from javascript

        * DerivedSources.make:
        * WebKit2.xcodeproj/project.pbxproj:
        * Platform/Logging.h:

        Hook up messaging so (Web/Database)ProcessIDBDatabaseBackends can message each other:
        * DatabaseProcess/DatabaseToWebProcessConnection.cpp:
        (WebKit::DatabaseToWebProcessConnection::didReceiveMessage):
        (WebKit::DatabaseToWebProcessConnection::establishIDBDatabaseBackend):
        * DatabaseProcess/DatabaseToWebProcessConnection.h:
        (WebKit::DatabaseToWebProcessConnection::connection):
        * DatabaseProcess/DatabaseToWebProcessConnection.messages.in: Added.

        DatabaseProcess side of an IDBDatabaseBackend:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBDatabaseBackend.cpp:
        (WebKit::DatabaseProcessIDBDatabaseBackend::DatabaseProcessIDBDatabaseBackend):
        (WebKit::DatabaseProcessIDBDatabaseBackend::~DatabaseProcessIDBDatabaseBackend):
        (WebKit::DatabaseProcessIDBDatabaseBackend::openConnection):
        (WebKit::DatabaseProcessIDBDatabaseBackend::messageSenderConnection):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBDatabaseBackend.h: Added.
        (WebKit::DatabaseProcessIDBDatabaseBackend::create):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBDatabaseBackend.messages.in: Added.

        WebProcess side of an IDBDatabaseBackend:
        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.cpp: Added.
        (WebKit::generateBackendIdentifier):
        (WebKit::WebProcessIDBDatabaseBackend::WebProcessIDBDatabaseBackend):
        (WebKit::WebProcessIDBDatabaseBackend::~WebProcessIDBDatabaseBackend):
        (WebKit::WebProcessIDBDatabaseBackend::openConnection):
        (WebKit::WebProcessIDBDatabaseBackend::createObjectStore):
        (WebKit::WebProcessIDBDatabaseBackend::deleteObjectStore):
        (WebKit::WebProcessIDBDatabaseBackend::createTransaction):
        (WebKit::WebProcessIDBDatabaseBackend::close):
        (WebKit::WebProcessIDBDatabaseBackend::commit):
        (WebKit::WebProcessIDBDatabaseBackend::abort):
        (WebKit::WebProcessIDBDatabaseBackend::createIndex):
        (WebKit::WebProcessIDBDatabaseBackend::deleteIndex):
        (WebKit::WebProcessIDBDatabaseBackend::get):
        (WebKit::WebProcessIDBDatabaseBackend::put):
        (WebKit::WebProcessIDBDatabaseBackend::setIndexKeys):
        (WebKit::WebProcessIDBDatabaseBackend::setIndexesReady):
        (WebKit::WebProcessIDBDatabaseBackend::openCursor):
        (WebKit::WebProcessIDBDatabaseBackend::count):
        (WebKit::WebProcessIDBDatabaseBackend::deleteRange):
        (WebKit::WebProcessIDBDatabaseBackend::clear):
        (WebKit::WebProcessIDBDatabaseBackend::messageSenderConnection):
        (WebKit::WebProcessIDBDatabaseBackend::establishDatabaseProcessBackend):
        * WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h: Added.
        (WebKit::WebProcessIDBDatabaseBackend::create):

        Basic shared utilities that multiple processes will need going forward:
        * Shared/Databases/IndexedDB/IDBUtilities.cpp:
        (WebKit::uniqueDatabaseIdentifier):
        * Shared/Databases/IndexedDB/IDBUtilities.h:

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::sharedDatabaseBackendMap):
        (WebKit::WebIDBFactoryBackend::open): Actually establish an IDBDatabaseBackend in the DatabaseProcess
          when indexedDB.open() is called, even if it does nothing for now.

        * WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
        * WebProcess/Databases/WebToDatabaseProcessConnection.h:

2013-10-17  Attila Dusnoki  <h047679@stud.u-szeged.hu>

        [WK2] REGRESSION(r156472): scrolling coordinator is always enabled incorrectly.
        https://bugs.webkit.org/show_bug.cgi?id=122958

        Reviewed by Tim Horton.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage): Missing ENABLE(THREADED_SCROLLING) guard added.

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

        <rdar://problem/15183901> WebKit2 XPC services load the wrong frameworks when running
        from the staged frameworks location.

        Build the XPC services with DYLD_VERSIONED_FRAMEWORK_PATH when USE_STAGING_INSTALL_PATH
        is set to YES. This is necessary because there's no way to specify environment variables
        to be used when an XPC service is launched.

        Reviewed by Anders Carlsson.

        * Configurations/BaseTarget.xcconfig: Set OTHER_LDFLAGS_VERSIONED_FRAMEWORK_PATH to contain the
        DYLD_VERSIONED_FRAMEWORK_PATH value when USE_STAGING_INSTALL_PATH is YES.
        * Configurations/BaseXPCService.xcconfig: Include OTHER_LDFLAGS_VERSIONED_FRAMEWORK_PATH in the
        value of OTHER_LDFLAGS.
        * Configurations/PluginService.32.xcconfig: Ditto.
        * Configurations/PluginService.64.xcconfig: Ditto.

2013-10-16  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Complete support for simple layer properties
        https://bugs.webkit.org/show_bug.cgi?id=122933

        Reviewed by Anders Carlsson.

        Add remote layer tree support for maskLayer, contentsRect, contentsScale,
        minificationFilter, magnificationFilter, speed, and timeOffset.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        (WebKit::dumpProperty):
        (WebKit::dumpChangedLayers):
        Add the new properties.

        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::toCAFilterType):
        (WebKit::RemoteLayerTreeHost::commit):
        Apply the new properties.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::setSublayers):
        (PlatformCALayerRemote::appendSublayer):
        (PlatformCALayerRemote::insertSublayer):
        Ensure that passed-in sublayers are always also PlatformCALayerRemote instances.
        These are ASSERT_WITH_SECURITY_IMPLICATION as we will later unconditionally static_cast
        them to PlatformCALayerRemote.

        (PlatformCALayerRemote::setMask):
        (PlatformCALayerRemote::setContentsRect):
        (PlatformCALayerRemote::setMinificationFilter):
        (PlatformCALayerRemote::setMagnificationFilter):
        (PlatformCALayerRemote::setSpeed):
        (PlatformCALayerRemote::setTimeOffset):
        (PlatformCALayerRemote::contentsScale):
        (PlatformCALayerRemote::setContentsScale):
        Remove setFrame, store the new properties.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        Remove setFrame, add isRemote, fix pointer side on playerLayer.

2013-10-16  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix attempt on EFL port after r157520 and r157523

        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h:
        Removed ArgumentCoder<TransformationMatrix> which caused redefinition build error
        in EFL port.

2013-10-16  Anders Carlsson  <andersca@apple.com>

        Remove Qt sandbox process code
        https://bugs.webkit.org/show_bug.cgi?id=122920

        Reviewed by Geoffrey Garen.

        This code was only used by the Qt port, and the other Linux-based ports are using the seccomp based sandbox.

        * Shared/linux/SandboxProcess/SandboxEnvironmentLinux.cpp: Removed.
        * Shared/linux/SandboxProcess/SandboxEnvironmentLinux.h: Removed.

2013-10-16  Jochen Eisinger  <jochen@chromium.org>

        A page should exit fullscreen mode if it opens a new popup
        https://bugs.webkit.org/show_bug.cgi?id=122865

        Reviewed by Jer Noble.

        If a fullscreen page opens a popup, the popup would be hidden and
        therefore invisible to the user. To avoid this, exit fullscreen mode
        before opening a new window.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::createWindow):

2013-10-16  Brady Eidson  <beidson@apple.com>

        Blind attempt to fix non-DATABASE_PROCESS builds.

        * WebProcess/WebProcess.cpp:

2013-10-16  Tim Horton  <timothy_horton@apple.com>

        PlatformCALayer constructor should take layer type as an argument
        https://bugs.webkit.org/show_bug.cgi?id=122915

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::PlatformCALayerRemote):
        Use the new LayerType argument.

2013-10-16  Tim Horton  <timothy_horton@apple.com>

        Remote Layer Tree: Use a default instead of an environment variable
        https://bugs.webkit.org/show_bug.cgi?id=122913

        Reviewed by Anders Carlsson.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView std::WebKit::]):
        Use the default 'WebKit2UseRemoteLayerTreeDrawingArea' instead of
        the environment variable 'WK_USE_REMOTE_LAYER_TREE_DRAWING_AREA'
        to indicate that WKViews should make RemoteLayerTreeDrawingAreas.

2013-10-15  Brady Eidson  <beidson@apple.com>

        Flesh out the DatabaseProcess (and launch it!)
        https://bugs.webkit.org/show_bug.cgi?id=122884

        Reviewed by Tim Horton.

        This patch adds actual process launching and basic messaging infrastructure for the DatabaseProcess.

        It still does very little except exist.

        Project file stuff:
        * WebKit2.xcodeproj/project.pbxproj:
        * DerivedSources.make:

        WebContext owns the DatabaseProcess (much like the NetworkProcess):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::ensureDatabaseProcess):
        (WebKit::WebContext::getDatabaseProcessConnection):
        * UIProcess/WebContext.h:

        Add a basic DatabaseProcess that - for now - can only return a new Connection for a WebProcess:
        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::createDatabaseToWebProcessConnection):
        * DatabaseProcess/DatabaseProcess.h:
        * DatabaseProcess/DatabaseProcess.messages.in: Added.

        Add an object to represent a single connection to a single WebProcess:
        * DatabaseProcess/DatabaseToWebProcessConnection.cpp:
        (WebKit::DatabaseToWebProcessConnection::create):
        (WebKit::DatabaseToWebProcessConnection::DatabaseToWebProcessConnection):
        (WebKit::DatabaseToWebProcessConnection::~DatabaseToWebProcessConnection):
        (WebKit::DatabaseToWebProcessConnection::didReceiveMessage):
        (WebKit::DatabaseToWebProcessConnection::didClose):
        (WebKit::DatabaseToWebProcessConnection::didReceiveInvalidMessage):
        * DatabaseProcess/DatabaseToWebProcessConnection.h:

        Basic DatabaseProcessProxy with the ability to ask the DatabaseProcess for a connection to hand back to a WebProcess:
        * UIProcess/Databases/DatabaseProcessProxy.cpp:
        (WebKit::DatabaseProcessProxy::DatabaseProcessProxy):
        (WebKit::DatabaseProcessProxy::getDatabaseProcessConnection):
        (WebKit::DatabaseProcessProxy::didCreateDatabaseToWebProcessConnection):
        (WebKit::DatabaseProcessProxy::didFinishLaunching):
        * UIProcess/Databases/DatabaseProcessProxy.h:
        * UIProcess/Databases/DatabaseProcessProxy.messages.in: Added.

        Add an object to represent a WebProcess’s connection to a DatabaseProcess:
        * WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
        (WebKit::WebToDatabaseProcessConnection::WebToDatabaseProcessConnection):
        (WebKit::WebToDatabaseProcessConnection::~WebToDatabaseProcessConnection):
        (WebKit::WebToDatabaseProcessConnection::didReceiveMessage):
        (WebKit::WebToDatabaseProcessConnection::didClose):
        (WebKit::WebToDatabaseProcessConnection::didReceiveInvalidMessage):
        * WebProcess/Databases/WebToDatabaseProcessConnection.h:
        (WebKit::WebToDatabaseProcessConnection::create):
        (WebKit::WebToDatabaseProcessConnection::connection):

        Give WebProcess(Proxy) an accessor for a Web -> Database process connection:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::webToDatabaseProcessConnectionClosed):
        (WebKit::WebProcess::webToDatabaseProcessConnection):
        (WebKit::WebProcess::ensureWebToDatabaseProcessConnection):
        * WebProcess/WebProcess.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getDatabaseProcessConnection):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::open): Access the database process connection to test that it works.

        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::createIDBFactoryBackend): Keep non-DATABASE_PROCESS builds working.

2013-10-16  Tim Horton  <timothy_horton@apple.com>

        RemoteLayerTree: Add support for more layer properties and transform layers
        https://bugs.webkit.org/show_bug.cgi?id=122906

        Reviewed by Anders Carlsson.

        Add support for name, border width, border color, opacity, transform, sublayer transform,
        hidden, geometry flipped, double sided, masks to bounds, and opaque layer properties.

        Factor layer creation out from layer changes, so that we can create layers of the correct
        type. Use this mechanism to create CATransformLayers when handed a LayerTypeTransformLayer.

        * Shared/WebCoreArgumentCoders.cpp:
        (CoreIPC::::encode):
        (CoreIPC::::decode):
        * Shared/WebCoreArgumentCoders.h:
        Add coders for TransformationMatrix.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        Add the new LayerChange values.

        (WebKit::RemoteLayerTreeTransaction::LayerProperties::notePropertiesChanged):
        LayerProperties::layerChanges should be a LayerChange.

        (WebKit::RemoteLayerTreeTransaction::createdLayers):
        Expose the list of newly created layers (for RemoteLayerTreeHost's consumption).

        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::LayerCreationProperties):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::decode):
        Add (and support coding) a new LayerCreationProperties struct, which is currently
        just a pair of LayerID and PlatformCALayer::LayerType. Additional properties may follow.

        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        Encode and decode all of the new layer properties.
        Encode changedProperties as an enum, not an unsigned.

        (WebKit::RemoteLayerTreeTransaction::encode):
        (WebKit::RemoteLayerTreeTransaction::decode):
        Encode and decode the list of newly created layers.

        (WebKit::RemoteLayerTreeTransaction::setCreatedLayers):
        Setter for the list of newly created layers, which comes from the
        RemoteLayerTreeContext at commit time.

        (WebKit::dumpProperty):
        Helper function to dump TransformationMatrix instances.

        (WebKit::dumpChangedLayers):
        Dump all of the new layer properties.

        (WebKit::RemoteLayerTreeTransaction::dump):
        Dump the list of newly created layers.

        * UIProcess/mac/RemoteLayerTreeHost.h:
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::cgColorFromColor):
        Factor out the code to make a CGColor from a WebCore::Color, as we need it
        for both border and background color.

        (WebKit::RemoteLayerTreeHost::commit):
        Create layers before applying changes, using the new list of newly created layers.
        When applying changes, ensure that the layer we're interested in was already created.
        Rename "sublayer" to "layer", and use dot notation everywhere.
        Apply all the new layer properties to the layers.

        (WebKit::RemoteLayerTreeHost::getLayer):
        (WebKit::RemoteLayerTreeHost::createLayer):
        Separate creating a new layer from retrieving it by ID.
        Ensure that a layer doesn't already exist when creating it.
        Support creating CATransformLayers.

        * WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
        Disable accelerated animations, as we don't support proxying animations yet.
        This makes GraphicsLayer fall back to software animations, which already work wonderfully remotely.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::PlatformCALayerRemote):
        Inform the RemoteLayerTreeContext of the creation of every PlatformCALayerRemote.

        (PlatformCALayerRemote::removeFromSuperlayer):
        (PlatformCALayerRemote::replaceSublayer):
        (PlatformCALayerRemote::adoptSublayers):
        Assert when we hit a few critical unimplemented methods that would
        leave the layer tree in a broken state.

        (PlatformCALayerRemote::isOpaque):
        (PlatformCALayerRemote::setOpaque):
        (PlatformCALayerRemote::transform):
        (PlatformCALayerRemote::setTransform):
        (PlatformCALayerRemote::sublayerTransform):
        (PlatformCALayerRemote::setSublayerTransform):
        (PlatformCALayerRemote::setHidden):
        (PlatformCALayerRemote::setGeometryFlipped):
        (PlatformCALayerRemote::isDoubleSided):
        (PlatformCALayerRemote::setDoubleSided):
        (PlatformCALayerRemote::masksToBounds):
        (PlatformCALayerRemote::setMasksToBounds):
        (PlatformCALayerRemote::setBorderWidth):
        (PlatformCALayerRemote::setBorderColor):
        (PlatformCALayerRemote::opacity):
        (PlatformCALayerRemote::setOpacity):
        (PlatformCALayerRemote::setName):
        Proxy all of these properties via RemoteLayerTreeTransaction.

        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
        Add storage for the list of newly created layers.
        Use LayerID for the list of destroyed layers.

        * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::layerWasCreated):
        Store the ID and type of the newly created layer to be pushed to the UI process later.

        (WebKit::RemoteLayerTreeContext::flushLayers):
        Push the created and destroyed layers to the transaction *after* flushing
        GraphicsLayers, so that any changes to e.g. structural layers will not be missed.

2013-10-16  Csaba Osztrogonác  <ossy@webkit.org>

        [WK2][Efl][CMake] Add support for ENABLE_NETWORK_PROCESS to the build system
        https://bugs.webkit.org/show_bug.cgi?id=110139

        Reviewed by Laszlo Gombos.

        Original patch by Balazs Kelemen <kbalazs@webkit.org>

        * CMakeLists.txt:
        * PlatformEfl.cmake:

2013-10-16  Robert Plociennik  <r.plociennik@samsung.com>

        [EFL] Minibrowser can't load child window's location
        https://bugs.webkit.org/show_bug.cgi?id=122485

        Reviewed by Gyuyoung Kim.

        EwkView::createNewPage(), which is only called during handling of
        Messages::WebPageProxy::CreateNewPage message from WebProcess, no longer passes
        the URL to window_create(). As a result, no Messages::WebPage::LoadURL message
        is sent back, that would load the same URL twice and effectively cancel any
        other scheduled navigation inside WebProcess.

        Additionally, since the url parameter in MiniBrowser's implementation of
        window_create() is only used internally and is prone to bugs as demonstrated
        in r139303 (d7f10c8), it has been removed in favour of explicit calls to
        ewk_view_url_set().

        * UIProcess/API/efl/EwkView.cpp:
        (EwkView::createNewPage): No longer passes the URL to window_create() impl.
        * UIProcess/API/efl/ewk_view.h: window_create() no longer has the url parameter.
        * UIProcess/API/efl/tests/test_ewk2_window_features.cpp: Test methods updated to
            comply with the API change.
        (EWK2WindowFeaturesTest::createDefaultWindow): Ditto.
        (EWK2WindowFeaturesTest::createWindow): Ditto.

2013-10-15  Jae Hyun Park  <jae.park@company100.net>

        Unreviewed. Build fix after r157476.

        * GNUmakefile.am:

2013-10-15  Sergio Correia  <sergio.correia@openbossa.org>

        [EFL][WK2] Make SeccompFilters build again after r156349 and r156353
        https://bugs.webkit.org/show_bug.cgi?id=122872

        Reviewed by Anders Carlsson.

        * Shared/linux/SeccompFilters/SeccompBroker.cpp:
        (WebKit::SeccompBrokerClient::dispatch): Fix usage of extinct 'create'
        methods of ArgumentEncoder/ArgumentDecoder.
        (WebKit::SeccompBroker::runLoop): Ditto.

2013-10-15  Jinwoo Song  <jinwoo7.song@samsung.com>

        Removed argument coders for FloatPoint3D in CoodinatedGraphicsArgumentCoders.
        https://bugs.webkit.org/show_bug.cgi?id=122875

        Reviewed by Gyuyoung Kim.

        Argument coders for FloatPoint3D is added in WebCoreArgumentCoders after r157478
        and it caused redefinition build error in EFL port.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h:

2013-10-15  Dean Jackson  <dino@apple.com>

        Add ENABLE_WEB_ANIMATIONS flag
        https://bugs.webkit.org/show_bug.cgi?id=122871

        Reviewed by Tim Horton.

        Eventually might be http://dev.w3.org/fxtf/web-animations/
        but this is just engine-internal work at the moment.

        * Configurations/FeatureDefines.xcconfig:

2013-10-15  Tim Horton  <timothy_horton@apple.com>

        Add a PlatformCALayer subclass that proxies its property changes across the process boundary
        https://bugs.webkit.org/show_bug.cgi?id=122773

        Reviewed by Anders Carlsson.

        PlatformCALayerRemote coordinates with RemoteLayerTreeDrawingArea and friends
        to enable cross-process proxying of the hierarchy of compositing layers.

        In the Web process, we have GraphicsLayerCARemote, which owns 1+ PlatformCALayerRemote(s).
        Unlike PlatformCALayer{Mac, Win}, which own PlatformLayers (CALayer/CACFLayer),
        PlatformCALayerRemote stores any changes to its properties in a struct, and keeps track of
        which properties have changed since the last commit. Commits are scheduled and performed by
        RemoteLayerTreeContext, on RemoteLayerTreeDrawingArea's behalf, and result in
        RemoteLayerTreeTransaction encoding said property changes and throwing them across
        to the UI process, where RemoteLayerTreeHost applies them to a tree of CALayers kept there.

        This code can be enabled by running with the WK_USE_REMOTE_LAYER_TREE_DRAWING_AREA
        environment variable set.

        * Shared/WebCoreArgumentCoders.cpp:
        (CoreIPC::decode):
        (CoreIPC::encode):
        * Shared/WebCoreArgumentCoders.h:
        Add argument coders for FloatPoint3D.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::notePropertiesChanged):
        (WebKit::RemoteLayerTreeTransaction::changedLayers):
        (WebKit::RemoteLayerTreeTransaction::destroyedLayers):
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        (WebKit::RemoteLayerTreeTransaction::decode):
        (WebKit::dumpChangedLayers):
        Add support for background color and anchor point in the layer transaction.
        Make layer position a 3D point because that's what it really is.

        (WebKit::RemoteLayerTreeTransaction::layerPropertiesChanged):
        The logic in layerPropertiesChanged is moved into PlatformCALayerRemote.

        * UIProcess/WebPageProxy.h:
        Include PlatformLayer.h; it seems annoying to successfully forward-declare
        PlatformLayer because of the difference in definition between Objective-C and C++.
        Drive-by un-indent some namespace contents and use OBJC_CLASS.

        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::sizeDidChange):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::didUpdateGeometry):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):
        Send geometry updates to the RemoteLayerTreeDrawingArea.

        * UIProcess/mac/RemoteLayerTreeHost.h:
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (nullActionsDictionary):
        (WebKit::RemoteLayerTreeHost::commit):
        Apply layer property changes to the named sublayer.

        (WebKit::RemoteLayerTreeHost::getOrCreateLayer):
        Create CALayers instead of GraphicsLayers.
        Ensure that they won't perform implicit animations.

        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
        This should take a PlatformLayer instead of a GraphicsLayer, since we don't have
        GraphicsLayers in the UIProcess.

        * WebKit2.xcodeproj/project.pbxproj:
        Add GraphicsLayerCARemote and PlatformCALayerRemote, remove RemoteGraphicsLayer.

        * WebProcess/WebPage/mac/RemoteGraphicsLayer.h: Removed.
        * WebProcess/WebPage/mac/RemoteGraphicsLayer.mm: Removed.

        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::RemoteLayerTreeContext):
        (WebKit::RemoteLayerTreeContext::setRootLayer):
        (WebKit::RemoteLayerTreeContext::layerWillBeDestroyed):
        (WebKit::RemoteLayerTreeContext::createGraphicsLayer):
        (WebKit::RemoteLayerTreeContext::flushLayers):
        Build our transaction while flushing; it has no reason to exist outside of that scope.

        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::graphicsLayerFactory):
        (WebKit::RemoteLayerTreeDrawingArea::setRootCompositingLayer):
        (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush):
        (WebKit::RemoteLayerTreeDrawingArea::updateGeometry):
        Fix a capitalization typo.
        Update the WebPage's (and thus WebCore's) size when updateGeometry() is called.

        * WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp: Added.
        (WebKit::GraphicsLayerCARemote::~GraphicsLayerCARemote):
        (WebKit::GraphicsLayerCARemote::filtersCanBeComposited):
        (WebKit::GraphicsLayerCARemote::createPlatformCALayer):
        Added. Delegate to PlatformCALayerRemote. Don't allow creation of a
        GraphicsLayerCARemote given a PlatformLayer, because with UI process compositing,
        there should be no PlatformLayer instances in the Web process.

        * WebProcess/WebPage/mac/GraphicsLayerCARemote.h: Added.
        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp: Added.
        (generateLayerID):
        Generate a layer ID for identification across processes.

        (PlatformCALayerRemote::~PlatformCALayerRemote):
        Inform the RemoteLayerTreeContext that we've been destroyed, so it can convey
        that information to the UI process and the corresponding CALayer can be destroyed.

        (PlatformCALayerRemote::recursiveBuildTransaction):
        Recursively accumulate changes in layer state on a RemoteLayerTreeTransaction.

        The rest of this file is mostly an empty implementation of PlatformCALayer.
        A few properties are implemented so far; see below.

        (PlatformCALayerRemote::setSublayers):
        (PlatformCALayerRemote::removeAllSublayers):
        (PlatformCALayerRemote::appendSublayer):
        (PlatformCALayerRemote::insertSublayer):
        Update our list of sublayers, and note that our children have changed.
        recursiveBuildTransaction() will walk our sublayers and record their IDs in the transaction.

        (PlatformCALayerRemote::bounds):
        (PlatformCALayerRemote::setBounds):
        (PlatformCALayerRemote::position):
        (PlatformCALayerRemote::setPosition):
        (PlatformCALayerRemote::anchorPoint):
        (PlatformCALayerRemote::setAnchorPoint):
        (PlatformCALayerRemote::backgroundColor):
        (PlatformCALayerRemote::setBackgroundColor):
        Trivial implementations of basic layer properties, storing the new state in
        our LayerProperties struct and noting that they changed in the current commit.
        Properties with getters will return the last value that was set on the LayerProperties,
        so we don't clear the whole struct at the end of the transaction, just the mask of changed properties.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.h: Added.

2013-10-15  Brady Eidson  <beidson@apple.com>

        Move WebProcess/IndexedDB to WebProcess/Databases/IndexedDB

        Rubberstamped by Alexey Proskuryakov.

        * CMakeLists.txt:
        * GNUmakefile.list.am:
        * WebKit2.xcodeproj/project.pbxproj:

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp: Renamed from Source/WebKit2/WebProcess/IndexedDB/WebIDBFactoryBackend.cpp.
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h: Renamed from Source/WebKit2/WebProcess/IndexedDB/WebIDBFactoryBackend.h.

2013-10-15  Brady Eidson  <beidson@apple.com>

        Add a skeleton Database process for future usage by Indexed Database.
        https://bugs.webkit.org/show_bug.cgi?id=122849

        Reviewed by Sam Weinig.

        This mostly our typical "Add a new process type" boilerplate.

        * Configurations/DatabaseProcess.xcconfig: Added.
        * Configurations/DatabaseService.Development.xcconfig: Added.
        * Configurations/DatabaseService.xcconfig: Added.
        * WebKit2.xcodeproj/project.pbxproj:
        * WebKit2Prefix.h:

        * DatabaseProcess/DatabaseProcess.cpp: Added.
        (WebKit::DatabaseProcess::shared):
        (WebKit::DatabaseProcess::DatabaseProcess):
        (WebKit::DatabaseProcess::~DatabaseProcess):
        (WebKit::DatabaseProcess::initializeConnection):
        (WebKit::DatabaseProcess::shouldTerminate):
        (WebKit::DatabaseProcess::didReceiveMessage):
        (WebKit::DatabaseProcess::didClose):
        (WebKit::DatabaseProcess::didReceiveInvalidMessage):
        (WebKit::DatabaseProcess::initializeProcess):
        (WebKit::DatabaseProcess::initializeProcessName):
        (WebKit::DatabaseProcess::initializeSandbox):
        * DatabaseProcess/DatabaseProcess.h: Added.

        * DatabaseProcess/EntryPoint/mac/LegacyProcess/DatabaseProcessMain.mm: Added.
        (DatabaseProcessMain):
        * DatabaseProcess/EntryPoint/mac/LegacyProcess/Info.plist: Added.
        * DatabaseProcess/EntryPoint/mac/XPCService/DatabaseService.Development/Info.plist: Added.
        * DatabaseProcess/EntryPoint/mac/XPCService/DatabaseService/Info.plist: Added.
        * DatabaseProcess/EntryPoint/mac/XPCService/DatabaseServiceEntryPoint.mm: Added.
        (DatabaseServiceInitializer):

        * DatabaseProcess/mac/DatabaseProcessMac.mm: Added.
        (WebKit::DatabaseProcess::initializeProcess):
        (WebKit::DatabaseProcess::initializeProcessName):
        (WebKit::DatabaseProcess::initializeSandbox):
        * UIProcess/Databases/DatabaseProcessProxy.cpp: Added.
        (WebKit::DatabaseProcessProxy::create):
        (WebKit::DatabaseProcessProxy::DatabaseProcessProxy):
        (WebKit::DatabaseProcessProxy::~DatabaseProcessProxy):
        (WebKit::DatabaseProcessProxy::getLaunchOptions):
        (WebKit::DatabaseProcessProxy::connectionWillOpen):
        (WebKit::DatabaseProcessProxy::connectionWillClose):
        (WebKit::DatabaseProcessProxy::didReceiveMessage):
        (WebKit::DatabaseProcessProxy::didClose):
        (WebKit::DatabaseProcessProxy::didReceiveInvalidMessage):
        (WebKit::DatabaseProcessProxy::didFinishLaunching):
        * UIProcess/Databases/DatabaseProcessProxy.h: Added.
        * UIProcess/Databases/mac/DatabaseProcessProxyMac.mm: Added.
        (WebKit::shouldUseXPC):
        (WebKit::DatabaseProcessProxy::platformGetLaunchOptions):

        * UIProcess/Launcher/ProcessLauncher.cpp:
        (WebKit::ProcessLauncher::processTypeAsString):
        (WebKit::ProcessLauncher::getProcessTypeFromString):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):
        (WebKit::createProcess):

2013-10-14  Csaba Osztrogonác  <ossy@webkit.org>

        [WK2][Efl][Soup] Make NetworkProcessMainUnix handle proxy settings.
        https://bugs.webkit.org/show_bug.cgi?id=118388

        Reviewed by Carlos Garcia Campos.

        Original patch by Kwang Yul Seo <skyul@company100.net> .

        Proxy configuration should honor the no_proxy environment variable
        same to WebProcess. It is necessary not to change the current behaviour.
        See https://bugs.webkit.org/show_bug.cgi?id=91747 for details.

        The following things were fixed by Csaba Osztrogonác:
        - moved session variable before #if not to have conflict with https://bugs.webkit.org/show_bug.cgi?id=118343
        - added GRefPtr.h include
        - fixed ifdef guards

        * NetworkProcess/unix/NetworkProcessMainUnix.cpp:
        (WebKit::NetworkProcessMain):
        Copied from WebProcessMainEfl.cpp.

2013-10-13  Darin Adler  <darin@apple.com>

        Deprecate or remove deleteAllValues functions; there are only a few call sites left
        https://bugs.webkit.org/show_bug.cgi?id=122738

        Reviewed by Anders Carlsson.

        * Shared/Plugins/NPRemoteObjectMap.cpp:
        (WebKit::NPRemoteObjectMap::pluginDestroyed): Renamed deleteAllValues to
        deprecatedDeleteAllValues.

== Rolled over to ChangeLog-2013-10-13 ==
