2014-02-20  Beth Dakin  <bdakin@apple.com>

        WKPage's setBackgroundExtendsBeyondPage API should be exposed through WKView and 
        WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=129120

        Reviewed by Anders Carlsson.

        While we’re in this code, fix up the pageExtendedBackgroundColor to match.
        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _pageExtendedBackgroundColor]):
        (-[WKWebView _setBackgroundExtendsBeyondPage:]):
        (-[WKWebView _backgroundExtendsBeyondPage]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/ios/WKViewIOS.mm:
        (-[WKView _pageExtendedBackgroundColor]):
        (-[WKView _setBackgroundExtendsBeyondPage:]):
        (-[WKView _backgroundExtendsBeyondPage]):

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

        Add an unresolved WebGLPolicy and an API to resolve it
        https://bugs.webkit.org/show_bug.cgi?id=129109

        Reviewed by Anders Carlsson.

        Add a third WebGLLoadPolicy which is "pending" allowing the page
        to go ahead with creating the WebGLRenderingContext and resolve the policy
        at a later time. Add a new API resolveWebGLLoadPolicy to do the resolution.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::webGLLoadPolicy): New return value.
        (API::LoaderClient::resolveWebGLLoadPolicy): New method definition.
        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toWebGLLoadPolicy): Change names of return types.
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient): New stubs.
        * UIProcess/API/C/WKPageLoaderClient.h: New policy type kWKWebGLLoadPolicyPending.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resolveWebGLPolicyForURL): New method.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in: New message.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::webGLPolicyForURL):
        (WebKit::WebFrameLoaderClient::resolveWebGLPolicyForURL):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::webGLPolicyForURL):
        (WebKit::WebPage::resolveWebGLPolicyForURL):
        * WebProcess/WebPage/WebPage.h:

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

        Make it possible to reply asynchronously to JavaScript panels and alerts
        https://bugs.webkit.org/show_bug.cgi?id=129116

        Reviewed by Dan Bernstein.

        * Scripts/webkit2/LegacyMessageReceiver-expected.cpp:
        (Messages::WebPage::GetPluginProcessConnection::DelayedReply::send):
        (Messages::WebPage::TestMultipleAttributes::DelayedReply::send):
        * Scripts/webkit2/MessageReceiver-expected.cpp:
        (Messages::WebPage::GetPluginProcessConnection::DelayedReply::send):
        (Messages::WebPage::TestMultipleAttributes::DelayedReply::send):
        * Scripts/webkit2/messages.py:
        (generate_message_handler):
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::runJavaScriptAlert):
        (API::UIClient::runJavaScriptConfirm):
        (API::UIClient::runJavaScriptPrompt):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runJavaScriptAlert):
        (WebKit::WebPageProxy::runJavaScriptConfirm):
        (WebKit::WebPageProxy::runJavaScriptPrompt):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

2014-02-20  Enrique Ocaña González  <eocanha@igalia.com>

        WebKitGTK+ should stop using COMPILE_ASSERT_MATCHING_ENUM macros
        https://bugs.webkit.org/show_bug.cgi?id=127800

        Reviewed by Martin Robinson.

        * UIProcess/API/gtk/WebKitAuthenticationRequest.cpp: Defined and applied type conversions.
        (webkit_authentication_request_get_scheme):
        * UIProcess/API/gtk/WebKitCookieManager.cpp: Defined and applied type conversions.
        (toWebKitCookieAcceptPolicy):
        (toHTTPCookieAcceptPolicy):
        (webkit_cookie_manager_set_persistent_storage):
        (webkit_cookie_manager_set_accept_policy):
        (webkitCookieManagerGetAcceptPolicyCallback):
        * UIProcess/API/gtk/WebKitCredential.cpp: Defined and applied type conversions.
        (toWebKitCredentialPersistence):
        (toWebCoreCredentialPersistence):
        (webkit_credential_new):
        (webkit_credential_get_persistence):
        * UIProcess/API/gtk/WebKitDownload.cpp: Defined and applied type conversions.
        (webkitDownloadFailed):
        * UIProcess/API/gtk/WebKitError.cpp: Defined and applied type conversions.
        * UIProcess/API/gtk/WebKitFindController.cpp: Defined and applied type conversions.
        (toWebKitFindOptions):
        (webKitFindControllerPerform):
        (webkit_find_controller_search_next):
        (webkit_find_controller_search_previous):
        * UIProcess/API/gtk/WebKitFindController.h: Added new private fields to the enum, needed to match conversions.
        * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp: Defined and applied type conversions.
        (didReceiveWebViewMessageFromInjectedBundle):
        * UIProcess/API/gtk/WebKitLoaderClient.cpp: Defined and applied type conversions.
        (didFailProvisionalLoadWithErrorForFrame):
        (didFailLoadWithErrorForFrame):
        * UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp: Defined and applied type conversions.
        * UIProcess/API/gtk/WebKitPolicyClient.cpp: Defined and applied type conversions.
        (toWebKitNavigationType):
        (decidePolicyForNavigationAction):
        (decidePolicyForNewWindowAction):
        * UIProcess/API/gtk/WebKitPrintOperation.cpp: Defined and applied type conversions.
        (drawPagesForPrintingCompleted):
        * UIProcess/API/gtk/WebKitPrivate.cpp: Defined and applied type conversions.
        (toWebKitError):
        (toWebCoreError):
        * UIProcess/API/gtk/WebKitPrivate.h: Defined and applied type conversions.
        * UIProcess/API/gtk/WebKitURISchemeRequest.cpp: Defined and applied type conversions.
        (webkit_uri_scheme_request_finish_error):
        * UIProcess/API/gtk/WebKitWebContext.cpp: Defined and applied type conversions.
        (toWebKitProcessModel):
        (webkit_web_context_set_process_model):
        (webkit_web_context_get_process_model):
        * UIProcess/API/gtk/WebKitWebView.cpp: Defined and applied type conversions.
        (toSnapshotRegion):
        (webkit_web_view_get_snapshot):
        * UIProcess/API/gtk/WebKitWebViewGroup.cpp: Defined and applied type conversions.
        (toWebCoreUserContentInjectedFrames):
        (webkit_web_view_group_add_user_style_sheet):

2014-02-20  Csaba Osztrogonác  <ossy@webkit.org>

        Get rid of redundant Platform.h includes
        https://bugs.webkit.org/show_bug.cgi?id=128817

        Reviewed by Brent Fulgham.

        * config.h:

2014-02-19  Alexey Proskuryakov  <ap@apple.com>

        Build fix.

        * UIProcess/API/C/WKPage.cpp: (WKPageGetBytecodeProfile): Updated a recently added
        instance of ScriptCallback.

2014-02-18  Alexey Proskuryakov  <ap@apple.com>

        [WK2] IPC callback classes should not be tightly coupled to C API
        https://bugs.webkit.org/show_bug.cgi?id=129030

        Reviewed by Anders Carlsson.

        Changed CallbackBase subclasses to take an std::function (with context captured inside).
        Instead of C API objects, these callback functions take implementation ones.
        There are VoidAPICallback and GenericAPICallback helpers for the common case of C API.

        * Shared/SecurityOriginData.h:
        * UIProcess/API/C/WKApplicationCacheManager.cpp:
        (WKApplicationCacheManagerGetApplicationCacheOrigins):
        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetStatistics):
        (WKContextGetStatisticsWithOptions):
        * UIProcess/API/C/WKCookieManager.cpp:
        (WKCookieManagerGetHostnamesWithCookies):
        (WKCookieManagerGetHTTPCookieAcceptPolicy):
        * UIProcess/API/C/WKDatabaseManager.cpp:
        (WKDatabaseManagerGetDatabasesByOrigin):
        (WKDatabaseManagerGetDatabaseOrigins):
        * UIProcess/API/C/WKFrame.cpp:
        (WKFrameGetMainResourceData):
        (WKFrameGetResourceData):
        (WKFrameGetWebArchive):
        * UIProcess/API/C/WKKeyValueStorageManager.cpp:
        (WKKeyValueStorageManagerGetKeyValueStorageOrigins):
        (WKKeyValueStorageManagerGetStorageDetailsByOrigin):
        * UIProcess/API/C/WKMediaCacheManager.cpp:
        (WKMediaCacheManagerGetHostnamesWithMediaCache):
        * UIProcess/API/C/WKOriginDataManager.cpp:
        (WKOriginDataManagerGetOrigins):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageRunJavaScriptInMainFrame):
        (WKPageRenderTreeExternalRepresentation):
        (WKPageGetSourceForFrame):
        (WKPageGetContentsAsString):
        (WKPageGetSelectionAsWebArchiveData):
        (WKPageGetContentsAsMHTMLData):
        (WKPageForceRepaint):
        (WKPageValidateCommand):
        (WKPageComputePagesForPrinting):
        (WKPageDrawPagesToPDF):
        * UIProcess/API/C/WKPluginSiteDataManager.cpp:
        (WKPluginSiteDataManagerGetSitesWithData):
        (WKPluginSiteDataManagerClearSiteData):
        (WKPluginSiteDataManagerClearAllSiteData):
        * UIProcess/API/C/WKResourceCacheManager.cpp:
        (WKResourceCacheManagerGetCacheOrigins):
        * UIProcess/API/gtk/WebKitCookieManager.cpp:
        (webkit_cookie_manager_get_accept_policy):
        (webkit_cookie_manager_get_domains_with_cookies):
        * UIProcess/API/gtk/WebKitPrintOperation.cpp:
        (drawPagesForPrintingCompleted):
        (webkitPrintOperationPrintPagesForFrame):
        * UIProcess/API/gtk/WebKitWebResource.cpp:
        (resourceDataCallback):
        (webkit_web_resource_get_data):
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_can_execute_editing_command):
        (webkitWebViewRunJavaScriptCallback):
        (webkit_web_view_run_javascript):
        (resourcesStreamReadCallback):
        (getContentsAsMHTMLDataCallback):
        (webkit_web_view_save):
        (webkit_web_view_save_to_file):
        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKInteractionView _define:]):
        (selectionChangedWithGesture):
        (selectionChangedWithTouch):
        (-[WKInteractionView changeSelectionWithGestureAt:withGesture:withState:]):
        (-[WKInteractionView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:]):
        (-[WKInteractionView changeSelectionWithTouchesFrom:to:withGesture:withState:]):
        (-[WKInteractionView requestAutocorrectionRectsForString:withCompletionHandler:]):
        (-[WKInteractionView applyAutocorrection:toString:withCompletionHandler:]):
        (-[WKInteractionView requestAutocorrectionContextWithCompletionHandler:]):
        * UIProcess/API/mac/WKPrintingView.mm:
        (pageDidDrawToImage):
        (-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
        (pageDidComputePageRects):
        (-[WKPrintingView _askPageToComputePageRects]):
        (-[WKPrintingView _drawPreview:]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView validateUserInterfaceItem:]):
        (-[WKView startSpeaking:]):
        * UIProcess/AutoCorrectionCallback.h:
        (WebKit::AutocorrectionDataCallback::create):
        (WebKit::AutocorrectionDataCallback::performCallbackWithReturnValue):
        (WebKit::AutocorrectionDataCallback::invalidate):
        (WebKit::AutocorrectionDataCallback::AutocorrectionDataCallback):
        (WebKit::AutocorrectionContextCallback::create):
        (WebKit::AutocorrectionContextCallback::performCallbackWithReturnValue):
        (WebKit::AutocorrectionContextCallback::invalidate):
        (WebKit::AutocorrectionContextCallback::AutocorrectionContextCallback):
        * UIProcess/GenericCallback.h:
        (WebKit::CallbackBase::CallbackBase):
        (WebKit::CallbackBase::generateCallbackID):
        (WebKit::VoidCallback::create):
        (WebKit::VoidCallback::performCallback):
        (WebKit::VoidCallback::invalidate):
        (WebKit::VoidCallback::VoidCallback):
        (WebKit::VoidAPICallback::create):
        (WebKit::GenericCallback::create):
        (WebKit::GenericCallback::performCallbackWithReturnValue):
        (WebKit::GenericCallback::invalidate):
        (WebKit::GenericCallback::GenericCallback):
        (WebKit::GenericAPICallback::create):
        (WebKit::ComputedPagesCallback::create):
        (WebKit::ComputedPagesCallback::performCallbackWithReturnValue):
        (WebKit::ComputedPagesCallback::invalidate):
        (WebKit::ComputedPagesCallback::ComputedPagesCallback):
        (WebKit::ImageCallback::create):
        (WebKit::ImageCallback::performCallbackWithReturnValue):
        (WebKit::ImageCallback::invalidate):
        (WebKit::ImageCallback::ImageCallback):
        * UIProcess/Plugins/WebPluginSiteDataManager.h:
        * UIProcess/StatisticsRequest.h:
        * UIProcess/WebApplicationCacheManagerProxy.h:
        * UIProcess/WebContext.h:
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebDatabaseManagerProxy.h:
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebKeyValueStorageManager.h:
        * UIProcess/WebMediaCacheManagerProxy.h:
        * UIProcess/WebOriginDataManagerProxy.h:
        * UIProcess/WebPageProxy.h:
        (WebKit::ValidateCommandCallback::create):
        (WebKit::ValidateCommandCallback::performCallbackWithReturnValue):
        (WebKit::ValidateCommandCallback::invalidate):
        (WebKit::ValidateCommandCallback::ValidateCommandCallback):
        (WebKit::GestureCallback::create):
        (WebKit::GestureCallback::performCallbackWithReturnValue):
        (WebKit::GestureCallback::invalidate):
        (WebKit::GestureCallback::GestureCallback):
        (WebKit::TouchesCallback::create):
        (WebKit::TouchesCallback::performCallbackWithReturnValue):
        (WebKit::TouchesCallback::invalidate):
        (WebKit::TouchesCallback::TouchesCallback):
        * UIProcess/WebResourceCacheManagerProxy.h:
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):

2014-02-19  Simon Fraser  <simon.fraser@apple.com>

        Avoid sending redundant layer properties to the UI process, and avoid allocation of RemoteLayerBackingStore unless we need it
        https://bugs.webkit.org/show_bug.cgi?id=129076

        Reviewed by Tim Horton.
        
        Normally we rely on GraphicsLayerCA to avoid redundant property
        setting on PlatformCALayers, but for contents layers GraphicsLayerCA
        sets properties on every update.
        
        Make PlatformCALayerRemote more efficient in this case by not
        setting dirty flags for unchanged property sets.
        
        Also avoid creation of RemoteLayerBackingStore unless we
        actually need one.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::ensureBackingStore):
        (PlatformCALayerRemote::updateBackingStore):
        (PlatformCALayerRemote::setBounds):
        (PlatformCALayerRemote::setPosition):
        (PlatformCALayerRemote::setAnchorPoint):
        (PlatformCALayerRemote::setMasksToBounds):
        (PlatformCALayerRemote::setAcceleratesDrawing):
        (PlatformCALayerRemote::setBorderWidth):
        (PlatformCALayerRemote::setBorderColor):
        (PlatformCALayerRemote::setContentsScale):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:

2014-02-19  Simon Fraser  <simon.fraser@apple.com>

        [UI-Side Compositing] 6% of main thread time spent copying LayerProperties when adding to hash table
        https://bugs.webkit.org/show_bug.cgi?id=129074

        Reviewed by Tim Horton.
        
        Make RemoteLayerTreeTransaction::LayerProperties smaller and not copied by
        value everywhere.
        
        Put some big members into unique_ptrs, and store unique_ptrs
        in the hash of layerID to properties.
        
        Clean up member variable order of LayerProperties to improve packing.
        
        Also have applyPropertiesToLayer() take references to things to avoid
        copies.
        
        * Shared/mac/RemoteLayerTreePropertyApplier.h:
        * Shared/mac/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
        * Shared/mac/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::changedLayers):
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        (WebKit::RemoteLayerTreeTransaction::encode):
        (WebKit::RemoteLayerTreeTransaction::decode):
        (WebKit::RemoteLayerTreeTransaction::layerPropertiesChanged):
        (WebKit::dumpChangedLayers):
        * UIProcess/mac/RemoteLayerTreeHost.h:
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::updateLayerTree):
        (WebKit::RemoteLayerTreeHost::createLayer):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::create):
        (PlatformCALayerRemote::PlatformCALayerRemote):
        (PlatformCALayerRemote::clone):
        (PlatformCALayerRemote::recursiveBuildTransaction):
        (PlatformCALayerRemote::ensureBackingStore):
        (PlatformCALayerRemote::setNeedsDisplay):
        (PlatformCALayerRemote::transform):
        (PlatformCALayerRemote::setTransform):
        (PlatformCALayerRemote::sublayerTransform):
        (PlatformCALayerRemote::setSublayerTransform):
        (PlatformCALayerRemote::setFilters):
        (PlatformCALayerRemote::enumerateRectsBeingDrawn):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:

2014-02-19  Benjamin Poulain  <bpoulain@apple.com>

        Remove -[WKContentView setViewportSize:]
        https://bugs.webkit.org/show_bug.cgi?id=129071

        Reviewed by Enrica Casucci.

        I forgot to clean that up.

        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentView.mm:

2014-02-19  Oliver Hunt  <oliver@apple.com>

        Add WK2 SPI to get bytecode profile from web process
        https://bugs.webkit.org/show_bug.cgi?id=129069

        Reviewed by Anders Carlsson.

        Simple patch to allow asynchronous fetching of the
        bytecode profiler output from the WebProcess.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageGetBytecodeProfile):
        * UIProcess/API/C/WKPagePrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::getBytecodeProfile):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::getBytecodeProfile):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2014-02-19  Beth Dakin  <bdakin@apple.com>

        Build fix.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView pageExtendedBackgroundColor]):

2014-02-19  Beth Dakin  <bdakin@apple.com>

        UIProcess needs to know the color of the page's extended background
        https://bugs.webkit.org/show_bug.cgi?id=129004

        Reviewed by Simon Fraser and Brent Fulgham.

        New method on WKWebView and WKView will return the page’s extended background 
        color.
        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView pageExtendedBackgroundColor]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/ios/WKViewIOS.mm:
        (-[WKView pageExtendedBackgroundColor]):

        The color is stored in the WebPageProxy, and the ChromeClient sends a message to 
        the WebPageProxy with the new color whenever it changes.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::pageExtendedBackgroundColorDidChange):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::pageExtendedBackgroundColor):
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::pageExtendedBackgroundColorDidChange):
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2014-02-19  Tim Horton  <timothy_horton@apple.com>

        [wk2] REGRESSION (r162710): Open tab urls not restored after switching to new Safari build
        https://bugs.webkit.org/show_bug.cgi?id=128536
        <rdar://problem/15911839>

        Reviewed by Dan Bernstein.

        * UIProcess/cf/WebBackForwardListCF.cpp:
        (WebKit::extractBackForwardListEntriesFromArray):
        Don't fail to extract an entry if it doesn't have a snapshot UUID.

        * UIProcess/cf/WebPageProxyCF.cpp:
        It turns out that this was the wrong version to bump, and we don't support
        reading different versions of the session state data.

2014-02-19  Brady Eidson  <beidson@apple.com>

        Add FeatureDefines for image controls
        https://bugs.webkit.org/show_bug.cgi?id=129022

        Reviewed by Jer Noble.

        * Configurations/FeatureDefines.xcconfig:

2014-02-19  Brady Eidson  <beidson@apple.com>

        Add settings/preferences for enabling image controls
        https://bugs.webkit.org/show_bug.cgi?id=129027

        Reviewed by Jer Noble.

        * Shared/WebPreferencesStore.h:

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2014-02-19  Dan Bernstein  <mitz@apple.com>

        Simplify PLATFORM(MAC) && !PLATFORM(IOS) and similar expressions
        https://bugs.webkit.org/show_bug.cgi?id=129029

        Reviewed by Mark Rowe.

        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::netscapePluginModule):
        * Shared/API/c/WKDeprecatedFunctions.cpp:
        * Shared/WebPreferencesStore.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        * UIProcess/PageClient.h:
        * UIProcess/Scrolling/RemoteScrollingTree.cpp:
        * UIProcess/Scrolling/RemoteScrollingTree.h:
        * UIProcess/WebContext.h:
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didChangeBackForwardList):
        (WebKit::WebPageProxy::pageDidScroll):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/WebContextMac.mm:
        (WebKit::WebContext::platformInitializeWebProcess):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageSetTopOverhangImage):
        (WKBundlePageSetBottomOverhangImage):
        * WebProcess/WebPage/PageBanner.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setDeviceScaleFactor):
        (WebKit::WebPage::mainFrameDidLayout):
        (WebKit::WebPage::beginPrinting):
        (WebKit::WebPage::drawRectToImage):
        (WebKit::WebPage::drawPagesToPDF):
        * WebProcess/WebPage/WebPage.messages.in:
        * config.h:

2014-02-18  Dan Bernstein  <mitz@apple.com>

        PLATFORM(MAC) is true when building for iOS
        https://bugs.webkit.org/show_bug.cgi?id=129025

        Reviewed by Mark Rowe.

        * Shared/Network/NetworkProcessCreationParameters.cpp: Changed PLATFORM(MAC) to
        PLATFORM(COCOA) now that the former does not include iOS.
        (WebKit::NetworkProcessCreationParameters::encode):
        (WebKit::NetworkProcessCreationParameters::decode):
        * Shared/Network/NetworkProcessCreationParameters.h: Ditto.
        * WebKit2Prefix.h: Ditto.

2014-02-18  Simon Fraser  <simon.fraser@apple.com>

        Clean up WKContentView initialization
        https://bugs.webkit.org/show_bug.cgi?id=129016

        Reviewed by Benjamin Poulain.
        
        WKContentView had too many initializers and duplicated init
        code. Clean up by removing all but one initializer and and
        doing all the setup in it.

        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentView.mm:
        * UIProcess/API/ios/WKViewIOS.mm:
        (-[WKView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):

2014-02-18  Tim Horton  <timothy_horton@apple.com>

        Another 32-bit build fix.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _acceleratedCompositingModeRootLayer]):

2014-02-18  Tim Horton  <timothy_horton@apple.com>

        More more WK_API_ENABLED after r164337.

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

2014-02-18  Tim Horton  <timothy_horton@apple.com>

        Can't use #if inside a macro, so we'll duplicate the macro for now.

        Build fix for all of Mac.

        * UIProcess/API/mac/WKView.mm:

2014-02-18  Tim Horton  <timothy_horton@apple.com>

        Don't build WKThumbnailView on iOS; it won't build.

        * Configurations/WebKit2.xcconfig:

2014-02-18  Tim Horton  <timothy_horton@apple.com>

        More WK_API_ENABLED after r164337.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView dealloc]):
        (-[WKView scrollWheel:]):
        (-[WKView mouseMoved:]):
        (-[WKView mouseDown:]):
        (-[WKView mouseUp:]):
        (-[WKView mouseDragged:]):
        (-[WKView _setAcceleratedCompositingModeRootLayer:]):
        * UIProcess/API/mac/WKViewInternal.h:

2014-02-18  Simon Fraser  <simon.fraser@apple.com>

        Remove UIWKRemoteView
        https://bugs.webkit.org/show_bug.cgi?id=129015

        Reviewed by Dan Bernstein.
        
        Remove UIWKRemoteView which is unused.

        * Configurations/WebKit2.xcconfig:
        * UIProcess/API/ios/UIWKRemoteView.h: Removed.
        * UIProcess/API/ios/UIWKRemoteView.mm: Removed.
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-18  Tim Horton  <timothy_horton@apple.com>

        32-bit build fix after r164337

        * UIProcess/API/Cocoa/WKThumbnailView.mm:
        Address a review comment. We'll get this for free.

        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::activeView):
        Build fix.

2014-02-18  Tim Horton  <timothy_horton@apple.com>

        Add a way to efficiently thumbnail WKViews
        https://bugs.webkit.org/show_bug.cgi?id=128831
        <rdar://problem/15669655>

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKThumbnailView.h: Added.
        * UIProcess/API/Cocoa/WKThumbnailView.mm: Added.
        (-[WKThumbnailView initWithFrame:fromWKView:]):
        (-[WKThumbnailView _viewWasUnparented]):
        (-[WKThumbnailView _viewWasParented]):
        (-[WKThumbnailView viewDidMoveToWindow]):
        (-[WKThumbnailView setScale:]):
        (-[WKThumbnailView setThumbnailLayer:]):
        (-[WKThumbnailView thumbnailLayer]):
        * UIProcess/API/Cocoa/WKThumbnailViewInternal.h: Added.
        Add WKThumbnailView.
        Clients of this private API will call initWithFrame:fromWKView:,
        giving the WKView they wish to borrow contents from.
        They can also call setScale: to set the scale that will be used to render
        the content in an implementation-defined set of cases (currently, we will
        use the low resolution scale for WKViews which were not parented when the
        WKThumbnailView was created; parented WKViews will use the existing scale).

        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::isViewWindowActive):
        (WebKit::PageClientImpl::isViewVisible):
        (WebKit::PageClientImpl::isViewVisibleOrOccluded):
        (WebKit::PageClientImpl::isViewInWindow):
        (WebKit::PageClientImpl::viewLayerHostingMode):
        If the WKView has an actively-parented WKThumbnailView attached to it,
        we should determine view visibility/etc. using that view instead of the WKView.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView dealloc]):
        WKThumbnailView holds on to the WKView, and clears WKView's backpointer
        when it leaves the window, so we should never see WKView get deallocated
        with a live thumbnail view.

        (-[WKView scrollWheel:]):
        (-[WKView mouseMoved:]):
        (-[WKView mouseDown:]):
        (-[WKView mouseUp:]):
        (-[WKView mouseDragged:]):
        Don't handle events while thumbnailed.

        (-[WKView _setAcceleratedCompositingModeRootLayer:]):
        Forward root layer changes to the installed thumbnail view.

        (-[WKView _acceleratedCompositingModeRootLayer]):
        _acceleratedCompositingModeRootLayer should return the same layer
        that was set via _setAcceleratedCompositingModeRootLayer:, not its parent.

        (-[WKView _setThumbnailView:]):
        (-[WKView _thumbnailView]):
        Install/uninstall a WKThumbnailView. Hand it our root layer if installing,
        or recover it from the departing thumbnail view if uninstalling.

        * UIProcess/API/mac/WKViewInternal.h:
        Add in a missing RetainPtr.h include that I missed earlier and causes trouble.
        Add WKView _thumbnailView and _setThumbnailView:.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setThumbnailScale):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::mayStartMediaWhenInWindow):

        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::beginSwipeGesture):
        (WebKit::ViewGestureController::handleSwipeGesture):
        Swipe was accidentally depending on a mistake in WKView's
        _acceleratedCompositingModeRootLayer where it was returning the wrong layer.
        The actual root layer doesn't have a size, so we should use the drawing
        area's size instead.

        * WebKit2.xcodeproj/project.pbxproj:
        Add some new files.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didCommitLoad):
        If we reset the page scale because a load was committed, we should
        reset the stored thumbnail-scale-less page scale so that we don't restore
        the wrong scale when leaving thumbnailing.

        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::setThumbnailScale):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        Apply the thumbnail scale to the page. If we're currently not in
        thumbnail scaling mode, save the current page scale and scroll position
        so we can restore them once we leave thumbnail mode again.
        Transform the DrawingArea so that the page appears at the same
        position and size, but scaled.

        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::setTransform):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::setTransform):
        Add a DrawingArea method to apply an arbitrary transform to the drawing area.

        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):
        (WebKit::TiledCoreAnimationDrawingArea::setPageOverlayNeedsDisplay):
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::suspendPainting):
        (WebKit::TiledCoreAnimationDrawingArea::resumePainting):
        (WebKit::TiledCoreAnimationDrawingArea::updateGeometry):
        (WebKit::TiledCoreAnimationDrawingArea::updateLayerHostingContext):
        (WebKit::TiledCoreAnimationDrawingArea::createPageOverlayLayer):
        (WebKit::TiledCoreAnimationDrawingArea::didCommitChangesForLayer):
        (WebKit::TiledCoreAnimationDrawingArea::updateDebugInfoLayer):
        (WebKit::TiledCoreAnimationDrawingArea::adjustTransientZoom):
        Remove the word "compositing" in a bunch of places where it isn't needed.
        Rename m_rootLayer to m_hostingLayer, and repurpose m_rootLayer to store
        the root compositing layer actually passed in via setRootCompositingLayer.
        Rename m_pendingRootCompositingLayer to m_pendingRootLayer.

2014-02-18  Anders Carlsson  <andersca@apple.com>

        Add SPI for enabling/disabling private browsing
        https://bugs.webkit.org/show_bug.cgi?id=129012

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _privateBrowsingEnabled]):
        (-[WKWebView _setPrivateBrowsingEnabled:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2014-02-18  Anders Carlsson  <andersca@apple.com>

        Add more SPI methods to WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=129011

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _webProcessIdentifier]):
        (-[WKWebView _sessionState]):
        (releaseNSData):
        (-[WKWebView _restoreFromSessionState:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2014-02-18  Anders Carlsson  <andersca@apple.com>

        Add more new SPI methods
        https://bugs.webkit.org/show_bug.cgi?id=129009

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _certificateChain]):
        (-[WKWebView _committedURL]):
        (-[WKWebView _applicationNameForUserAgent]):
        (-[WKWebView _setApplicationNameForUserAgent:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2014-02-18  Anders Carlsson  <andersca@apple.com>

        Make reload SPI for now
        https://bugs.webkit.org/show_bug.cgi?id=129007

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _reload]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2014-02-18  Anders Carlsson  <andersca@apple.com>

        Add -[WKWebView reload]
        https://bugs.webkit.org/show_bug.cgi?id=129005

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView reload]):

2014-02-18  Anders Carlsson  <andersca@apple.com>

        Add SPI for allowing HTTPS certificates
        https://bugs.webkit.org/show_bug.cgi?id=129002

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKProcessClass.mm:
        (-[WKProcessClass _setAllowsSpecificHTTPSCertificate:forHost:]):
        * UIProcess/API/Cocoa/WKProcessClassInternal.h:
        * UIProcess/API/Cocoa/WKProcessClassPrivate.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKProcessClassInternal.h.
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-18  Anders Carlsson  <andersca@apple.com>

        Add SPI for getting the original URL from a WKNavigationAction
        https://bugs.webkit.org/show_bug.cgi?id=128997

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKNavigationActionInternal.h:
        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionInternal.h.
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::PolicyClient::decidePolicyForNavigationAction):
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-18  Anders Carlsson  <andersca@apple.com>

        Add more WKWebView SPI
        https://bugs.webkit.org/show_bug.cgi?id=128994

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKHistoryDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _unreachableURL]):
        (-[WKWebView _loadAlternateHTMLString:baseURL:forUnreachableURL:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2014-02-18  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * UIProcess/API/Cocoa/WKProcessClassConfiguration.mm:
        (-[WKProcessClassConfiguration description]):

2014-02-18  Sam Weinig  <sam@webkit.org>

        Temporarily remove support for setting the maximumDecodedImageSize. It is causing assertions.

        * Shared/WebPreferencesStore.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2014-02-18  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Implement -description in some API objects
        https://bugs.webkit.org/show_bug.cgi?id=128956

        Reviewed by Anders Carlsson.

        * Shared/API/Cocoa/WKRemoteObjectInterface.mm:
        Changed category name to have the framework’s prefix.
        (-[WKRemoteObjectInterface description]): Added.
        * UIProcess/API/Cocoa/WKFrameInfo.mm:
        (-[WKFrameInfo description]): Added.
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction description]): Added.
        * UIProcess/API/Cocoa/WKNavigationResponse.mm:
        (-[WKNavigationResponse description]): Added.
        * UIProcess/API/Cocoa/WKProcessClass.mm:
        (-[WKProcessClass description]): Added.
        * UIProcess/API/Cocoa/WKProcessClassConfiguration.mm:
        (-[WKProcessClassConfiguration description]): Added.
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration description]): Added.

2014-02-17  ChangSeok Oh  <changseok.oh@collabora.com>

        Unreviewed gtk build fix.

        * GNUmakefile.list.am: Remove WebHistoryClient.cpp/h after r164230.

2014-02-17  Ricky Mondello  <rmondello@apple.com>

        Expose a way to clear cookies modified after a given date
        https://bugs.webkit.org/show_bug.cgi?id=128845

        Reviewed by Alexey Proskuryakov.

        * UIProcess/API/C/WKCookieManager.cpp:
        (WKCookieManagerDeleteAllCookiesModifiedAfterDate): Added. Call out to the CookieManager.
        * UIProcess/API/C/WKCookieManager.h: Declare WKCookieManagerDeleteAllCookiesModifiedAfterDate.
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedAfterDate): Added. Dispatch message to the
            Network Process.
        * UIProcess/WebCookieManagerProxy.h: Declare deleteAllCookiesModifiedAfterDate.
        * WebProcess/Cookies/WebCookieManager.cpp:
        (WebKit::WebCookieManager::deleteAllCookiesModifiedAfterDate): Added. Call out to WebCore to finish the job.
        * WebProcess/Cookies/WebCookieManager.h: Declare deleteAllCookiesModifiedAfterDate.
        * WebProcess/Cookies/WebCookieManager.messages.in: Add new message.

2014-02-17  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK2] Move and make WKColorPickerResultListener to EFL specific interface
        https://bugs.webkit.org/show_bug.cgi?id=119120

        Reviewed by Gyuyoung Kim.

        WKColorPickerResultListener and related files are only used in EFL since added.
        Indeed, it does not work since refactored common logic for ColorPicker in WebPageProxy.

        This patch moved them to EFL specfic and refactor to work well.

        * CMakeLists.txt: Moved WebColorPickerResultListenerProxy.cpp to PlatformEfl.cmake.
        * GNUmakefile.list.am: Removed ColorPickerResultListener related files which are only for Efl from source list.
        * PlatformEfl.cmake: Added ColorPickerResultListenerProxy related files and newly added files into source list.
        * UIProcess/API/APIUIClient.h:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/C/efl/WKColorPickerResultListener.cpp: Renamed from Source/WebKit2/UIProcess/API/C/WKColorPickerResultListener.cpp.
        (WKColorPickerResultListenerGetTypeID):
        (WKColorPickerResultListenerSetColor):
        * UIProcess/API/C/efl/WKColorPickerResultListener.h: Renamed from Source/WebKit2/UIProcess/API/C/WKColorPickerResultListener.h.
        * UIProcess/API/C/efl/WKViewEfl.cpp: Introduced WKColorPickerClient and setter.
        (WKViewSetColorPickerClient):
        * UIProcess/API/C/efl/WKViewEfl.h:
        * UIProcess/API/efl/tests/test_ewk2_color_picker.cpp: Enabled test case for color picker.
        (TEST_F):
        * UIProcess/WebPageProxy.cpp: Removed unnecessary WebColorPickerResultListenerProxy dependency.
        * UIProcess/WebPageProxy.h: Ditto.
        * UIProcess/efl/PageUIClientEfl.cpp: Removed color picker callbacks of PageUIClient.
        (WebKit::PageUIClientEfl::PageUIClientEfl):
        * UIProcess/efl/PageUIClientEfl.h:
        * UIProcess/efl/ViewClientEfl.cpp: Registered callbacks of WKColorPickerClient.
        (WebKit::ViewClientEfl::showColorPicker):
        (WebKit::ViewClientEfl::endColorPicker):
        (WebKit::ViewClientEfl::ViewClientEfl):
        (WebKit::ViewClientEfl::~ViewClientEfl):
        * UIProcess/efl/ViewClientEfl.h:
        * UIProcess/efl/WebColorPickerClient.cpp: Copied from Source/WebKit2/UIProcess/efl/ViewClientEfl.h.
        (WebKit::WebColorPickerClient::showColorPicker):
        (WebKit::WebColorPickerClient::endPicker):
        * UIProcess/efl/WebColorPickerClient.h: Added.
        * UIProcess/efl/WebColorPickerEfl.cpp: Copied from Source/WebKit2/UIProcess/efl/ViewClientEfl.h.
        (WebKit::WebColorPickerEfl::WebColorPickerEfl):
        (WebKit::WebColorPickerEfl::endPicker):
        (WebKit::WebColorPickerEfl::showColorPicker):
        (WebKit::WebColorPickerEfl::setSelectedColor):
        (WebKit::WebColorPickerEfl::didChooseColor):
        * UIProcess/efl/WebColorPickerEfl.h: Copied from Source/WebKit2/UIProcess/efl/ViewClientEfl.h.
        (WebKit::WebColorPickerEfl::create):
        (WebKit::WebColorPickerEfl::~WebColorPickerEfl):
        * UIProcess/efl/WebColorPickerResultListenerProxy.cpp: Renamed from Source/WebKit2/UIProcess/WebColorPickerResultListenerProxy.cpp.
        (WebKit::WebColorPickerResultListenerProxy::WebColorPickerResultListenerProxy):
        (WebKit::WebColorPickerResultListenerProxy::~WebColorPickerResultListenerProxy):
        (WebKit::WebColorPickerResultListenerProxy::invalidate):
        (WebKit::WebColorPickerResultListenerProxy::setColor):
        * UIProcess/efl/WebColorPickerResultListenerProxy.h: Renamed from Source/WebKit2/UIProcess/WebColorPickerResultListenerProxy.h.
        (WebKit::WebColorPickerResultListenerProxy::create):
        * UIProcess/efl/WebViewEfl.cpp:
        (WebKit::WebViewEfl::initializeColorPickerClient):
        (WebKit::WebViewEfl::createColorPicker):
        * UIProcess/efl/WebViewEfl.h:
        (WebKit::WebViewEfl::colorPickerClient):
        * WebKit2.xcodeproj/project.pbxproj: Removed ColorPickerResultListener related files which are only for Efl from source list.

2014-02-17  Sam Weinig  <sam@webkit.org>

        [iOS, WebKit2] Add settings and correct default values for settings important on iOS
        https://bugs.webkit.org/show_bug.cgi?id=128947

        Reviewed by Simon Fraser.

        * Shared/WebPreferencesStore.cpp:
        * Shared/WebPreferencesStore.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2014-02-17  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CoordinatedGraphics][EFL] Remove view_source functions.
        https://bugs.webkit.org/show_bug.cgi?id=128945

        Reviewed by Anders Carlsson.

        EFL port has been broken since r164254 because of removing view source files in WK2.
        This patch is to follow to remove remained view source functions.

        * UIProcess/API/C/CoordinatedGraphics/WKView.cpp:
        * UIProcess/API/C/CoordinatedGraphics/WKView.h:
        * UIProcess/API/efl/ewk_view.cpp:
        * UIProcess/API/efl/ewk_view.h:
        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        * UIProcess/CoordinatedGraphics/WebView.h:

2014-02-17  Tim Horton  <timothy_horton@apple.com>

        [iOS][wk2] Custom layers are sometimes put on-screen without being parented
        https://bugs.webkit.org/show_bug.cgi?id=128935
        <rdar://problem/16022336>

        Reviewed by Sam Weinig.

        * Platform/mac/LayerHostingContext.mm:
        (WebKit::LayerHostingContext::createForExternalHostingProcess):
        Give an explicit and unlikely display ID, so that the layer will never
        be brought on-screen unless explicitly parented.

2014-02-17  Anders Carlsson  <andersca@apple.com>

        Add history delegate to WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=128930

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKHistoryDelegatePrivate.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h.
        * UIProcess/API/Cocoa/WKProcessClass.mm:
        (-[WKProcessClass initWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _historyDelegate]):
        (-[WKWebView _setHistoryDelegate:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/HistoryClient.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h.
        * UIProcess/Cocoa/HistoryClient.mm: Added.
        (WebKit::HistoryClient::HistoryClient):
        (WebKit::HistoryClient::~HistoryClient):
        (WebKit::HistoryClient::didNavigateWithNavigationData):
        (WebKit::HistoryClient::didPerformClientRedirect):
        (WebKit::HistoryClient::didPerformServerRedirect):
        (WebKit::HistoryClient::didUpdateHistoryTitle):
        (WebKit::HistoryClient::populateVisitedLinks):
        (WebKit::HistoryClient::shouldTrackVisitedLinks):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::navigationStates):
        (WebKit::NavigationState::NavigationState):
        (WebKit::NavigationState::~NavigationState):
        (WebKit::NavigationState::fromWebPage):
        (WebKit::NavigationState::historyDelegate):
        (WebKit::NavigationState::setHistoryDelegate):
        (WebKit::NavigationState::didNavigateWithNavigationData):
        (WebKit::NavigationState::didPerformClientRedirect):
        (WebKit::NavigationState::didPerformServerRedirect):
        (WebKit::NavigationState::didUpdateHistoryTitle):
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-17  Sam Weinig  <sam@webkit.org>

        [WebKit2] Merge WebProcessMac and WebProcessIOS into WebProcessCocoa
        https://bugs.webkit.org/show_bug.cgi?id=128939

        Reviewed by Dan Bernstein.

        * WebKit2.xcodeproj/project.pbxproj:
        Add/remove files/groups.

        * WebProcess/WebProcess.h:
        Change stopRunLoop() to be AppKit only.

        * WebProcess/cocoa: Added.
        * WebProcess/cocoa/WebProcessCocoa.mm: Copied from Source/WebKit2/WebProcess/mac/WebProcessMac.mm.
        (WebKit::WebProcess::platformInitializeWebProcess):
        (WebKit::WebProcess::initializeProcessName):
        (WebKit::WebProcess::platformInitializeProcess):
        (WebKit::WebProcess::initializeSandbox):
        (WebKit::WebProcess::updateActivePages):
        * WebProcess/ios/WebProcessIOS.mm: Removed.
        * WebProcess/mac/WebProcessMac.mm: Removed.
        Copy mac/WebProcessMac.mm to cocoa/WebProcessCocoa.mm, and add #if USE(APPKIT) where appropriate.

2014-02-17  Anders Carlsson  <andersca@apple.com>

        Stop using isMainThread() in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=128940
        <rdar://problem/15963666>

        Reviewed by Enrica Casucci.

        Since isMainThread() has a different meaning when the web thread is enabled on iOS,
        just use RunLoop::isMain() to check if we're executing on the main thread.

        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::ensurePathExists):
        (WebKit::DatabaseProcess::postDatabaseTask):
        (WebKit::DatabaseProcess::performNextDatabaseTask):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::shutdown):
        (WebKit::UniqueIDBDatabase::shutdownBackingStore):
        (WebKit::UniqueIDBDatabase::didShutdownBackingStore):
        (WebKit::UniqueIDBDatabase::deleteDatabase):
        (WebKit::UniqueIDBDatabase::getOrEstablishIDBDatabaseMetadata):
        (WebKit::UniqueIDBDatabase::openBackingStoreAndReadMetadata):
        (WebKit::UniqueIDBDatabase::didOpenBackingStoreAndReadMetadata):
        (WebKit::UniqueIDBDatabase::postTransactionOperation):
        (WebKit::UniqueIDBDatabase::didCompleteTransactionOperation):
        (WebKit::UniqueIDBDatabase::changeDatabaseVersion):
        (WebKit::UniqueIDBDatabase::createObjectStore):
        (WebKit::UniqueIDBDatabase::deleteObjectStore):
        (WebKit::UniqueIDBDatabase::clearObjectStore):
        (WebKit::UniqueIDBDatabase::createIndex):
        (WebKit::UniqueIDBDatabase::deleteIndex):
        (WebKit::UniqueIDBDatabase::putRecord):
        (WebKit::UniqueIDBDatabase::getRecord):
        (WebKit::UniqueIDBDatabase::openCursor):
        (WebKit::UniqueIDBDatabase::cursorAdvance):
        (WebKit::UniqueIDBDatabase::cursorIterate):
        (WebKit::UniqueIDBDatabase::count):
        (WebKit::UniqueIDBDatabase::deleteRange):
        (WebKit::UniqueIDBDatabase::openBackingStoreTransaction):
        (WebKit::UniqueIDBDatabase::beginBackingStoreTransaction):
        (WebKit::UniqueIDBDatabase::commitBackingStoreTransaction):
        (WebKit::UniqueIDBDatabase::resetBackingStoreTransaction):
        (WebKit::UniqueIDBDatabase::rollbackBackingStoreTransaction):
        (WebKit::UniqueIDBDatabase::changeDatabaseVersionInBackingStore):
        (WebKit::UniqueIDBDatabase::createObjectStoreInBackingStore):
        (WebKit::UniqueIDBDatabase::deleteObjectStoreInBackingStore):
        (WebKit::UniqueIDBDatabase::clearObjectStoreInBackingStore):
        (WebKit::UniqueIDBDatabase::createIndexInBackingStore):
        (WebKit::UniqueIDBDatabase::deleteIndexInBackingStore):
        (WebKit::UniqueIDBDatabase::putRecordInBackingStore):
        (WebKit::UniqueIDBDatabase::getRecordFromBackingStore):
        (WebKit::UniqueIDBDatabase::openCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::absoluteDatabaseDirectory):
        (WebKit::UniqueIDBDatabase::postMainThreadTask):
        (WebKit::UniqueIDBDatabase::performNextMainThreadTask):
        (WebKit::UniqueIDBDatabase::postDatabaseTask):
        (WebKit::UniqueIDBDatabase::performNextDatabaseTask):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::generateDatabaseId):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::UniqueIDBDatabaseBackingStoreSQLite):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::~UniqueIDBDatabaseBackingStoreSQLite):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::extractExistingMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::openSQLiteDatabaseAtPath):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getOrEstablishMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::establishTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::beginTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::commitTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::resetTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::rollbackTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::changeDatabaseVersion):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::clearObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createIndex):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteIndex):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::generateKeyNumber):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::updateKeyGeneratorNumber):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::keyExistsInObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::putRecord):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::putIndexRecord):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getIndexRecord):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteRecord):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteRange):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getKeyRecordFromObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getKeyRangeRecordFromObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::count):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::openCursor):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::advanceCursor):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::iterateCursor):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::notifyCursorsOfChanges):
        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::shared):
        * NetworkProcess/HostRecord.cpp:
        (WebKit::HostRecord::scheduleResourceLoader):
        (WebKit::HostRecord::addLoaderInProgress):
        (WebKit::HostRecord::removeLoader):
        * NetworkProcess/NetworkResourceLoadScheduler.cpp:
        (WebKit::NetworkResourceLoadScheduler::removeLoader):
        (WebKit::NetworkResourceLoadScheduler::receivedRedirect):
        (WebKit::NetworkResourceLoadScheduler::removeScheduledLoaders):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::NetworkResourceLoader):
        (WebKit::NetworkResourceLoader::~NetworkResourceLoader):
        (WebKit::NetworkResourceLoader::start):
        (WebKit::NetworkResourceLoader::cleanup):
        (WebKit::NetworkResourceLoader::abort):
        (WebKit::NetworkResourceLoader::willSendRequestAsync):
        (WebKit::NetworkResourceLoader::canAuthenticateAgainstProtectionSpaceAsync):
        * NetworkProcess/NetworkResourceLoader.h:
        (WebKit::NetworkResourceLoader::setHostRecord):
        (WebKit::NetworkResourceLoader::hostRecord):
        * NetworkProcess/mac/DiskCacheMonitor.mm:
        (WebKit::DiskCacheMonitor::DiskCacheMonitor):
        * Shared/AsyncRequest.cpp:
        (WebKit::generateRequestID):
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::generateAuthenticationChallengeID):
        (WebKit::AuthenticationManager::establishIdentifierForChallenge):
        (WebKit::AuthenticationManager::useCredentialForChallenge):
        (WebKit::AuthenticationManager::continueWithoutCredentialForChallenge):
        (WebKit::AuthenticationManager::cancelChallenge):
        * Shared/Downloads/mac/DownloadMac.mm:
        (dispatchOnMainThread):
        * Shared/Plugins/NPObjectProxy.cpp:
        (WebKit::NPObjectProxy::~NPObjectProxy):
        * Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:
        (WebKit::getPluginInfoFromCarbonResources):
        * Shared/SessionTracker.cpp:
        (WebKit::staticSessionMap):
        (WebKit::storageSessionToID):
        (WebKit::identifierBase):
        (WebKit::SessionTracker::destroySession):
        (WebKit::SessionTracker::setIdentifierBase):
        * UIProcess/APISession.cpp:
        (API::generateID):
        (API::Session::defaultSession):
        (API::Session::legacyPrivateSession):
        * WebProcess/Cookies/WebCookieManager.cpp:
        (WebKit::WebCookieManager::dispatchCookiesDidChange):
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::open):
        (WebKit::WebIDBFactoryBackend::deleteDatabase):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::generateServerConnectionIdentifier):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::storageSession):
        * WebProcess/WebPage/EventDispatcher.cpp:
        (WebKit::EventDispatcher::dispatchWheelEvent):

2014-02-17  Anders Carlsson  <andersca@apple.com>

        Remove view source code
        https://bugs.webkit.org/show_bug.cgi?id=127233

        Reviewed by Antti Koivisto.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2014-02-17  Sergio Correia  <sergio.correia@openbossa.org>

        Replace uses of PassOwnPtr/OwnPtr with std::unique_ptr in WebCore/inspector
        https://bugs.webkit.org/show_bug.cgi?id=128681

        Reviewed by Timothy Hatcher.

        Another step towards getting rid of PassOwnPtr/OwnPtr, now targeting
        WebCore/inspector/*. Besides files in there, a few other files in
        JavaScriptCore/inspector, WebKit/, WebKit2/WebProcess/WebCoreSupport/
        and WebCore/testing were touched.

        * WebProcess/WebCoreSupport/WebInspectorFrontendClient.cpp:

2014-02-17  Michał Pakuła vel Rutka  <m.pakula@samsung.com>

        Unreviewed EFL build fix attempt

        * CMakeLists.txt: Remove WebHistoryClient.cpp after r164230.

2014-02-17  Anders Carlsson  <andersca@apple.com>

        WebKitGTK+ should stop calling functions to set the view source mode
        https://bugs.webkit.org/show_bug.cgi?id=128919

        Reviewed by Carlos Garcia Campos.

        This is a first step towards getting rid of the view source mode from WebCore. 
        View source shouldn't be a mode on the web page and can be implemented in other ways by
        embedding apps. Furthermore, the inspector has an excellent view source mode.

        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_set_view_mode):
        (webkit_web_view_get_view_mode):
        Turn these into no-ops.

2014-02-17  Anders Carlsson  <andersca@apple.com>

        Turn the history client into a fancy API::HistoryClient abstract base class
        https://bugs.webkit.org/show_bug.cgi?id=128917

        Reviewed by Andreas Kling.

        * UIProcess/API/APIHistoryClient.h: Renamed from Source/WebKit2/UIProcess/WebHistoryClient.h.
        (API::HistoryClient::~HistoryClient):
        (API::HistoryClient::didNavigateWithNavigationData):
        (API::HistoryClient::didPerformClientRedirect):
        (API::HistoryClient::didPerformServerRedirect):
        (API::HistoryClient::didUpdateHistoryTitle):
        (API::HistoryClient::populateVisitedLinks):
        (API::HistoryClient::shouldTrackVisitedLinks):
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetHistoryClient):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::WebContext):
        (WebKit::WebContext::setHistoryClient):
        (WebKit::WebContext::createNewWebProcess):
        (WebKit::WebContext::populateVisitedLinks):
        * UIProcess/WebContext.h:
        (WebKit::WebContext::historyClient):
        * UIProcess/WebHistoryClient.cpp: Removed.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-17  Dan Bernstein  <mitz@apple.com>

        Try to fix iOS Debug builds without breaking Release builds.

        * WebProcess/WebPage/PageBanner.cpp:
        * WebProcess/WebPage/PageBanner.h:

2014-02-16  Dan Bernstein  <mitz@apple.com>

        Speculative iOS build fix.

        * WebProcess/WebPage/mac/PageBannerMac.mm:

2014-02-16  Dan Bernstein  <mitz@apple.com>

        Speculative iOS build fix.

        * WebProcess/WebPage/PageBanner.h:

2014-02-16  Dan Bernstein  <mitz@apple.com>

        Stop using PLATFORM(MAC) in Source except where it means “OS X but not iOS”
        https://bugs.webkit.org/show_bug.cgi?id=128885

        Reviewed by Anders Carlsson.

        * Configurations/WebKit2.xcconfig: Removed PageBannerMac.mm and WKBundlePageBannerMac.mm
        from EXCLUDED_SOURCE_FILE_NAMES_iphoneos, now that these files are guarded with
        !PLATFORM(IOS).
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp: Changed PLATFORM(MAC) to
        PLATFORM(COCOA).
        (WKBundleFrameCopyWebArchiveFilteringSubframes):
        * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm: Guarded with !PLATFORM(IOS).
        * WebProcess/InjectedBundle/InjectedBundle.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/InjectedBundle/InjectedBundle.h: Changed PLATFORM(MAC) to USE(FOUNDATION)
        around use of NSBundle.
        * WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h: Changed PLATFORM(MAC) to
        PLATFORM(COCOA).
        (WebKit::InjectedBundleUserMessageEncoder::encode):
        (WebKit::InjectedBundleUserMessageDecoder::decode):
        * WebProcess/Network/WebResourceLoader.cpp: Ditto.
        (WebKit::WebResourceLoader::didReceiveResponseWithCertificateInfo):
        * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: Ditto.
        (WebKit::NPN_GetValue):
        (WebKit::NPN_SetValue):
        (WebKit::initializeBrowserFuncs):
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: Ditto.
        (WebKit::NetscapePlugin::NetscapePlugin):
        (WebKit::NetscapePlugin::supportsSnapshotting):
        * WebProcess/Plugins/Netscape/NetscapePlugin.h: Ditto.
        * WebProcess/Plugins/Plugin.cpp: Ditto.
        (WebKit::Plugin::Parameters::encode):
        (WebKit::Plugin::Parameters::decode):
        * WebProcess/Plugins/Plugin.h: Ditto.
        * WebProcess/Plugins/PluginController.h: Ditto.
        * WebProcess/Plugins/PluginProcessConnectionManager.cpp: Changed PLATFORM(MAC) to
        USE(DARWIN) around use of Mach-based IPC.
        (WebKit::PluginProcessConnectionManager::getPluginProcessConnection):
        * WebProcess/Plugins/PluginProxy.cpp: Chanegd PLATFORM(MAC) to PLATFORM(COCOA).
        * WebProcess/Plugins/PluginProxy.h: Ditto.
        * WebProcess/Plugins/PluginProxy.messages.in: Ditto.
        * WebProcess/Plugins/PluginView.cpp: Ditto.
        (WebKit::PluginView::destroyPluginAndReset):
        (WebKit::PluginView::viewStateDidChange):
        (WebKit::PluginView::didInitializePlugin):
        (WebKit::PluginView::invalidateRect):
        (WebKit::PluginView::pluginSnapshotTimerFired):
        * WebProcess/Plugins/PluginView.h: Ditto.
        * WebProcess/ResourceCache/cf/WebResourceCacheManagerCFNet.cpp: Ditto.
        * WebProcess/WebCoreSupport/WebChromeClient.cpp: Ditto.
        (WebKit::WebChromeClient::windowRect):
        * WebProcess/WebCoreSupport/WebChromeClient.h: Ditto.
        * WebProcess/WebCoreSupport/WebContextMenuClient.cpp: Ditto.
        * WebProcess/WebCoreSupport/WebContextMenuClient.h: Ditto.
        * WebProcess/WebCoreSupport/WebDragClient.cpp: Ditto.
        * WebProcess/WebCoreSupport/WebDragClient.h: Ditto.
        * WebProcess/WebCoreSupport/WebEditorClient.cpp: Ditto.
        (WebKit::WebEditorClient::shouldEraseMarkersAfterChangeSelection):
        * WebProcess/WebCoreSupport/WebEditorClient.h: Ditto.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: Ditto.
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        (WebKit::WebFrameLoaderClient::createPlugin):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: Ditto.
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: Ditto.
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h: Ditto.
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: Removed PLATFORM(MAC).
        (InitWebCoreSystemInterface):
        * WebProcess/WebPage/DrawingArea.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        (WebKit::DrawingArea::create):
        * WebProcess/WebPage/DrawingArea.h: Ditto.
        * WebProcess/WebPage/DrawingArea.messages.in: Ditto.
        * WebProcess/WebPage/EventDispatcher.cpp: Ditto.
        (WebKit::EventDispatcher::wheelEvent):
        * WebProcess/WebPage/LayerTreeHost.h: Ditto.
        * WebProcess/WebPage/PageBanner.cpp: Added !PLATFORM(IOS)
        * WebProcess/WebPage/PageBanner.h: Ditto.
        * WebProcess/WebPage/WebFrame.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        * WebProcess/WebPage/WebFrame.h: Ditto.
        * WebProcess/WebPage/WebInspector.cpp: Ditto.
        (WebKit::WebInspector::WebInspector):
        * WebProcess/WebPage/WebInspector.h: Ditto.
        * WebProcess/WebPage/WebPage.cpp: Ditto.
        (WebKit::WebPage::WebPage):
        (WebKit::isContextClick):
        (WebKit::WebPage::getSelectionAsWebArchiveData):
        (WebKit::WebPage::getWebArchiveOfFrame):
        (WebKit::WebPage::updatePreferences):
        (WebKit::WebPage::sendSetWindowFrame):
        (WebKit::WebPage::beginPrinting):
        (WebKit::WebPage::computePagesForPrinting):
        * WebProcess/WebPage/WebPage.h: Ditto.
        * WebProcess/WebPage/WebPage.messages.in: Ditto.
        * WebProcess/WebPage/mac/PageBannerMac.mm: Guarded with !PLATFORM(IOS).
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::WebProcess): Changed PLATFORM(MAC) to PLATFORM(COCOA).
        (WebKit::WebProcess::initializeWebProcess): Ditto.
        (WebKit::WebProcess::ensureNetworkProcessConnection): Changed PLATFORM(MAC) to OS(DARWIN).
        (WebKit::WebProcess::ensurePrivateBrowsingSession): Changed PLATFORM(MAC) to
        PLATFORM(COCOA).
        (WebKit::WebProcess::destroyPrivateBrowsingSession): Ditto.
        (WebKit::WebProcess::ensureWebToDatabaseProcessConnection): Changed PLATFORM(MAC) to
        OS(DARWIN).
        (WebKit::WebProcess::nonVisibleProcessCleanupTimerFired): Changed PLATFORM(MAC) to
        PLATFORM(COCOA)
        * WebProcess/WebProcess.h: Ditto.
        * WebProcess/WebProcess.messages.in: Removed PLATFORM(MAC) guard around
        SetProcessSuppressionEnabled. Changed it to PLATFORM(COCOA) around SetQOS.

2014-02-15  Alexey Proskuryakov  <ap@apple.com>

        [Mac] All WebKit clients should encrypt WebCrypto keys automatically
        https://bugs.webkit.org/show_bug.cgi?id=128852

        Reviewed by Oliver Hunt.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):
        Call the default implementation if key is not provided by a client.

2014-02-15  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        [EFL][WK2] Stop calling mktemp(3).
        https://bugs.webkit.org/show_bug.cgi?id=128826

        Reviewed by Gyuyoung Kim.

        mktemp(3) is an insecure function and should be avoided at all costs.
        Replace its usage with mkdtemp(3): instead of just getting a file name
        that is supposed to be random and unused, we now create a directory
        with a random name and then put whatever files we need there with fixed
        names.

        * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:
        (TEST_F):
        * UIProcess/API/efl/tests/test_ewk2_download_job.cpp:
        (TEST_F):

2014-02-15  Dan Bernstein  <mitz@apple.com>

        Stop using PLATFORM(MAC) in WebKit2/UIProcess except where it means “OS X but not iOS”
        https://bugs.webkit.org/show_bug.cgi?id=128868

        Reviewed by Anders Carlsoon.

        * UIProcess/API/C/WKPage.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        * UIProcess/Databases/DatabaseProcessProxy.cpp:
        (WebKit::DatabaseProcessProxy::didCreateDatabaseToWebProcessConnection): Changed
        PLATFORM(MAC) to OS(DARWIN) around use of Mach-based IPC.
        * UIProcess/DrawingAreaProxy.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA)
        (WebKit::DrawingAreaProxy::DrawingAreaProxy):
        * UIProcess/DrawingAreaProxy.h: Ditto.
        * UIProcess/DrawingAreaProxy.messages.in: Ditto.
        * UIProcess/Launcher/ProcessLauncher.cpp:
        (WebKit::ProcessLauncher::didFinishLaunchingProcess): Changed PLATFORM(MAC) to OS(DARWIN)
        around use of Mach API.
        * UIProcess/Launcher/ProcessLauncher.h: Ditto.
        * UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h: Changed PLATFORM(MAC) to
        PLATFORM(COCOA)
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch): Changed PLATFORM(MAC)
        to OS(DARWIN).
        (WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess): Ditto.
        (WebKit::NetworkProcessProxy::didFinishLaunching): Changed PLATFORM(MAC) to PLATFORM(COCOA)
        around process suppression call.
        * UIProcess/Network/NetworkProcessProxy.h: Ditto.
        * UIProcess/PageClient.h: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        * UIProcess/Plugins/PluginInfoStore.cpp: Ditto.
        * UIProcess/Plugins/PluginProcessManager.h: Ditto.
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::PluginProcessProxy): Ditto.
        (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch): Changed PLATFORM(MAC)
        to OS(DARWIN).
        (WebKit::PluginProcessProxy::didClose): Changed PLATFORM(MAC) to PLATFORM(COCOA).
        (WebKit::PluginProcessProxy::didFinishLaunching): Changed PLATFORM(MAC) to OS(DARWIN) around
        use of Mach-based IPC, and to PLATFORM(COCOA) around SetQOS.
        (WebKit::PluginProcessProxy::didCreateWebProcessConnection): Changed PLATFORM(MAC) to
        OS(DARWIN).
        * UIProcess/Plugins/PluginProcessProxy.h: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        * UIProcess/Plugins/PluginProcessProxy.messages.in: Ditto.
        * UIProcess/TextChecker.h: Ditto.
        * UIProcess/WebContext.cpp: Ditto.
        (WebKit::WebContext::ensureNetworkProcess):
        (WebKit::WebContext::createNewWebProcess):
        (WebKit::WebContext::setHTTPPipeliningEnabled):
        (WebKit::WebContext::httpPipeliningEnabled):
        (WebKit::WebContext::pluginInfoStoreDidLoadPlugins):
        * UIProcess/WebContext.h: Ditto.
        * UIProcess/WebContext.messages.in: Ditto.
        * UIProcess/WebContextUserMessageCoders.h: Ditto.
        (WebKit::WebContextUserMessageEncoder::encode):
        (WebKit::WebContextUserMessageDecoder::decode):
        * UIProcess/WebCookieManagerProxy.cpp: Ditto.
        (WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy):
        * UIProcess/WebCookieManagerProxy.h: Ditto.
        * UIProcess/WebFormSubmissionListenerProxy.h: Ditto.
        * UIProcess/WebFramePolicyListenerProxy.h: Ditto.
        * UIProcess/WebInspectorProxy.h: Added !PLATFORM(IOS) around members reltated to managing
        the inspector window and its view.
        * UIProcess/WebPageProxy.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::recordNavigationSnapshot):
        (WebKit::WebPageProxy::canShowMIMEType):
        (WebKit::canCoalesce):
        (WebKit::coalesce):
        (WebKit::WebPageProxy::findPlugin):
        (WebKit::WebPageProxy::editorStateChanged):
        (WebKit::WebPageProxy::contextMenuItemSelected):
        (WebKit::WebPageProxy::didReceiveEvent):
        (WebKit::WebPageProxy::didBlockInsecurePluginVersion):
        * UIProcess/WebPageProxy.h: Ditto.
        * UIProcess/WebPageProxy.messages.in: Ditto.
        * UIProcess/WebProcessProxy.cpp: Ditto.
        (WebKit::WebProcessProxy::WebProcessProxy):
        (WebKit::WebProcessProxy::createWebPage):
        (WebKit::WebProcessProxy::addExistingWebPage):
        (WebKit::WebProcessProxy::removeWebPage):
        (WebKit::WebProcessProxy::didFinishLaunching):
        (WebKit::WebProcessProxy::pageSuppressibilityChanged):
        (WebKit::WebProcessProxy::pagePreferencesChanged):
        * UIProcess/WebProcessProxy.h: Ditto.
        * UIProcess/cf/WebPreferencesCF.cpp: Removed this file which was not used in any
        configuration.
        * UIProcess/ios/WebInspectorProxyIOS.mm: Removed functions that no longer need to be
        implemented for iOS.
        * WebKit2.xcodeproj/project.pbxproj: Removed reference to WebPreferencesCF.cpp.

2014-02-15  Jeremy Jones  <jeremyj@apple.com>

        messages.py doesn't handle parameters with more than one level of scope.
        https://bugs.webkit.org/show_bug.cgi?id=128573

        Reviewed by Simon Fraser.

        Support .messages.in header include generation for parameter types with more than 1 level of scope.

        Add a test case and update expected results.

        * Scripts/webkit2/LegacyMessageReceiver-expected.cpp:
        (WebKit::WebPage::didReceiveWebPageMessage):
        * Scripts/webkit2/LegacyMessages-expected.h:
        (Messages::WebPage::SetVideoLayerID::receiverName):
        (Messages::WebPage::SetVideoLayerID::name):
        (Messages::WebPage::SetVideoLayerID::SetVideoLayerID):
        (Messages::WebPage::SetVideoLayerID::arguments):
        * Scripts/webkit2/MessageReceiver-expected.cpp:
        (WebKit::WebPage::didReceiveMessage):
        * Scripts/webkit2/Messages-expected.h:
        (Messages::WebPage::SetVideoLayerID::receiverName):
        (Messages::WebPage::SetVideoLayerID::name):
        (Messages::WebPage::SetVideoLayerID::SetVideoLayerID):
        (Messages::WebPage::SetVideoLayerID::arguments):
        * Scripts/webkit2/messages.py:
        (headers_for_type):
        * Scripts/webkit2/messages_unittest.py:
        * Scripts/webkit2/test-legacy-messages.in:
        * Scripts/webkit2/test-messages.in:

2014-02-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Fix marshaller used in WebKitWebPage::document-loaded signal
        https://bugs.webkit.org/show_bug.cgi?id=128808

        Reviewed by Sergio Villar Senin.

        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
        (webkit_web_page_class_init): Use g_cclosure_marshal_VOID__VOID
        instead of g_cclosure_marshal_VOID__OBJECT.

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

        Add SPI for monitoring web process crashes
        https://bugs.webkit.org/show_bug.cgi?id=128851

        Reviewed by Beth Dakin.

        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::LoaderClient::processDidCrash):

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

        Add SPI for authentication 
        https://bugs.webkit.org/show_bug.cgi?id=128847

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::LoaderClient::canAuthenticateAgainstProtectionSpaceInFrame):
        (WebKit::NavigationState::LoaderClient::didReceiveAuthenticationChallengeInFrame):

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

        Add WKBackForwardListDidChangeNotification 
        https://bugs.webkit.org/show_bug.cgi?id=128839

        Reviewed by Dan Bernstein.

        Also, make LoaderClient::didChangeBackForwardList take a Vector of WebBackForwardListItems
        instead of a pointer to a Vector of API::Objects.

        * Shared/API/Cocoa/WKFoundation.h:
        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didChangeBackForwardList):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/Cocoa/WKBackForwardList.h:
        * UIProcess/API/Cocoa/WKBackForwardList.mm:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::LoaderClient::didChangeBackForwardList):
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::addItem):
        (WebKit::WebBackForwardList::goToItem):
        (WebKit::WebBackForwardList::clear):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didChangeBackForwardList):
        * UIProcess/WebPageProxy.h:

2014-02-12  Jer Noble  <jer.noble@apple.com>

        [iOS][WK2] Always enable AVKit in WK2
        https://bugs.webkit.org/show_bug.cgi?id=128686

        Reviewed by Simon Fraser.

        Enable AVKit in iOS WK2 by default. This enables <video> element full screen in WK2.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2014-02-14  Benjamin Poulain  <bpoulain@apple.com>

        [WK2][iOS] Add WKContentObservation support when dispatching synthetic mouse events
        https://bugs.webkit.org/show_bug.cgi?id=128715

        Reviewed by Darin Adler.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleTap):

2014-02-14  Benjamin Poulain  <bpoulain@apple.com>

        <rdar://problem/15994340> WK2: Cannot scroll to the bottom of the page when the keyboard is on the screen
        https://bugs.webkit.org/show_bug.cgi?id=128710

        Reviewed by Enrica Casucci.

        WKView/WKWebView needs to adapt the UIScrollView insets to leave some space for the keyboard.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        (-[WKWebView dealloc]):
        (-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]):
        (-[WKWebView _keyboardWillChangeFrame:]):
        (-[WKWebView _keyboardDidChangeFrame:]):
        (-[WKWebView _keyboardWillShow:]):
        (-[WKWebView _keyboardWillHide:]):
        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView isAssistingNode]):
        * UIProcess/API/ios/WKInteractionView.h:
        * UIProcess/API/ios/WKViewIOS.mm:
        (-[WKView dealloc]):
        (-[WKView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
        (-[WKView _keyboardChangedWithInfo:adjustScrollView:]):
        (-[WKView _keyboardWillChangeFrame:]):
        (-[WKView _keyboardDidChangeFrame:]):
        (-[WKView _keyboardWillShow:]):
        (-[WKView _keyboardWillHide:]):

2014-02-14  Dan Bernstein  <mitz@apple.com>

        Stop using PLATFORM(MAC) in WebKit2/PluginProcess except where it means “OS X but not iOS”
        https://bugs.webkit.org/show_bug.cgi?id=128802

        Reviewed by Darin Adler.

        * PluginProcess/PluginControllerProxy.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        (WebKit::PluginControllerProxy::PluginControllerProxy):
        (WebKit::PluginControllerProxy::paint):
        * PluginProcess/PluginControllerProxy.h: Ditto.
        * PluginProcess/PluginControllerProxy.messages.in: Ditto.
        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::PluginProcess): Ditto.
        (WebKit::PluginProcess::netscapePluginModule): Added && !PLATFORM(IOS) around Mac-specific
        quirk.
        (WebKit::PluginProcess::createWebProcessConnection): Changed PLATFORM(MAC) to OS(DARWIN)
        around use of Mach-based IPC.
        * PluginProcess/PluginProcess.h: Changed PLATFORM(MAC) to PLATFORM(COCOA), and to
        USE(APPKIT) around override of stopRunLoop, which is implemented using AppKit.
        * PluginProcess/PluginProcess.messages.in: Removed PLATFORM(MAC) guard around
        SetProcessSuppressionEnabled. Changed it to PLATFORM(COCOA) around SetQOS.
        * PluginProcess/WebProcessConnection.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        (WebKit::WebProcessConnection::createPluginInternal):
        (WebKit::WebProcessConnection::createPlugin):

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

        Add -[WKWebView estimatedProgress]
        https://bugs.webkit.org/show_bug.cgi?id=128830

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView estimatedProgress]):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::willChangeEstimatedProgress):
        (WebKit::NavigationState::didChangeEstimatedProgress):

2014-02-13  Simon Fraser  <simon.fraser@apple.com>

        Give ScrollingTree(State)Nodes a reference to another layer, which is used for moving overflow:scroll contents around
        https://bugs.webkit.org/show_bug.cgi?id=128790

        Reviewed by Beth Dakin.

        Have scrolling tree nodes and state nodes track another layer, the
        "scrolled contents layer", for accelerated overflow:scroll.
        
        When making ScrollingTreeScrollingNodes for overflow:scroll, the node's
        layer will point to the composited element's primary layer, and its
        scrolledContentsLayer to the layer that gets moved around by scrolling.
        
        Do some other cleanup on AsyncScrollingCoordinator, removing
        functions that just called through to nodes.

        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

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

        Add -[WKWebView _handle]
        https://bugs.webkit.org/show_bug.cgi?id=128828

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _handle]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2014-02-13  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Expose the bundle form client
        https://bugs.webkit.org/show_bug.cgi?id=128792

        Reviewed by Anders Carlsson.

        * WebKit2.xcodeproj/project.pbxproj: Added new file.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFormDelegatePrivate.h: Added.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (didFocusTextField): Implemented this WKBundlePageFormClient callback by calling the form
        delegate.
        (setUpFormClient): Added. Initializes the form client with the above function.
        (-[WKWebProcessPlugInBrowserContextController _formDelegate]): Added this getter.
        (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): Added. Initializes or
        clears the form client.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:
        Declared _formDelegate property.

2014-02-13  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Add a way to get the page from a frame in the injected bundle
        https://bugs.webkit.org/show_bug.cgi?id=128791

        Reviewed by Anders Carlsson.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
        (-[WKWebProcessPlugInFrame _browserContextController]): Added.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h: Declared
        _browserContextController property.

2014-02-13  Anders Carlsson  <andersca@apple.com>

        Add -[WKWebView stopLoading:]
        https://bugs.webkit.org/show_bug.cgi?id=128784

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView stopLoading:]):

2014-02-13  Anders Carlsson  <andersca@apple.com>

        Add -[WKWebView activeURL]
        https://bugs.webkit.org/show_bug.cgi?id=128777

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView activeURL]):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::willChangeActiveURL):
        (WebKit::NavigationState::didChangeActiveURL):

2014-02-13  Anders Carlsson  <andersca@apple.com>

        Add -[WKWebView goToBackForwardListItem:]
        https://bugs.webkit.org/show_bug.cgi?id=128773

        Reviewed by Andreas Kling.

        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView goToBackForwardListItem:]):

2014-02-13  Anders Carlsson  <andersca@apple.com>

        Make WKWebViewConfigurationPrivate.h private
        https://bugs.webkit.org/show_bug.cgi?id=128761

        Reviewed by Tim Horton.

        * WebKit2.xcodeproj/project.pbxproj:

2014-02-13  Myles C. Maxfield  <mmaxfield@apple.com>

        During a copy, position:fixed gets converted to position:absolute even if only part of the document is selected
        https://bugs.webkit.org/show_bug.cgi?id=128688

        Reviewed by Ryosuke Niwa.

        Renames the ConvertPositionStyleOnCopy setting to ShouldConvertPositionStyleOnCopy

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

2014-02-12  Timothy Hatcher  <timothy@apple.com>

        Enable inspection of recently used IndexedDB databases.

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

        Reviewed by Brady Eidson & Joseph Pecoraro.

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::sharedRecentDatabaseNameMap):
        (WebKit::combinedSecurityOriginIdentifier):
        (WebKit::WebIDBFactoryBackend::WebIDBFactoryBackend):
        (WebKit::WebIDBFactoryBackend::getDatabaseNames):
        (WebKit::WebIDBFactoryBackend::open):
        (WebKit::WebIDBFactoryBackend::deleteDatabase):
        Keep track of recently used database names per security-origin pair.
        Implement getDatabaseNames to return the recently used names.

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:
        Fix up the arguments passed to getDatabaseNames.

2014-02-13  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (layoutMilestones):

2014-02-13  Anders Carlsson  <andersca@apple.com>

        Add rendering progress events SPI
        https://bugs.webkit.org/show_bug.cgi?id=128752

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _observedRenderingProgressEvents]):
        (layoutMilestones):
        (-[WKWebView _setObservedRenderingProgressEvents:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        (NS_OPTIONS):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::renderingProgressEvents):
        (WebKit::NavigationState::LoaderClient::didLayout):
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-13  Anders Carlsson  <andersca@apple.com>

        Disable XPC for plug-ins that need executable heap
        https://bugs.webkit.org/show_bug.cgi?id=128744
        <rdar://problem/15962958>

        Reviewed by Dan Bernstein.

        When switching to XPC for plug-ins, we accidentally broke the "feature"
        where plug-ins can ask for the heap to be executable. 
        
        This breaks Silverlight, so just disable XPC for any plug-ins that need this.
        <rdar://problem/16059483> tracks fixing this in the XPC service.

        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::pluginNeedsExecutableHeap):
        Only return true for 32-bit plug-ins, since we don't know any 64-bit plug-ins
        that require this feature.

        (WebKit::PluginProcessProxy::platformGetLaunchOptions):
        Set launchOptions.useXPC to false if launchOptions.executableHeap is true.

2014-02-12  Antti Koivisto  <antti@apple.com>

        Return immediately from DestroyPlugin IPC call
        https://bugs.webkit.org/show_bug.cgi?id=128712

        Reviewed by Anders Carlsson.
        
        In some cases we spend a lot of time waiting for synchronous IPC for plugin termination to complete. Reduce
        the delay by returning from IPC immediately when the plugin process receives it. Just using asynchrounous
        IPC might introduce undesirable arbitrary delay between the IPC call returning and the destruction actually
        starting.

        * PluginProcess/WebProcessConnection.cpp:
        (WebKit::WebProcessConnection::destroyPlugin):
        * PluginProcess/WebProcessConnection.h:
        * PluginProcess/WebProcessConnection.messages.in:

2014-02-12  Anders Carlsson  <andersca@apple.com>

        Pass the related page in the WebPageConfiguration struct
        https://bugs.webkit.org/show_bug.cgi?id=128714

        Reviewed by Darin Adler.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView initWithFrame:context:WebKit::configuration:WebKit::]):

2014-02-12  Anders Carlsson  <andersca@apple.com>

        Add relatedWebView property to WKWebViewConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=128707

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration relatedWebView]):
        (-[WKWebViewConfiguration setRelatedWebView:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm.
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-12  Alexey Proskuryakov  <ap@apple.com>

        [WK2] Add a C API to get WebCrypto master key from a client
        https://bugs.webkit.org/show_bug.cgi?id=128702

        Reviewed by Anders Carlsson.

        Added a new version of WKContextClient, with a function that returns the key.

        * UIProcess/API/C/WKContext.h:
        * UIProcess/WebContextClient.cpp:
        (WebKit::WebContextClient::copyWebCryptoMasterKey):
        * UIProcess/WebContextClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):
        * UIProcess/mac/WebPageProxyMac.mm:

2014-02-12  Anders Carlsson  <andersca@apple.com>

        Add destinationFrame property to WKNavigationAction
        https://bugs.webkit.org/show_bug.cgi?id=128700

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKNavigationAction.h:
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction destinationFrame]):
        (-[WKNavigationAction setDestinationFrame:]):
        * UIProcess/API/Cocoa/WKNavigationActionInternal.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::PolicyClient::decidePolicyForNavigationAction):

2014-02-12  Anders Carlsson  <andersca@apple.com>

        Forward declare WKNavigation in WKNavigationDelegate.h
        https://bugs.webkit.org/show_bug.cgi?id=128699

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKNavigationDelegate.h:

2014-02-12  Anders Carlsson  <andersca@apple.com>

        Expose scrollView on the WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=128697

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.h:

2014-02-12  Anders Carlsson  <andersca@apple.com>

        Better iOS build fix.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):
        Make these functions cross platform.

        * UIProcess/mac/WebPageProxyMac.mm:

2014-02-12  Andy Estes  <aestes@apple.com>

        Fix the iOS build after r163976

        Moved WebPageProxy::{wrap,unwrap}CryptoKey() to a new file built by
        both Mac and iOS.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm: Added.
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):
        * UIProcess/mac/WebPageProxyMac.mm:
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-12  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * UIProcess/API/Cocoa/WKProcessClass.h:

2014-02-12  Benjamin Poulain  <bpoulain@apple.com>

        [WK2][iOS] Add back the special viewport for the old xhtml mobile doctype
        https://bugs.webkit.org/show_bug.cgi?id=128639

        Reviewed by Andreas Kling.

        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::didReceiveMobileDocType):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::didReceiveMobileDocType):

2014-02-12  Anders Carlsson  <andersca@apple.com>

        WKProcessClass.h and WKNavigationResponse.h should be public headers
        https://bugs.webkit.org/show_bug.cgi?id=128683

        Reviewed by Dan Bernstein.

        * WebKit2.xcodeproj/project.pbxproj:

2014-02-12  Alexey Proskuryakov  <ap@apple.com>

        Wrap WebCrypto keys in SerializedScriptValue
        https://bugs.webkit.org/show_bug.cgi?id=128680

        Reviewed by Anders Carlsson.

        Retrieve a master key (placeholder code for now), and use it to wrap key data.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):

2014-02-12  Zan Dobersek  <zdobersek@igalia.com>

        [CoordinatedGraphics] Move CoordinatedGraphicsScene, CoordinatedLayerTreeHostProxy to std::function
        https://bugs.webkit.org/show_bug.cgi?id=128473

        Reviewed by Anders Carlsson.

        Move the CoordinatedLayerTreeHostProxy class to using std::function instead of WTF::Functional. C++11
        lambdas are used to construct the update functions, with the CoordinatedGraphicsScene refcount-protected
        throughout the lifetime of the function wrapper.

        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:
        (WebKit::CoordinatedLayerTreeHostProxy::dispatchUpdate):
        (WebKit::CoordinatedLayerTreeHostProxy::commitCoordinatedGraphicsState):
        (WebKit::CoordinatedLayerTreeHostProxy::setVisibleContentsRect):
        (WebKit::CoordinatedLayerTreeHostProxy::setBackgroundColor):
        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:

2014-02-12  Dan Bernstein  <mitz@apple.com>

        Stop using PLATFORM(MAC) in WebKit2/{Database,Network}Process except where it means “OS X but not iOS”
        https://bugs.webkit.org/show_bug.cgi?id=128659

        Reviewed by Anders Carlsson.

        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::createDatabaseToWebProcessConnection): Changed PLATFORM(MAC) to
        OS(DARWIN) around use of Mach-based IPC.
        Changed PLATFORM(MAC) to PLATFORM(COCOA) elsewhere in this file.
        * NetworkProcess/NetworkProcess.cpp: Ditto.
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
        * NetworkProcess/NetworkProcess.h: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        * NetworkProcess/NetworkProcess.messages.in: Removed PLATFORM(MAC) guard around
        SetProcessSuppressionEnabled. Changed it to PLATFORM(COCOA) around SetQOS.
        * NetworkProcess/NetworkResourceLoader.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA)
        (WebKit::NetworkResourceLoader::continueWillSendRequest):
        * NetworkProcess/NetworkResourceLoader.h: Ditto.
        * NetworkProcess/RemoteNetworkingContext.h: Ditto, matching WebCore::NetworkingContext.

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

        Remove some unintended copies in ranged for loops
        https://bugs.webkit.org/show_bug.cgi?id=128644

        Reviewed by Anders Carlsson.

        * Shared/WebCrossThreadCopier.cpp:
        (WebCore::Vector<Vector<IDBKeyData>>>::copy): Each iteration copies a vector of
        vectors, 
        * Shared/mac/RemoteLayerBackingStore.mm:
        (RemoteLayerBackingStore::enumerateRectsBeingDrawn): Avoid copying a FloatRect
        on each iteration.
        * Shared/mac/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer): Avoid copying
        a LayerProperty object each iteration.
        * UIProcess/GeolocationPermissionRequestManagerProxy.cpp:
        (WebKit::GeolocationPermissionRequestManagerProxy::invalidateRequests): Avoid
        copying a pair<int64_t, pointer> each iteration.
        * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp:
        (WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests): Ditto
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers): Ditto
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::postMessageToInjectedBundle): Avoid creating/destroying a
        RefPtr each loop iteration.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::shouldStartTrackingTouchEvents): Avoid copying a WebPlatformTouchPoint
        object each cycle.
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::updateLayerTree): Avoid copying a pair each iteration.
        * UIProcess/mac/WindowServerConnection.mm:
        (WebKit::WindowServerConnection::WindowServerConnection): Avoid copying the struct
        of occlusionNotificationHandlers each iteration.
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::put): Avoid copying a vector-of-vectors each
        iteration.
        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::recursiveBuildTransaction): Avoid creating/destroying a
        RefPtr each loop iteration.

2014-02-12  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        Update the HTML Media Capture implementation.
        https://bugs.webkit.org/show_bug.cgi?id=118465

        Reviewed by Darin Adler.

        Make the implementation in WebKit compatible with the 2013-05-09
        version of the spec, which makes the "capture" attribute a boolean
        instead of an enum.

        * Shared/WebOpenPanelParameters.cpp:
        (WebKit::WebOpenPanelParameters::capture): Return a bool.
        * Shared/WebOpenPanelParameters.h: Ditto.
        * UIProcess/API/C/WKOpenPanelParameters.cpp:
        (WKOpenPanelParametersCopyCapture): Deprecate, the implementation is
        incompatible with the current version of the spec.
        (WKOpenPanelParametersGetCaptureEnabled): Add and return a bool.
        * UIProcess/API/C/WKOpenPanelParameters.h:

2014-02-12  Alberto Garcia  <berto@igalia.com>

        [GTK] Fails to build if configure is run with its absolute path
        https://bugs.webkit.org/show_bug.cgi?id=126693

        Reviewed by Gustavo Noronha Silva.

        When creating links to the WebKit2 headers in the source tree
        don't expect $(WebKit2) to be a relative path.

        * GNUmakefile.am:

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

        JIT should be enabled (regression from addition of JIT enabled setting)
        https://bugs.webkit.org/show_bug.cgi?id=128653

        Reviewed by Tim Horton.

        * UIProcess/mac/WebContextMac.mm:
        (WebKit::registerUserDefaultsIfNeeded):

2014-02-11  Ryosuke Niwa  <rniwa@webkit.org>

        Remove one of includes added in r163943 and r163939.

        * WebProcess/WebPage/WebPage.h:

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

        <rdar://problem/16044438>: WebKit2.framework (with *Process.app) exists at the top level of the simulator
        https://bugs.webkit.org/show_bug.cgi?id=128650

        Reviewed by Mark Rowe.

        * Configurations/All-iOS.xcconfig: Removed this unused file.
        * Configurations/All.xcconfig: Set SKIP_INSTALL to YES for this aggregate target, so that
        its Copy Files build phase, intended only for engineering builds, doesn’t copy into the
        (wrong) install location.

2014-02-11  Ryosuke Niwa  <rniwa@webkit.org>

        EFL build fix after r163919.

        * WebProcess/WebPage/WebPage.h:

2014-02-11  Jaehun Lim  <ljaehun.lim@samsung.com>

        Unreviewed build fix after r163919

        WKGestureTypes.h needs PLATFORM(IOS) guard.

        * WebProcess/WebPage/WebPage.h:

2014-02-11  Zalan Bujtas  <zalan@apple.com>

        Subpixel rendering: Make GraphicsLayerClient::paintContents's clip rect subpixel based.
        https://bugs.webkit.org/show_bug.cgi?id=128460

        Reviewed by Simon Fraser.

        GraphicsClient::paintContents takes clipRect as FloatRect now so that we can paint on
        subpixel position.

        No change in functionality.

        * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:
        (WebKit::LayerTreeHostGtk::paintContents):
        * WebProcess/WebPage/gtk/LayerTreeHostGtk.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::paintContents):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::paintContents):

2014-02-11  Sam Weinig  <sam@webkit.org>

        [WebKit2, JSC] Add user default to disable the JIT
        https://bugs.webkit.org/show_bug.cgi?id=128643

        Reviewed by Filip Pizlo.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::WebProcessCreationParameters):
        (WebKit::WebProcessCreationParameters::encode):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/mac/WebContextMac.mm:
        (WebKit::registerUserDefaultsIfNeeded):
        (WebKit::WebContext::platformInitializeWebProcess):
        * WebProcess/mac/WebProcessMac.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

2014-02-11  Ryosuke Niwa  <rniwa@webkit.org>

        Frame::rectForSelection shouldn't instantiate FrameSelection
        https://bugs.webkit.org/show_bug.cgi?id=128587

        Reviewed by Enrica Casucci.

        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:

2014-02-11  Enrica Casucci  <enrica@apple.com>

        Support WebSelections in WK2 on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=127015
        <rdar://problem/15211964>

        Reviewed by Benjamin Poulain.

        First step towards implementing block selections on iOS.
        The main logic is in rangeForWebSelectionAtPosition that
        decides whether we create a text or a block selection.

        * Shared/ios/WKGestureTypes.h:
        * UIProcess/API/ios/WKInteractionView.mm:
        (toUIWKSelectionFlags):
        (selectionChangedWithGesture):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::rangeForWebSelectionAtPosition):
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::getPositionInformation):

2014-02-10  Myles C. Maxfield  <mmaxfield@apple.com>

        Convert position:sticky and position:fixed properties to position:static and position:absolute upon copy
        https://bugs.webkit.org/show_bug.cgi?id=128194

        Reviewed by Simon Fraser.

        * Shared/WebPreferencesStore.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetConvertPositionStyleOnCopy):
        (WKPreferencesGetConvertPositionStyleOnCopy):
        * UIProcess/API/C/WKPreferencesPrivate.h: Opt-in to new behavior
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2014-02-11  Benjamin Poulain  <bpoulain@apple.com>

        [WK2] Rename screenToWindow to screenToRootView and windowToScreen to rootViewToScreen
        https://bugs.webkit.org/show_bug.cgi?id=128575

        Reviewed by Darin Adler.

        In WebKit2, screenToRootView and rootViewToScreen were named screenToWindow and windowToScreen.
        Those names were fine on ports were FrameView correspond to the scrollview, but they do not apply on iOS.

        This patch renames screenToWindow and windowToScreen to their more generic WebCore counterpart.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::screenToRootView):
        (WebKit::PageClientImpl::rootViewToScreen):
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::screenToRootView):
        (WebKit::PageClientImpl::rootViewToScreen):
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::screenToRootView):
        (WebKit::PageClientImpl::rootViewToScreen):
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::screenToRootView):
        (WebKit::WebView::rootViewToScreen):
        * UIProcess/CoordinatedGraphics/WebView.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::screenToRootView):
        (WebKit::WebPageProxy::rootViewToScreen):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::screenToRootView):
        (WebKit::WebChromeClient::rootViewToScreen):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::screenToRootView):
        (WebKit::WebPage::rootViewToScreen):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:
        (-[WKAccessibilityWebPageObject _convertScreenPointToRootView:]):
        (-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]):

2014-02-11  Andy Estes  <aestes@apple.com>

        [Mac] connection:willStopBufferingData: no longer exists in NSURLConnectionDelegate
        https://bugs.webkit.org/show_bug.cgi?id=128583

        Reviewed by Anders Carlsson.

        The delegate method was removed in Snow Leopard.

        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/NetworkResourceLoader.h:

2014-02-11  Brady Eidson  <beidson@apple.com>

        IndexedDB tests on some bots are flakey (timeouts)
        <rdar://problem/16038745> and https://bugs.webkit.org/show_bug.cgi?id=128612

        Reviewed by Sam Weinig.

        When messing with JSC VM’s and such, always use APIEntryShim instead of JSLockHolder.
        *ESPECIALLY* when dealing with multiple threads.

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::~UniqueIDBDatabaseBackingStoreSQLite): 
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createIndex):

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

        Stop using PLATFORM(MAC) in WebKit2/Shared except where it means “OS X but not iOS”
        https://bugs.webkit.org/show_bug.cgi?id=128582

        Reviewed by Darin Adler.

        * Shared/API/c/WKContextMenuItem.cpp: Removed workaround for Mac Safari 6 compatibility.
        (WKContextMenuItemGetTag):
        * Shared/API/c/WKDeprecatedFunctions.cpp: Added && !PLATFORM(IOS), because these functions
        are not needed on iOS.
        * Shared/API/c/WKSharedAPICast.h: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        (WebKit::toAPI):
        (WebKit::toImpl):
        * Shared/APIObject.h: Ditto.
        * Shared/ChildProcess.cpp: Ditto.
        * Shared/ChildProcess.h: Changed PLATFORM(MAC) to PLATFORM(COCOA) around
        setApplicationIsDaemon and setQOS. Changed it to USE(APPKIT) around stopNSAppRunLoop.
        * Shared/CommandLine.h: Changed PLATFORM(MAC) to OS(UNIX) around parse().
        * Shared/DictionaryPopupInfo.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        (WebKit::DictionaryPopupInfo::encode):
        (WebKit::DictionaryPopupInfo::decode):
        * Shared/DictionaryPopupInfo.h: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        * Shared/Downloads/Download.h: Ditto.
        * Shared/DrawingAreaInfo.h: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        * Shared/FontInfo.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        (WebKit::FontInfo::encode):
        (WebKit::FontInfo::decode):
        * Shared/FontInfo.h: Ditto.
        * Shared/LayerTreeContext.h: Ditto.
        * Shared/NativeWebKeyboardEvent.h: Changed PLATFORM(MAC) to USE(APPKIT) around
        forward-declaration of NSView.
        * Shared/NativeWebMouseEvent.h: Ditto.
        * Shared/NativeWebWheelEvent.h: Ditto.
        * Shared/Network/CustomProtocols/Cocoa: Renamed from mac.
        * Shared/Network/CustomProtocols/Cocoa/CustomProtocolManagerCocoa.mm: Renamed from CustomProtocolManagerMac.mm.
        * Shared/Network/CustomProtocols/Cocoa/CustomProtocolManagerMac.mm: Removed.
        * Shared/Network/CustomProtocols/CustomProtocolManager.h: Changed PLATFORM(MAC) to
        PLATFORM(COCOA).
        * Shared/Network/CustomProtocols/mac: Removed.
        * Shared/Network/CustomProtocols/mac/CustomProtocolManagerMac.mm: Removed.
        * Shared/PlatformPopupMenuData.cpp:  Changed PLATFORM(MAC) to PLATFORM(COCOA).
        (WebKit::PlatformPopupMenuData::encode):
        (WebKit::PlatformPopupMenuData::decode):
        * Shared/PlatformPopupMenuData.h: Ditto.
        * Shared/Plugins/Netscape/PluginInformation.cpp: Ditto.
        * Shared/Plugins/PluginModuleInfo.h: Ditto.
        * Shared/Plugins/PluginProcessCreationParameters.cpp: Ditto.
        (WebKit::PluginProcessCreationParameters::encode):
        (WebKit::PluginProcessCreationParameters::decode):
        * Shared/Plugins/PluginProcessCreationParameters.h: Ditto.
        * Shared/PrintInfo.h: Changed PLATFORM(MAC) to USE(APPKIT) around forward declaration of
        NSPrintInfo.
        * Shared/SandboxInitializationParameters.h: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        * Shared/TextCheckerState.h: Changed PLATFORM(MAC) to USE(APPKIT).
        * Shared/WebArchive.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
        * Shared/WebArchive.h: Ditto.
        * Shared/WebArchiveResource.cpp: Ditto.
        * Shared/WebArchiveResource.h: Ditto.
        * Shared/WebCoreArgumentCoders.cpp: Ditto.
        (IPC::ArgumentCoder<ResourceResponse>::encode):
        (IPC::ArgumentCoder<ResourceResponse>::decode):
        * Shared/WebCoreArgumentCoders.h: Ditto.
        * Shared/WebEvent.h: Ditto.
        * Shared/WebEventConversion.cpp: Ditto.
        (WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):
        * Shared/WebKit2Initialize.cpp: Ditto.
        (WebKit::InitializeWebKit2):
        * Shared/WebPageCreationParameters.cpp: Ditto.
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h: Ditto.
        * Shared/WebPreferencesStore.h: Ditto.
        * Shared/WebProcessCreationParameters.cpp: Ditto.
        (WebKit::WebProcessCreationParameters::WebProcessCreationParameters):
        (WebKit::WebProcessCreationParameters::encode):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h: Ditto.
        * Shared/WebWheelEvent.cpp: Ditto.
        (WebKit::WebWheelEvent::WebWheelEvent):
        (WebKit::WebWheelEvent::encode):
        (WebKit::WebWheelEvent::decode):
        * Shared/cf/ArgumentCodersCF.cpp: Changed PLATFORM(MAC) to USE(FOUNDATION).
        (IPC::decode):
        * Shared/mac/CommandLineMac.cpp: Removed.
        * Shared/mac/PDFKitImports.h: Removed PLATFORM(MAC)
        * Shared/posix: Added.
        * Shared/posix/CommandLinePOSIX.cpp: Renamed from mac/CommandLineMac.cpp and removed
        comment.
        * WebKit2.xcodeproj/project.pbxproj: Updated for moves and renames.

2014-02-11  Brady Eidson  <beidson@apple.com>

        IDB: storage/indexeddb/mozilla/cursor-update-updates-indexes.html ASSERTs
        <rdar://problem/16034112> and https://bugs.webkit.org/show_bug.cgi?id=128581

        Reviewed by Alexey Proskuryakov.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::getRecordFromBackingStore): Always store keyPath for Index get results.

2014-02-11  Alberto Garcia  <berto@igalia.com>

        O_CLOEXEC in shm_open does not work on FreeBSD
        https://bugs.webkit.org/show_bug.cgi?id=128572

        Reviewed by Darin Adler.

        The O_CLOEXEC is not supported by shm_open() and is also not
        necessary since FD_CLOEXEC is already set by default when the new
        file descriptor is created.

        * Platform/unix/SharedMemoryUnix.cpp:
        (WebKit::SharedMemory::create):

2014-02-10  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r163856.
        http://trac.webkit.org/changeset/163856
        https://bugs.webkit.org/show_bug.cgi?id=128585

        The build fix depends on r163848, which has been reverted
        (Requested by notbenjamin on #webkit).

        * UIProcess/ios/TextCheckerIOS.mm:
        (WebKit::TextChecker::checkTextOfParagraph):
        (WebKit::TextChecker::checkSpellingOfString):
        (WebKit::TextChecker::checkGrammarOfString):

2014-02-10  Alexey Proskuryakov  <ap@apple.com>

        Add hooks for wrapping CryptoKeys in SerializedScriptValue
        https://bugs.webkit.org/show_bug.cgi?id=128567

        Reviewed by Anders Carlsson.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::wrapCryptoKey):
        (WebKit::WebChromeClient::unwrapCryptoKey):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        Dummy implementation, to be filled in later.

2014-02-10  Dan Bernstein  <mitz@apple.com>

        Stop using PLATFORM(MAC) in WebKit2/platform except where it means “OS X but not iOS”
        https://bugs.webkit.org/show_bug.cgi?id=128513

        Reviewed by Dean Jackson.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::waitForSyncReply): Changed PLATFORM(MAC) to PLATFORM(COCOA) around use of
        RunLoop::runForDuration, matching the guard around that function.
        * Platform/Logging.cpp: Deleted unused definition of logLevelString.
        * Platform/Module.cpp:
        (WebKit::Module::Module): Changed PLATFORM(MAC) to USE(CF).
        * Platform/Module.h: Changed PLATFORM(MAC) to USE(CF), since the “Mac” implementation is
        just a CFBundle-based implementation.
        * Platform/PlatformProcessIdentifier.h: Changed PLATFORM(MAC) to PLATFORM(COCOA). Arguably
        this should be OS(DARWIN) && !PLATFORM(EFL) && !PLATFORM(GTK).
        * Platform/cf: Added.
        * Platform/cf/ModuleCF.cpp: Renamed from Platform/mac/ModuleMac.mm. This file did not
        contain any Objective-C code.
        * Platform/foundation: Added.
        * Platform/foundation/LoggingFoundation.mm: Renamed from Platform/mac/Logging.mac.mm.
        * Platform/mac/Logging.mac.mm: Removed.
        * Platform/mac/ModuleMac.mm: Removed.
        * WebKit2.xcodeproj/project.pbxproj: Updated for renames.

2014-02-10  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r163848.
        http://trac.webkit.org/changeset/163848
        https://bugs.webkit.org/show_bug.cgi?id=128580

        Caused a lot of crashes on tests (Requested by ap on #webkit).

        * Shared/APIString.h:
        * UIProcess/TextChecker.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::checkTextOfParagraph):
        (WebKit::WebPageProxy::checkSpellingOfString):
        (WebKit::WebPageProxy::checkGrammarOfString):
        * UIProcess/mac/TextCheckerMac.mm:
        (WebKit::TextChecker::checkTextOfParagraph):
        (WebKit::TextChecker::checkSpellingOfString):
        (WebKit::TextChecker::checkGrammarOfString):

2014-02-10  Brady Eidson  <beidson@apple.com>

        IDB: storage/indexeddb/mozilla/object-store-inline-autoincrement-key-added-on-put.html fails
        <rdar://problem/16033286> and https://bugs.webkit.org/show_bug.cgi?id=128574

        Reviewed by Maciej Stachowiak.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::getRecordFromBackingStore): If there is no value in an object-store get,
          don’t return *any* results.

2014-02-10  Benjamin Poulain  <bpoulain@apple.com>

        Fix the iOS build after r163848

        * UIProcess/ios/TextCheckerIOS.mm:
        (WebKit::TextChecker::checkTextOfParagraph):
        (WebKit::TextChecker::checkSpellingOfString):
        (WebKit::TextChecker::checkGrammarOfString):

2014-02-10  Brady Eidson  <beidson@apple.com>

        IDB: storage/indexeddb/mozilla/indexes.html fails
        <rdar://problem/16031590> and https://bugs.webkit.org/show_bug.cgi?id=128563

        Reviewed by Tim Horton.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::getRecordFromBackingStore): Pass the cursor type to the backing store.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getIndexRecord): If it’s a key-only cursor,
          return only the key result.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::getIndexStatement): Fix index statement selection so ascending, unique cursors sort correctly.

2014-02-10  Anders Carlsson  <andersca@apple.com>

        Remove a couple of deprecatedCharacters() from WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=128569

        Reviewed by Andreas Kling.

        * Shared/APIString.h:
        * UIProcess/TextChecker.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::checkTextOfParagraph):
        (WebKit::WebPageProxy::checkSpellingOfString):
        (WebKit::WebPageProxy::checkGrammarOfString):
        * UIProcess/mac/TextCheckerMac.mm:
        (WebKit::TextChecker::checkTextOfParagraph):
        (WebKit::TextChecker::checkSpellingOfString):
        (WebKit::TextChecker::checkGrammarOfString):

2014-02-10  Filip Pizlo  <fpizlo@apple.com>

        Rename Operations.h to JSCInlines.h
        https://bugs.webkit.org/show_bug.cgi?id=128543

        Rubber stamped by Geoffrey Garen.

        * Shared/linux/WebMemorySamplerLinux.cpp:
        * UIProcess/WebContext.cpp:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/efl/WebProcessMainEfl.cpp:

2014-02-10  Benjamin Poulain  <bpoulain@apple.com>

        [WK2] Add support for image document viewport configuration
        https://bugs.webkit.org/show_bug.cgi?id=128565

        Reviewed by Simon Fraser.

        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::screenToWindow):
        (WebKit::PageClientImpl::windowToScreen):
        Add the implementation for ImageDocument.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didCommitLoad):
        Use the right default settings when dealing with image documents.

2014-02-10  Simon Fraser  <simon.fraser@apple.com>

        Show a debug tile map indicator for UI-side compositing
        https://bugs.webkit.org/show_bug.cgi?id=128553

        Reviewed by Tim Horton.
        
        Implement a tiled scrolling indicator for UI-side compositing.
        
        The indicator is created by making another RemoteLayerTreeHost,
        and decoding the transaction in it a second time to create a cloned
        layer tree. In that clone commit, we modify some layer properties to
        make things easier to see.
        
        The cloned layer tree is hosted in the root layer of the main
        RemoteLayerTreeHost.
        
        RemoteLayerTreeHost was changed to not need a pointer to the WebPageProxy,
        which it only used in the "root layer changed" case; instead, it now just
        returns a bool from updateLayerTree() in that situation.

        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp: Explanatory comment.
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::setExposedRect):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::indicatorLocation):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicatorPosition):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::indicatorScale):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::showDebugIndicator):
        * UIProcess/mac/RemoteLayerTreeHost.h:
        (WebKit::RemoteLayerTreeHost::rootLayer):
        (WebKit::RemoteLayerTreeHost::setIsDebugLayerTreeHost):
        (WebKit::RemoteLayerTreeHost::isDebugLayerTreeHost):
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::RemoteLayerTreeHost):
        (WebKit::RemoteLayerTreeHost::updateLayerTree):
        (WebKit::RemoteLayerTreeHost::createLayer):

2014-02-10  Simon Fraser  <simon.fraser@apple.com>

        Put a delegatesScrolling flag on WebPageProxy so that the UI process knows when scrolling is delegated
        https://bugs.webkit.org/show_bug.cgi?id=128429

        Reviewed by Sam Weinig.
        
        Add delegatesScrolling() which defaults to false, but is set to true for iOS
        by WKContentView.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView initWithFrame:configuration:]):
        (-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::setDelegatesScrolling):
        (WebKit::WebPageProxy::delegatesScrolling):

2014-02-10  Gavin Barraclough  <barraclough@apple.com>

        Remove WKPageSetVisibilityState
        https://bugs.webkit.org/show_bug.cgi?id=128551

        Reviewed by Anders Carlsson.

        Made prerender state automatic. We should move this further
        up into WebCore, but this requires refactoring for the Page
        construction order.

        * Shared/API/c/WKDeprecatedFunctions.cpp:
        (WKPageSetVisibilityState):
            - deprecated.
        * UIProcess/API/C/WKPage.cpp:
            - removed WKPageSetVisibilityState.
        * UIProcess/API/C/WKPage.h:
            - removed WKPageSetVisibilityState.
        * UIProcess/WebPageProxy.cpp:
            - removed setVisibilityStatePrerender.
        * UIProcess/WebPageProxy.h:
            - removed setVisibilityStatePrerender.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
            - removed setVisibilityStatePrerender.
            - When creating a Page, automatically set the prerender state.
        * WebProcess/WebPage/WebPage.h:
            - removed setVisibilityStatePrerender.
        * WebProcess/WebPage/WebPage.messages.in:
            - removed SetVisibilityStatePrerender.

2014-02-10  Brady Eidson  <beidson@apple.com>

        IDB: storage/indexeddb/mozilla/object-store-remove-values.html fails
        <rdar://problem/16029319> and https://bugs.webkit.org/show_bug.cgi?id=128487

        Missed one piece of review feedback before landing.

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::~UniqueIDBDatabaseBackingStoreSQLite):

2014-02-10  Brady Eidson  <beidson@apple.com>

        IDB: storage/indexeddb/mozilla/object-store-remove-values.html fails
        <rdar://problem/16029319> and https://bugs.webkit.org/show_bug.cgi?id=128487

        Reviewed by Tim Horton.

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::disconnectedFromWebProcess):
        (WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata): Update logging.
        (WebKit::DatabaseProcessIDBConnection::deleteDatabase): If deleteDatabase succeeds,
          also disconnect from the UniqueIDBDatabase so it can be cleaned up properly.
        (WebKit::DatabaseProcessIDBConnection::close): New message from the WebProcess to handle
          clean closures.
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::shutdown): Move most of the cleanup to didShutdownBackingStore.
        (WebKit::UniqueIDBDatabase::didShutdownBackingStore): Execute all remaining mainThreadTasks
          (as they represent real results from the backing store thread). 
        (WebKit::UniqueIDBDatabase::deleteDatabase): Add an ASSERT.
        (WebKit::UniqueIDBDatabase::performNextMainThreadTask): Call through to performNextMainThreadTaskWithoutAdoptRef.
        (WebKit::UniqueIDBDatabase::performNextMainThreadTaskWithoutAdoptRef): Execute a task,
          returning true if there are more tasks left to execute.
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::~UniqueIDBDatabaseBackingStoreSQLite): Properly
          handle JSC cleanup.

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::close): Implement this.

2014-02-10  Benjamin Poulain  <bpoulain@apple.com>

        [iOS][WK2] Add empty definition for an API allowing clients to define obscured edges over the scrollview
        https://bugs.webkit.org/show_bug.cgi?id=128396

        Reviewed by Simon Fraser.

        ObscuredInset defines the area of the scrollview unusable for positioning content.
        The API is unused in this patch.

        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _obscuredInset]):
        (-[WKWebView _setObscuredInset:]):
        (-[WKWebView _commitObscuredInset]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/ios/WKViewIOS.mm:
        (-[WKView _obscuredInset]):
        (-[WKView _setObscuredInset:]):
        (-[WKView _commitObscuredInset]):

2014-02-10  Martin Hock  <mhock@apple.com>

        Add API for accessing session ephemerality from a page bundle
        https://bugs.webkit.org/show_bug.cgi?id=128410

        Reviewed by Alexey Proskuryakov.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageIsUsingEphemeralSession):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::isUsingEphemeralSession):
        * WebProcess/WebPage/WebPage.h:

2014-02-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Create the inspector view using the same web process as the inspected page
        https://bugs.webkit.org/show_bug.cgi?id=128539

        Reviewed by Martin Robinson.

        * UIProcess/API/C/gtk/WKView.cpp:
        (WKViewCreate): Pass nullptr as the related page.
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseCreate): Add related page argument and pass it
        to webkitWebViewBaseCreateWebPage() instead of nullptr.
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformCreateInspectorPage): Pass
        m_page as related page to webkitWebViewBaseCreate().

2014-02-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GLIB] Add GUniqueOutPtr and use it instead of GOwnPtr
        https://bugs.webkit.org/show_bug.cgi?id=127554

        Reviewed by Gustavo Noronha Silva.

        Use GUniqueOutPtr instead of GOwnPtr.

        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::getCacheDiskFreeSize):
        * Shared/Downloads/soup/DownloadSoup.cpp:
        (WebKit::DownloadClient::didReceiveResponse):
        (WebKit::DownloadClient::didReceiveData):
        (WebKit::DownloadClient::didFinishLoading):
        * UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
        (processPendingIconsForPageURL):
        (webkit_favicon_database_get_favicon):
        * UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
        (webkitURISchemeRequestReadCallback):
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (gotFaviconCallback):
        * UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp:
        (WebKit::WebInspectorServer::platformResourceForPath):
        * UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
        (WebKit::PluginProcessProxy::scanPlugin):
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::getCacheDiskFreeSize):

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

        [iOS][wk2] WebKit2 View Gestures (Swipe): Forward swipe gesture 
        https://bugs.webkit.org/show_bug.cgi?id=128523
        <rdar://problem/16020378>

        Reviewed by Darin Adler.

        We can't install the gesture recognizer on a view that's going to be
        reparented during the swipe, because the gesture will be cancelled.
        Install the recognizer on the WKView and move the WKView's scrollview
        child around instead.

        * UIProcess/API/ios/WKViewIOS.mm:
        (-[WKView setAllowsBackForwardNavigationGestures:]):
        We'll install the gesture recognizer on the WKView, but swipe the scrollview.

        * UIProcess/ios/ViewGestureControllerIOS.mm:
        (-[WKSwipeTransitionController initWithViewGestureController:gestureRecognizerView:]):
        Clarify that WKSwipeTransitionController gets handed only the view to install the gesture recognizer on.
        (-[WKSwipeTransitionController gestureRecognizerForInteractiveTransition:WithTarget:action:]):
        Use public enum values so we can get rid of one private header.

        (WebKit::ViewGestureController::installSwipeHandler):
        Separate out the gesture recognizer view from the one that gets swiped.

        (WebKit::ViewGestureController::beginSwipeGesture):
        Record a snapshot before beginning the swipe. This is important for the back-then-forward
        swipe case, and matches the behavior of the Mac implementation.

        (WebKit::ViewGestureController::endSwipeGesture):
        * UIProcess/mac/ViewGestureController.h:
        Slight geometry adjustments due to the change in targetted view.

2014-02-10  Filip Pizlo  <fpizlo@apple.com>

        JSC environment variables should override other mechanisms for setting options
        https://bugs.webkit.org/show_bug.cgi?id=128511

        Reviewed by Geoffrey Garen.

        * WebProcess/mac/WebProcessMac.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

2014-02-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add API to create a webview related to another one
        https://bugs.webkit.org/show_bug.cgi?id=128498

        Reviewed by Gustavo Noronha Silva.

        Add webkit_web_view_new_with_related_view() to create a new
        WebView sharing the same web process as the given one.

        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkitWebContextCreatePageForWebView): Use the given related
        WebView to pass a related WebPageProxy to webkitWebViewBaseCreateWebPage().
        * UIProcess/API/gtk/WebKitWebContextPrivate.h:
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewConstructed): Pass the related web view to webkitWebContextCreatePageForWebView().
        (webkitWebViewSetProperty):
        (webkit_web_view_class_init): Add related-view construct-only property.
        (webkit_web_view_new_with_related_view): New public method to
        create a web view with a related one.
        * UIProcess/API/gtk/WebKitWebView.h:
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseCreate): Pass nullptr as related page to webkitWebViewBaseCreateWebPage().
        (webkitWebViewBaseCreateWebPage): Use the given related
        WebPageProxy to initialize the web page configuration.
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol.

2014-02-10  Lukasz Bialek  <l.bialek@samsung.com>

        [EFL] Spelling unit tests should use ecore_main_loop_iterate()
        https://bugs.webkit.org/show_bug.cgi?id=127427

        Reviewed by Gyuyoung Kim.

        r148670 gets rid of EFL's idlers in a favor of timers to load languages.
        ecore_main_loop_iterate() can be used now.

        Add function that loads spellchecking languages and waits for loading
        to be finished:
        * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:
        (EWK2UnitTest::EWK2UnitTestBase::waitForLanguageLoading):
        * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:

        Apply added function to tests that should wait for languages to be loaded:
        * UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:
        (EWK2TextCheckerTest::resetCallbacksExecutionStats):
        (TEST_F):

2014-02-09  Carlos Garnacho  <carlosg@gnome.org>

        [GTK] Implement support touch events
        https://bugs.webkit.org/show_bug.cgi?id=98931

        Reviewed by Carlos Garcia Campos.

        In GTK+ >= 3.4.0, GdkEventTouch is available to inform about multitouch events. Use these to implement
        touch events on this platform. If a touch is left unhandled and is the "pointer emulating" one, mouse
        events will be generated as a fallback.

        * GNUmakefile.list.am:
        * PlatformGTK.cmake:
        * Shared/gtk/NativeWebTouchEventGtk.cpp:
        * Shared/NativeWebTouchEvent.h:
        (WebKit::NativeWebTouchEvent::nativeEvent):
        (WebKit::NativeWebTouchEvent::touchContext): Add GTK+ implementation of NativeWebTouchEvent.
        * Shared/gtk/WebEventFactory.cpp:
        (WebKit::touchPhaseFromEvents):
        (WebKit::WebEventFactory::createWebTouchEvent): Add methods to generate WebTouchEvents out
        of GdkEventTouch events, a GtkTouchContextHelper object is used to hold information about all current
        touches, in order to build information about all individual touchpoints.
        * Shared/gtk/WebEventFactory.h:
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::doneWithTouchEvent): Implement pointer emulation. If a touch event was unhandled
        in DOM and pertains to the touch sequence that emulates pointer events. The event gets transformed to its
        mouse event counterpart and handled by the widget again.
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseRealize): Listen for touch events
        (webkitWebViewBaseTouchEvent):
        (webkit_web_view_base_class_init): Add implementation for the touch_events() handler, this merely
        lets the pageProxy handle the NativeWebTouchEvent we create to wrap the GdkEvent received.

2014-02-09  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r162768.
        http://trac.webkit.org/changeset/162768
        https://bugs.webkit.org/show_bug.cgi?id=128495

        Causes crashes on GTK WK2 in three fast/forms tests.
        (Requested by zdobersek on #webkit).

        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
        (WebKit::WebPopupMenuProxyGtk::showPopupMenu):

2014-02-08  Brady Eidson  <beidson@apple.com>

        IDB: storage/indexeddb/mozilla/object-cursors.html fails
        <rdar://problem/16020585> and https://bugs.webkit.org/show_bug.cgi?id=128479

        Reviewed by Dan Bernstein.

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata): Update the IndexInfo
          table schema to allow for indexes with the same id/name as previous indexes.
          But with different object stores, of course.

2014-02-08  Brady Eidson  <beidson@apple.com>

        IDB: storage/indexeddb/mozilla/index-prev-no-duplicate.html fails
        <rdar://problem/16018918> and https://bugs.webkit.org/show_bug.cgi?id=128444

        Reviewed by Dan Bernstein.

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::getIndexStatement): Return different statements for unique cursors that will
          sort the values in reverse of the cursor direction, matching expected IndexedDB behavior.
        (WebKit::SQLiteIDBCursor::establishStatement):

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::uncheckedPutIndexRecord): Insert the values as
          strings since we need the collation function to be called for proper sorting.

2014-02-08  Ryosuke Niwa  <rniwa@webkit.org>

        Cleanup the interface of FrameSelection
        https://bugs.webkit.org/show_bug.cgi?id=128481

        Reviewed by Andreas Kling.

        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::getFindIndicatorBitmapAndRect):
        (WebKit::FindController::drawRect):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::scaledSnapshotWithOptions):

2014-02-08  Brady Eidson  <beidson@apple.com>

        IDB: storage/indexeddb/mozilla/cursors.html fails
        <rdar://problem/16017998> and https://bugs.webkit.org/show_bug.cgi?id=128423

        Reviewed by Dan Bernstein.

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::SQLiteIDBCursor::internalAdvanceOnce): Store the primary key for object store cursors.
        (WebKit::SQLiteIDBCursor::iterate): We’re not supposed to check for equality to the target key.
          Depending on the direction of the cursor we should check for the next highest or next lowest key.

2014-02-08  Dan Bernstein  <mitz@apple.com>

        Remove client-drawn highlights (-webkit-highlight, WebHTMLHighlighter)
        https://bugs.webkit.org/show_bug.cgi?id=128456

        Reviewed by Anders Carlsson.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp: Removed customHighlightRect and
        paintCustomHighlight.
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2014-02-08  Darin Adler  <darin@apple.com>

        Change TextIterator to use StringView, preparing to wean it from deprecatedCharacters
        https://bugs.webkit.org/show_bug.cgi?id=128233

        Reviewed by Anders Carlsson.

        * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm:
        (-[WKDOMTextIterator currentTextPointer]): Call TextIterator::deprecatedTextIteratorCharacters.

        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::checkSpellingOfString): Use StringView.
        (WebKit::WebEditorClient::checkGrammarOfString): Ditto.
        * WebProcess/WebCoreSupport/WebEditorClient.h: Ditto.

2014-02-08  Piotr Grad  <p.grad@samsung.com>

        [GTK] Build break in WebKitWebViewBase.cpp::webkitWebViewBaseCreateWebPage
        https://bugs.webkit.org/show_bug.cgi?id=128449

        Reviewed by Carlos Garcia Campos.

        Parameter passed to context->createWebPage was inproper.

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseCreateWebPage):

2014-02-08  Dan Bernstein  <mitz@apple.com>

        Font size-related preference values should be CGFloats backed by doubles
        https://bugs.webkit.org/show_bug.cgi?id=128445

        Reviewed by Filip Pizlo.

        * Shared/WebPreferencesStore.h: Changed minimumFontSize, minimumLogicalFontSize,
        defaultFontSize, and defaultFixedFontSize into double-value preferences.
        * UIProcess/API/Cocoa/WKPreferences.h: Changed minimumFontSize into CGFloat.
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences minimumFontSize]): Changed return type.
        (-[WKPreferences setMinimumFontSize:]): Changed parameter type.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences): Changed to use double getters.

2014-02-08  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Make process model names properly meaningful
        https://bugs.webkit.org/show_bug.cgi?id=128389

        Reviewed by Carlos Garcia Campos.

        The name WEBKIT_PROCESS_MODEL_ONE_SECONDARY_PROCESS_PER_WEB_VIEW
        is misleading because there are situations in which web views may
        share the same web process even when multi-process mode is enabled;
        for example when opening a related view and both interact using JS.

        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkit_web_context_set_process_model):
        (webkit_web_context_get_process_model):
        Update names of WebKitProcessModel enum values.
        * UIProcess/API/gtk/WebKitWebContext.h:
        Ditto.

2014-02-08  Piotr Grad  <p.grad@samsung.com>

        [GTK] Build break in WebKitSettings
        https://bugs.webkit.org/show_bug.cgi?id=128446

        Reviewed by Ryosuke Niwa.

        Argument for WebPreferences::create was missing

        * UIProcess/API/gtk/WebKitSettings.cpp:
        (_WebKitSettingsPrivate::_WebKitSettingsPrivate):

2014-02-07  Jinwoo Song  <jinwoo7.song@samsung.com>

        Unreviewed EFL WebKit2 build fix after r163671.

        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::WebView): Use WebPageConfiguration in creating WebPage.

2014-02-07  Gavin Barraclough  <barraclough@apple.com>

        Add better comments to code that boosts the NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=128431

        Rubber stamped by Tim Horton

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.Development.mm:
        (WebKit::XPCServiceEventHandler):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:
        (WebKit::XPCServiceEventHandler):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::connectToService):

2014-02-07  Tim Horton  <timothy_horton@apple.com>

       Build fix.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView initWithFrame:configuration:]):

2014-02-07  Anders Carlsson  <andersca@apple.com>

        Pass the preferences through from the WKWebViewConfiguration object
        https://bugs.webkit.org/show_bug.cgi?id=128430

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKPreferences.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences init]):
        Don't return nil if [super init] returns a valid object.

        (-[WKPreferences minimumFontSize]):
        (-[WKPreferences setMinimumFontSize:]):
        Change this property to be unsigned.

        * UIProcess/API/Cocoa/WKPreferencesInternal.h:
        Use @package.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        Set up a WebKit::WebPageConfiguration and use the new -[WKView initWithFrame:context:configuration:] method.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView initWithFrame:configuration:]):
        Set the preferences.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView initWithFrame:context:configuration:]):
        Add a new initializer that takes a WebContext and a WebPageConfiguration.

        (-[WKView _registerDraggedTypes]):
        This shouldn't be in the private category.
        
        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
        Call the new initializer.

        * UIProcess/API/mac/WKViewInternal.h:

2014-02-07  Tim Horton  <timothy_horton@apple.com>

        Fix the WebKit2 build after r163671.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):

2014-02-07  Gavin Barraclough  <barraclough@apple.com>

        Remove isInitialState flag from Page::setViewState
        https://bugs.webkit.org/show_bug.cgi?id=128428

        Reviewed by Sam Weinig.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
            - don't pass isInitialState to setViewState.
        (WebKit::WebPage::reinitializeWebPage):
            - if the viewState changes this should fire a visibility event.
        (WebKit::WebPage::setViewState):
            - merged with setViewStateInternal.
        * WebProcess/WebPage/WebPage.h:
            - removed setViewStateInternal.

2014-02-07  Simon Fraser  <simon.fraser@apple.com>

        Encode requestedScrollPosition on ScrollingStateScrollingNodes to send to the UI process
        https://bugs.webkit.org/show_bug.cgi?id=128416

        Reviewed by Tim Horton.
        
        Encode and decode requestedScrollPosition() and requestedScrollPositionRepresentsProgrammaticScroll(),
        which can't use the macros because the setter takes both arguments.
        
        The UI process needs this to notice programmatic scrolls.

        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateScrollingNode>::encode):
        (ArgumentCoder<ScrollingStateScrollingNode>::decode):

2014-02-07  Simon Fraser  <simon.fraser@apple.com>

        Add typesafe casts for DrawingAreaProxy classes
        https://bugs.webkit.org/show_bug.cgi?id=128419

        Reviewed by Andreas Kling.
        
        Add typesafe casts, and use one in RemoteScrollingCoordinatorProxy::layerTreeHost().

        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::layerTreeHost):
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::contentsSizeChanged):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:

2014-02-06  Filip Pizlo  <fpizlo@apple.com>

        More FTL build scaffolding
        https://bugs.webkit.org/show_bug.cgi?id=128330

        Reviewed by Geoffrey Garen.

        * Configurations/FeatureDefines.xcconfig:

2014-02-07  Tim Horton  <timothy_horton@apple.com>

        Move allowsBackForwardNavigationGestures back to private because apparently our build systems are broken.

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

2014-02-07  Anders Carlsson  <andersca@apple.com>

        Simplify web page creation
        https://bugs.webkit.org/show_bug.cgi?id=128425

        Reviewed by Andreas Kling.

        Add a WebPageConfiguration class and stick the page group, preferences, session etc there
        instead of adding more and more parameters to the WebPageProxy constructor.

        Make WebContext::createWebPage fill in the missing pieces in the WebPageConfiguration object.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView initWithFrame:configuration:]):
        (-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::createWebPage):
        * UIProcess/WebContext.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::create):
        (WebKit::WebPageProxy::WebPageProxy):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        * UIProcess/WebProcessProxy.h:

2014-02-07  Tim Horton  <timothy_horton@apple.com>

        Build fix. Wrong section of the file.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView setAllowsBackForwardNavigationGestures:]):
        (-[WKView allowsBackForwardNavigationGestures]):

2014-02-07  Benjamin Poulain  <bpoulain@apple.com>

        [WK2] The WebPageProxy's copy of pageScaleFactor is not update when the scale is changed from the viewport configuration
        https://bugs.webkit.org/show_bug.cgi?id=128415

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::viewportConfigurationChanged):
        The scale needs to be updated through WebPage::scalePage().

2014-02-07  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures (Swipe): Support for iOS
        https://bugs.webkit.org/show_bug.cgi?id=128363
        <rdar://problem/15194194>

        Reviewed by Anders Carlsson.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::renderTreeSize):
        (WebKit::RemoteLayerTreeTransaction::setRenderTreeSize):
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::encode):
        (WebKit::RemoteLayerTreeTransaction::decode):
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        Send the render tree size along with remote layer tree commits,
        so that we can act upon it (to hide snapshots) in the UI process
        in sync with layer commits.

        * UIProcess/API/Cocoa/WKViewPrivate.h:
        We want allowsBackForwardNavigationGestures for both platforms.

        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::takeViewSnapshot):
        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView _takeViewSnapshot]):
        * UIProcess/API/ios/WKContentViewInternal.h:
        Plumb snapshotting through to WKViewIOS.

        * UIProcess/API/ios/WKViewIOS.mm:
        (-[WKView setAllowsBackForwardNavigationGestures:]):
        (-[WKView allowsBackForwardNavigationGestures]):
        Create/destroy the gesture controller when we turn on/off back-forward swipe.
        Tell WebPageProxy to save snapshots if swipe is enabled.

        (-[WKView contentView:didCommitLayerTree:]):
        Forward the current transaction's render tree size to ViewGestureController.

        (-[WKView takeViewSnapshotForContentView:]):
        Snapshot the view. This is not the best SPI to use, we should consider
        using one of those which returns an IOSurface and plumbing it through
        to ViewSnapshotStore, but all of our PageClient abstraction makes that annoying.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::recordNavigationSnapshot):
        Record snapshots on iOS as well.

        * UIProcess/ios/ViewGestureControllerIOS.mm: Added.
        (-[WKSwipeInteractiveTransitionDelegate initWithViewGestureController:WebKit::swipingView:]):
        (-[WKSwipeInteractiveTransitionDelegate WebKit::ViewGestureController::directionForTransition:]):
        (-[WKSwipeInteractiveTransitionDelegate startInteractiveTransition:]):
        (-[WKSwipeInteractiveTransitionDelegate shouldBeginInteractiveTransition:]):
        (-[WKSwipeInteractiveTransitionDelegate interactiveTransition:gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKSwipeInteractiveTransitionDelegate interactiveTransition:gestureRecognizer:shouldReceiveTouch:]):
        (-[WKSwipeInteractiveTransitionDelegate gestureRecognizerForInteractiveTransition:WithTarget:action:]):
        (WebKit::ViewGestureController::ViewGestureController):
        (WebKit::ViewGestureController::~ViewGestureController):
        (WebKit::ViewGestureController::installSwipeHandler):
        (WebKit::ViewGestureController::beginSwipeGesture):
        (WebKit::ViewGestureController::canSwipeInDirection):
        (WebKit::ViewGestureController::endSwipeGesture):
        (WebKit::ViewGestureController::setRenderTreeSize):
        (WebKit::ViewGestureController::swipeSnapshotWatchdogTimerFired):
        (WebKit::ViewGestureController::removeSwipeSnapshot):

        * UIProcess/mac/ViewGestureController.h:
        Add iOS-specific methods, and don't include all of the Mac-specific code.
        We can move towards sharing more logic in the future.

        * UIProcess/mac/ViewGestureController.messages.in:
        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::ViewGestureController):
        * UIProcess/mac/ViewSnapshotStore.h:
        * UIProcess/mac/ViewSnapshotStore.mm:
        (WebKit::ViewSnapshotStore::recordSnapshot):
        (WebKit::ViewSnapshotStore::snapshotAndRenderTreeSize):
        Make ViewSnapshotStore build/work without IOSurface.

        * WebKit2.xcodeproj/project.pbxproj:

2014-02-07  Anders Carlsson  <andersca@apple.com>

        Implement more of WKPreferences
        https://bugs.webkit.org/show_bug.cgi?id=128411

        Reviewed by Tim Horton.

        Give WKPreferences an underlying WebKit::WebPreferences object, add a minimumFontSize preference
        and make sure that WKWebView's initializer creates a WKPreferences object if the configuration doesn't specify one.

        * UIProcess/API/Cocoa/WKPreferences.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences init]):
        (-[WKPreferences minimumFontSize]):
        (-[WKPreferences setMinimumFontSize:]):
        * UIProcess/API/Cocoa/WKPreferencesInternal.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        * UIProcess/WebPageProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-07  Brady Eidson  <beidson@apple.com>

        IDB: Some Mozilla cursor mutation tests fail
        <rdar://problem/16011680> and https://bugs.webkit.org/show_bug.cgi?id=128374

        Reviewed by Sam Weinig.

        After a SQLite statement is prepared, stepping it will not pick up any subsequent changes
        to the object store.

        By keeping track of the current record we’re looking at in the object store and being told
        that the object store changed its contents, we can reset the statement to pick up where it
        left off but with the new object store contents.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::putRecordInBackingStore): Tell the backing store to notify
          its cursors that the object store changed its records.
        (WebKit::UniqueIDBDatabase::deleteRangeInBackingStore): Ditto.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::notifyCursorsOfChanges): Tell the transaction
          to notify its cursors that the object store changed its records.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp:
        (WebKit::SQLiteIDBTransaction::notifyCursorsOfChanges): Tell the relevant cursors that their
          object store changed its records.
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.h:

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::SQLiteIDBCursor::SQLiteIDBCursor):
        (WebKit::getIndexStatement): All statements now have a lower and upper range. By default we bind
          IDBKey::Minimum to the lower range and IDBKey::Maximum to the upper range.
        (WebKit::getObjectStoreStatement): Ditto.
        (WebKit::SQLiteIDBCursor::establishStatement):
        (WebKit::SQLiteIDBCursor::createSQLiteStatement):
        (WebKit::SQLiteIDBCursor::objectStoreRecordsChanged): Set the flag indicating the statement
          needs to be reset and rebound.
        (WebKit::SQLiteIDBCursor::resetAndRebindStatement):
        (WebKit::SQLiteIDBCursor::bindArguments): Factored out to be shared between statement prepare()
          and statement reset().
        (WebKit::SQLiteIDBCursor::advance):
        (WebKit::SQLiteIDBCursor::advanceOnce): If the statement needs to be reset, do so before advancing it.
        (WebKit::SQLiteIDBCursor::internalAdvanceOnce): In a few cases, tell advanceOnce that it needs to
          try again because it is on a missing record or is repeating a record.
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.h:
        (WebKit::SQLiteIDBCursor::objectStoreID):

        Make sure Maximum and Minimum keys are never sent across IPC, as that doesn’t make sense:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<IDBKeyData>::encode):
        (IPC::ArgumentCoder<IDBKeyData>::decode):

2014-02-07  Anders Carlsson  <andersca@apple.com>

        Make it possible for each web page to have different preferences
        https://bugs.webkit.org/show_bug.cgi?id=128403

        Reviewed by Tim Horton.

        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesCreate):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::ensureNetworkProcess):
        (WebKit::WebContext::createNewWebProcess):
        * UIProcess/WebIconDatabase.cpp:
        (WebKit::WebIconDatabase::setDatabasePath):
        * UIProcess/WebPageGroup.cpp:
        (WebKit::WebPageGroup::WebPageGroup):
        (WebKit::WebPageGroup::~WebPageGroup):
        (WebKit::WebPageGroup::setPreferences):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::~WebPageProxy):
        (WebKit::WebPageProxy::setPreferences):
        (WebKit::WebPageProxy::preferencesDidChange):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPreferences.cpp:
        (WebKit::WebPreferences::~WebPreferences):
        (WebKit::WebPreferences::addPage):
        (WebKit::WebPreferences::removePage):
        (WebKit::WebPreferences::update):
        (WebKit::WebPreferences::updatePrivateBrowsingValue):
        (WebKit::WebPreferences::anyPagesAreUsingPrivateBrowsing):
        * UIProcess/WebPreferences.h:

2014-02-07  Benjamin Poulain  <bpoulain@apple.com>

        [WK2] Add support for text document viewport configuration
        https://bugs.webkit.org/show_bug.cgi?id=128359

        Reviewed by Simon Fraser.

        When a text document is being loaded, use the plainText viewport parameters.

        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentView.mm:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didCommitLoad):

2014-02-07  Gavin Barraclough  <barraclough@apple.com>

        Should report user input to PageThrottler
        https://bugs.webkit.org/show_bug.cgi?id=128398

        Reviewed by Tim Horton.

        Make sure we wake from AppNap if there is user interaction.

        * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
        (WebKit::NPRuntimeObjectMap::evaluate):
            - reportInterestingEvent() -> pluginDidEvaluate()
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::mouseEvent):
        (WebKit::WebPage::wheelEvent):
        (WebKit::WebPage::keyEvent):
            - call didReceiveUserInput()

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

        WebGL doesn't update with remotely hosted layers
        https://bugs.webkit.org/show_bug.cgi?id=128390

        Reviewed by Simon Fraser.

        PlatformCALayerRemote was intercepting the setNeedsDisplay calls to
        WebGL layers, and thus causing them to not draw. Fix this by adding an
        override in PlatformCALayerRemoteCustom to check if it is a WebGLLayer
        and call setNeedsDisplay directly.

        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:
        (PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):
        (PlatformCALayerRemoteCustom::setNeedsDisplay):

2014-02-07  Benjamin Poulain  <bpoulain@apple.com>

        [WK2] Fitler touch events only based on touch start
        https://bugs.webkit.org/show_bug.cgi?id=128354

        Reviewed by Simon Fraser.

        Touch Events track their target, we should not test the touch regions
        again after a touch sequence starts.

        This patch adds a boolean flag to know if we are sending events to the WebProcess
        (m_isTrackingTouchEvents). The flag is updated every time a touch sequence starts.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::shouldStartTrackingTouchEvents):
        (WebKit::WebPageProxy::handleTouchEvent):
        * UIProcess/WebPageProxy.h:

2014-02-07  Anders Carlsson  <andersca@apple.com>

        Simplify WebPreferences creation inside WebPageGroup
        https://bugs.webkit.org/show_bug.cgi?id=128392

        Reviewed by Andreas Kling.

        Always create a WebPreferences object when creating the web page group.
        This is another step towards letting WebPageProxy manage web preferences.

        * UIProcess/WebPageGroup.cpp:
        (WebKit::pageGroupData):
        (WebKit::WebPageGroup::WebPageGroup):
        (WebKit::WebPageGroup::~WebPageGroup):
        (WebKit::WebPageGroup::setPreferences):
        (WebKit::WebPageGroup::preferences):
        * UIProcess/WebPageGroup.h:

2014-02-07  Gavin Barraclough  <barraclough@apple.com>

        Reenable AppNap
        https://bugs.webkit.org/show_bug.cgi?id=128394

        Reviewed by Tim Horton.

        * Shared/WebPreferencesStore.h:
            - pageVisibilityBasedProcessSuppressionEnabled should default to true.

2014-02-07  Tim Horton  <timothy_horton@apple.com>

        Rename ViewGestureController.mm to ViewGestureControllerMac.mm
        https://bugs.webkit.org/show_bug.cgi?id=128387

        Reviewed by Anders Carlsson.

        As a precursor to having a second nearly completely divergent
        ViewGestureController implementation for iOS.

        * UIProcess/mac/ViewGestureControllerMac.mm: Renamed from Source/WebKit2/UIProcess/mac/ViewGestureController.mm.
        * WebKit2.xcodeproj/project.pbxproj:
        Rename ViewGestureController.mm to ViewGestureControllerMac.mm.
        Unfortunately, since we're not renaming the class, the header
        has to keep its name (and will be the recipient of a giant #if in a later
        patch), because the message receiver generated code will try to import
        ViewGestureController.h (without the Mac suffix).

2014-02-07  Anders Carlsson  <andersca@apple.com>

        Copying a WebPreferences object should be done through a member function
        https://bugs.webkit.org/show_bug.cgi?id=128385

        Reviewed by Andreas Kling.

        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesCreateCopy):
        * UIProcess/WebPreferences.cpp:
        (WebKit::WebPreferences::copy):
        * UIProcess/WebPreferences.h:

2014-02-07  Anders Carlsson  <andersca@apple.com>

        WebPageGroup::setPreferences should set the preferences on all pages in the group
        https://bugs.webkit.org/show_bug.cgi?id=128383

        Reviewed by Alexey Proskuryakov.

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

2014-02-07  Dan Bernstein  <mitz@apple.com>

        [Cocoa] WKRemoteObjectInterface doesn’t support aribtrary argument classes
        https://bugs.webkit.org/show_bug.cgi?id=128368

        Reviewed by Anders Carlsson.

        * Shared/API/Cocoa/WKRemoteObjectInterface.h: Declared new methods.
        * Shared/API/Cocoa/WKRemoteObjectInterface.mm:
        (propertyListClasses): Removed NSNull, which is not really a property list class.
        (classesForSelectorArgument): Added helper function.
        (-[WKRemoteObjectInterface classesForSelector:argumentIndex:]): Added.
        (-[WKRemoteObjectInterface setClasses:forSelector:argumentIndex:]): Added.

2014-02-07  Dan Bernstein  <mitz@apple.com>

        [Cocoa] API::FrameHandle has a generic wrapper
        https://bugs.webkit.org/show_bug.cgi?id=128366

        Reviewed by Anders Carlsson.

        Added WKFrameHandle.

        * Shared/API/Cocoa/WKFrameHandle.h: Added.
        * Shared/API/Cocoa/WKFrameHandle.mm: Added.
        (-[WKFrameHandle dealloc]): Calls the API::FrameHandle destructor.
        (-[WKFrameHandle isEqual:]): Checks for frame ID equality.
        (-[WKFrameHandle hash]): Returns the frame ID.
        (-[WKFrameHandle _frameID]): Ditto.
        (-[WKFrameHandle copyWithZone:]): Retains self.
        (+[WKFrameHandle supportsSecureCoding]): Returns YES.
        (-[WKFrameHandle initWithCoder:]): Decodes the frame ID and constructs an API::FrameHandle
        with it.
        (-[WKFrameHandle encodeWithCoder:]): Encodes the frame ID.
        (-[WKFrameHandle _apiObject]): Returns the wrapped API::FrameHandle.
        * Shared/API/Cocoa/WKFrameHandleInternal.h: Added.
        (WebKit::wrapper): Added. Returns an API::FrameHandle’s wrapper as a WKFrameHandle.

        * Shared/APIFrameHandle.cpp:
        (API::FrameHandle::create): Changed to return a PassRefPtr.
        * Shared/APIFrameHandle.h: Made the constructor public for -[WKFrameHandle initWithCoder:].

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject): Allocate a WKFrameHandle if the object is an API::FrameHandle.

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

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h: Declared handle property.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
        (+[WKWebProcessPlugInFrame lookUpFrameFromHandle:]): Added. Calls WebProcess::webFrame to
        look up a frame with the given handle’s frame ID.
        (-[WKWebProcessPlugInFrame handle]): Added. Returns a new handle with the frame’s ID.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h: Updated #import.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h: Added.

2014-02-07  Dan Bernstein  <mitz@apple.com>

        [Cocoa] WKWebProcessPlugInNodeHandle methods leak and may crash
        https://bugs.webkit.org/show_bug.cgi?id=128365

        Reviewed by Anders Carlsson.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        (+[WKWebProcessPlugInNodeHandle nodeHandleWithJSValue:inContext:]): Null-check the result
        of InjectedBundleNodeHandle::getOrCreate, and autorelease the return value.
        (-[WKWebProcessPlugInNodeHandle htmlIFrameElementContentFrame]): Null-check the result of
        InjectedBundleNodeHandle::htmlIFrameElementContentFrame, and autorelease the return value.

2014-02-06  Brady Eidson  <beidson@apple.com>

        IDB: storage/indexeddb/create-index-with-integer-keys.html fails
        <rdar://problem/16002857> and https://bugs.webkit.org/show_bug.cgi?id=128316

        Reviewed by Geoff Garen.

        Update Vector<char> to Vector<uint8_t> throughout:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::openCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didOpenCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::advanceCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didAdvanceCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::iterateCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didIterateCursorInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        Update Vector<char> to Vector<uint8_t> throughout:
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::SQLiteIDBCursor::advanceOnce):
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.h:
        (WebKit::SQLiteIDBCursor::currentValueBuffer):

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createIndex): Create a script value from the value data, use
          generateIndexKeysForValue to get the index keys, and then write the resulting index records.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::putIndexRecord): Call through to uncheckedPutIndexRecord.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::uncheckedPutIndexRecord): Version of putIndexRecord that doesn’t
          validate the transaction or its mode.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::openCursor): Update Vector<char> to Vector<uint8_t>.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::advanceCursor): Ditto.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::iterateCursor): Ditto.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

2014-02-07  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] WebView should be able to configure to set fixed layout
        https://bugs.webkit.org/show_bug.cgi?id=128300

        Reviewed by Gyuyoung Kim.

        Currently, webview is created by setting fixed layout as true and there is no way to change the setting.
        But some applications may do not want to use fixed layout so I'd like to add ewk APIs to configure to it.

        * UIProcess/API/efl/ewk_view.cpp:
        (EWKViewCreate): Do not set to use fixed layout as default.
        (ewk_view_layout_fixed_set):
        (ewk_view_layout_fixed_get):
        * UIProcess/API/efl/ewk_view.h: Add ewk APIs to set fixed layout.
        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
        (TEST_F):

2014-02-06  Brady Eidson  <beidson@apple.com>

        Unreviewed build fix after r163612.

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:

2014-02-06  Brady Eidson  <beidson@apple.com>

        IDB: Remove the entirely unnecessary "Value Key" concept
        https://bugs.webkit.org/show_bug.cgi?id=128360

        Reviewed by Dan Bernstein.

        All cursor operations were set up to pass a value key parameter around, but it was:
        1 - Entirely unused
        2 - The same thing that the primary key is supposed to be

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::openCursor):
        (WebKit::DatabaseProcessIDBConnection::cursorAdvance):
        (WebKit::DatabaseProcessIDBConnection::cursorIterate):

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::openCursor):
        (WebKit::UniqueIDBDatabase::cursorAdvance):
        (WebKit::UniqueIDBDatabase::cursorIterate):
        (WebKit::UniqueIDBDatabase::openCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didOpenCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::advanceCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didAdvanceCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::iterateCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didIterateCursorInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::SQLiteIDBCursor::advanceOnce): Clean this logic up to not need temporaries,
          and also to save the correct primary key (previously the 'value key')
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.h:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getIndexRecord):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::openCursor):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::advanceCursor):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::iterateCursor):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::didOpenCursor):
        (WebKit::WebIDBServerConnection::didAdvanceCursor):
        (WebKit::WebIDBServerConnection::didIterateCursor):
        (WebKit::WebIDBServerConnection::openCursor):
        (WebKit::WebIDBServerConnection::cursorAdvance):
        (WebKit::WebIDBServerConnection::cursorIterate):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

2014-02-06  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix on GTK build since r163597

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseUpdatePreferences):

2014-02-06  Yongjun Zhang  <yongjun_zhang@apple.com>

        Need a ObjC SPI to get the process identifier for web process.
        https://bugs.webkit.org/show_bug.cgi?id=128356

        Reviewed by Dan Bernstein.

        Add a SPI for WKBrowsingContextController to return the process identifier of web
        process in the current page.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController processIdentifier]):
        * UIProcess/API/Cocoa/WKBrowsingContextControllerPrivate.h:

2014-02-06  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix on EFL build since r163597

        preferences() changed return type from pointer to reference.

        * UIProcess/API/efl/ewk_settings.cpp:
        (EwkSettings::preferences):
        (ewk_settings_fullscreen_enabled_set):
        (ewk_settings_fullscreen_enabled_get):
        (ewk_settings_javascript_enabled_set):
        (ewk_settings_javascript_enabled_get):
        (ewk_settings_loads_images_automatically_set):
        (ewk_settings_loads_images_automatically_get):
        (ewk_settings_developer_extras_enabled_set):
        (ewk_settings_developer_extras_enabled_get):
        (ewk_settings_file_access_from_file_urls_allowed_set):
        (ewk_settings_file_access_from_file_urls_allowed_get):
        (ewk_settings_frame_flattening_enabled_set):
        (ewk_settings_frame_flattening_enabled_get):
        (ewk_settings_dns_prefetching_enabled_set):
        (ewk_settings_dns_prefetching_enabled_get):
        (ewk_settings_encoding_detector_enabled_set):
        (ewk_settings_encoding_detector_enabled_get):
        (ewk_settings_preferred_minimum_contents_width_set):
        (ewk_settings_preferred_minimum_contents_width_get):
        (ewk_settings_offline_web_application_cache_enabled_set):
        (ewk_settings_offline_web_application_cache_enabled_get):
        (ewk_settings_scripts_can_open_windows_set):
        (ewk_settings_scripts_can_open_windows_get):
        (ewk_settings_local_storage_enabled_set):
        (ewk_settings_local_storage_enabled_get):
        (ewk_settings_plugins_enabled_set):
        (ewk_settings_plugins_enabled_get):
        (ewk_settings_default_font_size_set):
        (ewk_settings_default_font_size_get):
        (ewk_settings_private_browsing_enabled_set):
        (ewk_settings_private_browsing_enabled_get):
        (ewk_settings_text_autosizing_enabled_set):
        (ewk_settings_text_autosizing_enabled_get):
        (ewk_settings_spatial_navigation_enabled_set):
        (ewk_settings_spatial_navigation_enabled_get):
        (EwkSettings::setDefaultTextEncodingName):
        * UIProcess/API/efl/ewk_settings_private.h:
        (EwkSettings::EwkSettings):
        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.cpp:
        (WebKit::CoordinatedDrawingAreaProxy::CoordinatedDrawingAreaProxy):
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::WebView):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::preferencesDidChange):

2014-02-06  Anders Carlsson  <andersca@apple.com>

        Crash in MiniBrowser when using Command-W to close a WK2 window
        https://bugs.webkit.org/show_bug.cgi?id=128355
        <rdar://problem/16008531>

        Reviewed by Simon Fraser.

        Don't set the API clients to nullptr when closing the page, just create new empty ones instead.
        Too much code depends on the clients never being null.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close):

2014-02-03  Tim Horton  <timothy_horton@apple.com>

        [wk2] iOS should use accelerated drawing by default, except in the simulator
        https://bugs.webkit.org/show_bug.cgi?id=128140
        <rdar://problem/15974171>

        Reviewed by Anders Carlsson.

        * Shared/WebPreferencesStore.h:
        Turn full-page accelerated drawing on for iOS, except the simulator which doesn't support it.
        Turn canvas accelerated drawing on for all platforms except the iOS simulator, for the same reason.
        The defaults remain the same for non-iOS platforms.

2014-02-06  Jeremy Jones  <jeremyj@apple.com>

        Add support for AVKit fullscreen to WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=128143

        Reviewed by Simon Fraser.

        Add WebVideoFullscreenManager and WebVideoFullscreenManagerProxy that implement 
        WebVideoFullscreenModel and WebVideoFullscreenInterface.

        * DerivedSources.make:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
            initialize member m_videoFullscreenManager
    
        (WebKit::WebPageProxy::videoFullscreenManager):
            add accessor for videoFullscreenManager

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebVideoFullscreenManagerProxy.cpp: Added.
        (WebKit::WebVideoFullscreenManagerProxy::create):
        (WebKit::WebVideoFullscreenManagerProxy::WebVideoFullscreenManagerProxy):
        (WebKit::WebVideoFullscreenManagerProxy::~WebVideoFullscreenManagerProxy):
            add basic creation for object.

        (WebKit::WebVideoFullscreenManagerProxy::setVideoLayerID):
        (WebKit::WebVideoFullscreenManagerProxy::requestExitFullScreen):
        (WebKit::WebVideoFullscreenManagerProxy::play):
        (WebKit::WebVideoFullscreenManagerProxy::pause):
        (WebKit::WebVideoFullscreenManagerProxy::togglePlayState):
        (WebKit::WebVideoFullscreenManagerProxy::seekToTime):
        (WebKit::WebVideoFullscreenManagerProxy::didExitFullscreen):
            implement WebVideoFullscreenModel to send IPC message.

        * UIProcess/WebVideoFullscreenManagerProxy.h: Added.
        * UIProcess/WebVideoFullscreenManagerProxy.messages.in: Added.
            this interface closely matches WebVideoFullscreenInterface

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::supportsFullscreenForNode):
        (WebKit::WebChromeClient::enterFullscreenForNode):
        (WebKit::WebChromeClient::exitFullscreenForNode):
            Forward these requests onto the videoFullscreenManager

        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::videoFullscreenManager):
            accessor for m_videoFullscreenManager

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebVideoFullscreenManager.cpp: Added.
        (WebKit::WebVideoFullscreenManager::create):
        (WebKit::WebVideoFullscreenManager::WebVideoFullscreenManager):
        (WebKit::WebVideoFullscreenManager::~WebVideoFullscreenManager):
            add basic creation for object.

        (WebKit::WebVideoFullscreenManager::supportsFullscreen):
        (WebKit::WebVideoFullscreenManager::enterFullscreenForNode):
        (WebKit::WebVideoFullscreenManager::exitFullscreenForNode):
            implement interface called by WebChromeClient

        (WebKit::WebVideoFullscreenManager::setDuration):
        (WebKit::WebVideoFullscreenManager::setCurrentTime):
        (WebKit::WebVideoFullscreenManager::setRate):
        (WebKit::WebVideoFullscreenManager::setVideoDimensions):
        (WebKit::WebVideoFullscreenManager::setVideoLayer):
        (WebKit::WebVideoFullscreenManager::setVideoLayerID):
        (WebKit::WebVideoFullscreenManager::enterFullscreen):
        (WebKit::WebVideoFullscreenManager::exitFullscreen):
            implement WebVideoFullscreenInterface to send IPC message.

        * WebProcess/WebVideoFullscreenManager.h: Added.
        * WebProcess/WebVideoFullscreenManager.messages.in: Added.
            this interface closely matches WebVideoFullscreenModel

2014-02-06  Anders Carlsson  <andersca@apple.com>

        Begin work on making preferences per page instead of per page group
        https://bugs.webkit.org/show_bug.cgi?id=128349

        Reviewed by Andreas Kling.

        * UIProcess/API/C/WKPageGroup.cpp:
        (WKPageGroupGetPreferences):
        * UIProcess/API/C/mac/WKPagePrivateMac.cpp:
        (WKPageIsURLKnownHSTSHost):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _preferencesDidChange]):
        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::createWebPage):
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorPageGroups::createInspectorPageGroup):
        (WebKit::WebInspectorProxy::attach):
        (WebKit::WebInspectorProxy::detach):
        (WebKit::WebInspectorProxy::setAttachedWindowHeight):
        (WebKit::WebInspectorProxy::setAttachedWindowWidth):
        (WebKit::WebInspectorProxy::createInspectorPage):
        (WebKit::WebInspectorProxy::shouldOpenAttached):
        * UIProcess/WebPageGroup.cpp:
        (WebKit::WebPageGroup::preferences):
        * UIProcess/WebPageGroup.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::create):
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::isProcessSuppressible):
        (WebKit::WebPageProxy::canShowMIMEType):
        (WebKit::WebPageProxy::preferencesDidChange):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::preferences):
        (WebKit::WebPageProxy::setPreferences):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        * UIProcess/mac/ViewGestureController.mm:
        (WebKit::ViewGestureController::beginSwipeGesture):
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::createInspectorWindow):
        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
        (WebKit::WebInspectorProxy::windowFrameDidChange):
        (WebKit::WebInspectorProxy::platformAttach):

2014-02-06  Gavin Barraclough  <barraclough@apple.com>

        Remove ChildProcess::m_activeTasks
        https://bugs.webkit.org/show_bug.cgi?id=128342

        Reviewed by Anders Carlson.

        Currently we funnel a number of different user activities
        to a single UserActivity object, which requires a call down
        from WebCore to WebKit2. Split these out so we can track
        them separately.

        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::PluginProcess):
            - added m_connectionActivity.
        * PluginProcess/PluginProcess.h:
        (WebKit::PluginProcess::connectionActivity):
            - added m_connectionActivity.
        * PluginProcess/WebProcessConnection.cpp:
        (WebKit::WebProcessConnection::didReceiveSyncMessage):
        (WebKit::WebProcessConnection::destroyPlugin):
        (WebKit::WebProcessConnection::createPlugin):
            - use connectionActivity
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::PluginProcess::platformInitializeProcess):
            - use a separate UserActivity for Java.
        * Shared/ActivityAssertion.cpp:
        (WebKit::ActivityAssertion::ActivityAssertion):
        (WebKit::ActivityAssertion::~ActivityAssertion):
        * Shared/ActivityAssertion.h:
            - ChildProcess -> UserActivity
        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::ChildProcess):
        * Shared/ChildProcess.h:
            - remove m_activeTasks.
        (WebKit::ChildProcess::processSuppressionEnabled):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebCoreSupport/WebChromeClient.h:
            - removed [inc|dec]rementActivePageCount

2014-02-06  Pratik Solanki  <psolanki@apple.com>

        [iOS] WebKit2 can't access the GPU
        https://bugs.webkit.org/show_bug.cgi?id=128345
        <rdar://problem/15976084>

        Reviewed by Tim Horton.

        Add an entitlement to allow web process to access GPU.

        * Configurations/WebContent-iOS.entitlements: Added.
        * Configurations/WebContentService.Development.xcconfig:
        * Configurations/WebContentService.xcconfig:

2014-02-06  Pratik Solanki  <psolanki@apple.com>

        [iOS][WebKit2] Remove JoinExistingSession from plist
        https://bugs.webkit.org/show_bug.cgi?id=128318
        <rdar://problem/15971612>

        Reviewed by Tim Horton.

        Remove JoinExistingSession key that is not available on iOS.

        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService.Development/Info-iOS.plist:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-iOS.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService.Development/Info-iOS.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-iOS.plist:

2014-02-06  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _remoteObjectRegistry]):

2014-02-06  Benjamin Poulain  <bpoulain@apple.com>

        Fix the setter definition from r163514.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2014-02-06  Joseph Pecoraro  <pecoraro@apple.com>

        [iOS] Remove duplicate call to RunLoop::initializeMainRunLoop
        https://bugs.webkit.org/show_bug.cgi?id=128328

        Reviewed by Dan Bernstein.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView initWithFrame:configuration:]):
        (-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):

2014-02-06  Joseph Pecoraro  <pecoraro@apple.com>

        [iOS] Set UIProcess pid in WebProcess initialization for Remote Inspector
        https://bugs.webkit.org/show_bug.cgi?id=128338

        Reviewed by Sam Weinig.

        * WebProcess/ios/WebProcessIOS.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

2014-02-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Add Console support to JSContext Inspection
        https://bugs.webkit.org/show_bug.cgi?id=127941

        Reviewed by Geoffrey Garen.

        * WebProcess/WebCoreSupport/WebChromeClient.h:

2014-02-06  Anders Carlsson  <andersca@apple.com>

        Add preferences property to WKWebViewConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=128337

        Reviewed by Sam Weinig.

        Also use RetainPtr for processClass and preferences so we won't leak them.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.h:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration processClass]):
        (-[WKWebViewConfiguration setProcessClass:]):
        (-[WKWebViewConfiguration preferences]):
        (-[WKWebViewConfiguration setPreferences:]):

2014-02-06  Anders Carlsson  <andersca@apple.com>

        Add a remoteObjectRegistry property to WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=128331

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView resizeSubviewsWithOldSize:]):
        (-[WKWebView _remoteObjectRegistry]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2014-02-06  Anders Carlsson  <andersca@apple.com>

        Add WKNavigationResponse class
        https://bugs.webkit.org/show_bug.cgi?id=128326

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKFrameInfo.mm:
        (-[WKFrameInfo initWithWebFrameProxy:WebKit::]):
        * UIProcess/API/Cocoa/WKFrameInfoInternal.h:
        * UIProcess/API/Cocoa/WKNavigationResponse.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.mm.
        * UIProcess/API/Cocoa/WKNavigationResponse.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.mm.
        (-[WKNavigationResponse frame]):
        (-[WKNavigationResponse setFrame:]):
        (-[WKNavigationResponse response]):
        (-[WKNavigationResponse setResponse:]):
        * UIProcess/API/Cocoa/WKNavigationResponseInternal.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfoInternal.h.
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::PolicyClient::decidePolicyForNavigationAction):
        (WebKit::NavigationState::PolicyClient::decidePolicyForResponse):
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-06  Anders Carlsson  <andersca@apple.com>

        Replace ’ with ' to silence the check-for-webkit-framework-include-consistency script.

        * UIProcess/API/Cocoa/WKWebView.h:

2014-02-06  Anders Carlsson  <andersca@apple.com>

        Add backForwardList property to WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=128320

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView backForwardList]):

2014-02-06  Anders Carlsson  <andersca@apple.com>

        The source frame request is not the same thing as the original request
        https://bugs.webkit.org/show_bug.cgi?id=128317

        Reviewed by Andreas Kling.

        Grab the source frame URL From the WebFrameProxy object.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::frameInfoFromWebFrameProxy):
        (WebKit::NavigationState::PolicyClient::decidePolicyForNavigationAction):

2014-02-06  Brady Eidson  <beidson@apple.com>

        IDB: storage/indexeddb/mozilla/clear.html fails
        <rdar://problem/15997155> and https://bugs.webkit.org/show_bug.cgi?id=128282

        Reviewed by David Kilzer.

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::openTransaction): Update logging.

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp:
        (WebKit::SQLiteIDBTransaction::commit): Update ASSERT.

2014-02-06  Csaba Osztrogonác  <ossy@webkit.org>

        Fix the build after r163516 for !ENABLE(ASYNC_SCROLLING) platforms
        https://bugs.webkit.org/show_bug.cgi?id=128299

        Reviewed by Antti Koivisto.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::handleTouchEvent):

2014-02-05  Gavin Barraclough  <barraclough@apple.com>

        Change Page, FocusController to use ViewState
        https://bugs.webkit.org/show_bug.cgi?id=126533

        Reviewed by Tim Horton.

        These classes currently maintain a set of separate fields to represent the view state;
        combine these into a single field, and allow WebPage to send the combined update rather
        than individual changes.

        Maintain existing interface for WebKit1 clients.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
            - Combined separate calls to Page::setViewState.
        (WebKit::WebPage::updateIsInWindow):
            - Simplied from setIsInWindow.
        (WebKit::WebPage::setViewState):
            - Combined separate calls to Page::setViewState.
        * WebProcess/WebPage/WebPage.h:
            - Declare updateIsInWindow.

2014-02-05  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK build fix after r163480.

        * GNUmakefile.list.am: Removing the WebUIClient build targets.

2014-02-05  Simon Fraser  <simon.fraser@apple.com>

        Transfer the non-fast-scrollable region to the UI process for iOS
        https://bugs.webkit.org/show_bug.cgi?id=128293

        Reviewed by Benjamin Poulain.

        Two main changes to support sending the non-fast scrollable region
        to the UI process for iOS:
        
        1. Add ScrollingCoordinator::frameViewNonFastScrollableRegionChanged(),
        which is called when we've updated the touch event region (this can happen
        independenly of layout). When called we just scheduled a scrolling tree
        commit with the new region.
        
        2. Avoid thinking that we have a new root node with every remote scrolling
        transaction. This was a side-effect of reconstructing the scrolling state
        tree in the UI process, and caused us to try to grab a nonFastScrollableRegion
        from a node which never had one set.
        
        Now that we have the non-fast scrollable region in the UI process, we can
        use it to avoid sending sync messages to the web process.
        
        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateScrollingNode>::encode): Encode hasNewRootNode.
        (ArgumentCoder<ScrollingStateScrollingNode>::decode): Decode hasNewRootNode and set it on
        the state tree.
        (WebKit::RemoteScrollingCoordinatorTransaction::encode): Encode the nonFastScrollableRegion
        now that we can encode Regions.
        (WebKit::RemoteScrollingCoordinatorTransaction::decode): Decode the nonFastScrollableRegion
        now that we can decode Regions.
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::isPointInNonFastScrollableRegion):
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::handleTouchEvent): If we're not in the non-fast scrollable region,
        don't both sending touch events to the web process.

2014-02-05  Benjamin Poulain  <benjamin@webkit.org>

        [iOS] Synchronize the WKContentView and UIScrollView updates with the tiles being commited
        https://bugs.webkit.org/show_bug.cgi?id=127886

        Reviewed by Simon Fraser.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::mainFrameContentsSize):
        (WebKit::RemoteLayerTreeTransaction::setMainFrameContentsSize):
        (WebKit::RemoteLayerTreeTransaction::pageScaleFactor):
        (WebKit::RemoteLayerTreeTransaction::setPageScaleFactor):
        (WebKit::RemoteLayerTreeTransaction::minimumScaleFactor):
        (WebKit::RemoteLayerTreeTransaction::setMinimumScaleFactor):
        (WebKit::RemoteLayerTreeTransaction::maximumScaleFactor):
        (WebKit::RemoteLayerTreeTransaction::setMaximumScaleFactor):
        (WebKit::RemoteLayerTreeTransaction::allowsUserScaling):
        (WebKit::RemoteLayerTreeTransaction::setAllowsUserScaling):
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::encode):
        (WebKit::RemoteLayerTreeTransaction::decode):
        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didCommitLayerTree):
        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView setMinimumLayoutSize:]):
        (-[WKContentView willStartUserTriggeredZoom]):
        (-[WKContentView _didCommitLayerTree:WebKit::]):
        * UIProcess/API/ios/WKContentViewInternal.h:
        * UIProcess/API/ios/WKViewIOS.mm:
        (-[WKView contentViewDidCommitLoadForMainFrame:]):
        (-[WKView contentView:didCommitLayerTree:WebKit::]):
        (-[WKView scrollViewWillBeginZooming:withView:]):
        (-[WKView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
        (-[WKView _frameOrBoundsChanged]):
        (-[WKView minimumLayoutSizeOverride]):
        (-[WKView setMinimumLayoutSizeOverride:]):
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setVirtualViewportMinimumLayoutSize):
        (WebKit::WebPageProxy::didCommitLayerTree):
        (WebKit::WebPageProxy::willStartUserTriggeredZooming):
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::contentsSizeChanged):
        (WebKit::WebChromeClient::dispatchViewportPropertiesDidChange):
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::didReceiveMobileDocType):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::mainFrameDidLayout):
        (WebKit::WebPage::didCommitLoad):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::viewportPropertiesDidChange):
        (WebKit::WebPage::minimumPageScaleFactor):
        (WebKit::WebPage::maximumPageScaleFactor):
        (WebKit::WebPage::allowsUserScaling):
        (WebKit::WebPage::setVirtualViewportMinimumLayoutSize):
        (WebKit::WebPage::virtualViewportChanged):
        (WebKit::WebPage::willStartUserTriggeredZooming):
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):

2014-02-05  Benjamin Poulain  <bpoulain@apple.com>

        [WK2] Add the minimumLayoutSizeOverride SPI to WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=128295

        Reviewed by Anders Carlsson.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView minimumLayoutSizeOverride]):
        (-[WKWebView setMinimumLayoutSizeOverride:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Added.
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-05  Simon Fraser  <simon.fraser@apple.com>

        Support encoding and decoding of Regions
        https://bugs.webkit.org/show_bug.cgi?id=128284

        Reviewed by Anders Carlsson.
        
        Support encoding and decoding of Region, and its internal
        struct Region::Span.
        
        ArgumentCoders had to be taught about how to encode
        Vectors with inline capacity.

        * Platform/IPC/ArgumentCoders.h:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<Region::Span>::encode):
        (IPC::ArgumentCoder<Region::Span>::decode):
        (IPC::ArgumentCoder<Region>::encode):
        (IPC::ArgumentCoder<Region>::decode):
        * Shared/WebCoreArgumentCoders.h:

2014-02-05  Anders Carlsson  <andersca@apple.com>

        Add -[WKNavigationAction request]
        https://bugs.webkit.org/show_bug.cgi?id=128288

        Reviewed by Andreas Kling.

        * UIProcess/API/Cocoa/WKNavigationAction.h:
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction request]):
        (-[WKNavigationAction setRequest:]):
        * UIProcess/API/Cocoa/WKNavigationActionInternal.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::PolicyClient::decidePolicyForNavigationAction):

2014-02-05  Sam Weinig  <sam@webkit.org>

        [WebKit2, FTL] Add user default to enable the FTL
        https://bugs.webkit.org/show_bug.cgi?id=128281

        Reviewed by Geoffrey Garen.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::WebProcessCreationParameters):
        (WebKit::WebProcessCreationParameters::encode):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/mac/WebContextMac.mm:
        (WebKit::registerUserDefaultsIfNeeded):
        (WebKit::WebContext::platformInitializeWebProcess):
        * WebProcess/mac/WebProcessMac.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):
        Pipe through the default.

2014-02-05  Anders Carlsson  <andersca@apple.com>

        Add sourceFrame to WKNavigationAction
        https://bugs.webkit.org/show_bug.cgi?id=128280

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKFrameInfo.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionInternal.h.
        * UIProcess/API/Cocoa/WKFrameInfo.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionInternal.h.
        (-[WKFrameInfo request]):
        (-[WKFrameInfo setRequest:]):
        * UIProcess/API/Cocoa/WKFrameInfoInternal.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionInternal.h.
        * UIProcess/API/Cocoa/WKNavigationAction.h:
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction sourceFrame]):
        (-[WKNavigationAction setSourceFrame:]):
        * UIProcess/API/Cocoa/WKNavigationActionInternal.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::frameInfoFromWebFrameProxy):
        (WebKit::NavigationState::PolicyClient::decidePolicyForNavigationAction):
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-05  Enrica Casucci  <enrica@apple.com>

        WK2: Tap highlight is positioned incorrectly in iframes.
        https://bugs.webkit.org/show_bug.cgi?id=128277
        <rdar://problem/15975993>

        Reviewed by Benjamin Poulain.

        We need to convert the quad to root view coordinates
        before returning it to the UIProcess for drawing the highlight.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::tapHighlightAtPosition):

2014-02-05  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix attempt on EFL build after r163480

        * CMakeLists.txt: Removed WebUIClient.cpp from source lists.

2014-02-05  Oliver Hunt  <oliver@apple.com>

        Change custom getter signature to make the base reference an object pointer
        https://bugs.webkit.org/show_bug.cgi?id=128279

        Reviewed by Geoffrey Garen.

        Update everything to the new calling convention.

        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
        (WebKit::JSNPObject::propertyGetter):
        (WebKit::JSNPObject::methodGetter):
        * WebProcess/Plugins/Netscape/JSNPObject.h:

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

        Remove ENABLE(DIRECTORY_UPLOAD).
        <https://webkit.org/b/128275>

        Rubber-stamped by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<FileChooserSettings>::encode):
        (IPC::ArgumentCoder<FileChooserSettings>::decode):

2014-02-05  Brady Eidson  <beidson@apple.com>

        IDB: storage/indexeddb/mozilla/autoincrement-indexes.html fails
        https://bugs.webkit.org/show_bug.cgi?id=128257

        Reviewed by Sam Weinig.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::putRecordInBackingStore): Write the correct key to the index if it was auto generated.
        (WebKit::UniqueIDBDatabase::getRecordFromBackingStore): If this is an auto increment object store with
          a non-empty key path, save the key path to the get result.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata): The IndexRecord schema shouldn’t
          have key uniqueness.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::putRecord): Take IDBKeyData instead of IDBKey.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getIndexRecord): Fill in the primary key from the fetch.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

2014-02-05  Anders Carlsson  <andersca@apple.com>

        Get rid of WebUIClient
        https://bugs.webkit.org/show_bug.cgi?id=128274

        Reviewed by Andreas Kling.

        * UIProcess/API/APIUIClient.h: Added.
        (API::UIClient::~UIClient):
        (API::UIClient::createNewPage):
        (API::UIClient::showPage):
        (API::UIClient::close):
        (API::UIClient::takeFocus):
        (API::UIClient::focus):
        (API::UIClient::unfocus):
        (API::UIClient::runJavaScriptAlert):
        (API::UIClient::runJavaScriptConfirm):
        (API::UIClient::runJavaScriptPrompt):
        (API::UIClient::setStatusText):
        (API::UIClient::mouseDidMoveOverElement):
        (API::UIClient::unavailablePluginButtonClicked):
        (API::UIClient::implementsDidNotHandleKeyEvent):
        (API::UIClient::didNotHandleKeyEvent):
        (API::UIClient::implementsDidNotHandleWheelEvent):
        (API::UIClient::didNotHandleWheelEvent):
        (API::UIClient::toolbarsAreVisible):
        (API::UIClient::setToolbarsAreVisible):
        (API::UIClient::menuBarIsVisible):
        (API::UIClient::setMenuBarIsVisible):
        (API::UIClient::statusBarIsVisible):
        (API::UIClient::setStatusBarIsVisible):
        (API::UIClient::isResizable):
        (API::UIClient::setIsResizable):
        (API::UIClient::setWindowFrame):
        (API::UIClient::windowFrame):
        (API::UIClient::canRunBeforeUnloadConfirmPanel):
        (API::UIClient::runBeforeUnloadConfirmPanel):
        (API::UIClient::didDraw):
        (API::UIClient::pageDidScroll):
        (API::UIClient::exceededDatabaseQuota):
        (API::UIClient::runOpenPanel):
        (API::UIClient::decidePolicyForGeolocationPermissionRequest):
        (API::UIClient::decidePolicyForNotificationPermissionRequest):
        (API::UIClient::headerHeight):
        (API::UIClient::footerHeight):
        (API::UIClient::drawHeader):
        (API::UIClient::drawFooter):
        (API::UIClient::printFrame):
        (API::UIClient::canRunModal):
        (API::UIClient::runModal):
        (API::UIClient::saveDataToFileInDownloadsFolder):
        (API::UIClient::shouldInterruptJavaScript):
        (API::UIClient::showColorPicker):
        (API::UIClient::hideColorPicker):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::setUIClient):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::createNewPage):
        (WebKit::WebPageProxy::showPage):
        (WebKit::WebPageProxy::closePage):
        (WebKit::WebPageProxy::runJavaScriptAlert):
        (WebKit::WebPageProxy::runJavaScriptConfirm):
        (WebKit::WebPageProxy::runJavaScriptPrompt):
        (WebKit::WebPageProxy::shouldInterruptJavaScript):
        (WebKit::WebPageProxy::setStatusText):
        (WebKit::WebPageProxy::mouseDidMoveOverElement):
        (WebKit::WebPageProxy::unavailablePluginButtonClicked):
        (WebKit::WebPageProxy::setToolbarsAreVisible):
        (WebKit::WebPageProxy::getToolbarsAreVisible):
        (WebKit::WebPageProxy::setMenuBarIsVisible):
        (WebKit::WebPageProxy::getMenuBarIsVisible):
        (WebKit::WebPageProxy::setStatusBarIsVisible):
        (WebKit::WebPageProxy::getStatusBarIsVisible):
        (WebKit::WebPageProxy::setIsResizable):
        (WebKit::WebPageProxy::getIsResizable):
        (WebKit::WebPageProxy::setWindowFrame):
        (WebKit::WebPageProxy::getWindowFrame):
        (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
        (WebKit::WebPageProxy::pageDidScroll):
        (WebKit::WebPageProxy::runOpenPanel):
        (WebKit::WebPageProxy::printFrame):
        (WebKit::WebPageProxy::didDraw):
        (WebKit::WebPageProxy::setFocus):
        (WebKit::WebPageProxy::takeFocus):
        (WebKit::WebPageProxy::didReceiveEvent):
        (WebKit::WebPageProxy::creationParameters):
        (WebKit::WebPageProxy::exceededDatabaseQuota):
        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
        (WebKit::WebPageProxy::requestNotificationPermission):
        (WebKit::WebPageProxy::headerHeight):
        (WebKit::WebPageProxy::footerHeight):
        (WebKit::WebPageProxy::drawHeader):
        (WebKit::WebPageProxy::drawFooter):
        (WebKit::WebPageProxy::runModal):
        (WebKit::WebPageProxy::setCanRunModal):
        (WebKit::WebPageProxy::saveDataToFileInDownloadsFolder):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebUIClient.cpp: Removed.
        * UIProcess/WebUIClient.h: Removed.
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::windowAndViewFramesChanged):
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-05  Enrica Casucci  <enrica@apple.com>

        WK2: Caret, selections and autocorrection bubbles are incorrectly positioned when inside an iframe.
        https://bugs.webkit.org/show_bug.cgi?id=128264
        <rdar://problem/15986954>

        Reviewed by Simon Fraser.

        Everywhere we return rectangles to the UIProcess, we need to convert them
        to root view coordinates. Also, we should allow hit testing to go into child
        frames.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::editorState):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::updateSelectionWithTouches):
        (WebKit::WebPage::convertSelectionRectsToRootView):
        (WebKit::WebPage::requestAutocorrectionData):
        (WebKit::WebPage::getPositionInformation):

2014-02-05  Dan Bernstein  <mitz@apple.com>

        [Cocoa] WKRemoteObjectInterface fails with doubles, NSNull, and empty NSStrings
        https://bugs.webkit.org/show_bug.cgi?id=128268

        Reviewed by Anders Carlsson.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (-[WKRemoteObjectDecoder decodeBytesForKey:returnedLength:]): When returning nullptr, also
        set the length out parameter to 0.

        * Shared/API/Cocoa/WKRemoteObjectInterface.mm:
        (propertyListClasses): Added NSNull.

        * Shared/UserData.cpp:
        (WebKit::UserData::encode): Encode the Double type.

2014-02-05  Jer Noble  <jer.noble@apple.com>

        [WK2] [iOS] No video on embedded YouTube
        https://bugs.webkit.org/show_bug.cgi?id=128237

        Reviewed by Sam Weinig.

        We were using the wrong #if directive; PLUGIN_PROXY_FOR_VIDEO is an ENABLE not a USE.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2014-02-05  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Expose more WKWebProcessPlugInFrame properties
        https://bugs.webkit.org/show_bug.cgi?id=128240

        Reviewed by Anders Carlsson.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h: Declared new properties.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
        (-[WKWebProcessPlugInFrame URL]): Added.
        (-[WKWebProcessPlugInFrame childFrames]): Added.
        (-[WKWebProcessPlugInFrame containsAnyFormElements]): Added.

2014-02-05  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Notify WKWebProcessPlugInLoadDelegate when a frame is removed from the frame hierarchy
        https://bugs.webkit.org/show_bug.cgi?id=128239

        Reviewed by Anders Carlsson.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h: Declared new
        delegate method.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (didRemoveFrameFromHierarchy): Implemented this page loader client callback by calling the
        load delegate.
        (setUpPageLoaderClient): Set the above callback in the client structure.

2014-02-05  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(SVG) guards
        https://bugs.webkit.org/show_bug.cgi?id=127991

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig:
        * GNUmakefile.am:

2014-02-05  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Replace DEFINE_STATIC_LOCAL with NeverDestroyed<T> in GTK WK1 and WK2 code
        https://bugs.webkit.org/show_bug.cgi?id=128195

        Reviewed by Martin Robinson.

        Use static NeverDestroyed<T> variables instead of the DEFINE_STATIC_LOCAL macro.

        * UIProcess/API/gtk/WebKitBackForwardListItem.cpp:
        (historyItemsMap):
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (downloadsMap):
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::pluginWindowMap):
        * WebProcess/gtk/WebGtkExtensionManager.cpp:
        (WebKit::WebGtkExtensionManager::shared):
        * WebProcess/gtk/WebGtkExtensionManager.h:

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

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

        Rubber-stamped by Antti Koivisto.

        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        * WebProcess/InjectedBundle/InjectedBundle.h:

2014-02-04  Tim Horton  <timothy_horton@apple.com>

        [iOS][wk2] Make development builds of WebKit work on device
        https://bugs.webkit.org/show_bug.cgi?id=128230

        Reviewed by Anders Carlsson.

        * Configurations/NetworkService.Development.xcconfig:
        * Configurations/WebContentService.Development.xcconfig:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService.Development/Info-OSX.plist: Copied from Source/WebKit2/NetworkProcess/EntryPoint/mac/XPCService/NetworkService.Development/Info.plist.
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService.Development/Info-iOS.plist: Copied from Source/WebKit2/NetworkProcess/EntryPoint/mac/XPCService/NetworkService.Development/Info.plist.
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService.Development/Info-OSX.plist: Renamed from Source/WebKit2/WebProcess/EntryPoint/mac/XPCService/WebContentService.Development/Info.plist.
        * WebProcess/EntryPoint/mac/XPCService/WebContentService.Development/Info-iOS.plist: Renamed from Source/WebKit2/NetworkProcess/EntryPoint/mac/XPCService/NetworkService.Development/Info.plist.
        The Development services should match the non-Development version's behavior
        of having separate plists for OS X and iOS.

2014-02-04  Brady Eidson  <beidson@apple.com>

        IDB: indexeddb/mozilla/add-twice-failure.html fails
        <rdar://problem/15982569> and https://bugs.webkit.org/show_bug.cgi?id=128208

        Reviewed by Tim Horton.

        Note that besides making indexeddb/mozilla/add-twice-failure.html pass this also makes some other tests
        pass and also improves the failure modes of others.

        A full accounting of which tests pass is coming soon.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::putRecordInBackingStore): After checking for existence of the key and before
          adding the record, remove any previous record. (Defined by the spec, found exploring this test).

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::keyExistsInObjectStore): Implement this.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteRecord): Add a form to be used as mentioned above in
          UniqueIDBDatabase::putRecordInBackingStore.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getKeyRecordFromObjectStore): CAST the key argument properly.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getKeyRangeRecordFromObjectStore): Ditto.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

2014-02-04  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Expose more WKWebProcessPlugInNodeHandle properties
        https://bugs.webkit.org/show_bug.cgi?id=128219

        Reviewed by Anders Carlsson.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h: Declared new
        properties.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        (-[WKWebProcessPlugInNodeHandle elementBounds]): Added.
        (-[WKWebProcessPlugInNodeHandle HTMLInputElementIsAutoFilled]): Added.
        (-[WKWebProcessPlugInNodeHandle setHTMLInputElementIsAutoFilled:]): Added.
        (-[WKWebProcessPlugInNodeHandle HTMLInputELementIsUserEdited]): Added.
        (-[WKWebProcessPlugInNodeHandle HTMLTextAreaELementIsUserEdited]): Added.
        (-[WKWebProcessPlugInNodeHandle HTMLTableCellElementCellAbove]): Added.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h: Rolled
        Internal category into the class extension.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h: Declared
        -clearWrappers.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:
        (-[WKWebProcessPlugInScriptWorld clearWrappers]): Added. Calls through to clearWrappers().
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h: Rolled
        Internal category into the class extension.

2014-02-04  Alexey Proskuryakov  <ap@apple.com>

        webKitCookieStorageCopyRequestHeaderFieldsForURL builds an empty Cookie header when there are no cookies
        https://bugs.webkit.org/show_bug.cgi?id=128201

        Reviewed by Sam Weinig.

        * Shared/mac/CookieStorageShim.mm: (WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL):
        Return null when NetworkProcess provided a null string, don't build a header dictionary
        with an empty Cookie value.

2014-02-04  Anders Carlsson  <andersca@apple.com>

        Add a WKNavigationAction object
        https://bugs.webkit.org/show_bug.cgi?id=128212

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKNavigationAction.h: Added.
        (NS_ENUM):
        * UIProcess/API/Cocoa/WKNavigationAction.mm: Added.
        * UIProcess/API/Cocoa/WKNavigationActionInternal.h: Added.
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::toWKNavigationType):
        (WebKit::NavigationState::PolicyClient::decidePolicyForNavigationAction):
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-04  Anders Carlsson  <andersca@apple.com>

        Add back/forward related methods to WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=128209

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView canGoBack]):
        (-[WKWebView canGoForward]):
        (-[WKWebView goBack]):
        (-[WKWebView goForward]):

2014-02-04  Enrica Casucci  <enrica@apple.com>

        WK: Cannot select text inside clickable containers.
        https://bugs.webkit.org/show_bug.cgi?id=128197
        <rdar://problem/15970890>

        Reviewed by Simon Fraser.

        When retrieving position information, we first try to
        find the node responding to click events because we want
        to know whether we are on a link or an image to show
        the appropriate action sheet.
        We could still have a node responding to click events if
        for example we have a DIV with a click handler but that
        doesn't require any special handling and we still need to
        perform regular hit testing.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getPositionInformation):

2014-02-04  Enrica Casucci  <enrica@apple.com>

        WK2: Selection callout bar does not scroll with the selection.
        https://bugs.webkit.org/show_bug.cgi?id=128142
        <rdar://problem/15970812>

        Reviewed by Benjamin Poulain.

        Adding notifications to WKContentView to all the delegates
        for scrolling and zooming to let WKInteractionView about it.
        This allows the interaction assistants to hide the callout
        while scrolling or zooming and to fade it in again at the end.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView scrollViewWillBeginZooming:withView:]):
        (-[WKWebView scrollViewWillBeginDragging:]):
        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView didFinishScrollTo:]):
        (-[WKContentView willStartZoomOrScroll]):
        (-[WKContentView didZoomToScale:]):
        * UIProcess/API/ios/WKInteractionView.h:
        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKInteractionView _willStartScrollingOrZooming]):
        (-[WKInteractionView _didEndScrollingOrZooming]):
        * UIProcess/API/ios/WKViewIOS.mm:
        (-[WKView scrollViewWillBeginZooming:withView:]):
        (-[WKView scrollViewWillBeginDragging:]):

2014-02-04  Tamas Gergely  <tgergely.u-szeged@partner.samsung.com>

        Code cleanup: remove leftover occurrence of ENABLE(GESTURE_EVENTS)
        https://bugs.webkit.org/show_bug.cgi?id=128180

        Reviewed by Csaba Osztrogonác.

        Removed last occurrence of ENABLE(GESTURE_EVENTS).

        * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:
        (WebKit::NetscapePlugin::platformHandleMouseEvent):

2014-02-04  Eunmi Lee  <eunmi15.lee@samsung.com>

        [EFL][WK2] ewk_context needs to route InjectedBundle messages correctly.
        https://bugs.webkit.org/show_bug.cgi?id=90772

        Reviewed by Gyuyoung Kim.

        Add APIs to post message to injected bundle and register callback to
        get message from injected bundle. When callback is registered,
        WKContextInjectedBundleClient is set to get messages from injected bundle.

        * UIProcess/API/efl/ewk_context.cpp:
        (EwkContext::EwkContext):
        (toEwkContext):
        (EwkContext::didReceiveMessageFromInjectedBundle):
        (EwkContext::didReceiveSynchronousMessageFromInjectedBundle):
        (EwkContext::setMessageFromInjectedBundleCallback): register callback to get message from injected bundle.
        (EwkContext::processReceivedMessageFromInjectedBundle): process message from injected bundle.
        (ewk_context_message_post_to_injected_bundle):
        (ewk_context_message_from_injected_bundle_callback_set):
        * UIProcess/API/efl/ewk_context.h:
        * UIProcess/API/efl/ewk_context_private.h:

2014-02-04  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] Stop using COMPILE_ASSERT_MATCHING_ENUM macros in EFL WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=128156

        Reviewed by Anders Carlsson.

        * UIProcess/API/efl/EwkView.cpp:
        (EwkView::requestPopupMenu):
        * UIProcess/API/efl/ewk_context.cpp:
        (toWKCacheModel):
        (EwkContext::setCacheModel):
        * UIProcess/API/efl/ewk_cookie_manager.cpp:
        (ewk_cookie_manager_persistent_storage_set):
        (ewk_cookie_manager_accept_policy_set):
        * UIProcess/API/efl/ewk_navigation_policy_decision.cpp:
        (toEwkNavigationType):
        (toEventMouseButton):
        (toEventModifierKeys):
        (EwkNavigationPolicyDecision::EwkNavigationPolicyDecision):
        (EwkNavigationPolicyDecision::navigationType):
        (EwkNavigationPolicyDecision::mouseButton):
        (EwkNavigationPolicyDecision::modifiers):
        (ewk_navigation_policy_decision_download):
        * UIProcess/API/efl/ewk_navigation_policy_decision_private.h:
        (EwkNavigationPolicyDecision::create):
        * UIProcess/API/efl/ewk_popup_menu_item.cpp:
        (EwkPopupMenuItem::type):
        (EwkPopupMenuItem::textDirection):
        * UIProcess/API/efl/ewk_private.h:
        * UIProcess/API/efl/ewk_view.cpp:
        (toWKFindOptions):
        (ewk_view_text_find):
        (toWKPaginationMode):
        (toEwkPaginationMode):
        (ewk_view_pagination_mode_set):
        (ewk_view_pagination_mode_get):

2014-02-03  Brady Eidson  <beidson@apple.com>

        Unreviewed build fix after http://trac.webkit.org/changeset/163364

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::getObjectStoreStatement): Args need the new names, and I need to save the file before committing.  :(

2014-02-03  Brady Eidson  <beidson@apple.com>

        IDB: HTML5 Rocks Indexed Database demo fails
        https://bugs.webkit.org/show_bug.cgi?id=128157

        Reviewed by Anders Carlsson (Provisional review by Jon Lee)

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::getIndexStatement): Only increment the open/closed counters if those keys exist.
          Fix order of statements for no lower key.
        (WebKit::getObjectStoreStatement): Only increment the open/closed counters if those keys exist.

2014-02-03  Jae Hyun Park  <jae.park@company100.net>

        Use nullptr in ShareableBitmap
        https://bugs.webkit.org/show_bug.cgi?id=128153

        Reviewed by Gyuyoung Kim.

        * Shared/ShareableBitmap.cpp:
        (WebKit::ShareableBitmap::create):
        (WebKit::ShareableBitmap::createShareable):

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

        Add title and hasOnlySecureContent properties to WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=128152

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView title]):
        (-[WKWebView hasOnlySecureContent]):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::didChangeIsLoading):
        (WebKit::NavigationState::willChangeTitle):
        (WebKit::NavigationState::didChangeTitle):
        (WebKit::NavigationState::willChangeHasOnlySecureContent):
        (WebKit::NavigationState::didChangeHasOnlySecureContent):

2014-02-03  Sam Weinig  <sam@webkit.org>

        Fix spelling.

        * Shared/WebPreferencesStore.h:

2014-02-03  Sam Weinig  <sam@webkit.org>

        [WebKit2, iOS] Enable frame flattening by default on iOS
        <rdar://problem/15975983>
        https://bugs.webkit.org/show_bug.cgi?id=128151

        Reviewed by Tim Horton.

        * Shared/WebPreferencesStore.h:

2014-02-03  Tim Horton  <timothy_horton@apple.com>

        [iOS][wk2] Temporarily disable accelerated drawing for canvas
        https://bugs.webkit.org/show_bug.cgi?id=128147

        Reviewed by Simon Fraser.

        * Shared/WebPreferencesStore.h:
        Temporarily disable accelerated canvas for WebKit2 on iOS.

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

        Add loading property to WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=128144

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView isLoading]):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::willChangeIsLoading):
        (WebKit::NavigationState::didChangeIsLoading):

2014-02-03  Simon Fraser  <simon.fraser@apple.com>

        Allow WK2 to read from NSUserDefaults when it has no prefs identifier
        https://bugs.webkit.org/show_bug.cgi?id=128124

        Reviewed by Sam Weinig.
        
        WebPreferences would never read from NSUserDefaults if no identifier
        had been set, but this prevents us from reading useful debugging prefs.
        
        Fix to read pref names using a "WebKit2" prefix when no identifier
        is set.

        * UIProcess/mac/WebPreferencesMac.mm:
        (WebKit::makeKey):
        (WebKit::WebPreferences::platformInitializeStore):

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

        [WK2] Remove the VideoPluginProxyEnabled preference in WK2
        https://bugs.webkit.org/show_bug.cgi?id=128128

        Reviewed by Brady Eidson.

        The plugin proxy is iOS WK1 only, and has no meaning in WebKit2. Just set the preference to false.

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

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

        Feature flag for shape-inside
        https://bugs.webkit.org/show_bug.cgi?id=128001

        Reviewed by Simon Fraser.

        Add CSS_SHAPE_INSIDE flag.

        * Configurations/FeatureDefines.xcconfig:

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

        NavigationState should be a PageLoadState::Observer
        https://bugs.webkit.org/show_bug.cgi?id=128130

        Reviewed by Darin Adler.

        This will make it easier to provide load related KVO properties on WKWebView.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h: Added.
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationState):
        (WebKit::NavigationState::~NavigationState):
        (WebKit::NavigationState::willChangeIsLoading):
        (WebKit::NavigationState::didChangeIsLoading):
        (WebKit::NavigationState::willChangeTitle):
        (WebKit::NavigationState::didChangeTitle):
        (WebKit::NavigationState::willChangeActiveURL):
        (WebKit::NavigationState::didChangeActiveURL):
        (WebKit::NavigationState::willChangeHasOnlySecureContent):
        (WebKit::NavigationState::didChangeHasOnlySecureContent):
        (WebKit::NavigationState::willChangeEstimatedProgress):
        (WebKit::NavigationState::didChangeEstimatedProgress):
        * WebKit2.xcodeproj/project.pbxproj:

2014-02-03  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures: Two smart magnifications in a row without moving the mouse should zoom out
        https://bugs.webkit.org/show_bug.cgi?id=128108
        <rdar://problem/15914539>

        Reviewed by Darin Adler.

        * UIProcess/mac/ViewGestureController.h:
        * UIProcess/mac/ViewGestureController.mm:
        (WebKit::ViewGestureController::ViewGestureController):
        (WebKit::ViewGestureController::handleMagnificationGesture):
        Clear the bit that tells us that we should do "smart" things (because the
        last gesture was also a smart magnification gesture) when the user manually pinch-magnifies.

        (WebKit::ViewGestureController::didCollectGeometryForSmartMagnificationGesture):
        Zoom out if the mouse hasn't moved since the last pinch-magnification gesture.


2014-02-03  Darin Adler  <darin@apple.com>

        Try to fix 32-bit Mac build.

        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        (WebKit::convertStringToKeyCodes): Use deprecatedCharacters.

2014-02-03  Krzysztof Czech  <k.czech@samsung.com>

        Build fix after r163289.

        Unreviewed EFL build fix.

        Use deprecatedCharacters.

        * UIProcess/efl/TextCheckerEfl.cpp:
        (WebKit::TextChecker::requestCheckingOfString):

2014-02-03  Dan Bernstein  <mitz@apple.com>

        Build fix.

        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        (WebKit::convertStringToKeyCodes):

2014-02-03  Alberto Garcia  <berto@igalia.com>

        Fix wrong mix of fcntl commands and flags
        https://bugs.webkit.org/show_bug.cgi?id=127842

        Reviewed by Darin Adler.

        We are mixing the commands to set file descriptor and file status
        flags in a couple of fcntl() calls. FD_CLOEXEC must be set using
        F_SETFD, and the access mode flags (O_RDONLY, O_WRONLY, O_RDWR)
        with F_SETFL.

        This combines patches by Guillem Jover and Sergio Correia.

        * Platform/IPC/unix/ConnectionUnix.cpp:
        (IPC::readBytesFromSocket):
        * Platform/unix/SharedMemoryUnix.cpp:
        (WebKit::SharedMemory::createHandle):

2014-02-02  Brady Eidson  <beidson@apple.com>

        IDB: Cannot open new databases with the default version
        https://bugs.webkit.org/show_bug.cgi?id=128096

        Reviewed by Tim Horton.

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata): New databases should
          have the magic "no version set" version.

2014-02-02  Sanghyup Lee  <sh53.lee@samsung.com>

        [EFL][WK2] Add a logic for checking multi touch in GestureRecognizer::noGesture
        https://bugs.webkit.org/show_bug.cgi?id=127675

        Reviewed by Gyuyoung Kim.

        When processing TouchStart event in GestureRecognizer::noGesture(), we should
        check the number of touch points to distinguish if the gesture is single tap
        or pinch zoom. Current logic only considers the event as single tap.

        * UIProcess/API/efl/GestureRecognizer.cpp:
        (WebKit::GestureRecognizer::noGesture):

2014-02-02  Enrica Casucci  <enrica@apple.com>

        WK2: Selection is non editable content is not cleared when navigating to a different page.
        https://bugs.webkit.org/show_bug.cgi?id=128084
        <rdar://problem/15966166>

        Reviewed by Dan Bernstein.

        When resigning first responder, we need to cleanup the selection.

        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKInteractionView resignFirstResponder]):

2014-02-02  Enrica Casucci  <enrica@apple.com>

        WK2: Cannot focus a second field in a page after the first has been focused.
        https://bugs.webkit.org/show_bug.cgi?id=128055
        <rdar://problem/15943652>

        Reviewed by Simon Fraser.

        When handling singleTap, we always need to send
        a click to WebKit when we are already interacting with text.
        Also, when we stop assisting the node, we should not call
        resign responder, since that will trigger another unwanted blur.

        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKInteractionView _singleTapRecognized:]):
        (-[WKInteractionView _stopAssistingNode]):

2014-02-02  Brady Eidson  <beidson@apple.com>

        IDB: Support IDBFactory.deleteDatabase()
        https://bugs.webkit.org/show_bug.cgi?id=128060

        Reviewed by Filip Pizlo and Maciej Stachowiak (filesystem parts also Tim Hatcher and Simon Fraser)

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::deleteDatabase):

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::calculateAbsoluteDatabaseFilename): Central place to
          calculate the database filename.
        (WebKit::UniqueIDBDatabase::unregisterConnection):
        (WebKit::UniqueIDBDatabase::shutdown): Pass shutdown type along. 
        (WebKit::UniqueIDBDatabase::shutdownBackingStore): If this is a delete shutdown, delete the DB.
        (WebKit::UniqueIDBDatabase::didShutdownBackingStore): 
        (WebKit::UniqueIDBDatabase::deleteDatabase):
        (WebKit::UniqueIDBDatabase::postMainThreadTask): All some tasks to bypass the no-more-request restriction.
        (WebKit::UniqueIDBDatabase::postDatabaseTask): Ditto.
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::~UniqueIDBDatabaseBackingStoreSQLite):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getOrEstablishMetadata): Use 
          calculateAbsoluteDatabaseFilename from UniqueIDBDatabase.

        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::WebIDBFactoryBackend::open): Update logging channel.
        (WebKit::WebIDBFactoryBackend::deleteDatabase): Implement.
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

        * Shared/WebCrossThreadCopier.h:

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

        More characters -> deprecatedCharacters (based on more EWS complaints)
        https://bugs.webkit.org/show_bug.cgi?id=128063

        Reviewed by Anders Carlsson.

        * Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:
        (WebKit::truncateToSingleLine): Use deprecatedCharacters.

2014-02-01  Enrica Casucci  <enrica@apple.com>

        Speculative OSX build fix.

        Excluding WKActionSheet.mm and WKActionSheetAssistant.mm.

        * Configurations/WebKit2.xcconfig:

2014-02-01  Enrica Casucci  <enrica@apple.com>

        Add support for ActionSheets in WK2 for iOS.
        https://bugs.webkit.org/show_bug.cgi?id=127586
        <rdar://problem/15283667>

        Reviewed by Benjamin Poulain.

        This patch adds the default support for Action Sheets
        in WK2 for iOS. WKActionSheet is the implementation of the
        sheet itself that inherits from UIActionSheet and handles
        the repositioning of the sheet after rotation for iPad.
        WKActionSheetAssistant is the controller class that implements
        the delegate methods, controls the lifetime of the action sheet
        object and performs the actions.
        We have 3 different types of sheets:
           - link sheet, displayed when the target element is a link
           - image sheet, when the target element is an image
           - data detector sheet when the target is an element
             recognized by the data detectors library.
        Both link and image sheet have a set of default buttons, whereas
        datadetector sheet in only populated by custom actions provided
        by data detectors.
        The link sheet provides the following default actions:
            - open, navigates to the URL
            - copy, copies the URL to the pasteboard
            - add to reading list
        The image sheet provides the following actions depending on whether
        the image is contained inside an anchor element or not.
        If the image is NOT inside a link the following actions are provided:
           - copy, copies the image to the pasteboard
           - save image, saves the image in the photo library
        Instead, if the image is inside an link:
           - open, navigates to the URL spcified by the link
           - copy, copies the link URL to the pasteboard
            - save image, saves the image in the photo library
            - add to reading list, adds the link URL to reading list.

        * Shared/InteractionInformationAtPosition.cpp:
        (WebKit::InteractionInformationAtPosition::encode):
        (WebKit::InteractionInformationAtPosition::decode):
        * Shared/InteractionInformationAtPosition.h:
        * Shared/ios/WKGestureTypes.h:
        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::saveImageToLibrary):
        * UIProcess/API/ios/WKActionSheet.h: Added.
        * UIProcess/API/ios/WKActionSheet.mm: Added.
        (-[WKActionSheet initWithView:]):
        (-[WKActionSheet dealloc]):
        (-[WKActionSheet presentSheet]):
        (-[WKActionSheet presentSheetFromRect:]):
        (-[WKActionSheet doneWithSheet]):
        (-[WKActionSheet willRotate]):
        (-[WKActionSheet updateSheetPosition]):
        (-[WKActionSheet didRotate]):
        (-[WKElementActionInfo initWithInfo:location:title:rect:]):
        (-[WKElementActionInfo dealloc]):
        (-[WKElementAction initWithTitle:actionHandler:type:]):
        (-[WKElementAction dealloc]):
        (+[WKElementAction customElementActionWithTitle:actionHandler:]):
        (copyElement):
        (saveImage):
        (addToReadingList):
        (+[WKElementAction standardElementActionWithType:customTitle:]):
        (+[WKElementAction standardElementActionWithType:]):
        (-[WKElementAction runActionWithElementInfo:view:]):
        * UIProcess/API/ios/WKActionSheetAssistant.h: Added.
        * UIProcess/API/ios/WKActionSheetAssistant.mm: Added.
        (-[WKActionSheetAssistant initWithView:]):
        (-[WKActionSheetAssistant dealloc]):
        (-[WKActionSheetAssistant setPage:WebKit::]):
        (-[WKActionSheetAssistant superviewForSheet]):
        (-[WKActionSheetAssistant _presentationRectForSheetGivenPoint:inHostView:]):
        (-[WKActionSheetAssistant hostViewForSheet]):
        (-[WKActionSheetAssistant initialPresentationRectInHostViewForSheet]):
        (-[WKActionSheetAssistant presentationRectInHostViewForSheet]):
        (-[WKActionSheetAssistant presentSheet]):
        (-[WKActionSheetAssistant actionSheet:clickedButtonAtIndex:]):
        (-[WKActionSheetAssistant updateSheetPosition]):
        (-[WKActionSheetAssistant _createSheetWithElementActions:showLinkTitle:]):
        (-[WKActionSheetAssistant showImageSheet]):
        (-[WKActionSheetAssistant showLinkSheet]):
        (-[WKActionSheetAssistant showDataDetectorsSheet]):
        (-[WKActionSheetAssistant cleanupSheet]):
        * UIProcess/API/ios/WKInteractionView.h:
        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKInteractionView initWithFrame:]):
        (-[WKInteractionView dealloc]):
        (-[WKInteractionView setPage:WebKit::]):
        (-[WKInteractionView _showImageSheet]):
        (-[WKInteractionView _showLinkSheet]):
        (-[WKInteractionView _showDataDetectorsSheet]):
        (-[WKInteractionView _actionForLongPress]):
        (-[WKInteractionView _updatePositionInformation]):
        (-[WKInteractionView _longPressRecognized:]):
        (-[WKInteractionView _positionInformationDidChange:]):
        (-[WKInteractionView _performAction:]):
        (-[WKInteractionView _updateAccessory]):
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::startInteractionWithElementAtPosition):
        (WebKit::WebPageProxy::stopInteraction):
        (WebKit::WebPageProxy::performActionOnElement):
        (WebKit::WebPageProxy::saveImageToLibrary):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::containingLinkElement):
        (WebKit::WebPage::getPositionInformation):
        (WebKit::WebPage::startInteractionWithElementAtPosition):
        (WebKit::WebPage::stopInteraction):
        (WebKit::WebPage::performActionOnElement):

2014-02-01  Brady Eidson  <beidson@apple.com>

        IDB: Implement IDBCursor.delete()
        <rdar://problem/15944203> and https://bugs.webkit.org/show_bug.cgi?id=127882

        Reviewed by Sam Weinig.

        IDBCursor.delete() actually relies on deleteRange(), which was implemented earlier.
        So the only thing keeping it from working was a "Cursors iterate past their end" bug,
        causing the delete transaction to be aborted.

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::SQLiteIDBCursor::advanceOnce): When the cursor does the final iteration,
          clear the previous values to indicate completion.

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp:
        (WebKit::SQLiteIDBTransaction::clearCursors): Noticed this opportunistic cleanup to
          iterate over unique_ptr<>s with an auto& instead of an auto.

2014-01-31  Enrica Casucci  <enrica@apple.com>

        Text interaction assistant is not deleted when dismissing the keyboard on iPad.
        https://bugs.webkit.org/show_bug.cgi?id=128034
        <rdar://problem/15915695>

        Reviewed by Dan Bernstein.

        In iPhone mode, tapping on 'Done' in the accessory view
        calls the delegate accessoryDone where we correctly blur
        the assisted node and tear down the text interaction assistant.
        The code path for the keyboard in iPad mode is different,
        all we get is resignFirstResponder.
        The fix is just to move the blurring in resignFirstResponder
        and it works for both iPhone and iPad.

        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKInteractionView resignFirstResponder]):
        (-[WKInteractionView accessoryDone]):

2014-02-01  Brady Eidson  <beidson@apple.com>

        IDB: Implement IDBObjectStore.delete()
        https://bugs.webkit.org/show_bug.cgi?id=127880

        Reviewed by Sam Weinig.

        Implementing IDBObjectStore.delete() involves filling in the already-stubbed deleteRange() method.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::deleteRangeInBackingStore): Call through to the backing store.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteRange): Call deleteRecord on each key represented
          by the passed-in keyRange. This involves collecting each key using a cursor.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteRecord): Delete an individual record from the
          object store and all associated indexes.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        Teach the SQLiteIDBCursor to remember if it ended in an error condition:
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::SQLiteIDBCursor::SQLiteIDBCursor):
        (WebKit::SQLiteIDBCursor::advanceOnce):
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.h:
        (WebKit::SQLiteIDBCursor::didError):

2014-02-01  Brady Eidson  <beidson@apple.com>

        IDB: Index reading
        <rdar://problem/15899973> and https://bugs.webkit.org/show_bug.cgi?id=127868

        Reviewed by Jer Noble.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::getRecordFromBackingStore):

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getIndexRecord): Using an index cursor, read a value.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

2014-02-01  Brady Eidson  <beidson@apple.com>

        IDB: Index cursor complete advance() and iterate() support
        <rdar://problem/15941916> and https://bugs.webkit.org/show_bug.cgi?id=127870

        Reviewed by Dan Bernstein.

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::SQLiteIDBCursor::advanceOnce): Look up the found record value from the
          object store records based on the key we found from the index.

2014-01-31  Anders Carlsson  <andersca@apple.com>

        Add webView:didFailNavigation:withError: delegate method
        https://bugs.webkit.org/show_bug.cgi?id=128022

        Reviewed by Darin Adler.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didFailLoadWithErrorForFrame):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/Cocoa/WKNavigationDelegate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::LoaderClient::didFailLoadWithErrorForFrame):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFailLoadForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidFailLoad):

2014-01-31  Brady Eidson  <beidson@apple.com>

        IDB: Handle "nextunique" and "prevunique" cursors, and handle "advance()" correctly
        https://bugs.webkit.org/show_bug.cgi?id=128040

        Reviewed by Jer Noble.

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::SQLiteIDBCursor::advance): Entry point for advancing by a number of steps,
          calls either advanceUnique or advanceOnce the appropriate number of times.
        (WebKit::SQLiteIDBCursor::advanceUnique): Call advanceOnce until the key has changed.
        (WebKit::SQLiteIDBCursor::advanceOnce):
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.h:

2014-01-31  Brady Eidson  <beidson@apple.com>

        IDB: Index cursors use wrong deserialization for the retrieved value
        https://bugs.webkit.org/show_bug.cgi?id=128035

        Reviewed by Dan Bernstein.

        Most of this is updating everything related to the cursor operation callbacks 
        to support returning an IDBKey value in addition to a SharedBuffer value.

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::openCursor):
        (WebKit::DatabaseProcessIDBConnection::cursorAdvance):
        (WebKit::DatabaseProcessIDBConnection::cursorIterate):

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::openCursor):
        (WebKit::UniqueIDBDatabase::cursorAdvance):
        (WebKit::UniqueIDBDatabase::cursorIterate):
        (WebKit::UniqueIDBDatabase::openCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didOpenCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::advanceCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didAdvanceCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::iterateCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didIterateCursorInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::openCursor):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::advanceCursor):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::iterateCursor):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::SQLiteIDBCursor::advance):
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.h:
        (WebKit::SQLiteIDBCursor::currentValueBuffer):
        (WebKit::SQLiteIDBCursor::currentValueKey):

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::didOpenCursor):
        (WebKit::WebIDBServerConnection::didAdvanceCursor):
        (WebKit::WebIDBServerConnection::didIterateCursor):
        (WebKit::WebIDBServerConnection::openCursor):
        (WebKit::WebIDBServerConnection::cursorAdvance):
        (WebKit::WebIDBServerConnection::cursorIterate):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

2014-01-31  Ryosuke Niwa  <rniwa@webkit.org>

        Remove inline member functions of FrameSelection that access m_selection
        https://bugs.webkit.org/show_bug.cgi?id=127986

        Reviewed by Enrica Casucci.

        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::collapseSelection):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::editorState):
        (WebKit::WebPage::confirmComposition):
        (WebKit::WebPage::setComposition):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::setComposition):
        (WebKit::WebPage::updateSelectionWithTouches):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::setComposition):
        (WebKit::WebPage::getAttributedSubstringFromRange):

2014-01-31  Simon Fraser  <simon.fraser@apple.com>

        Pass the viewport rect and scroll origin independently into the scrolling tree, and make things floats
        https://bugs.webkit.org/show_bug.cgi?id=128032

        Reviewed by Tim Horton.

        Pass the viewport rect and scroll offset independently into the ScrollingTree
        via the ScrollingStateScrollingNode, since on iOS the scroll offset doesn't
        always correspond to the viewport rect.
        
        Make the viewport rect and the scroll origin be float-based, since on
        Retina screens and with zooming these can both be non-integral.

        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateScrollingNode>::encode):
        (ArgumentCoder<ScrollingStateScrollingNode>::decode):
        * UIProcess/Scrolling/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::scrollingTreeNodeDidScroll):
        * UIProcess/Scrolling/RemoteScrollingTree.h:

2014-01-31  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures: Crash when pinch-zooming on a page that is just a frameset
        https://bugs.webkit.org/show_bug.cgi?id=127591
        <rdar://problem/15898349>

        Reviewed by Simon Fraser.

        When we have no shadow layer, we crash in TiledCoreAnimationDrawingArea::adjustTransientZoom.
        Fix this null deref; also, we always want a shadow layer, even if the page cannot be scrolled,
        because it can be revealed by pinching out.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::adjustTransientZoom):
        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
        (WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):

2014-01-31  Oliver Hunt  <oliver@apple.com>

        Rollout r163195 and related patches

        * CMakeLists.txt:

2014-01-31  Tim Horton  <timothy_horton@apple.com>

        [wk2] PlatformCALayerRemoteCustom doesn't work on iOS
        https://bugs.webkit.org/show_bug.cgi?id=128025
        <rdar://problem/15950271>

        Reviewed by Simon Fraser.

        * Platform/mac/LayerHostingContext.h:
        * Platform/mac/LayerHostingContext.mm:
        (WebKit::LayerHostingContext::createForPort):
        (WebKit::LayerHostingContext::createForExternalHostingProcess):
        Use the new macro name (in a lot of places).
        Rename LayerHostingContext::createForWindowServer() to createForExternalHostingProcess().
        Don't use WKCAContextMakeRemoteForWindowServer on iOS, just use the CAContext
        SPI directly. We don't want our CAContext to be hit tested because it's purely
        presentational.

        * UIProcess/API/ios/PageClientImplIOS.h:
        iOS always hosts layers in an external process.

        * PluginProcess/mac/PluginControllerProxyMac.mm:
        (WebKit::PluginControllerProxy::updateLayerHostingContext):
        * Shared/LayerTreeContext.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::viewLayerHostingMode):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::viewLayerHostingMode):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::viewStateDidChange):
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::NetscapePlugin):
        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        (WebKit::NetscapePlugin::compositingRenderServerPort):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::setLayerHostingMode):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:
        (PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::updateLayerHostingContext):
        Use enum class for LayerHostingMode and rename the members to InProcess and OutOfProcess.

2014-01-31  Martin Hock  <mhock@apple.com>

        Add session support to WebPlatformStrategies
        https://bugs.webkit.org/show_bug.cgi?id=127926

        Reviewed by Alexey Proskuryakov.

        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        * Shared/SessionTracker.cpp:
        (WebKit::storageSessionToID):
        (WebKit::SessionTracker::session):
        (WebKit::SessionTracker::sessionID):
        (WebKit::SessionTracker::setSession):
        (WebKit::SessionTracker::destroySession):
        * Shared/SessionTracker.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setSession):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::cookiesForDOM):
        (WebKit::WebPlatformStrategies::setCookiesFromDOM):
        (WebKit::WebPlatformStrategies::cookiesEnabled):
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebKit::WebPlatformStrategies::getRawCookies):
        (WebKit::WebPlatformStrategies::deleteCookie):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setSessionID): Ensure the storage session exists.
        * WebProcess/WebPage/WebPage.h:

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

        Expose creation and modification times for LocalStorage
        https://bugs.webkit.org/show_bug.cgi?id=128018

        Reviewed by Anders Carlsson.

        * UIProcess/API/C/WKKeyValueStorageManager.cpp:
        (WKKeyValueStorageManagerGetOriginKey):
        (WKKeyValueStorageManagerGetCreationTimeKey):
        (WKKeyValueStorageManagerGetModificationTimeKey):
        (WKKeyValueStorageManagerGetStorageDetailsByOrigin):
        * UIProcess/API/C/WKKeyValueStorageManager.h:
        * UIProcess/Storage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::origins):
        (WebKit::LocalStorageDatabaseTracker::details):
        * UIProcess/Storage/LocalStorageDatabaseTracker.h:
        * UIProcess/Storage/StorageManager.cpp:
        (WebKit::StorageManager::getStorageDetailsByOrigin):
        (WebKit::StorageManager::getStorageDetailsByOriginInternal):
        * UIProcess/Storage/StorageManager.h:
        * UIProcess/WebKeyValueStorageManager.cpp:
        (WebKit::WebKeyValueStorageManager::originKey):
        (WebKit::WebKeyValueStorageManager::creationTimeKey):
        (WebKit::WebKeyValueStorageManager::modificationTimeKey):
        (WebKit::didGetKeyValueStorageOrigins):
        (WebKit::didGetStorageDetailsByOrigin):
        (WebKit::WebKeyValueStorageManager::getStorageDetailsByOrigin):
        * UIProcess/WebKeyValueStorageManager.h:
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-31  Anders Carlsson  <andersca@apple.com>

        Add webView:didReceiveServerRedirectForProvisionalNavigation:
        https://bugs.webkit.org/show_bug.cgi?id=128016

        Reviewed by Dan Bernstein.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/Cocoa/WKNavigationDelegate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2014-01-31  Brady Eidson  <beidson@apple.com>

        IDB: Index cursor preliminary support
        https://bugs.webkit.org/show_bug.cgi?id=127869

        Reviewed by Sam Weinig.

        This gets index cursors running and - for some situations - returning results.

        Bug 127870 will make them fully functional.

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::getIndexStatement): Using the key and sorting parameters, find the appropriate SQL
          statement to run an index cursor.
        (WebKit::getObjectStoreStatement): Same, but for object store cursors.
        (WebKit::SQLiteIDBCursor::establishStatement): Depending on the type of cursor, choose the
          correct SQL query and id to use.
        (WebKit::SQLiteIDBCursor::createSQLiteStatement): With the passed in SQL and id, handle both
          index and object store cursors.
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.h:

2014-01-29  Oliver Hunt  <oliver@apple.com>

        Make it possible to implement JS builtins in JS
        https://bugs.webkit.org/show_bug.cgi?id=127887

        Reviewed by Michael Saboff.

        CMake updates

        * CMakeLists.txt:

2014-01-31  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures (Swipe): Crashes swiping around a Google Docs spreadsheet
        https://bugs.webkit.org/show_bug.cgi?id=128013
        <rdar://problem/15959481>

        Reviewed by Anders Carlsson.

        * UIProcess/mac/ViewGestureController.mm:
        (WebKit::ViewGestureController::wheelEventWasNotHandledByWebCore):
        We should never (currently) start a swipe from a non-begin-phase wheel event.
        We already check this in handleScrollWheelEvent, but can still get
        non-begin-phase events in wheelEventWasNotHandled.

        We only start "pending" swipes with Begin events, so we should never make them
        non-pending with anything but a Begin event (we'll get it when it bubbles back up,
        unhandled, from WebCore). In addition, AppKit throws an exception when we try
        to start a swipe from end-phase events.

2014-01-31  Brady Eidson  <beidson@apple.com>

        IDB: openCursor() needs to prime the cursor with first position values
        https://bugs.webkit.org/show_bug.cgi?id=128008

        Reviewed by Alexey Proskuryakov.

        Change openCursor() messaging to pass back the initial keys/values
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::didOpenCursor):
        (WebKit::WebIDBServerConnection::openCursor):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::openCursor):

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::openCursor):
        (WebKit::UniqueIDBDatabase::cursorAdvance): Const and reference updates.
        (WebKit::UniqueIDBDatabase::cursorIterate): Ditto.
        (WebKit::UniqueIDBDatabase::openCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didOpenCursorInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::openCursor):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::SQLiteIDBCursor::maybeCreate): After creating the cursor, advance(1) it.

        * Shared/AsyncTask.h:
        (WebKit::createAsyncTask):

2014-01-31  Beth Dakin  <bdakin@apple.com>

        Sideways 'wobble' when scrolling with trackpad on Mavericks
        https://bugs.webkit.org/show_bug.cgi?id=127521
        -and corresponding-
        <rdar://problem/14137306>

        Reviewed by Simon Fraser.

        Start using WebCore::WheelEventDeltaTracker to filter events.
        * WebProcess/WebPage/EventDispatcher.cpp:
        (WebKit::EventDispatcher::EventDispatcher):
        (WebKit::EventDispatcher::wheelEvent):
        * WebProcess/WebPage/EventDispatcher.h:

2014-01-31  Zan Dobersek  <zdobersek@igalia.com>

        Fix the forward declaration of RawPluginMetaData in NetscapePluginModule.h
        https://bugs.webkit.org/show_bug.cgi?id=127992

        Reviewed by Martin Robinson.

        * Shared/Plugins/Netscape/NetscapePluginModule.h: RawPluginMetaData is a struct, so it should
        be declared as such. The current forward declaration is throwing a warning when using Clang.

2014-01-31  Anders Carlsson  <andersca@apple.com>

        REGRESSION: WebKit2.PageLoadBasic API test is failing
        https://bugs.webkit.org/show_bug.cgi?id=127892

        Reviewed by Dan Bernstein.

        On Mountain Lion, URLs returned by -[NSBundle URLForResource:withExtension:subdirectory] include
        localhost as the hostname, but WebCore::URL normalizes those URLs and removes the host name.
        
        Because of this, URLs created by WKURLCreateWithCFURL won't be equal to urls passed through 
        the WebCore::URL constructor. Change WKURLIsEqual to compare the normalized URLs.

        * Shared/API/c/WKURL.cpp:
        (WKURLIsEqual):
        * Shared/APIURL.h:
        (API::URL::equals):
        (API::URL::url):

2014-01-31  Brady Eidson  <beidson@apple.com>

        IDB: When deleting object stores/indexes, also delete associated records
        https://bugs.webkit.org/show_bug.cgi?id=127872

        Reviewed by Anders Carlsson.

        This was mostly done via other patches, but clearObjectStore was the last remaining case:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::clearObjectStore): Also delete Index records.

2014-01-31  Brady Eidson  <beidson@apple.com>

        IDB: Index writing
        <rdar://problem/15899973> and https://bugs.webkit.org/show_bug.cgi?id=127868

        Reviewed by Anders Carlsson.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::putRecordInBackingStore): Handle writing index records, as well.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata): Create a table
          for index records
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::extractExistingMetadata): Extract IDBIndexMetadata
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteIndex):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::putIndexRecord): Store in the IndexRecords table.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

2014-01-30  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] Unreviewed EFL WebKit2 build fix after r163116.
        https://bugs.webkit.org/show_bug.cgi?id=127985

        Unreviewed EFL WebKit2 build fix.

        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::processDidExit):
        * UIProcess/CoordinatedGraphics/WebView.h:

2014-01-30  Simon Fraser  <simon.fraser@apple.com>

        Fix iOS WK2 build after r163156.

        Need to convert to IntSizes.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::tapHighlightAtPosition):

2014-01-30  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Add support for building against GTK+ 2
        https://bugs.webkit.org/show_bug.cgi?id=127959

        Reviewed by Anders Carlsson.

        * PlatformGTK.cmake: Use the new API version variable and don't use GTK3 directly.

2014-01-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r163125.
        http://trac.webkit.org/changeset/163125
        https://bugs.webkit.org/show_bug.cgi?id=127980

        caused 9 layout tests to assert and crash (Requested by estes
        on #webkit).

        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        * Shared/SessionTracker.cpp:
        (WebKit::SessionTracker::session):
        (WebKit::SessionTracker::setSession):
        (WebKit::SessionTracker::destroySession):
        * Shared/SessionTracker.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setSession):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::legacySessionID):
        (WebKit::WebPlatformStrategies::cookiesForDOM):
        (WebKit::WebPlatformStrategies::setCookiesFromDOM):
        (WebKit::WebPlatformStrategies::cookiesEnabled):
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebKit::WebPlatformStrategies::getRawCookies):
        (WebKit::WebPlatformStrategies::deleteCookie):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::setSessionID):

2014-01-30  Anders Carlsson  <andersca@apple.com>

        Add webView:didFinishLoadingNavigation: delegate method
        https://bugs.webkit.org/show_bug.cgi?id=127976

        Reviewed by Dan Bernstein.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didFinishLoadForFrame):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/Cocoa/WKNavigationDelegate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::LoaderClient::didStartProvisionalLoadForFrame):
        (WebKit::NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
        (WebKit::NavigationState::LoaderClient::didCommitLoadForFrame):
        (WebKit::NavigationState::LoaderClient::didFinishLoadForFrame):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidFinishLoad):

2014-01-30  Tim Horton  <timothy_horton@apple.com>

        Crashes after 163116 in [WKView takeViewSnapshot]
        https://bugs.webkit.org/show_bug.cgi?id=127973

        Reviewed by Alexey Proskuryakov.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _takeViewSnapshot]):
        Make the ViewGestureController before using it, if we need one.

2014-01-30  Anders Carlsson  <andersca@apple.com>

        Add a webView:didCommitNavigation: delegate method
        https://bugs.webkit.org/show_bug.cgi?id=127972

        Reviewed by Dan Bernstein.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didCommitLoadForFrame):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/Cocoa/WKNavigationDelegate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::LoaderClient::didCommitLoadForFrame):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):

2014-01-30  Anders Carlsson  <andersca@apple.com>

        Add a webView:didFailProvisionalNavigation:withError: delegate method
        https://bugs.webkit.org/show_bug.cgi?id=127968

        Reviewed by Dan Bernstein.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/Cocoa/WKNavigationDelegate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):

2014-01-30  Anders Carlsson  <andersca@apple.com>

        Add a webView:didStartProvisionalNavigation: delegate method
        https://bugs.webkit.org/show_bug.cgi?id=127965

        Reviewed by Dan Bernstein.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didStartProvisionalLoadForFrame):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/Cocoa/WKNavigationDelegate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::createLoaderClient):
        (WebKit::NavigationState::createPolicyClient):
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::LoaderClient::LoaderClient):
        (WebKit::NavigationState::LoaderClient::~LoaderClient):
        (WebKit::NavigationState::LoaderClient::didStartProvisionalLoadForFrame):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):

2014-01-30  Brady Eidson  <beidson@apple.com>

        IDB: Implement IDBObjectStore.count()
        https://bugs.webkit.org/show_bug.cgi?id=127888

        Reviewed by Tim Horton.

        Now count() actually works.

        Forward the count() request to the backing store”
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::countInBackingStore):

        Using a cursor, get a count:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::count):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        Give a direct accessor to allow the backing store to close a cursor it opened
        for its own use:
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp:
        (WebKit::SQLiteIDBTransaction::closeCursor):
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.h:

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::didCount): Update the logging to show the count.

2014-01-30  Anders Carlsson  <andersca@apple.com>

        Implement NavigationState::PolicyClient::decidePolicyForNewWindowAction
        https://bugs.webkit.org/show_bug.cgi?id=127962

        Reviewed by Andreas Kling.

        Have decidePolicyForNewWindowAction call decidePolicyForNavigationAction with a null destination frame.

        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::PolicyClient::decidePolicyForNavigationAction):
        (WebKit::NavigationState::PolicyClient::decidePolicyForNewWindowAction):

2014-01-30  Martin Hock  <mhock@apple.com>

        Add session support to WebPlatformStrategies
        https://bugs.webkit.org/show_bug.cgi?id=127926

        Reviewed by Alexey Proskuryakov.

        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        * Shared/SessionTracker.cpp:
        (WebKit::storageSessionToID):
        (WebKit::SessionTracker::session):
        (WebKit::SessionTracker::sessionID):
        (WebKit::SessionTracker::setSession):
        (WebKit::SessionTracker::destroySession):
        * Shared/SessionTracker.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setSession):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::cookiesForDOM):
        (WebKit::WebPlatformStrategies::setCookiesFromDOM):
        (WebKit::WebPlatformStrategies::cookiesEnabled):
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebKit::WebPlatformStrategies::getRawCookies):
        (WebKit::WebPlatformStrategies::deleteCookie):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setSessionID): Ensure the storage session exists.
        * WebProcess/WebPage/WebPage.h:

2014-01-30  Brady Eidson  <beidson@apple.com>

        IDB: ObjectStore cursor iterate() support
        <rdar://problem/15941914> and https://bugs.webkit.org/show_bug.cgi?id=127867

        Reviewed by Tim Horton.

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
        (WebKit::SQLiteIDBCursor::iterate): Implement iterate() using advance()

2014-01-30  Anders Carlsson  <andersca@apple.com>

        decidePolicyForNewWindowAction should take a NavigationActionData object
        https://bugs.webkit.org/show_bug.cgi?id=127952

        Reviewed by Dan Bernstein.

        * UIProcess/API/APIPolicyClient.h:
        (API::PolicyClient::decidePolicyForNewWindowAction):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPagePolicyClient):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):

2014-01-27  Jeffrey Pfau  <jpfau@apple.com>

        Add a method for schemes to be registered as supporting cache partitioning
        https://bugs.webkit.org/show_bug.cgi?id=127739

        Reviewed by Darin Adler.

        Pipe information about cache partitioned scheme through WebKit2.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextRegisterURLSchemeAsCachePartitioned):
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::createNewWebProcess):
        (WebKit::WebContext::registerURLSchemeAsCachePartitioned):
        * UIProcess/WebContext.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::registerURLSchemeAsCachePartitioned):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2014-01-30  Tim Horton  <timothy_horton@apple.com>

        Lots of API test assertion failures after r163093
        https://bugs.webkit.org/show_bug.cgi?id=127948

        Reviewed by Alexey Proskuryakov.

        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::processDidExit):
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView _processDidExit]):
        * UIProcess/API/ios/WKContentViewInternal.h:
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::processDidExit):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _processDidExit]):
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::processDidCrash):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/API/mac/WKViewInternal.h:
        Rename _processDidCrash to _processDidExit, since it containes cleanup we
        should do in both cases. Also, call it whenever a process terminates instead
        of just upon a crash. Also clear the ViewGestureController, because its
        state doesn't make sense between WebProcesses.

        (-[WKView _setCustomSwipeViews:]):
        Don't make a ViewGestureController if we don't have one and would be
        only creating one to set an empty list of custom swipe views.

2014-01-30  Brady Eidson  <beidson@apple.com>

        IDB: ObjectStore cursor advance() support
        <rdar://problem/15779645> and https://bugs.webkit.org/show_bug.cgi?id=127866

        Reviewed by Sam Weinig.

        Plumb calls through to the backing store:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::openCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::advanceCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::iterateCursorInBackingStore):

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata): Update schema
          for Records table.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getOrEstablishMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::establishTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::resetTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::putRecord):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::openCursor): Create a SQLiteIDBCursor object.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::advanceCursor): Call through to that object.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::iterateCursor): Ditto.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::idbKeyCollate): Renamed for clarity.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::unregisterCursor): Cleanup open cursors.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp: Added.
        (WebKit::SQLiteIDBCursor::maybeCreate):
        (WebKit::SQLiteIDBCursor::SQLiteIDBCursor):
        (WebKit::SQLiteIDBCursor::establishStatement):
        (WebKit::SQLiteIDBCursor::createIndexCursorStatement): Stubbed for now.
        (WebKit::SQLiteIDBCursor::createObjectStoreCursorStatement): Create the appropriate query for
          the passed in IDBKeyRange.
        (WebKit::SQLiteIDBCursor::advance): Step through that query.
        (WebKit::SQLiteIDBCursor::iterate): Stubbed for now.
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.h: Added.
        (WebKit::SQLiteIDBCursor::identifier):
        (WebKit::SQLiteIDBCursor::transaction):
        (WebKit::SQLiteIDBCursor::currentKey):
        (WebKit::SQLiteIDBCursor::currentPrimaryKey):
        (WebKit::SQLiteIDBCursor::currentValue):

        Add infrastructure for a SQLiteIDBTransaction to keep track of (and clean up) its open cursors:
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp:
        (WebKit::SQLiteIDBTransaction::SQLiteIDBTransaction):
        (WebKit::SQLiteIDBTransaction::~SQLiteIDBTransaction):
        (WebKit::SQLiteIDBTransaction::reset):
        (WebKit::SQLiteIDBTransaction::openCursor):
        (WebKit::SQLiteIDBTransaction::clearCursors):
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.h:
        (WebKit::SQLiteIDBTransaction::create):
        (WebKit::SQLiteIDBTransaction::sqliteTransaction):

        Add accessors for the two fields:
        * DatabaseProcess/IndexedDB/IDBIdentifier.h:
        (WebKit::IDBIdentifier::connection):
        (WebKit::IDBIdentifier::id):

        * WebKit2.xcodeproj/project.pbxproj:

2014-01-30  Anders Carlsson  <andersca@apple.com>

        Implement policy response delegate handling
        https://bugs.webkit.org/show_bug.cgi?id=127945

        Reviewed by Dan Bernstein.

        * UIProcess/API/APIPolicyClient.h:
        (API::PolicyClient::decidePolicyForResponse):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPagePolicyClient):
        * UIProcess/API/Cocoa/WKNavigationDelegate.h:
        (NS_ENUM):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::PolicyClient::decidePolicyForNavigationAction):
        (WebKit::NavigationState::PolicyClient::decidePolicyForResponse):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForResponse):

2014-01-29  Dean Jackson  <dino@apple.com>

        Allow the OpenGL Profiler to get through the sandbox
        https://bugs.webkit.org/show_bug.cgi?id=127877
        <rdar://problem/14817250>
        <rdar://problem/14271180>

        Reviewed by Alexey Proskuryakov.

        Open up the sandbox for WebProcess and PluginProcess so
        that OpenGL.framework can create a mach port for communication
        with the OpenGL Profiler.

        * Resources/PlugInSandboxProfiles/com.apple.WebKit.plugin-common.sb:
        * WebProcess/com.apple.WebProcess.sb.in:

2014-01-30  Anders Carlsson  <andersca@apple.com>

        Begin fleshing out the navigation delegate
        https://bugs.webkit.org/show_bug.cgi?id=127939

        Reviewed by Dan Bernstein.

        * UIProcess/API/APIPolicyClient.h:
        (API::PolicyClient::decidePolicyForNavigationAction):
        Pass the listener as a RefPtr.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPagePolicyClient):
        Update for API::PolicyClient changes.

        * UIProcess/API/Cocoa/WKNavigationDelegate.h:
        Add new delegate.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        Set a policy client on the page.

        * UIProcess/Cocoa/NavigationState.h:
        Add a new PolicyClient class.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationState):
        Initialize m_navigationDelegateMethods.

        (WebKit::NavigationState::navigationDelegate):
        m_delegate was renamed to m_navigationDelegate.

        (WebKit::NavigationState::setNavigationDelegate):
        Update m_navigationDelegateMethods.webViewDecidePolicyForNavigationActionDecisionHandler.
        
        (WebKit::NavigationState::createPolicyClient):
        New helper function for creating a new policy client.

        (WebKit::NavigationState::PolicyClient::decidePolicyForNavigationAction):
        Call the navigation delegate method.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        Use std::move to hand off the listener to the client.

2014-01-30  Jeremy Jones  <jeremyj@apple.com>

        Crash in RemoteLayerBackingStore::encode when m_frontBuffer is nullptr.
        https://bugs.webkit.org/show_bug.cgi?id=127756

        Reviewed by Jer Noble.

        Don't encode RemoteLayerBackingStore when it has no front buffer.

        * Shared/mac/RemoteLayerBackingStore.h:
        (WebKit::RemoteLayerBackingStore::hasFrontBuffer):
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):

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

        Host plug-ins in XPC services
        <https://webkit.org/b/127897> / <rdar://problem/13675955>

        We disabled use of XPC services for plug-ins back in r143829 as the per-architecture services
        were not being built for the appropriate architectures. Fixing that allows us to reenable them.

        Reviewed by Anders Carlsson.

        * Configurations/PluginService.32.xcconfig: Use VALID_ARCHS to restrict the service
        to building for i386-only in production builds. Non-production builds allow building
        for all standard architectures to ensure that Xcode will be able to build this target.
        The exact architecture used isn't a concern for non-production builds since we'll use
        the development version of the service anyway.
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::shouldUseXPC): Remove the workaround that disables use of the XPC services.

2014-01-30  Anders Carlsson  <andersca@apple.com>

        Add WKNavigationDelegate class
        https://bugs.webkit.org/show_bug.cgi?id=127927

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKNavigationDelegate.h: Copied from Source/WebKit2/UIProcess/Cocoa/NavigationState.h.
        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView navigationDelegate]):
        (-[WKWebView setNavigationDelegate:]):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::navigationDelegate):
        (WebKit::NavigationState::setNavigationDelegate):
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-30  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures (Swipe): Provide a way for clients to provide views to swipe
        https://bugs.webkit.org/show_bug.cgi?id=127891
        <rdar://problem/15931413>

        Reviewed by Anders Carlsson.

        * UIProcess/API/Cocoa/WKViewPrivate.h: Add the SPI.

        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::clearCustomSwipeViews):
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::clearCustomSwipeViews):
        * UIProcess/PageClient.h:
        Plumb clearCustomSwipeViews() so that WebPageProxy can clear
        ViewGestureController's list of custom views when the current
        back-forward item changes.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _takeViewSnapshot]):
        If we have custom swipe views, use the union of their bounds as the snapshot region.

        (-[WKView _setCustomSwipeViews:]):
        Forward along to ViewGestureController.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didChangeBackForwardList):
        When the current back forward list item changes, clear the custom swipe views.

        * UIProcess/mac/ViewGestureController.h:
        (WebKit::ViewGestureController::setCustomSwipeViews):
        (WebKit::ViewGestureController::customSwipeViews):
        * UIProcess/mac/ViewGestureController.mm:
        (WebKit::ViewGestureController::windowRelativeBoundsForCustomSwipeViews):
        Compute the union of the custom swipe view bounds in the window's coordinate space.

        (WebKit::ViewGestureController::beginSwipeGesture):
        Store the layers we'll be swiping as the "live" layers in m_currentSwipeLiveLayers.
        Don't set a shadow (yet) if we have custom swipe views, because it's not clear where to put it.

        (WebKit::ViewGestureController::handleSwipeGesture):
        Compute the swipe distance ('width') based on the union of the custom views bounds if needed.
        Update the transform of all of the live layers. We use transform instead of position now
        so that clients can set the position (having an identity transform is one of the SPI caveats).

        (WebKit::ViewGestureController::removeSwipeSnapshot):
        Reset the transform on all of the live layers.
        Clear the list of live layers.

2014-01-30  Brady Eidson  <beidson@apple.com>

        IDB: Add no-op plumbing for deleteDatabase and deleteRange
        https://bugs.webkit.org/show_bug.cgi?id=127912

        Reviewed by Alexey Proskuryakov.

        Forward the calls to the DatabaseProcess, and handle completion from the DatabaseProcess:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::deleteDatabase):
        (WebKit::WebIDBServerConnection::didDeleteDatabase):
        (WebKit::WebIDBServerConnection::deleteRange):
        (WebKit::WebIDBServerConnection::didDeleteRange):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        Stub out deleteDatabase, and forward deleteRange to the appropriate UniqueIDBDatabase:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::deleteDatabase):
        (WebKit::DatabaseProcessIDBConnection::deleteRange):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        Forward the request to the backing store thread, and handle the response from that thread:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::deleteRange):
        (WebKit::UniqueIDBDatabase::deleteRangeInBackingStore):
        (WebKit::UniqueIDBDatabase::didDeleteRangeInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

2014-01-30  Antti Koivisto  <antti@apple.com>

        WebPage::determinePrimarySnapshottedPlugIn is slow
        https://bugs.webkit.org/show_bug.cgi?id=127905

        Reviewed by Anders Carlsson.
        
        PLT before:
        132.0ms  0.8% 0,0   WebKit::WebPage::determinePrimarySnapshottedPlugIn()
        130.0ms  0.8% 0,0    WebCore::RenderView::hitTest(WebCore::HitTestRequest const&, WebCore::HitTestResult&)
        
        After:
        7.0ms    0.0% 0,0   WebKit::WebPage::determinePrimarySnapshottedPlugIn()
        3.0ms    0.0% 0,0    WebCore::RenderView::hitTest(WebCore::HitTestRequest const&, WebCore::HitTestResult&)

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::determinePrimarySnapshottedPlugIn):
        
            Instead of shotgunning the page with hit tests, do a DOM crawl for plugins
            and hit test the centers.

2014-01-30  Andrei Bucur  <abucur@adobe.com>

        Remove the ACCELERATED_COMPOSITING flag
        https://bugs.webkit.org/show_bug.cgi?id=127833

        Reviewed by Antti Koivisto.

        Remove the USE(ACCELERATED_COMPOSITING) conditionals from the code base and make AC
        mandatory.

        * PluginProcess/PluginControllerProxy.cpp:
        (WebKit::PluginControllerProxy::PluginControllerProxy):
        * PluginProcess/PluginCreationParameters.cpp:
        (WebKit::PluginCreationParameters::PluginCreationParameters):
        (WebKit::PluginCreationParameters::encode):
        (WebKit::PluginCreationParameters::decode):
        * PluginProcess/PluginCreationParameters.h:
        * PluginProcess/PluginProcess.h:
        * Shared/WebRenderLayer.cpp:
        (WebKit::WebRenderLayer::WebRenderLayer):
        * Shared/mac/RemoteLayerBackingStore.h:
        * Shared/mac/RemoteLayerBackingStore.mm:
        (RemoteLayerBackingStore::enumerateRectsBeingDrawn):
        * UIProcess/API/efl/EvasGLContext.cpp:
        * UIProcess/API/efl/EvasGLContext.h:
        * UIProcess/API/efl/EvasGLSurface.cpp:
        * UIProcess/API/efl/EvasGLSurface.h:
        * UIProcess/API/efl/EwkView.cpp:
        (EwkView::EwkView):
        (EwkView::displayTimerFired):
        (EwkView::createGLSurface):
        (EwkView::handleEvasObjectCalculate):
        (EwkView::handleEvasObjectShow):
        (EwkView::takeSnapshot):
        * UIProcess/API/efl/EwkView.h:
        * UIProcess/API/efl/SnapshotImageGL.cpp:
        (getImageSurfaceFromFrameBuffer):
        * UIProcess/API/efl/SnapshotImageGL.h:
        * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:
        (EWK2UnitTest::EWK2UnitTestBase::SetUp):
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::updateAcceleratedCompositingMode):
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::acceleratedCompositingRootLayer):
        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.cpp:
        (WebKit::CoordinatedDrawingAreaProxy::~CoordinatedDrawingAreaProxy):
        (WebKit::CoordinatedDrawingAreaProxy::visibilityDidChange):
        (WebKit::CoordinatedDrawingAreaProxy::didUpdateBackingStoreState):
        (WebKit::CoordinatedDrawingAreaProxy::enterAcceleratedCompositingMode):
        (WebKit::CoordinatedDrawingAreaProxy::exitAcceleratedCompositingMode):
        (WebKit::CoordinatedDrawingAreaProxy::updateAcceleratedCompositingMode):
        (WebKit::CoordinatedDrawingAreaProxy::sendUpdateBackingStoreState):
        (WebKit::CoordinatedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.h:
        * UIProcess/CoordinatedGraphics/PageViewportController.cpp:
        * UIProcess/CoordinatedGraphics/PageViewportController.h:
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::setVisible):
        * UIProcess/DrawingAreaProxy.h:
        * UIProcess/DrawingAreaProxy.messages.in:
        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::~DrawingAreaProxyImpl):
        (WebKit::DrawingAreaProxyImpl::didUpdateBackingStoreState):
        (WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode):
        (WebKit::DrawingAreaProxyImpl::exitAcceleratedCompositingMode):
        (WebKit::DrawingAreaProxyImpl::updateAcceleratedCompositingMode):
        (WebKit::DrawingAreaProxyImpl::sendUpdateBackingStoreState):
        (WebKit::DrawingAreaProxyImpl::waitForAndDispatchDidUpdateBackingStoreState):
        * UIProcess/DrawingAreaProxyImpl.h:
        * UIProcess/PageClient.h:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::platformInitializePluginProcess):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateAcceleratedCompositingMode):
        * UIProcess/WebPageProxy.h:
        * UIProcess/efl/PageLoadClientEfl.cpp:
        (WebKit::PageLoadClientEfl::didCommitLoadForFrame):
        * UIProcess/efl/PageViewportControllerClientEfl.cpp:
        * UIProcess/efl/ViewClientEfl.cpp:
        (WebKit::ViewClientEfl::didChangeContentsSize):
        (WebKit::ViewClientEfl::didChangeContentsPosition):
        (WebKit::ViewClientEfl::didRenderFrame):
        (WebKit::ViewClientEfl::didCompletePageTransition):
        (WebKit::ViewClientEfl::didChangeViewportAttributes):
        * UIProcess/mac/WebContextMac.mm:
        (WebKit::WebContext::platformInitializeWebProcess):
        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::screenRectOfContents):
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::isAcceleratedCompositingEnabled):
        * WebProcess/Plugins/PluginController.h:
        * WebProcess/Plugins/PluginProxy.cpp:
        (WebKit::PluginProxy::initialize):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::layerTreeStateIsFrozen):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp:
        (WebKit::CoordinatedDrawingArea::layerHostDidFlushLayers):
        (WebKit::CoordinatedDrawingArea::scheduleCompositingLayerFlush):
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h:
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::layerHostDidFlushLayers):
        (WebKit::DrawingAreaImpl::scheduleCompositingLayerFlush):
        (WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode):
        * WebProcess/WebPage/DrawingAreaImpl.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::exitAcceleratedCompositingMode):
        (WebKit::WebPage::mainFrameDidLayout):
        (WebKit::WebPage::didReceiveMessage):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp:
        * WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::hostingContextID):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:
        (PlatformCALayerRemoteCustom::hostingContextID):
        * WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.cpp:
        (PlatformCALayerRemoteTiledBacking::setBorderColor):
        * WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::WebProcess):
        * WebProcess/WebProcess.h:

2014-01-30  Brady Eidson  <beidson@apple.com>

        IDB: Key generator support
        https://bugs.webkit.org/show_bug.cgi?id=127871

        Reviewed by Tim Horton.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::putRecordInBackingStore): Update for storing/retrieving integers instead of IDBKeys.
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata): Create a keygen table.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createObjectStore): Put a record in the keygen table for
          this object store if necessary.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteObjectStore): Delete the entry in the keygen table.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::generateKeyNumber): Pull the current number from the table.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::updateKeyGeneratorNumber): Update the number in the table.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::put): Null keys are acceptable for autoIncrement object stores.

2014-01-30  Brady Eidson  <beidson@apple.com>

        IDB: Implement IDBObjectStore.count()
        https://bugs.webkit.org/show_bug.cgi?id=127888

        Reviewed by Tim Horton.

        Forward request to the DatabaseProcess, and handle its completion:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::count):
        (WebKit::WebIDBServerConnection::didCount):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        Pass request along to the appropriate UniqueIDBDatabase:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::count):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        Pass request to backing store thread, then pass it back to the WebProcess:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::count):
        (WebKit::UniqueIDBDatabase::countInBackingStore):
        (WebKit::UniqueIDBDatabase::didCountInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * Shared/AsyncTask.h:
        (WebKit::createAsyncTask):

2014-01-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix the GTK+ build after r163037.

        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_load_uri):
        (webkit_web_view_load_request):

2014-01-29  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(JAVASCRIPT_DEBUGGER) leftovers
        https://bugs.webkit.org/show_bug.cgi?id=127845

        Reviewed by Joseph Pecoraro.

        * Configurations/FeatureDefines.xcconfig:

2014-01-29  Dan Bernstein  <mitz@apple.com>

        Moved linking against common frameworks and a library from the .xcconfig file into the target.

        Reviewed by Tim Horton.

        * Configurations/WebKit2.xcconfig:
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-29  Anders Carlsson  <andersca@apple.com>

        Fix 32-bit build.

        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:

2014-01-29  Anders Carlsson  <andersca@apple.com>

        Add a NavigationState object to keep track of the navigations for a given page
        https://bugs.webkit.org/show_bug.cgi?id=127884

        Reviewed by Sam Weinig.

        * UIProcess/API/Cocoa/WKNavigation.mm:
        (-[WKNavigation request]):
        (-[WKNavigation setRequest:]):
        * UIProcess/API/Cocoa/WKNavigationInternal.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        (-[WKWebView loadRequest:]):
        * UIProcess/Cocoa/NavigationState.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKNavigation.mm.
        * UIProcess/Cocoa/NavigationState.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKNavigation.mm.
        (WebKit::NavigationState::NavigationState):
        (WebKit::NavigationState::~NavigationState):
        (WebKit::NavigationState::createLoadRequestNavigation):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadRequest):
        * UIProcess/WebPageProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-29  Gavin Barraclough  <barraclough@apple.com>

        Add IsVisibleOrOccluded to ViewState
        https://bugs.webkit.org/show_bug.cgi?id=127875

        Reviewed by Anders Carlsson.

        When the WKView associated with a plugin becomes occluded
        we tell the plugin it is no longer visible. This is a problem
        if the plugin is being occluded by its own fullscreen window.

        Instead, consider plugins to be visible any time they are in
        a visible window – i.e. when they are visible or occluded.

        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::isViewVisibleOrOccluded):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::isViewVisibleOrOccluded):
            - added isViewVisibleOrOccluded.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateViewState):
            - update IsVisibleOrOccluded.
        (WebKit::WebPageProxy::viewStateDidChange):
            - when updating IsVisible also update IsVisibleOrOccluded.
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::platformViewStateDidChange):
            - use isVisibleOrOccluded to determine plugin visibility.
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::isVisibleOrOccluded):
            - accessor.

2014-01-29  Anders Carlsson  <andersca@apple.com>

        Pass navigation IDs along to LoadRequest and Reload
        https://bugs.webkit.org/show_bug.cgi?id=127883

        Reviewed by Sam Weinig.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::reload):
        (WebKit::WebPageProxy::generateNavigationID):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebDocumentLoader.cpp:
        (WebKit::WebDocumentLoader::setNavigationID):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::loadRequest):
        (WebKit::WebPage::reload):
        (WebKit::WebPage::createDocumentLoader):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2014-01-29  Anders Carlsson  <andersca@apple.com>

        -[WKWebView loadRequest:] should return a WKNavigation
        https://bugs.webkit.org/show_bug.cgi?id=127873

        Reviewed by Dan Bernstein.

        For now this just returns a dummy navigation.

        * UIProcess/API/Cocoa/WKNavigation.h:
        * UIProcess/API/Cocoa/WKNavigation.mm:
        (-[WKNavigation initWithRequest:]):
        (-[WKNavigation request]):
        * UIProcess/API/Cocoa/WKNavigationInternal.h: Added.
        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView loadRequest:]):
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-29  Anders Carlsson  <andersca@apple.com>

        

        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadURL):
        Don't use the resource request constructor that takes a String.

2014-01-29  Brady Eidson  <beidson@apple.com>

        IDB: Fully implement IDBKeyData encoding/decoding
        https://bugs.webkit.org/show_bug.cgi?id=127863

        Rubberstamped by Alexey Proskuryakov.

        Handle invalid buffers, and pass IDBKeyData decoding along:
        * DatabaseProcess/IndexedDB/IDBSerialization.cpp:
        (WebKit::deserializeIDBKeyPath):
        (WebKit::serializeIDBKeyData):
        (WebKit::deserializeIDBKeyData):
        * DatabaseProcess/IndexedDB/IDBSerialization.h:

        Implement decodeBool and decodeDouble:
        * Shared/cf/KeyedDecoder.cpp:
        (WebKit::KeyedDecoder::decodeBool):
        (WebKit::KeyedDecoder::decodeDouble):
        * Shared/cf/KeyedDecoder.h:

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

        WebKit2 View Gestures (Swipe): Update rubberBandsAt{Left,Right} when WebKit swipe is enabled
        https://bugs.webkit.org/show_bug.cgi?id=127855
        <rdar://problem/15933878>

        Reviewed by Anders Carlsson.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView setAllowsBackForwardNavigationGestures:]):
        Enable implicit control of rubberbanding when using WebKit2's swipe implementation.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::sendWheelEvent):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::setShouldUseImplicitRubberBandControl):
        (WebKit::WebPageProxy::shouldUseImplicitRubberBandControl):
        Rename away from "legacy" name, since we're using it on purpose now.

        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::expectsLegacyImplicitRubberBandControl):
        (WebKit::WebPageProxy::platformInitialize):
        Since NSVersionOfLinkTimeLibrary doesn't work for applications that
        don't link directly against the library (like Safari), let's explicitly
        check if Safari is expecting the legacy behavior, otherwise using
        the linked version of WebKit2, but using the new behavior if we can't
        determine the linked version of WebKit2 and are not Safari.

2014-01-29  Anders Carlsson  <andersca@apple.com>

        Make WKWebView limp along on OS X
        https://bugs.webkit.org/show_bug.cgi?id=127857

        Reviewed by Tim Horton.

        On Mac, create a WKView and add it as a subview of the WKWebVew so we'll actually get something
        on screen when creating a WKWebView.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        Create a WKView.

        (-[WKWebView resizeSubviewsWithOldSize:]):
        Resize the WKView.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView initWithFrame:configuration:]):
        Add new initializer.

        * UIProcess/API/mac/WKViewInternal.h:
        Use a class extension for internal methods and add the new initializer.

2014-01-29  Brady Eidson  <beidson@apple.com>

        IDB: Opening an existing database is broken
        https://bugs.webkit.org/show_bug.cgi?id=127851

        Reviewed by Tim Hatcher.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::getOrEstablishIDBDatabaseMetadata): Save the request to get metadata
          to the set before posting the task to the thread.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::extractExistingMetadata): Actually save the retrieved
          object store metadata to the database metadata.

2014-01-29  Anders Carlsson  <andersca@apple.com>

        Consolidate page loading functions
        https://bugs.webkit.org/show_bug.cgi?id=127847

        Reviewed by Tim Horton.

        Get rid of the loadURL functions (and the LoadURL message), rename
        loadURLRequest to loadRequest and change it to take a ResourceRequest instead
        of an API::URLRequest.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadURL):
        (WKPageLoadURLWithUserData):
        (WKPageLoadURLRequest):
        (WKPageLoadURLRequestWithUserData):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController loadRequest:userData:]):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView loadRequest:]):
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::decidePolicyForNavigationAction):
        (WebKit::WebInspectorProxy::createInspectorPage):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::loadFile):
        * UIProcess/WebPageProxy.h:
        * UIProcess/cf/WebPageProxyCF.cpp:
        (WebKit::WebPageProxy::restoreFromSessionStateData):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadRequest):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2014-01-29  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Fix the build after r162835
        https://bugs.webkit.org/show_bug.cgi?id=127753

        Reviewed by Gustavo Noronha Silva.

        * CMakeLists.txt: Add support for using the prefix header (GCC / clang only for now)
        when WebKit2_USE_PREFIX_HEADER is set to true.
        * PlatformGTK.cmake: Set WebKit2_USE_PREFIX_HEADER support and no longer process some message.in files.
        * WebKit2Prefix.h: Add support for the CMake GTK+ build.

2014-01-29  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(JAVASCRIPT_DEBUGGER) guards
        https://bugs.webkit.org/show_bug.cgi?id=127840

        Reviewed by Mark Lam.

        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::startJavaScriptDebugging):
        (WebKit::WebInspector::stopJavaScriptDebugging):
        (WebKit::WebInspector::setJavaScriptProfilingEnabled):
        (WebKit::WebInspector::startJavaScriptProfiling):
        (WebKit::WebInspector::stopJavaScriptProfiling):

2014-01-29  Brady Eidson  <beidson@apple.com>

        IDB: Serialize IDBKeyDatas to disk, not IDBKeys
        https://bugs.webkit.org/show_bug.cgi?id=127829

        Reviewed by Tim Horton.

        Serialize IDBKeyDatas, not IDBKeys.

        * DatabaseProcess/IndexedDB/IDBSerialization.cpp:
        (WebKit::deserializeIDBKeyPath):
        (WebKit::serializeIDBKeyData):
        * DatabaseProcess/IndexedDB/IDBSerialization.h:

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::extractExistingMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::putRecord):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getKeyRecordFromObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getKeyRangeRecordFromObjectStore):

2014-01-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ build after r162981.

        * GNUmakefile.list.am: Add WebProcess/WebPage/WebDocumentLoader to
        the compilation.

2014-01-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Actually fix the GTK+ build after r162967.

        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_can_go_back):
        (webkit_web_view_can_go_forward):

2014-01-28  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed followup to r163006. That change incorrectly modified
        webkit_web_view_go_forward when webkit_web_view_can_go_forward needed fixing.

        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_go_forward):
        (webkit_web_view_can_go_forward):

2014-01-28  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK build fix after r162967.

        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_can_go_back):
        (webkit_web_view_go_forward):

2014-01-28  Tim Horton  <timothy_horton@apple.com>

        Crashes in ViewGestureController::wheelEventWasNotHandledByWebCore
        https://bugs.webkit.org/show_bug.cgi?id=127828
        <rdar://problem/15932902>

        Reviewed by Dan Bernstein.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _wheelEventWasNotHandledByWebCore:]):
        Null check. ViewGestureController only needs unhandled wheel events after it has been created.

2014-01-28  Tim Horton  <timothy_horton@apple.com>

        Fix the Mountain Lion build if you have private headers.

        * UIProcess/mac/ViewGestureController.mm:
        (WebKit::ViewGestureController::beginSwipeGesture):

2014-01-28  Ian Henderson  <ianh@apple.com>

        [iOS] UI process crashes whenever web process crashes
        https://bugs.webkit.org/show_bug.cgi?id=127826

        Reviewed by Tim Horton.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView _updateFixedPositionRect]): Null-check the drawing
        area before calling size() on it.

2014-01-28  Ian Henderson  <ianh@apple.com>

        WKRemoteObjectCoder should support more argument types
        https://bugs.webkit.org/show_bug.cgi?id=127824

        Reviewed by Anders Carlsson.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (encodeInvocation): Support encoding char values.
        (decodeInvocationArguments): Support decoding char values.

2014-01-28  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix on the cmake based port after r162981

        One more build fix.

        * CMakeLists.txt: Added WebDocumentLoader.cpp

2014-01-28  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix on the EFL build after r162984

        r162984 added wheelEventWasNotHandledByWebCore which is guarded to PLATFORM(MAC).

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReceiveEvent):

2014-01-28  Anders Carlsson  <andersca@apple.com>

        Fix a thinko.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::goBack):
        Remove early return if isValid() is true.

2014-01-28  Anders Carlsson  <andersca@apple.com>

        WebPage should be in charge of creating document loaders
        https://bugs.webkit.org/show_bug.cgi?id=127818

        Reviewed by Dan Bernstein.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::createDocumentLoader):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::createDocumentLoader):
        * WebProcess/WebPage/WebPage.h:

2014-01-28  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        Unreviewed GTK build fix after r162951.
        https://bugs.webkit.org/show_bug.cgi?id=127815

        * GNUmakefile.list.am: Adding missing build targets.

2014-01-28  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures (Swipe): Give WebCore the first crack at scroll events if it needs it
        https://bugs.webkit.org/show_bug.cgi?id=127396

        Reviewed by Anders Carlsson.

        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore):
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _wheelEventWasNotHandledByWebCore:]):
        * UIProcess/API/mac/WKViewInternal.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReceiveEvent):
        In addition to informing the page client about un-handled wheel events,
        inform the ViewGestureController, in a roundabout way.

        * UIProcess/mac/ViewGestureController.h:
        Add and use SwipeDirection enum instead of 'bool willSwipeLeft'.

        * UIProcess/mac/ViewGestureController.mm:
        (WebKit::ViewGestureController::ViewGestureController):
        (WebKit::ViewGestureController::handleScrollWheelEvent):
        If we get a Begin scroll wheel event, any previously deferred
        swipes are invalid.

        If the page has subframes or wheel handlers, defer starting the
        swipe until we get a wheelEventWasNotHandledByWebCore back from the WebProcess.

        (WebKit::ViewGestureController::wheelEventWasNotHandledByWebCore):
        Start the swipe if the WebProcess didn't eat the event.

        (WebKit::ViewGestureController::trackSwipeGesture):
        (WebKit::ViewGestureController::beginSwipeGesture):
        (WebKit::ViewGestureController::handleSwipeGesture):
        Use SwipeDirection.

2014-01-28  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * WebProcess/WebPage/WebFrame.cpp:

2014-01-28  Anders Carlsson  <andersca@apple.com>

        Add WebDocumentLoader, a WebCore::DocumentLoader subclass
        https://bugs.webkit.org/show_bug.cgi?id=127817

        Reviewed by Tim Horton.

        We need a place to store navigation IDs, and since they are per document loader, putting them
        in a DocumentLoader subclass seems like a good idea.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::createDocumentLoader):
        * WebProcess/WebPage/WebDocumentLoader.cpp: Added.
        (WebKit::WebDocumentLoader::WebDocumentLoader):
        (WebKit::WebDocumentLoader::setNavigationID):
        * WebProcess/WebPage/WebDocumentLoader.h: Added.
        (WebKit::WebDocumentLoader::create):
        (WebKit::WebDocumentLoader::navigationID):

2014-01-28  Anders Carlsson  <andersca@apple.com>

        Simplify WebFrame::isMainFrame
        https://bugs.webkit.org/show_bug.cgi?id=127812

        Reviewed by Sam Weinig.

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

2014-01-28  Andy Estes  <aestes@apple.com>

        [iOS] Set INSTALL_PATH_ACTUAL when building WebKit2 for the iOS Simulator
        https://bugs.webkit.org/show_bug.cgi?id=127811

        Reviewed by Dan Bernstein.

        * Configurations/WebKit2.xcconfig:

2014-01-28  Jinwoo Song  <jinwoo7.song@samsung.com>

        Unreviewed EFL WebKit2 build fix.

        * CMakeLists.txt: Added Shared/NavigationActionData.cpp

2014-01-28  Anders Carlsson  <andersca@apple.com>

        Remove WebPageProxy::canGoBack and WebPageProxy::canGoForward
        https://bugs.webkit.org/show_bug.cgi?id=127803

        Reviewed by Andreas Kling.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageCanGoForward):
        (WKPageCanGoBack):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController canGoForward]):
        (-[WKBrowsingContextController canGoBack]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::goForward):
        (WebKit::WebPageProxy::goBack):
        (WebKit::WebPageProxy::sendWheelEvent):
        * UIProcess/WebPageProxy.h:

2014-01-28  Anders Carlsson  <andersca@apple.com>

        API::PolicyClient::decidePolicyForNavigationAction should take a NavigationActionData object
        https://bugs.webkit.org/show_bug.cgi?id=127798

        Reviewed by Tim Horton.

        * UIProcess/API/APIPolicyClient.h:
        (API::PolicyClient::decidePolicyForNavigationAction):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPagePolicyClient):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

2014-01-28  Anders Carlsson  <andersca@apple.com>

        Add an empty WKNavigation class
        https://bugs.webkit.org/show_bug.cgi?id=127796

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKNavigation.h: Added.
        * UIProcess/API/Cocoa/WKNavigation.mm: Added.
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-28  Anders Carlsson  <andersca@apple.com>

        Add a NavigationActionData object for easy storage of navigation action data
        https://bugs.webkit.org/show_bug.cgi?id=127787

        Reviewed by Tim Horton.

        * Scripts/webkit2/messages.py:
        (struct_or_class):
        * Shared/NavigationActionData.cpp: Added.
        (WebKit::NavigationActionData::NavigationActionData):
        (WebKit::NavigationActionData::encode):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h: Added.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2014-01-28  Tim Horton  <timothy_horton@apple.com>

        Fix the Mountain Lion build.

        * UIProcess/mac/ViewGestureController.mm:
        (WebKit::ViewGestureController::beginSwipeGesture):
        (WebKit::ViewGestureController::removeSwipeSnapshot):
        * UIProcess/mac/ViewSnapshotStore.mm:
        (WebKit::ViewSnapshotStore::recordSnapshot):

2014-01-28  Tim Horton  <timothy_horton@apple.com>

        Fix the iOS build.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::recordNavigationSnapshot):
        * UIProcess/mac/ViewSnapshotStore.h:
        * UIProcess/mac/ViewSnapshotStore.mm:

2014-01-28  Brady Eidson  <beidson@apple.com>

        Remove unneeded “WebCore::” prefixing in two .cpp files.

        Rubberstamped by Alexey Proskuryakov.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:

2014-01-28  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures (Swipe): Snapshots should be purgeable
        https://bugs.webkit.org/show_bug.cgi?id=127390
        <rdar://problem/15876775>

        Reviewed by Anders Carlsson.

        Make snapshots be purgeable, and implement a straightforward
        (if perhaps expensive, for now) cache eviction strategy to limit the
        number of snapshots to 20.

        * UIProcess/mac/ViewGestureController.mm:
        (WebKit::ViewGestureController::beginSwipeGesture):
        When beginning a gesture, attempt to make the retrieved snapshot
        non-volatile. If it was purged while volatile, we won't use it, but if it
        is still valid, we'll go ahead and use it as the swipe layer's contents.

        (WebKit::ViewGestureController::removeSwipeSnapshot):
        When removing the swipe snapshot, make it volatile once again.

        * UIProcess/mac/ViewSnapshotStore.h:
        Store a creation time along with the image.
        Store and return IOSurfaces instead of CGImages.
        Store snapshots and render tree sizes separately, so that we can
        throw away snapshots but keep the render tree sizes indefinitely.

        * UIProcess/mac/ViewSnapshotStore.mm:
        (WebKit::ViewSnapshotStore::pruneSnapshots):
        Cap the number of snapshots we'll ever have live at 20.
        Enforce this cap by first trying to remove snapshots farthest
        from the current back-forward list's current item, falling back
        to removing the least recently created snapshot if there are no
        snapshots owned by the current back-forward list.

        (WebKit::createIOSurfaceFromImage):
        Build an IOSurface from the CGImage snapshot we took, for ease of
        use of its purgeability API.

        (WebKit::ViewSnapshotStore::recordSnapshot):
        Bail from taking the snapshot if the image is empty; this can happen
        if the view is out of the window when the snapshot is taken.

        Mark snapshots as purgeable as soon as they go into the cache.

        (WebKit::ViewSnapshotStore::snapshotAndRenderTreeSize):
        Return the target render tree size even if there is no snapshot image.
        Take care not to look up an empty UUID.

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

        Expose SQL database creation and modification times
        https://bugs.webkit.org/show_bug.cgi?id=127728

        Reviewed by Brady Eidson.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<DatabaseDetails>::encode):
        (IPC::ArgumentCoder<DatabaseDetails>::decode):
        Encode and decode new DatabaseDetails member variables.

        * UIProcess/API/C/WKDatabaseManager.cpp:
        (WKDatabaseManagerGetDatabaseDetailsCreationTimeKey):
        (WKDatabaseManagerGetDatabaseDetailsModificationTimeKey):
        * UIProcess/API/C/WKDatabaseManager.h:
        Added new keys for database details.

        * UIProcess/WebDatabaseManagerProxy.cpp:
        (WebKit::WebDatabaseManagerProxy::databaseDetailsCreationTimeKey):
        (WebKit::WebDatabaseManagerProxy::databaseDetailsModificationTimeKey):
        (WebKit::WebDatabaseManagerProxy::didGetDatabasesByOrigin):
        * UIProcess/WebDatabaseManagerProxy.h:
        Set the new keys if times are valid.

2014-01-28  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures (Swipe): Use CGSCaptureWindowsContentsToRect for now
        https://bugs.webkit.org/show_bug.cgi?id=127768
        <rdar://problem/15923662>

        Reviewed by Simon Fraser.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _takeViewSnapshot]):
        Until <rdar://problem/15709646> is resolved, we'll use
        CGSCaptureWindowsContentsToRect instead of CGWindowListCreateImage.

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

        <https://webkit.org/b/127767> Disable some deprecation warnings to fix the build.

        Reviewed by Ryosuke Niwa.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _updateWindowAndViewFrames]):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:

2014-01-28  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Add API to allow setting the process model in WebKitWebContext
        https://bugs.webkit.org/show_bug.cgi?id=125463

        Reviewed by Carlos Garcia Campos.

        Implements accessors in WebKitWebContext for the process model.
        The default behavior is unchanged, and a single web process is
        used. Using WEBKIT_PROCESS_MODEL_ONE_SECONDARY_PROCESS_PER_WEB_VIEW
        as the process model will make use one web process for each
        WebKitWebView. This also enables the network process. Setting
        the process model must be done as early as possible, before the
        very first web process is spawned.

        * UIProcess/API/gtk/WebKitWebContext.cpp:
        Add accessors in the API to get/set the process model.
        (webkit_web_context_set_process_model):
        (webkit_web_context_get_process_model):
        * UIProcess/API/gtk/WebKitWebContext.h:
        Define the WebKitProcessModel enum.
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
        Add new public API bits to the documentation.

2014-01-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Make webkit_uri_scheme_request_get_web_view() work with CustomProtocols
        https://bugs.webkit.org/show_bug.cgi?id=127614

        Reviewed by Gustavo Noronha Silva.

        * NetworkProcess/RemoteNetworkingContext.h: Remove
        initiatingPageID() method.
        * NetworkProcess/soup/RemoteNetworkingContextSoup.cpp: Ditto.
        * Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.cpp:
        (WebKit::CustomProtocolManagerImpl::send): Create the request with
        the ResourceRequest constructor that receives a SoupRequest.
        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (IPC::ArgumentCoder<ResourceRequest>::encodePlatformData): Encode initiatingPageID.
        (IPC::ArgumentCoder<ResourceRequest>::decodePlatformData): Decode initiatingPageID.
        * UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
        (webkitURISchemeRequestCreate): Remove initiatingPageID parameter
        and get it from the given ResourceRequest.
        * UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h:
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkitWebContextStartLoadingCustomProtocol): Update to
        webkitURISchemeRequestCreate API change.
        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
        (willSendRequestForFrame): Set the initiatingPageID to the ResourceRequest.
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
        (WebKit::WebFrameNetworkingContext::WebFrameNetworkingContext):
        Remove initiatingPageID() method.
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:
        * WebProcess/soup/WebSoupRequestManager.cpp:
        (WebKit::WebSoupRequestManager::send): Get the initiatingPageID
        from the SoupRequest using the ResourceRequest API.

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

        WebGLLoadPolicy::WebGLAsk is an unnecessary value.
        https://bugs.webkit.org/show_bug.cgi?id=127755

        Reviewed by Anders Carlsson.

        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toWebGLLoadPolicy):
        * UIProcess/API/C/WKPageLoaderClient.h:

2014-01-27  Brady Eidson  <beidson@apple.com>

        IDB: Cursor support - Messaging, IPC, Threading plumbing
        https://bugs.webkit.org/show_bug.cgi?id=127736

        Reviewed by Sam Weinig.

        Pipe three cursor-related calls to the DatabaseProcess, and handle messages
        from the database process when it is done handling them:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::didOpenCursor):
        (WebKit::WebIDBServerConnection::didAdvanceCursor):
        (WebKit::WebIDBServerConnection::didIterateCursor):
        (WebKit::WebIDBServerConnection::openCursor):
        (WebKit::WebIDBServerConnection::cursorAdvance):
        (WebKit::WebIDBServerConnection::cursorIterate):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        Pipe the calls through to the appropriate UniqueIDBDatabase:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::openCursor):
        (WebKit::DatabaseProcessIDBConnection::cursorAdvance):
        (WebKit::DatabaseProcessIDBConnection::cursorIterate):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        Pass the calls to the backing store thread, then message back to the WebProcess
        when the requests are complete.
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::openCursor):
        (WebKit::UniqueIDBDatabase::cursorAdvance):
        (WebKit::UniqueIDBDatabase::cursorIterate):
        (WebKit::UniqueIDBDatabase::openCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didOpenCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::advanceCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didAdvanceCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::iterateCursorInBackingStore):
        (WebKit::UniqueIDBDatabase::didIterateCursorInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * Shared/WebCrossThreadCopier.cpp:
        (WebCore::Vector<char>>::copy):
        * Shared/WebCrossThreadCopier.h:

2014-01-27  Joseph Pecoraro  <pecoraro@apple.com>

        WebKit2: Enable -Wimplicit-fallthrough and add FALLTHROUGH annotation where needed
        https://bugs.webkit.org/show_bug.cgi?id=127665

        Reviewed by Anders Carlsson.

        * Shared/UserData.cpp:
        (WebKit::UserData::encode):
        These look like they should not have fallen through!

        * Configurations/Base.xcconfig:
        * Shared/mac/ObjCObjectGraphCoders.mm:
        (WebKit::InjectedBundleObjCObjectGraphEncoderImpl::encode):

2014-01-27  Andy Estes  <aestes@apple.com>

        [WebKit2] Add SPI to disable the WebCore memory cache
        https://bugs.webkit.org/show_bug.cgi?id=127747

        Reviewed by Tim Horton.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::WebProcessCreationParameters):
        Initialized memoryCacheDisabled to false.
        (WebKit::WebProcessCreationParameters::encode):
        Encoded memoryCacheDisabled.
        (WebKit::WebProcessCreationParameters::decode):
        Decoded memoryCacheDisabled.
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetMemoryCacheDisabled):
        Called WebContext::setMemoryCacheDisabled().
        * UIProcess/API/C/WKContextPrivate.h: Declared new SPI.
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::WebContext): Initialized m_memoryCacheDisabled to false.
        (WebKit::WebContext::createNewWebProcess):
        Set WebProcessCreationParameters::memoryCacheDisabled to m_memoryCacheDisabled.
        (WebKit::WebContext::setMemoryCacheDisabled): Set m_memoryCacheDisabled
        and sent new value to all existing processes.
        * UIProcess/WebContext.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        Called WebProcess::setMemoryCacheDisabled().
        (WebKit::WebProcess::setMemoryCacheDisabled):
        Called MemoryCache::setDisabled() if the disabled state changed.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2014-01-27  Anders Carlsson  <andersca@apple.com>

        Add -[WKWebView loadRequest:] API
        https://bugs.webkit.org/show_bug.cgi?id=127727

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        (-[WKWebView loadRequest:]):

2014-01-27  Brady Eidson  <beidson@apple.com>

        IDB: Rename "IDBTransactionIdentifier" to be more general purpose (take 2)
        https://bugs.webkit.org/show_bug.cgi?id=127717

        Reviewed by Tim Horton.

        Update all related variable names since the type no longer contains the relevant info.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp:
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:
        * Shared/WebCrossThreadCopier.cpp:

2014-01-27  Anders Carlsson  <andersca@apple.com>

        Copy relevant code from the iOS version of WKView to WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=127721

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:configuration:]):
        (-[WKWebView setFrame:]):
        (-[WKWebView setBounds:]):
        (-[WKWebView scrollView]):
        (-[WKWebView browsingContextController]):
        (-[WKWebView contentView:contentsSizeDidChange:]):
        (-[WKWebView contentViewDidCommitLoadForMainFrame:]):
        (-[WKWebView contentViewDidReceiveMobileDocType:]):
        (-[WKWebView contentView:didChangeViewportArgumentsSize:initialScale:minimumScale:maximumScale:allowsUserScaling:]):
        (-[WKWebView viewportHandlerDidChangeScales:]):
        (-[WKWebView viewportHandler:didChangeViewportSize:]):
        (-[WKWebView viewForZoomingInScrollView:]):
        (-[WKWebView scrollViewWillBeginZooming:withView:]):
        (-[WKWebView _didFinishScroll]):
        (-[WKWebView scrollViewDidEndDragging:willDecelerate:]):
        (-[WKWebView scrollViewDidEndDecelerating:]):
        (-[WKWebView scrollViewDidScrollToTop:]):
        (-[WKWebView scrollViewDidScroll:]):
        (-[WKWebView scrollViewDidEndZooming:withView:atScale:]):
        (-[WKWebView _frameOrBoundsChanged]):
        (-[WKWebView _setDocumentScale:]):

2014-01-27  Tim Horton  <timothy_horton@apple.com>

        Revert the parts of r162629 that add a new pluginLoadPolicy and the context menu item.

        We're leaving the parts that make us use PDFPlugin instead of showing the blocked
        plugin indicator intact, though.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::pluginLoadPolicy):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/C/WKPageLoaderClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::findPlugin):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/Plugins/PDF/PDFPlugin.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::PDFPlugin):
        (WebKit::PDFPlugin::handleContextMenuEvent):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::createPlugin):
        (WebKit::WebPage::canPluginHandleResponse):

2014-01-27  Anders Carlsson  <andersca@apple.com>

        Add a WKContentView initializer that takes a WKWebViewConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=127718

        Reviewed by Tim Horton.

        This initializer will be used by WKWebView.

        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView initWithFrame:configuration:]):

2014-01-27  Andy Estes  <aestes@apple.com>

        Scrub WebKit API headers of WTF macros
        https://bugs.webkit.org/show_bug.cgi?id=127706

        Reviewed by David Kilzer.

        * Configurations/FeatureDefines.xcconfig: Added ENABLE_INSPECTOR.

2014-01-27  Tim Horton  <timothy_horton@apple.com>

        Crashes in RemoteScrollingCoordinatorProxy::rootScrollingNodeID

        Reviewed by Simon Fraser.

        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::rootScrollingNodeID):
        Null-check the root scrolling node, in case something scrolls before
        we've made the first remote layer/scrolling tree commit.

2014-01-27  Brady Eidson  <beidson@apple.com>

        IDB: Rename "IDBTransactionIdentifier" to be more general purpose
        https://bugs.webkit.org/show_bug.cgi?id=127717

        Reviewed by Tim Horton.

        Global rename of IDBTransactionIdentifier to IDBIdentifier.

        * DatabaseProcess/IndexedDB/IDBIdentifier.h: Renamed from Source/WebKit2/DatabaseProcess/IndexedDB/IDBTransactionIdentifier.h.

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp:
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.h:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * Shared/WebCrossThreadCopier.cpp:
        * Shared/WebCrossThreadCopier.h:

        * WebKit2.xcodeproj/project.pbxproj:

2014-01-27  Anders Carlsson  <andersca@apple.com>

        Move underlying C++ objects to class extensions
        https://bugs.webkit.org/show_bug.cgi?id=127716

        Reviewed by Tim Horton.

        This allows us to get at the internals without calling any Obj-C methods.

        * UIProcess/API/Cocoa/WKProcessClass.mm:
        * UIProcess/API/Cocoa/WKProcessClassInternal.h:
        * UIProcess/API/ios/WKContentView.mm:
        * UIProcess/API/ios/WKContentViewInternal.h:

2014-01-27  Anders Carlsson  <andersca@apple.com>

        Implement the _injectedBundleURL property
        https://bugs.webkit.org/show_bug.cgi?id=127714

        Reviewed by Tim Horton.

        Properties declared in class categories need to be implemented. Do this
        for the _injectedBundleURL property.

        * UIProcess/API/Cocoa/WKProcessClassConfiguration.mm:
        (-[WKProcessClassConfiguration _injectedBundleURL]):
        (-[WKProcessClassConfiguration _setInjectedBundleURL:]):

2014-01-27  Brady Eidson  <beidson@apple.com>

        IDB: LevelDB backing store shouldn't know about IDBCursor or IDBCallbacks
        https://bugs.webkit.org/show_bug.cgi?id=127708

        Reviewed by Tim Horton.

        Update to new callback signatures:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::cursorAdvance):
        (WebKit::WebIDBServerConnection::cursorIterate):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:

2014-01-27  Anders Carlsson  <andersca@apple.com>

        Tweak the WKWebView and WKWebViewConfiguration headers
        https://bugs.webkit.org/show_bug.cgi?id=127705

        Reviewed by Dan Bernstein.

        Add WK_API_CLASS to WKWebView and make WKWebView.h and WKWebViewConfiguration.h public.

        * UIProcess/API/Cocoa/WKWebView.h:
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-27  Brady Eidson  <beidson@apple.com>

        IDB: Remove unused concept of "cursor prefetch"
        https://bugs.webkit.org/show_bug.cgi?id=127700

        Reviewed by Tim Horton.

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

2014-01-27  Tim Horton  <timothy_horton@apple.com>

        Fix the build on case-sensitive filesystems

        * WebProcess/WebPage/ViewGestureGeometryCollector.h:

2014-01-27  Brady Eidson  <beidson@apple.com>

        IDB: Refactor out the last of the operation callbacks that are called by the LevelDB backing store
        https://bugs.webkit.org/show_bug.cgi?id=127592

        Reviewed by Tim Horton.

        Update the WebIDBServerConnection to the new callback signatures:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::openCursor):
        (WebKit::WebIDBServerConnection::count):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:

2014-01-27  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures: Fluid back-forward swipe
        https://bugs.webkit.org/show_bug.cgi?id=127363

        Reviewed by Anders Carlsson.

        Add support for a "back-forward swipe", which allows fluid swiping between
        items in the back-forward list. Currently disabled by default.

        * Shared/WebPreferencesStore.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetViewGestureDebuggingEnabled):
        (WKPreferencesGetViewGestureDebuggingEnabled):
        * UIProcess/API/C/WKPreferencesPrivate.h:
        Add a ViewGestureDebuggingEnabled preference, which currently causes snapshots to be blurred.
        Additional view gesture debugging features could come in the future.

        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _ensureGestureController]):
        (-[WKView scrollWheel:]):
        If back-forward navigation gestures are enabled, intercept scrollWheel events
        on the WKView and let the ViewGestureController take the first crack at them.

        (-[WKView setAllowsBackForwardNavigationGestures:]):
        (-[WKView allowsBackForwardNavigationGestures]):
        * UIProcess/API/mac/WKViewInternal.h:
        Add allowsBackForwardNavigationGesture property, which enables the gesture.

        * UIProcess/mac/ViewGestureController.h:
        Add swipe-related methods, which will be described below.

        Add an enum for the swipe transition style. Currently only Overlap is accessible,
        but in the future one could see having API to choose the style.
        'Overlap' has the outgoing page swipe out to the right (when swiping right)
        or the incoming page swipe in from the right (when swiping left).
        'Push' has the pages push each other along in sync, as if all the pages in the
        back-forward list were oriented from left to right.

        * UIProcess/mac/ViewGestureController.messages.in:
        * UIProcess/mac/ViewGestureController.mm: Renamed from Source/WebKit2/UIProcess/mac/ViewGestureController.cpp.
        Use some CAFilter SPI to blur the snapshot if ViewGestureDebuggingEnabled is on.

        (WebKit::ViewGestureController::ViewGestureController):
        (WebKit::ViewGestureController::~ViewGestureController):
        (WebKit::ViewGestureController::endMagnificationGesture):
        Move m_activeGestureType clearing to each end* function instead of one global place,
        so that each gesture can handle when it ends separately.

        (WebKit::ViewGestureController::handleScrollWheelEvent):
        If we receive a scroll wheel event which is appropriate for starting a
        fluid swipe, in a direction where the main frame is pinned to the appropriate
        edge of the view, start tracking a swipe.

        This should eventually have some hysterisis to avoid stealing scrolls that
        venture into the wrong direction, but for now it starts tracking immediately.

        Forward events from the tracking loop to {begin, handle, end}SwipeGesture.

        (WebKit::ViewGestureController::beginSwipeGesture):
        Create a layer with the destination page's snapshot, and set it up.

        (WebKit::ViewGestureController::handleSwipeGesture):
        Appropriately adjust the position of the root layer and snapshot layer,
        given the transition style and swipe direction.

        (WebKit::ViewGestureController::endSwipeGesture):
        When the gesture ends, do the navigation, and tell the WebProcess to
        inform us when the render tree hits half the size it was when the
        snapshot was taken (when that happens, we will remove the snapshot
        and the gesture will be truly complete). Also, start a watchdog timer
        in case the render tree never hits that size, after which we will
        also remove the snapshot.

        (WebKit::ViewGestureController::didHitRenderTreeSizeThreshold):
        (WebKit::ViewGestureController::swipeSnapshotWatchdogTimerFired):
        (WebKit::ViewGestureController::removeSwipeSnapshot):
        Tear down the swipe snapshot layer, and mark our current gesture as complete.

        (WebKit::ViewGestureController::endActiveGesture):
        Simplify endActiveGesture; it only has work to do for a pinch-zoom gesture,
        as those are the only gestures where the user is directly in control of when they end.

        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
        (WebKit::ViewGestureGeometryCollector::ViewGestureGeometryCollector):
        (WebKit::ViewGestureGeometryCollector::mainFrameDidLayout):
        (WebKit::ViewGestureGeometryCollector::renderTreeSizeNotificationTimerFired):
        * WebProcess/WebPage/ViewGestureGeometryCollector.h:
        (WebKit::ViewGestureGeometryCollector::setRenderTreeSizeNotificationThreshold):
        * WebProcess/WebPage/ViewGestureGeometryCollector.messages.in:
        ViewGestureController pushes a render-tree size threshold to the WebProcess;
        ViewGestureGeometryCollector (whose name is now more unfortunate than before)
        monitors render-tree size changes and informs ViewGestureController when
        it reaches that threshold via the 'DidHitRenderTreeSizeThreshold' message.

        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::acceleratedCompositingRootLayer):
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::acceleratedCompositingRootLayer):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _acceleratedCompositingModeRootLayer]):
        * UIProcess/API/mac/WKViewInternal.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::acceleratedCompositingRootLayer):
        Add a getter for the accelerated compositing root layer.

        * UIProcess/mac/ViewSnapshotStore.mm:
        (WebKit::ViewSnapshotStore::snapshotAndRenderTreeSize):
        Don't extract the CGImageRef from a RetainPtr just to put it back in one.

2014-01-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Implement custom URI schemes with CustomProtocols
        https://bugs.webkit.org/show_bug.cgi?id=127091

        Reviewed by Gustavo Noronha Silva.

        The old classes are no longer built for GTK+ and should be removed once
        other ports using soup backend switch to custom protocols implementation.

        * GNUmakefile.am: Remove include path.
        * GNUmakefile.list.am: Remove files from compilation.
        * PlatformGTK.cmake: Ditto.
        * UIProcess/API/gtk/WebKitPrivate.h:
        * UIProcess/API/gtk/WebKitRequestManagerClient.cpp:
        (startLoading):
        (stopLoading):
        (attachRequestManagerClientToContext):
        * UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
        (webkitURISchemeRequestCreate):
        (webkit_uri_scheme_request_get_web_view):
        (webkitURISchemeRequestReadCallback):
        (webkit_uri_scheme_request_finish):
        (webkit_uri_scheme_request_finish_error):
        * UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h:
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (createDefaultWebContext):
        (webkit_web_context_register_uri_scheme):
        (webkitWebContextGetRequestManager):
        (webkitWebContextStartLoadingCustomProtocol):
        (webkitWebContextStopLoadingCustomProtocol):
        (webkitWebContextDidFinishLoadingCustomProtocol):
        * UIProcess/API/gtk/WebKitWebContextPrivate.h:
        * UIProcess/gtk/WebContextGtk.cpp:
        (WebKit::WebContext::platformInitializeWebProcess):
        * WebKit2Prefix.h: Enable CustomProtocols unconditionally for the
        GTK+ port.

2014-01-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] WebProcess sometimes crashes when a download is cancelled
        https://bugs.webkit.org/show_bug.cgi?id=127650

        Reviewed by Martin Robinson.

        The problem is that when the download is cancelled, the download
        manager removes the download from the map and it's deleted. The
        Download destructor calls platformInvalidate() that cancels the
        resource handle if there's still one. We set to nullptr the
        ResourceHandle when the download is cancelled to avoid cancelling
        it twice, but it's done after calling Download::didCancel(). It
        should be done before, because at that moment, when the download
        is deleted, the resource handle pointer is still valid.

        * Shared/Downloads/soup/DownloadSoup.cpp:
        (WebKit::Download::cancel):

2014-01-25  Sam Weinig  <sam@webkit.org>

        Remove unused support for DRAGGABLE_REGION
        https://bugs.webkit.org/show_bug.cgi?id=127642

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2014-01-25  Anders Carlsson  <andersca@apple.com>

        Remove an unused FrameLoaderClient function
        https://bugs.webkit.org/show_bug.cgi?id=127628

        Reviewed by Andreas Kling.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2014-01-25  Anders Carlsson  <andersca@apple.com>

        Remove atomicIncrement/atomicDecrement
        https://bugs.webkit.org/show_bug.cgi?id=127625

        Reviewed by Andreas Kling.

        Replace atomicIncrement/atomicDecrement with std::atomic.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::createSyncMessageEncoder):
        * Shared/mac/SecItemShim.cpp:
        (WebKit::generateSecItemRequestID):
        * UIProcess/StatisticsRequest.cpp:
        (WebKit::StatisticsRequest::addOutstandingRequest):

2014-01-25  Anders Carlsson  <andersca@apple.com>

        Modernize HashTable threading code
        https://bugs.webkit.org/show_bug.cgi?id=127621

        Reviewed by Darin Adler.

        Explicitly include headers that used to be brought in by HashTable.h

        * Shared/BlockingResponseMap.h:

2014-01-25  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Remove null check for WebPopupMenuProxy::Client in WebPopupMenuProxyGtk::showPopupMenu
        https://bugs.webkit.org/show_bug.cgi?id=107036

        Reviewed by Andreas Kling.

        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
        (WebKit::WebPopupMenuProxyGtk::showPopupMenu): Don't perform an early return
        if the client is not available - it always should be. The client is set to null
        only when the proxy is invalidated. This happens immediately after this function
        returns, either with the popup being forced to close or being closed by the user
        with possibly an item being chosen. Rather than the early return, use an ASSERT.

2014-01-24  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures (Smart Zoom): Can't double-tap zoom-out on the body
        https://bugs.webkit.org/show_bug.cgi?id=127602

        Reviewed by Anders Carlsson.

        * UIProcess/mac/ViewGestureController.h:
        * UIProcess/mac/ViewGestureController.mm:
        (WebKit::ViewGestureController::ViewGestureController):
        (WebKit::ViewGestureController::didCollectGeometryForSmartMagnificationGesture):
        Use an explicit boolean instead of the emptiness of the renderRect() to determine
        whether or not the user has already smart-zoomed. renderRect() can be 0x0
        if our hit-test hits the body element.

2014-01-24  Jinwoo Song  <jinwoo7.song@samsung.com>

        Fix EFL WebKit2 build.

        * WebProcess/WebPage/efl/WebPageEfl.cpp:
        (WebKit::WebPage::performDefaultBehaviorForKeyEvent):

2014-01-24  Anders Carlsson  <andersca@apple.com>

        Fix GTK+ WebKit2 build.

        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::performDefaultBehaviorForKeyEvent):

2014-01-24  Simon Fraser  <simon.fraser@apple.com>

        Start using the RemoteScrollingCoordinatorProxy on iOS
        https://bugs.webkit.org/show_bug.cgi?id=127598

        Reviewed by Tim Horton.

        Add a scrollPositionChangedViaDelegatedScrolling() function to
        ScrollingTree, allowing the ScrollingTree to be informed about
        external sources of scrolling.
        
        Call it from -[WKContentView didScrollTo:] for the root node.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView didScrollTo:]):
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::rootScrollingNodeID):
        (WebKit::RemoteScrollingCoordinatorProxy::scrollPositionChangedViaDelegatedScrolling):
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:

2014-01-24  Anders Carlsson  <andersca@apple.com>

        Try to fix the GTK+ build.

        * GNUmakefile.list.am:

2014-01-24  Anders Carlsson  <andersca@apple.com>

        Remove back/forward list related functions from Page
        https://bugs.webkit.org/show_bug.cgi?id=127596

        Reviewed by Andreas Kling.

        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::performNonEditingBehaviorForSelector):

2014-01-24  Jinwoo Song  <jinwoo7.song@samsung.com>

        Unreviewed build fix attemp on the EFL after r162728.

        * CMakeLists.txt: Removed WebLoaderClient.cpp

2014-01-24  Simon Fraser  <simon.fraser@apple.com>

        Prepare scrolling tree to handle > 1 scrolling node
        https://bugs.webkit.org/show_bug.cgi?id=127590

        Reviewed by Tim Horton.
        
        Clean up the code path called after the ScrollingTree has scrolled a node,
        to prepare for multiple scrolling nodes.
        
        Change "updateMainFrameScrollPosition" terminology to "updateScrollPositionAfterAsyncScroll",
        and pass along the ScrollingNodeID that scrolled.

        * UIProcess/Scrolling/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::scrollingTreeNodeDidScroll):
        * UIProcess/Scrolling/RemoteScrollingTree.h:
        * WebProcess/Scrolling/RemoteScrollingCoordinator.mm:
        (WebKit::RemoteScrollingCoordinator::scrollPositionChangedForNode):

2014-01-24  Simon Fraser  <simon.fraser@apple.com>

        #ifdef out handleWheelEventPhase for iOS
        https://bugs.webkit.org/show_bug.cgi?id=127583

        Reviewed by Tim Horton.

        handleWheelEventPhase() doesn't make any sense for iOS, which
        has no wheel events.

        * UIProcess/Scrolling/RemoteScrollingTree.cpp:
        * UIProcess/Scrolling/RemoteScrollingTree.h:

2014-01-24  Simon Fraser  <simon.fraser@apple.com>

        Push a custom fixed position rect down to the WebProcess in iOS WK2
        https://bugs.webkit.org/show_bug.cgi?id=127573

        Reviewed by Tim Horton.
        
        Make it possible for WKContentView to specify a custom rect
        used to layout fixed position elements on iOS.
        
        This is computed in WKContentView, and pushed down
        through the RemoteLayerTreeDrawingArea, and eventually
        pushed onto FrameView.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView fixedPositionRectFromExposedRect:scale:]):
        (-[WKContentView _updateFixedPositionRect]):
        (-[WKContentView didFinishScrollTo:]):
        (-[WKContentView didZoomToScale:]):
        * UIProcess/DrawingAreaProxy.cpp:
        (WebKit::DrawingAreaProxy::setCustomFixedPositionRect):
        * UIProcess/DrawingAreaProxy.h:
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::setCustomFixedPositionRect):

2014-01-24  Anders Carlsson  <andersca@apple.com>

        Get rid of WebLoaderClient
        https://bugs.webkit.org/show_bug.cgi?id=127587

        Reviewed by Andreas Kling.

        Move WebLoaderClient into WKPage.cpp.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController setLoadDelegate:]):
        * UIProcess/WebLoaderClient.cpp: Removed.
        * UIProcess/WebLoaderClient.h: Removed.
        * UIProcess/WebPageProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-24  Brady Eidson  <beidson@apple.com>

        IDB: Support createIndex/deleteIndex
        <rdar://problem/15779642> and https://bugs.webkit.org/show_bug.cgi?id=127585

        Reviewed by Tim Horton.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::createIndex):
        (WebKit::UniqueIDBDatabase::deleteIndex):
        (WebKit::UniqueIDBDatabase::createIndexInBackingStore):
        (WebKit::UniqueIDBDatabase::deleteIndexInBackingStore):

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteObjectStore): Also drop all associated indexes.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createIndex):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteIndex):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

2014-01-24  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>

        [GTK] youtube HTML5 videos in fullscreen, after <Esc>, can't go fullscreen again
        https://bugs.webkit.org/show_bug.cgi?id=127064

        When pressing <Esc> or <f> at full screen, the WebView shall emit the
        event webkitfullscreenchange, but wk2gtk does not emit it. This is
        because the WebView manages directly the exit of the full screen.

        With this patch the WebView calls requestExitFullScreen to the full
        screen manager, instead of managing directly the exit of the full
        screen, and the event webkitfullscreenchange will be dispatched
        correctly.

        Reviewed by Martin Robinson.

        No tests are included because there is a bug in WKTR that prevents the
        execution of a test for this patch. See
        https://bugs.webkit.org/show_bug.cgi?id=127348

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseKeyPressEvent): Call
        webkitWebViewBaseRequestExitFullScreen.
        (webkitWebViewBaseRequestExitFullScreen): Added.
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: Ditto.

2014-01-24  Tim Horton  <timothy_horton@apple.com>

        iOS build fix after r162710.

        This is why these sorts of comments are bad.

        * UIProcess/WebPageProxy.cpp:

2014-01-24  Anders Carlsson  <andersca@apple.com>

        Use a side table to map WebPageProxy objects to WKBrowsingContextController objects
        https://bugs.webkit.org/show_bug.cgi?id=127577

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (browsingContextControllerMap):
        (-[WKBrowsingContextController dealloc]):
        (-[WKBrowsingContextController _initWithPageRef:]):
        (+[WKBrowsingContextController _browsingContextControllerForPageRef:]):
        * UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h:
        * UIProcess/WebPageProxy.h:

2014-01-24  Tim Horton  <timothy_horton@apple.com>

        iOS build fix after r162710.

        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::takeViewSnapshot):

2014-01-24  Enrique Ocaña González  <eocanha@igalia.com>

        [GTK] Put cache files in XDG_CACHE_HOME
        https://bugs.webkit.org/show_bug.cgi?id=123458

        Reviewed by Martin Robinson.

        * UIProcess/gtk/WebContextGtk.cpp:
        (WebKit::WebContext::platformDefaultIconDatabasePath):

2014-01-24  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures (Swipe): Add a simple cache of view snapshots
        https://bugs.webkit.org/show_bug.cgi?id=127438

        Reviewed by Sam Weinig.

        Add a cache of bitmap snapshots of the WKView, taken via OS X's window server
        snapshotting mechanism. For now, we store all snapshots; refinements to the
        caching strategy (or really having one at all) will come in future patches.

        Snapshots are stored in a side map, with a UUID that allows references
        to be stored inside WebBackForwardListItem (and serialized along with
        the back-forward list when it is copied).

        * Shared/WebBackForwardListItem.h:
        (WebKit::WebBackForwardListItem::setSnapshotUUID):
        (WebKit::WebBackForwardListItem::snapshotUUID):
        * UIProcess/cf/WebBackForwardListCF.cpp:
        (WebKit::WebBackForwardList::createCFDictionaryRepresentation):
        (WebKit::extractBackForwardListEntriesFromArray):
        Store and serialize a UUID along with each back-forward list item which
        identifies that item's view snapshot in the ViewSnapshotStore.

        * UIProcess/cf/WebPageProxyCF.cpp:
        Bump the session state data version, as we changed the WebBackForwardList format.

        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::takeViewSnapshot):

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _takeViewSnapshot]):
        Add _takeViewSnapshot IPI, which is used by ViewSnapshotStore via the PageClient
        to take a snapshot of the view.

        (-[WKView saveBackForwardSnapshotForCurrentItem]):
        Add saveBackForwardSnapshotForCurrentItem SPI, which clients could potentially
        use when they know they're about to manipulate the view hierarchy in such a way
        that they want the current back-forward item's snapshot to be up to date.

        * UIProcess/API/mac/WKViewInternal.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::recordNavigationSnapshot):
        (WebKit::WebPageProxy::goForward):
        (WebKit::WebPageProxy::goBack):
        (WebKit::WebPageProxy::goToBackForwardItem):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        Update the current back-forward item's snapshot immediately before navigating.

        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::shouldRecordNavigationSnapshots):
        (WebKit::WebPageProxy::setShouldRecordNavigationSnapshots):
        Expose the ability to enable taking view snapshots on every navigation.
        This is off by default, so we won't be taking any snapshots yet.

        * UIProcess/mac/ViewSnapshotStore.h: Added.
        (WebKit::ViewSnapshotStore::disableSnapshotting):
        (WebKit::ViewSnapshotStore::enableSnapshotting):
        * UIProcess/mac/ViewSnapshotStore.mm: Added.
        (WebKit::ViewSnapshotStore::ViewSnapshotStore):
        (WebKit::ViewSnapshotStore::~ViewSnapshotStore):
        (WebKit::ViewSnapshotStore::shared):
        (WebKit::ViewSnapshotStore::recordSnapshot):
        (WebKit::ViewSnapshotStore::snapshotAndRenderTreeSize):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::takeViewSnapshot):
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-24  Brady Eidson  <beidson@apple.com>

        IDB: support createIndex/deleteIndex messaging
        https://bugs.webkit.org/show_bug.cgi?id=127546

        Reviewed by Tim Horton.

        Message create/delete requests over to the DatabaseProcess, and listen to its replies:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::createIndex):
        (WebKit::WebIDBServerConnection::didCreateIndex):
        (WebKit::WebIDBServerConnection::deleteIndex):
        (WebKit::WebIDBServerConnection::didDeleteIndex):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        Pass create/delete requests to the appropriate unique IDB database:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::createIndex):
        (WebKit::DatabaseProcessIDBConnection::deleteIndex):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        Message the create/delete request to the database thread for the backing store to handle:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::didCreateIndex):
        (WebKit::UniqueIDBDatabase::didDeleteIndex):
        (WebKit::UniqueIDBDatabase::createIndex):
        (WebKit::UniqueIDBDatabase::deleteIndex):
        (WebKit::UniqueIDBDatabase::createIndexInBackingStore):
        (WebKit::UniqueIDBDatabase::deleteIndexInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * Scripts/webkit2/messages.py:
        (struct_or_class):

2014-01-24  Csaba Osztrogonác  <ossy@webkit.org>

        [EFL][WK2] Debug buildfix
        https://bugs.webkit.org/show_bug.cgi?id=127496

        Reviewed by Gyuyoung Kim.

        * Shared/SessionTracker.cpp:

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

        IDB: Support IDBObjectStore.clear()
        https://bugs.webkit.org/show_bug.cgi?id=127541

        Reviewed by Anders Carlsson.

        Make the WebProcess call out to the DatabaseProcess with a clear request, and handle the
        response from the DatabaseProcess:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::clearObjectStore):
        (WebKit::WebIDBServerConnection::didClearObjectStore):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        Pass the clear request to the appropriate UniqueIDBDatabase:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::clearObjectStore):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        Pass the clear request to the backing store:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::didClearObjectStore):
        (WebKit::UniqueIDBDatabase::clearObjectStore):
        (WebKit::UniqueIDBDatabase::clearObjectStoreInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        Actually drop the records in the database:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::clearObjectStore):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Fix crash when opening the inspector
        https://bugs.webkit.org/show_bug.cgi?id=127542
        <rdar://problem/15899544>

        Reviewed by Joseph Pecoraro.

        Create default clients so we won't crash if they're never set.

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

2014-01-23  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix attemp on the EFL and GTK build after r162678

        * CMakeLists.txt: Removed WebPolicyClient.cpp
        * GNUmakefile.list.am: Removed WebPolicyClient.cpp and WebPolicyClient.h

2014-01-23  Yongjun Zhang  <yongjun_zhang@apple.com>

        Support NSInteger argument type for encoding/decoding invocations.
        https://bugs.webkit.org/show_bug.cgi?id=127522

        Reviewed by Dan Bernstein.

        Add support for NSInteger argument type ('q') for remote invocations.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (encodeInvocation):
        (decodeInvocationArguments):

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

        IDB: Implement SQLite backing store 'get' support
        https://bugs.webkit.org/show_bug.cgi?id=127502

        Reviewed by Tim Horton.

        This makes get of a single IDBKey work, and lays the groundwork for getting an IDBKeyRange.

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::getRecordFromBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata): Add custom collation
          to the Records table.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getOrEstablishMetadata): Install the custom collator.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getKeyRecordFromObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getKeyRangeRecordFromObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::collate): Collation function to be filled in later.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

2014-01-23  Jon Honeycutt  <jhoneycutt@apple.com>

        Assertion failure in WebCore::PseudoElement::didRecalcStyle()
        <https://bugs.webkit.org/show_bug.cgi?id=126761>
        <rdar://problem/15793540>

        Reviewed by Andy Estes.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getPositionInformation):
        Check isRenderImage() rather than isImage() before casting to
        RenderImage.

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Move policy client into WKPage.cpp and get rid of WebPolicyClient files
        https://bugs.webkit.org/show_bug.cgi?id=127536

        Reviewed by Tim Horton.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPagePolicyClient):
        * UIProcess/WebPolicyClient.cpp: Removed.
        * UIProcess/WebPolicyClient.h: Removed.
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-23  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove recompileAllJSFunctions timer in ScriptDebugServer
        https://bugs.webkit.org/show_bug.cgi?id=127409

        Reviewed by Geoffrey Garen.

        * WebProcess/WebCoreSupport/WebInspectorFrontendClient.cpp:
        (WebKit::WebInspectorFrontendClient::closeWindow):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::remoteFrontendDisconnected):
        Include InspectorDisconnectReason.

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Only WKPage should know about WebPolicyClient
        https://bugs.webkit.org/show_bug.cgi?id=127535

        Reviewed by Andreas Kling.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (setUpPagePolicyClient):
        (-[WKBrowsingContextController setPolicyDelegate:]):
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::createInspectorPage):

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Simplify API::LoaderClient management
        https://bugs.webkit.org/show_bug.cgi?id=127531

        Reviewed by Tim Horton.

        Add default implementations to API::LoaderClient and change WebPageProxy::setLoaderClient to
        always create a policy client, even if the loader client set is null. That way we don't have to null
        check the loader client everywhere.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didStartProvisionalLoadForFrame):
        (API::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
        (API::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
        (API::LoaderClient::didCommitLoadForFrame):
        (API::LoaderClient::didFinishDocumentLoadForFrame):
        (API::LoaderClient::didFinishLoadForFrame):
        (API::LoaderClient::didFailLoadWithErrorForFrame):
        (API::LoaderClient::didSameDocumentNavigationForFrame):
        (API::LoaderClient::didReceiveTitleForFrame):
        (API::LoaderClient::didFirstLayoutForFrame):
        (API::LoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
        (API::LoaderClient::didRemoveFrameFromHierarchy):
        (API::LoaderClient::didDisplayInsecureContentForFrame):
        (API::LoaderClient::didRunInsecureContentForFrame):
        (API::LoaderClient::didDetectXSSForFrame):
        (API::LoaderClient::didLayout):
        (API::LoaderClient::canAuthenticateAgainstProtectionSpaceInFrame):
        (API::LoaderClient::didReceiveAuthenticationChallengeInFrame):
        (API::LoaderClient::didStartProgress):
        (API::LoaderClient::didChangeProgress):
        (API::LoaderClient::didFinishProgress):
        (API::LoaderClient::processDidBecomeUnresponsive):
        (API::LoaderClient::interactionOccurredWhileProcessUnresponsive):
        (API::LoaderClient::processDidBecomeResponsive):
        (API::LoaderClient::processDidCrash):
        (API::LoaderClient::didChangeBackForwardList):
        (API::LoaderClient::willGoToBackForwardListItem):
        (API::LoaderClient::pluginLoadPolicy):
        (API::LoaderClient::didFailToInitializePlugin):
        (API::LoaderClient::didBlockInsecurePluginVersion):
        (API::LoaderClient::webGLLoadPolicy):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setLoaderClient):
        (WebKit::WebPageProxy::didChangeBackForwardList):
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        (WebKit::WebPageProxy::findPlugin):
        (WebKit::WebPageProxy::didStartProgress):
        (WebKit::WebPageProxy::didChangeProgress):
        (WebKit::WebPageProxy::didFinishProgress):
        (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::webGLPolicyForURL):
        (WebKit::WebPageProxy::processDidBecomeUnresponsive):
        (WebKit::WebPageProxy::interactionOccurredWhileProcessUnresponsive):
        (WebKit::WebPageProxy::processDidBecomeResponsive):
        (WebKit::WebPageProxy::processDidCrash):
        (WebKit::WebPageProxy::canAuthenticateAgainstProtectionSpaceInFrame):
        (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
        (WebKit::WebPageProxy::didFailToInitializePlugin):
        (WebKit::WebPageProxy::didBlockInsecurePluginVersion):

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Simplify API::PolicyClient management
        https://bugs.webkit.org/show_bug.cgi?id=127529

        Reviewed by Tim Horton.

        Add default implementations to API::PolicyClient and change WebPageProxy::setPolicyClient to
        always create a policy client, even if the policy object set is null. That way we don't have to null
        check the policy client everywhere.

        * UIProcess/API/APIPolicyClient.h:
        (API::PolicyClient::decidePolicyForNavigationAction):
        (API::PolicyClient::decidePolicyForNewWindowAction):
        (API::PolicyClient::decidePolicyForResponse):
        (API::PolicyClient::unableToImplementPolicy):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setPolicyClient):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::unableToImplementPolicy):

2014-01-23  Simon Fraser  <simon.fraser@apple.com>

        Fix GTK.

        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
        (webkitWebPageDidReceiveMessage):

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Add an APILoaderClient base class
        https://bugs.webkit.org/show_bug.cgi?id=127527

        Reviewed by Tim Horton.

        * UIProcess/API/APILoaderClient.h: Added.
        (API::LoaderClient::~LoaderClient):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (setUpPageLoaderClient):
        (-[WKBrowsingContextController setLoadDelegate:]):
        (+[WKBrowsingContextController _browsingContextControllerForPageRef:]):
        * UIProcess/WebLoaderClient.cpp:
        (WebKit::WebLoaderClient::WebLoaderClient):
        * UIProcess/WebLoaderClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setLoaderClient):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::didChangeBackForwardList):
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        (WebKit::WebPageProxy::findPlugin):
        (WebKit::WebPageProxy::didStartProgress):
        (WebKit::WebPageProxy::didChangeProgress):
        (WebKit::WebPageProxy::didFinishProgress):
        (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::webGLPolicyForURL):
        (WebKit::WebPageProxy::processDidBecomeUnresponsive):
        (WebKit::WebPageProxy::interactionOccurredWhileProcessUnresponsive):
        (WebKit::WebPageProxy::processDidBecomeResponsive):
        (WebKit::WebPageProxy::processDidCrash):
        (WebKit::WebPageProxy::canAuthenticateAgainstProtectionSpaceInFrame):
        (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
        (WebKit::WebPageProxy::didFailToInitializePlugin):
        (WebKit::WebPageProxy::didBlockInsecurePluginVersion):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::loaderClient):
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-23  Ryuan Choi  <ryuan.choi@samsung.com>

        Build break after r162650
        https://bugs.webkit.org/show_bug.cgi?id=127525

        Reviewed by Anders Carlsson.

        WKPreferences.h was renamed to WKPreferencesRef.

        * UIProcess/API/C/WKPreferences.cpp:

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Fix a refactoring bug that crept in and is causing the inspector to crash.

        * UIProcess/WebPolicyClient.cpp:
        (WebKit::WebPolicyClient::decidePolicyForResponse):

2014-01-23  Simon Fraser  <simon.fraser@apple.com>

        Make visibleContentRect() return actualVisibleContentRect() on iOS most of the time
        https://bugs.webkit.org/show_bug.cgi?id=127456
        
        Reviewed by Antti Koivisto.
        
        On iOS, visibleContentRect() returns the entire document rect for historical
        reasons, and actualVisibleContentRect() returns what visibleContentRect()
        returns on other platforms.
        
        In addition, actualVisibleContentRect() was returning an empty rect in WK2.
        
        Reduce the confusion of #ifdefs by making visibleContentRect() behave like
        actualVisibleContentRect() by default on iOS. Where it needs the old behavior,
        an optional parameter, LegacyIOSDocumentVisibleRect, provides this.
        
        Achieve this by having the virtual ScrollableArea::visibleContentRectInternal(),
        which is called by non-virtual visibleContentRect() and visibleContentRectIncludingScrollbars().
        
        Similarly clean up visibleHeight/visibleWidth functions by having visibleSize() be virtual,
        with non-virtual visibleHeight() and visibleWidth().
        
        ScrollableArea subclasses override visibleContentRectInternal() and visibleSize() where necessary.
        
        Mechanically change all the call sites of actualVisibleContentRect() to
        use visibleContentRect(), and the call sites of visibleContentRect()
        to visibleContentRect(..., LegacyIOSDocumentVisibleRect), adding comments
        where this may not be appropriate.
        
        Change callers of visibleContentRect(IncludeScrollbars...) to visibleContentRectIncludingScrollbars().
        
        Also add actualScrollPosition(), and clean up some actualScroll* call sites.
        
        No behavior change.

        * WebProcess/Plugins/PDF/PDFPlugin.h:
        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
        (WebKit::ViewGestureGeometryCollector::collectGeometryForMagnificationGesture):
        (WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::visibleContentBounds):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
        (WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):

2014-01-23  Tim Horton  <timothy_horton@apple.com>

        [wk2] Page Overlays: Add API to clear the page overlay (and get rid of its backing store)
        https://bugs.webkit.org/show_bug.cgi?id=127518

        Reviewed by Anders Carlsson.

        Add WKBundlePageOverlayClear, to allow clients of the page overlay API to
        manually clear the page overlay's backing store, for memory, power, and performance gains.

        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
        (WKBundlePageOverlayClear):
        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::clearPageOverlay):
        * WebProcess/WebPage/PageOverlay.cpp:
        (WebKit::PageOverlay::clear):
        * WebProcess/WebPage/PageOverlay.h:
        Add WKBundlePageOverlayClear and plumb it through PageOverlay to the DrawingArea.

        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::clearPageOverlay):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::clearPageOverlay):
        Set the layer to drawsContent=false and give it 0x0 size, effectively
        removing its backing store.

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Explicitly link XPC services with AppKit
        https://bugs.webkit.org/show_bug.cgi?id=127520
        <rdar://problem/15759718>

        Reviewed by Mark Rowe.

        Explicitly link XPC services that use the _NSApplicationMain run loop type with AppKit.

        * Configurations/PluginService.32.xcconfig:
        * Configurations/PluginService.64.xcconfig:
        * Configurations/PluginService.Development.xcconfig:
        * Configurations/WebContentService.Development.xcconfig:
        * Configurations/WebContentService.xcconfig:

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Fix build again.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _windowDidChangeBackingProperties:]):

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Another 32-bit build fix.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _windowDidChangeBackingProperties:]):

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Clean up WKView.mm a little
        https://bugs.webkit.org/show_bug.cgi?id=127517

        Reviewed by Tim Horton.

        Remove an unused ivar and migrate to API constants that were added in Lion.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView setFrameSize:]):
        (-[WKView addWindowObserversForWindow:]):
        (-[WKView removeWindowObservers]):
        (-[WKView viewDidMoveToWindow]):
        (-[WKView _windowDidMiniaturize:]):
        (-[WKView _windowDidResize:]):
        (-[WKView _windowDidChangeBackingProperties:]):

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Try to fix the 32-bit build.

        * UIProcess/API/Cocoa/WKPreferences.mm:

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Remove an unneeded synchronous back/forward message
        https://bugs.webkit.org/show_bug.cgi?id=127516

        Reviewed by Tim Horton.

        * UIProcess/WebLoaderClient.cpp:
        * UIProcess/WebLoaderClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeLoaderClient):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::shouldGoToHistoryItem):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Rename WKPreferences.h to WKPreferencesRef.h and add a stubbed out WKPreferences class
        https://bugs.webkit.org/show_bug.cgi?id=127512

        Reviewed by Dan Bernstein.

        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/API/C/WKPreferencesRef.h: Renamed from Source/WebKit2/UIProcess/API/C/WKPreferences.h.
        * UIProcess/API/C/WebKit2_C.h:
        * UIProcess/API/Cocoa/WKPreferences.h: Added.
        * UIProcess/API/Cocoa/WKPreferences.mm: Added.
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-23  Max Vujovic  <mvujovic@adobe.com>

        Remove CSS Custom Filters code and tests
        https://bugs.webkit.org/show_bug.cgi?id=127382

        Reviewed by Simon Fraser.

        * CMakeLists.txt:
        * Configurations/FeatureDefines.xcconfig:
        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
        (IPC::ArgumentCoder<WebCore::FilterOperations>::encode):
        (IPC::ArgumentCoder<WebCore::FilterOperations>::decode):
        (IPC::ArgumentCoder<CoordinatedGraphicsState>::encode):
        (IPC::ArgumentCoder<CoordinatedGraphicsState>::decode):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h:
        * Shared/CoordinatedGraphics/WebCustomFilterProgramProxy.cpp: Removed.
        * Shared/CoordinatedGraphics/WebCustomFilterProgramProxy.h: Removed.
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::encodeFilterOperation):
        (IPC::decodeFilterOperation):
        * Shared/WebPreferencesStore.h:
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTextStream::operator<<):
        * UIProcess/API/C/WKPreferences.cpp:
        * UIProcess/API/C/WKPreferencesPrivate.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::~CoordinatedLayerTreeHost):
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):
        * mac/WebKit2.order:

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Add API::PolicyClient base class
        https://bugs.webkit.org/show_bug.cgi?id=127509

        Reviewed by Tim Horton.

        * UIProcess/API/APIPolicyClient.h: Copied from Source/WebKit2/UIProcess/WebPolicyClient.h.
        (API::PolicyClient::~PolicyClient):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPagePolicyClient):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (setUpPagePolicyClient):
        (-[WKBrowsingContextController setPolicyDelegate:]):
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::createInspectorPage):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setPolicyClient):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::unableToImplementPolicy):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPolicyClient.cpp:
        (WebKit::WebPolicyClient::WebPolicyClient):
        (WebKit::WebPolicyClient::decidePolicyForNavigationAction):
        (WebKit::WebPolicyClient::decidePolicyForNewWindowAction):
        (WebKit::WebPolicyClient::decidePolicyForResponse):
        * UIProcess/WebPolicyClient.h:
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-23  Anders Carlsson  <andersca@apple.com>

        Add init methods that create default configurations
        https://bugs.webkit.org/show_bug.cgi?id=127503

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKProcessClass.mm:
        (-[WKProcessClass init]):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView initWithFrame:]):

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

        IDB: Implement cross-thread and IPC plumbing for 'get' support
        https://bugs.webkit.org/show_bug.cgi?id=127501

        Reviewed by Anders Carlsson.

        Make the WebProcess call out to the DatabaseProcess with a get request, and handle the
        response from the DatabaseProcess:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::get):
        (WebKit::WebIDBServerConnection::didGetRecord):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        Get the request from the WebProcess and forward it to the appropriate unique IDB database:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::getRecord):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        Forward the request to the database thread, and response to the result from that thread:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::getRecord):
        (WebKit::UniqueIDBDatabase::getRecordFromBackingStore):
        (WebKit::UniqueIDBDatabase::didGetRecordFromBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        IPC and asynchronous request infrastructure:
        * Scripts/webkit2/messages.py:
        (struct_or_class):

        * Shared/AsyncTask.h:
        (WebKit::createAsyncTask):

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<IDBGetResult>::encode):
        (IPC::ArgumentCoder<IDBGetResult>::decode):
        (IPC::ArgumentCoder<IDBKeyRangeData>::encode):
        (IPC::ArgumentCoder<IDBKeyRangeData>::decode):
        * Shared/WebCoreArgumentCoders.h:

2014-01-23  Tim Horton  <timothy_horton@apple.com>

        PDFPlugin: Use PDFPlugin even if there's an external plugin installed, if it's blocked
        https://bugs.webkit.org/show_bug.cgi?id=127415
        <rdar://problem/12482452>

        Reviewed by Sam Weinig.

        Allow use of PDFPlugin even if an external plugin is installed but blocked.
        If an external plugin is installed and not blocked, we will continue to use that.

        Inject a context menu item into the PDFPlugin context menu that allows the client
        to unblock the plugin and reload the page (via the same mechanism that the
        unavailable plugin button uses).

        * UIProcess/API/C/WKPageLoaderClient.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (setUpPageLoaderClient):
        * UIProcess/WebLoaderClient.cpp:
        (WebKit::WebLoaderClient::pluginLoadPolicy):
        * UIProcess/WebLoaderClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::findPlugin):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        Add a new PluginLoadPolicy callback for the V4 client with
        yet another string out-argument, to allow clients to customize the string
        that will appear in the PDFPlugin context menu when it is used in place
        of a blocked plugin.

        * WebProcess/Plugins/PDF/PDFPlugin.h:
        Add setUsedInPlaceOfBlockedPlugin(), which determines whether or not
        we should include an item in the PDFPlugin context menu that acts identically
        to the unavailable plugin button, allowing the client to potentially unblock
        the plugin.

        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (-[WKPDFPluginContextMenuTarget initWithPDFPlugin:WebKit::]):
        (-[WKPDFPluginContextMenuTarget useBlockedPlugin:]):
        Added WKPDFPluginContextMenuTarget, which is the Objective-C object that the
        aforementioned context menu item targets.

        (WebKit::PDFPlugin::PDFPlugin):
        By default, we won't show the extra context menu item.

        (WebKit::PDFPlugin::handleContextMenuEvent):
        If we were used in place of a blocked plugin, inject our additional context
        menu item into the menu. If we were handed a custom string via setUsedInPlaceOfBlockedPlugin,
        use that. Otherwise, use the generic string from WebCore's localized strings.

        (WebKit::PDFPlugin::openWithPlugin):
        Pretend that the user clicked the unavailable plugin button when they click
        the injected context menu item.

        (WebKit::PDFPlugin::setUsedInPlaceOfBlockedPlugin):

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::createPlugin):
        If we end up with a blocked plugin, but could have used PDFPlugin to display
        the content, do so instead of showing the unavailable plugin indicator.

        Pass PDFPlugin the custom context menu item title acquired from the client.

        (WebKit::WebPage::canPluginHandleResponse):

2014-01-23  Tim Horton  <timothy_horton@apple.com>

        [iOS] [WK2] WKContentView has a black background
        https://bugs.webkit.org/show_bug.cgi?id=127471
        <rdar://problem/12287363>

        Reviewed by Sam Weinig.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
        Instead of giving it a (black!) background to make hit-testing work, use CALayer SPI
        to tell CA that the whole layer should be treated as opaque when it comes to hit-testing.

2014-01-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GLIB] Use GUniquePtr instead of GOwnPtr
        https://bugs.webkit.org/show_bug.cgi?id=127431

        Reviewed by Martin Robinson.

        GUniquePtr is a template alias of std::unique_ptr with a custom
        deleter that replaces GOwnPtr. GOwnPtr is still used for the cases
        where the output pointer is needed, but it will also be replaced soon.

        * Shared/Downloads/soup/DownloadSoup.cpp:
        (WebKit::DownloadClient::didReceiveResponse):
        * Shared/NativeWebKeyboardEvent.h:
        * Shared/NativeWebMouseEvent.h:
        * Shared/NativeWebWheelEvent.h:
        * Shared/gtk/ArgumentCodersGtk.cpp:
        (IPC::encodeGKeyFile):
        (IPC::decodeGKeyFile):
        (IPC::encode):
        (IPC::decode):
        * UIProcess/API/gtk/WebKitContextMenuItem.cpp:
        (webkitContextMenuItemSetSubMenuFromGtkMenu):
        * UIProcess/API/gtk/WebKitDownload.cpp:
        (webkitDownloadDecideDestination):
        (webkitDownloadNotifyProgress):
        (webkitDownloadFailed):
        * UIProcess/API/gtk/WebKitFileChooserRequest.cpp:
        (webkit_file_chooser_request_select_files):
        * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:
        (didReceiveWebViewMessageFromInjectedBundle):
        (getInjectedBundleInitializationUserData):
        * UIProcess/API/gtk/WebKitLoaderClient.cpp:
        (didFailProvisionalLoadWithErrorForFrame):
        (didFailLoadWithErrorForFrame):
        * UIProcess/API/gtk/WebKitPrintOperation.cpp:
        (drawPagesForPrintingCompleted):
        * UIProcess/API/gtk/WebKitURIRequest.cpp:
        (webkit_uri_request_get_http_headers):
        * UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
        (webkit_uri_scheme_request_get_scheme):
        (webkit_uri_scheme_request_get_path):
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (injectedBundleFilename):
        (webkit_web_context_set_favicon_database_directory):
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewLoadFail):
        (webkitWebViewCreateJavaScriptDialog):
        (fileChooserDialogResponseCallback):
        (webkitWebViewLoadChanged):
        (webkitWebViewLoadFailedWithTLSErrors):
        (webkitWebViewPopulateContextMenu):
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseButtonPressEvent):
        (webkitWebViewBaseStartDrag):
        * UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp:
        (WebKit::WebInspectorServer::platformResourceForPath):
        * UIProcess/InspectorServer/soup/WebSocketServerSoup.cpp:
        (WebKit::connectionCallback):
        * UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/gtk/WebContextGtk.cpp:
        (WebKit::WebContext::platformDefaultApplicationCacheDirectory):
        (WebKit::WebContext::platformDefaultDatabaseDirectory):
        (WebKit::WebContext::platformDefaultIconDatabasePath):
        (WebKit::WebContext::platformDefaultLocalStorageDirectory):
        (WebKit::WebContext::platformDefaultDiskCacheDirectory):
        * UIProcess/gtk/WebContextMenuProxyGtk.cpp:
        (WebKit::contextMenuItemVisibilityChanged):
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformInspectedURLChanged):
        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
        (WebKit::WebPopupMenuProxyGtk::createGtkActionForMenuItem):
        * WebProcess/WebPage/gtk/WebInspectorGtk.cpp:
        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::platformInitialize):
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
        * WebProcess/gtk/WebProcessMainGtk.cpp:
        * WebProcess/soup/WebSoupRequestManager.cpp:
        (WebKit::WebSoupRequestManager::send):

2014-01-22  Simon Fraser  <simon.fraser@apple.com>

        Surround fixedVisibleContentRect code with USE(TILED_BACKING_STORE)
        https://bugs.webkit.org/show_bug.cgi?id=127461

        Reviewed by Andreas Kling.
        
        The "fixedVisibleContentRect" code path is only used by platforms
        which enabled TILED_BACKING_STORE, so to reduce confusion, surround
        this code with #if USE(TILED_BACKING_STORE).

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):

2014-01-22  Benjamin Poulain  <bpoulain@apple.com>

        Add a minimalistic SPI to control the layout size outside of WKView
        https://bugs.webkit.org/show_bug.cgi?id=127403

        Reviewed by Sam Weinig.

        The API lets a client of WKView force the layout size. Once the size
        is set this way, default update is disabled and the client needs to
        update the size systematically as needed. This is done to avoid double
        layout or flickering.

        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/ios/WKViewIOS.mm:
        (-[WKView _frameOrBoundsChanged]):
        (-[WKView overrideMinimumLayoutSize:]):

2014-01-22  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] defaultTextEncodingName should be stored as a member variable of EwkSettings
        https://bugs.webkit.org/show_bug.cgi?id=127420

        Reviewed by Gyuyoung Kim.

        As the defaultTextEncodingName is returned as a local WKEinaSharedString variable, 
        the stringshared data is de-refed by eina_stringshare_del().
        To maintain the reference counter, the defaultTextEncodingName should be stored 
        as a member variable of EwkSettings class.

        * UIProcess/API/efl/ewk_settings.cpp:
        (ewk_settings_encoding_detector_enabled_get): Reordering.
        (ewk_settings_default_text_encoding_name_set):
        (ewk_settings_default_text_encoding_name_get):
        (EwkSettings::setDefaultTextEncodingName):
        (EwkSettings::defaultTextEncodingName):
        * UIProcess/API/efl/ewk_settings_private.h:
        (EwkSettings::EwkSettings): Add m_defaultTextEncodingName and setter/getter methods.

2014-01-22  Enrica Casucci  <enrica@apple.com>

        Support WebSelections in WK2 on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=127015
        <rdar://problem/15211964>

        Reviewed by Benjamin Poulain.

        This change adds support for text only (non block mode)
        selections in non editable content.
        The main changes consist in hooking up the new gesture type
        and touches to handle selection creation and interaction.
        It also includes changes to the way first responder is handled
        which includes the implementation of the isEditable method
        to allow iOS to know when to show the keyboard.

        * Shared/ios/WKGestureTypes.h:
        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKInteractionView isEditable]):
        (-[WKInteractionView canBecomeFirstResponder]):
        (-[WKInteractionView webSelectionRects]):
        (-[WKInteractionView _highlightLongPressRecognized:]):
        (-[WKInteractionView _singleTapRecognized:]):
        (-[WKInteractionView inputAccessoryView]):
        (-[WKInteractionView canPerformAction:withSender:]):
        (-[WKInteractionView _showDictionary:]):
        (toWKGestureType):
        (toUIWKGestureType):
        (selectionChangedWithGesture):
        (selectionChangedWithTouch):
        (-[WKInteractionView selectedTextRange]):
        (-[WKInteractionView webSelectionAssistant]):
        (-[WKInteractionView _startAssistingNode]):
        (-[WKInteractionView _stopAssistingNode]):
        (-[WKInteractionView _selectionChanged]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::updateSelectionWithTouches):

2014-01-22  Anders Carlsson  <andersca@apple.com>

        WKBrowsingContextController should not be an API wrapper around WebPageProxy
        https://bugs.webkit.org/show_bug.cgi?id=127454

        Reviewed by Dan Bernstein.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/mac/ObjCObjectGraphCoders.mm:
        (WebKit::WebContextObjCObjectGraphDecoderImpl::decode):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController _initWithPageRef:]):
        (+[WKBrowsingContextController _browsingContextControllerForPageRef:]):
        * UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h:
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (didNavigateWithNavigationData):
        (didPerformClientRedirect):
        (didPerformServerRedirect):
        (didUpdateHistoryTitle):
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView browsingContextController]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView browsingContextController]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::platformInitialize):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::platformInitialize):

2014-01-22  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove CSS3_TEXT_DECORATION define
        https://bugs.webkit.org/show_bug.cgi?id=127333

        Reviewed by Simon Fraser.

        This is required for unprefixing the text-decoration-* CSS properties.

        * Configurations/FeatureDefines.xcconfig:

2014-01-22  Gavin Barraclough  <barraclough@apple.com>

        Debug mechanism to override process QoS on Mac
        https://bugs.webkit.org/show_bug.cgi?id=127455

        Reviewed by Anders Carlsson.

        * NetworkProcess/NetworkProcess.messages.in:
            - added message.
        * PluginProcess/PluginProcess.messages.in:
            - added message.
        * Shared/ChildProcess.h:
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::setQOS):
            - Added implementation of new message.
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::didFinishLaunching):
            - SetQOS for the PluginProcess.
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::pluginProcessLatencyQOS):
        (WebKit::pluginProcessThroughputQOS):
            - read NSUserDefaults.
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::ensureNetworkProcess):
            - SetQOS for the NetworkProcess.
        (WebKit::WebContext::createNewWebProcess):
            - SetQOS for the WebProcess.
        * UIProcess/WebContext.h:
        * UIProcess/mac/WebContextMac.mm:
        (WebKit::networkProcessLatencyQOS):
        (WebKit::networkProcessThroughputQOS):
        (WebKit::webProcessLatencyQOS):
        (WebKit::webProcessThroughputQOS):
            - read NSUserDefaults.
        * WebProcess/WebProcess.messages.in:
            - added message.

2014-01-22  David Farler  <dfarler@apple.com>

        ASAN builds are broken - missing flags
        https://bugs.webkit.org/show_bug.cgi?id=127231

        Reviewed by Andy Estes.

        Add missing $(ASAN_OTHER_LDFLAGS).
        * Configurations/PluginProcessShim.xcconfig:
        * Configurations/SecItemShim.xcconfig:
        * Configurations/WebKit2.xcconfig:
        * Configurations/WebProcessShim.xcconfig:

2014-01-22  Brady Eidson  <beidson@apple.com>

        The IDB backing store get() method shouldn't call IDB callbacks directly
        https://bugs.webkit.org/show_bug.cgi?id=127453
        
        Reviewed by Beth Dakin.

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

2014-01-22  Martin Hock  <mhock@apple.com>

        Enable Session API.
        https://bugs.webkit.org/show_bug.cgi?id=127255

        Reviewed by Alexey Proskuryakov.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::storageSession):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::NetworkResourceLoader):
        (WebKit::NetworkResourceLoader::start):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::storageSession):
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        * Shared/Network/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::NetworkResourceLoadParameters):
        (WebKit::NetworkResourceLoadParameters::encode):
        (WebKit::NetworkResourceLoadParameters::decode):
        * Shared/Network/NetworkResourceLoadParameters.h:
        * Shared/SessionTracker.cpp:
        (WebKit::staticSessionMap):
        (WebKit::SessionTracker::sessionMap):
        (WebKit::SessionTracker::session):
        (WebKit::SessionTracker::setSession):
        (WebKit::SessionTracker::destroySession):
        * Shared/SessionTracker.h:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetSession):
        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/C/WKSessionRef.cpp:
        (WKSessionCreate):
        * UIProcess/API/C/WKSessionRef.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::setSession):
        * UIProcess/WebPageProxy.h:
        * WebProcess/Network/WebResourceLoadScheduler.cpp:
        (WebKit::WebResourceLoadScheduler::scheduleLoad):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::loadResourceSynchronously):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts):
        (WebKit::WebFrameNetworkingContext::storageSession):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::startDownload):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::sessionID):
        (WebKit::WebPage::updatePreferences):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::setSessionID):
        * WebProcess/WebPage/WebPage.messages.in:

2014-01-21  Brady Eidson  <beidson@apple.com>

        IDB: "Put" support
        <rdar://problem/15779643> and https://bugs.webkit.org/show_bug.cgi?id=127401

        Reviewed by Alexey Proskuryakov.

        Ship putRecord requests over to the DatabaseProcess, and listen for completion from the DatabaseProcess:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::put):
        (WebKit::WebIDBServerConnection::didPutRecord):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        Pass off the putRecord request to the Unique IDBDatabase:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::putRecord):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        Pass off the putRecord request to the backing store:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::putRecord):
        (WebKit::UniqueIDBDatabase::putRecordInBackingStore):
        (WebKit::UniqueIDBDatabase::didPutRecordInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        Add backing store methods related to putRecord, though only one is critical right now:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::generateKey):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::keyExistsInObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::putRecord):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::updateKeyGenerator):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        Add the IDBKeyData type to IPC:
        * Scripts/webkit2/messages.py:
        (struct_or_class):

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<IDBKeyData>::encode):
        (IPC::ArgumentCoder<IDBKeyData>::decode):
        * Shared/WebCoreArgumentCoders.h:

        * DatabaseProcess/IndexedDB/IDBSerialization.cpp:
        (WebKit::serializeIDBKey):
        * DatabaseProcess/IndexedDB/IDBSerialization.h:

        Implement more cross-thread copying:
        * Shared/WebCrossThreadCopier.cpp:
        (WebCore::Vector<uint8_t>>::copy):
        (WebCore::Vector<Vector<IDBKeyData>>>::copy):
        (WebCore::ASCIILiteral>::copy):
        * Shared/WebCrossThreadCopier.h:

        Implement more numbers of generic AsyncTask templates:
        * Shared/AsyncTask.h:
        (WebKit::createAsyncTask):

2014-01-22  Anders Carlsson  <andersca@apple.com>

        WKProcessClass should create a WebContext
        https://bugs.webkit.org/show_bug.cgi?id=127449
        <rdar://problem/15885582>

        Reviewed by Dan Bernstein.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * UIProcess/API/Cocoa/WKBrowsingContextController.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        * UIProcess/API/Cocoa/WKProcessClass.mm:
        (-[WKProcessClass initWithConfiguration:]):
        (-[WKProcessClass dealloc]):
        (-[WKProcessClass API::]):
        * UIProcess/API/Cocoa/WKProcessClassInternal.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/WKProcessGroupInternal.h.
        (WebKit::wrapper):
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (-[WKProcessGroup initWithInjectedBundleURL:]):
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView _decidePolicyForGeolocationRequestFromOrigin:frame:request:]):
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-22  Tim Horton  <timothy_horton@apple.com>

        Crashes in DrawingAreaProxy::setExposedRect (null DrawingAreaProxy)
        https://bugs.webkit.org/show_bug.cgi?id=127445

        Reviewed by Anders Carlsson.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView _updateViewExposedRect]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _updateViewExposedRect]):
        Null-check.

2014-01-22  Anders Carlsson  <andersca@apple.com>

        Add WKWebView class
        https://bugs.webkit.org/show_bug.cgi?id=127444
        <rdar://problem/15884418>

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.h: Added.
        * UIProcess/API/Cocoa/WKWebView.mm: Added.
        (-[WKWebView initWithFrame:configuration:]):
        (-[WKWebView configuration]):
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-22  Anders Carlsson  <andersca@apple.com>

        Fix 32-bit build.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

2014-01-22  Tim Horton  <timothy_horton@apple.com>

        [wk2] Scroll pinning state is wrong until the first scroll event
        https://bugs.webkit.org/show_bug.cgi?id=127437

        Reviewed by Simon Fraser.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::didChangeScrollOffset):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateMainFrameScrollOffsetPinning):
        (WebKit::WebPage::didCommitLoad):
        * WebProcess/WebPage/WebPage.h:
        Rename WebPage::didChangeScrollOffsetForMainFrame to
        updateMainFrameScrollOffsetPinning, which better describes what it
        actually does. Call it when a load is committed, so that we have valid
        pinning state before the first scroll event comes in.

2014-01-22  Anders Carlsson  <andersca@apple.com>

        Add WKWebViewConfiguration class
        https://bugs.webkit.org/show_bug.cgi?id=127436
        <rdar://problem/15882923>

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.h: Added.
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: Added.
        (-[WKWebViewConfiguration copyWithZone:]):
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-22  Alice Barraclough  <alice.liu@apple.com>

        [WK2] add cocoa API for private browsing setting
        https://bugs.webkit.org/show_bug.cgi?id=127391

        Reviewed by Sam Weinig.

        * UIProcess/API/Cocoa/WKBrowsingContextGroup.h:
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
        (-[WKBrowsingContextGroup privateBrowsingEnabled]):
        (-[WKBrowsingContextGroup setPrivateBrowsingEnabled:]):
        Adding some API for the private Browsing setting. Reaches through
        to the WKPageGroup's preferences.

2014-01-22  Anders Carlsson  <andersca@apple.com>

        Add WKProcessClass class
        https://bugs.webkit.org/show_bug.cgi?id=127433
        <rdar://problem/15882582>

        Reviewed by Dan Bernstein.

        Add a stubbed out WKProcessClass class.

        * Shared/API/Cocoa/WKFoundation.h:
        * UIProcess/API/Cocoa/WKProcessClass.h: Added.
        * UIProcess/API/Cocoa/WKProcessClass.mm: Added.
        (-[WKProcessClass initWithConfiguration:]):
        (-[WKProcessClass configuration]):
        * UIProcess/API/Cocoa/WKProcessClassConfiguration.mm:
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-22  Thiago de Barros Lacerda  <thiago.lacerda@openbossa.org>

        [EFL][GTK] Get EFL and GTK compiling with ACCESSIBILITY disabled
        https://bugs.webkit.org/show_bug.cgi?id=127119

        Reviewed by Mario Sanchez Prada.

        Guarding ACCESSIBILITY code with HAVE(ACCESSIBILITY).

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::platformInitialize):

2014-01-22  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Add support for building the NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=127195

        Reviewed by Daniel Bates.

        * CMakeLists.txt: Add shared network process build instructions.
        * PlatformEfl.cmake: Move build instructions to the platform-independent file.
        * PlatformGTK.cmake: Add some files to the source lists.

2014-01-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r162441): [GTK] ResourceLoader is broken when there aren't user extensions
        https://bugs.webkit.org/show_bug.cgi?id=127422

        Reviewed by Anders Carlsson.

        * WebProcess/gtk/WebGtkExtensionManager.cpp:
        (WebKit::WebGtkExtensionManager::initialize): Always create the
        WebKitWebExtension object since it's used internally to implement
        the ResourceLoader client.

2014-01-22  Jer Noble  <jer.noble@apple.com>

        [Mac][WK2] Unable to play video protected by session cookies
        https://bugs.webkit.org/show_bug.cgi?id=127207

        Reviewed by Sam Weinig.

        Recent changes in our underlying media frameworks caused our shimmed methods
        in CookieStorageShim to stop being called. Insert an objective-c shim in addition
        to our original shim to intercept pulling cookies out of cookie storage.

        * Shared/mac/CookieStorageShim.mm: Renamed from Source/WebKit2/Shared/mac/CookieStorageShim.cpp.
        (WebKit::CookieStorageShim::initialize): Insert the shim.
        (-[WKNSURLSessionLocal _copyCookiesForRequestUsingAllAppropriateStorageSemantics:]):
            Pass through to webKitCookieStorageCopyRequestHeaderFieldsForURL().
        * WebKit2.xcodeproj/project.pbxproj: Rename CookieStorageShim.cpp -> .mm.

2014-01-22  Yongjun Zhang  <yongjun_zhang@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=127380
        Add more methods to WKWebProcessPlugInNodeHandle.

        Reviewed by Sam Weinig.

        Add a static method that creates a WKWebProcessPlugInNodeHandle from a JSValue* and a JSContext*.  Also
        add a method to return the iframe's content frame from a WKWebProcessPlugInNodeHandle.
 
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        (+[WKWebProcessPlugInNodeHandle nodeHandleWithJSValue:inContext:]):
        (-[WKWebProcessPlugInNodeHandle htmlIFrameElementContentFrame]):

2014-01-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ build with CUSTOM_PROTOCOL enabled after r162449.

        * UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.h:
        Use override instead of OVERRIDE.

2014-01-22  Koop Mast <kwm@FreeBSD.org>

        Build fixes for FreeBSD.
        https://bugs.webkit.org/show_bug.cgi?id=126779

        Reviewed by Csaba Osztrogonác.

        * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
        (WebKit::PluginProcessProxy::scanPlugin):

2014-01-22  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] Use std::function in the rest of EFL's WorkQueue implementation
        https://bugs.webkit.org/show_bug.cgi?id=127397

        Reviewed by Anders Carlsson.

        Move to using std::function and move semantics in WorkQueue::registerSocketEventHandler
        and DispatchQueue::setSocketEventHandler.

        * Platform/IPC/unix/ConnectionUnix.cpp:
        (IPC::Connection::open):
        * Platform/WorkQueue.h:
        * Platform/efl/DispatchQueueEfl.cpp:
        (DispatchQueue::setSocketEventHandler):
        * Platform/efl/DispatchQueueEfl.h:
        * Platform/efl/WorkQueueEfl.cpp:
        (WorkQueue::registerSocketEventHandler):

2014-01-21  Tim Horton  <timothy_horton@apple.com>

        [wk2] De-.get()ify receivers of Objective-C messages
        https://bugs.webkit.org/show_bug.cgi?id=127398

        Reviewed by Sam Weinig.

        RetainPtr does the right thing when you use it as the
        receiver of an Obj-C message, so we don't need .get().

        Long and useless file list elided.

2014-01-21  Brady Eidson  <beidson@apple.com>

        The IDB backing store put() method shouldn't call IDB callbacks directly
        https://bugs.webkit.org/show_bug.cgi?id=127399

        Reviewed by Beth Dakin.

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

2014-01-21  Anders Carlsson  <andersca@apple.com>

        Fix 32-bit build.

        * UIProcess/API/Cocoa/WKProcessClassConfiguration.mm:

2014-01-21  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] Use nanoseconds in TimerWorkItem class consistently
        https://bugs.webkit.org/show_bug.cgi?id=127263

        Reviewed by Gyuyoung Kim.

        After r162276 and r162300, TimerWorkItem is getting nanoseconds as parameter.
        So it would be better to use nanoseconds in TimerWorkItem for consistency.

        * Platform/efl/DispatchQueueEfl.cpp:
        (DispatchQueue::performTimerWork):
        (DispatchQueue::insertTimerWorkItem):
        (DispatchQueue::getNextTimeOut):
        * Platform/efl/DispatchQueueWorkItemEfl.h:
        (TimerWorkItem::create):
        (TimerWorkItem::expirationTimeNanoSeconds):
        (TimerWorkItem::hasExpired):
        (TimerWorkItem::TimerWorkItem):

2014-01-21  Tim Horton  <timothy_horton@apple.com>

        Don't copy ViewGestureGeometryCollector.messages.in into the WebProcess bundle.

        Reviewed by Simon Fraser.

        * WebKit2.xcodeproj/project.pbxproj:

2014-01-21  Anders Carlsson  <andersca@apple.com>

        Add a WKProcessClassConfiguration class
        https://bugs.webkit.org/show_bug.cgi?id=127378
        <rdar://problem/15875413>

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKProcessClassConfiguration.h: Added.
        * UIProcess/API/Cocoa/WKProcessClassConfiguration.mm: Added.
        (-[WKProcessClassConfiguration copyWithZone:]):
        * UIProcess/API/Cocoa/WKProcessClassConfigurationPrivate.h: Added.
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-21  Tim Horton  <timothy_horton@apple.com>

        Make ViewGestureController Obj-C++
        https://bugs.webkit.org/show_bug.cgi?id=127385

        Reviewed by Dean Jackson.

        * UIProcess/mac/ViewGestureController.mm: Renamed from Source/WebKit2/UIProcess/mac/ViewGestureController.cpp.
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-21  Anders Carlsson  <andersca@apple.com>

        Make all the WebKit2 headers private and move Cocoa UIProcess API headers to a Deprecated group
        https://bugs.webkit.org/show_bug.cgi?id=127374

        Reviewed by Dan Bernstein.

        * WebKit2.xcodeproj/project.pbxproj:

2014-01-21  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r162452.
        http://trac.webkit.org/changeset/162452
        https://bugs.webkit.org/show_bug.cgi?id=127366

        broke a few tests on all Mac WebKit1 bots (Requested by
        thorton on #webkit).

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::setActive):
        (WebKit::WebPage::setViewIsVisible):
        (WebKit::WebPage::setFocused):
        (WebKit::WebPage::setIsInWindow):
        (WebKit::WebPage::setViewStateInternal):
        (WebKit::WebPage::setIsVisuallyIdle):
        * WebProcess/WebPage/WebPage.h:

2014-01-21  Martin Hock  <mhock@apple.com>

        Trivial Session API cleanup.
        https://bugs.webkit.org/show_bug.cgi?id=127356

        Reviewed by Alexey Proskuryakov.

        * UIProcess/API/C/WKSessionRef.cpp:
        (WKSessionIsEphemeral):
        * UIProcess/API/C/WKSessionRef.h:

2014-01-16  Simon Fraser  <simon.fraser@apple.com>

        Log an error for a common cause of WebProcess early launch crashing in misconfigured development builds
        https://bugs.webkit.org/show_bug.cgi?id=127121

        Reviewed by Anders Carlsson.
        
        A common cause of early WebProcess crashes during development is a null return
        from CFBundleGetValueForInfoDictionaryKey(), so log and return an error in
        this case rather than passing a null C string to dlsym().

        * Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessMain.mm:
        (WebKit::BootstrapMain):

2014-01-21  Tim Horton  <timothy_horton@apple.com>

        Sort headers after the rename that happened in r162454.

        * UIProcess/mac/RemoteLayerTreeHost.mm:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:

2014-01-21  Tim Horton  <timothy_horton@apple.com>

        Address late review naming comments after r162453.

        * UIProcess/API/mac/WKView.mm:
        And, fix the build by adding an include I accidentally missed.

        * UIProcess/mac/RemoteLayerTreeHost.mm:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:

2014-01-21  Tim Horton  <timothy_horton@apple.com>

        Keep CALayer implicit animation disabling code in a single place
        https://bugs.webkit.org/show_bug.cgi?id=127355

        Reviewed by Simon Fraser.

        * Shared/mac/RemoteLayerTreePropertyApplier.h:
        * Shared/mac/RemoteLayerTreePropertyApplier.mm:
        Remove disableActionsForLayer.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _rootLayer]):
        Disable actions on the root layer. It doesn't need them, and currently
        isn't affected by implicit animations, but future patches which animate
        the root layer will benefit from this.

        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::createLayer):
        Use web_disableAllActions instead of disableActionsForLayer.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm: Renamed from Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.cpp.
        (PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):
        (PlatformCALayerRemoteCustom::~PlatformCALayerRemoteCustom):
        (PlatformCALayerRemoteCustom::hostingContextID):
        Use web_disableAllActions instead of disableActionsForLayer.
        This requires making this file Obj-C++ but that's OK since it's Mac/iOS only.

2014-01-21  Gavin Barraclough  <barraclough@apple.com>

        Change Page, FocusController to use ViewState
        https://bugs.webkit.org/show_bug.cgi?id=126533

        Reviewed by Tim Horton.

        These classes currently maintain a set of separate fields to represent the view state;
        combine these into a single field, and allow WebPage to send the combined update rather
        than individual changes.

        Maintain existing interface for WebKit1 clients.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
            - Combined separate calls to Page::setViewState.
        (WebKit::WebPage::updateIsInWindow):
            - Simplied from setIsInWindow.
        (WebKit::WebPage::setViewState):
            - Combined separate calls to Page::setViewState.
        * WebProcess/WebPage/WebPage.h:
            - Declare updateIsInWindow.

2014-01-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] Implement CUSTOM PROTOCOLS
        https://bugs.webkit.org/show_bug.cgi?id=125583

        Reviewed by Anders Carlsson.

        Add new classes to implement CustomProtocols for soup. The
        implementation is the same, but using the CustomProtocol API and
        messages. The current implementation can be removed once all ports
        using soup switch to using CustomProtocols.

        * GNUmakefile.am: Add new include paths.
        * GNUmakefile.list.am: Add new files to compilation.
        * PlatformGTK.cmake: Add new files to compilation.
        * Shared/API/c/soup/WKBaseSoup.h:
        * Shared/APIObject.h:
        * Shared/Network/CustomProtocols/CustomProtocolManager.h:
        * Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.cpp: Added.
        (WebKit::generateCustomProtocolID):
        (WebKit::WebSoupRequestAsyncData::WebSoupRequestAsyncData):
        (WebKit::WebSoupRequestAsyncData::~WebSoupRequestAsyncData):
        (WebKit::WebSoupRequestAsyncData::requestFailed):
        (WebKit::WebSoupRequestAsyncData::releaseTask):
        (WebKit::CustomProtocolManagerImpl::CustomProtocolManagerImpl):
        (WebKit::CustomProtocolManagerImpl::~CustomProtocolManagerImpl):
        (WebKit::CustomProtocolManagerImpl::registerScheme):
        (WebKit::CustomProtocolManagerImpl::supportsScheme):
        (WebKit::CustomProtocolManagerImpl::didFailWithError):
        (WebKit::CustomProtocolManagerImpl::didLoadData):
        (WebKit::CustomProtocolManagerImpl::didReceiveResponse):
        (WebKit::CustomProtocolManagerImpl::didFinishLoading):
        (WebKit::CustomProtocolManagerImpl::send):
        (WebKit::CustomProtocolManagerImpl::finish):
        * Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.h: Added.
        * Shared/Network/CustomProtocols/soup/CustomProtocolManagerSoup.cpp:
        (WebKit::CustomProtocolManager::CustomProtocolManager):
        (WebKit::CustomProtocolManager::initialize):
        (WebKit::CustomProtocolManager::registerScheme):
        (WebKit::CustomProtocolManager::supportsScheme):
        (WebKit::CustomProtocolManager::didFailWithError):
        (WebKit::CustomProtocolManager::didLoadData):
        (WebKit::CustomProtocolManager::didReceiveResponse):
        (WebKit::CustomProtocolManager::didFinishLoading):
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/API/C/soup/WKAPICastSoup.h:
        * UIProcess/API/C/soup/WKSoupCustomProtocolRequestManager.cpp: Copied from Source/WebKit2/UIProcess/soup/WebContextSoup.cpp.
        (WKSoupCustomProtocolRequestManagerGetTypeID):
        (WKSoupCustomProtocolRequestManagerSetClient):
        * UIProcess/API/C/soup/WKSoupCustomProtocolRequestManager.h: Added.
        * UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h:
        * UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:
        (WebKit::CustomProtocolManagerProxy::CustomProtocolManagerProxy):
        * UIProcess/Network/CustomProtocols/soup/CustomProtocolManagerProxySoup.cpp:
        (WebKit::CustomProtocolManagerProxy::CustomProtocolManagerProxy):
        (WebKit::CustomProtocolManagerProxy::startLoading):
        (WebKit::CustomProtocolManagerProxy::stopLoading):
        * UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.cpp: Added.
        (WebKit::WebSoupCustomProtocolRequestManager::supplementName):
        (WebKit::WebSoupCustomProtocolRequestManager::create):
        (WebKit::WebSoupCustomProtocolRequestManager::WebSoupCustomProtocolRequestManager):
        (WebKit::WebSoupCustomProtocolRequestManager::~WebSoupCustomProtocolRequestManager):
        (WebKit::WebSoupCustomProtocolRequestManager::initializeClient):
        (WebKit::WebSoupCustomProtocolRequestManager::contextDestroyed):
        (WebKit::WebSoupCustomProtocolRequestManager::processDidClose):
        (WebKit::WebSoupCustomProtocolRequestManager::refWebContextSupplement):
        (WebKit::WebSoupCustomProtocolRequestManager::derefWebContextSupplement):
        (WebKit::WebSoupCustomProtocolRequestManager::registerSchemeForCustomProtocol):
        (WebKit::WebSoupCustomProtocolRequestManager::unregisterSchemeForCustomProtocol):
        (WebKit::WebSoupCustomProtocolRequestManager::startLoading):
        (WebKit::WebSoupCustomProtocolRequestManager::stopLoading):
        (WebKit::WebSoupCustomProtocolRequestManager::didReceiveResponse):
        (WebKit::WebSoupCustomProtocolRequestManager::didLoadData):
        (WebKit::WebSoupCustomProtocolRequestManager::didFailWithError):
        (WebKit::WebSoupCustomProtocolRequestManager::didFinishLoading):
        * UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.h: Added.
        (WebKit::WebSoupCustomProtocolRequestManager::registeredSchemesForCustomProtocols):
        * UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManagerClient.cpp: Added.
        (WebKit::WebSoupCustomProtocolRequestManagerClient::startLoading):
        (WebKit::WebSoupCustomProtocolRequestManagerClient::stopLoading):
        * UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManagerClient.h: Added.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::NetworkProcessProxy):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::WebContext):
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::WebProcessProxy):
        * UIProcess/gtk/WebContextGtk.cpp:
        (WebKit::WebContext::platformInitializeWebProcess):
        * UIProcess/soup/WebContextSoup.cpp:
        (WebKit::WebContext::platformInitializeNetworkProcess):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::WebProcess):
        * WebProcess/soup/WebKitSoupRequestGeneric.cpp:
        (webkitSoupRequestGenericSendAsync):
        (webkitSoupRequestGenericSendFinish):
        * WebProcess/soup/WebKitSoupRequestGeneric.h:
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::platformInitializeWebProcess):

2014-01-21  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Allow passing extra data to web extensions
        https://bugs.webkit.org/show_bug.cgi?id=125990

        Reviewed by Carlos Garcia Campos.

        Allow passing additional information to the injected bundle. On top
        of the string containing the path to the web extensions directory,
        a GVariant can be set with additional data using
        webkit_web_context_set_web_extensions_initialization_user_data().
        Also, a new initialize-web-extensions signal is emitted before
        launching a new WebProcess to allow setting different user data
        for each process. The GVariant is serialized as a string, passed
        to the injected bundle, and the injected bundle deserializes back
        the data, which is passed to web extensions which define the
        webkit_web_extension_initialize_with_user_data() function (for
        backwards compatibility, webkit_web_extension_initialize() is
        used as a fallback.)

        * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:
        (getInjectedBundleInitializationUserData): Define new callback
        function which causes emission of the initialize-web-extensions
        signal, and serializes the data to be passed to the web process.
        (attachInjectedBundleClientToContext): Set the
        getInjectedBundleInitializationUserData() callback.
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkit_web_context_class_init): Define the
        initialize-web-extensions signal.
        (webkit_web_context_set_web_extensions_directory):
        Web extensions directory as now member of WebKitWebContextPrivate,
        to be able to retrieve it later.
        (webkit_web_context_set_web_extensions_initialization_user_data):
        New API method to set the user data passed to the web extensions
        when initialized.
        (webkitWebContextInitializeWebExtensions): Private function used
        to trigger emission of the initialize-web-extensions signal.
        * UIProcess/API/gtk/WebKitWebContext.h:
        Added prototype for new API method
        webkit_web_context_set_web_extensions_initialization_user_data().
        * UIProcess/API/gtk/WebKitWebContextPrivate.h:
        Prototype of the new private function.
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
        Add new public API bits to the documentation.
        * WebProcess/gtk/WebGtkExtensionManager.cpp:
        (WebKit::WebGtkExtensionManager::initialize):
        Deserialize the data received from the UI process and pass it to
        webkit_web_extension_initialize_with_user_data() if available,
        keeping webkit_web_extension_initialize() as fallback.

2014-01-20  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK2] Move isEwkViewEvasObject back to ewk_view.cpp
        https://bugs.webkit.org/show_bug.cgi?id=127261

        Reviewed by Gyuyoung Kim.

        isEwkViewEvasObject is general check routine of EFL and mainly used in
        ewk_view.cpp but it was in EwkView.cpp since separated EwkView.cpp from ewk_view.cpp

        This patch moves it to EwkView.h as inline function with small refactoring.
        In addition, this patch added EINA_UNLIKELY keyword in cold paths.

        * UIProcess/API/efl/EwkView.cpp:
        (defaultSmartClassInstance):
        (toSmartData):
        (toEwkView): Moved it from bottom not to expose it to header file.
        * UIProcess/API/efl/EwkView.h:
        * UIProcess/API/efl/ewk_view.cpp:
        (isEwkViewEvasObject):
        (toEwkViewChecked):

2014-01-20  Eunmi Lee  <eunmi15.lee@samsung.com>

        [EFL][WK2] Amount of scrolling is different from movement of touch when device pixel ratio is not 1.
        https://bugs.webkit.org/show_bug.cgi?id=127268

        Reviewed by Gyuyoung Kim.

        Amount of scrolling should be same with movement of touch even though
        device pixel ratio is not 1, so apply device pixel ratio to the new
        position of scrollBy().

        * UIProcess/API/efl/EwkView.cpp:
        (EwkView::scrollBy):

2014-01-20  Thiago de Barros Lacerda  <thiago.lacerda@openbossa.org>

        [WK2] Setting m_pageScaleFactor directly in WebPageProxy::scalePage
        https://bugs.webkit.org/show_bug.cgi?id=127090

        Reviewed by Simon Fraser.

        When the client side sets the scale factor, the UIProcess will send the message to WebProcess and only after
        WebPageProxy::pageScaleFactorDidChange is called the desired scale factor is returned correctly by
        WebPageProxy::pageScaleFactor.
        This will avoid the client side retrieve a wrong scale factor while UIProcess and WebProcess gets synchronized.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::scalePage):

2014-01-20  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][WK2] Move the rest of GTK's WorkQueue implementation to std::function
        https://bugs.webkit.org/show_bug.cgi?id=127273

        Reviewed by Anders Carlsson.

        Move to using std::function and move semantics in WorkQueue::registerSocketEventHandler
        and WorkQueue::SocketEventSource.

        * Platform/IPC/unix/ConnectionUnix.cpp:
        (IPC::Connection::open):
        * Platform/WorkQueue.h:
        * Platform/gtk/WorkQueueGtk.cpp:
        (WorkQueue::SocketEventSource::SocketEventSource):
        (WorkQueue::registerSocketEventHandler):
        (WorkQueue::dispatchOnSource): Use std::move instead of std::forward<T>.
        (WorkQueue::dispatch): Ditto.
        (WorkQueue::dispatchAfter): Ditto.

2014-01-20  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed. Additional build fixes after r162276 and r163304.

        * Platform/WorkQueue.h:
        * Platform/gtk/WorkQueueGtk.cpp:
        (WorkQueue::EventSource::EventSource):
        (WorkQueue::dispatchOnSource):
        (WorkQueue::dispatch):
        (WorkQueue::dispatchAfter):

2014-01-19  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK build fix after r162276.

        Updating the WorkQueue implementation to use std::function and std::chrono.

        * Platform/WorkQueue.h:
        * Platform/gtk/WorkQueueGtk.cpp:
        (WorkQueue::dispatchOnSource):
        (WorkQueue::dispatch):
        (WorkQueue::dispatchAfter):

2014-01-19  Jinwoo Song  <jinwoo7.song@samsung.com>

        Unreviewed debug build fix on EFL port after r162300.

        * Platform/efl/DispatchQueueWorkItemEfl.h:
        (TimerWorkItem::create):

2014-01-19  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] build fix after r162276
        https://bugs.webkit.org/show_bug.cgi?id=127259

        Reviewed by Anders Carlsson.

        * Platform/efl/DispatchQueueEfl.cpp:
        (DispatchQueue::performTimerWork):
        (DispatchQueue::getNextTimeOut):
        * Platform/efl/DispatchQueueWorkItemEfl.h:
        (WorkItem::create):
        (WorkItem::WorkItem):
        (TimerWorkItem::create):
        (TimerWorkItem::TimerWorkItem):
        * Platform/efl/WorkQueueEfl.cpp:
        (WorkQueue::dispatch):
        (WorkQueue::dispatchAfter):

2014-01-18  Anders Carlsson  <andersca@apple.com>

        Replace a couple of uses of WTF::Function with std::function
        https://bugs.webkit.org/show_bug.cgi?id=127218

        Reviewed by Andreas Kling.

        * Platform/IPC/mac/ConnectionMac.cpp:
        (IPC::createDataAvailableSource):
        * Platform/WorkQueue.h:
        * Platform/mac/WorkQueueMac.cpp:
        (WorkQueue::dispatch):
        (WorkQueue::dispatchAfter):
        * Shared/ChildProcess.cpp:
        (WebKit::didCloseOnConnectionWorkQueue):
        * UIProcess/Storage/LocalStorageDatabase.cpp:
        (WebKit::LocalStorageDatabase::scheduleDatabaseUpdate):
        * WebProcess/WebPage/DrawingArea.cpp:
        (WebKit::DrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):

2014-01-18  Martin Hock  <mhock@apple.com>

        Flesh out session APIs (still not enabled at API level).
        https://bugs.webkit.org/show_bug.cgi?id=126918

        Reviewed by Alexey Proskuryakov.

        * CMakeLists.txt:
        * GNUmakefile.list.am:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::storageSession):
        (WebKit::NetworkConnectionToWebProcess::startDownload):
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
        (WebKit::NetworkConnectionToWebProcess::cookiesEnabled):
        (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
        (WebKit::NetworkConnectionToWebProcess::getRawCookies):
        (WebKit::NetworkConnectionToWebProcess::deleteCookie):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::ensurePrivateBrowsingSession):
        (WebKit::NetworkProcess::destroyPrivateBrowsingSession):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::storageSession):
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        * NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        * Shared/SessionTracker.cpp: Copied from Source/WebKit2/UIProcess/APISession.cpp.
        (WebKit::sessionMap):
        (WebKit::identifierBase):
        (WebKit::SessionTracker::getSessionMap):
        (WebKit::SessionTracker::getIdentifierBase):
        (WebKit::SessionTracker::session):
        (WebKit::SessionTracker::destroySession):
        (WebKit::SessionTracker::setIdentifierBase):
        * Shared/SessionTracker.h: Copied from Source/WebKit2/UIProcess/APISession.h.
        (WebKit::SessionTracker::isEphemeralID):
        * Shared/mac/CookieStorageShim.cpp:
        (WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL):
        * UIProcess/APISession.cpp:
        (API::generateID):
        (API::Session::defaultSession):
        (API::Session::legacyPrivateSession):
        (API::Session::Session):
        (API::Session::create):
        (API::Session::isEphemeral):
        (API::Session::getID):
        * UIProcess/APISession.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebContext::createNewWebProcess):
        (WebKit::WebContext::createWebPage):
        * UIProcess/WebContext.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::create):
        (WebKit::WebPageProxy::WebPageProxy):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::sessionID):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        * UIProcess/WebProcessProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::legacySessionID):
        (WebKit::WebPlatformStrategies::cookiesForDOM):
        (WebKit::WebPlatformStrategies::setCookiesFromDOM):
        (WebKit::WebPlatformStrategies::cookiesEnabled):
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebKit::WebPlatformStrategies::getRawCookies):
        (WebKit::WebPlatformStrategies::deleteCookie):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts):
        (WebKit::WebFrameNetworkingContext::storageSession):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::WebFrameNetworkingContext::storageSession):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::ensurePrivateBrowsingSession):
        (WebKit::WebProcess::destroyPrivateBrowsingSession):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2014-01-18  Brian Burg  <bburg@apple.com>

        Web Inspector: Page should use std::unique_ptr for InspectorController
        https://bugs.webkit.org/show_bug.cgi?id=127068

        Reviewed by Joseph Pecoraro.

        Convert call sites to use a InspectorController reference.

        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::drawRect):
        * WebProcess/WebCoreSupport/WebInspectorFrontendClient.cpp:
        (WebKit::WebInspectorFrontendClient::WebInspectorFrontendClient):
        (WebKit::WebInspectorFrontendClient::closeWindow):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::createInspectorPage):
        (WebKit::WebInspector::show):
        (WebKit::WebInspector::close):
        (WebKit::WebInspector::evaluateScriptForTest):
        (WebKit::WebInspector::showConsole):
        (WebKit::WebInspector::showResources):
        (WebKit::WebInspector::showMainResourceForFrame):
        (WebKit::WebInspector::startJavaScriptDebugging):
        (WebKit::WebInspector::stopJavaScriptDebugging):
        (WebKit::WebInspector::setJavaScriptProfilingEnabled):
        (WebKit::WebInspector::startJavaScriptProfiling):
        (WebKit::WebInspector::stopJavaScriptProfiling):
        (WebKit::WebInspector::startPageProfiling):
        (WebKit::WebInspector::stopPageProfiling):
        (WebKit::WebInspector::dispatchMessageFromRemoteFrontend):
        (WebKit::WebInspector::remoteFrontendConnected):
        (WebKit::WebInspector::remoteFrontendDisconnected):

2014-01-18  Anders Carlsson  <andersca@apple.com>

        Remove ENABLE_THREADED_HTML_PARSER defines everywhere
        https://bugs.webkit.org/show_bug.cgi?id=127225

        Reviewed by Andreas Kling.

        This concludes the removal of over 8.8 million lines of threaded parser code.

        * Configurations/FeatureDefines.xcconfig:

2014-01-18  Yongjun Zhang  <yongjun_zhang@apple.com>

        Make WKRenderingProgressEvents a shareable API.
        https://bugs.webkit.org/show_bug.cgi?id=127213

        Reviewed by Dan Bernstein.

        Move WKRenderingProgressEvents from UIProcess to Shared, so that an inject bundle
        could also use this enum when listening to layout milestones.

        * Shared/API/Cocoa/WKRenderingProgressEvents.h: Added.
        (NS_OPTIONS):
        * Shared/API/Cocoa/WKRenderingProgressEventsInternal.h: Added.
        (renderingProgressEvents):
        * UIProcess/API/Cocoa/WKBrowsingContextController.h: Move WKRenderingProgressEvents to Shared/API/Cocoa/WKRenderingProgressEvents.h.
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm: Move renderingProgressEvents() to WKRenderingProgressEventsInternal.h.
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h: Add
            webProcessPlugInBrowserContextController:renderingProgressDidChange: to load delegate.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (didLayout):
        (setUpPageLoaderClient): Also listen to didLayout callback for layout milestones.

2014-01-17  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r162237 and r162241.
        http://trac.webkit.org/changeset/162237
        http://trac.webkit.org/changeset/162241
        https://bugs.webkit.org/show_bug.cgi?id=127216

        Broke lots of API tests (Requested by ap on #webkit).

        * CMakeLists.txt:
        * GNUmakefile.list.am:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::storageSession):
        (WebKit::NetworkConnectionToWebProcess::startDownload):
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
        (WebKit::NetworkConnectionToWebProcess::cookiesEnabled):
        (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
        (WebKit::NetworkConnectionToWebProcess::getRawCookies):
        (WebKit::NetworkConnectionToWebProcess::deleteCookie):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::ensurePrivateBrowsingSession):
        (WebKit::NetworkProcess::destroyPrivateBrowsingSession):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::privateBrowsingStorageSession):
        (WebKit::RemoteNetworkingContext::storageSession):
        (WebKit::RemoteNetworkingContext::privateBrowsingSession):
        (WebKit::privateBrowsingStorageSessionIdentifierBase):
        (WebKit::RemoteNetworkingContext::setPrivateBrowsingStorageSessionIdentifierBase):
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::RemoteNetworkingContext::destroyPrivateBrowsingSession):
        * NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:
        (WebKit::RemoteNetworkingContext::setPrivateBrowsingStorageSessionIdentifierBase):
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::RemoteNetworkingContext::destroyPrivateBrowsingSession):
        (WebKit::RemoteNetworkingContext::privateBrowsingSession):
        * Shared/SessionTracker.cpp: Removed.
        * Shared/SessionTracker.h: Removed.
        * UIProcess/APISession.cpp:
        (API::Session::Session):
        (API::Session::create):
        (API::Session::isEphemeral):
        * UIProcess/APISession.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebContext::createNewWebProcess):
        (WebKit::WebContext::createWebPage):
        * UIProcess/WebContext.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::create):
        (WebKit::WebPageProxy::WebPageProxy):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        * UIProcess/WebProcessProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::cookiesForDOM):
        (WebKit::WebPlatformStrategies::setCookiesFromDOM):
        (WebKit::WebPlatformStrategies::cookiesEnabled):
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebKit::WebPlatformStrategies::getRawCookies):
        (WebKit::WebPlatformStrategies::deleteCookie):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::privateSession):
        (WebKit::identifierBase):
        (WebKit::WebFrameNetworkingContext::setPrivateBrowsingStorageSessionIdentifierBase):
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::WebFrameNetworkingContext::destroyPrivateBrowsingSession):
        (WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts):
        (WebKit::WebFrameNetworkingContext::storageSession):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
        (WebKit::privateSession):
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::WebFrameNetworkingContext::destroyPrivateBrowsingSession):
        (WebKit::WebFrameNetworkingContext::storageSession):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::ensurePrivateBrowsingSession):
        (WebKit::WebProcess::destroyPrivateBrowsingSession):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2014-01-17  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix on EFL port after r162237

        The EFL port disabled NETWORK_PROCESS yet and use -Werror=unused-function.

        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        Guarded legacySessionID with ENABLE(NETWORK_PROCESS)

2014-01-17  Martin Hock  <mhock@apple.com>

        Flesh out session APIs (still not enabled at API level).
        https://bugs.webkit.org/show_bug.cgi?id=126918

        Reviewed by Alexey Proskuryakov.

        * CMakeLists.txt:
        * GNUmakefile.list.am:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::storageSession):
        (WebKit::NetworkConnectionToWebProcess::startDownload):
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
        (WebKit::NetworkConnectionToWebProcess::cookiesEnabled):
        (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
        (WebKit::NetworkConnectionToWebProcess::getRawCookies):
        (WebKit::NetworkConnectionToWebProcess::deleteCookie):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::ensurePrivateBrowsingSession):
        (WebKit::NetworkProcess::destroyPrivateBrowsingSession):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::storageSession):
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        * NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        * Shared/SessionTracker.cpp: Copied from Source/WebKit2/UIProcess/APISession.cpp.
        (WebKit::sessionMap):
        (WebKit::identifierBase):
        (WebKit::SessionTracker::getSessionMap):
        (WebKit::SessionTracker::getIdentifierBase):
        (WebKit::SessionTracker::session):
        (WebKit::SessionTracker::destroySession):
        (WebKit::SessionTracker::setIdentifierBase):
        * Shared/SessionTracker.h: Copied from Source/WebKit2/UIProcess/APISession.h.
        (WebKit::SessionTracker::isEphemeralID):
        * UIProcess/APISession.cpp:
        (API::generateID):
        (API::Session::defaultSession):
        (API::Session::legacyPrivateSession):
        (API::Session::Session):
        (API::Session::create):
        (API::Session::isEphemeral):
        (API::Session::getID):
        * UIProcess/APISession.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebContext::createNewWebProcess):
        (WebKit::WebContext::createWebPage):
        * UIProcess/WebContext.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::create):
        (WebKit::WebPageProxy::WebPageProxy):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::sessionID):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        * UIProcess/WebProcessProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::legacySessionID):
        (WebKit::WebPlatformStrategies::cookiesForDOM):
        (WebKit::WebPlatformStrategies::setCookiesFromDOM):
        (WebKit::WebPlatformStrategies::cookiesEnabled):
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebKit::WebPlatformStrategies::getRawCookies):
        (WebKit::WebPlatformStrategies::deleteCookie):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts):
        (WebKit::WebFrameNetworkingContext::storageSession):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::WebFrameNetworkingContext::storageSession):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::ensurePrivateBrowsingSession):
        (WebKit::WebProcess::destroyPrivateBrowsingSession):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2014-01-17  Andreas Kling  <akling@apple.com>

        Remove unused TOUCH_ADJUSTMENT code.
        <https://webkit.org/b/127181>

        Reviewed by Anders Carlsson.

        * WebProcess/WebPage/CoordinatedGraphics/WebPageCoordinatedGraphics.cpp:
        (WebKit::WebPage::findZoomableAreaForPoint):

2014-01-17  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2014-01-17  Anders Carlsson  <andersca@apple.com>

        Remove FrameLoaderClient::didPerformFirstNavigation()
        https://bugs.webkit.org/show_bug.cgi?id=127191

        Reviewed by Dan Bernstein.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2014-01-17  Manuel Rego Casasnovas  <rego@igalia.com>

        [GTK] Add CSS Grid Layout as experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=127089

        Reviewed by Martin Robinson.

        Allow CSS Grid Layout to be enabled through the environment variable WEBKITGTK_EXPERIMENTAL_FEATURES.

        Example: WEBKITGTK_EXPERIMENTAL_FEATURES="CSS_GRID_LAYOUT=1"

        * UIProcess/API/gtk/WebKitSettings.cpp:
        (webKitSettingsConstructed): Use new experimental feature to enable or disable CSS Grid Layout.
        * UIProcess/gtk/ExperimentalFeatures.cpp: Add new experimental feature.
        * UIProcess/gtk/ExperimentalFeatures.h: Ditto.

2014-01-17  Enrica Casucci  <enrica@apple.com>

        Support WebSelections in WK2 on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=127015
        <rdar://problem/15843090>

        Reviewed by Dan Bernstein.

        Removing unused variable in selectWithGesture that
        causes Release build to fail after r162103.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):

2014-01-17  Yongjun Zhang  <yongjun_zhang@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=127138
        Add more delegate callback methods to WKWebProcessPlugInLoadDelegate.

        Reviewed by Sam Weinig.

        Add more WKWebProcessPlugInLoadDelegate callback methods so that a injected
        bundle can listen/react to more frame loading events.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h: Add more delegate callback methods for
            WKWebProcessPlugInLoadDelegate.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (didCommitLoadForFrame):
        (didFinishDocumentLoadForFrame):
        (didFailLoadWithErrorForFrame):
        (didSameDocumentNavigationForFrame): 
        (didLayoutForFrame):
        (setUpPageLoaderClient):

2014-01-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] Add stubs for CustomProtocol classes
        https://bugs.webkit.org/show_bug.cgi?id=126343

        Reviewed by Gustavo Noronha Silva.

        * CMakeLists.txt:
        * GNUmakefile.am:
        * GNUmakefile.list.am:
        * PlatformGTK.cmake:
        * Shared/Network/CustomProtocols/soup/CustomProtocolManagerSoup.cpp: Added.
        (WebKit::generateCustomProtocolID):
        (WebKit::WebSoupRequestAsyncData::WebSoupRequestAsyncData):
        (WebKit::WebSoupRequestAsyncData::~WebSoupRequestAsyncData):
        (WebKit::WebSoupRequestAsyncData::requestFailed):
        (WebKit::WebSoupRequestAsyncData::releaseTask):
        (WebKit::CustomProtocolManager::supplementName):
        (WebKit::CustomProtocolManager::CustomProtocolManager):
        (WebKit::CustomProtocolManager::initializeConnection):
        (WebKit::CustomProtocolManager::initialize):
        * Shared/Network/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode): Move
        urlSchemesRegisteredForCustomProtocols encoding out of platform
        ifdefs, since it's already guarded by ENABLE(CUSTOM_PROTOCOLS).
        (WebKit::NetworkProcessCreationParameters::decode): Ditto.
        * Shared/Network/NetworkProcessCreationParameters.h: Ditto.
        * UIProcess/Network/CustomProtocols/soup/CustomProtocolManagerProxySoup.cpp: Added.
        (WebKit::CustomProtocolManagerProxy::CustomProtocolManagerProxy):
        (WebKit::CustomProtocolManagerProxy::startLoading):
        (WebKit::CustomProtocolManagerProxy::stopLoading):

2014-01-16  Tim Horton  <timothy_horton@apple.com>

        On iOS, zooming in with a TileController-backed main frame makes hundreds of tiles
        https://bugs.webkit.org/show_bug.cgi?id=126531
        <rdar://problem/15745862>

        Reviewed by Anders Carlsson.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView _updateViewExposedRect]):
        (-[WKContentView setViewportSize:]):
        (-[WKContentView didFinishScrollTo:]):
        (-[WKContentView didScrollTo:]):
        (-[WKContentView didZoomToScale:]):
        Because zooming is performed by the UIScrollView, we need to transform
        the exposedRect's offset in order to get it in FrameView-relative coordinates.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didFinishZooming):
        Save the pageScaleFactor when it changes.

2014-01-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Remove the weak pointer added to the web view in WebKitPrintOperation
        https://bugs.webkit.org/show_bug.cgi?id=127098

        Reviewed by Martin Robinson.

        If the print operation finishes and the web view is still alive,
        the weak pointer added to the view should be removed.

        * UIProcess/API/gtk/WebKitPrintOperation.cpp:
        (_WebKitPrintOperationPrivate::~_WebKitPrintOperationPrivate):

2014-01-15  Sam Weinig  <sam@webkit.org>

        TextBreakIterator's should support Latin-1 for all iterator types (Part 3)
        https://bugs.webkit.org/show_bug.cgi?id=126856

        Reviewed by Ryosuke Niwa.

        Change all the TextBreakIterator creation functions to take StringViews. Remove a few
        now unnecessary up-conversions to UTF-16 in the process.

        * UIProcess/efl/TextCheckerEfl.cpp:
        (WebKit::nextWordOffset):
        (WebKit::TextChecker::checkTextOfParagraph):

2014-01-16  Eunmi Lee  <eunmi15.lee@samsung.com>

        [EFL][WK2] EwkView can not be shown without re-sizing once it is hidden.
        https://bugs.webkit.org/show_bug.cgi?id=127084

        Reviewed by Gyuyoung Kim.

        Visibility of EwkView can not be controlled by evas_object_show/hide
        because EwkView can be shown only if re-sizing is requested, so modify
        codes to show EwkView directly if we do not wait for re-sizing.
        Additionally, we have to set default value of m_pendingSurfaceResize
        to true for accelerated mode to prevent to show black empty view for
        the first request to show.

        * UIProcess/API/efl/EwkView.cpp:
        (EwkView::EwkView):
        (EwkView::handleEvasObjectShow):

2014-01-16  Andy Estes  <aestes@apple.com>

        Build Fix: Use standard architectures when building for iOS

        Even though we don't use the plug-in services on iOS, we still need
        them to build (we won't install them). Be sure we specify valid iOS
        architectures when doing so.

        * Configurations/PluginService.32.xcconfig:
        * Configurations/PluginService.64.xcconfig:

2014-01-16  Enrica Casucci  <enrica@apple.com>

        Crash when destroying WKInteractionView.
        https://bugs.webkit.org/show_bug.cgi?id=127153
        <rdar://problem/15840761>

        Reviewed by Anders Carlsson.

        UIWKSelectionAssistant is a RetainPtr and it is being 
        deallocated after the view and its gesture recognizers
        have been destroyed.
        The parent class UIWebSelectionAssistant assumes to be
        deallocated before the view is gone.
        We deallocate the interaction assistants explicitly to
        fix the problem.

        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKInteractionView dealloc]):

2014-01-16  Brady Eidson  <beidson@apple.com>

        IDB: delete object store support
        <rdar://problem/15779641> and https://bugs.webkit.org/show_bug.cgi?id=127123

        Reviewed by Alexey Proskuryakov.

        Pipe through Web -> Database -> Web process messaging for delete object store.
        Perform dropping the object store in the backing store.

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

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::didDeleteObjectStore):
        (WebKit::UniqueIDBDatabase::deleteObjectStore):
        (WebKit::UniqueIDBDatabase::deleteObjectStoreInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createObjectStore):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteObjectStore):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::deleteObjectStore):
        (WebKit::WebIDBServerConnection::didDeleteObjectStore):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

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

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

        Reviewed by Brady Eidson.

        * Shared/HTTPCookieAcceptPolicy.h:
        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toHTTPCookieAcceptPolicy):
        (WebKit::toAPI):
        * UIProcess/API/C/WKCookieManager.h:
        Added the policy to appropriate switches and enums.

2014-01-16  Jeffrey Pfau  <jpfau@apple.com>

        Fix build after r162161. One FINAL was still present.

        * Shared/cf/KeyedDecoder.h:

2014-01-16  Anders Carlsson  <andersca@apple.com>

        Change all uses of FINAL to final now that all our compilers support it
        https://bugs.webkit.org/show_bug.cgi?id=127142

        Reviewed by Benjamin Poulain.

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:
        * NetworkProcess/RemoteNetworkingContext.h:
        * Shared/API/Cocoa/RemoteObjectRegistry.h:
        * Shared/APIArray.h:
        * Shared/APIString.h:
        * Shared/AsyncRequest.h:
        * Shared/AsyncTask.h:
        * Shared/cf/KeyedEncoder.h:
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/efl/WebViewEfl.h:
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Plugins/PDF/PDFPlugin.h:
        * WebProcess/Storage/StorageAreaImpl.h:
        * WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.h:

2014-01-16  Brady Eidson  <beidson@apple.com>

        Fix the build after r162148

        * Shared/cf/KeyedEncoder.h: s/OVERRIDE/override/

2014-01-15  Brady Eidson  <beidson@apple.com>

        Use KeyedCoding as a persistent storage mechanism for blobs
        https://bugs.webkit.org/show_bug.cgi?id=127012

        Reviewed by Anders Carlsson.

        Add a way to get the encoded buffer to save:
        * Shared/cf/KeyedEncoder.cpp:
        (WebKit::KeyedEncoder::finishEncoding):
        * Shared/cf/KeyedEncoder.h:

        Add a WebKit KeyedDecoder for CF platforms that can decode the previously encoded buffer:
        * Shared/cf/KeyedDecoder.cpp: Added.
        (WebKit::KeyedDecoder::KeyedDecoder):
        (WebKit::KeyedDecoder::~KeyedDecoder):
        (WebKit::KeyedDecoder::decodeInt64):
        (WebKit::KeyedDecoder::decodeUInt32):
        (WebKit::KeyedDecoder::decodeString):
        (WebKit::KeyedDecoder::beginObject):
        (WebKit::KeyedDecoder::endObject):
        (WebKit::KeyedDecoder::beginArray):
        (WebKit::KeyedDecoder::beginArrayElement):
        (WebKit::KeyedDecoder::endArrayElement):
        (WebKit::KeyedDecoder::endArray):
        * Shared/cf/KeyedDecoder.h:

        Create a WebKit KeyedEncoder/Decoder and use to encode/decode IDBKeyPaths:
        * DatabaseProcess/IndexedDB/IDBSerialization.cpp:
        (WebKit::serializeIDBKeyPath):
        (WebKit::deserializeIDBKeyPath):
        * DatabaseProcess/IndexedDB/IDBSerialization.h:

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createObjectStore):

        * WebKit2.xcodeproj/project.pbxproj:

2014-01-16  Andy Estes  <aestes@apple.com>

        Stop copying WKOriginDataManager.cpp into WebKit2.framework
        https://bugs.webkit.org/show_bug.cgi?id=127100

        Reviewed by Sam Weinig.

        The file was mistakenly added to the 'All' target. Remove it.

        * WebKit2.xcodeproj/project.pbxproj:

2014-01-16  Andy Estes  <aestes@apple.com>

        [iOS] Install WebKit2 XPC services correctly
        https://bugs.webkit.org/show_bug.cgi?id=127097

        Reviewed by Anders Carlsson.

        * Configurations/PluginService.32.xcconfig: Set SKIP_INSTALL to YES on iOS.
        * Configurations/PluginService.64.xcconfig: Ditto.
        * Configurations/PluginService.Development.xcconfig: Ditto.
        * WebKit2.xcodeproj/project.pbxproj: Modified the "Add XPCServices symlink"
        build phase to only execute on OS X. Modified the
        "Copy XPC services for engineering builds" build phase to copy files
        directly to WebKit2.framework/XPCServices/ on iOS, and modified its
        output file paths to omit "Versions/A/" (since OS X will have a
        XPCServices symlink at the root of the framework bundle).

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

        Build fix for mac following r162141.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: Switch OVERRIDE to override.

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

        Add support for handling WebGL load policies.
        https://bugs.webkit.org/show_bug.cgi?id=126935
        <rdar://problem/15790448>.

        Reviewed by Timothy Horton.

        Boiler plate code for getting the load policy logic from WebProcess to the UIProcess.

        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toWebGLLoadPolicy):
        * UIProcess/API/C/WKPageLoaderClient.h: Define a new WKPageLoaderClientV4 struct.
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (setUpPageLoaderClient):
        * UIProcess/WebLoaderClient.cpp:
        (WebKit::WebLoaderClient::webGLLoadPolicy):
        * UIProcess/WebLoaderClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::webGLPolicyForURL):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::webGLPolicyForURL): 
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::webGLPolicyForURL): We use a sendSync to get the load policy value from the UIProcess.
        * WebProcess/WebPage/WebPage.h:

2014-01-16  Peter Molnar  <pmolnar.u-szeged@partner.samsung.com>

        Remove workaround for compilers not supporting explicit override control
        https://bugs.webkit.org/show_bug.cgi?id=127111

        Reviewed by Anders Carlsson.

        Now all compilers support explicit override control, this workaround can be removed.

        * DatabaseProcess/DatabaseProcess.h:
        * DatabaseProcess/DatabaseToWebProcessConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:
        * NetworkProcess/AsynchronousNetworkLoaderClient.h:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessPlatformStrategies.h:
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/SynchronousNetworkLoaderClient.h:
        * NetworkProcess/mac/DiskCacheMonitor.h:
        * PluginProcess/EntryPoint/mac/LegacyProcess/PluginProcessMain.mm:
        * PluginProcess/PluginControllerProxy.h:
        * PluginProcess/PluginProcess.h:
        * PluginProcess/WebProcessConnection.h:
        * Shared/API/Cocoa/RemoteObjectRegistry.h:
        * Shared/APIObject.h:
        * Shared/AsyncRequest.h:
        * Shared/AsyncTask.h:
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/ChildProcess.h:
        * Shared/ChildProcessProxy.h:
        * Shared/CoordinatedGraphics/WebCoordinatedSurface.h:
        * Shared/Downloads/Download.h:
        * Shared/Network/CustomProtocols/CustomProtocolManager.h:
        * Shared/WebConnection.h:
        * Shared/WebResourceBuffer.h:
        * Shared/cf/KeyedEncoder.h:
        * Shared/mac/SecItemShim.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:
        * UIProcess/CoordinatedGraphics/WebView.h:
        * UIProcess/Databases/DatabaseProcessProxy.h:
        * UIProcess/Downloads/DownloadProxy.h:
        * UIProcess/DrawingAreaProxy.h:
        * UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h:
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Notifications/WebNotificationManagerProxy.h:
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Scrolling/RemoteScrollingTree.h:
        * UIProcess/Storage/StorageManager.h:
        * UIProcess/WebApplicationCacheManagerProxy.h:
        * UIProcess/WebBatteryManagerProxy.h:
        * UIProcess/WebConnectionToWebProcess.h:
        * UIProcess/WebContext.h:
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebDatabaseManagerProxy.h:
        * UIProcess/WebFullScreenManagerProxy.h:
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebIconDatabase.h:
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebKeyValueStorageManager.h:
        * UIProcess/WebMediaCacheManagerProxy.h:
        * UIProcess/WebNetworkInfoManagerProxy.h:
        * UIProcess/WebOriginDataManagerProxy.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceCacheManagerProxy.h:
        * UIProcess/WebVibrationProxy.h:
        * UIProcess/efl/PageViewportControllerClientEfl.h:
        * UIProcess/efl/WebViewEfl.h:
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/mac/SecItemShimProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/ViewGestureController.h:
        * UIProcess/mac/WebColorPickerMac.h:
        * UIProcess/soup/WebSoupRequestManagerProxy.h:
        * WebProcess/ApplicationCache/WebApplicationCacheManager.h:
        * WebProcess/Battery/WebBatteryManager.h:
        * WebProcess/Cookies/WebCookieManager.h:
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/WebToDatabaseProcessConnection.h:
        * WebProcess/EntryPoint/mac/LegacyProcess/WebContentProcessMain.mm:
        * WebProcess/FileAPI/BlobRegistryProxy.h:
        * WebProcess/Geolocation/WebGeolocationManager.h:
        * WebProcess/IconDatabase/WebIconDatabaseProxy.h:
        * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm:
        * WebProcess/MediaCache/WebMediaCacheManager.h:
        * WebProcess/Network/NetworkProcessConnection.h:
        * WebProcess/Network/WebResourceLoadScheduler.h:
        * WebProcess/Network/WebResourceLoader.h:
        * WebProcess/NetworkInfo/WebNetworkInfoManager.h:
        * WebProcess/Notifications/WebNotificationManager.h:
        * WebProcess/OriginData/WebOriginDataManager.h:
        * WebProcess/Plugins/Netscape/NetscapePlugin.h:
        * WebProcess/Plugins/PDF/PDFPlugin.h:
        * WebProcess/Plugins/PDF/PDFPluginAnnotation.h:
        * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.h:
        * WebProcess/Plugins/PDF/PDFPluginPasswordField.h:
        * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:
        * WebProcess/Plugins/PluginProcessConnection.h:
        * WebProcess/Plugins/PluginProcessConnectionManager.h:
        * WebProcess/Plugins/PluginProxy.h:
        * WebProcess/Plugins/PluginView.h:
        * WebProcess/ResourceCache/WebResourceCacheManager.h:
        * WebProcess/Scrolling/RemoteScrollingCoordinator.h:
        * WebProcess/Storage/StorageAreaImpl.h:
        * WebProcess/Storage/StorageAreaMap.h:
        * WebProcess/Storage/StorageNamespaceImpl.h:
        * WebProcess/WebConnectionToUIProcess.h:
        * WebProcess/WebCoreSupport/WebAlternativeTextClient.h:
        * WebProcess/WebCoreSupport/WebBatteryClient.h:
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebColorChooser.h:
        * WebProcess/WebCoreSupport/WebContextMenuClient.h:
        * WebProcess/WebCoreSupport/WebDatabaseManager.h:
        * WebProcess/WebCoreSupport/WebDeviceProximityClient.h:
        * WebProcess/WebCoreSupport/WebDragClient.h:
        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebCoreSupport/WebGeolocationClient.h:
        * WebProcess/WebCoreSupport/WebInspectorClient.h:
        * WebProcess/WebCoreSupport/WebInspectorFrontendClient.h:
        * WebProcess/WebCoreSupport/WebNavigatorContentUtilsClient.h:
        * WebProcess/WebCoreSupport/WebNetworkInfoClient.h:
        * WebProcess/WebCoreSupport/WebNotificationClient.h:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebCoreSupport/WebPopupMenu.h:
        * WebProcess/WebCoreSupport/WebProgressTrackerClient.h:
        * WebProcess/WebCoreSupport/WebSearchPopupMenu.h:
        * WebProcess/WebCoreSupport/WebVibrationClient.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/DrawingAreaImpl.h:
        * WebProcess/WebPage/EventDispatcher.h:
        * WebProcess/WebPage/ViewGestureGeometryCollector.h:
        * WebProcess/WebPage/WebBackForwardListProxy.h:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/gtk/LayerTreeHostGtk.h:
        * WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebProcess.h:
        * WebProcess/soup/WebSoupRequestManager.h:

2014-01-16  Ian Henderson  <ianh@apple.com>

        Expose scrollView on WKView
        https://bugs.webkit.org/show_bug.cgi?id=127085

        Reviewed by Antti Koivisto.

        Expose WKView's scroll view as a property.  In order to support
        clients calling setDelegate:, we create a forwarder object that sends
        delegate methods to both WKView (the "internal delegate") and the
        publicly-exposed delegate (the "external delegate").

        * UIProcess/API/Cocoa/WKView.h:
        * UIProcess/API/ios/WKScrollView.h:
        * UIProcess/API/ios/WKScrollView.mm:
        (-[WKScrollViewDelegateForwarder initWithInternalDelegate:externalDelegate:]):
        (-[WKScrollViewDelegateForwarder methodSignatureForSelector:]):
        (-[WKScrollViewDelegateForwarder respondsToSelector:]):
        (-[WKScrollViewDelegateForwarder forwardInvocation:]):
        (-[WKScrollView setInternalDelegate:]):
        (-[WKScrollView setDelegate:]):
        (-[WKScrollView delegate]):
        Pretend like _externalDelegate is the real delegate to avoid exposing
        our internal delegate or forwarder object.
        (-[WKScrollView _updateDelegate]):
        (-[WKScrollView dealloc]):
        * UIProcess/API/ios/WKViewIOS.mm:
        (-[WKView scrollView]):
        (-[WKView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):

2014-01-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][EFL][NIX] Do not use PrintContext, Frame and DocumentLoader in Errors
        https://bugs.webkit.org/show_bug.cgi?id=127047

        Reviewed by Martin Robinson.

        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
        (WebKit::WebPrintOperationGtk::frameURL): Helper function to get
        the URL of the frame being printed.
        (WebKit::WebPrintOperationGtk::print): Use frameURL() as failing
        URL for printing errors.
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.h:

2014-01-15  Benjamin Poulain  <bpoulain@apple.com>

        Move user agent code to WebCore and unify some code between OS X and iOS
        https://bugs.webkit.org/show_bug.cgi?id=127080

        Reviewed by Sam Weinig.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::userVisibleWebKitVersionString):
        (WebKit::WebPageProxy::standardUserAgent):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::standardUserAgent):
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2014-01-15  Eunmi Lee  <eunmi15.lee@samsung.com>

        [EFL][WK2] Use timestamp when event occurs for touch events.
        https://bugs.webkit.org/show_bug.cgi?id=126424

        Reviewed by Gyuyoung Kim.

        Current time is used for touch event's timestamp instead of timestamp
        when event occurs. Timestamp of touch event is used to implement flick
        gesture, so it should be real value for accurate gesture processing.

        * UIProcess/API/efl/EwkView.cpp:
        Function names for handling touch events are changed to distinguish
        mouse events and multi events.
        (EwkView::setTouchEventsEnabled):
        (EwkView::feedTouchEvents):
        (EwkView::handleMouseDownForTouch):
        (EwkView::handleMouseUpForTouch):
        (EwkView::handleMouseMoveForTouch):
        (EwkView::handleMultiDownForTouch):
        (EwkView::handleMultiUpForTouch):
        (EwkView::handleMultiMoveForTouch):
        * UIProcess/API/efl/EwkView.h:
        * UIProcess/API/efl/GestureRecognizer.cpp:
        (WebKit::GestureHandler::handlePan):
        (WebKit::GestureRecognizer::processTouchEvent):
        (WebKit::GestureRecognizer::noGesture):
        (WebKit::GestureRecognizer::singleTapGesture):
        (WebKit::GestureRecognizer::doubleTapGesture):
        (WebKit::GestureRecognizer::panGesture):
        (WebKit::GestureRecognizer::pinchGesture):
        * UIProcess/API/efl/GestureRecognizer.h:

2014-01-15  Gavin Barraclough  <barraclough@apple.com>

        Change Page, FocusController to use ViewState
        https://bugs.webkit.org/show_bug.cgi?id=126533

        Unreviewed rollout, this caused a regression.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::setActive):
        (WebKit::WebPage::setViewIsVisible):
        (WebKit::WebPage::setFocused):
        (WebKit::WebPage::setIsInWindow):
        (WebKit::WebPage::setViewStateInternal):
        (WebKit::WebPage::setIsVisuallyIdle):
        * WebProcess/WebPage/WebPage.h:

2014-01-15  Yongjun Zhang  <yongjun_zhang@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=127072
        Don't autorelease wrapper object (WebProcessPlugInScriptWorld) for InjectedBundleScriptWorld::normalWorld().

        Reviewed by Geoffrey Garen.

        In [WKWebProcessPlugInScriptWorld normalWorld], InjectedBundleScriptWorld::normalWorld() returns a static
        instance,  autoreleasing its wrapper object could cause a dangling pointer and crash later.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:
        (+[WKWebProcessPlugInScriptWorld normalWorld]):

2014-01-15  Andy Estes  <aestes@apple.com>

        [iOS] Properly exclude the shim dylibs this time
        https://bugs.webkit.org/show_bug.cgi?id=127075

        Reviewed by Anders Carlsson.

        BaseLegacyProcess.xcconfig was setting EXCLUDED_SOURCE_FILE_NAMES in
        conflict with what I added in r161918, and I misspelled the setting
        name in two instances. Fix these two bugs.

        Also remove a vestigial OTHER_LDFLAGS from WebContentProcess.xcconfig
        while we're here.

        * Configurations/BaseLegacyProcess.xcconfig:
        * Configurations/NetworkProcess.xcconfig:
        * Configurations/PluginProcess.xcconfig:
        * Configurations/WebContentProcess.xcconfig:

2014-01-15  Enrica Casucci  <enrica@apple.com>

        Support WebSelections in WK2 on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=127015

        Reviewed by Benjamin Poulain.

        This is the first step towards adding support for selections in
        non editable content on iOS for WK2.
        In particular, this patch adds the basic plumbing to decide which
        gesture recognizers are enabled and adds empty stubs for the gestures
        that we'll need to support.
        There are two separate assistants for selections, one to be used
        in editable text (UIWKTextInteractionAssistant) and one for non editable
        text (UIWKSelectionAssistant) and they are mutually exclusive.
        UIWKSelectionAssistant is created at the time the view is created, 
        and swapped with UIWKTextInteraction assistant
        only when an editable element is focused and the keyboard appears on screen.

        gestureRecognizerShouldBegin is the delegate call used to decide which gestures
        should begin based on the position the gesture occurred at.
        We want to avoid as much as possible synchronous calls to the WebProcess to
        retrieve information about the content and in order to do so, we take advantage
        of the order in which the gesture recognizers will trigger, based on the delay
        configured at initialization.
        The first gesture to trigger is highlightLongPress, followed by longpress in the
        active assistant and longpress in the WKInteractionView.
        There are two different scenarios for highlighlongpress based on which assistant is
        currently active.

        UIWKSelectionAssistant is active:
            We send a request to the WebProcess to get information on the position
            and we return YES, allowing the gesture to start.
            We delegate to the WebProcess the proper handling of highlight based on the element.
            When longPress gesture fires for the assistant, we assume we have received the reply to our
            previous request, if not we fetch the information synchronously.
            We are then able to make an informed decision about whether
            or not to start the gesture. If the reply is NO, the third and last long press
            gesture can be evaluated to decide whether to show the action sheet or simply generate
            a click event.

        UIWKTextInteractionAssistant is active:
            In this case we must have information about the position immediately and we issue
            a synchronous request to the WebProcess.
            If we are not interacting with the same node, we return NO.
            Then the longpress gesture fires for the assistant which performs the same check.
            If the node is the same, the loupe gesture will start, otherwise the last longpress
            gesture will be evaluated to decide about showing the action sheet or generating a
            click event.

        * Scripts/webkit2/messages.py:
        * Shared/InteractionInformationAtPosition.cpp: Added.
        (WebKit::InteractionInformationAtPosition::encode):
        (WebKit::InteractionInformationAtPosition::decode):
        * Shared/InteractionInformationAtPosition.h: Added.
        (WebKit::InteractionInformationAtPosition::InteractionInformationAtPosition):
        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::positionInformationDidChange):
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView _positionInformationDidChange:]):
        * UIProcess/API/ios/WKContentViewInternal.h:
        * UIProcess/API/ios/WKInteractionView.h:
        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKInteractionView initWithFrame:]):
        (-[WKInteractionView dealloc]):
        (-[WKInteractionView gestureRecognizer:canPreventGestureRecognizer:]):
        (-[WKInteractionView gestureRecognizer:canBePreventedByGestureRecognizer:]):
        (isSamePair):
        (-[WKInteractionView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKInteractionView _showImageSheet]):
        (-[WKInteractionView _showLinkSheet]):
        (-[WKInteractionView _actionForLongPress]):
        (-[WKInteractionView ensurePositionInformationIsUpToDate:]):
        (-[WKInteractionView gestureRecognizerShouldBegin:]):
        (-[WKInteractionView hasSelectablePositionAtPoint:]):
        (-[WKInteractionView pointIsInAssistedNode:]):
        (-[WKInteractionView _longPressRecognized:]):
        (-[WKInteractionView _doubleTapRecognized:]):
        (-[WKInteractionView _twoFingerDoubleTapRecognized:]):
        (-[WKInteractionView _twoFingerPanRecognized:]):
        (-[WKInteractionView useSelectionAssistantWithMode:]):
        (-[WKInteractionView _positionInformationDidChange:]):
        (-[WKInteractionView interactionAssistant]):
        (-[WKInteractionView _startAssistingKeyboard]):
        (-[WKInteractionView _stopAssistingKeyboard]):
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didReceivePositionInformation):
        (WebKit::WebPageProxy::getPositionInformation):
        (WebKit::WebPageProxy::requestPositionInformation):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::getPositionInformation):
        (WebKit::WebPage::requestPositionInformation):

2014-01-15  Yongjun Zhang  <yongjun_zhang@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=127066
        Add WKBrowsingContextHandle.h to WebKit2 private headers.

        Reviewed by Dan Bernstein.

        Add WKBrowsingContextHandle.h to WebKit2 private headers so that WebKit2 client
        can use WKBrowsingContextHandle class.

        * WebKit2.xcodeproj/project.pbxproj:

2014-01-15  Piotr Grad  <p.grad@samsung.com>

        toStringVector static function definition should not be redundant.
        https://bugs.webkit.org/show_bug.cgi?id=126872.

        Reviewed by Anders Carlsson.

        toStringVector function was declared twice in InjectedBundle.cpp and WebPageGroup.cpp as static.
        In order to remove redundant definition this function was moved into API::Array.

        * Shared/APIArray.cpp:
        (API::Array::toStringVector):
        * Shared/APIArray.h:
        * UIProcess/WebPageGroup.cpp:
        (WebKit::WebPageGroup::addUserStyleSheet):
        (WebKit::WebPageGroup::addUserScript):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::addUserScript):
        (WebKit::InjectedBundle::addUserStyleSheet):

2014-01-10  Gavin Barraclough  <barraclough@apple.com>

        REGRESSION (r158369): Some pop-up windows open at incorrect size (affects GMail, theblaze.com)
        https://bugs.webkit.org/show_bug.cgi?id=126289

        Reviewed by Anders Carlson.

        Partial revert of https://bugs.webkit.org/show_bug.cgi?id=123557.
        On window.open, update page when the UIProcess sends the create message

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
            - creation paraments are not preserved at window.open.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::setViewState):
        (WebKit::WebPage::setViewStateInternal):
        * WebProcess/WebPage/WebPage.h:
            - add interface to update page.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::createWebPage):
            - if we try to create a page that already exists, update the current page's view state.

2014-01-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Web process sometimes crashes when printing in synchronous mode
        https://bugs.webkit.org/show_bug.cgi?id=126979

        Reviewed by Gustavo Noronha Silva.

        When printing synchronously in GTK+ we need to make sure that we
        have a list of Printers before starting the print operation. Getting
        the list of printers is done synchronously by GTK+, but using a
        nested main loop that might process IPC messages comming from the
        UI process like EndPrinting. When the EndPrinting message is
        received while the printer list is being populated, the print
        operation is finished unexpectely and the web process crashes. The
        PrinterListGtk class gets the list of printers in the constructor
        so we just need to ensure there's an instance alive during the
        synchronous print operation. In case of asynchronous printing the
        printer list will be created during the print operation without
        any risk, because the EndPrinting message is not sent until the
        printing callback has been received in the UI process.

        * GNUmakefile.list.am: Add new files to compilation.
        * PlatformGTK.cmake: Ditto.
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::print): Ensure PrinterListGtk is created
        before the synchronous printing and destroyed afterwards.
        * WebProcess/WebPage/gtk/PrinterListGtk.cpp: Added.
        (WebKit::PrinterListGtk::shared): Return the singleton.
        (WebKit::PrinterListGtk::enumeratePrintersFunction): Callback
        called by gtk_enumerate_printers() when a new printer is found.
        (WebKit::PrinterListGtk::PrinterListGtk): Call
        gtk_enumerate_printers() in syhchronous mode.
        (WebKit::PrinterListGtk::~PrinterListGtk):
        (WebKit::PrinterListGtk::addPrinter): Add the printer to the list
        and set the default printer if needed.
        (WebKit::PrinterListGtk::findPrinter): Find the printer for the
        given name.
        * WebProcess/WebPage/gtk/PrinterListGtk.h: Added.
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp: Use
        PrinterListGtk class to find the printer instead of calling
        gtk_enumerate_printers().

2014-01-15  Tomas Popela  <tpopela@redhat.com>

        [SOUP] [WK2] - Disable MemoryCache when the DOCUMENT_VIEWER cache model is set
        https://bugs.webkit.org/show_bug.cgi?id=126577

        Reviewed by Carlos Garcia Campos.

        As in http://trac.webkit.org/changeset/152483, but this time for
        WebKit2. When WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER is set we need to
        disable the MemoryCache completely to prevent caching of the resources.

        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::platformSetCacheModel):

2014-01-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] UI process crashes when closing the window right after printing with javascript
        https://bugs.webkit.org/show_bug.cgi?id=126981

        Reviewed by Gustavo Noronha Silva.

        The UI process crashes because when the page is closed, the web
        view is destroyed before the print operation has actually
        finished. Use a weak pointer to make sure the web view pointer is
        set to NULL when the it's destroyed and emit the finished callback
        always so that the user can clean up the operation even when the
        web view has been closed.

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

2014-01-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] UI process crashes when the web process crashes while printing
        https://bugs.webkit.org/show_bug.cgi?id=126977

        Reviewed by Gustavo Noronha Silva.

        When the web process crashes, the printing callback is
        invalidated, so the function is called with a NULL error.

        * UIProcess/API/gtk/WebKitPrintOperation.cpp:
        (drawPagesForPrintingCompleted): Check wkError is not NULL before
        trying to use it.
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewPrintFrame): Set the print mode of the operation
        before emitting the print signal.

2014-01-14  Brady Eidson  <beidson@apple.com>

        IDB: create object store support
        <rdar://problem/15779639> and https://bugs.webkit.org/show_bug.cgi?id=127011

        Reviewed by Anders Carlsson.

        Add messaging/callback infrastructure for creating object stores:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::createObjectStore):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::createObjectStore):
        (WebKit::WebIDBServerConnection::didCreateObjectStore):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::didChangeDatabaseVersion):
        (WebKit::UniqueIDBDatabase::didCreateObjectStore):
        (WebKit::UniqueIDBDatabase::didCompleteBoolRequest):
        (WebKit::UniqueIDBDatabase::createObjectStore):
        (WebKit::UniqueIDBDatabase::createObjectStoreInBackingStore):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:

        Add serialization helpers to save/restore an IDBKeyPath to/from disk:
        * DatabaseProcess/IndexedDB/IDBSerialization.cpp:
        (WebKit::serializeIDBKeyPath):
        (WebKit::deserializeIDBKeyPath):
        * DatabaseProcess/IndexedDB/IDBSerialization.h:

        Add object store metadata to the schema, and save/restore the metadata:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::extractExistingMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createObjectStore):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * Scripts/webkit2/messages.py:
        (struct_or_class):
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-14  Jae Hyun Park  <jae.park@company100.net>

        [GTK] Unreviewed build fix after r162034

        * GNUmakefile.list.am:

2014-01-14  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix for CMake based ports after r162034.

        * CMakeLists.txt:

2014-01-14  Jeffrey Pfau  <jpfau@apple.com>

        Build fix after r162034

        Rubber-stamped by Benjamin Poulain.

        * WebProcess/WebCoreSupport/WebProgressTrackerClient.cpp:

2014-01-14  Anders Carlsson  <andersca@apple.com>

        Create separate progress tracker clients
        https://bugs.webkit.org/show_bug.cgi?id=127025

        Reviewed by Sam Weinig.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebCoreSupport/WebProgressTrackerClient.cpp: Copied from Source/WebCore/loader/ProgressTrackerClient.h.
        (WebKit::WebProgressTrackerClient::WebProgressTrackerClient):
        (WebKit::WebProgressTrackerClient::progressTrackerDestroyed):
        (WebKit::WebProgressTrackerClient::progressStarted):
        (WebKit::WebProgressTrackerClient::progressEstimateChanged):
        (WebKit::WebProgressTrackerClient::progressFinished):
        * WebProcess/WebCoreSupport/WebProgressTrackerClient.h: Copied from Source/WebCore/loader/ProgressTrackerClient.h.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):

2014-01-14  Benjamin Poulain  <bpoulain@apple.com>

        [WK2] Make WebPageProxy's setUserAgent private
        https://bugs.webkit.org/show_bug.cgi?id=127013

        Reviewed by Anders Carlsson.

        * UIProcess/WebPageProxy.h:
        The API to modify the user agent already has 3 "setters":
        -standardUserAgent
        -setApplicationNameForUserAgent
        -setCustomUserAgent

        The method WebPageProxy::setUserAgent() is supposed to be internal, not used directly.
        Using it directly would cause unexpected behaviors, for example:
        -Set the user agent with setUserAgent.
        -Set CustomUserAgent.
        -Reset CustomUserAgent.
        ->The user agent is now standardUserAgent instead of the user agent defined initially.

2014-01-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r162000.
        http://trac.webkit.org/changeset/162000
        https://bugs.webkit.org/show_bug.cgi?id=127009

        API versioning is wrong (Requested by rfong on #webkit).

        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/API/C/WKPageLoaderClient.h:
        * UIProcess/API/C/WKPageUIClient.h:
        * UIProcess/WebLoaderClient.cpp:
        * UIProcess/WebLoaderClient.h:
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebUIClient.cpp:
        * UIProcess/WebUIClient.h:
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:

2014-01-14  Csaba Osztrogonác  <ossy@webkit.org>

        Speculative buildfix after r161999.

        * Shared/APIObject.h:

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

        Add support for handling WebGL load policies.
        https://bugs.webkit.org/show_bug.cgi?id=126935
        <rdar://problem/15790448>.

        Reviewed by Brent Fulgham.

        Boiler plate code for sending messages to and from the UI and Web Process. 

        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toWebGLLoadPolicy):
        * UIProcess/API/C/WKPageLoaderClient.h:
        * UIProcess/API/C/WKPageUIClient.h:
        * UIProcess/WebLoaderClient.cpp:
        (WebKit::WebLoaderClient::webGLLoadPolicy):
        * UIProcess/WebLoaderClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::webGLContextCreated):
        (WebKit::WebPageProxy::webGLPolicyForHost):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebUIClient.cpp:
        (WebKit::WebUIClient::webGLContextCreated):
        * UIProcess/WebUIClient.h:
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::webGLContextCreated):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::webGLPolicyForHost):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebPage.cpp: A sendSync is used here to get the webGLPolicyForHost message sent between the Web and UI process.
                                          In the future this will be replaced with a strategy is non-blocking.
        (WebKit::WebPage::getWebGLPolicyForHost):
        * WebProcess/WebPage/WebPage.h:

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

        WebKit2 leaks sudden termination assertions when a page with unload handlers is closed.
        <https://webkit.org/b/126974> / <rdar://problem/15812954>

        When a page with an unload handler is loaded, the web process tells the UI process that it
        should disable sudden termination. However, when the page is closed the connection between
        the web and UI process is torn down before the web content has a chance to tell the UI
        process to reenable sudden termination.

        Reviewed by Anders Carlsson.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::WebProcessProxy):
        (WebKit::WebProcessProxy::~WebProcessProxy): Balance any outstanding disableSuddenTermination calls.
        (WebKit::WebProcessProxy::enableSuddenTermination): Decrement the count.
        (WebKit::WebProcessProxy::disableSuddenTermination): Increment the count.
        * UIProcess/WebProcessProxy.h:

2014-01-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: For Remote Inspection link WebProcess's to their parent UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=126995

        Reviewed by Timothy Hatcher.

        * WebProcess/WebCoreSupport/WebInspectorClient.h:
        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::parentProcessIdentifier):
        WebProcesses are proxies for a parent UIProcess.

2014-01-14  Tim Horton  <timothy_horton@apple.com>

        iOS WebKit2 build fixes, part 3

        * WebKit2.xcodeproj/project.pbxproj:
        Remove some files from the 'All' target that should never have been a part of it.

2014-01-14  Tim Horton  <timothy_horton@apple.com>

        iOS WebKit2 build fixes, part 2

        * WebKit2.xcodeproj/project.pbxproj:
        Add some missing files.

2014-01-14  Brian J. Burg  <burg@cs.washington.edu>

        Add ENABLE(WEB_REPLAY) feature flag to the build system
        https://bugs.webkit.org/show_bug.cgi?id=126949

        Reviewed by Joseph Pecoraro.

        * Configurations/FeatureDefines.xcconfig:

2014-01-14  Tim Horton  <timothy_horton@apple.com>

        Move WKView.mm to WKViewIOS.mm as 161950 was supposed to do.

        * UIProcess/API/ios/WKView.mm: Removed.
        * UIProcess/API/ios/WKViewIOS.mm: Copied from UIProcess/API/ios/WKView.mm.

2014-01-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Test /webkit2/WebKitWebContext/languages crashes with network process enabled
        https://bugs.webkit.org/show_bug.cgi?id=126130

        Reviewed by Anders Carlsson.

        We need to notify the network process when the user preferred
        languages have changed to update the SoupSession accordingly.

        * NetworkProcess/NetworkProcess.h: Add
        userPreferredLanguagesChanged when using soup network backend.
        * NetworkProcess/NetworkProcess.messages.in: Add
        UserPreferredLanguagesChanged message when using soup network
        backend.
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::userPreferredLanguagesChanged): Update
        the SoupSession to use the given languages.
        (WebKit::NetworkProcess::platformInitializeNetworkProcess): Call
        userPreferredLanguagesChanged() when initialization parameters
        contain languages.
        (WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost):
        Remove unnedded WebCore prefix.
        (WebKit::NetworkProcess::clearCacheForAllOrigins): Simplify using
        a single line.
        * Shared/Network/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode): Encode the
        languages vector.
        (WebKit::NetworkProcessCreationParameters::decode): Decode the
        languages vector.
        * Shared/Network/NetworkProcessCreationParameters.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::languageChanged): Send a message also to the
        network process.
        * UIProcess/soup/WebContextSoup.cpp:
        (WebKit::WebContext::platformInitializeNetworkProcess): Set
        languages initial parameter.

2014-01-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] SoupNetworkSession::setAcceptLanguages should receive a const reference
        https://bugs.webkit.org/show_bug.cgi?id=126966

        Reviewed by Gustavo Noronha Silva.

        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::setSoupSessionAcceptLanguage): Use const Vector<String>&.

2014-01-14  Andreas Kling  <akling@apple.com>

        Remove deprecated DeferrableOneShotTimer constructor.
        <https://webkit.org/b/126984>

        Reviewed by Anders Carlsson.

        * WebProcess/Plugins/PluginView.h:
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::pluginSnapshotTimerFired):

            Take the timer by reference so we can use the new constructor.

2014-01-13  Tim Horton  <timothy_horton@apple.com>

        iOS WebKit2 build fixes, part 1

        * Configurations/WebKit2.xcconfig:
        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/RemoteNetworkingContext.h:
        * Shared/WebEventConversion.h:
        * UIProcess/API/ios/WKGeolocationProviderIOS.mm:
        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKTextPosition isEqual:]):
        * UIProcess/API/ios/WKViewIOS.mm: Renamed from Source/WebKit2/UIProcess/API/ios/WKView.mm.
        * UIProcess/ios/WebPageProxyIOS.mm:
        * UIProcess/ios/WebProcessProxyIOS.mm:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::elementDidFocus):
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:

2014-01-13  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] Disable failing API tests
        https://bugs.webkit.org/show_bug.cgi?id=126960

        Reviewed by Gyuyoung Kim.

        Disable color picker test until bug 119120 is resolved.

        * UIProcess/API/efl/tests/test_ewk2_color_picker.cpp:
        (TEST_F):

2014-01-13  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] ewk_view_page_contents_get() API test is failing
        https://bugs.webkit.org/show_bug.cgi?id=126957

        Reviewed by Gyuyoung Kim.

        As the day in 'Date' field may be one digit or two digit,
        the data length may also be varied by one byte.

        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
        (EWK2ViewTest::PageContentsAsMHTMLCallback):

2014-01-13  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r161939.
        http://trac.webkit.org/changeset/161939
        https://bugs.webkit.org/show_bug.cgi?id=126956

        didn't work with mac, of course (Requested by thorton on
        #webkit).

        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/RemoteNetworkingContext.h:
        * Shared/WebEventConversion.h:
        * UIProcess/API/ios/WKGeolocationProviderIOS.mm:
        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKTextPosition isEqual:]):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:

2014-01-13  Benjamin Poulain  <bpoulain@apple.com>

        Update WebPageProxyIOS's user agent string
        https://bugs.webkit.org/show_bug.cgi?id=126933

        Reviewed by Darin Adler.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::standardUserAgent):
        Send a more reasonable user agent. The previous one was forcing
        iOS 5.1's iPad user-agent.

2014-01-13  Tim Horton  <timothy_horton@apple.com>

        iOS WebKit2 build fixes

        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/NetworkResourceLoader.h:
        Introduce/clarify some confusion about CFNETWORK vs. PLATFORM(IOS).

        * NetworkProcess/RemoteNetworkingContext.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        Get rid of an override of something that doesn't exist anymore.

        * WebKit2.xcodeproj/project.pbxproj:
        Add some files. It's likely there are more missing, but this is a start.

        * Shared/WebEventConversion.h:
        * WebProcess/WebPage/WebPage.h:
        Use WebKitAdditions.

        * UIProcess/API/ios/WKGeolocationProviderIOS.mm:
        Something bizarre is happening with internal deprecation warnings.

        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKTextPosition isEqual:]):
        Fix a typo.

        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        Remove an override of something that doesn't exist anymore.

2014-01-13  Andy Estes  <aestes@apple.com>

        [iOS] Build Fix: Don't build the 'All-iOS' target on iOS. Just use 'All'.

        * Makefile:

2014-01-13  Martin Robinson  <mrobinson@igalia.com>

        [CMake] Mark all dependency include paths and libraries as advanced variables
        https://bugs.webkit.org/show_bug.cgi?id=126504

        Reviewed by Daniel Bates.

        * CMakeLists.txt: Mark the LIBRT_LIBRARIES variable as advanced.

2014-01-13  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Circular dependency in generation of WebKitEnumTypes.h
        https://bugs.webkit.org/show_bug.cgi?id=126912

        Reviewed by Daniel Bates.

        * PlatformGTK.cmake: Remove the circular dependency by generating WebKitEnumTypes.h with
        all installed headers except for WebKitEnumTypes.h itself.

2014-01-13  Andy Estes  <aestes@apple.com>

        [iOS] Exclude shims and PluginProcess.app from the WebKit2 build
        https://bugs.webkit.org/show_bug.cgi?id=126936

        Reviewed by Daniel Bates.

        * Configurations/All.xcconfig: Added. Excluded PluginProcess.app from
        being copied into WebKit2.framework on iOS.
        * Configurations/NetworkProcess.xcconfig: Excluded SecItemShim.dylib
        from being copied into NetworkProcess.app on iOS.
        * Configurations/PluginProcess.xcconfig: Excluded
        PluginProcessShim.dylib from being copied into PluginProcess.app and
        set SKIP_INSTALL to YES on iOS.
        * Configurations/PluginProcessShim.xcconfig: Added. Linked the shim
        against necessary frameworks on Mac.
        * Configurations/SecItemShim.xcconfig: Ditto.
        * Configurations/WebProcessShim.xcconfig: Ditto.
        * Configurations/WebContentProcess.xcconfig: Excluded
        WebProcessShim.dylib from being copied into WebProcess.app on iOS.
        * PluginProcess/mac/PluginProcessShim.mm: Added #if !PLATFORM(IOS) guards.
        * Shared/mac/CookieStorageShimLibrary.cpp: Ditto.
        * WebProcess/mac/SecItemShimLibrary.mm: Ditto.
        * WebKit2.xcodeproj/project.pbxproj: Removed Mac-only frameworks from
        the shims' 'Link Binary with Libraries' build phases. Added new xcconfigs.

2014-01-13  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] Replace usage of DEFINE_STATIC_LOCAL with NeverDestroyed
        https://bugs.webkit.org/show_bug.cgi?id=126882

        Reviewed by Gyuyoung Kim.

        * Shared/efl/ProcessExecutablePathEfl.cpp:
        (WebKit::executablePathOfWebProcess):
        (WebKit::executablePathOfPluginProcess):
        (WebKit::executablePathOfNetworkProcess):
        * UIProcess/API/efl/EwkView.cpp:
        (wkPageToEvasObjectMap):
        * UIProcess/API/efl/ewk_context.cpp:
        (contextMap):
        * UIProcess/API/efl/ewk_page_group.cpp:
        (pageGroupMap):
        * UIProcess/efl/TextCheckerClientEfl.cpp:
        (TextCheckerClientEfl::instance):
        * UIProcess/efl/TextCheckerClientEfl.h:

2014-01-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] Add SoupNetworkSession class to wrap a SoupSession
        https://bugs.webkit.org/show_bug.cgi?id=126813

        Reviewed by Gustavo Noronha Silva.

        Use the new SoupNetworkSession API.

        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        (WebKit::NetworkProcess::platformSetCacheModel):
        (WebKit::NetworkProcess::clearCacheForAllOrigins):
        * NetworkProcess/unix/NetworkProcessMainUnix.cpp:
        (WebKit::NetworkProcessMain):
        * WebProcess/Cookies/soup/WebCookieManagerSoup.cpp:
        (WebKit::WebCookieManager::setCookiePersistentStorage):
        * WebProcess/efl/WebProcessMainEfl.cpp:
        (WebKit::WebProcessMainEfl):
        * WebProcess/gtk/WebProcessMainGtk.cpp:
        (WebKit::WebProcessMainGtk):
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::platformSetCacheModel):
        (WebKit::WebProcess::platformClearResourceCaches):
        (WebKit::setSoupSessionAcceptLanguage):
        (WebKit::WebProcess::platformInitializeWebProcess):
        * WebProcess/soup/WebSoupRequestManager.cpp:
        (WebKit::WebSoupRequestManager::registerURIScheme):

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

        Enable SUBPIXEL_LAYOUT on Mac
        <https://webkit.org/b/126283>

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2014-01-12  Sergio Correia  <sergio.correia@openbossa.org>

        [EFL][WK2] Make API tests work again
        https://bugs.webkit.org/show_bug.cgi?id=126769

        Reviewed by Gyuyoung Kim.

        The EFL and WK2 test binaries are currently being generated at *TestWebKitAPI/
        [E]WebKit2, respectively, and this causes problems because the logic to find
        where WebProcess is to look in the same directory of the running process and
        then proceed to use LIBEXECDIR (typically /usr/loca/bin).

        This patch introduces a WEBKIT_EXEC_PATH environment variable, inspired in the
        Gtk port, which allows us to look for WebProcess initially in this directory,
        if it's defined.

        * Shared/efl/ProcessExecutablePathEfl.cpp:
        (WebKit::findProcessPath): Change the logic to look initially in
        WEBKIT_EXEC_PATH, then proceed with the existing checks.
        * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp:
        (EWK2UnitTest::EWK2UnitTestEnvironment::EWK2UnitTestEnvironment):
        Define WEBKIT_EXEC_PATH to be used by EWebKit2 tests.

2014-01-12  Darin Adler  <darin@apple.com>

        Add deprecatedCharacters as a synonym for characters and convert most call sites
        https://bugs.webkit.org/show_bug.cgi?id=126858

        Reviewed by Anders Carlsson.

        * Shared/APIString.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::checkTextOfParagraph):
        (WebKit::WebPageProxy::checkSpellingOfString):
        (WebKit::WebPageProxy::checkGrammarOfString):
        * WebProcess/WebPage/EncoderAdapter.cpp:
        (WebKit::EncoderAdapter::encodeString):
        Use deprecatedCharacters instead of characters.

2014-01-12  Darin Adler  <darin@apple.com>

        Add type checking to isEqual methods
        https://bugs.webkit.org/show_bug.cgi?id=126862

        Reviewed by Anders Carlsson.

        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKTextRange isEqual:]): Added type checking for the argument. The old
        code asserted instead, and it's not clear what guarantees that assertion is
        true. Added a FIXME about the lack of a hash method. Added another FIXME
        about the fact that this method ignores much of the object state. Removed
        an unneeded extra fetch of the isRange property. Deleted some dead code.
        (-[WKTextPosition isEqual:]): Ditto.

2014-01-12  Anders Carlsson  <andersca@apple.com>

        Remove the last remaining uses of AtomicallyInitializedStatic
        https://bugs.webkit.org/show_bug.cgi?id=126863

        Reviewed by Darin Adler.

        * Shared/mac/SecItemShim.cpp:
        (WebKit::responseMap):

2014-01-12  Dan Bernstein  <mitz@apple.com>

        Added a reference to WebContentService/Info-OSX.plist to the project.

        * WebKit2.xcodeproj/project.pbxproj:

2014-01-12  Dan Bernstein  <mitz@apple.com>

        OS X build fix.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist: Copied from WebProcess/EntryPoint/mac/XPCService/WebContentService/Info.plist.
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info.plist: Removed.

2014-01-12  Andy Estes  <aestes@apple.com>

        Build Fix: Objective-C GC should be unsupported in iOS WebKit2

        * Configurations/Base.xcconfig:

2014-01-12  Andy Estes  <aestes@apple.com>

        [iOS] Upstream WebKit2 xcconfig changes to fix the build

        * Configurations/All-iOS.xcconfig: Added.
        * Configurations/Base.xcconfig:
        * Configurations/BaseLegacyProcess.xcconfig:
        * Configurations/BaseTarget.xcconfig:
        * Configurations/BaseXPCService.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * Configurations/WebContentService.xcconfig:
        * Configurations/iOS.xcconfig: Added.

2014-01-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix make distcheck.

        * GNUmakefile.am: Add WebKit2InspectorGResourceBundle.xml to
        EXTRA_DIST.
        * GNUmakefile.list.am: Removed deleted files and add missing ones.
        * NetworkProcess/unix/NetworkProcessMainUnix.cpp: Move
        ProxyResolverSoup.h to EFL platform ifdef, because GTK port doesn't
        build the proxy resolver.

2014-01-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Fix return value of WebKitDownload::created-destination
        https://bugs.webkit.org/show_bug.cgi?id=126741

        Reviewed by Martin Robinson.

        WebKitDownload::created-destination signal should be void instead
        of gboolean. This doesn't break the API/ABI.

        * UIProcess/API/gtk/WebKitDownload.cpp:
        (webkit_download_class_init):
        (webkitDownloadDestinationCreated):

2014-01-11  Yongjun Zhang  <yongjun_zhang@apple.com>

        Support bool argument for encoding/decoding invocations.
        https://bugs.webkit.org/show_bug.cgi?id=126823

        Reviewed by Sam Weinig.

        For remote invocation method argument, current we support int, double and ObjC
        object, this patch add support for bool type too.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (encodeInvocation):
        (decodeInvocationArguments):

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

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

        Reviewed by Sam Weinig.

        * NetworkProcess/mac/NetworkResourceLoadSchedulerMac.mm:
        (WebKit::NetworkResourceLoadScheduler::platformInitializeMaximumHTTPConnectionCountPerHost):
        We no longer need the trick with 7 connections, as synchronous requests always have
        the right of way.

        * UIProcess/API/C/WKContext.cpp: Removed long obsolete functions.

        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: (InitWebCoreSystemInterface):
        Updated for new WKSI function names.

2014-01-11  Simon Fraser  <simon.fraser@apple.com>

        Unfork GraphicsContext::drawNativeImage for iOS
        https://bugs.webkit.org/show_bug.cgi?id=126824

        Reviewed by Dean Jackson.

        GraphicsContext::drawNativeImage had a different signature for iOS,
        which required #ifdefs at all the call sites. Unfork by passing the "scale"
        parameter everywhere (it's only used on iOS).

        * Shared/API/c/cg/WKImageCG.cpp:
        (WKImageCreateFromCGImage):

2014-01-11  Sam Weinig  <sam@webkit.org>

        Clean up iterator filter / iterator range code
        https://bugs.webkit.org/show_bug.cgi?id=126817

        Reviewed by Anders Carlsson.

        * Shared/APIArray.h:
        Update elementsOfType() to use combination of FilterIterator and TransformIterator
        (now that FilterIterator no longer has a transform predicate) and make use of the 
        makeFoo() helpers.

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

        Simplify Timer and DeferrableOneShotTimer using std::function
        https://bugs.webkit.org/show_bug.cgi?id=126816

        Reviewed by Sam Weinig.

        Add another unexported symbol.

        * Configurations/WebKit2.xcconfig:

2014-01-11  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] Use nullptr instead of 0 in EFL API layer
        https://bugs.webkit.org/show_bug.cgi?id=126806

        Reviewed by Anders Carlsson.

        * UIProcess/API/efl/EwkView.cpp:
        (EwkView::create):
        * UIProcess/API/efl/ewk_auth_request.cpp:
        (ewk_auth_request_suggested_username_get):
        (ewk_auth_request_realm_get):
        (ewk_auth_request_host_get):
        * UIProcess/API/efl/ewk_back_forward_list.cpp:
        (ewk_back_forward_list_current_item_get):
        (ewk_back_forward_list_previous_item_get):
        (ewk_back_forward_list_next_item_get):
        (ewk_back_forward_list_item_at_index_get):
        (ewk_back_forward_list_n_back_items_copy):
        (ewk_back_forward_list_n_forward_items_copy):
        * UIProcess/API/efl/ewk_back_forward_list_item.cpp:
        (ewk_back_forward_list_item_url_get):
        (ewk_back_forward_list_item_title_get):
        (ewk_back_forward_list_item_original_url_get):
        * UIProcess/API/efl/ewk_context.cpp:
        (ewk_context_cookie_manager_get):
        (ewk_context_database_manager_get):
        (ewk_context_favicon_database_get):
        (ewk_context_storage_manager_get):
        (ewk_context_new_with_injected_bundle_path):
        * UIProcess/API/efl/ewk_context_menu.cpp:
        (ewk_context_menu_items_get):
        * UIProcess/API/efl/ewk_context_menu_item.cpp:
        (ewk_context_menu_item_new_with_submenu):
        (ewk_context_menu_item_title_get):
        (ewk_context_menu_item_parent_menu_get):
        (ewk_context_menu_item_submenu_get):
        * UIProcess/API/efl/ewk_download_job.cpp:
        (ewk_download_job_request_get):
        (ewk_download_job_response_get):
        (ewk_download_job_destination_get):
        (ewk_download_job_suggested_filename_get):
        * UIProcess/API/efl/ewk_error.cpp:
        (ewk_error_url_get):
        (ewk_error_description_get):
        * UIProcess/API/efl/ewk_file_chooser_request.cpp:
        (ewk_file_chooser_request_accepted_mimetypes_get):
        * UIProcess/API/efl/ewk_form_submission_request.cpp:
        (ewk_form_submission_request_field_names_get):
        (ewk_form_submission_request_field_value_get):
        * UIProcess/API/efl/ewk_navigation_data.cpp:
        (ewk_navigation_data_title_get):
        (ewk_navigation_data_original_request_get):
        (ewk_navigation_data_url_get):
        * UIProcess/API/efl/ewk_navigation_policy_decision.cpp:
        (ewk_navigation_policy_frame_name_get):
        (ewk_navigation_policy_request_get):
        * UIProcess/API/efl/ewk_object.cpp:
        (ewk_object_ref):
        * UIProcess/API/efl/ewk_popup_menu.cpp:
        (ewk_popup_menu_items_get):
        * UIProcess/API/efl/ewk_popup_menu_item.cpp:
        (ewk_popup_menu_item_text_get):
        (ewk_popup_menu_item_tooltip_get):
        (ewk_popup_menu_item_accessibility_text_get):
        * UIProcess/API/efl/ewk_security_origin.cpp:
        (ewk_security_origin_host_get):
        (ewk_security_origin_protocol_get):
        * UIProcess/API/efl/ewk_settings.cpp:
        (ewk_settings_default_text_encoding_name_get):
        * UIProcess/API/efl/ewk_url_request.cpp:
        (ewk_url_request_url_get):
        (ewk_request_cookies_first_party_get):
        (ewk_url_request_http_method_get):
        * UIProcess/API/efl/ewk_url_response.cpp:
        (ewk_url_response_url_get):
        (ewk_url_response_mime_type_get):
        * UIProcess/API/efl/ewk_url_scheme_request.cpp:
        (ewk_url_scheme_request_scheme_get):
        (ewk_url_scheme_request_url_get):
        (ewk_url_scheme_request_path_get):
        * UIProcess/API/efl/ewk_view.cpp:
        (toEwkViewChecked):
        (EWKViewGetWKView):
        (ewk_view_smart_add):
        (ewk_view_add_with_context):
        (ewk_view_context_get):
        (ewk_view_page_group_get):
        (ewk_view_url_get):
        (ewk_view_favicon_get):
        (ewk_view_settings_get):
        (ewk_view_title_get):
        (ewk_view_theme_get):
        (ewk_view_back_forward_list_get):
        (ewk_view_custom_encoding_get):
        (ewk_view_user_agent_get):

2014-01-10  Anders Carlsson  <andersca@apple.com>

        Tweak ProgressTrackerClient functions
        https://bugs.webkit.org/show_bug.cgi?id=126808

        Reviewed by Sam Weinig.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::progressStarted):
        (WebKit::WebFrameLoaderClient::progressEstimateChanged):
        (WebKit::WebFrameLoaderClient::progressFinished):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2014-01-10  Sam Weinig  <sam@webkit.org>

        Convert HandleMessage.h to use variadic templates
        https://bugs.webkit.org/show_bug.cgi?id=126469

        Reviewed by Anders Carlsson.

        * Platform/IPC/HandleMessage.h:
        (IPC::callMemberFunctionImpl):
        (IPC::callMemberFunction):
        Replace massive copy and pasted code with variadic magic.

2014-01-10  Anders Carlsson  <andersca@apple.com>

        Move progress tracking functions from FrameLoaderClient to a new ProgressTrackerClient
        https://bugs.webkit.org/show_bug.cgi?id=126801

        Reviewed by Sam Weinig.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):

2014-01-10  Anders Carlsson  <andersca@apple.com>

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

        Reviewed by Tim Horton.

        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2014-01-10  Benjamin Poulain  <bpoulain@apple.com>

        Remove the BlackBerry port from trunk
        https://bugs.webkit.org/show_bug.cgi?id=126715

        Reviewed by Anders Carlsson.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::setCursor):

2014-01-10  Benjamin Poulain  <bpoulain@apple.com>

        Remove the BlackBerry port from trunk
        https://bugs.webkit.org/show_bug.cgi?id=126715

        Reviewed by Anders Carlsson.

        * Scripts/generate-forwarding-headers.pl:

2014-01-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        Implement NetworkResourceLoader::receivedCancellation
        https://bugs.webkit.org/show_bug.cgi?id=126129

        Reviewed Alexey Proskuryakov.

        Implement ResourceHandleClient::receivedCancellation() in the
        network process to cancel the load when cancellation is received
        from the authentication manager like the web process does.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::receivedCancellation): Cancel the load.
        * NetworkProcess/NetworkResourceLoader.h:

2014-01-09  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] Add APIs for setting and getting the default text encoding name
        https://bugs.webkit.org/show_bug.cgi?id=126736

        Reviewed by Gyuyoung Kim.

        Add APIs to set and get the default text encoding name.

        * UIProcess/API/efl/ewk_settings.cpp:
        (ewk_settings_default_text_encoding_name_get):
        (ewk_settings_default_text_encoding_name_set):
        * UIProcess/API/efl/ewk_settings.h:
        * UIProcess/API/efl/tests/test_ewk2_settings.cpp:
        (TEST_F):

2014-01-09  Simon Fraser  <simon.fraser@apple.com>

        Enable async scrolling for iOS
        https://bugs.webkit.org/show_bug.cgi?id=126730

        Reviewed by Tim Horton.
        
        Turn on ENABLE_ASYNC_SCROLLING for iOS.
        
        On iOS, create ScrollingTreeScrollingNodeIOS nodes.

        * UIProcess/Scrolling/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::createNode):
        * UIProcess/Scrolling/RemoteScrollingTree.h:

2014-01-06  Gavin Barraclough  <barraclough@apple.com>

        Change Page, FocusController to use ViewState
        https://bugs.webkit.org/show_bug.cgi?id=126533

        Reviewed by Tim Horton.

        These classes currently maintain a set of separate fields to represent the view state;
        combine these into a single field, and allow WebPage to send the combined update rather
        than individual changes.

        Maintain existing interface for WebKit1 clients.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
            - Combined separate calls to Page::setViewState.
        (WebKit::WebPage::updateIsInWindow):
            - Simplied from setIsInWindow.
        (WebKit::WebPage::setViewState):
            - Combined separate calls to Page::setViewState.
        * WebProcess/WebPage/WebPage.h:
            - Declare updateIsInWindow.

2014-01-09  Tim Horton  <timothy_horton@apple.com>

        Upstream iOS changes after r161530
        https://bugs.webkit.org/show_bug.cgi?id=126728

        Reviewed by Dean Jackson.

        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView setViewportSize:]):
        (-[WKContentView didFinishScrollTo:]):
        (-[WKContentView didScrollTo:]):
        Adopt the new approach.

2014-01-09  Brian Burg  <bburg@apple.com>

        REGRESSION (r160152): Selection drag snapshot doesn't appear or has the wrong content on Retina
        https://bugs.webkit.org/show_bug.cgi?id=125375

        Reviewed by Darin Adler.

        Remove scaling from WebDragClient because it is now selectively
        performed by WebCore according to the drag image source.

        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::startDrag): Don't scale the provided drag image.

2014-01-09  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures: Support plugins that take over the page scale gesture
        https://bugs.webkit.org/show_bug.cgi?id=126399
        <rdar://problem/15738928>

        Reviewed by Sam Weinig.

        Teach ViewGestureController how to handle WebFrame::handlesPageScaleGesture=true,
        which is used so that PDFPlugin can deal with magnification itself.

        * UIProcess/mac/ViewGestureController.cpp:
        (WebKit::ViewGestureController::ViewGestureController):
        (WebKit::ViewGestureController::didCollectGeometryForMagnificationGesture):
        (WebKit::ViewGestureController::handleMagnificationGesture):
        (WebKit::ViewGestureController::endMagnificationGesture):
        (WebKit::ViewGestureController::didCollectGeometryForSmartMagnificationGesture):
        If the WebFrame is going to handle the page scale gesture itself (which currently
        simply means that it is a main-frame PDFPlugin), send the magnification information
        straight through to it. Also, don't provide smart-zoom in this case, since there
        is currently no way to collect geometry information from the plugin.

        * UIProcess/mac/ViewGestureController.h:
        * UIProcess/mac/ViewGestureController.messages.in:
        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
        (WebKit::ViewGestureGeometryCollector::collectGeometryForMagnificationGesture):
        (WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):
        Retrieve WebFrame::handlesPageScaleGesture and return it to the UI process.

2014-01-09  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Promote WKBackForwardList{,Item}.h to public
        https://bugs.webkit.org/show_bug.cgi?id=126707

        Reviewed by Sam Weinig.

        * UIProcess/API/Cocoa/WKBackForwardList.h: Stopped including the C API header.
        * UIProcess/API/Cocoa/WKBackForwardListItem.h: Ditto.
        * WebKit2.xcodeproj/project.pbxproj: Made the headers public.

2014-01-09  Zan Dobersek  <zdobersek@igalia.com>

        Revert back to using the -n option when producing symbolic links to the GTK-specific
        API directories under Source/WebKit2/. Removing the option in r161497 resulted in
        recursive links being created under those directories since the links were dereferenced.

        To actually ensure that the link is created anew, remove it so it is reconstructed.

        Rubber-stamped by Carlos Garcia Campos.

        * GNUmakefile.am:

2014-01-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        Crash when starting a download before the network process has been launched
        https://bugs.webkit.org/show_bug.cgi?id=126258

        Reviewed by Anders Carlsson.

        We need to ensure there's a network process running before
        starting a new download like we do when using the web process.

        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::download): Use ChildProcessProxy::send()
        instead of using the connection to make sure messages are queued
        if the process is still launching.
        (WebKit::WebContext::createDownloadProxy): Call
        ensureNetworkProcess() before creating the download proxy.

2014-01-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] Partial file left on disk after a download fails or is cancelled in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=126686

        Reviewed by Martin Robinson.

        We are currently writing the downloads directly into the
        destination, and when a download fails or is cancelled after the
        destination has been decided, the partial file is left on the
        disk. Deleting the final file is not safe because there might be a
        race condition, so we can use an intermediate file like other
        browsers do, a file in the same directory than the target
        destination but with .wkdownload suffix, that is removed when the
        download fails or is cancelled. If the download finishes
        successfully the intermediate file is renamed to the final
        destination.

        * Shared/Downloads/soup/DownloadSoup.cpp:
        (WebKit::DownloadClient::deleteIntermediateFileInNeeded): Delete
        the intermdiate file if it's been created already.
        (WebKit::DownloadClient::downloadFailed): Call deleteIntermediateFileInNeeded.
        (WebKit::DownloadClient::didReceiveResponse): Do not create a
        SoupMessage for the given ResourceResponse that is not used, cache
        the ResourceResponse instead. Create the intermediate file and use
        it instead of the final destination.
        (WebKit::DownloadClient::didReceiveData): Use the cached
        ResourceResponse directly.
        (WebKit::DownloadClient::didFinishLoading): Rename the
        intermediate file to the final destination and write the metadata
        in the final target destination.
        (WebKit::DownloadClient::cancel): Handle the download cancellation
        here, removing the intermediate file is needed and cancelling the
        ResourceHandle and the download.
        (WebKit::DownloadClient::handleResponseLater):
        (WebKit::Download::cancel): Let the client handle the cancellation.

2014-01-08  Jinwoo Song  <jinwoo7.song@samsung.com>

        WebKit2 EFL build fix after r161530
        https://bugs.webkit.org/show_bug.cgi?id=126678

        Reviewed by Tim Horton.

        Add PLATFORM(MAC) guards around setExposedRect() and exposedRect()
        in DrawingArea and WebFrameLoaderClient.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        * WebProcess/WebPage/DrawingArea.h:

2014-01-08  Martin Hock  <mhock@apple.com>

        Stub for Session API
        https://bugs.webkit.org/show_bug.cgi?id=126626

        Reviewed by Sam Weinig.

        * Shared/API/c/WKBase.h:
        * Shared/API/c/WKSharedAPICast.h:
        * Shared/APIObject.h:
        * UIProcess/API/C/WKSessionRef.cpp: Added.
        (WKSessionGetTypeID):
        (WKSessionGetEphemeral):
        * UIProcess/API/C/WKSessionRef.h: Added.
        * UIProcess/API/Cocoa/WKSession.h: Added.
        * UIProcess/API/Cocoa/WKSession.mm: Added.
        (-[WKSession dealloc]):
        (-[WKSession ephemeral]):
        (-[WKSession API::]):
        * UIProcess/API/Cocoa/WKSessionInternal.h: Added.
        (WebKit::wrapper):
        * UIProcess/APISession.cpp: Added.
        (API::Session::Session):
        (API::Session::create):
        (API::Session::isEphemeral):
        (API::Session::~Session):
        * UIProcess/APISession.h: Added.
        * WebKit2.xcodeproj/project.pbxproj:

2014-01-08  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK] Add xdg.origin.url extended attribute to downloads
        https://bugs.webkit.org/show_bug.cgi?id=126638

        Reviewed by Carlos Garcia Campos.

        This is proposed by fdo in
        http://www.freedesktop.org/wiki/CommonExtendedAttributes/

        * Shared/Downloads/soup/DownloadSoup.cpp:
        (WebKit::DownloadClient::didReceiveResponse):

2014-01-08  Simon Fraser  <simon.fraser@apple.com>

        Make WK2 build when ENABLE(ASYNC_SCROLLING) is not defined
        https://bugs.webkit.org/show_bug.cgi?id=126675

        Reviewed by Tim Horton.
        
        We need a stub RemoteScrollingCoordinatorTransaction outside
        the #ifdef so that RemoteLayerTreeDrawingAreaProxy messages
        work.

        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::RemoteScrollingCoordinatorTransaction::encode):
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):
        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.h:
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):

2014-01-08  Tim Horton  <timothy_horton@apple.com>

        TileController can fail to receive exposedRect from the drawing area if set at the wrong time
        https://bugs.webkit.org/show_bug.cgi?id=126536

        Reviewed by Simon Fraser.

        * Configurations/WebKit2.xcconfig:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _updateViewExposedRect]):
        * UIProcess/DrawingAreaProxy.cpp:
        (WebKit::DrawingAreaProxy::DrawingAreaProxy):
        (WebKit::DrawingAreaProxy::setExposedRect):
        (WebKit::DrawingAreaProxy::exposedRectChangedTimerFired):
        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::exposedRect):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::close):
        * UIProcess/WebPageProxy.h:
        Move exposedRect stuff from WebPageProxy to DrawingAreaProxy.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        Push the exposedRect down into WebCore.

        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::updateScrolledExposedRect):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::updateScrolledExposedRect):
        (WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):
        (WebKit::TiledCoreAnimationDrawingArea::createPageOverlayLayer):
        (WebKit::TiledCoreAnimationDrawingArea::didCommitChangesForLayer):
        Get rid of "clipsToExposedRect", we just use infinite-ness of the rect
        to indicate that now.
        Don't scroll an infinite rect; it won't work.

2014-01-08  Simon Fraser  <simon.fraser@apple.com>

        Add ENABLE(ASYNC_SCROLLING) guards around WK2 scrolling files
        https://bugs.webkit.org/show_bug.cgi?id=126672

        Reviewed by Tim Horton.
        
        Protected WK2 scrolling files with ENABLE(ASYNC_SCROLLING) guards.

        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.h:
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/Scrolling/RemoteScrollingTree.cpp:
        * UIProcess/Scrolling/RemoteScrollingTree.h:
        * WebProcess/Scrolling/RemoteScrollingCoordinator.h:
        * WebProcess/Scrolling/RemoteScrollingCoordinator.messages.in:
        * WebProcess/Scrolling/RemoteScrollingCoordinator.mm:

2014-01-08  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK2] Add API to execute js script
        https://bugs.webkit.org/show_bug.cgi?id=101904

        Reviewed by Gyuyoung Kim.

        Add ewk_view_script_execute() which provides a way to execute user
        script.

        * UIProcess/API/efl/ewk_context.cpp:
        Added JS Global Contexta which is required to deserialize to the script
        value from the callback.
        (EwkContext::EwkContext):
        (EwkContext::~EwkContext):
        (EwkContext::jsGlobalContext):
        * UIProcess/API/efl/ewk_context_private.h:
        * UIProcess/API/efl/ewk_view.cpp:
        (Ewk_View_Script_Execute_Callback_Context::Ewk_View_Script_Execute_Callback_Context):
        (runJavaScriptCallback):
        (ewk_view_script_execute):
        * UIProcess/API/efl/ewk_view.h:
        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
        Added unit test for ewk_view_script_execute.
        (scriptExecuteCallback):
        (TEST_F):

2014-01-08  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Move efl API test binaries to TestWebKitAPI/EWebKit|EWebKit2
        https://bugs.webkit.org/show_bug.cgi?id=126615

        Reviewed by Martin Robinson.

        Now EFL API test binaries created in *bin* directory with other executables.
        It would be good to move them to their folder. This patch moves them to
        *TestWebKitAPI/EWebKit|EWebKit2* directories.

        * PlatformEfl.cmake:

2014-01-08  Anders Carlsson  <andersca@apple.com>

        Add WTF::StringView and use it for grammar checking
        https://bugs.webkit.org/show_bug.cgi?id=126644

        Reviewed by Antti Koivisto.

        Use a StringView and remove a FIXME.

        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::checkTextOfParagraph):
        * WebProcess/WebCoreSupport/WebEditorClient.h:

2014-01-08  Zan Dobersek  <zdobersek@igalia.com>

        [Automake] Scripts for generated build targets do not necessarily produce their output
        https://bugs.webkit.org/show_bug.cgi?id=126378

        Reviewed by Carlos Garcia Campos.

        * GNUmakefile.am: Don't pass the -n option to the ln command that links the build's include
        directories to actual source directories. This doesn't replace the original symbolic link,
        which can lead to the actual link being older than its dependencies and subsequent constant
        relinking at every build.

2014-01-07  Eric Carlson  <eric.carlson@apple.com>

        Teach MediaSessionManager to manage interruptions
        https://bugs.webkit.org/show_bug.cgi?id=126530

        Reviewed by Sam Weinig.

        * CMakeLists.txt: Add ${WEBCORE_DIR}/platform/animation to WebCore include directories.

2014-01-07  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][WK2] Fix failing ewk_view_page_contents_get() API test
        https://bugs.webkit.org/show_bug.cgi?id=126609

        Reviewed by Gyuyoung Kim.

        Compare the amount of bytes in the expected result file with
        the size of callback data from the API since the 'Date' field
        and the boundaries will be different on each case.
        Refered the test case of GTK port.

        * UIProcess/API/efl/tests/resources/resultMHTML.mht: Added.
        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
        (EWK2ViewTest::PageContentsAsMHTMLCallback):

2014-01-07  Seokju Kwon  <seokju@webkit.org>

        Web Inspector: Remove leftover 'device metrics' code
        https://bugs.webkit.org/show_bug.cgi?id=126607

        Reviewed by Joseph Pecoraro.

        * mac/WebKit2.order: Update after removing InspectorClient::overrideDeviceMetrics().

2014-01-07  Simon Fraser  <simon.fraser@apple.com>

        Fix the build. The WebKit2 project copied all of WebKit2/Scripts/webkit2 into WebKit2.framework/PrivateHeaders,
        but that's bad because there are test result files in there now. Fix by having the project copy specific
        .py files into rivateHeaders/webkit2

        * WebKit2.xcodeproj/project.pbxproj:

2014-01-07  Simon Fraser  <simon.fraser@apple.com>

        Make it possible for MessageReceivers to pass messages to their superclass, and use it for RemoteLayerTreeDrawingAreaProxy
        https://bugs.webkit.org/show_bug.cgi?id=126558

        Reviewed by Anders Carlsson.
        
        In a message.in file it's now possible to say:
        
        messages -> Subclass : Superclass { ... } and the generated code will
        call Superclass::didReceiveMessage().
        
        Use this to have RemoteLayerTreeDrawingAreaProxy pass messages up to
        DrawingAreaProxy.

        * Scripts/webkit2/messages.py:
        (generate_message_handler):
        * Scripts/webkit2/model.py:
        (MessageReceiver.__init__):
        * Scripts/webkit2/parser.py:
        (parse):
        * UIProcess/DrawingAreaProxy.h:
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.messages.in:

2014-01-07  Simon Fraser  <simon.fraser@apple.com>

        Add message-generation test for non-legacy message receiver
        https://bugs.webkit.org/show_bug.cgi?id=126603

        Reviewed by Anders Carlsson.
        
        Add expected output files for a non-legacy message receiver, and add
        testing for same.

        * Scripts/webkit2/LegacyMessageReceiver-expected.cpp: Copied from Source/WebKit2/Scripts/webkit2/MessageReceiver-expected.cpp.
        * Scripts/webkit2/LegacyMessages-expected.h: Added.
        * Scripts/webkit2/MessageReceiver-expected.cpp:
        (WebKit::WebPage::didReceiveMessage):
        (WebKit::WebPage::didReceiveSyncMessage):
        * Scripts/webkit2/messages_unittest.py:
        (MessagesTest.setUp):
        (ParsingTest.test_receiver):
        (HeaderTest.test_header):
        (ReceiverImplementationTest.test_receiver_implementation):
        * Scripts/webkit2/test-legacy-messages.in: Copied from Source/WebKit2/Scripts/webkit2/test-messages.in.
        * Scripts/webkit2/test-messages.in:

2014-01-07  Simon Fraser  <simon.fraser@apple.com>

        Move expected results out of messages_unittest.py into separate files
        https://bugs.webkit.org/show_bug.cgi?id=126602

        Reviewed by Anders Carlsson.
        
        Uninline the test input and output from messages_unittest.py to make
        it easier to add more tests.

        * Scripts/webkit2/MessageReceiver-expected.cpp: Added.
        (WebKit::WebPage::didReceiveWebPageMessage):
        (WebKit::WebPage::didReceiveSyncWebPageMessage):
        * Scripts/webkit2/Messages-expected.h: Added.
        * Scripts/webkit2/messages_unittest.py:
        (ParsingTest.test_receiver):
        * Scripts/webkit2/test-messages.in: Added.

2014-01-07  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r161447.
        http://trac.webkit.org/changeset/161447
        https://bugs.webkit.org/show_bug.cgi?id=126592

        needs some more work (Requested by thorton on #webkit).

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _updateViewExposedRect]):
        * UIProcess/DrawingAreaProxy.cpp:
        (WebKit::DrawingAreaProxy::DrawingAreaProxy):
        * UIProcess/DrawingAreaProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::viewExposedRectChanged):
        (WebKit::WebPageProxy::exposedRectChangedTimerFired):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::viewExposedRect):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::setExposedRect):
        (WebKit::DrawingArea::setClipsToExposedRect):
        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::viewExposedRectChanged):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::setClipsToExposedRect):
        (WebKit::RemoteLayerTreeDrawingArea::updateScrolledExposedRect):
        (WebKit::RemoteLayerTreeDrawingArea::updateMainFrameClipsToExposedRect):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::setClipsToExposedRect):
        (WebKit::TiledCoreAnimationDrawingArea::updateScrolledExposedRect):
        (WebKit::TiledCoreAnimationDrawingArea::updateMainFrameClipsToExposedRect):
        (WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):
        (WebKit::TiledCoreAnimationDrawingArea::createPageOverlayLayer):
        (WebKit::TiledCoreAnimationDrawingArea::didCommitChangesForLayer):

2014-01-07  Tim Horton  <timothy_horton@apple.com>

        TileController can fail to receive exposedRect from the drawing area if set at the wrong time
        https://bugs.webkit.org/show_bug.cgi?id=126536

        Reviewed by Anders Carlsson.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _updateViewExposedRect]):
        * UIProcess/DrawingAreaProxy.cpp:
        (WebKit::DrawingAreaProxy::DrawingAreaProxy):
        (WebKit::DrawingAreaProxy::setExposedRect):
        (WebKit::DrawingAreaProxy::exposedRectChangedTimerFired):
        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::exposedRect):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::close):
        * UIProcess/WebPageProxy.h:
        Move exposedRect stuff from WebPageProxy to DrawingAreaProxy.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        Push the exposedRect down into WebCore.

        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::updateScrolledExposedRect):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::updateScrolledExposedRect):
        (WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):
        (WebKit::TiledCoreAnimationDrawingArea::createPageOverlayLayer):
        (WebKit::TiledCoreAnimationDrawingArea::didCommitChangesForLayer):
        Get rid of "clipsToExposedRect", we just use infinite-ness of the rect
        to indicate that now.
        Don't scroll an infinite rect; it won't work.

2014-01-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        Crash when trying to register a custom scheme before network process has been launched
        https://bugs.webkit.org/show_bug.cgi?id=126385

        Reviewed by Anders Carlsson.

        WebContext::registerSchemeForCustomProtocol() uses
        sendToNetworkingProcess() to send the message to the appropriate
        networking process. In the case of using web process,
        sendToNetworkingProcess() first checks if there's already a web
        process, doing nothing otherwise, but when using the network
        process it assumes there's already a network process. In both
        cases it's safe to do nothing, because the schemes will be passed
        as creation parameters to the process when launched.

        * UIProcess/WebContext.h:
        (WebKit::WebContext::sendToNetworkingProcess):

2014-01-07  Jinwoo Song  <jinwoo7.song@samsung.com>

        WebKit2 EFL build fix after r161387
        https://bugs.webkit.org/show_bug.cgi?id=126566

        Reviewed by Andreas Kling.

        Add missing ASYNC_SCROLLING macro.

        * UIProcess/WebPageProxy.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:

2014-01-06  Simon Fraser  <simon.fraser@apple.com>

        Hook up the RemoteScrollingCoordinator
        https://bugs.webkit.org/show_bug.cgi?id=126547

        Reviewed by Tim Horton.
        
        Hook up the RemoteScrollingCoordinator in WebKit2.
        
        When the RemoteLayerTreeDrawingArea is in use, WebPageProxy creates
        a RemoteScrollingCoordinator, and hands it mouseWheel events. It then
        scrolls via a RemoteScrollingTree constructed from state tree commits from the
        WebProcess.
        
        Scrolling tree commits happen via a transaction received by RemoteLayerTreeDrawingAreaProxy,
        atomically with layer tree transactions.

        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::RemoteScrollingCoordinatorTransaction::encode): Fix encoding for some
        cases seen in WebKitTestRunner where a page has no ScrollingCoordinator.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeWebPage): Create the RemoteScrollingCoordinatorProxy
        when using a remote layer tree drawing area.
        (WebKit::WebPageProxy::handleWheelEvent): Pass to the scrolling coordinator.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::scrollingCoordinatorProxy):
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h: Include the RemoteScrollingCoordinatorTransaction.
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.messages.in:
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::getLayer): It's valid to get a 0 layerID (e.g. when
        a layer disappears) so handle this case.
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::createScrollingCoordinator): Override to create the
        RemoteScrollingCoordinator in the WebProcess.
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::scrollingCoordinator): Not inline to avoid polluting the
        header with #includes.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h: Say that we want a ScrollingCoordinator.
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers): Add the scrollingTransaction to the
        message.

2014-01-06  Jaehun Lim  <ljaehun.lim@samsung.com>

        Use hasEnabledVerticalScrollbar instead of hasEnabledHorizontalScrollbar.
        https://bugs.webkit.org/show_bug.cgi?id=126546

        Reviewed by Simon Fraser.

        hasEnabledHorizontalScrollbar is used twice.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<WebCore::ScrollableAreaParameters>::encode):

2014-01-06  Simon Fraser  <simon.fraser@apple.com>

        Another build fix.
        
        Need to look in the WebProcess/Scrolling directory for .messages.in files.

        * DerivedSources.make:

2014-01-06  Simon Fraser  <simon.fraser@apple.com>

        Fix the build.
        
        Need to add RemoteScrollingCoordinator to MESSAGE_RECEIVERS so that
        RemoteScrollingCoordinatorMessages.h gets generated.

        * DerivedSources.make:

2014-01-06  Simon Fraser  <simon.fraser@apple.com>

        Rename DrawingArea::supportsThreadedScrolling() to supportsAsyncScrolling()
        https://bugs.webkit.org/show_bug.cgi?id=126529

        Reviewed by Tim Horton.
        
        Change function name from using "threaded" to "async" terminology.

        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::supportsAsyncScrolling):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:

2014-01-06  Simon Fraser  <simon.fraser@apple.com>

        Add new files for UI-side scrolling
        https://bugs.webkit.org/show_bug.cgi?id=126532

        Reviewed by Anders Carlson.
        
        Add RemoteScrollingCoordinator, RemoteScrollingCoordinatorProxy,
        RemoteScrollingCoordinatorTransaction, RemoteScrollingTree. 
        
        These allow the scrolling tree to be used in the UI process.
        RemoteScrollingCoordinator builds a ScrollingStateTree, which is
        encoded by RemoteScrollingCoordinatorTransaction. Decoding the
        transaction recreates that ScrollingStateTree in the UI process,
        and RemoteScrollingCoordinatorProxy "commits" that to update
        the RemoteScrollingTree.
        
        New classes are not hooked up to anything yet.

        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp: Added.
        (ArgumentCoder<ScrollingStateNode>::encode):
        (ArgumentCoder<ScrollingStateNode>::decode):
        (ArgumentCoder<ScrollingStateScrollingNode>::encode):
        (ArgumentCoder<ScrollingStateScrollingNode>::decode):
        (ArgumentCoder<ScrollingStateFixedNode>::encode):
        (ArgumentCoder<ScrollingStateFixedNode>::decode):
        (ArgumentCoder<ScrollingStateStickyNode>::encode):
        (ArgumentCoder<ScrollingStateStickyNode>::decode):
        (WebKit::encodeNodeAndDescendants):
        (WebKit::RemoteScrollingCoordinatorTransaction::encode):
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):
        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.h: Added.
        (WebKit::RemoteScrollingCoordinatorTransaction::setStateTreeToEncode):
        (WebKit::RemoteScrollingCoordinatorTransaction::scrollingStateTree):
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp: Added.
        (WebKit::RemoteScrollingCoordinatorProxy::RemoteScrollingCoordinatorProxy):
        (WebKit::RemoteScrollingCoordinatorProxy::~RemoteScrollingCoordinatorProxy):
        (WebKit::RemoteScrollingCoordinatorProxy::layerTreeHost):
        (WebKit::RemoteScrollingCoordinatorProxy::updateScrollingTree):
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        (WebKit::RemoteScrollingCoordinatorProxy::handleWheelEvent):
        (WebKit::RemoteScrollingCoordinatorProxy::scrollPositionChanged):
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h: Added.
        * UIProcess/Scrolling/RemoteScrollingTree.cpp: Added.
        (WebKit::RemoteScrollingTree::create):
        (WebKit::RemoteScrollingTree::RemoteScrollingTree):
        (WebKit::RemoteScrollingTree::~RemoteScrollingTree):
        (WebKit::RemoteScrollingTree::tryToHandleWheelEvent):
        (WebKit::RemoteScrollingTree::handleWheelEventPhase):
        (WebKit::RemoteScrollingTree::updateMainFrameScrollPosition):
        (WebKit::RemoteScrollingTree::createNode):
        * UIProcess/Scrolling/RemoteScrollingTree.h: Added.
        (WebKit::RemoteScrollingTree::scrollingCoordinatorProxy):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/Scrolling/RemoteScrollingCoordinator.h: Added.
        (WebKit::RemoteScrollingCoordinator::create):
        * WebProcess/Scrolling/RemoteScrollingCoordinator.messages.in: Added.
        * WebProcess/Scrolling/RemoteScrollingCoordinator.mm: Added.
        (WebKit::RemoteScrollingCoordinator::RemoteScrollingCoordinator):
        (WebKit::RemoteScrollingCoordinator::~RemoteScrollingCoordinator):
        (WebKit::RemoteScrollingCoordinator::scheduleTreeStateCommit):
        (WebKit::RemoteScrollingCoordinator::createScrollingTreeNode):
        (WebKit::RemoteScrollingCoordinator::isRubberBandInProgress):
        (WebKit::RemoteScrollingCoordinator::setScrollPinningBehavior):
        (WebKit::RemoteScrollingCoordinator::buildTransaction):
        (WebKit::RemoteScrollingCoordinator::scrollPositionChangedForNode):

2014-01-06  Martin Robinson  <mrobinson@igalia.com>

        Small build fix for the GTK+ CMake port

        * PlatformGTK.cmake: Include a missing GeoClue include directory.

2014-01-06  Simon Fraser  <simon.fraser@apple.com>

        Rename DrawingArea::supportsThreadedScrolling() to supportsAsyncScrolling()
        https://bugs.webkit.org/show_bug.cgi?id=126529

        Reviewed by Tim Horton.
        
        Change function name from using "threaded" to "async" terminology.

        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::supportsAsyncScrolling):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:

2014-01-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Move all GTK/GObject unit tests to Tools/TestWebKitAPI
        https://bugs.webkit.org/show_bug.cgi?id=126342

        Reviewed by Gustavo Noronha Silva.

        * UIProcess/API/gtk/tests/CMakeLists.txt: Removed.
        * UIProcess/API/gtk/tests/GNUmakefile.am: Removed.

2014-01-06  Enrica Casucci  <enrica@apple.com>

        Add support to retrieve the autocorrection context.
        https://bugs.webkit.org/show_bug.cgi?id=126479

        Reviewed by Sam Weinig.
        
        We are adding the support to retrieve the input context for autocorrection
        and input methods on iOS. The implementation is provided both via synchronous
        and asynchronous calls to the WebProcess.

        * Platform/IPC/HandleMessage.h: Added template with zero input parameters and six reply parameters.
        * UIProcess/API/ios/WKInteractionView.mm:
        (autocorrectionData):
        (-[WKInteractionView requestAutocorrectionRectsForString:withCompletionHandler:]):
        (autocorrectionResult):
        (-[WKInteractionView applyAutocorrection:toString:withCompletionHandler:]):
        (autocorrectionContext):
        (-[WKInteractionView requestAutocorrectionContextWithCompletionHandler:]):
        (-[WKInteractionView hasMarkedText]):
        (-[WKInteractionView _startAssistingNode]):
        (+[WKAutocorrectionContext autocorrectionContextWithData:markedText:selectedText:afterText:selectedRangeInMarkedText:]):
        (-[WKAutocorrectionContext dealloc]):
        * UIProcess/AutoCorrectionCallback.h:
        (WebKit::AutocorrectionContextCallback::create):
        (WebKit::AutocorrectionContextCallback::~AutocorrectionContextCallback):
        (WebKit::AutocorrectionContextCallback::performCallbackWithReturnValue):
        (WebKit::AutocorrectionContextCallback::invalidate):
        (WebKit::AutocorrectionContextCallback::AutocorrectionContextCallback):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetState):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::autocorrectionContextCallback):
        (WebKit::WebPageProxy::requestAutocorrectionContext):
        (WebKit::WebPageProxy::getAutocorrectionContext):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::computeAutocorrectionContext):
        (WebKit::WebPage::requestAutocorrectionContext):
        (WebKit::WebPage::getAutocorrectionContext):

2014-01-06  Gavin Barraclough  <barraclough@apple.com>

        Move ViewState to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=126488

        Reviewed by Anders Carlson.

        This change also partial reverts handling of LayerHostingMode, making this
        a separate message again. With hindsight the new way of doing this wasn't
        in all ways simpler, and it won't make sense to move this to WebCore.

        * Shared/ViewState.h: Removed.
            - Moved to WebCore.
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
            - Added layerHostingMode.
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::PageClientImpl):
        (WebKit::PageClientImpl::viewLayerHostingMode):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::viewLayerHostingMode):
            - Revert isLayerWindowServerHosted -> viewLayerHostingMode.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
            - Added back m_layerHostingMode.
        (WebKit::WebPageProxy::updateViewState):
            - Removed IsLayerWindowServerHosted from ViewState.
        (WebKit::WebPageProxy::viewStateDidChange):
            - Added SetLayerHostingMode message.
        (WebKit::WebPageProxy::initializeCreationParameters):
            - Pass layerHostingMode.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::isInWindow):
        (WebKit::WebPageProxy::isViewVisible):
            - ViewState moved to WebCore.
        * WebKit2.xcodeproj/project.pbxproj:
            - Removed ViewState.
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::setLayerHostingMode):
        (WebKit::PluginView::platformViewStateDidChange):
            - Separated setLayerHostingMode from platformViewStateDidChange.
        * WebProcess/Plugins/PluginView.h:
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::viewStateDidChange):
        (WebKit::DrawingArea::setLayerHostingMode):
            - Added virtual function, overridden in TiledCoreAnimationDrawingArea.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::setLayerHostingMode):
            - Separated setLayerHostingMode from platformViewStateDidChange.
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::isVisible):
        (WebKit::WebPage::layerHostingMode):
            - ViewState moved to WebCore.
        * WebProcess/WebPage/WebPage.messages.in:
            - Added SetLayerHostingMode message.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::viewStateDidChange):
            - viewStateDidChange no longer calls setLayerHostingMode (this is called by WebPage).

2014-01-06  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Parallel builds still fail when building WebKit2 GObject API unit tests
        https://bugs.webkit.org/show_bug.cgi?id=126465

        Reviewed by Gustavo Noronha Silva.

        * UIProcess/API/gtk/tests/CMakeLists.txt: Explicitly link the libWebKit2APITestCore static object against
        WebKit2, which seems to be necessary on my new system. Also create an explicit dependency between the
        injected bundle tests and WebKit2, because they need to use the generated headers.

2014-01-06  László Langó  <lango@inf.u-szeged.hu>

        Use unsigned consistently, and check for invalid casts when calling into SharedBuffer from other code.
        https://bugs.webkit.org/show_bug.cgi?id=124579

        Reviewed by Anders Carlsson.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didReceiveData):
        (WebKit::NetworkResourceLoader::willStopBufferingData):
        * NetworkProcess/NetworkResourceLoader.h:
        * Shared/Downloads/soup/DownloadSoup.cpp:
        (WebKit::DownloadClient::didReceiveData):

2014-01-04  Simon Fraser  <simon.fraser@apple.com>

        Add encoding of ViewportConstraint and ScrollingParameter types
        https://bugs.webkit.org/show_bug.cgi?id=126497

        Reviewed by Andreas Kling.
        
        Add encoding/decoding of ScrollableAreaParameters, FixedPositionViewportConstraints
        and StickyPositionViewportConstraints.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<WebCore::ScrollableAreaParameters>::encode):
        (IPC::ArgumentCoder<WebCore::ScrollableAreaParameters>::decode):
        (IPC::ArgumentCoder<WebCore::FixedPositionViewportConstraints>::encode):
        (IPC::ArgumentCoder<WebCore::FixedPositionViewportConstraints>::decode):
        (IPC::ArgumentCoder<WebCore::StickyPositionViewportConstraints>::encode):
        (IPC::ArgumentCoder<WebCore::StickyPositionViewportConstraints>::decode):
        * Shared/WebCoreArgumentCoders.h:

2014-01-05  Simon Fraser  <simon.fraser@apple.com>

        Move responsibility for remote layer tree committing to RemoteLayerTreeDrawingArea
        https://bugs.webkit.org/show_bug.cgi?id=126501

        Reviewed by Sam Weinig.
        
        Soon we shall need to do atomic commits of both the remote layer tree, and
        the remote scrolling tree. Pave the way by moving responsibility for remote
        layer tree committing to RemoteLayerTreeDrawingArea.
        
        So move the flushing logic from RemoteLayerTreeHost to RemoteLayerTreeDrawingArea.
        After this change, RemoteLayerTreeHost doesn't do much and could possibly be
        removed in future.
        
        Also add type-safe casting to GraphicsLayer and DrawingArea.

        * DerivedSources.make: Out with RemoteLayerTreeHost, in with RemoteLayerTreeDrawingAreaProxy
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::remoteLayerTreeHost):
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.messages.in: Renamed from Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.messages.in.
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy): Add message receiver.
        (WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy): Remove message receiver.
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): Hand the transaction off to the layer
        tree host.
        * UIProcess/mac/RemoteLayerTreeHost.h:
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::RemoteLayerTreeHost): No longer a message receiver.
        (WebKit::RemoteLayerTreeHost::~RemoteLayerTreeHost):
        (WebKit::RemoteLayerTreeHost::updateLayerTree):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::type):
        * WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::RemoteLayerTreeContext):
        (WebKit::RemoteLayerTreeContext::flushOutOfTreeLayers):
        (WebKit::RemoteLayerTreeContext::buildTransaction):
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::setRootCompositingLayer):
        (WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):
        (WebKit::RemoteLayerTreeDrawingArea::forceRepaint):
        (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush):
        (WebKit::RemoteLayerTreeDrawingArea::layerFlushTimerFired):
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):

2014-01-05  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Ensure that the autotools build and the CMake install the same files
        https://bugs.webkit.org/show_bug.cgi?id=116379

        Reviewed by Gustavo Noronha Silva.

        * CMakeLists.txt: Install the plugin process to the new LIBEXEC directory, which
        for non-GTK+ platforms is the same as EXEC.
        * PlatformGTK.cmake: Install API headers, gir files, and the pkg-config file. Move
        a couple installed and generated headers to the installed headers list. Rename the
        headers list to be consistent with the WebKit1 build. No longer use a variable for
        the name of the plugin process, as it's unnecessary.

2014-01-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Stop installing WebKit2 C API headers
        https://bugs.webkit.org/show_bug.cgi?id=126489

        Reviewed by Martin Robinson.

        We are not actually maintaining the API/ABI compatibility of the
        WebKit2 C API, it's only used internally by the public GTK+ API
        and nobody is using it.

        * GNUmakefile.am:
        * GNUmakefile.list.am:

2014-01-05  Gavin Barraclough  <barraclough@apple.com>

        Move process suppression of WebProcess to Page (from UIProcess)
        https://bugs.webkit.org/show_bug.cgi?id=126480

        Reviewed by Sam Weinig.

        Let each page take a UserActivity rather than having to coalesce this state, and take different activity
        tokens for normal visibility and suppression disabled, so we can see why the process is not suppressed.

        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::platformInitialize):
            - Don't start with process supression disabled; this is unnecessary,
              message from the UIProcess should wake.
        * UIProcess/mac/WebProcessProxyMac.mm:
        (WebKit::WebProcessProxy::updateProcessSuppressionState):
            - Don't send explicit messages to supress the WebProcess, it handles this for itself.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
            - call setIsVisuallyIdle.
        (WebKit::WebPage::setViewState):
            - call setIsVisuallyIdle.
        (WebKit::WebPage::updatePreferences):
            - Use m_suppressionDisabled to disable supression if the WebPreference is set.
        (WebKit::WebPage::setIsVisuallyIdle):
            - setThrottled -> setIsVisuallyIdle.
        * WebProcess/WebPage/WebPage.h:
            - setThrottled -> setIsVisuallyIdle, added m_suppressionDisabled.
        * WebProcess/WebProcess.cpp:
        * WebProcess/WebProcess.h:
        (WebKit::WebProcess::shouldForceScreenFontSubstitution):
            - Removed setProcessSuppressionEnabled - WebPage now detects the supression change.

2014-01-04  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Improve the way we locate gobject-introspection
        https://bugs.webkit.org/show_bug.cgi?id=126452

        Reviewed by Philippe Normand.

        * PlatformGTK.cmake: Use the new introspection variables.

2014-01-04  Zan Dobersek  <zdobersek@igalia.com>

        Explicitly use the std:: nested name specifier when using std::pair, std::make_pair
        https://bugs.webkit.org/show_bug.cgi?id=126439

        Reviewed by Andreas Kling.

        Instead of relying on std::pair and std::make_pair symbols being present in the current scope
        through the pair and make_pair symbols, the std:: specifier should be used explicitly.

        * Shared/mac/ArgumentCodersMac.mm:
        (IPC::encode):
        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
        (WebKit::WebNotificationManagerProxy::show):
        (WebKit::WebNotificationManagerProxy::cancel):
        (WebKit::WebNotificationManagerProxy::didDestroyNotification):
        * UIProcess/Notifications/WebNotificationManagerProxy.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::createNewWebProcess):
        * UIProcess/WebContext.h:

2014-01-03  Piotr Grad  <p.grad@samsung.com>

        Build brake after 161045 on EFL port with WebKit2 and gcc 4.6.3
        https://bugs.webkit.org/show_bug.cgi?id=126383

        Reviewed by Sam Weinig.

        Class identifier was missing.

        * DatabaseProcess/DatabaseProcess.h:
        * NetworkProcess/NetworkProcess.h:
        * PluginProcess/PluginProcess.h:
        * Shared/mac/CookieStorageShim.h:
        * UIProcess/Plugins/PluginProcessManager.h:
        * UIProcess/WebPageProxy.cpp:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebProcess.h:

2014-01-03  Seokju Kwon  <seokju@webkit.org>

        Unreviewed build fix on non-Mac port

        * Shared/API/c/WKDeprecatedFunctions.cpp: Add ENABLE(MAC) guard for "WKContextPrivateMac.h".

2014-01-03  Gavin Barraclough  <barraclough@apple.com>

        Simplify process suppression state calculation
        https://bugs.webkit.org/show_bug.cgi?id=126473

        Reviewed by Geoffrey Garen & Sam Weinig.

        Don't check the application occlusion state (this is covered by the pages already),
        and let the page check visually idle. Remove layers of functions.

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didFinishLaunching):
            - Let the network process nap if all processes in its context are napping.*
              (* Except not really. We currently leak a boost onto the process anyway.)
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::didFinishLaunching):
            - Let the plugin process nap if all processes in all contexts are napping.
        * UIProcess/WebContext.h:
            - Remove canEnableProcessSuppressionForNetworkProcess & canEnableProcessSuppressionForWebProcess
            - canEnableProcessSuppressionForGlobalChildProcesses -> processSuppressionIsEnabledForAllContexts
            - combine updateProcessSuppressionStateOfChildProcesses & updateProcessSuppressionStateOfGlobalChildProcesses
                -> updateProcessSuppressionState
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::isProcessSuppressible):
            - WebProcess is supressible if IsVisuallyIdle.
        (WebKit::WebPageProxy::viewStateDidChange):
            - WebProcessProxy should updateProcessSuppressionState when IsVisuallyIdle changes.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        (WebKit::WebProcessProxy::addExistingWebPage):
        (WebKit::WebProcessProxy::pageSuppressibilityChanged):
        (WebKit::WebProcessProxy::pagePreferencesChanged):
            - pageIsProcessSuppressible -> isProcessSuppressible
        * UIProcess/WebProcessProxy.h:
        * UIProcess/mac/WebContextMac.mm:
        (WebKit::WebContext::updateProcessSuppressionState):
            - Update supression state of network & plugin processes.
        (WebKit::WebContext::processSuppressionIsEnabledForAllContexts):
            - Changed iterator style, made a static member of WebContext.
        * UIProcess/mac/WebProcessProxyMac.mm:
        (WebKit::WebProcessProxy::updateProcessSuppressionState):
            - Ask the WebContext to update supression state.
        * UIProcess/mac/WindowServerConnection.h:
        * UIProcess/mac/WindowServerConnection.mm:
        (WebKit::WindowServerConnection::windowServerConnectionStateChanged):
        (WebKit::WindowServerConnection::WindowServerConnection):
            - Remove application occlusion state.

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

        [iOS] [WK2] TileController creates all tiles on first paint, making it slow and consuming lots of memory
        https://bugs.webkit.org/show_bug.cgi?id=126457

        Reviewed by Simon Fraser.

        Instead of making all of the tiles all of the time, we should use the
        view-exposed-rect mechanism to inform TileController about what portion
        of the WKContentView is currently exposed by the WKScrollView.

        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView setViewportSize:]):
        (-[WKContentView didFinishScrollTo:]):
        (-[WKContentView didScrollTo:]):
        Inform the WebPageProxy that our exposed rect changed.

        * UIProcess/API/ios/WKView.mm:
        (-[WKView scrollViewDidScroll:]):
        Inform the WKContentView that we've scrolled at all.
        Rename the existing WKContentView didScrollTo: to didFinishScrollTo:,
        because it is expected to only fire when a scroll lands. Add didScrollTo:,
        which fires continually as scrolling progresses.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::viewExposedRectChanged):
        (WebKit::WebPageProxy::exposedRectChangedTimerFired):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::viewExposedRect):
        * UIProcess/mac/WebPageProxyMac.mm:
        Move view-exposed-rect stuff to WebPageProxy so it can be built on both
        Mac and iOS, and un-!PLATFORM(IOS) some of the related members.

        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::setExposedRect):
        (WebKit::RemoteLayerTreeDrawingArea::setClipsToExposedRect):
        (WebKit::RemoteLayerTreeDrawingArea::updateScrolledExposedRect):
        (WebKit::RemoteLayerTreeDrawingArea::updateMainFrameClipsToExposedRect):
        (WebKit::RemoteLayerTreeDrawingArea::mainFrameTiledBacking):
        Steal TiledCoreAnimationDrawingArea's exposed-rect code.
        Note that on iOS, we don't need to manually offset the exposed rect by
        the scroll position, because the scroll position is already baked into
        the exposed rect, and WebCore's notion of the scroll position will be
        inaccurate until the scroll lands.

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

        Give all PlatformCALayers a PlatformLayerID, not just remote ones
        https://bugs.webkit.org/show_bug.cgi?id=126466

        Reviewed by Tim Horton.

        The ScrollingStateTree has references to both GraphicsLayers and PlatformLayers
        which is confusing, and is necessary because the underlying PlatformLayer
        inside a GraphicsLayer can change. In order to hide some of this complexity,
        expose GraphicsLayer::primaryLayerID() which is a PlatformLayerID that clients
        can hold onto to test for underlying layer swapping.
        
        GraphicsLayerCARemote and PlatformCALayerRemote can now just use the
        primaryLayerID() function exposed via the base class.

        * WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp:
        * WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::PlatformCALayerRemote):
        (PlatformCALayerRemote::recursiveBuildTransaction):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:

2014-01-03  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Expose session state API
        https://bugs.webkit.org/show_bug.cgi?id=126463

        Reviewed by Sam Weinig.

        * UIProcess/API/Cocoa/WKBrowsingContextController.h: Declared new property and method.
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController sessionState]): Added. Calls WebPageProxy::sessionStateData.
        (-[WKBrowsingContextController restoreFromSessionState:]): Added. Calls
        WebPageProxy::restoreFromSessionState.

2014-01-03  Gavin Barraclough  <barraclough@apple.com>

        Remove SPI, user default for disabling process suppression
        https://bugs.webkit.org/show_bug.cgi?id=126458

        Reviewed by Sam Weinig.

        * Shared/API/c/WKDeprecatedFunctions.cpp:
        (WKContextGetProcessSuppressionEnabled):
        (WKContextSetProcessSuppressionEnabled):
            - depracated SPI.
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
            - depracated SPI.
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::WebContext):
            - removed m_processSuppressionEnabled.
        * UIProcess/WebContext.h:
            - removed setProcessSuppressionEnabled, processSuppressionEnabled implementation,
              processSuppressionEnabledChanged, m_processSuppressionEnabled.
        * UIProcess/mac/WebContextMac.mm:
        (WebKit::WebContext::platformInitialize):
            - removed m_processSuppressionEnabled.
        (WebKit::WebContext::processSuppressionEnabled):
            - check whether all pages in all processes are suppressible.
        (WebKit::WebContext::canEnableProcessSuppressionForNetworkProcess):
            - removed call to omitProcessSuppression, m_processSuppressionEnabled -> processSuppressionEnabled().
        (WebKit::WebContext::canEnableProcessSuppressionForWebProcess):
            - removed call to omitProcessSuppression, processSuppressionEnabled (we don't care if a page in a difference process is not suppresible).
        (WebKit::WebContext::canEnableProcessSuppressionForGlobalChildProcesses):
            - removed call to omitProcessSuppression, s_processSuppressionEnabledForAllContexts -> processSuppressionIsEnabledForAllContexts().

2014-01-03  Thiago de Barros Lacerda  <thiago.lacerda@openbossa.org>

        [WK2][CoordinatedGraphics] Removing repeated protected keyword in WebView
        https://bugs.webkit.org/show_bug.cgi?id=126462

        Reviewed by Simon Fraser.

        * UIProcess/CoordinatedGraphics/WebView.h:

2014-01-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        Define WebProcess::usesNetworkProcess unconditionally
        https://bugs.webkit.org/show_bug.cgi?id=126208

        Reviewed by Martin Robinson.

        Returning false when network process is not enabled like
        WebContext does. This way we reduce the amount of ifdefs used when
        checking whether network process is in use.

        * UIProcess/gtk/WebContextGtk.cpp:
        (WebKit::WebContext::platformInitializeWebProcess): Remove #ifdef
        and only setup network features when not using network process.
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::isAvailable): Remove #ifdef.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::downloadManager):
        (WebKit::WebProcess::shouldTerminate):
        (WebKit::WebProcess::usesNetworkProcess):
        * WebProcess/WebProcess.h:
        * WebProcess/mac/WebProcessMac.mm:
        (WebKit::WebProcess::platformSetCacheModel): Remove #ifdef.
        (WebKit::WebProcess::platformInitializeWebProcess): Ditto.
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::platformSetCacheModel): Ditto.
        (WebKit::WebProcess::platformClearResourceCaches): Ditto.
        (WebKit::WebProcess::platformInitializeWebProcess): Ditto.
        (WebKit::WebProcess::platformTerminate): Only remove the language
        observer when not using network process.
        (WebKit::WebProcess::setIgnoreTLSErrors): Assert when this is
        called with network process enabled.
        (WebKit::WebProcess::allowSpecificHTTPSCertificateForHost): Ditto.

2014-01-03  Jinwoo Song  <jinwoo7.song@samsung.com>

        VibrationPattern should allocate an single vector instance for single integer input
        https://bugs.webkit.org/show_bug.cgi?id=126417

        Reviewed by Gyuyoung Kim.

        Fix a vibration unit test regression after r161139. Also remove unnecessary test cases. 

        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
        (EWK2ViewTest::loadVibrationHTMLString):
        (TEST_F):

2014-01-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add API to WebKitResponsePolicyDecision to check if the MIME type can be shown
        https://bugs.webkit.org/show_bug.cgi?id=124652

        Reviewed by Martin Robinson.

        * UIProcess/API/gtk/WebKitPolicyClient.cpp:
        (decidePolicyForResponse): Pass canShowMIMEType to
        webkitResponsePolicyDecisionCreate.
        * UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:
        (webkit_response_policy_decision_is_mime_type_supported): Return
        canShowMIMEType.
        (webkitResponsePolicyDecisionCreate): Set the canShowMIMEType
        member from the given parameter.
        * UIProcess/API/gtk/WebKitResponsePolicyDecision.h:
        * UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h:
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewDecidePolicy): Use the new API instead of
        webkit_web_view_can_show_mime_type() since it's more efficient.
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbol.
        * UIProcess/API/gtk/tests/TestWebKitPolicyClient.cpp:
        (testResponsePolicy): Test the new API.

2014-01-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r160304): [GTK] Disable libtool fast install
        https://bugs.webkit.org/show_bug.cgi?id=126381

        Reviewed by Martin Robinson.

        Remove -no-fast-install ld flag since fast install is now disabled
        globally.

        * GNUmakefile.am:
        * UIProcess/API/gtk/tests/GNUmakefile.am:

2014-01-02  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK2] Remove defaultPageGroupIdentifier not to make the confusion
        https://bugs.webkit.org/show_bug.cgi?id=126249

        Reviewed by Gyuyoung Kim.

        ewk_page_group_create always creates new page group,
        but the identifiers of page groups will be same as "defaultPageGroupIdentifier" when passed 0 or "".
        It is unnecessary and just makes the confusion.

        This patch let WebPageGroup generate unique identifier if 0 or "" is passed as argument.

        * UIProcess/API/efl/ewk_page_group.cpp:
        (EwkPageGroup::create):
        * UIProcess/API/efl/ewk_page_group_private.h:

2014-01-02  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Switch from WTF::Function to std::function in WebProcessTest
        https://bugs.webkit.org/show_bug.cgi?id=126397

        Reviewed by Anders Carlsson.

        Use std::function<> and std::bind() instead of WTF::Function and WTF::bind,
        following the effort of using STL concepts where possible.

        * UIProcess/API/gtk/tests/WebProcessTest.cpp:
        (WebProcessTest::add):
        * UIProcess/API/gtk/tests/WebProcessTest.h:

2014-01-02  Gavin Barraclough  <barraclough@apple.com>

        Refactor NSActivity handling code from ChildProcess to UserActivity
        https://bugs.webkit.org/show_bug.cgi?id=126330

        Reviewed by Sam Weinig.

        UserActivity is a mechanism to express to the operating system (where appropriate)
        that a user initiated activity is taking place, and as such that resources should be
        made available to the process accordingly.

        Currently we hold a single NSActivity, at the WebKit layer. This refactoring allows us
        to hold different activity tokens for different user actions (which simplifies the
        handling, and aides debugging since the token can more accurately express the activity
        taking place), and also will allow us to avoid the layering difficulty of calling back
        up the stack to WebKit to register that an activity is taking place.

        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::ChildProcess):
            - removed fields to directly manage NSActivity, use UserActivity objects instead.
        * Shared/ChildProcess.h:
        (WebKit::ChildProcess::processSuppressionEnabled):
            - changed to initialize new fields.
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::setProcessSuppressionEnabled):
            - implemented in terms of UserActivity m_processSuppressionDisabled.
        (WebKit::ChildProcess::incrementActiveTaskCount):
            - implemented in terms of UserActivity m_activeTasks.
        (WebKit::ChildProcess::decrementActiveTaskCount):
            - implemented in terms of UserActivity m_activeTasks.
        (WebKit::ChildProcess::platformInitialize):
            - implemented in terms of UserActivity m_processSuppressionDisabled.

2014-01-02  Gavin Barraclough  <barraclough@apple.com>

        Propagate WindowServer modifications state to WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=126356

        Reviewed by Sam Weinig.

        This will be necessary to move control of process suppression to the WebProcess.
        IsVisuallyIdle implies the process has stopped painting, or painted rects are
        occluded and not actually being composited. State is provided on a per
        WindowServer connection basis, and as such may produce (safe) false positives.

        * Shared/ViewState.h:
            - added IsVisuallyIdle.
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::isVisuallyIdle):
            - added, on mac checks WindowServerConnection.
        * UIProcess/PageClient.h:
        (WebKit::PageClient::isVisuallyIdle):
            - base implementation purely based on isViewVisible.
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::windowServerConnectionStateChanged):
            - broadcast the state change.
        * UIProcess/WebContext.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateViewState):
        (WebKit::WebPageProxy::viewStateDidChange):
            - propagate IsVisuallyIdle.
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::windowServerConnectionStateChanged):
            - broadcast the state change.
        * UIProcess/WebProcessProxy.h:
            - add windowServerConnectionStateChanged.
        * UIProcess/mac/WebContextMac.mm:
        (WebKit::WebContext::updateProcessSuppressionStateOfGlobalChildProcesses):
            - moved from static in fle to static member of class.
        (WebKit::WebContext::platformInitialize):
            - no need to enableOcclusionNotifications.
        (WebKit::WebContext::canEnableProcessSuppressionForNetworkProcess):
        (WebKit::WebContext::canEnableProcessSuppressionForWebProcess):
        (WebKit::WebContext::canEnableProcessSuppressionForGlobalChildProcesses):
            - changed to call WindowServerConnection.
        (WebKit::WebContext::processSuppressionEnabledChanged):
            - don't remove/reregister occlusion notifications.
        * UIProcess/mac/WindowServerConnection.h: Added.
        (WebKit::WindowServerConnection::applicationIsOccluded):
        (WebKit::WindowServerConnection::applicationWindowModificationsHaveStopped):
            - accessors.
        * UIProcess/mac/WindowServerConnection.mm: Added.
        (WebKit::WindowServerConnection::applicationBecameOccluded):
        (WebKit::WindowServerConnection::applicationWindowModificationsStopped):
        (WebKit::WindowServerConnection::applicationBecameVisible):
        (WebKit::WindowServerConnection::applicationWindowModificationsStarted):
            - handle notifications from the WindowServer.
        (WebKit::WindowServerConnection::windowServerConnectionStateChanged):
            - broadcast the state change.
        (WebKit::WindowServerConnection::shared):
            - accessor for singleton object.
        (WebKit::WindowServerConnection::WindowServerConnection):
            - constructor inizializes fields & register notification handlers.
        * WebKit2.xcodeproj/project.pbxproj:
            - added new files.
        * config.h:
            - added HAVE_WINDOW_SERVER_OCCLUSION_NOTIFICATIONS.

2014-01-02  Gavin Barraclough  <barraclough@apple.com>

        Remove WindowIsVisible
        https://bugs.webkit.org/show_bug.cgi?id=126270

        Reviewed by Tim Horton.

        We currently track visibility in two ways - ViewState::IsVisible and ViewState::WindowIsVisible.
        The latter detects that the content is hidden in fewer cases than the former, and as such, the
        former is always preferable.

        This affects the hidden state provided to FocusController::contentAreaDidShowOrHide and to
        Plugin::windowVisibilityChanged.

        * Shared/ViewState.h:
            - remove WindowIsVisible.
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
            - remove isWindowVisible.
        * UIProcess/API/mac/WKView.mm:
        (-[WKView viewDidMoveToWindow]):
        (-[WKView _windowDidMiniaturize:]):
        (-[WKView _windowDidDeminiaturize:]):
        (-[WKView _windowDidOrderOffScreen:]):
        (-[WKView _windowDidOrderOnScreen:]):
            - remove ViewState::WindowIsVisible.
        * UIProcess/PageClient.h:
            - remove isWindowVisible.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateViewState):
            - remove handling of ViewState::WindowIsVisible.
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::setIsVisible):
        (WebKit::PluginView::didInitializePlugin):
        * WebProcess/Plugins/PluginView.h:
            - setWindowIsVisible -> setIsVisible.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::setViewIsVisible):
        (WebKit::WebPage::setViewState):
        (WebKit::WebPage::windowAndWebPageAreFocused):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::isVisible):
            - remove m_windowIsVisible, setWindowIsVisible (implementation moved to setViewIsVisible).

2014-01-02  Gavin Barraclough  <barraclough@apple.com>

        Refactor ViewState handling for drawing area / plugins
        https://bugs.webkit.org/show_bug.cgi?id=126272

        Reviewed by Tim Horton.

        Instead of all ViewState changes being handled by the WebPage, notify the DrawingArea & PluginView to better encapsulate.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::viewStateDidChange):
        (WebKit::PluginView::platformViewStateDidChange):
            - added, handle changes in ViewState relevant to PluginView.
        (WebKit::PluginView::didInitializePlugin):
            - helper function removed.
        * WebProcess/Plugins/PluginView.h:
            - added/removed function declarations.
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::viewStateDidChange):
            - declare viewStateDidChange.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setActive):
            - no need to notify plugin.
        (WebKit::WebPage::setViewIsVisible):
            - no need to notify drawing area.
        (WebKit::WebPage::setViewState):
            - send viewStateDidChange to drawing area / plugin.
        (WebKit::WebPage::setWindowIsVisible):
            - no need to notify plugin.
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::layerHostingMode):
            - removed setLayerHostingMode.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
            - declare viewStateDidChange.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::viewStateDidChange):
            - added, handle changes in ViewState relevant to DrawingArea.

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

        Merge didMoveOnscreen / page visibility to isVisible
        https://bugs.webkit.org/show_bug.cgi?id=126268

        Build fix.

        * UIProcess/WebContext.h: Removed some accidental input.

2014-01-02  Gavin Barraclough  <barraclough@apple.com>

        Merge didMoveOnscreen / page visibility to isVisible
        https://bugs.webkit.org/show_bug.cgi?id=126268

        Reviewed by Tim Horton.

        The onscreen state most closely tracks view visibility (though currently
        also tracks a mix of in-window state). Make more consistent, simplify,
        and move all animation suspension logic to Page, so it can be controlled
        by the PageThrottler.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::setViewIsVisible):
            - updateVisibilityState -> setIsVisible.
        (WebKit::WebPage::setIsInWindow):
            - remove redundant willMoveOffscreen/didMoveOnscreen calls - this is handled
              by setIsVisible.
        (WebKit::WebPage::setMayStartMediaWhenInWindow):
            - isOnscreen -> isInWindow. We start media when the view is in a window, not
              when the view is visible.
        (WebKit::WebPage::setVisibilityStatePrerender):
            - setVisibilityState -> setIsPrerender.

2013-12-23  Oliver Hunt  <oliver@apple.com>

        Refactor PutPropertySlot to be aware of custom properties
        https://bugs.webkit.org/show_bug.cgi?id=126187

        Reviewed by Antti Koivisto.

        Update for new method signatures.

        * WebProcess/Plugins/Netscape/NPJSObject.cpp:
        (WebKit::NPJSObject::setProperty):

2014-01-02  Simon Fraser  <simon.fraser@apple.com>

        Add AsyncScrollingCoordinator, which is a base class for threaded and future remote ScrollingCoordinators
        https://bugs.webkit.org/show_bug.cgi?id=126389

        Reviewed by Tim Horton.
        
        Add AsyncScrollingCoordinator, a ScrollingCoordinator that knows about ScrollingStateTrees
        and ScrollingTrees, but leaves it up to subclasses to decide when and how to commit.
        
        * WebProcess/WebPage/EventDispatcher.cpp:
        (WebKit::EventDispatcher::addScrollingTreeForPage): The ScrollingTree is exposed on
        AsyncScrollingCoordinator now, not ScrollingCoordinator, so we have to cast here.
        * WebProcess/WebPage/WebPage.cpp: m_useThreadedScrolling -> m_useAsyncScrolling terminology change.
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::~WebPage):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): Cast to AsyncScrollingCoordinator in order
        to get to the ScrollingTree.

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

        Create a ThreadedScrollingTree subclass of ScrollingTree, and push all knowledge of the scrolling thread into it
        https://bugs.webkit.org/show_bug.cgi?id=126362

        Reviewed by Sam Weinig.

        Eventually we'll have a ScrollingTree in situations where there is no scrolling
        thread, so make the ScrollingTree base class thread-agnostic (but threadsafe),
        and subclass it in ThreadedScrollingTree for scrolling-thread-specific functionality.
        
        The ScrollingTree base class also no longer needs to know about the
        ScrollingCoordinator.

        ScrollingCoordinatorMac creates a ThreadedScrollingTree.

        * WebProcess/WebPage/EventDispatcher.cpp:
        (WebKit::EventDispatcher::addScrollingTreeForPage):
        (WebKit::EventDispatcher::wheelEvent):
        * WebProcess/WebPage/EventDispatcher.h:

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

        Add a typedef for PlatformLayerID on GraphicsLayer, and migrate RemoteLayerTreeTransaction to use it
        https://bugs.webkit.org/show_bug.cgi?id=126346

        Reviewed by Tim Horton.
        
        Remote scrolling tree code is soon going to use RemoteLayerTreeTransaction::LayerID,
        so it makes more sense to put this layerID type on GraphicsLayer as
        GraphicsLayer::PlatformLayerID.
        
        Also add some type cast macros for PlatformCALayer and subclasses, and use them
        where appropriate.

        * Shared/mac/RemoteLayerTreePropertyApplier.h:
        * Shared/mac/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::rootLayerID):
        (WebKit::RemoteLayerTreeTransaction::changedLayers):
        (WebKit::RemoteLayerTreeTransaction::destroyedLayers):
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::decode):
        (WebKit::RemoteLayerTreeTransaction::setRootLayerID):
        (WebKit::RemoteLayerTreeTransaction::setDestroyedLayerIDs):
        (WebKit::RemoteLayerTreeTextStream::operator<<):
        (WebKit::dumpChangedLayers):
        (WebKit::RemoteLayerTreeTransaction::description):
        * UIProcess/mac/RemoteLayerTreeHost.h:
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::commit):
        (WebKit::RemoteLayerTreeHost::getLayer):
        * WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp:
        (WebKit::GraphicsLayerCARemote::primaryLayerID):
        * WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (generateLayerID):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        (WebKit::PlatformCALayerRemote::layerID):
        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:

2014-01-01  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Fix the WEBKIT_SRC_DIR define when building the WebKit2 GObject API unit tests
        https://bugs.webkit.org/show_bug.cgi?id=126350

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/gtk/tests/CMakeLists.txt: Fix the define.

2014-01-01  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Rename libtestnetscapeplugin to libTestNetscapePlugin
        https://bugs.webkit.org/show_bug.cgi?id=126349

        Reviewed by Carlos Garcia Campos.

        All CMake ports use "libTestNetscapePlugin," so choosing the same
        name in the autotools port will make the transition easier.

        * UIProcess/API/gtk/tests/TestWebKitWebContext.cpp:
        (testWebContextGetPlugins): Use the new plugin library name.

2013-12-31  Brendan Long  <b.long@cablelabs.com>

        [Gtk] WebKitWebInspector has build warnings due to uninitialized didChangeAttachedWidth member
        https://bugs.webkit.org/show_bug.cgi?id=126353

        Reviewed by Martin Robinson.

        * UIProcess/API/gtk/WebKitWebInspector.cpp:
        (webkitWebInspectorCreate): Initialize didChangeAttachedWidth to null.

2013-12-30  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Make the output directory of GObject unit tests binaries consistent with the CMake build
        https://bugs.webkit.org/show_bug.cgi?id=126297

        Reviewed by Philippe Normand.

        * UIProcess/API/gtk/tests/GNUmakefile.am: Build the tests in the new directory.
        * UIProcess/API/gtk/tests/TestInspectorServer.cpp:
        (startTestServer): Update the search path to reflect the new directory.
        * UIProcess/API/gtk/tests/TestWebKitAccessibility.cpp:
        (startTestServer): Update the search path to reflect the new directory.

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

        [SOUP] willSendRequest doesn't work after a redirect
        https://bugs.webkit.org/show_bug.cgi?id=126290

        Reviewed by Martin Robinson.

        Add test cases to test send-request signal in case of
        redirection.

        * UIProcess/API/gtk/tests/TestResources.cpp:
        (testWebResourceSendRequest):
        (serverCallback):

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

        Unreviewed, rolling out r161157, r161158, r161160, r161161,
        r161163, and r161165.
        http://trac.webkit.org/changeset/161157
        http://trac.webkit.org/changeset/161158
        http://trac.webkit.org/changeset/161160
        http://trac.webkit.org/changeset/161161
        http://trac.webkit.org/changeset/161163
        http://trac.webkit.org/changeset/161165
        https://bugs.webkit.org/show_bug.cgi?id=126332

        Broke WebKit2 on Mountain Lion (Requested by ap on #webkit).

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::SyncMessageState::wait):
        (IPC::Connection::sendSyncMessageFromSecondaryThread):
        (IPC::Connection::waitForSyncReply):

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

        Try to fix the test failures seen on the bots.

        Restore the BinarySemaphore behavior that existed in the old binary semaphore.

        * Platform/IPC/Connection.cpp:
        (IPC::BinarySemaphore::wait):

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

        Fix.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::plugInDidStartFromOrigin):

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

        Move more of Connection over to STL threading primitives
        https://bugs.webkit.org/show_bug.cgi?id=126308

        Reviewed by Andreas Kling.

        * Platform/IPC/Connection.cpp:
        (IPC::BinarySemaphore::BinarySemaphore):
        (IPC::BinarySemaphore::~BinarySemaphore):
        (IPC::BinarySemaphore::signal):
        (IPC::BinarySemaphore::wait):
        Add a new BinarySemaphore class that uses STL threading primitives.

        (IPC::Connection::SyncMessageState::wait):
        Change this to take a std::chrono::steady_clock::time_point.

        (IPC::absoluteTimeoutTime):
        Add a new helper function that returns a time point from the a given timeout duration,
        correctly handling the max duration.

        (IPC::Connection::sendSyncMessageFromSecondaryThread):
        Pass a time point to SyncMessageState::wait.

        (IPC::Connection::waitForSyncReply):
        Ditto.

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

        Replace remaning CoreIPC namespace to IPC
        https://bugs.webkit.org/show_bug.cgi?id=126305

        Reviewed by Anders Carlsson.

        This patch replaces CoreIPC to IPC in build scripts and source codes to fix
        build break on CMake based ports and Gtk (and maybe IOS).

        * CMakeLists.txt:
        * GNUmakefile.am:
        * GNUmakefile.list.am:
        * Platform/IPC/unix/AttachmentUnix.cpp:
        * Platform/IPC/unix/ConnectionUnix.cpp:
        * Platform/unix/SharedMemoryUnix.cpp:
        (WebKit::SharedMemory::Handle::encode):
        (WebKit::SharedMemory::Handle::decode):
        (WebKit::SharedMemory::Handle::releaseToAttachment):
        * PlatformEfl.cmake:
        * PlatformGTK.cmake:
        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h:
        * Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:
        (WebKit::WebCoordinatedSurface::Handle::encode):
        (WebKit::WebCoordinatedSurface::Handle::decode):
        * Shared/CoordinatedGraphics/WebCoordinatedSurface.h:
        * Shared/Downloads/soup/DownloadSoup.cpp:
        (WebKit::DownloadClient::downloadFailed):
        (WebKit::Download::cancel):
        * Shared/WebBatteryStatus.cpp:
        (WebKit::WebBatteryStatus::Data::encode):
        (WebKit::WebBatteryStatus::Data::decode):
        * Shared/WebBatteryStatus.h:
        * Shared/WebNetworkInfo.cpp:
        (WebKit::WebNetworkInfo::Data::encode):
        (WebKit::WebNetworkInfo::Data::decode):
        * Shared/WebNetworkInfo.h:
        * Shared/cairo/LayerTreeContextCairo.cpp:
        (WebKit::LayerTreeContext::encode):
        (WebKit::LayerTreeContext::decode):
        * Shared/efl/LayerTreeContextEfl.cpp:
        (WebKit::LayerTreeContext::encode):
        (WebKit::LayerTreeContext::decode):
        * Shared/gtk/ArgumentCodersGtk.cpp:
        * Shared/gtk/ArgumentCodersGtk.h:
        * Shared/gtk/LayerTreeContextGtk.cpp:
        (WebKit::LayerTreeContext::encode):
        (WebKit::LayerTreeContext::decode):
        * Shared/ios/WebPlatformTouchPointIOS.cpp:
        (WebKit::WebPlatformTouchPoint::encode):
        (WebKit::WebPlatformTouchPoint::decode):
        * Shared/ios/WebTouchEventIOS.cpp:
        (WebKit::WebTouchEvent::encode):
        (WebKit::WebTouchEvent::decode):
        * Shared/linux/SeccompFilters/OpenSyscall.cpp:
        (WebKit::OpenSyscall::encode):
        (WebKit::OpenSyscall::decode):
        (WebKit::OpenSyscallResult::encode):
        (WebKit::OpenSyscallResult::decode):
        * Shared/linux/SeccompFilters/OpenSyscall.h:
        * Shared/linux/SeccompFilters/SeccompBroker.cpp:
        (WebKit::SeccompBrokerClient::dispatch):
        (WebKit::SeccompBroker::runLoop):
        * Shared/linux/SeccompFilters/Syscall.cpp:
        (WebKit::Syscall::createFromDecoder):
        (WebKit::SyscallResult::createFromDecoder):
        * Shared/linux/SeccompFilters/Syscall.h:
        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::encode):
        (IPC::ArgumentCoder<CertificateInfo>::decode):
        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::accessibilityWebProcessTokenReceived):
        * UIProcess/API/mac/PDFViewController.h:
        * UIProcess/API/mac/PDFViewController.mm:
        (WebKit::convertPostScriptDataSourceToPDF):
        (WebKit::PDFViewController::setPDFDocumentData):
        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.h:
        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:
        * UIProcess/DrawingAreaProxyImpl.h:
        * UIProcess/WebBatteryManagerProxy.h:
        * UIProcess/WebNetworkInfoManagerProxy.h:
        * UIProcess/WebVibrationProxy.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::registerWebProcessAccessibilityToken):
        (WebKit::WebPageProxy::registerUIProcessAccessibilityTokens):
        (WebKit::WebPageProxy::savePDFToTemporaryFolderAndOpenWithNativeApplication):
        * UIProcess/soup/WebSoupRequestManagerProxy.h:
        * WebProcess/Battery/WebBatteryManager.h:
        * WebProcess/NetworkInfo/WebNetworkInfoManager.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp:
        (WebKit::CoordinatedDrawingArea::didReceiveCoordinatedLayerTreeHostMessage):
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/DrawingAreaImpl.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::registerUIProcessAccessibilityTokens):
        * WebProcess/ios/WebProcessIOS.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::platformInitializeWebProcess):
        * WebProcess/soup/WebSoupRequestManager.cpp:
        (WebKit::WebSoupRequestManager::didHandleURIRequest):
        (WebKit::WebSoupRequestManager::didReceiveURIRequestData):
        * WebProcess/soup/WebSoupRequestManager.h:
        * WebProcess/soup/WebSoupRequestManager.messages.in:

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

        Unreviewed build fix attempt on GTK port after 161152

        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::getEditorCommandsForKeyEvent):

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

        Use std::chrono::milliseconds for all IPC message timeouts
        https://bugs.webkit.org/show_bug.cgi?id=126303

        Reviewed by Andreas Kling.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::sendSyncMessage):
        (IPC::Connection::sendSyncMessageFromSecondaryThread):
        (IPC::Connection::waitForSyncReply):
        * Platform/IPC/Connection.h:
        (IPC::Connection::sendSync):
        * Platform/IPC/MessageSender.h:
        (IPC::MessageSender::sendSync):
        * Shared/ChildProcessProxy.h:
        (WebKit::ChildProcessProxy::sendSync):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::stringSelectionForPasteboard):
        (WebKit::WebPageProxy::dataSelectionForPasteboard):
        (WebKit::WebPageProxy::readSelectionFromPasteboard):
        (WebKit::WebPageProxy::shouldDelayWindowOrderingForEvent):
        (WebKit::WebPageProxy::acceptsFirstMouse):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::postSynchronousMessage):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::runJavaScriptAlert):
        (WebKit::WebChromeClient::runJavaScriptConfirm):
        (WebKit::WebChromeClient::runJavaScriptPrompt):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::createInspectorPage):

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

        Remove empty directories.

        * Platform/CoreIPC: Removed.
        * Platform/CoreIPC/mac: Removed.
        * Platform/CoreIPC/unix: Removed.

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

        Move code over to the IPC namespace.

        Rubber-stamped by Andreas Kling.

        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::initializeConnection):
        (WebKit::DatabaseProcess::didClose):
        (WebKit::DatabaseProcess::didReceiveInvalidMessage):
        (WebKit::DatabaseProcess::createDatabaseToWebProcessConnection):
        * DatabaseProcess/DatabaseProcess.h:
        * DatabaseProcess/DatabaseToWebProcessConnection.cpp:
        (WebKit::DatabaseToWebProcessConnection::create):
        (WebKit::DatabaseToWebProcessConnection::DatabaseToWebProcessConnection):
        (WebKit::DatabaseToWebProcessConnection::didReceiveMessage):
        (WebKit::DatabaseToWebProcessConnection::didClose):
        (WebKit::DatabaseToWebProcessConnection::didReceiveInvalidMessage):
        * DatabaseProcess/DatabaseToWebProcessConnection.h:
        (WebKit::DatabaseToWebProcessConnection::connection):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::messageSenderConnection):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * NetworkProcess/AsynchronousNetworkLoaderClient.cpp:
        (WebKit::AsynchronousNetworkLoaderClient::willSendRequest):
        (WebKit::AsynchronousNetworkLoaderClient::canAuthenticateAgainstProtectionSpace):
        (WebKit::AsynchronousNetworkLoaderClient::didReceiveBuffer):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::create):
        (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
        (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::didReceiveInvalidMessage):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        (WebKit::NetworkConnectionToWebProcess::connection):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::didReceiveMessage):
        (WebKit::NetworkProcess::didReceiveSyncMessage):
        (WebKit::NetworkProcess::didClose):
        (WebKit::NetworkProcess::didReceiveInvalidMessage):
        (WebKit::NetworkProcess::downloadProxyConnection):
        (WebKit::NetworkProcess::initializeConnection):
        (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::messageSenderConnection):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/mac/DiskCacheMonitor.h:
        * NetworkProcess/mac/DiskCacheMonitor.mm:
        (WebKit::DiskCacheMonitor::messageSenderConnection):
        * Platform/IPC/ArgumentCoder.h:
        * Platform/IPC/ArgumentCoders.cpp:
        * Platform/IPC/ArgumentCoders.h:
        * Platform/IPC/ArgumentDecoder.cpp:
        * Platform/IPC/ArgumentDecoder.h:
        * Platform/IPC/ArgumentEncoder.cpp:
        * Platform/IPC/ArgumentEncoder.h:
        * Platform/IPC/Arguments.h:
        * Platform/IPC/Attachment.cpp:
        * Platform/IPC/Attachment.h:
        * Platform/IPC/Connection.cpp:
        (IPC::Connection::Connection):
        * Platform/IPC/Connection.h:
        * Platform/IPC/HandleMessage.h:
        * Platform/IPC/MessageDecoder.cpp:
        * Platform/IPC/MessageDecoder.h:
        * Platform/IPC/MessageEncoder.cpp:
        * Platform/IPC/MessageEncoder.h:
        * Platform/IPC/MessageFlags.h:
        * Platform/IPC/MessageReceiver.h:
        * Platform/IPC/MessageReceiverMap.cpp:
        * Platform/IPC/MessageReceiverMap.h:
        * Platform/IPC/mac/ConnectionMac.cpp:
        * Platform/IPC/mac/ImportanceAssertion.h:
        * Platform/IPC/mac/MachPort.h:
        * Platform/SharedMemory.h:
        * Platform/mac/SharedMemoryMac.cpp:
        (WebKit::SharedMemory::Handle::encode):
        (WebKit::SharedMemory::Handle::decode):
        * PluginProcess/PluginControllerProxy.cpp:
        (WebKit::PluginControllerProxy::streamDidReceiveData):
        (WebKit::PluginControllerProxy::manualStreamDidReceiveData):
        * PluginProcess/PluginControllerProxy.h:
        * PluginProcess/PluginControllerProxy.messages.in:
        * PluginProcess/PluginCreationParameters.cpp:
        (WebKit::PluginCreationParameters::encode):
        (WebKit::PluginCreationParameters::decode):
        * PluginProcess/PluginCreationParameters.h:
        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::didReceiveMessage):
        (WebKit::PluginProcess::didClose):
        (WebKit::PluginProcess::didReceiveInvalidMessage):
        (WebKit::PluginProcess::createWebProcessConnection):
        * PluginProcess/PluginProcess.h:
        * PluginProcess/WebProcessConnection.cpp:
        (WebKit::WebProcessConnection::create):
        (WebKit::WebProcessConnection::WebProcessConnection):
        (WebKit::WebProcessConnection::setGlobalException):
        (WebKit::WebProcessConnection::didReceiveMessage):
        (WebKit::WebProcessConnection::didReceiveSyncMessage):
        (WebKit::WebProcessConnection::didClose):
        (WebKit::WebProcessConnection::didReceiveInvalidMessage):
        * PluginProcess/WebProcessConnection.h:
        (WebKit::WebProcessConnection::connection):
        * PluginProcess/mac/PluginControllerProxyMac.mm:
        (WebKit::PluginControllerProxy::setComplexTextInputState):
        * Scripts/webkit2/messages.py:
        (arguments_type_old):
        (message_to_struct_declaration):
        (forward_declarations_and_headers):
        (generate_messages_header):
        (async_message_statement):
        (sync_message_statement):
        (headers_for_type):
        (generate_message_handler):
        * Scripts/webkit2/messages_unittest.py:
        (IPC):
        (std):
        * Shared/API/Cocoa/RemoteObjectRegistry.h:
        * Shared/APIGeometry.cpp:
        (API::Point::encode):
        (API::Point::decode):
        (API::Size::encode):
        (API::Size::decode):
        (API::Rect::encode):
        (API::Rect::decode):
        * Shared/APIGeometry.h:
        * Shared/APINumber.h:
        (API::Number::encode):
        (API::Number::decode):
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/ChildProcess.cpp:
        (WebKit::didCloseOnConnectionWorkQueue):
        (WebKit::ChildProcess::initialize):
        (WebKit::ChildProcess::initializeConnection):
        (WebKit::ChildProcess::addMessageReceiver):
        (WebKit::ChildProcess::removeMessageReceiver):
        (WebKit::ChildProcess::messageSenderConnection):
        * Shared/ChildProcess.h:
        (WebKit::ChildProcess::parentProcessConnection):
        (WebKit::ChildProcess::messageReceiverMap):
        * Shared/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::fromConnection):
        (WebKit::ChildProcessProxy::sendMessage):
        (WebKit::ChildProcessProxy::addMessageReceiver):
        (WebKit::ChildProcessProxy::removeMessageReceiver):
        (WebKit::ChildProcessProxy::dispatchMessage):
        (WebKit::ChildProcessProxy::dispatchSyncMessage):
        (WebKit::ChildProcessProxy::didFinishLaunching):
        (WebKit::ChildProcessProxy::connectionWillOpen):
        (WebKit::ChildProcessProxy::connectionWillClose):
        * Shared/ChildProcessProxy.h:
        (WebKit::ChildProcessProxy::connection):
        (WebKit::ChildProcessProxy::send):
        * Shared/ChildProcessSupplement.h:
        (WebKit::ChildProcessSupplement::initializeConnection):
        * Shared/ConnectionStack.h:
        (WebKit::ConnectionStack::current):
        (WebKit::ConnectionStack::CurrentConnectionPusher::CurrentConnectionPusher):
        * Shared/CoreIPCSupport/WebContextMessageKinds.h:
        (WebContextLegacyMessages::messageReceiverName):
        (WebContextLegacyMessages::postMessageMessageName):
        (WebContextLegacyMessages::postSynchronousMessageMessageName):
        * Shared/Databases/DatabaseProcessCreationParameters.cpp:
        (WebKit::DatabaseProcessCreationParameters::encode):
        (WebKit::DatabaseProcessCreationParameters::decode):
        * Shared/Databases/DatabaseProcessCreationParameters.h:
        * Shared/DictionaryPopupInfo.cpp:
        (WebKit::DictionaryPopupInfo::encode):
        (WebKit::DictionaryPopupInfo::decode):
        * Shared/DictionaryPopupInfo.h:
        * Shared/Downloads/Download.cpp:
        (WebKit::Download::didFail):
        (WebKit::Download::didCancel):
        (WebKit::Download::messageSenderConnection):
        * Shared/Downloads/Download.h:
        * Shared/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::downloadProxyConnection):
        * Shared/Downloads/DownloadManager.h:
        * Shared/Downloads/mac/DownloadMac.mm:
        (WebKit::Download::cancel):
        (-[WKDownloadAsDelegate download:didFailWithError:]):
        * Shared/EditorState.cpp:
        (WebKit::EditorState::encode):
        (WebKit::EditorState::decode):
        * Shared/EditorState.h:
        * Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessEntryPoint.h:
        * Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessEntryPoint.mm:
        (WebKit::ChildProcessMainDelegate::getConnectionIdentifier):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceInitializerDelegate::getConnectionIdentifier):
        * Shared/FileAPI/BlobRegistrationData.cpp:
        (WebKit::BlobRegistrationData::encode):
        (WebKit::BlobRegistrationData::decode):
        * Shared/FileAPI/BlobRegistrationData.h:
        * Shared/FontInfo.cpp:
        (WebKit::FontInfo::encode):
        (WebKit::FontInfo::decode):
        * Shared/FontInfo.h:
        * Shared/LayerTreeContext.h:
        * Shared/Network/CustomProtocols/CustomProtocolManager.h:
        * Shared/Network/CustomProtocols/CustomProtocolManager.messages.in:
        * Shared/Network/CustomProtocols/mac/CustomProtocolManagerMac.mm:
        (WebKit::CustomProtocolManager::initializeConnection):
        (WebKit::CustomProtocolManager::didLoadData):
        * Shared/Network/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode):
        (WebKit::NetworkProcessCreationParameters::decode):
        * Shared/Network/NetworkProcessCreationParameters.h:
        * Shared/Network/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode):
        (WebKit::NetworkResourceLoadParameters::decode):
        * Shared/Network/NetworkResourceLoadParameters.h:
        * Shared/OriginAndDatabases.cpp:
        (WebKit::OriginAndDatabases::encode):
        (WebKit::OriginAndDatabases::decode):
        * Shared/OriginAndDatabases.h:
        * Shared/PlatformPopupMenuData.cpp:
        (WebKit::PlatformPopupMenuData::encode):
        (WebKit::PlatformPopupMenuData::decode):
        * Shared/PlatformPopupMenuData.h:
        * Shared/Plugins/NPIdentifierData.cpp:
        (WebKit::NPIdentifierData::encode):
        (WebKit::NPIdentifierData::decode):
        * Shared/Plugins/NPIdentifierData.h:
        * Shared/Plugins/NPObjectMessageReceiver.h:
        * Shared/Plugins/NPRemoteObjectMap.cpp:
        (WebKit::NPRemoteObjectMap::create):
        (WebKit::NPRemoteObjectMap::NPRemoteObjectMap):
        (WebKit::NPRemoteObjectMap::didReceiveSyncMessage):
        * Shared/Plugins/NPRemoteObjectMap.h:
        (WebKit::NPRemoteObjectMap::connection):
        * Shared/Plugins/NPVariantData.cpp:
        (WebKit::NPVariantData::encode):
        (WebKit::NPVariantData::decode):
        * Shared/Plugins/NPVariantData.h:
        * Shared/Plugins/PluginProcessCreationParameters.cpp:
        (WebKit::PluginProcessCreationParameters::encode):
        (WebKit::PluginProcessCreationParameters::decode):
        * Shared/Plugins/PluginProcessCreationParameters.h:
        * Shared/PrintInfo.cpp:
        (WebKit::PrintInfo::encode):
        (WebKit::PrintInfo::decode):
        * Shared/PrintInfo.h:
        * Shared/SandboxExtension.h:
        (WebKit::SandboxExtension::Handle::encode):
        (WebKit::SandboxExtension::Handle::decode):
        (WebKit::SandboxExtension::HandleArray::encode):
        (WebKit::SandboxExtension::HandleArray::decode):
        * Shared/SecurityOriginData.cpp:
        (WebKit::SecurityOriginData::encode):
        (WebKit::SecurityOriginData::decode):
        * Shared/SecurityOriginData.h:
        * Shared/SessionState.cpp:
        (WebKit::SessionState::encode):
        (WebKit::SessionState::decode):
        * Shared/SessionState.h:
        * Shared/ShareableBitmap.cpp:
        (WebKit::ShareableBitmap::Handle::encode):
        (WebKit::ShareableBitmap::Handle::decode):
        * Shared/ShareableBitmap.h:
        * Shared/ShareableResource.cpp:
        (WebKit::ShareableResource::Handle::encode):
        (WebKit::ShareableResource::Handle::decode):
        * Shared/ShareableResource.h:
        * Shared/StatisticsData.cpp:
        (WebKit::StatisticsData::encode):
        (WebKit::StatisticsData::decode):
        * Shared/StatisticsData.h:
        * Shared/TextCheckerState.h:
        * Shared/UpdateInfo.cpp:
        (WebKit::UpdateInfo::encode):
        (WebKit::UpdateInfo::decode):
        * Shared/UpdateInfo.h:
        * Shared/UserData.cpp:
        (WebKit::UserData::encode):
        (WebKit::UserData::decode):
        * Shared/UserData.h:
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::encode):
        (WebKit::WebBackForwardListItem::decode):
        * Shared/WebBackForwardListItem.h:
        * Shared/WebConnection.cpp:
        (WebKit::WebConnection::postMessage):
        (WebKit::WebConnection::didReceiveMessage):
        (WebKit::WebConnection::handleMessage):
        * Shared/WebConnection.h:
        * Shared/WebContextMenuItemData.cpp:
        (WebKit::WebContextMenuItemData::encode):
        (WebKit::WebContextMenuItemData::decode):
        * Shared/WebContextMenuItemData.h:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebEvent.cpp:
        (WebKit::WebEvent::encode):
        (WebKit::WebEvent::decode):
        * Shared/WebEvent.h:
        * Shared/WebGeolocationPosition.cpp:
        (WebKit::WebGeolocationPosition::Data::encode):
        (WebKit::WebGeolocationPosition::Data::decode):
        * Shared/WebGeolocationPosition.h:
        * Shared/WebHitTestResult.cpp:
        (WebKit::WebHitTestResult::Data::encode):
        (WebKit::WebHitTestResult::Data::decode):
        * Shared/WebHitTestResult.h:
        * Shared/WebKeyboardEvent.cpp:
        (WebKit::WebKeyboardEvent::encode):
        (WebKit::WebKeyboardEvent::decode):
        * Shared/WebMouseEvent.cpp:
        (WebKit::WebMouseEvent::encode):
        (WebKit::WebMouseEvent::decode):
        * Shared/WebNavigationDataStore.h:
        (WebKit::WebNavigationDataStore::encode):
        (WebKit::WebNavigationDataStore::decode):
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * Shared/WebPageGroupData.cpp:
        (WebKit::WebPageGroupData::encode):
        (WebKit::WebPageGroupData::decode):
        * Shared/WebPageGroupData.h:
        * Shared/WebPlatformTouchPoint.cpp:
        (WebKit::WebPlatformTouchPoint::encode):
        (WebKit::WebPlatformTouchPoint::decode):
        * Shared/WebPopupItem.cpp:
        (WebKit::WebPopupItem::encode):
        (WebKit::WebPopupItem::decode):
        * Shared/WebPopupItem.h:
        * Shared/WebPreferencesStore.cpp:
        (WebKit::WebPreferencesStore::encode):
        (WebKit::WebPreferencesStore::decode):
        * Shared/WebPreferencesStore.h:
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * Shared/WebSerializedScriptValue.h:
        (WebKit::WebSerializedScriptValue::dataReference):
        * Shared/WebTouchEvent.cpp:
        (WebKit::WebTouchEvent::encode):
        (WebKit::WebTouchEvent::decode):
        * Shared/WebWheelEvent.cpp:
        (WebKit::WebWheelEvent::encode):
        (WebKit::WebWheelEvent::decode):
        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):
        * Shared/cf/ArgumentCodersCF.h:
        * Shared/mac/ArgumentCodersMac.h:
        * Shared/mac/ArgumentCodersMac.mm:
        (IPC::encode):
        (IPC::decode):
        * Shared/mac/AttributedString.h:
        * Shared/mac/AttributedString.mm:
        (WebKit::AttributedString::encode):
        (WebKit::AttributedString::decode):
        * Shared/mac/ColorSpaceData.h:
        * Shared/mac/ColorSpaceData.mm:
        (WebKit::ColorSpaceData::encode):
        (WebKit::ColorSpaceData::decode):
        * Shared/mac/LayerTreeContextMac.mm:
        (WebKit::LayerTreeContext::encode):
        (WebKit::LayerTreeContext::decode):
        * Shared/mac/ObjCObjectGraphCoders.h:
        * Shared/mac/ObjCObjectGraphCoders.mm:
        (WebKit::ObjCObjectGraphEncoder::baseEncode):
        (WebKit::ObjCObjectGraphDecoder::baseDecode):
        (WebKit::WebContextObjCObjectGraphEncoderImpl::encode):
        (WebKit::WebContextObjCObjectGraphDecoderImpl::decode):
        (WebKit::InjectedBundleObjCObjectGraphEncoderImpl::encode):
        (WebKit::InjectedBundleObjCObjectGraphDecoderImpl::decode):
        (WebKit::WebContextObjCObjectGraphEncoder::encode):
        (WebKit::WebContextObjCObjectGraphDecoder::decode):
        (WebKit::InjectedBundleObjCObjectGraphEncoder::encode):
        (WebKit::InjectedBundleObjCObjectGraphDecoder::decode):
        * Shared/mac/RemoteLayerBackingStore.h:
        * Shared/mac/RemoteLayerBackingStore.mm:
        (RemoteLayerBackingStore::encode):
        (RemoteLayerBackingStore::decode):
        * Shared/mac/RemoteLayerTreeTransaction.h:
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::decode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        (WebKit::RemoteLayerTreeTransaction::encode):
        (WebKit::RemoteLayerTreeTransaction::decode):
        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::SandboxExtension::Handle::encode):
        (WebKit::SandboxExtension::Handle::decode):
        (WebKit::SandboxExtension::HandleArray::encode):
        (WebKit::SandboxExtension::HandleArray::decode):
        * Shared/mac/SecItemRequestData.cpp:
        (WebKit::SecItemRequestData::encode):
        (WebKit::SecItemRequestData::decode):
        * Shared/mac/SecItemRequestData.h:
        * Shared/mac/SecItemResponseData.cpp:
        (WebKit::SecItemResponseData::encode):
        (WebKit::SecItemResponseData::decode):
        * Shared/mac/SecItemResponseData.h:
        * Shared/mac/SecItemShim.cpp:
        (WebKit::SecItemShim::initializeConnection):
        * Shared/mac/SecItemShim.h:
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
        (IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):
        (IPC::ArgumentCoder<ResourceResponse>::encodePlatformData):
        (IPC::ArgumentCoder<ResourceResponse>::decodePlatformData):
        (IPC::ArgumentCoder<CertificateInfo>::encode):
        (IPC::ArgumentCoder<CertificateInfo>::decode):
        (IPC::ArgumentCoder<ResourceError>::encodePlatformData):
        (IPC::ArgumentCoder<ResourceError>::decodePlatformData):
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::accessibilityWebProcessTokenReceived):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _accessibilityRegisterUIProcessTokens]):
        * UIProcess/API/mac/WKViewInternal.h:
        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        (WebKit::AuthenticationChallengeProxy::AuthenticationChallengeProxy):
        * UIProcess/Authentication/AuthenticationChallengeProxy.h:
        (WebKit::AuthenticationChallengeProxy::create):
        * UIProcess/Databases/DatabaseProcessProxy.cpp:
        (WebKit::DatabaseProcessProxy::connectionWillOpen):
        (WebKit::DatabaseProcessProxy::connectionWillClose):
        (WebKit::DatabaseProcessProxy::getDatabaseProcessConnection):
        (WebKit::DatabaseProcessProxy::didClose):
        (WebKit::DatabaseProcessProxy::didReceiveInvalidMessage):
        (WebKit::DatabaseProcessProxy::didCreateDatabaseToWebProcessConnection):
        (WebKit::DatabaseProcessProxy::didFinishLaunching):
        * UIProcess/Databases/DatabaseProcessProxy.h:
        * UIProcess/Databases/DatabaseProcessProxy.messages.in:
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::createData):
        (WebKit::DownloadProxy::didFail):
        (WebKit::DownloadProxy::didCancel):
        * UIProcess/Downloads/DownloadProxy.h:
        * UIProcess/Downloads/DownloadProxy.messages.in:
        * UIProcess/DrawingAreaProxy.h:
        * UIProcess/Launcher/ProcessLauncher.cpp:
        (WebKit::ProcessLauncher::didFinishLaunchingProcess):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::connectToService):
        (WebKit::tryPreexistingProcess):
        (WebKit::createProcess):
        * UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h:
        * UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:
        (-[WKCustomProtocolLoader connection:didReceiveData:]):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::connectionWillOpen):
        (WebKit::NetworkProcessProxy::connectionWillClose):
        (WebKit::NetworkProcessProxy::getNetworkProcessConnection):
        (WebKit::NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch):
        (WebKit::NetworkProcessProxy::didReceiveMessage):
        (WebKit::NetworkProcessProxy::didReceiveSyncMessage):
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::didReceiveInvalidMessage):
        (WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
        (WebKit::NetworkProcessProxy::didFinishLaunching):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/Notifications/WebNotification.h:
        * UIProcess/PageClient.h:
        * UIProcess/Plugins/PluginProcessManager.h:
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::getPluginProcessConnection):
        (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch):
        (WebKit::PluginProcessProxy::didClose):
        (WebKit::PluginProcessProxy::didReceiveInvalidMessage):
        (WebKit::PluginProcessProxy::didFinishLaunching):
        (WebKit::PluginProcessProxy::didCreateWebProcessConnection):
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Plugins/PluginProcessProxy.messages.in:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::platformInitializePluginProcess):
        * UIProcess/Storage/StorageManager.cpp:
        (WebKit::StorageManager::StorageArea::addListener):
        (WebKit::StorageManager::StorageArea::removeListener):
        (WebKit::StorageManager::StorageArea::setItem):
        (WebKit::StorageManager::StorageArea::removeItem):
        (WebKit::StorageManager::StorageArea::clear):
        (WebKit::StorageManager::StorageArea::dispatchEvents):
        (WebKit::StorageManager::SessionStorageNamespace::allowedConnection):
        (WebKit::StorageManager::SessionStorageNamespace::create):
        (WebKit::StorageManager::SessionStorageNamespace::SessionStorageNamespace):
        (WebKit::StorageManager::SessionStorageNamespace::setAllowedConnection):
        (WebKit::StorageManager::createSessionStorageNamespace):
        (WebKit::StorageManager::setAllowedSessionStorageNamespaceConnection):
        (WebKit::StorageManager::processWillCloseConnection):
        (WebKit::StorageManager::createLocalStorageMap):
        (WebKit::StorageManager::createSessionStorageMap):
        (WebKit::StorageManager::destroyStorageMap):
        (WebKit::StorageManager::getValues):
        (WebKit::StorageManager::setItem):
        (WebKit::StorageManager::removeItem):
        (WebKit::StorageManager::clear):
        (WebKit::StorageManager::createSessionStorageNamespaceInternal):
        (WebKit::StorageManager::setAllowedSessionStorageNamespaceConnectionInternal):
        (WebKit::StorageManager::invalidateConnectionInternal):
        (WebKit::StorageManager::findStorageArea):
        * UIProcess/Storage/StorageManager.h:
        * UIProcess/WebApplicationCacheManagerProxy.h:
        * UIProcess/WebConnectionToWebProcess.cpp:
        (WebKit::WebConnectionToWebProcess::encodeMessageBody):
        (WebKit::WebConnectionToWebProcess::decodeMessageBody):
        (WebKit::WebConnectionToWebProcess::messageSenderConnection):
        * UIProcess/WebConnectionToWebProcess.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::networkingProcessConnection):
        (WebKit::WebContext::didReceiveInvalidMessage):
        (WebKit::WebContext::createNewWebProcess):
        (WebKit::WebContext::postMessageToInjectedBundle):
        (WebKit::WebContext::addMessageReceiver):
        (WebKit::WebContext::removeMessageReceiver):
        (WebKit::WebContext::dispatchMessage):
        (WebKit::WebContext::dispatchSyncMessage):
        (WebKit::WebContext::didReceiveMessage):
        (WebKit::WebContext::didReceiveSyncMessage):
        * UIProcess/WebContext.h:
        * UIProcess/WebContextUserMessageCoders.h:
        (WebKit::WebContextUserMessageEncoder::encode):
        (WebKit::WebContextUserMessageDecoder::decode):
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebDatabaseManagerProxy.h:
        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::unapply):
        (WebKit::WebEditCommandProxy::reapply):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebFullScreenManagerProxy.h:
        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::startUpdating):
        (WebKit::WebGeolocationManagerProxy::stopUpdating):
        (WebKit::WebGeolocationManagerProxy::removeRequester):
        (WebKit::WebGeolocationManagerProxy::setEnableHighAccuracy):
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebIconDatabase.cpp:
        (WebKit::WebIconDatabase::setIconDataForIconURL):
        (WebKit::WebIconDatabase::synchronousIconDataForPageURL):
        * UIProcess/WebIconDatabase.h:
        * UIProcess/WebIconDatabase.messages.in:
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebMediaCacheManagerProxy.h:
        * UIProcess/WebOriginDataManagerProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        (WebKit::WebPageProxy::preferencesDidChange):
        (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::decidePolicyForResponseSync):
        (WebKit::WebPageProxy::unableToImplementPolicy):
        (WebKit::WebPageProxy::willSubmitForm):
        (WebKit::WebPageProxy::mouseDidMoveOverElement):
        (WebKit::WebPageProxy::connectionWillOpen):
        (WebKit::WebPageProxy::connectionWillClose):
        (WebKit::WebPageProxy::sendMessage):
        (WebKit::WebPageProxy::messageSenderConnection):
        (WebKit::WebPageProxy::showContextMenu):
        (WebKit::WebPageProxy::internalShowContextMenu):
        (WebKit::WebPageProxy::dataCallback):
        (WebKit::WebPageProxy::scriptValueCallback):
        (WebKit::WebPageProxy::beginPrinting):
        (WebKit::WebPageProxy::endPrinting):
        (WebKit::WebPageProxy::computePagesForPrinting):
        (WebKit::WebPageProxy::drawRectToImage):
        (WebKit::WebPageProxy::drawPagesToPDF):
        (WebKit::WebPageProxy::drawPagesForPrinting):
        (WebKit::WebPageProxy::savePDFToFileInDownloadsFolder):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::connectionWillOpen):
        (WebKit::WebProcessProxy::connectionWillClose):
        (WebKit::WebProcessProxy::addBackForwardItem):
        (WebKit::WebProcessProxy::didReceiveMessage):
        (WebKit::WebProcessProxy::didReceiveSyncMessage):
        (WebKit::WebProcessProxy::didClose):
        (WebKit::WebProcessProxy::didReceiveInvalidMessage):
        (WebKit::WebProcessProxy::didFinishLaunching):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::fromConnection):
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/WebResourceCacheManagerProxy.h:
        * UIProcess/cf/WebBackForwardListCF.cpp:
        (WebKit::WebBackForwardList::createCFDictionaryRepresentation):
        * UIProcess/mac/RemoteLayerTreeHost.h:
        * UIProcess/mac/SecItemShimProxy.cpp:
        (WebKit::SecItemShimProxy::initializeConnection):
        (WebKit::SecItemShimProxy::secItemRequest):
        * UIProcess/mac/SecItemShimProxy.h:
        * UIProcess/mac/ViewGestureController.h:
        * UIProcess/mac/WebContextMac.mm:
        (WebKit::WebContext::platformInitializeWebProcess):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::registerWebProcessAccessibilityToken):
        (WebKit::WebPageProxy::registerUIProcessAccessibilityTokens):
        (WebKit::WebPageProxy::savePDFToTemporaryFolderAndOpenWithNativeApplication):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/ApplicationCache/WebApplicationCacheManager.h:
        * WebProcess/Cookies/WebCookieManager.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::messageSenderConnection):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
        (WebKit::WebToDatabaseProcessConnection::WebToDatabaseProcessConnection):
        (WebKit::WebToDatabaseProcessConnection::didReceiveMessage):
        (WebKit::WebToDatabaseProcessConnection::didClose):
        (WebKit::WebToDatabaseProcessConnection::didReceiveInvalidMessage):
        * WebProcess/Databases/WebToDatabaseProcessConnection.h:
        (WebKit::WebToDatabaseProcessConnection::create):
        (WebKit::WebToDatabaseProcessConnection::connection):
        * WebProcess/EntryPoint/mac/LegacyProcess/WebContentProcessMain.mm:
        (WebKit::WebContentProcessMainDelegate::getConnectionIdentifier):
        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::didReceiveMessage):
        * WebProcess/FullScreen/WebFullScreenManager.h:
        * WebProcess/Geolocation/WebGeolocationManager.h:
        * WebProcess/IconDatabase/WebIconDatabaseProxy.cpp:
        (WebKit::WebIconDatabaseProxy::synchronousIconForPageURL):
        (WebKit::WebIconDatabaseProxy::setIconDataForIconURL):
        * WebProcess/IconDatabase/WebIconDatabaseProxy.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::postMessage):
        (WebKit::InjectedBundle::postSynchronousMessage):
        * WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h:
        (WebKit::InjectedBundleUserMessageEncoder::encode):
        (WebKit::InjectedBundleUserMessageDecoder::decode):
        * WebProcess/MediaCache/WebMediaCacheManager.h:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::NetworkProcessConnection):
        (WebKit::NetworkProcessConnection::didReceiveMessage):
        (WebKit::NetworkProcessConnection::didReceiveSyncMessage):
        (WebKit::NetworkProcessConnection::didClose):
        (WebKit::NetworkProcessConnection::didReceiveInvalidMessage):
        * WebProcess/Network/NetworkProcessConnection.h:
        (WebKit::NetworkProcessConnection::create):
        (WebKit::NetworkProcessConnection::connection):
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::messageSenderConnection):
        (WebKit::WebResourceLoader::didReceiveData):
        * WebProcess/Network/WebResourceLoader.h:
        * WebProcess/Network/WebResourceLoader.messages.in:
        * WebProcess/Notifications/WebNotificationManager.h:
        * WebProcess/OriginData/WebOriginDataManager.h:
        * WebProcess/Plugins/PDF/PDFPlugin.h:
        * WebProcess/Plugins/Plugin.cpp:
        (WebKit::Plugin::Parameters::encode):
        (WebKit::Plugin::Parameters::decode):
        * WebProcess/Plugins/Plugin.h:
        * WebProcess/Plugins/PluginProcessConnection.cpp:
        (WebKit::PluginProcessConnection::PluginProcessConnection):
        (WebKit::PluginProcessConnection::didReceiveMessage):
        (WebKit::PluginProcessConnection::didReceiveSyncMessage):
        (WebKit::PluginProcessConnection::didClose):
        (WebKit::PluginProcessConnection::didReceiveInvalidMessage):
        * WebProcess/Plugins/PluginProcessConnection.h:
        (WebKit::PluginProcessConnection::create):
        (WebKit::PluginProcessConnection::connection):
        * WebProcess/Plugins/PluginProcessConnectionManager.cpp:
        (WebKit::PluginProcessConnectionManager::initializeConnection):
        (WebKit::PluginProcessConnectionManager::getPluginProcessConnection):
        (WebKit::PluginProcessConnectionManager::pluginProcessCrashed):
        * WebProcess/Plugins/PluginProcessConnectionManager.h:
        * WebProcess/Plugins/PluginProxy.cpp:
        (WebKit::PluginProxy::geometryDidChange):
        (WebKit::PluginProxy::streamDidReceiveData):
        (WebKit::PluginProxy::manualStreamDidReceiveData):
        * WebProcess/Plugins/PluginProxy.h:
        * WebProcess/ResourceCache/WebResourceCacheManager.h:
        * WebProcess/Storage/StorageAreaMap.h:
        * WebProcess/WebConnectionToUIProcess.cpp:
        (WebKit::WebConnectionToUIProcess::encodeMessageBody):
        (WebKit::WebConnectionToUIProcess::decodeMessageBody):
        (WebKit::WebConnectionToUIProcess::messageSenderConnection):
        * WebProcess/WebConnectionToUIProcess.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::runJavaScriptAlert):
        (WebKit::WebChromeClient::runJavaScriptConfirm):
        (WebKit::WebChromeClient::runJavaScriptPrompt):
        * WebProcess/WebCoreSupport/WebDatabaseManager.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        * WebProcess/WebPage/DecoderAdapter.cpp:
        (WebKit::DecoderAdapter::decodeBytes):
        (WebKit::DecoderAdapter::decodeString):
        * WebProcess/WebPage/DecoderAdapter.h:
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/EncoderAdapter.cpp:
        (WebKit::EncoderAdapter::dataReference):
        (WebKit::EncoderAdapter::encodeBytes):
        (WebKit::EncoderAdapter::encodeString):
        * WebProcess/WebPage/EncoderAdapter.h:
        * WebProcess/WebPage/EventDispatcher.cpp:
        (WebKit::EventDispatcher::initializeConnection):
        * WebProcess/WebPage/EventDispatcher.h:
        * WebProcess/WebPage/LayerTreeHost.h:
        * WebProcess/WebPage/ViewGestureGeometryCollector.h:
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::createInspectorPage):
        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::messageSenderConnection):
        (WebKit::WebPage::loadURL):
        (WebKit::WebPage::loadURLRequest):
        (WebKit::WebPage::loadDataImpl):
        (WebKit::WebPage::loadString):
        (WebKit::WebPage::loadData):
        (WebKit::WebPage::loadHTMLString):
        (WebKit::WebPage::loadAlternateHTMLString):
        (WebKit::WebPage::loadPlainTextString):
        (WebKit::WebPage::loadWebArchiveData):
        (WebKit::WebPage::postInjectedBundleMessage):
        (WebKit::WebPage::runJavaScriptInMainFrame):
        (WebKit::WebPage::getContentsAsMHTMLData):
        (WebKit::WebPage::getSelectionAsWebArchiveData):
        (WebKit::WebPage::getMainResourceDataOfFrame):
        (WebKit::WebPage::getResourceDataFromFrame):
        (WebKit::WebPage::getWebArchiveOfFrame):
        (WebKit::WebPage::didReceiveMessage):
        (WebKit::WebPage::didReceiveSyncMessage):
        (WebKit::WebPage::drawPagesToPDF):
        (WebKit::WebPage::savePDFToFileInDownloadsFolder):
        (WebKit::WebPage::savePDFToTemporaryFolderAndOpenWithNativeApplication):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/WebPageGroupProxy.h:
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::platformInitialize):
        (WebKit::WebPage::registerUIProcessAccessibilityTokens):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeConnection):
        (WebKit::WebProcess::downloadProxyConnection):
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::ensureNetworkProcessConnection):
        (WebKit::WebProcess::didReceiveSyncMessage):
        (WebKit::WebProcess::didReceiveMessage):
        (WebKit::WebProcess::didClose):
        (WebKit::WebProcess::didReceiveInvalidMessage):
        (WebKit::WebProcess::postInjectedBundleMessage):
        (WebKit::WebProcess::ensureWebToDatabaseProcessConnection):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/mac/WebProcessMac.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):
        * config.h:

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

        Move remaining IPC related files to Platform/IPC.

        Rubber-stamped by Andreas Kling.

        * Platform/IPC/ArgumentCoder.h: Renamed from Source/WebKit2/Platform/CoreIPC/ArgumentCoder.h.
        * Platform/IPC/ArgumentCoders.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/ArgumentCoders.cpp.
        * Platform/IPC/ArgumentCoders.h: Renamed from Source/WebKit2/Platform/CoreIPC/ArgumentCoders.h.
        * Platform/IPC/ArgumentDecoder.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp.
        * Platform/IPC/ArgumentDecoder.h: Renamed from Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.h.
        * Platform/IPC/ArgumentEncoder.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp.
        * Platform/IPC/ArgumentEncoder.h: Renamed from Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.h.
        * Platform/IPC/Arguments.h: Renamed from Source/WebKit2/Platform/CoreIPC/Arguments.h.
        * Platform/IPC/Attachment.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/Attachment.cpp.
        * Platform/IPC/Attachment.h: Renamed from Source/WebKit2/Platform/CoreIPC/Attachment.h.
        * Platform/IPC/Connection.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/Connection.cpp.
        * Platform/IPC/Connection.h: Renamed from Source/WebKit2/Platform/CoreIPC/Connection.h.
        * Platform/IPC/HandleMessage.h: Renamed from Source/WebKit2/Platform/CoreIPC/HandleMessage.h.
        * Platform/IPC/MessageDecoder.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/MessageDecoder.cpp.
        * Platform/IPC/MessageDecoder.h: Renamed from Source/WebKit2/Platform/CoreIPC/MessageDecoder.h.
        * Platform/IPC/MessageEncoder.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/MessageEncoder.cpp.
        * Platform/IPC/MessageEncoder.h: Renamed from Source/WebKit2/Platform/CoreIPC/MessageEncoder.h.
        * Platform/IPC/MessageFlags.h: Renamed from Source/WebKit2/Platform/CoreIPC/MessageFlags.h.
        * Platform/IPC/MessageReceiver.h: Renamed from Source/WebKit2/Platform/CoreIPC/MessageReceiver.h.
        * Platform/IPC/MessageReceiverMap.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp.
        * Platform/IPC/MessageReceiverMap.h: Renamed from Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.h.
        * Platform/IPC/mac/ConnectionMac.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp.
        * Platform/IPC/mac/ImportanceAssertion.h: Renamed from Source/WebKit2/Platform/CoreIPC/mac/ImportanceAssertion.h.
        * Platform/IPC/mac/MachPort.h: Renamed from Source/WebKit2/Platform/CoreIPC/mac/MachPort.h.
        * Platform/IPC/unix/AttachmentUnix.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/unix/AttachmentUnix.cpp.
        * Platform/IPC/unix/ConnectionUnix.cpp: Renamed from Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp.
        * WebKit2.xcodeproj/project.pbxproj:

2013-12-30  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Parallel build sometimes fails when building libWebKit2APITestCore
        https://bugs.webkit.org/show_bug.cgi?id=126294

        Reviewed by Daniel Bates.

        * UIProcess/API/gtk/tests/CMakeLists.txt: Give libWebKit2APITestCore a dependency on
        WebKit2 so that it's always built before the auto-generated sources.

2013-12-30  Martin Robinson  <mrobinson@igalia.com>

        [CMake] [GTK] Add support for GObject introspection
        https://bugs.webkit.org/show_bug.cgi?id=126162

        Reviewed by Daniel Bates.

        * PlatformGTK.cmake: Add the GIR targets, split the installed headers list
        between WebKitWebExtension and the WebKit2 library. Update the headers list
        with new headers.

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

        [EFL][WK2] Replace ecore_main_loop_iterate with waitUntilTrue in ewk tests
        https://bugs.webkit.org/show_bug.cgi?id=125919

        Reviewed by Gyuyoung Kim.

        Using ecore_main_loop_iterate in while loop may result in tests hang-up when
        condition is not met. Replacing it with waitUntilTrue introduces a timer
        after which internal loop is canceled. This will cause test to fail instead
        of running infinitely.

        * UIProcess/API/efl/tests/test_ewk2_auth_request.cpp:
        (TEST_F):
        * UIProcess/API/efl/tests/test_ewk2_color_picker.cpp:
        (TEST_F):
        * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:
        (TEST_F):
        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
        (EWK2ViewTest::onVibrate):
        (EWK2ViewTest::onCancelVibration):
        (EWK2ViewTest::loadVibrationHTMLString):
        (TEST_F):

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

        [GTK] Split WebKit2APITests/TestWebKitWebView
        https://bugs.webkit.org/show_bug.cgi?id=126284

        Reviewed by Philippe Normand.

        WebKitWebView test is too big already making more difficult to
        handle timeouts and skipped tests. Split it in 3 by moving
        UIClient and auth tests to their own files.

        * UIProcess/API/gtk/tests/GNUmakefile.am:
        * UIProcess/API/gtk/tests/TestAuthentication.cpp: Added.
        (testWebViewAuthenticationRequest):
        (testWebViewAuthenticationCancel):
        (testWebViewAuthenticationLoadCancelled):
        (testWebViewAuthenticationFailure):
        (testWebViewAuthenticationNoCredential):
        (testWebViewAuthenticationStorage):
        (testWebViewAuthenticationSuccess):
        (serverCallback):
        (beforeAll):
        (afterAll):
        * UIProcess/API/gtk/tests/TestUIClient.cpp: Added.
        (testWebViewCreateReadyClose):
        (checkMimeTypeForFilter):
        (testWebViewAllowModalDialogs):
        (testWebViewDisallowModalDialogs):
        (testWebViewJavaScriptDialogs):
        (testWebViewWindowProperties):
        (testWebViewMouseTarget):
        (testWebViewPermissionRequests):
        (testWebViewFileChooserRequest):
        (beforeAll):
        (afterAll):
        * UIProcess/API/gtk/tests/TestWebKitWebView.cpp:
        (beforeAll):
        (afterAll):

2013-12-29  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Convenience libraries that export API should be compiled with --whole-archive on Unix
        https://bugs.webkit.org/show_bug.cgi?id=126232

        Reviewed by Gustavo Noronha Silva.

        * PlatformGTK.cmake: Prefix libGObjectDOMBindings with --whole-archive so that
        symbols are not omitted during final linking.

2013-12-26  Sam Weinig  <sam@webkit.org>

        Move FilterIterator and IteratorPair to WTF and reimplement HashMap::keys() and HashMap::values() using IteratorPair
        https://bugs.webkit.org/show_bug.cgi?id=126253

        Reviewed by Anders Carlsson.

        * Shared/APIArray.h:
        Update includes and make elementsOfType() a bit easier to read by using a typedef and some
        judicial indentation.

        * Shared/FilterIterator.h: Moved to WTF.
        * Shared/IteratorPair.h: Moved to WTF.
        
        * WebKit2.xcodeproj/project.pbxproj:
        Remove the two files.

2013-12-28  Kwang Yul Seo  <skyul@company100.net>

        [WK2][SOUP] Fix handling of cookies when network process is enabled
        https://bugs.webkit.org/show_bug.cgi?id=125576

        Reviewed by Carlos Garcia Campos.

        Initialize the network process with cookie accept policy, persistent
        storage path and type. Use
        WebContext::sendToNetworkingProcessRelaunchingIfNecessary instead of
        WebContext::sendToAllProcessesRelaunchingThemIfNecessary to send
        SetCookiePersistentStorage message.

        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        * Shared/Network/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode):
        (WebKit::NetworkProcessCreationParameters::decode):
        * Shared/Network/NetworkProcessCreationParameters.h:
        * UIProcess/soup/WebContextSoup.cpp:
        (WebKit::WebContext::platformInitializeNetworkProcess):
        * UIProcess/soup/WebCookieManagerProxySoup.cpp:
        (WebKit::WebCookieManagerProxy::setCookiePersistentStorage):
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::platformInitializeWebProcess):

2013-12-27  Daniel Bates  <dabates@apple.com>

        [iOS] Upstream WebCore/page changes
        https://bugs.webkit.org/show_bug.cgi?id=126180

        Reviewed by Darin Adler.

        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm: Added.
        * WebProcess/WebPage/WebPage.cpp: Include header <WebCore/HitTestResult.h>.

2013-12-27  Gavin Barraclough  <barraclough@apple.com>

        Merge PageVisibilityState & ViewState::IsVisible in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=126214

        Reviewed by Alexey Proskuryakov.

        WebKit2 redundantly tracks the visibility of the view through two mechanisms - the visibility
        state, and the view state. Remove visibility state from the WebKit2 layer. The visibility
        state also tracks the prerender state - so split this out and handle it separately (a change
        we should make in WebCore, too).

        Removing the redundancy also removes the ability from the API to set a fake visibility state
        (IsVisible tracks the actual visibility of the view). Through private API
        (WKPageSetVisibilityState) a client could previously request the view be reported as hidden or
        visible, but this didn't really work - the override was not enforced and the API may reset the
        state at an arbitrary point. The mechanism is only used by testing code, which instead should
        actually update the view visibility (this tests more of the actual visibility mechanisms used
        by the browser). The one aspect of the API relied on by existing clients is the ability to
        initialize a hidden view as prerender - continue to support this specific functionality via
        WKPageSetVisibilityState, to maintain backwards compatibility.

        - WebKit2 - remove internal state that tracks page visibility separately from the view state
        visibility. For backwards compatibility continue to support the WKPageSetVisibilityState API,
        but only to initialize the state to prerender.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetVisibilityState):
            - only support initializing the visibility state to prerender.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
            - remove m_visibilityState
        (WebKit::WebPageProxy::initializeWebPage):
            - no need to send initial visibility state (this is sent as a part of the creation parameters).
        (WebKit::WebPageProxy::viewStateDidChange):
            - no need to send visibility state change (this is sent as a part of view state).
        (WebKit::WebPageProxy::setVisibilityStatePrerender):
            - setVisibilityState -> setVisibilityStatePrerender.
        * UIProcess/WebPageProxy.h:
            - remove m_visibilityState, setVisibilityState -> setVisibilityStatePrerender.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
            - added call to updateVisibilityState.
        (WebKit::WebPage::setViewIsVisible):
            - added call to updateVisibilityState.
        (WebKit::WebPage::updateVisibilityState):
            - previously setVisibilityState, updates the page visibility state according to the view state.
        (WebKit::WebPage::setVisibilityStatePrerender):
            - set visibility state to prerender.
        * WebProcess/WebPage/WebPage.h:
            - remove m_visibilityState, setVisibilityState -> setVisibilityStatePrerender.
        * WebProcess/WebPage/WebPage.messages.in:
            - SetVisibilityState -> SetVisibilityStatePrerender.

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

        [GTK] Unnecessary code is built into WebKitPluginProcess
        https://bugs.webkit.org/show_bug.cgi?id=126259

        Reviewed by Carlos Garcia Campos.

        * GNUmakefile.list.am: Stop building ChildProcessProxy and ProcessLauncher classes into WebKitPluginProcess.
        That code is not required in the plugin process, as one would expect.

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

        [EFL][WK2] MiniBrowser scale up/down infinitely after r161087
        https://bugs.webkit.org/show_bug.cgi?id=126254

        Reviewed by Gyuyoung Kim.

        After r161087, contentScaleFactor of WebView is synced with pageScaleFactor
        of WebPage. It means that WKViewGetContentScaleFactor might not be same
        with PageViewportController's current scale value until received PageScaleFactorDidChange.

        * UIProcess/efl/PageViewportControllerClientEfl.cpp:
        (WebKit::PageViewportControllerClientEfl::setViewportPosition):
        Use controller's current scale just to update and sync the position.

2013-12-26  Martin Robinson  <mrobinson@igalia.com>

        Small build fix for the GTK+ CMake port

        * UIProcess/API/gtk/tests/CMakeLists.txt: Make the way the output directory is specified similar
        to the WebKit1 version of these tests, so that it is more difficult to inadvertently specify the
        wrong directory.

2013-12-26  Thiago de Barros Lacerda  <thiago.lacerda@openbossa.org>

        [WK2][CoordinatedGraphics] Removing duplicate scale information from WebVIew.cpp
        https://bugs.webkit.org/show_bug.cgi?id=126243

        Reviewed by Benjamin Poulain.

        The scale factor of the WebView must reflect the same information present in
        WebPageProxy.
        Previously, in WebView.cpp, there was a m_contentScaleFactor member, which adds
        information duplication and needs to be synchronizing with pageScaleFactor in
        WebPageProxy. We can avoid this by just making WebView access and set WebPageProxy's
        pageScaleFactor directly.

        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::WebView):
        (WebKit::WebView::setContentScaleFactor):
        (WebKit::WebView::transformToScene):
        (WebKit::WebView::visibleContentsSize):
        * UIProcess/CoordinatedGraphics/WebView.h:
        (WebKit::WebView::contentScaleFactor):

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

        Unreviewed, rolling out r161033 and r161074.
        http://trac.webkit.org/changeset/161033
        http://trac.webkit.org/changeset/161074
        https://bugs.webkit.org/show_bug.cgi?id=126240

        Oliver says that a rollout would be better (Requested by ap on
        #webkit).

        * WebProcess/Plugins/Netscape/NPJSObject.cpp:
        (WebKit::NPJSObject::setProperty):

2013-12-25  Brady Eidson  <beidson@apple.com>

        DatabaseProcess: Implement version changing
        https://bugs.webkit.org/show_bug.cgi?id=126099

        Reviewed by Sam Weinig.

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata): Add logging.
        (WebKit::DatabaseProcessIDBConnection::openTransaction): Ditto.
        (WebKit::DatabaseProcessIDBConnection::beginTransaction): Ditto.
        (WebKit::DatabaseProcessIDBConnection::commitTransaction): Ditto.
        (WebKit::DatabaseProcessIDBConnection::resetTransaction): Ditto.
        (WebKit::DatabaseProcessIDBConnection::rollbackTransaction): Ditto.
        (WebKit::DatabaseProcessIDBConnection::changeDatabaseVersion): Implement this!
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::shutdown): Clean up all requests, and also cleanup the backing store
          on the database queue.
        (WebKit::UniqueIDBDatabase::shutdownBackingStore): Shutdown the backing store.
        (WebKit::UniqueIDBDatabase::didShutdownBackingStore):
        (WebKit::UniqueIDBDatabase::changeDatabaseVersion): Pass along the new version to the database queue.
        (WebKit::UniqueIDBDatabase::didChangeDatabaseVersion):
        (WebKit::UniqueIDBDatabase::changeDatabaseVersionInBackingStore): Set the new version in the backing store.
        (WebKit::UniqueIDBDatabase::postMainThreadTask): Add a ref() to keep the database alive incase it is being
          shutdown on the main thread.
        (WebKit::UniqueIDBDatabase::performNextMainThreadTask): Balance the ref() from postMainThreadTask, and
          accept an empty mainThreadTask queue.
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h: Add changeDatabaseVersion.

        Flesh out SQLiteIDBTransaction to actually operation on a SQLiteTransaction in a real SQLiteDatabase:
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp:
        (WebKit::SQLiteIDBTransaction::SQLiteIDBTransaction):
        (WebKit::SQLiteIDBTransaction::~SQLiteIDBTransaction):
        (WebKit::SQLiteIDBTransaction::begin):
        (WebKit::SQLiteIDBTransaction::commit):
        (WebKit::SQLiteIDBTransaction::reset):
        (WebKit::SQLiteIDBTransaction::rollback):
        (WebKit::SQLiteIDBTransaction::inProgress):
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.h:
        (WebKit::SQLiteIDBTransaction::create):
        (WebKit::SQLiteIDBTransaction::mode):

        Rename m_metadataDB to m_sqliteDB, 
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::extractExistingMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::openSQLiteDatabaseAtPath): Disable threading checks on the DB
          as work queues can change threads.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getOrEstablishMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::establishTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::beginTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::changeDatabaseVersion): After validating the transaction, actually
          update the version number on disk.
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::~WebIDBServerConnection): Make sure to abort in-flight requests.
        (WebKit::WebIDBServerConnection::changeDatabaseVersion): 
        (WebKit::WebIDBServerConnection::didChangeDatabaseVersion):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

2013-12-25  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Fix CMake style errors in Source/WebKit2/PlatformGTK.cmake
        https://bugs.webkit.org/show_bug.cgi?id=126221

        Reviewed by Gustavo Noronha Silva.

        * PlatformGTK.cmake: Fix CMake style errors.

2013-12-25  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Clean up generated sources directories
        https://bugs.webkit.org/show_bug.cgi?id=126216

        Reviewed by Gustavo Noronha Silva.

        * PlatformGTK.cmake: Use the new derived sources variables.
        * UIProcess/API/gtk/tests/CMakeLists.txt: Ditto.

2013-12-25  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, GTK build fix after r161063

        * GNUmakefile.am: Use locally built .gir dependencies when
        building the WebExtensions gir file.

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

        [GTK] Fix warnings when generating WebExtensions gobject-instrospection files
        https://bugs.webkit.org/show_bug.cgi?id=126225

        Reviewed by Philippe Normand.

        Add transfer annotation to webkit_web_page_get_dom_document() and
        document webkit_web_page_get_main_frame().

        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:

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

        [GTK] Missing introspection information for WebExtensions
        https://bugs.webkit.org/show_bug.cgi?id=122407

        Reviewed by Philippe Normand.

        Generate WebKit2WebExtension-3.0.gir with the WebExtensions API
        and move the DOM bindings API from WebKit2-3.0.gir to
        WebKit2WebExtension-3.0.gir.

        * GNUmakefile.am:

2013-12-24  Ryosuke Niwa  <rniwa@webkit.org>

        32-bit Mac build fix attempt after r161045.

        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        (WebKit::windowMap):

2013-12-22  Sam Weinig  <sam@webkit.org>

        [WK2] Replace usage of DEFINE_STATIC_LOCAL with NeverDestroyed
        https://bugs.webkit.org/show_bug.cgi?id=126144

        Reviewed by Anders Carlsson.

        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::shared):
        * DatabaseProcess/DatabaseProcess.h:
        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::shared):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::shared):
        (WebKit::NetworkProcess::downloadManager):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessPlatformStrategies.cpp:
        (WebKit::NetworkProcessPlatformStrategies::initialize):
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::privateBrowsingStorageSessionIdentifierBase):
        * Platform/CoreIPC/Connection.cpp:
        (CoreIPC::Connection::SyncMessageState::syncMessageStateMap):
        (CoreIPC::Connection::SyncMessageState::syncMessageStateMapMutex):
        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::shared):
        * PluginProcess/PluginProcess.h:
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::fullscreenWindowTracker):
        * Shared/ConnectionStack.cpp:
        (WebKit::ConnectionStack::shared):
        * Shared/Plugins/Netscape/NetscapePluginModule.cpp:
        (WebKit::initializedNetscapePluginModules):
        * Shared/WebContextMenuItem.cpp:
        (WebKit::WebContextMenuItem::separatorItem):
        * Shared/WebPreferencesStore.cpp:
        (WebKit::boolTestRunnerOverridesMap):
        * Shared/mac/CookieStorageShim.cpp:
        (WebKit::CookieStorageShim::shared):
        * Shared/mac/CookieStorageShim.h:
        (WebKit::CookieStorageShim::CookieStorageShim):
        * UIProcess/Plugins/PluginProcessManager.cpp:
        (WebKit::PluginProcessManager::shared):
        * UIProcess/Plugins/PluginProcessManager.h:
        * UIProcess/WebContext.cpp:
        (WebKit::contexts):
        * UIProcess/WebDatabaseManagerProxy.cpp:
        (WebKit::WebDatabaseManagerProxy::originKey):
        (WebKit::WebDatabaseManagerProxy::originQuotaKey):
        (WebKit::WebDatabaseManagerProxy::originUsageKey):
        (WebKit::WebDatabaseManagerProxy::databaseDetailsKey):
        (WebKit::WebDatabaseManagerProxy::databaseDetailsNameKey):
        (WebKit::WebDatabaseManagerProxy::databaseDetailsDisplayNameKey):
        (WebKit::WebDatabaseManagerProxy::databaseDetailsExpectedUsageKey):
        (WebKit::WebDatabaseManagerProxy::databaseDetailsCurrentUsageKey):
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorPageGroups::shared):
        * UIProcess/WebPageGroup.cpp:
        (WebKit::webPageGroupMap):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::ExceededDatabaseQuotaRecords::shared):
        (WebKit::WebPageProxy::executeEditCommand):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::globalPageMap):
        * UIProcess/cf/WebBackForwardListCF.cpp:
        (WebKit::SessionHistoryCurrentVersion):
        (WebKit::createEmptySessionHistoryDictionary):
        (WebKit::WebBackForwardList::createCFDictionaryRepresentation):
        (WebKit::WebBackForwardList::restoreFromCFDictionaryRepresentation):
        (WebKit::WebBackForwardList::restoreFromV0CFDictionaryRepresentation):
        (WebKit::WebBackForwardList::restoreFromV1CFDictionaryRepresentation):
        (WebKit::extractBackForwardListEntriesFromArray):
        * UIProcess/cf/WebPageProxyCF.cpp:
        (WebKit::WebPageProxy::sessionStateData):
        (WebKit::WebPageProxy::restoreFromSessionStateData):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::standardUserAgent):
        * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
        (WebKit::sharedDatabaseBackendMap):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::generateServerConnectionIdentifier):
        * WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm:
        (WebKit::WKDOMNodeCache):
        (WebKit::WKDOMRangeCache):
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        (WebKit::domHandleCache):
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::domHandleCache):
        * WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.cpp:
        (WebKit::allExtensions):
        * WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
        (WebKit::allWorlds):
        * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
        (WebKit::globalExceptionString):
        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        (WebKit::windowMap):
        * WebProcess/Storage/StorageNamespaceImpl.cpp:
        (WebKit::localStorageNamespaceMap):
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::didBeginEditing):
        (WebKit::WebEditorClient::respondToChangedContents):
        (WebKit::WebEditorClient::respondToChangedSelection):
        (WebKit::WebEditorClient::didEndEditing):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::shouldFallBack):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::initialize):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::idToHistoryItemMap):
        (WebKit::historyItemToIDMap):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::downloadManager):
        * WebProcess/WebProcess.h:
        * config.h:

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

        Fix the iOS build after r161013 and r160672.

        * Shared/mac/RemoteLayerTreePropertyApplier.mm:
        (WebKit::updateCustomAppearance):
        * Shared/mac/RemoteLayerTreeTransaction.mm:

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

        Unreviewed build fix for EFL after r161007

        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.cpp:
        (WebKit::CoordinatedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
        Changed the timeout parameter to std::chrono::milliseconds

2013-12-23  Oliver Hunt  <oliver@apple.com>

        Refactor PutPropertySlot to be aware of custom properties
        https://bugs.webkit.org/show_bug.cgi?id=126187

        Reviewed by msaboff.

        Update for new method signatures.

        * WebProcess/Plugins/Netscape/NPJSObject.cpp:
        (WebKit::NPJSObject::setProperty):

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

        [GTK][WK2] Simplify ProcessExecutablePathGtk
        https://bugs.webkit.org/show_bug.cgi?id=126173

        Reviewed by Martin Robinson.

        Don't store process name strings in global variables -- each of the names is only used in the relevant
        function, so the string can be directly passed into the findWebKitProcess function call.

        Simplify the findWebKitProcess function. Make the execDirectory variable static so that g_getenv is only
        called once, as it's not expected for the WEBKIT_EXEC_PATH environment variable to change during the runtime.

        Introduce the getExecutablePath helper function that gets the current executable path and, if non-null, returns
        the directory path of that executable. The helper function preserves the small performance improvement of querying
        and processing the executable path only once.
        The return value of getExecutablePath is stored in a static variable and is used to construct the process path
        if the executable path was successfully retrieved.

        * Shared/gtk/ProcessExecutablePathGtk.cpp:
        (WebKit::getExecutablePath):
        (WebKit::findWebKitProcess):
        (WebKit::executablePathOfWebProcess):
        (WebKit::executablePathOfPluginProcess):
        (WebKit::executablePathOfNetworkProcess):

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

        Unreviewed build fix for GTK and EFL after r161007.

        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::waitForAndDispatchDidUpdateBackingStoreState):
        Use std::chrono::milliseconds instead of double for the timeout parameter to
        CoreIPC::Connection::waitForAndDispatchImmediately.

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

        [GTK] [CMake] Add support for generating gtkdoc
        https://bugs.webkit.org/show_bug.cgi?id=116376

        Reviewed by Martin Robinson.

        * PlatformGTK.cmake: make generated API files go to DerivedSources/WebKit2, to
        match the autotools build and gtkdoc.py's expectation.

2013-12-23  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Build the WebKit2 GObject API tests
        https://bugs.webkit.org/show_bug.cgi?id=125683

        Reviewed by Daniel Bates.

        * UIProcess/API/gtk/tests/CMakeLists.txt: Added.

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

        REGRESSION (r160672): Random remote layers are getting shadows
        https://bugs.webkit.org/show_bug.cgi?id=126126

        Reviewed by Anders Carlsson.

        In http://trac.webkit.org/changeset/160672, we unconditionally
        check m_properties.customAppearance without regard for whether it
        has ever been initialized. This would result in sending an uninitialized
        custom appearance to the UI process, which could end up requesting a shadow.

        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
        Initialize LayerProperties to the CoreAnimation defaults.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::PlatformCALayerRemote):
        Remove wrongly-placed default initialization of contentsScale;
        there's no reason to send it across the wire for every new layer
        if it's left at the default.

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

        Use std::chrono::milliseconds for message wait timeouts in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=126168

        Reviewed by Sam Weinig.

        * Platform/CoreIPC/Connection.cpp:
        (CoreIPC::Connection::waitForMessage):
        * Platform/CoreIPC/Connection.h:
        (CoreIPC::Connection::waitForAndDispatchImmediately):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView forceAsyncDrawingAreaSizeUpdate:]):
        (-[WKView waitForAsyncDrawingAreaSizeUpdate]):
        * UIProcess/DrawingAreaProxy.cpp:
        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::didUpdateBackingStoreStateTimeout):
        (WebKit::DrawingAreaProxy::waitForPossibleGeometryUpdate):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::waitForDidUpdateViewState):
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate):

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

        Include <condition_variable>, not <thread>.

        * Platform/CoreIPC/Connection.h:
        * Shared/BlockingResponseMap.h:
        * UIProcess/API/mac/WKPrintingView.h:

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

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

        Reviewed by Dan Bernstein

        * DatabaseProcess/EntryPoint/mac/LegacyProcess/Info.plist:
        * DatabaseProcess/EntryPoint/mac/XPCService/DatabaseService.Development/Info.plist:
        * DatabaseProcess/EntryPoint/mac/XPCService/DatabaseService/Info.plist:
        * Info.plist:
        * NetworkProcess/EntryPoint/mac/LegacyProcess/Info.plist:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService.Development/Info.plist:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-OSX.plist:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-iOS.plist:
        * PluginProcess/EntryPoint/mac/LegacyProcess/Info.plist:
        * PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64.Info.plist:
        * PluginProcess/EntryPoint/mac/XPCService/PluginService.Development/Info.plist:
        * WebProcess/EntryPoint/mac/LegacyProcess/Info.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService.Development/Info.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-iOS.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info.plist:

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

        Convert ThreadCondition in WebKit2 over to std::condition_variable
        https://bugs.webkit.org/show_bug.cgi?id=126161

        Reviewed by Sam Weinig.

        * Platform/CoreIPC/Connection.cpp:
        (CoreIPC::Connection::waitForMessage):
        (CoreIPC::Connection::processIncomingMessage):
        * Platform/CoreIPC/Connection.h:
        * Shared/BlockingResponseMap.h:
        (BlockingResponseMap::waitForResponse):
        (BlockingResponseMap::didReceiveResponse):
        (BlockingResponseMap::cancel):
        * UIProcess/API/mac/WKPrintingView.h:
        * UIProcess/API/mac/WKPrintingView.mm:
        (pageDidDrawToPDF):
        (-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
        (prepareDataForPrintingOnSecondaryThread):
        (-[WKPrintingView knowsPageRange:]):

2013-12-22  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] libtool-compatible soversion calculation
        https://bugs.webkit.org/show_bug.cgi?id=125511

        Reviewed by Gustavo Noronha Silva.

        * CMakeLists.txt: Use the POPULATE_LIBRARY_VERSION macro and the
        library-specific version information.

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

        [GTK] [CMake] Generate pkg-config files
        https://bugs.webkit.org/show_bug.cgi?id=125685

        Reviewed by Martin Robinson.

        * PlatformGTK.cmake: generate webkit2gtk.pc.

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

        [GTK] Build with network process unconditionally
        https://bugs.webkit.org/show_bug.cgi?id=126128

        Reviewed by Martin Robinson.

        Build always with the network process enabled and decide whether
        to use it or not using an environment variable. This makes a lot
        easier to work on the network process and also to switch between
        using it or not.

        * GNUmakefile.am: Make sure we always include the WebKit2Prefix.h.
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (createDefaultWebContext): Use the network process when
        WEBKIT_USE_NETWORK_PROCESS environment variable is present.
        * WebKit2Prefix.h: Always enable network process for GTK port.

2013-12-23  Brian Holt  <brian.holt@samsung.com>

        [WK2] Implement platform specific Resource Response for SOUP
        https://bugs.webkit.org/show_bug.cgi?id=125422

        Reviewed by Martin Robinson.

        SOUP specific Resource Response implementation for the Network
        Process.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::continueWillSendRequest):
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::didReceiveResponseWithCertificateInfo):

2013-12-22  Kwang Yul Seo  <skyul@company100.net>

        [WK2][SOUP] WebContext::allowSpecificHTTPSCertificateForHost does not work correctly when m_usesNetworkProcess is false
        https://bugs.webkit.org/show_bug.cgi?id=125564

        Reviewed Carlos Garcia Campos.

        WebContext::allowSpecificHTTPSCertificateForHost should send
        AllowSpecificHTTPSCertificateForHost to the web process when
        m_usesNetworkProcess is false. Also we shouldn't guard
        WebProcess::allowSpecificHTTPSCertificateForHost with
        !ENABLE(NETWORK_PROCESS) because we need this method when
        m_usesNetworkProcess is false.

        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::allowSpecificHTTPSCertificateForHost):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/soup/WebProcessSoup.cpp:

2013-12-22  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Integrate GResource for inspector files (and others?)
        https://bugs.webkit.org/show_bug.cgi?id=125569

        Reviewed by Gustavo Noronha Silva.

        * GNUmakefile.am: Use the newly added static WebKit2InspectorGResourceBundle.xml
        instead of generating the same file each time.
        * PlatformGTK.cmake: Add support for building the GResource bundles into WebKit2.
        * UIProcess/API/gtk/WebKit2InspectorGResourceBundle.xml: Added.

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

        URTBF after r160971 to try to make EFL build again.

        * WebProcess/WebCoreSupport/efl/WebErrorsEfl.cpp:
        (WebKit::internalError):

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

        Unreviewed. Fix GTK+ build after r160971 and r160969.

        * GNUmakefile.list.am:
        * UIProcess/API/gtk/WebKitFileChooserRequest.cpp:
        (webkit_file_chooser_request_select_files):
        * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:
        (didReceiveWebViewMessageFromInjectedBundle):
        * UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
        (webkitURISchemeRequestCreate):
        * UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h:
        * UIProcess/API/gtk/WebKitWebResource.cpp:
        (webkit_web_resource_get_data):
        * UIProcess/soup/WebSoupRequestManagerClient.h:
        * WebProcess/WebCoreSupport/gtk/WebErrorsGtk.cpp:
        (WebKit::internalError):

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

        Unreviewed build fix attempt on EFL port after r160971 and r160969

        * CMakeLists.txt:
        * UIProcess/soup/WebSoupRequestManagerClient.cpp:
        (WebKit::WebSoupRequestManagerClient::didReceiveURIRequest):
        * UIProcess/soup/WebSoupRequestManagerProxy.cpp:
        (WebKit::WebSoupRequestManagerProxy::didReceiveURIRequest):

2013-12-21  Sam Weinig  <sam@webkit.org>

        [WK2] Rename WebError to API::Error
        https://bugs.webkit.org/show_bug.cgi?id=126125

        Reviewed by Anders Carlsson.

        * Shared/API/c/WKError.cpp:
        (WKErrorGetTypeID):
        (WKErrorCopyWKErrorDomain):
        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toAPI):
        * Shared/API/c/cf/WKErrorCF.cpp:
        (WKErrorCreateWithCFError):
        * Shared/APIError.cpp: Copied from Source/WebKit2/Shared/WebError.cpp.
        (API::Error::webKitErrorDomain):
        (API::Error::encode):
        (API::Error::decode):
        * Shared/APIError.h: Copied from Source/WebKit2/Shared/WebError.h.
        (API::Error::create):
        (API::Error::domain):
        (API::Error::failingURL):
        (API::Error::localizedDescription):
        (API::Error::Error):
        * Shared/Cocoa/WKNSError.h:
        (WebKit::wrapper):
        * Shared/Cocoa/WKNSError.mm:
        (-[WKNSError _web_createTarget]):
        * Shared/UserData.cpp:
        (WebKit::UserData::encode):
        (WebKit::UserData::decode):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebError.cpp: Removed.
        * Shared/WebError.h: Removed.
        * UIProcess/AutoCorrectionCallback.h:
        (WebKit::AutocorrectionDataCallback::invalidate):
        * UIProcess/GenericCallback.h:
        (WebKit::VoidCallback::invalidate):
        (WebKit::GenericCallback::invalidate):
        (WebKit::ComputedPagesCallback::invalidate):
        (WebKit::ImageCallback::invalidate):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::printFinishedCallback):
        * UIProcess/WebPageProxy.h:
        (WebKit::ValidateCommandCallback::invalidate):
        (WebKit::GestureCallback::invalidate):
        (WebKit::TouchesCallback::invalidate):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        * WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.cpp:
        * WebProcess/WebCoreSupport/mac/WebErrorsMac.mm:
        (WebKit::blockedError):
        (WebKit::cannotShowURLError):
        (WebKit::interruptedForPolicyChangeError):
        (WebKit::cannotShowMIMETypeError):
        (WebKit::pluginWillHandleLoadError):
        (WebKit::internalError):

2013-12-20  Sam Weinig  <sam@webkit.org>

        [WK2] Rename WebURL to API::URL
        https://bugs.webkit.org/show_bug.cgi?id=126100

        Reviewed by Anders Carlsson.

        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toURLRef):
        (WebKit::toCopiedURLAPI):
        * Shared/API/c/WKURL.cpp:
        (WKURLGetTypeID):
        (WKURLCreateWithUTF8CString):
        (WKURLCreateWithBaseURL):
        * Shared/API/c/cf/WKURLCF.mm:
        (WKURLCreateWithCFURL):
        * Shared/APIURL.h: Copied from Source/WebKit2/Shared/WebURL.h.
        (API::URL::create):
        (API::URL::string):
        (API::URL::host):
        (API::URL::protocol):
        (API::URL::path):
        (API::URL::lastPathComponent):
        (API::URL::encode):
        (API::URL::decode):
        (API::URL::URL):
        * Shared/Cocoa/WKNSURL.h:
        (WebKit::wrapper):
        * Shared/Cocoa/WKNSURL.mm:
        (-[WKNSURL _web_createTarget]):
        * Shared/Plugins/Netscape/PluginInformation.cpp:
        (WebKit::createPluginInformationDictionary):
        * Shared/UserData.cpp:
        (WebKit::UserData::encode):
        (WebKit::UserData::decode):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebArchiveResource.h:
        * Shared/WebURL.h: Removed.
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::getResourceData):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebIconDatabase.cpp:
        (WebKit::WebIconDatabase::didChangeIconForPageURL):
        (WebKit::WebIconDatabase::notifyIconDataReadyForPageURL):
        * UIProcess/WebIconDatabaseClient.cpp:
        (WebKit::WebIconDatabaseClient::didChangeIconForPageURL):
        (WebKit::WebIconDatabaseClient::iconDataReadyForPageURL):
        * UIProcess/WebIconDatabaseClient.h:
        * UIProcess/WebOpenPanelResultListenerProxy.cpp:
        (WebKit::WebOpenPanelResultListenerProxy::chooseFiles):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::getResourceDataFromFrame):
        * UIProcess/WebPageProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

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

        [GTK] Test /webkit2/WebKitWebResource/mime-type fails when run after /webkit2/WebKitWebView/resources
        https://bugs.webkit.org/show_bug.cgi?id=126119

        Reviewed by Martin Robinson.

        The problem is that when the blank.ico resource is loaded from the
        disk cache, the mime type is null, because the soup cache doesn't
        cache sniffed mime types. This doesn't happen when a resource is
        loaded form the memory cache, because the ResourceResponse is
        cached, not only the headers. I think the disk cache should also
        cache the sniffed content type, but that needs to be done in
        soup. For now we can workaround the issue in the unit test by
        making sure that resources that can be cached, also include the
        Content-Type header, this way the mime type won't be sniffed and
        it will be cached as a HTTP header in the disk cache.

        * UIProcess/API/gtk/tests/TestResources.cpp:
        (serverCallback): Add Content-Type header for resources that can
        be cached.

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

        REGRESSION(r160909): [GTK] Tests /webkit2/WebKitWebView/default-menu and /webkit2/WebKitSettings/webkit-settings fail
        https://bugs.webkit.org/show_bug.cgi?id=126117

        Reviewed by Martin Robinson.

        In r160909 the fullscreen setting default value was changed, but
        the unit tests relaying on the default value were not updated
        accordingly.

        * UIProcess/API/gtk/tests/TestContextMenu.cpp:
        * UIProcess/API/gtk/tests/TestWebKitSettings.cpp:
        (testWebKitSettings):

2013-12-20  Jaehun Lim  <ljaehun.lim@samsung.com>

        Unreviewed build fix after r160939

        Add ENABLE(CUSTOM_PROTOCOLS) guard.

        * UIProcess/WebContext.cpp:

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

        Change "threaded scrolling" terminology to "asynchronous scrolling"
        https://bugs.webkit.org/show_bug.cgi?id=126094

        Reviewed by Tim Horton.
        
        Rename ENABLE_THREADED_SCROLLING to ENABLE_ASYNC_SCROLLING, and change
        references to "main thread scrolling" to "synchronous scrolling".

        * WebProcess/WebPage/EventDispatcher.cpp:
        (WebKit::EventDispatcher::wheelEvent):
        * WebProcess/WebPage/EventDispatcher.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::~WebPage):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::didInstallPageOverlay):
        (WebKit::TiledCoreAnimationDrawingArea::didUninstallPageOverlay):
        (WebKit::TiledCoreAnimationDrawingArea::updatePreferences):
        (WebKit::TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):

2013-12-20  Ricky Mondello  <rmondello@apple.com>

        Rename PlugInAutoStartProvider's ...EntriesAddedBeforeTime facility to ...EntriesAddedAfterTime
        https://bugs.webkit.org/show_bug.cgi?id=126078

        Reviewed by Anders Carlsson.

        r160922 accidentally named a facility for filtering out data added after a certain time,
        "...FilteringOutEntriesAddedBeforeTime", which was incorrect. This patch renames those instances
        to "...FilteringOutEntriesAddedAfterTime".

        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetPlugInAutoStartOriginsFilteringOutEntriesAddedAfterTime):
        * UIProcess/API/C/WKContext.h:
        * UIProcess/Plugins/PlugInAutoStartProvider.cpp:
        (WebKit::PlugInAutoStartProvider::setAutoStartOriginsFilteringOutEntriesAddedAfterTime):
        * UIProcess/Plugins/PlugInAutoStartProvider.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::setPlugInAutoStartOriginsFilteringOutEntriesAddedAfterTime):
        * UIProcess/WebContext.h:

2013-12-20  Sam Weinig  <sam@webkit.org>

        [WK2] Add SPI for using a custom protocol handler
        https://bugs.webkit.org/show_bug.cgi?id=126089

        Reviewed by Anders Carlsson.

        * UIProcess/API/C/mac/WKContextPrivateMac.h:
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextRegisterSchemeForCustomProtocol):
        (WKContextUnregisterSchemeForCustomProtocol):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (+[WKBrowsingContextController registerSchemeForCustomProtocol:]):
        (+[WKBrowsingContextController unregisterSchemeForCustomProtocol:]):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::globalURLSchemesWithCustomProtocolHandlers):
        (WebKit::WebContext::registerGlobalURLSchemeAsHavingCustomProtocolHandlers):
        (WebKit::WebContext::unregisterGlobalURLSchemeAsHavingCustomProtocolHandlers):
        * UIProcess/WebContext.h:
        * UIProcess/mac/WebContextMac.mm:
        (WebKit::WebContext::platformInitializeWebProcess):
        (WebKit::WebContext::platformInitializeNetworkProcess):
        (WebKit::WebContext::registerNotificationObservers):
        (WebKit::WebContext::unregisterNotificationObservers):

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

        WebKit2 View Gestures: Implement smartMagnifyWithEvent: and make it work
        https://bugs.webkit.org/show_bug.cgi?id=125752
        <rdar://problem/15664245>

        Reviewed by Anders Carlsson.

        Implement "smart magnify", which is the double-tap-to-zoom gesture on OS X.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView smartMagnifyWithEvent:]):
        Forward smartMagnifyWithEvent to ViewGestureController.

        * UIProcess/mac/ViewGestureController.cpp:
        (WebKit::ViewGestureController::handleMagnificationGesture):
        Drive-by repair a comment.

        (WebKit::ViewGestureController::handleSmartMagnificationGesture):
        Added. Immediately dispatch a message to the web process to retrieve
        the rendered rect of the element under the gesture.

        (WebKit::maximumRectangleComponentDelta):
        Return the absolute maximum delta between corresponding components of two rects.

        (WebKit::ViewGestureController::didCollectGeometryForSmartMagnificationGesture):
        Once the WebProcess has replied with the relevant geometry, use it to
        determine our target rectangle (the element's rect, with some padding)
        and target magnification (attempting to keep replaced elements
        fully in-view, and otherwise zooming in as far as possible to fit the
        element's width).

        If this gesture occurs after the page is already magnified, and targets
        a similar region to the previous smart magnification gesture, zoom out
        instead of panning across the page.

        Begin a transient zoom with the current magnification, and immediately
        commit it at our target magnification and offset, so that the drawing
        area will animate to the new parameters.

        (WebKit::ViewGestureController::endActiveGesture):
        * UIProcess/mac/ViewGestureController.h:
        * UIProcess/mac/ViewGestureController.messages.in:
        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
        (WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):
        Hit-test the document to determine the node under the smart magnification
        gesture, and return it to the UI process along with various other bits of data.

        * WebProcess/WebPage/ViewGestureGeometryCollector.h:
        * WebProcess/WebPage/ViewGestureGeometryCollector.messages.in:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::adjustTransientZoom):
        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
        (WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):
        Instead of short-circuiting the animation if we didn't have to constrain
        the origin, short-circuit if we're already *at* the right origin,
        like the comment said. This prevents jarring jumps when double-tap-panning
        between elements when zoomed all the way in.

2013-12-20  Ricky Mondello  <rmondello@apple.com>

        Allow partial application of PlugInAutoStart tables based on timestamp
        https://bugs.webkit.org/show_bug.cgi?id=125871

        Reviewed by Anders Carlsson.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetPlugInAutoStartOriginsFilteringOutEntriesAddedBeforeTime): New API.
        * UIProcess/API/C/WKContext.h: New API.

        * UIProcess/Plugins/PlugInAutoStartProvider.cpp:
        (WebKit::PlugInAutoStartProvider::setAutoStartOriginsTable): Call setAutoStartOriginsTableWithItemsPassingTest
            with a predicate that lets all policies pass.
        (WebKit::PlugInAutoStartProvider::setAutoStartOriginsFilteringOutEntriesAddedBeforeTime): Call
            setAutoStartOriginsTableWithItemsPassingTest with a predicate that lets policies created before a certain
            time pass.
        (WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest): Added. Contains most of the
            contents of setAutoStartOriginsTable, with support for applying a predicate.
        * UIProcess/Plugins/PlugInAutoStartProvider.h: Add public method,
            `setAutoStartOriginsFilteringOutEntriesAddedBeforeTime`, and private method,
            `setAutoStartOriginsTableWithItemsPassingTest`.

        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::setPlugInAutoStartOriginsFilteringOutEntriesAddedBeforeTime): Pass through to the
            PlugInAutoStartProvider.
        * UIProcess/WebContext.h: Declare `setPlugInAutoStartOriginsFilteringOutEntriesAddedBeforeTime`.

2013-12-20  Enrique Ocaña González  <eocanha@igalia.com>

        [GTK] WebKitWebViewBase's ClickCounter should be reset
        https://bugs.webkit.org/show_bug.cgi?id=122551

        Reviewed by Martin Robinson.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::didCommitLoadForMainFrame):
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseResetClickCounter):
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:

2013-12-20  Enrique Ocaña González  <eocanha@igalia.com>

        [GTK] The fullscreen API should be enabled by default
        https://bugs.webkit.org/show_bug.cgi?id=125993

        Reviewed by Gustavo Noronha Silva.

        Set the WebSettings property to TRUE

        * UIProcess/API/gtk/WebKitSettings.cpp:
        (webkit_settings_class_init):

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

        [GTK] Some unit tests using web extensions fail when run alone
        https://bugs.webkit.org/show_bug.cgi?id=126002

        Reviewed by Gustavo Noronha Silva.

        The problem is that the page is created before the dbus connection
        has been established, and we are connecting to web-page-created
        signal once we have a valid dbus connection. We should connect to
        the signal before connecting to dbus and queue any request to emit
        a dbus signal until the connection is set. This also fixes the
        WebExtensions tests when using the network process because a new
        web process is launched for every test case.

        * UIProcess/API/gtk/tests/WebExtensionTest.cpp:
        (DelayedSignal::DelayedSignal): Helper struct to queue signal
        emissions requested before the dbus connection has been
        established.
        (emitDocumentLoaded): Emit the dbus DocumentLoaded signal.
        (documentLoadedCallback): Queue the signal emission if we still
        don't have a connection or call emitDocumentLoaded otherwise.
        (emitURIChanged): Emit the dbus URIChanged signal.
        (uriChangedCallback): Queue the signal emission if we still don't
        have a connection or call emitURIChanged otherwise.
        (pageCreatedCallback): Pass the web extension as user data to
        document-loaded and uri-changed callbacks.
        (busAcquiredCallback): Set the connection as user data of the web
        extension and process any delayed signal emission pending.
        (webkit_web_extension_initialize): Connect to web-page-create
        signal before connecting to dbus.

2013-12-19  Benjamin Poulain  <bpoulain@apple.com>

        [WK2][iOS] Enable multiprocess by default
        https://bugs.webkit.org/show_bug.cgi?id=126030

        Reviewed by Anders Carlsson.

        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (-[WKProcessGroup initWithInjectedBundleURL:]):

2013-12-19  Andy Estes  <aestes@apple.com>

        Remove WebFilterEvaluator wrappers from WebKitSystemInterface
        https://bugs.webkit.org/show_bug.cgi?id=126028

        Reviewed by Anders Carlsson.

        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface): Don't INIT() removed function pointers.

2013-12-19  Benjamin Poulain  <bpoulain@apple.com>

        Remove WKContentViewPrivate.h, WKContentView.h is private now
        https://bugs.webkit.org/show_bug.cgi?id=125981

        Reviewed by Dan Bernstein.

        There is no need for a separate header, WKContentView has become an implementation
        detail of WKView.

        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentViewInternal.h:
        * UIProcess/API/ios/WKContentViewPrivate.h: Removed.
        * UIProcess/API/ios/WKView.mm:

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

        REGRESSION (r160515): Frequent assertion failures on printing/print-close-crash.html
        https://bugs.webkit.org/show_bug.cgi?id=126014

        Rolled out r160515 while Chris is investigating. Added FIXME comments in other
        places where we use this pattern.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::runJavaScriptAlert):
        (WebKit::WebChromeClient::runJavaScriptConfirm):
        (WebKit::WebChromeClient::runJavaScriptPrompt):
        (WebKit::WebChromeClient::print):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):

2013-12-19  Ricky Mondello  <rmondello@apple.com>

        Add WebKit2 API for clearing the back-forward list
        https://bugs.webkit.org/show_bug.cgi?id=126005

        Reviewed by Anders Carlsson.

        * UIProcess/API/C/WKBackForwardListRef.cpp:
        (WKBackForwardListClear): Call through to the back-forward list's `clear()`.
        * UIProcess/API/C/WKBackForwardListRef.h: Declare new API.

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

        One more URTBF to make GTK build happy after r160853.

        * UIProcess/API/gtk/WebKitDownloadClient.cpp:
        * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:
        (didReceiveWebViewMessageFromInjectedBundle):
        * UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:
        (webkitResponsePolicyDecisionCreate):
        * UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h:

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

        URTBF for GTK after r160853.

        * GNUmakefile.list.am:

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

        Unreviewed EFL build fix attempt after r160853

        * CMakeLists.txt: Change WebURLResponse.cpp to APIURLResponse.cpp.

2013-12-17  Sam Weinig  <sam@webkit.org>

        [WK2] Rename WebURLResponse to API::URLResponse
        https://bugs.webkit.org/show_bug.cgi?id=125910

        Reviewed by Andreas Kling.

        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toAPI):
        * Shared/API/c/WKURLResponse.cpp:
        (WKURLResponseGetTypeID):
        * Shared/API/c/mac/WKURLResponseNS.mm:
        (WKURLResponseCreateWithNSURLResponse):
        * Shared/APIURLRequest.cpp:
        * Shared/APIURLResponse.cpp: Copied from Source/WebKit2/Shared/WebURLResponse.cpp.
        (API::URLResponse::URLResponse):
        (API::URLResponse::encode):
        (API::URLResponse::decode):
        * Shared/APIURLResponse.h: Copied from Source/WebKit2/Shared/WebURLResponse.h.
        (API::URLResponse::create):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebURLResponse.cpp: Removed.
        * Shared/WebURLResponse.h: Removed.
        * UIProcess/WebDownloadClient.cpp:
        (WebKit::WebDownloadClient::didReceiveResponse):
        * UIProcess/WebPolicyClient.cpp:
        (WebKit::WebPolicyClient::decidePolicyForResponse):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.cpp:
        (WebKit::InjectedBundlePagePolicyClient::decidePolicyForResponse):

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

        [CoordinatedGraphics] Regressions in WebView's contentScaleFactor/contentPosition
        https://bugs.webkit.org/show_bug.cgi?id=125943

        Reviewed by Noam Rosenthal.

        When WebView::pageDidRequestScroll is called it is scaling position requested
        to scroll before store it as contentPosition, that is not necessary since WebView
        already stores the requested contentScaleFactor so it's able to do that internally
        when needed, what simplifies the API and improves the readability of webview's code.
        This patch reverts changes from https://bugs.webkit.org/show_bug.cgi?id=118548, which
        was causing some regressions in contentScaleFactor/contentPosition related stuff.
        Besides that WebView::pageDidRequestScroll calls viewClient callback with the wrong
        position (different from the position stored in WebView).

        * UIProcess/API/efl/EwkView.cpp:
        (EwkView::scrollBy):
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::transformToScene):
        (WebKit::WebView::updateViewportSize):
        (WebKit::WebView::pageDidRequestScroll):
        * UIProcess/efl/PageViewportControllerClientEfl.cpp:
        (WebKit::PageViewportControllerClientEfl::setViewportPosition):
2013-12-18  Tim Horton  <timothy_horton@apple.com>

        WebKit2 View Gestures: Move WebProcess-side geometry collection into its own class
        https://bugs.webkit.org/show_bug.cgi?id=125967

        Reviewed by Anders Carlsson.

        Move the messages dispatched by ViewGestureController that grab geometry
        from the WebProcess out of the DrawingArea and into ViewGestureGeometryCollector.
        This class will grow when smart magnification is implemented.

        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        Remove BeginTransientZoom() message.

        * DerivedSources.make:
        * UIProcess/DrawingAreaProxy.h:
        
        * UIProcess/mac/ViewGestureController.cpp:
        (WebKit::ViewGestureController::didCollectGeometryForMagnificationGesture):
        (WebKit::ViewGestureController::handleMagnificationGesture):
        * UIProcess/mac/ViewGestureController.h:
        * UIProcess/mac/ViewGestureController.messages.in:
        Make use of ViewGestureGeometryCollector and rename didBeginTransientZoom to didCollectGeometryForMagnificationGesture.

        * WebKit2.xcodeproj/project.pbxproj:
        Add new files.
        
        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp: Added.
        (WebKit::ViewGestureGeometryCollector::ViewGestureGeometryCollector):
        (WebKit::ViewGestureGeometryCollector::~ViewGestureGeometryCollector):
        (WebKit::ViewGestureGeometryCollector::collectGeometryForMagnificationGesture):
        * WebProcess/WebPage/ViewGestureGeometryCollector.h: Added.
        * WebProcess/WebPage/ViewGestureGeometryCollector.messages.in: Added.
        Move the code to collect the visible content rect and return it to the ViewGestureController into its own class.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        * WebProcess/WebPage/WebPage.h:
        Move m_pageID to the top of WebPage's initialization list so that
        it can be safely used from other members' constructors.

        Add a ViewGestureGeometryCollector member and construct it.

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

        Unreviewed cmake build fix for GTK+.

        * PlatformGTK.cmake: fix paths for files that were moved.

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

        MessageReceiverMap::addMessageReceiver should assert that destinationID is not zero
        https://bugs.webkit.org/show_bug.cgi?id=125965

        Reviewed by Tim Horton.

        * Platform/CoreIPC/MessageReceiverMap.cpp:
        (CoreIPC::MessageReceiverMap::addMessageReceiver):

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

        Deprecate some WKMutableDictionary functions
        https://bugs.webkit.org/show_bug.cgi?id=125962

        Reviewed by Tim Horton.

        * Shared/API/c/WKDeprecatedFunctions.cpp:
        (WKDictionaryIsMutable):
        (WKDictionaryAddItem):
        (WKDictionaryRemoveItem):
        * Shared/API/c/WKMutableDictionary.cpp:
        * Shared/API/c/WKMutableDictionary.h:

2013-12-18  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Allow the web process plug-in to intercept resource requests
        https://bugs.webkit.org/show_bug.cgi?id=125959

        Reviewed by Anders Carlsson.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h: Declared new
        delegate method.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (willSendRequestForFrame): Implemented this WKBundlePageResourceClient callback by calling
        the load delegate.
        (setUpResourceLoadClient): Added. Initializes the resource load client with the above
        function.
        (-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]): Added calls to initialize
        and clear the resource load client.

2013-12-18  Yongjun Zhang  <yongjun_zhang@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=125941
        Add Obj C API for injected bundle PageGroup class.

        Reviewed by Dan Bernstein.

        Add Obj C API (WKWebProcessPlugInPageGroup) for injected bundle PageGroup class. And add APIs to
        expose the main frame and page group from WKWebProcessPlugInBrowsingContextController.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject): Create wrapper object for InjectedPageGroup object.
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.h: Added.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.mm: Added.
        (-[WKWebProcessPlugInPageGroup identifier]):
        (-[WKWebProcessPlugInPageGroup dealloc]):
        (-[WKWebProcessPlugInPageGroup API::]):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroupInternal.h: Added.
        (WebKit::wrapper):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h: Add API to expose the main frame and page group
            for WKWebPocessPlugInBrowserContextController.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController mainFrame]):
        (-[WKWebProcessPlugInBrowserContextController pageGroup]):

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

        PDFPlugin: Never make a NSEventType = 0
        https://bugs.webkit.org/show_bug.cgi?id=125955

        Reviewed by Dan Bernstein.

        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::getEventTypeFromWebEvent):
        Make getEventTypeFromWebEvent return its NSEventType as an out arg, and
        make the return value represent whether or not we set it.

        (WebKit::PDFPlugin::nsEventForWebMouseEvent):
        (WebKit::PDFPlugin::handleKeyboardEvent):
        Make use of getEventTypeFromWebEvent.

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

        WKRemoteObjectRegistry should invoke invocations
        https://bugs.webkit.org/show_bug.cgi?id=125945

        Reviewed by Tim Horton.

        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        (-[WKRemoteObjectRegistry _invokeMessageWithInterfaceIdentifier:encodedInvocation:]):

2013-12-18  Gavin Barraclough  <barraclough@apple.com>

        Add layer hosting mode to ViewState
        https://bugs.webkit.org/show_bug.cgi?id=125803

        Reviewed by Anders Carlsson.

        When the view state of the page is updated the layer mode may also
        change. Currently this is passed by a separate message, remove this
        and fold it into ViewState.
        
        Previously the setLayerHostingMode message would be passed to the
        DrawingArea, which would inform the WebPage. Since the WebPage is
        passed the SetVisibilityState messgae reverse this.

        WebPageProxy had a policy of only updating the hosting mode when
        visible - the value is sticky whilst the view is not visible. Make
        this policy explicit in the PageClientImpl, rather then implicit
        from the flow control.

        * Shared/ViewState.h:
            - Added ViewState::IsLayerWindowServerHosted.
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
            - removed layerHostingMode.
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::PageClientImpl):
        (WebKit::PageClientImpl::isLayerWindowServerHosted):
        (WebKit::PageClientImpl::viewWillMoveToAnotherWindow):
            - viewLayerHostingMode -> isLayerWindowServerHosted, added m_layerHostingMode.
        * UIProcess/DrawingAreaProxy.h:
            - removed layerHostingModeDidChange.
        * UIProcess/PageClient.h:
            - viewLayerHostingMode -> isLayerWindowServerHosted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
            - removed m_layerHostingMode.
        (WebKit::WebPageProxy::updateViewState):
            - added IsLayerWindowServerHosted.
        (WebKit::WebPageProxy::viewStateDidChange):
            - changes to ViewState::IsInWindow implies ViewState::IsLayerWindowServerHosted may change too.
            - remove special handling (separate message) for LayerHostingMode.
        (WebKit::WebPageProxy::initializeCreationParameters):
            - removed m_layerHostingMode.
        * UIProcess/WebPageProxy.h:
            - removed m_layerHostingMode.
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
            - removed layerHostingModeDidChange.
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::setLayerHostingMode):
        (WebKit::DrawingArea::didUpdate):
            - setLayerHostingMode takes a LayerHostingMode.
        * WebProcess/WebPage/DrawingArea.messages.in:
            - SetLayerHostingMode is no longer a message.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
            - removed m_layerHostingMode.
        (WebKit::WebPage::setViewState):
            - handle ViewState::IsLayerWindowServerHosted.
        (WebKit::WebPage::setLayerHostingMode):
            - moved from ~Mac.mm (matching other ViewState setters), calls to DrawingArea.
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::layerHostingMode):
            - layerHostingMode queries m_viewState, removed m_layerHostingMode.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
            - removed setLayerHostingMode.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::setLayerHostingMode):
            - setLayerHostingMode takes a LayerHostingMode, WebPage now calls to DrawingArea.
        * WebProcess/WebPage/mac/WebPageMac.mm:
            - removed setLayerHostingMode.

2013-12-18  Gavin Barraclough  <barraclough@apple.com>

        Fix page visibility api test, initialization in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=125933

        Reviewed by Anders Carlsson.

        The API test for page visibility is broken, fix this. This revealed a recent regression in WebKit2
        (introduced in https://bugs.webkit.org/show_bug.cgi?id=123379), caused by a typo removing a '!'.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setVisibilityState):
            - Fix regression, accidentally removed a '!'.

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

        Fix 32-bit build.

        * Shared/API/Cocoa/RemoteObjectRegistry.mm:
        (WebKit::RemoteObjectRegistry::invokeMethod):

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

        Make WKObjectRegistry objects be per page
        https://bugs.webkit.org/show_bug.cgi?id=125937

        Reviewed by Andreas Kling.

        Remove WKObjectRegistry from WKConnection. Also, add a C++ object that is in charge 
        of actually sending and receiving messages.

        * DerivedSources.make:
        * Shared/API/Cocoa/RemoteObjectRegistry.h: Added.
        * Shared/API/Cocoa/RemoteObjectRegistry.messages.in: Added.
        * Shared/API/Cocoa/RemoteObjectRegistry.mm: Added.
        (WebKit::RemoteObjectRegistry::RemoteObjectRegistry):
        (WebKit::RemoteObjectRegistry::~RemoteObjectRegistry):
        (WebKit::RemoteObjectRegistry::sendInvocation):
        (WebKit::RemoteObjectRegistry::invokeMethod):
        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        (-[WKRemoteObjectRegistry _initWithMessageSender:IPC::]):
        (-[WKRemoteObjectRegistry _invalidate]):
        (-[WKRemoteObjectRegistry _sendInvocation:interface:]):
        (-[WKRemoteObjectRegistry WebKit::]):
        (-[WKRemoteObjectRegistry _invokeMethod:]):
        * Shared/API/Cocoa/WKRemoteObjectRegistryInternal.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController dealloc]):
        (-[WKBrowsingContextController remoteObjectRegistry]):
        * UIProcess/API/Cocoa/WKBrowsingContextControllerPrivate.h:
        * UIProcess/API/Cocoa/WKConnection.h:
        * UIProcess/API/Cocoa/WKConnection.mm:
        (didReceiveMessage):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController remoteObjectRegistry]):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

2013-12-18  Conrad Shultz  <conrad_shultz@apple.com>

        API to set a favicon
        https://bugs.webkit.org/show_bug.cgi?id=125892

        Reviewed by Brian Weinstein.

        * UIProcess/API/C/WKIconDatabase.cpp:
        (WKIconDatabaseSetIconDataForIconURL):
        Call WebIconDatabase::setIconDataForIconURL().

        * UIProcess/API/C/WKIconDatabase.h:
        Declare WKIconDatabaseSetIconDataForIconURL().

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

        Fix Dictionary encoding
        https://bugs.webkit.org/show_bug.cgi?id=125930

        Reviewed by Andreas Kling.

        Encode the HashMap size as a 64-bit unsigned integer.

        * Shared/UserData.cpp:
        (WebKit::UserData::encode):

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

        Unreviewed. Fix make distcheck.

        * GNUmakefile.list.am:

2013-12-17  Jae Hyun Park  <jae.park@company100.net>

        [GTK] Build fix after r160737

        Unreviewed.

        Rename WebURLRequest to API::URLRequest

        * GNUmakefile.list.am:
        * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:
        (didReceiveWebViewMessageFromInjectedBundle):
        * UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:
        (webkitNavigationPolicyDecisionCreate):
        * UIProcess/API/gtk/WebKitNavigationPolicyDecisionPrivate.h:
        * UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:
        (webkitResponsePolicyDecisionCreate):
        * UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h:
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_load_request):
        * UIProcess/API/gtk/WebKitWindowProperties.cpp:
        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
        (willSendRequestForFrame):

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

        Unreviewed build fix on EFL port after r160737

        Rename WebURLRequest to API::URLRequest

        * CMakeLists.txt:
        * UIProcess/API/efl/ewk_url_request_private.h:

2013-12-17  Simon Fraser  <simon.fraser@apple.com>

        Rename "canRubberBands" to "canRubberBand"
        https://bugs.webkit.org/show_bug.cgi?id=125897

        Reviewed by Anders Carlsson.

        Rename "canRubberBands" to "canRubberBand" in various places.

        * WebProcess/WebPage/EventDispatcher.cpp:
        (WebKit::EventDispatcher::wheelEvent):
        * WebProcess/WebPage/EventDispatcher.h:
        * WebProcess/WebPage/EventDispatcher.messages.in:

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

        WebKit2 View Gestures: Fix the shadow layer restore-from-overpinched animation
        https://bugs.webkit.org/show_bug.cgi?id=125884

        Reviewed by Anders Carlsson.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
        Set to-values on the right animations.

        (WebKit::TiledCoreAnimationDrawingArea::adjustTransientZoom):
        (WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):
        We don't need to explicitly set the shadow path, because PlatformCALayer::setBounds does it for us now.

2013-12-17  Sam Weinig  <sam@webkit.org>

        [WK2] Rename WebURLRequest to API::URLRequest
        https://bugs.webkit.org/show_bug.cgi?id=125886

        Reviewed by Anders Carlsson.

        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toAPI):
        * Shared/API/c/WKURLRequest.cpp:
        (WKURLRequestGetTypeID):
        (WKURLRequestCreateWithWKURL):
        (WKURLRequestSetDefaultTimeoutInterval):
        * Shared/API/c/mac/WKURLRequestNS.mm:
        (WKURLRequestCreateWithNSURLRequest):
        * Shared/APIString.h:
        * Shared/APIURLRequest.cpp: Copied from Source/WebKit2/Shared/WebURLRequest.cpp.
        (API::URLRequest::URLRequest):
        (API::URLRequest::defaultTimeoutInterval):
        (API::URLRequest::setDefaultTimeoutInterval):
        (API::URLRequest::encode):
        (API::URLRequest::decode):
        * Shared/APIURLRequest.h: Copied from Source/WebKit2/Shared/WebURLRequest.h.
        (API::URLRequest::create):
        * Shared/UserData.cpp:
        (WebKit::UserData::encode):
        (WebKit::UserData::decode):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebURLRequest.cpp: Removed.
        * Shared/WebURLRequest.h: Removed.
        * UIProcess/API/C/WKContext.cpp:
        * UIProcess/API/C/WKDownload.cpp:
        (WKDownloadCopyRequest):
        * UIProcess/API/C/WKNavigationDataRef.cpp:
        (WKNavigationDataCopyOriginalRequest):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController loadRequest:userData:]):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::createNewWebProcess):
        * UIProcess/WebInspectorProxy.cpp:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadURLRequest):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPolicyClient.cpp:
        (WebKit::WebPolicyClient::decidePolicyForNavigationAction):
        (WebKit::WebPolicyClient::decidePolicyForNewWindowAction):
        (WebKit::WebPolicyClient::decidePolicyForResponse):
        * UIProcess/WebUIClient.cpp:
        (WebKit::WebUIClient::createNewPage):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        * WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.cpp:
        (WebKit::InjectedBundlePagePolicyClient::decidePolicyForNavigationAction):
        (WebKit::InjectedBundlePagePolicyClient::decidePolicyForNewWindowAction):
        (WebKit::InjectedBundlePagePolicyClient::decidePolicyForResponse):
        * WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp:
        (WebKit::InjectedBundlePageResourceLoadClient::willSendRequestForFrame):

2013-12-17  Brady Eidson  <beidson@apple.com>

        DatabaseProcess: Pipe through object store IDs and transaction mode for "openTransaction"
        https://bugs.webkit.org/show_bug.cgi?id=125872

        Reviewed by Alexey Proskuryakov.

        Pipe through the objectStoreIDs and mode:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::openTransaction):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        Rework postTransactionOperation to take a pre-made AsyncTask to allow for different
        transaction operation function signatures:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::openTransaction): Pipe through the objectStoreIDs and mode:
        (WebKit::UniqueIDBDatabase::beginTransaction):
        (WebKit::UniqueIDBDatabase::commitTransaction):
        (WebKit::UniqueIDBDatabase::resetTransaction):
        (WebKit::UniqueIDBDatabase::rollbackTransaction):
        (WebKit::UniqueIDBDatabase::postTransactionOperation):
        (WebKit::UniqueIDBDatabase::openBackingStoreTransaction):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        Pipe through the objectStoreIDs and mode:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::establishTransaction):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        * Platform/Logging.h: Add an IDB logging channel.

        * Shared/AsyncTask.h:
        (WebKit::createAsyncTask): Add a 3-argument variant.

        * Shared/WebCrossThreadCopier.cpp:
        (WebCore::::copy): Add a Vector<int64_t> copier.
        * Shared/WebCrossThreadCopier.h:

        Add logging throughout currently implemented methods:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::getOrEstablishIDBDatabaseMetadata):
        (WebKit::WebIDBServerConnection::didGetOrEstablishIDBDatabaseMetadata):
        (WebKit::WebIDBServerConnection::openTransaction): Pipe through the objectStoreIDs and mode.
        (WebKit::WebIDBServerConnection::didOpenTransaction):
        (WebKit::WebIDBServerConnection::beginTransaction):
        (WebKit::WebIDBServerConnection::didBeginTransaction):
        (WebKit::WebIDBServerConnection::commitTransaction):
        (WebKit::WebIDBServerConnection::didCommitTransaction):
        (WebKit::WebIDBServerConnection::resetTransaction):
        (WebKit::WebIDBServerConnection::didResetTransaction):
        (WebKit::WebIDBServerConnection::rollbackTransaction):
        (WebKit::WebIDBServerConnection::didRollbackTransaction):

2013-12-17  Gavin Barraclough  <barraclough@apple.com>

        Remove PageVisibilityStateUnloaded
        https://bugs.webkit.org/show_bug.cgi?id=125869

        Reviewed by Anders Carlsson.

        This is not currently supported by WebKit, remove this enum value.
        We can always add this back later if/when we add support for this state.

        * Shared/API/c/WKPageVisibilityTypes.h:
        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toPageVisibilityState):
            - removed PageVisibilityStateUnloaded/kWKPageVisibilityStateUnloaded

2013-12-12  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Build the plugin process against GTK+ 2
        https://bugs.webkit.org/show_bug.cgi?id=116374

        Reviewed by Gustavo Noronha Silva.

        * CMakeLists.txt: Use the new GENERATE_WEBKIT2_MESSAGE_SOURCES macro so we
        can share messaging file generation with the plugin process.
        * PlatformGTK.cmake: Add more files to the plugin process source list. Properly
        generate message sources, add the appropriate include paths, defines, and libraries
        for the plugin process.

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

        Back out r159982
        https://bugs.webkit.org/show_bug.cgi?id=125870
        <rdar://problem/15598485>

        Reviewed by Dan Bernstein.

        Looks like r159982 caused intermittent crashes. Back it out for now.

        * UIProcess/WebContextUserMessageCoders.h:
        (WebKit::WebContextUserMessageEncoder::encode):
        (WebKit::WebContextUserMessageDecoder::decode):
        * UIProcess/WebPageGroup.cpp:
        * UIProcess/WebPageGroup.h:
        (WebKit::WebPageGroup::sendToAllProcessesInGroup):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeWebPage):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::disconnect):
        * UIProcess/WebProcessProxy.h:

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

        Fixed an assertion failure seen running some mixed-content tests.
        https://bugs.webkit.org/show_bug.cgi?id=125862

        Reviewed by Alexey Proskuryakov.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::didDisplayOrRunInsecureContent): Removed an assertion about the URL
        of the main frame when dealing with a notification that could have come from any frame.

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

        [Cocoa] Add properties related to the user agent string
        https://bugs.webkit.org/show_bug.cgi?id=125856

        Reviewed by Anders Carlsson.

        * UIProcess/API/Cocoa/WKBrowsingContextController.h: Declared new properties.
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController applicationNameForUserAgent]): Added accessor.
        (-[WKBrowsingContextController setApplicationNameForUserAgent:]): Ditto.
        (-[WKBrowsingContextController customUserAgent]): Ditto.
        (-[WKBrowsingContextController setCustomUserAgent:]): Ditto.

2013-12-16  Gavin Barraclough  <barraclough@apple.com>

        Add layer hosting mode to ViewState
        https://bugs.webkit.org/show_bug.cgi?id=125803

        Unreviewed - reverting last commit - might have broken tests. :-(

        * Shared/ViewState.h:
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::PageClientImpl):
        (WebKit::PageClientImpl::viewWillMoveToAnotherWindow):
        (WebKit::PageClientImpl::viewLayerHostingMode):
        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::layerHostingModeDidChange):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::viewLayerHostingMode):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::updateViewState):
        (WebKit::WebPageProxy::viewStateDidChange):
        (WebKit::WebPageProxy::initializeCreationParameters):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::layerHostingMode):
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::layerHostingModeDidChange):
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::resumePainting):
        (WebKit::DrawingArea::setLayerHostingMode):
        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::~WebPage):
        (WebKit::WebPage::scalePage):
        (WebKit::WebPage::setDeviceScaleFactor):
        (WebKit::WebPage::setActive):
        (WebKit::WebPage::setViewState):
        (WebKit::WebPage::setWindowIsVisible):
        (WebKit::WebPage::windowAndViewFramesChanged):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::layerHostingMode):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::setLayerHostingMode):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::setLayerHostingMode):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::sendComplexTextInputToPlugin):
        (WebKit::WebPage::setLayerHostingMode):

2013-12-13  Gavin Barraclough  <barraclough@apple.com>

        Add layer hosting mode to ViewState
        https://bugs.webkit.org/show_bug.cgi?id=125803

        Reviewed by Anders Carlsson.

        When the view state of the page is updated the layer mode may also
        change. Currently this is passed by a separate message, remove this
        and fold it into ViewState.
        
        Previously the setLayerHostingMode message would be passed to the
        DrawingArea, which would inform the WebPage. Since the WebPage is
        passed the SetVisibilityState messgae reverse this.

        WebPageProxy had a policy of only updating the hosting mode when
        visible - the value is sticky whilst the view is not visible. Make
        this policy explicit in the PageClientImpl, rather then implicit
        from the flow control.

        * Shared/ViewState.h:
            - Added ViewState::IsLayerWindowServerHosted.
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
            - removed layerHostingMode.
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::PageClientImpl):
        (WebKit::PageClientImpl::isLayerWindowServerHosted):
        (WebKit::PageClientImpl::viewWillMoveToAnotherWindow):
            - viewLayerHostingMode -> isLayerWindowServerHosted, added m_layerHostingMode.
        * UIProcess/DrawingAreaProxy.h:
            - removed layerHostingModeDidChange.
        * UIProcess/PageClient.h:
            - viewLayerHostingMode -> isLayerWindowServerHosted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
            - removed m_layerHostingMode.
        (WebKit::WebPageProxy::updateViewState):
            - added IsLayerWindowServerHosted.
        (WebKit::WebPageProxy::viewStateDidChange):
            - changes to ViewState::IsInWindow implies ViewState::IsLayerWindowServerHosted may change too.
            - remove special handling (separate message) for LayerHostingMode.
        (WebKit::WebPageProxy::initializeCreationParameters):
            - removed m_layerHostingMode.
        * UIProcess/WebPageProxy.h:
            - removed m_layerHostingMode.
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
            - removed layerHostingModeDidChange.
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::setLayerHostingMode):
        (WebKit::DrawingArea::didUpdate):
            - setLayerHostingMode takes a LayerHostingMode.
        * WebProcess/WebPage/DrawingArea.messages.in:
            - SetLayerHostingMode is no longer a message.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
            - removed m_layerHostingMode.
        (WebKit::WebPage::setViewState):
            - handle ViewState::IsLayerWindowServerHosted.
        (WebKit::WebPage::setLayerHostingMode):
            - moved from ~Mac.mm (matching other ViewState setters), calls to DrawingArea.
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::layerHostingMode):
            - layerHostingMode queries m_viewState, removed m_layerHostingMode.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
            - removed setLayerHostingMode.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::setLayerHostingMode):
            - setLayerHostingMode takes a LayerHostingMode, WebPage now calls to DrawingArea.
        * WebProcess/WebPage/mac/WebPageMac.mm:
            - removed setLayerHostingMode.

2013-12-16  Sam Weinig  <sam@webkit.org>

        [Cocoa] Remove unused contentAnchor SPI from WKView
        https://bugs.webkit.org/show_bug.cgi?id=125826

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView setFrameSize:]):
        (-[WKView _setDrawingAreaSize:]):
        (-[WKView _setAcceleratedCompositingModeRootLayer:]):
        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):

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

        WebKit2 View Gestures: Pinching beyond the extremes doesn't animate back to the min/max
        https://bugs.webkit.org/show_bug.cgi?id=125750

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
        Remove some accidentally included commented out code.

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

        WebKit2 View Gestures: Pinching beyond the extremes doesn't animate back to the min/max
        https://bugs.webkit.org/show_bug.cgi?id=125750

        Reviewed by Simon Fraser.

        When you let go of a pinch where you exceeded the maximum or minimum scale,
        the view should animate back to the limit instead of snapping back.

        * UIProcess/mac/ViewGestureController.cpp:
        (WebKit::ViewGestureController::endMagnificationGesture):
        Unscrolling the scaled origin here is wrong; we should send the same
        value for 'origin' for commitTransientZoom that we do for adjustTransientZoom.
        The drawing area can deal with transforming that however it needs to call scalePage().

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::beginTransientZoom):
        Drive-by use WebPage::mainFrameView().

        (WebKit::TiledCoreAnimationDrawingArea::adjustTransientZoom):
        Update the shadow layer's bounds, position, and shadow path while zooming,
        instead of hiding it.

        (WebKit::transientZoomSnapAnimationForKeyPath):
        Create a CABasicAnimation that stays applied to its target when it finishes,
        lasts for a quarter second, and uses the ease-in-ease-out timing function.

        (WebKit::constrainZoomOriginForFrameView):
        When we land a transient zoom, there may be overhang areas (linen, in the case of Mac)
        visible. During the commit animation, we should move the RenderView layer appropriately
        so that the page covers the entire view and there are no overhang areas visible.
        Adapt some code from ScrollableArea to constrain the zoom origin to do so.

        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
        Animate the RenderView layer's transform, and the shadow layer's bounds, position, and path.
        When they complete, apply the zoom via scalePage() and flush the layer tree (otherwise there
        can be a flash between removing the animations and the next flush with the new scale).

        (WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):
        Move the code to land the transient zoom (via scalePage) and to put the shadow back
        in the state WebCore left it out into its own function, so it can be called both from the
        animation completion callback and from the short-circuit in the case where we don't need to animate.

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

        Unreviewed. Fix GTK+ build after r160653.

        Renamed WebData to API::Data

        * GNUmakefile.list.am: Added APIData.cpp and APIData.h
        * UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
        (webkitURISchemeRequestReadCallback):
        * UIProcess/API/gtk/WebKitWebResource.cpp:
        * UIProcess/API/gtk/WebKitWebView.cpp:

2013-12-16  Benjamin Poulain  <bpoulain@apple.com>

        [WK2][iOS] WKView sends unscaled scroll position to WKContentView
        https://bugs.webkit.org/show_bug.cgi?id=125819

        Reviewed by Anders Carlsson.

        WKView was sending untransformed scroll coordinates to WKContentView. The scroll position
        seen by WebKit was wrong when the content is scaled.

        * UIProcess/API/ios/WKView.mm:
        (-[WKView _didScroll]):
        (-[WKView scrollViewDidEndDragging:willDecelerate:]):
        (-[WKView scrollViewDidEndDecelerating:]):
        (-[WKView scrollViewDidScrollToTop:]):

2013-12-16  Brady Eidson  <beidson@apple.com>

        DatabaseProcess: Plumb through messaging for the 4 basic transaction operations
        https://bugs.webkit.org/show_bug.cgi?id=125816

        Reviewed by Alexey Proskuryakov.

        The messaging begins and ends in the WebProcess:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::beginTransaction):
        (WebKit::WebIDBServerConnection::didBeginTransaction):
        (WebKit::WebIDBServerConnection::commitTransaction):
        (WebKit::WebIDBServerConnection::didCommitTransaction):
        (WebKit::WebIDBServerConnection::resetTransaction):
        (WebKit::WebIDBServerConnection::didResetTransaction):
        (WebKit::WebIDBServerConnection::rollbackTransaction):
        (WebKit::WebIDBServerConnection::didRollbackTransaction):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        It travels from the WebProcess to the DatabaseProcess connection:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::beginTransaction):
        (WebKit::DatabaseProcessIDBConnection::commitTransaction):
        (WebKit::DatabaseProcessIDBConnection::resetTransaction):
        (WebKit::DatabaseProcessIDBConnection::rollbackTransaction):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        It travels from the connection to the appropriate UniqueIDBDatabase:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::openTransaction):
        (WebKit::UniqueIDBDatabase::beginTransaction):
        (WebKit::UniqueIDBDatabase::commitTransaction):
        (WebKit::UniqueIDBDatabase::resetTransaction):
        (WebKit::UniqueIDBDatabase::rollbackTransaction):
        (WebKit::UniqueIDBDatabase::postTransactionOperation):
        (WebKit::UniqueIDBDatabase::didCompleteTransactionOperation):
        (WebKit::UniqueIDBDatabase::openBackingStoreTransaction):
        (WebKit::UniqueIDBDatabase::beginBackingStoreTransaction):
        (WebKit::UniqueIDBDatabase::commitBackingStoreTransaction):
        (WebKit::UniqueIDBDatabase::resetBackingStoreTransaction):
        (WebKit::UniqueIDBDatabase::rollbackBackingStoreTransaction):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        The UniqueIDBDatabase object performs the operation with the backing store:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::establishTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::beginTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::commitTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::resetTransaction):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::rollbackTransaction):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        And the SQLite backing store calls the appropriate method on the SQLite transaction:
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp:
        (WebKit::SQLiteIDBTransaction::begin): Stubbed for now.
        (WebKit::SQLiteIDBTransaction::commit): Ditto.
        (WebKit::SQLiteIDBTransaction::reset): Ditto.
        (WebKit::SQLiteIDBTransaction::rollback): Ditto.
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.h:

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

        Unreviewed build fix on EFL port after r160653

        Rename WebData to API::Data

        * CMakeLists.txt: Added APIData.cpp to include list.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::sessionStateData):
        (WebKit::WebPageProxy::restoreFromSessionStateData):
        * UIProcess/soup/WebSoupRequestManagerProxy.cpp:
        (WebKit::WebSoupRequestManagerProxy::didHandleURIRequest):
        (WebKit::WebSoupRequestManagerProxy::didReceiveURIRequestData):
        (WebKit::WebSoupRequestManagerProxy::didReceiveURIRequest):
        * UIProcess/soup/WebSoupRequestManagerProxy.h:

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

        WKView.magnification should include magnification due to the active gesture
        https://bugs.webkit.org/show_bug.cgi?id=125813

        Reviewed by Simon Fraser.

        Make WKView.magnification respect active pinch-zoom gestures.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView magnification]):
        If we have a ViewGestureController, defer to it for the current magnification.

        * UIProcess/mac/ViewGestureController.cpp:
        (WebKit::ViewGestureController::magnification):
        Return either the current pinch-zoom magnification, if we're in the middle of a gesture,
        or the pageScaleFactor, if we're not.

        * UIProcess/mac/ViewGestureController.h:

2013-12-16  Benjamin Poulain  <bpoulain@apple.com>

        [WK2] Remove the constraint that highlight rects must be smaller than the scrollview bounds
        https://bugs.webkit.org/show_bug.cgi?id=125812

        Reviewed by Dan Bernstein.

        Currently, _scrollView is never set on WKInteractionView and all highlight rects are discarded.

        Eventually, the constraint rect should be computed from the useful area of ScrollView and the scale
        of the document. In the meantime, the constraint code is just causing troubles.

        The issue is tracked by <rdar://problem/15673655>.

        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKInteractionView _didGetTapHighlightForRequest:color:WebCore::quads:WebCore::topLeftRadius:WebCore::topRightRadius:WebCore::bottomLeftRadius:WebCore::bottomRightRadius:WebCore::]):

2013-12-16  Simon Fraser  <simon.fraser@apple.com>

        Apply overhang shadow and linen to UI-side layers
        https://bugs.webkit.org/show_bug.cgi?id=125807

        Reviewed by Tim Horton.

        With UI-side compositing, we need to apply the overhang shadow and linen
        background to layers in the UI process. Achieve this by setting a "custom
        appearance" flag on layers that need a shadow or linen background, and
        migrating this flag to the UI process. Static functions on ScrollbarThemeMac
        are exposed to do the actual setting.

        * Shared/mac/RemoteLayerTreePropertyApplier.mm:
        (WebKit::updateCustomAppearance): Use ScrollbarThemeMac to update the
        appearance.
        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
        * Shared/mac/RemoteLayerTreeTransaction.h:
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        (WebKit::dumpChangedLayers):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::setBounds): If the bounds change, also set the
        CustomAppearanceChanged bit so that the UI side updates the shadow bounds
        (done here because the UI side is not stateful).
        (PlatformCALayerRemote::requiresCustomAppearanceUpdateOnBoundsChange):
        (PlatformCALayerRemote::customAppearance):
        (PlatformCALayerRemote::updateCustomAppearance):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:

2013-12-16  Brady Eidson  <beidson@apple.com>

        DatabaseProcess: Implement openTransaction()
        https://bugs.webkit.org/show_bug.cgi?id=125794

        Reviewed by Darin Adler.

        This patch hooks up all of the necessary infrastructure to open a uniquely
        identified transaction in the DatabaseProcess backing store.

        The transaction itself is not yet functional.

        Add openTransaction messaging to the WebProcess side:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::isClosed):
        (WebKit::WebIDBServerConnection::getOrEstablishIDBDatabaseMetadata):
        (WebKit::WebIDBServerConnection::didGetOrEstablishIDBDatabaseMetadata):
        (WebKit::WebIDBServerConnection::openTransaction):
        (WebKit::WebIDBServerConnection::didOpenTransaction):
        (WebKit::WebIDBServerConnection::deleteObjectStore):
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in:

        Add openTransaction messaging to the DatabaseProcess side:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::openTransaction):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

        Add a hashable identifier that represents a connection/transactionID pair:
        * DatabaseProcess/IndexedDB/IDBTransactionIdentifier.h: Added.
        (WebKit::IDBTransactionIdentifier::IDBTransactionIdentifier):
        (WebKit::IDBTransactionIdentifier::isolatedCopy):
        (WebKit::IDBTransactionIdentifier::isEmpty):
        (WebKit::IDBTransactionIdentifier::hash):
        (WebKit::IDBTransactionIdentifier::operator==):
        (WebKit::IDBTransactionIdentifier::isHashTableDeletedValue):
        (WebKit::IDBTransactionIdentifierHash::hash):
        (WebKit::IDBTransactionIdentifierHash::equal):
        (WebKit::IDBTransactionIdentifierHashTraits::isEmptyValue):

        Allow that identifier to be cross-thread copied:
        * Shared/WebCrossThreadCopier.cpp:
        (WebCore::::copy):
        * Shared/WebCrossThreadCopier.h:

        Ask the backing store to open this uniquely identified transaction:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::openTransaction):
        (WebKit::UniqueIDBDatabase::openBackingStoreTransaction):
        (WebKit::UniqueIDBDatabase::didOpenBackingStoreTransaction):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        Add the backing store implementation for opening a transaction:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::~UniqueIDBDatabaseBackingStoreSQLite):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::establishTransaction):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        Object to represent the backing store transaction itself, to be used in future patches:
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp:
        (WebKit::SQLiteIDBTransaction::SQLiteIDBTransaction):
        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.h:
        (WebKit::SQLiteIDBTransaction::create):
        (WebKit::SQLiteIDBTransaction::identifier):

        * WebKit2.xcodeproj/project.pbxproj:

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

        Fix crash when trying to load a null HTML string
        https://bugs.webkit.org/show_bug.cgi?id=125801

        Reviewed by Dan Bernstein.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadString):
        Check that the string is not null before calling is8Bit(). Also, Use the latin1 encoding for
        8-bit strings, since Latin 1 strings are not necessarily valid UTF-8 strings.

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

        [Cocoa] Expose whether the page contains only secure content
        https://bugs.webkit.org/show_bug.cgi?id=125758

        Reviewed by Anders Carlsson.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController hasOnlySecureContent]): Added a getter that calls
        PageLoadState::hasOnlySecureContent.
        * UIProcess/API/Cocoa/WKBrowsingContextControllerPrivate.h: Declared new property.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::commitChanges): Notify observers of hasOnlySecureContent() changes.
        (WebKit::PageLoadState::reset): Reset hasInsecureContent in the uncommitted state.
        (WebKit::PageLoadState::hasOnlySecureContent): Added. Returns true if there is no insecure
        content and the URL is an HTTPS URL.
        (WebKit::PageLoadState::didCommitLoad): Set hasInsecureContent to false in the uncommitted
        state.
        (WebKit::PageLoadState::didDisplayOrRunInsecureContent): Set hasInsecureContent to true in
        the uncommitted state.
        * UIProcess/PageLoadState.h:
        (WebKit::PageLoadState::Data::Data): Added hasInsecureContent member.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didDisplayInsecureContentForFrame): Call
        PageLoadState::didDisplayOrRunInsecureContent and commit the change before calling out to
        the client.
        (WebKit::WebPageProxy::didRunInsecureContentForFrame): Ditto.

2013-12-16  Benjamin Poulain  <bpoulain@apple.com>

        [WK2] The NetworkProcess tries to load SecItemShim.dylib on iOS
        https://bugs.webkit.org/show_bug.cgi?id=125800

        Reviewed by Dan Bernstein.

        Give the NetworkService its own Info.plist configured without the Shim.

        * Configurations/NetworkService.xcconfig:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-OSX.plist: Copied from Source/WebKit2/NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info.plist.
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-iOS.plist: Renamed from Source/WebKit2/NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info.plist.
        * WebKit2.xcodeproj/project.pbxproj:

2013-12-16  Brady Eidson  <beidson@apple.com>

        DatabaseProcess: Fix a few bugs with opening an IDB connection
        https://bugs.webkit.org/show_bug.cgi?id=125798

        Reviewed by Alexey Proskuryakov.

        Database metadata always needs a non-zero database identifier, unique at runtime.

        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
        (WebKit::generateDatabaseId):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getOrEstablishMetadata):

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

        UserData should encode and decode API::Data objects
        https://bugs.webkit.org/show_bug.cgi?id=125799

        Reviewed by Beth Dakin.

        * Shared/APIData.cpp: Added.
        (API::Data::encode):
        (API::Data::decode):
        * Shared/APIData.h:
        * Shared/UserData.cpp:
        (WebKit::UserData::encode):
        (WebKit::UserData::decode):
        * WebKit2.xcodeproj/project.pbxproj:

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

        Rename WebData to API::Data
        https://bugs.webkit.org/show_bug.cgi?id=125797

        Reviewed by Beth Dakin.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (-[WKRemoteObjectEncoder encodeBytes:length:forKey:]):
        (-[WKRemoteObjectDecoder decodeBytesForKey:returnedLength:]):
        * Shared/API/c/WKData.cpp:
        (WKDataGetTypeID):
        (WKDataCreate):
        * Shared/API/c/WKSharedAPICast.h:
        * Shared/API/c/mac/WKWebArchive.cpp:
        (WKWebArchiveCopyData):
        * Shared/API/c/mac/WKWebArchiveResource.cpp:
        (WKWebArchiveResourceCopyData):
        * Shared/APIData.h: Renamed from Source/WebKit2/Shared/WebData.h.
        (API::Data::createWithoutCopying):
        (API::Data::create):
        (API::Data::~Data):
        (API::Data::bytes):
        (API::Data::size):
        (API::Data::dataReference):
        (API::Data::Data):
        (API::Data::fastFreeBytes):
        * Shared/Cocoa/WKNSData.h:
        (WebKit::wrapper):
        * Shared/Cocoa/WKNSData.mm:
        (-[WKNSData dealloc]):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebArchive.cpp:
        (WebKit::WebArchive::create):
        (WebKit::WebArchive::WebArchive):
        (WebKit::WebArchive::data):
        * Shared/WebArchive.h:
        * Shared/WebArchiveResource.cpp:
        (WebKit::WebArchiveResource::create):
        (WebKit::WebArchiveResource::WebArchiveResource):
        (WebKit::WebArchiveResource::data):
        * Shared/WebArchiveResource.h:
        * UIProcess/API/C/WKPage.cpp:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController loadData:MIMEType:textEncodingName:baseURL:userData:]):
        * UIProcess/API/mac/WKPrintingView.mm:
        (pageDidDrawToPDF):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::createData):
        (WebKit::DownloadProxy::didFail):
        (WebKit::DownloadProxy::didCancel):
        * UIProcess/Downloads/DownloadProxy.h:
        (WebKit::DownloadProxy::resumeData):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadWebArchiveData):
        (WebKit::WebPageProxy::dataCallback):
        (WebKit::WebPageProxy::saveDataToFileInDownloadsFolder):
        (WebKit::WebPageProxy::savePDFToFileInDownloadsFolder):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebUIClient.cpp:
        (WebKit::WebUIClient::saveDataToFileInDownloadsFolder):
        * UIProcess/WebUIClient.h:
        * UIProcess/cf/WebPageProxyCF.cpp:
        (WebKit::WebPageProxy::sessionStateData):
        (WebKit::WebPageProxy::restoreFromSessionStateData):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleCreateWKDataFromUInt8Array):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::createWebDataFromUint8Array):
        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
        (WebKit::InjectedBundlePageEditorClient::getPasteboardDataForRange):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::willLoadDataRequest):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadDataImpl):

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

        Fix build warning in files including DrawingAreaProxy.h
        https://bugs.webkit.org/show_bug.cgi?id=125778

        Reviewed by Anders Carlsson.

        Remove unused parameters from method declaration.

        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::adjustTransientZoom):
        (WebKit::DrawingAreaProxy::commitTransientZoom):

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

        Unreviewed. Fix GTK+ build after r160549.

        * GNUmakefile.am: Fix the include paths to make sure we include
        the WebKit2 config.h file when building libWebKit2Platform.

2013-12-16  Sergio Villar Senin  <svillar@igalia.com>

        [GTK] can't build from trunk: WebKitCookieManager: 'WebString' was not declared in this scope
        https://bugs.webkit.org/show_bug.cgi?id=125759

        Reviewed by Carlos Garcia Campos.

        Renamed WebString to API::String after r160608.

        * 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_get_selected_files):
        * UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp:
        (webkit_form_submission_request_get_text_fields):
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkit_web_context_set_web_extensions_directory):
        (webkit_web_context_prefetch_dns):
        * UIProcess/API/gtk/WebKitWebViewGroup.cpp:
        (toAPIArray):
        * WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
        (webkitWebExtensionDidReceiveMessage):

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

        WebKit2 View Gestures: Can't pinch in past the maximum scale
        https://bugs.webkit.org/show_bug.cgi?id=125749

        Reviewed by Anders Carlsson.

        Pinching in past the maximum scale should result in the zoom resisting, but continuing.

        * UIProcess/mac/ViewGestureController.cpp:
        (WebKit::resistanceForDelta):
        Clean up the logic and apply resistance to pinching in past the maximum.

        (WebKit::ViewGestureController::handleMagnificationGesture):
        (WebKit::ViewGestureController::endMagnificationGesture):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):

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

        [Cocoa] Expose the certificate chain for the main frame
        https://bugs.webkit.org/show_bug.cgi?id=125760

        Reviewed by Sam Weinig.

        * UIProcess/API/Cocoa/WKBrowsingContextController.h: Declared certificateChain property.
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController certificateChain]): Added this getter, which calls through
        to WebFrameProxy::certificateInfo.

2013-12-15  Andy Estes  <aestes@apple.com>

        [iOS] Upstream changes to FeatureDefines.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=125742

        Reviewed by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig:

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

        Build fix for 32-bit clients.

        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:

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

        Unreviewed EFL build fix after r160608.

        * UIProcess/WebGrammarDetail.cpp:
        (WebKit::WebGrammarDetail::WebGrammarDetail):
        (WebKit::WebGrammarDetail::guesses):
        * UIProcess/WebTextCheckerClient.cpp:
        (WebKit::WebTextCheckerClient::guessesForWord):

2013-12-14  Yongjun Zhang  <yongjun_zhang@apple.com>

        Add page load delegate for WebProcessPlugInBrowsingContextController.
        https://bugs.webkit.org/show_bug.cgi?id=125697

        Add page load delegate for WebProcessPlugInBrowsingContextController so that a
        WebProcess injected bundle can listen to page load events.

        Reviewed by Sam Weinig.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h: Added.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (didStartProvisionalLoadForFrame):
        (didFinishLoadForFrame):
        (globalObjectIsAvailableForFrame):
        (setUpPageLoaderClient):
        (-[WKWebProcessPlugInBrowserContextController loadDelegate]):
        (-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]):

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

        [iOS] Implement NetworkProcess::allowSpecificHTTPSCertificateForHost
        https://bugs.webkit.org/show_bug.cgi?id=125744

        Reviewed by Sam Weinig.

        * NetworkProcess/ios/NetworkProcessIOS.mm:
        (WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost): Implemented by calling
        +[NSURLRequest setAllowsSpecificHTTPSCertificate:forHost:].

2013-12-13  Sam Weinig  <sam@webkit.org>

        [WK2] Rename WebString to API::String
        https://bugs.webkit.org/show_bug.cgi?id=125726

        Reviewed by Anders Carlsson.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
        * Shared/API/c/WKPluginInformation.cpp:
        * Shared/API/c/WKSharedAPICast.h:
        * Shared/API/c/WKString.cpp:
        * Shared/API/c/cf/WKStringCF.mm:
        * Shared/APIArray.cpp:
        * Shared/APIArray.h:
        * Shared/APIString.h: Copied from Source/WebKit2/Shared/WebString.h.
        * Shared/Cocoa/WKNSString.h:
        * Shared/Cocoa/WKNSString.mm:
        * Shared/ImmutableDictionary.cpp:
        * Shared/Plugins/Netscape/PluginInformation.cpp:
        * Shared/Plugins/Netscape/mac/PluginInformationMac.mm:
        * Shared/UserData.cpp:
        * Shared/UserMessageCoders.h:
        * Shared/WebArchiveResource.h:
        * Shared/WebOpenPanelParameters.cpp:
        * Shared/WebRenderLayer.cpp:
        * Shared/WebRenderObject.cpp:
        * Shared/WebString.h: Removed.
        * UIProcess/API/C/WKCredential.cpp:
        * UIProcess/API/C/WKDatabaseManager.cpp:
        * UIProcess/API/C/WKPage.cpp:
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
        * UIProcess/APINavigationData.h:
        * UIProcess/Authentication/WebCredential.h:
        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
        * UIProcess/Plugins/PlugInAutoStartProvider.cpp:
        * UIProcess/Plugins/WebPluginSiteDataManager.cpp:
        * UIProcess/WebContext.cpp:
        * UIProcess/WebDatabaseManagerProxy.cpp:
        * UIProcess/WebFormClient.cpp:
        * UIProcess/WebLoaderClient.cpp:
        * UIProcess/WebPageGroup.cpp:
        * UIProcess/WebUIClient.cpp:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:

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

        Unify FeatureDefines.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=125741

        Rubber-stamped by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig: Remove a space in
        FEATURE_DEFINES and fix a typo in ENABLE_CSS3_TEXT_DECORATION.

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

        iOS build fix.

        * UIProcess/API/Cocoa/WKBrowsingContextController.h: Declared
        observedRenderingProgressEvents as nonatomic.

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

        [Cocoa] Expose WebContext::allowSpecificHTTPSCertificateForHost
        https://bugs.webkit.org/show_bug.cgi?id=125738

        Reviewed by Mark Rowe.

        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (-[WKProcessGroup _setAllowsSpecificHTTPSCertificate:forHost:]): Added. Calls through to
        WebContext::allowSpecificHTTPSCertificateForHost.
        * UIProcess/API/Cocoa/WKProcessGroupPrivate.h: Declared new method.

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

        [Cocoa] Expose some layout milestones
        https://bugs.webkit.org/show_bug.cgi?id=125721

        Reviewed by Sam Weinig.

        * UIProcess/API/Cocoa/WKBrowsingContextController.h:
        (WKRenderingProgressEvents): Declared new enum.
        (@interface WKBrowsingContextController): Declared new observedRenderingProgressEvents
        property.
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (layoutMilestones): Added helper to translate rendering progress events into layout
        milestones.
        (-[WKBrowsingContextController setObservedRenderingProgressEvents:]): Added this setter.
        Sets the ivar and calls WebPageProxy::listenForLayoutMilestones.
        (renderingProgressEvents): Added helper to translate layout milestones into rendering
        progress events.
        (didLayout): Implemented this WKPageLoaderClient callback by calling the load delegate.
        (setUpPageLoaderClient): Set the above callback in the client structure.
        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h: Declared new delegate method.

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

        Clarify Owners’ role
        https://bugs.webkit.org/show_bug.cgi?id=125739

        Reviewed by Anders Carlsson.

        * Owners: Clarify that a patch authored by an Owner does not have to be reviewed by one, as
        decided during the 2013 WebKit Contributors Meeting.

2013-12-13  Benjamin Poulain  <bpoulain@apple.com>

        [WK2] Fix the build and enable the NetworkProcess by default on iOS
        https://bugs.webkit.org/show_bug.cgi?id=125723

        Reviewed by Sam Weinig.

        * Configurations/WebKit2.xcconfig:
        Fix the list of excluded file to get the processes building.

        * NetworkProcess/ios/NetworkProcessIOS.mm:
        (WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHosAt):
        Update PlatformCertificateInfo->CertificateInfo match the new name after r159647.

        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (-[WKProcessGroup initWithInjectedBundleURL:]):
        Enable the NetworkProcess by default.

        * UIProcess/Network/mac/NetworkProcessProxyMac.mm:
        (WebKit::shouldUseXPC):
        Use the right macro.

        * WebKit2Prefix.h:
        Eanble the flags NETWORK_PROCESS and CUSTOM_PROTOCOLS.

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

        Demoted ActivityAssertion.h to a project header.

        Rubber-stamped by Sam Weinig.

        * WebKit2.xcodeproj/project.pbxproj:

2013-12-13  Sam Weinig  <sam@webkit.org>

        [WK2] Start removing calls to String::characters()
        https://bugs.webkit.org/show_bug.cgi?id=125699

        Reviewed by Anders Carlsson.

        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (CoreIPC::::decodePlatformData):
        * UIProcess/Plugins/PluginInfoStore.cpp:
        (WebKit::PluginInfoStore::defaultLoadPolicyForPlugin):
        (WebKit::PluginInfoStore::findPlugin):
        * UIProcess/Plugins/PluginInfoStore.h:
        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::pluginsDirectories):
        (WebKit::PluginInfoStore::pluginPathsInDirectory):
        * UIProcess/cf/WebPreferencesCF.cpp:
        (WebKit::makeKey):
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::load):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadStringImpl):
        (WebKit::WebPage::loadHTMLString):
        (WebKit::WebPage::loadAlternateHTMLString):
        (WebKit::WebPage::loadPlainTextString):
        (WebKit::WebPage::loadWebArchiveData):
        * WebProcess/WebPage/WebPage.h:

2013-12-13  Enrica Casucci  <enrica@apple.com>

        WK2: Add support for inline candidates on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=125667

        Reviewed by Benjamin Poulain.

        The state required to support inline candidates is cached in the UI process.
        Asynchronous messages are used to set and confirm the composition.

        * Shared/EditorState.cpp:
        (WebKit::EditorState::encode):
        (WebKit::EditorState::decode):
        * Shared/EditorState.h:
        * UIProcess/API/ios/WKInteractionView.mm:
        (-[WKInteractionView textFirstRect]):
        (-[WKInteractionView textLastRect]):
        (-[WKInteractionView hasMarkedText]):
        (-[WKInteractionView markedText]):
        (-[WKInteractionView setMarkedText:selectedRange:]):
        (-[WKInteractionView unmarkText]):
        (-[WKInteractionView _selectionChanged]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::editorStateChanged):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setComposition):
        (WebKit::WebPageProxy::confirmComposition):
        (WebKit::WebPageProxy::notifyRevealedSelection):
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::notifyRevealedSelectionByScrollingFrame):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::editorState):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::setComposition):
        (WebKit::WebPage::confirmComposition):

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

        Fix the build.

        Work around a problem in Functional.h by making the DatabaseProcess destructor public.

        * DatabaseProcess/DatabaseProcess.h:

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

        [wk2] Handle pinch-to-zoom gesture
        https://bugs.webkit.org/show_bug.cgi?id=125604

        Reviewed by Sam Weinig.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView magnifyWithEvent:]):
        (-[WKView endGestureWithEvent:]):
        Forward the event up the chain if we're not going to handle it.

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

        Put classes in the IPC directory in the IPC namespace
        https://bugs.webkit.org/show_bug.cgi?id=125665

        Reviewed by Sam Weinig.

        Also add a hack to config.h that lets us use CoreIPC and IPC interchangeably.
        
        * Platform/IPC/DataReference.cpp:
        * Platform/IPC/DataReference.h:
        * Platform/IPC/MessageSender.cpp:
        * Platform/IPC/MessageSender.h:
        * Platform/IPC/StringReference.cpp:
        * Platform/IPC/StringReference.h:
        * config.h:

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

        [GTK] Add a unit tests to WebKit2 to test node names
        https://bugs.webkit.org/show_bug.cgi?id=125686

        Reviewed by Gustavo Noronha Silva.

        * UIProcess/API/gtk/tests/DOMNodeTest.cpp:
        (WebKitDOMNodeTest::testTagNames):
        (WebKitDOMNodeTest::runTest):
        (registerTests):
        * UIProcess/API/gtk/tests/TestDOMNode.cpp:
        (testWebKitDOMNodeTagNames):
        (beforeAll):

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

        Unreviewed. Further GTK WK2 build fixes after r160504.

        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_get_snapshot):
        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
        (didInitiateLoadForResource):
        (willSendRequestForFrame):
        (didReceiveResponseForResource):
        (didReceiveContentLengthForResource):
        (didFinishLoadForResource):
        (didFailLoadForResource):
        (webkitWebPageDidReceiveMessage):

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

        Unreviewed GTK build fix after r160509.

        * GNUmakefile.list.am: MessageSender.(cpp|h) files were moved to Platform/IPC.

2013-12-13  Dániel Bátyai  <Batyai.Daniel@stud.u-szeged.hu>

        GTK buildfix after r160504.

        Reviewed by Csaba Osztrogonác.

        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkit_web_context_prefetch_dns):

2013-12-12  Yongjun Zhang  <yongjun_zhang@apple.com>

        Need ObjC APIs for some InjectedBundle classes.
        https://bugs.webkit.org/show_bug.cgi?id=125600

        Add ObjC API classes for WebFrame, InjectedBundleScriptWorld, InjectedBundleHitTestResult and InjectedBundleNodeHandle.

        Reviewed by Dan Bernstein.

        * Shared/Cocoa/APIObject.mm: creates API wrapper for WebFrame, InjectedBundleScriptWorld, InjectedBundleHitTestResult
             and InjectedBundleNodeHandle.
        (API::Object::newObject):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/Cocoa: Added.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h: Added.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm: Added.
        (-[WKWebProcessPlugInFrame dealloc]):
        (-[WKWebProcessPlugInFrame jsContextForWorld:]): returns the JSContextRef for a ScriptWorld in frame.
        (-[WKWebProcessPlugInFrame hitTest:]): returns hitTestResult (with API type) from a hitTest.
        (-[WKWebProcessPlugInFrame jsWrapperForNodeHandle:inWorld:]):
        (-[WKWebProcessPlugInFrame API::]):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h: Added.
        (WebKit::wrapper):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h: Added.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm: Added.
        (-[WKWebProcessPlugInHitTestResult dealloc]):
        (-[WKWebProcessPlugInHitTestResult nodeHandle]):
        (-[WKWebProcessPlugInHitTestResult API::]):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h: Added.
        (WebKit::wrapper):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h: Added.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm: Added.
        (-[WKWebProcessPlugInNodeHandle dealloc]):
        (-[WKWebProcessPlugInNodeHandle API::]):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h: Added.
        (WebKit::wrapper):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h: Added.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm: Added.
        (+[WKWebProcessPlugInScriptWorld world]): returns a new isolated world.
        (+[WKWebProcessPlugInScriptWorld normalWorld]): returns the mainThread normal world. 
        (-[WKWebProcessPlugInScriptWorld dealloc]):
        (-[WKWebProcessPlugInScriptWorld API::]):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h: Added.
        (WebKit::wrapper):

2013-12-12  Benjamin Poulain  <bpoulain@apple.com>

        Fix unsafe memory load/store from the argument encoder/decoder affecting ARM
        https://bugs.webkit.org/show_bug.cgi?id=125674

        Reviewed by Darin Adler.

        Depending on the CPU and CPU config, load and store may have to be aligned.
        The argument buffer has no particular alignment which can cause problems.

        In this case, on ARMv7, strd and ldrd can have alignment restriction on 16 bytes.
        The code encoding double and 64 bits integers was causing bugs.

        To avoid problems, the encoders/decoders are modified to just use memcpy. The compiler optimizes
        it away for the right instructions (clang uses two ldr/str in the case of 64bits values on ARMv7).

        * Platform/CoreIPC/ArgumentDecoder.cpp:
        (CoreIPC::decodeValueFromBuffer):
        (CoreIPC::ArgumentDecoder::decode):
        * Platform/CoreIPC/ArgumentEncoder.cpp:
        (CoreIPC::copyValueToBuffer):
        (CoreIPC::ArgumentEncoder::encode):

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

        Build fix for 32-bit.

        There was no reason for these to be CGFloat.

        * UIProcess/mac/ViewGestureController.cpp:

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

        [wk2] Handle pinch-to-zoom gesture
        https://bugs.webkit.org/show_bug.cgi?id=125604

        Reviewed by Simon Fraser.

        Add the concept of a "transient" zoom to DrawingArea, which is a zoom
        that affects the content, but does not cause repaint, as would be used
        for a live pinch-zoom gesture.

        Add ViewGestureController, which currently only handles magnification 
        gestures, and keeps track of the current gesture's scale and origin, and
        forwards relevant events on to the DrawingArea via the transient zoom mechanism.

        * DerivedSources.make:
        Add ViewGestureController to the list of message receivers.

        * UIProcess/API/Cocoa/WKViewPrivate.h:
        Add shouldHandleMagnificationGesture property, which controls whether WKView will
        attempt to handle magnifyWithEvent:.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView waitForAsyncDrawingAreaSizeUpdate]):
        Fix a typo.

        (-[WKView _ensureGestureController]):
        Create our ViewGestureController if it doesn't already exist.

        (-[WKView setAllowsMagnification:]):
        (-[WKView allowsMagnification]):
        SPI to enable/disable handling the magnification gesture.

        (-[WKView setMagnification:centeredAtPoint:]):
        (-[WKView setMagnification:]):
        (-[WKView magnification]):
        Adjust or retrieve the current page scale.
        The variant of setMagnification that does not take an origin uses the view's center.

        (-[WKView magnifyWithEvent:]):
        (-[WKView endGestureWithEvent:]):
        Forward gesture methods to ViewGestureController.

        * UIProcess/mac/ViewGestureController.cpp: Added.
        (WebKit::ViewGestureController::create):
        (WebKit::ViewGestureController::ViewGestureController):
        (WebKit::ViewGestureController::~ViewGestureController):
        (WebKit::resistanceForDelta):
        Compute a resistance factor, which makes it feel "hard" to zoom out past
        scale=1, and accelerates scaling out before you hit scale=1.

        (WebKit::ViewGestureController::scaledMagnificationOrigin):
        Compute the origin of the magnification gesture with the transient zoom unapplied.

        (WebKit::ViewGestureController::handleMagnificationGesture):
        The first magnification gesture will send a message to the WebProcess
        to retrieve the visible content rect. Subsequent gestures will
        hand the new magnification and origin to the DrawingArea to apply.

        (WebKit::ViewGestureController::didBeginTransientZoom):
        Callback from the WebProcess, with the current visible content rect.
        Subsequent magnification gestures will forward the scale and origin to the DrawingArea.
        
        (WebKit::ViewGestureController::endMagnificationGesture):
        Commit the current transient scale as the actual page scale, which will cause
        a repaint and bring in all the tiles.

        (WebKit::ViewGestureController::endActiveGesture):
        If we have an active gesture, call its end function.

        * UIProcess/mac/ViewGestureController.h: Added.
        * UIProcess/mac/ViewGestureController.messages.in: Added.

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

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::beginTransientZoom):
        Call back to ViewGestureController with the visibleContentRect.

        (WebKit::TiledCoreAnimationDrawingArea::adjustTransientZoom):
        Scale and translate the RenderView's PlatformCALayer.
        Reaching into the layer tree like this is scary, we should consider
        teaching RenderLayerCompositor about transient zoom.
        Hide the content shadow layer for now.

        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
        Clear our custom transform on the RenderView's layer, and
        change the actual page scale, causing a repaint.
        Un-hide the shadow layer.

        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::beginTransientZoom):
        (WebKit::DrawingAreaProxy::adjustTransientZoom):
        (WebKit::DrawingAreaProxy::commitTransientZoom):
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::beginTransientZoom):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::beginTransientZoom):
        (WebKit::DrawingArea::adjustTransientZoom):
        (WebKit::DrawingArea::commitTransientZoom):
        * WebProcess/WebPage/DrawingArea.messages.in:
        Generic plumbing for {begin, adjust, end}TransientZoom.

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

        DatabaseProcess IndexedDB: Establish a metadata backing store on disk
        https://bugs.webkit.org/show_bug.cgi?id=125258

        Reviewed by Alexey Proskuryakov, Anders Carlsson, and Tim Horton.

        The DatabaseProcess already has an "Indexed Database path".
        Each SecurityOrigin with indexed databases will have a subdirectory under the path.
        Each indexed database will have a subdirectory under its SecurityOrigin's path.
        Inside that directory will exist (1) metadata database, and 0-N ObjectStore databases.

        This patch establishes the directory structure and the (1) metadata database.

        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::initializeDatabaseProcess): Asynchronously ensure the indexed database directory exists.
        (WebKit::DatabaseProcess::ensureIndexedDatabaseRelativePathExists): Allow anyone to make necessary directories relative to
          the indexed database directory.
        (WebKit::DatabaseProcess::ensurePathExists):
        (WebKit::DatabaseProcess::absoluteIndexedDatabasePathFromDatabaseRelativePath): Instead of exposing the indexed database directory, 
          give DatabaseProcess a method to allow others to compute a path relative to the indexed database directory.
        (WebKit::DatabaseProcess::postDatabaseTask):
        (WebKit::DatabaseProcess::performNextDatabaseTask):
        * DatabaseProcess/DatabaseProcess.h:
        (WebKit::DatabaseProcess::queue):

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata):

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::UniqueIDBDatabase):
        (WebKit::UniqueIDBDatabase::filenameForDatabaseName):
        (WebKit::UniqueIDBDatabase::databaseFilenameIdentifier):
        (WebKit::UniqueIDBDatabase::canShareDatabases):
        (WebKit::UniqueIDBDatabase::shutdown): Method to cleanly shutdown a database, emptying its task and request queues.
        (WebKit::UniqueIDBDatabase::getOrEstablishIDBDatabaseMetadata):
        (WebKit::UniqueIDBDatabase::openBackingStoreAndReadMetadata): To be run on the database work queue, establishes a backing store
          and extracts metadata from it.
        (WebKit::UniqueIDBDatabase::didOpenBackingStoreAndReadMetadata): Callback once metadata from the backing store is ready for use.
        (WebKit::UniqueIDBDatabase::absoluteDatabaseDirectory):
        (WebKit::UniqueIDBDatabase::postMainThreadTask): Add a main thread task for this database.
        (WebKit::UniqueIDBDatabase::performNextMainThreadTask):
        (WebKit::UniqueIDBDatabase::postDatabaseTask): Add a database queue task for this database.
        (WebKit::UniqueIDBDatabase::performNextDatabaseTask):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        Add a virtual backing store interface:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h:
        (WebKit::UniqueIDBDatabaseBackingStore::~UniqueIDBDatabaseBackingStore):

        Add a SQLite implementation of that interface:
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp: Added.
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::UniqueIDBDatabaseBackingStoreSQLite):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::extractExistingMetadata):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::openSQLiteDatabaseAtPath):
        (WebKit::UniqueIDBDatabaseBackingStoreSQLite::getOrEstablishMetadata):
        * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:

        Add a general purpose asynchronous task that does cross thread copying:
        * Shared/AsyncTask.h: Added.
        (WebKit::AsyncTask::~AsyncTask):
        (WebKit::AsyncTask::AsyncTask):
        (WebKit::createAsyncTask):

        Add more isolated copiers and introduce WebKit CrossThreadCopier specializations:
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.cpp:
        (WebKit::UniqueIDBDatabaseIdentifier::isolatedCopy):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.h:

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

        * Shared/WebCrossThreadCopier.cpp:
        (WebCore::::copy):
        * Shared/WebCrossThreadCopier.h:

        * WebKit2.xcodeproj/project.pbxproj:

2013-12-12  Chris Fleizach  <cfleizach@apple.com>

        AX: HANG: virginamerica.com: Pressing the print button on the boarding pass page locks up VoiceOver and Safari.
        https://bugs.webkit.org/show_bug.cgi?id=125603

        Reviewed by Anders Carlsson.

        Allow the print dialog to spin its run loop while accessibility is enabled so that VoiceOver does not hang on the WebProcess.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::print):

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

        Unreviewed CMake build fix after r160509

        * CMakeLists.txt: Apply MessageSender's changes

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

        [Cocoa] Let the load delegate know when the Web process crashes
        https://bugs.webkit.org/show_bug.cgi?id=125660

        Reviewed by Sam Weinig.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (processDidCrash):  Implemented this WKPageLoaderClient callback by calling the load
        delegate.
        (setUpPageLoaderClient): Set the above callback in the client structure
        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegatePrivate.h: Declare new delegate method.

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

        Move MessageSender to Platform/IPC.

        Rubber-stamped by Andreas Kling.

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

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

        WebPageProxy should be a MessageSender
        https://bugs.webkit.org/show_bug.cgi?id=125654

        Reviewed by Sam Weinig.

        * Platform/CoreIPC/MessageSender.cpp:
        (CoreIPC::MessageSender::sendMessage):
        * Platform/CoreIPC/MessageSender.h:
        (CoreIPC::MessageSender::send):
        * Shared/ChildProcessProxy.h:
        * Shared/WebConnection.cpp:
        (WebKit::WebConnection::postMessage):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::sendMessage):
        (WebKit::WebPageProxy::messageSenderConnection):
        (WebKit::WebPageProxy::messageSenderDestinationID):
        * UIProcess/WebPageProxy.h:

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

        Clean up dictionary handling a little
        https://bugs.webkit.org/show_bug.cgi?id=125644

        Reviewed by Dan Bernstein.

        Add a WKDictionaryCreate function as a first step towards eliminating WKMutableDictionaryRef,
        (in the same way we've eliminated WKMutableArrayRef). Also, rename adopt to create and make it take a Map by value
        so we can use std::move where appropriate.

        * Shared/API/c/WKDictionary.cpp:
        (WKDictionaryCreate):
        * Shared/API/c/WKDictionary.h:
        * Shared/Cocoa/WKNSDictionary.mm:
        (-[WKNSDictionary copyWithZone:]):
        * Shared/ImmutableDictionary.cpp:
        (WebKit::ImmutableDictionary::create):
        (WebKit::ImmutableDictionary::ImmutableDictionary):
        * Shared/ImmutableDictionary.h:
        * Shared/MutableDictionary.cpp:
        (WebKit::MutableDictionary::MutableDictionary):
        * Shared/Plugins/Netscape/PluginInformation.cpp:
        (WebKit::createPluginInformationDictionary):
        * Shared/UserData.cpp:
        (WebKit::UserData::transform):
        (WebKit::UserData::decode):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageDecoder::baseDecode):
        * UIProcess/Plugins/PlugInAutoStartProvider.cpp:
        (WebKit::PlugInAutoStartProvider::autoStartOriginsTableCopy):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::pluginInfoStoreDidLoadPlugins):
        * UIProcess/WebDatabaseManagerProxy.cpp:
        (WebKit::WebDatabaseManagerProxy::didGetDatabasesByOrigin):
        * UIProcess/WebFormClient.cpp:
        (WebKit::WebFormClient::willSubmitForm):
        * UIProcess/WebUIClient.cpp:
        (WebKit::WebUIClient::createNewPage):
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
        (WebKit::InjectedBundlePageFormClient::willSendSubmitEvent):
        (WebKit::InjectedBundlePageFormClient::willSubmitForm):

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

        [Cocoa] Navigation action information for policy decisions is missing the original request
        https://bugs.webkit.org/show_bug.cgi?id=125612

        Reviewed by Anders Carlsson.

        * Platform/CoreIPC/HandleMessage.h:
        (CoreIPC::callMemberFunction): Added template with additional message parameter.
        * UIProcess/API/C/WKPagePolicyClientInternal.h: Added. Defines a new version of the client
        interface with a new version of the policy decision callback.
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (setUpPagePolicyClient): Use the new internal version of the client. Pass the original
        request in the action information dictionary under a new key.
        * UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h: Declared new action information
        key.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction): Added originalRequest parameter,
        which is passed to the policy client.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in: Added originalRequest parameter in
        DecidePolicyForNavigationAction.
        * UIProcess/WebPolicyClient.cpp:
        (WebKit::WebPolicyClient::decidePolicyForNavigationAction): Pass the original request to
        the client.
        * UIProcess/WebPolicyClient.h:
        * WebKit2.xcodeproj/project.pbxproj: Added reference to new file.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Send the original
        request from the navigation action to the UI process.

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

        [Autotools] Prepend the WebCore layer archives' names with 'lib'
        https://bugs.webkit.org/show_bug.cgi?id=125627

        Reviewed by Martin Robinson.

        * GNUmakefile.am: Libtool can complain about the WebCore layer archives not being prepended with 'lib'
        when they are used during linking, so the prefix is now added to avoid such issues.

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

        Move CertificateInfo to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=124720

        Reviewed by Darin Adler.

        Based on the patch by Kwang Yul Seo <skyul@company100.net>

        * GNUmakefile.list.am:
        * NetworkProcess/AsynchronousNetworkLoaderClient.cpp:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * PlatformEfl.cmake:
        * PlatformGTK.cmake:
        * Shared/API/c/mac/WKCertificateInfoMac.mm:
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/Authentication/AuthenticationManager.messages.in:
        * Shared/Authentication/mac/AuthenticationManager.mac.mm:
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageDecoder::baseDecode):
        * Shared/WebCertificateInfo.h:
        (WebKit::WebCertificateInfo::create):
        (WebKit::WebCertificateInfo::certificateInfo):
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (CoreIPC::ArgumentCoder<CertificateInfo>::encode):
        (CoreIPC::ArgumentCoder<CertificateInfo>::decode):
        * Shared/soup/CertificateInfo.cpp: Removed.
        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (CoreIPC::ArgumentCoder<CertificateInfo>::encode):
        (CoreIPC::ArgumentCoder<CertificateInfo>::decode):
        * UIProcess/API/gtk/WebKitCertificateInfoPrivate.h:
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_get_tls_info):
        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        (WebKit::AuthenticationChallengeProxy::useCredential):
        * 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:
        * WebProcess/Network/WebResourceLoader.h:
        * WebProcess/Network/WebResourceLoader.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::allowSpecificHTTPSCertificateForHost):

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

        Use of ar T option not supported by older binutils
        https://bugs.webkit.org/show_bug.cgi?id=118732

        Reviewed by Gustavo Noronha Silva.

        * GNUmakefile.am: To support non-thin archives when generating the WebCoreLayerGtk2 archive,
        switch to using the AR_FLAGS variable (which can be overridden) for providing the ar flags for the
        new archive. Non-thin archives also pose the problem as their members are only noted by the basename
        of the member's object file, and not the full path to it. To work around that, all the object files
        under the build directory are listed by their relative paths. The members of various archives then have
        the basenames of their paths grepped against that list, with the found path correlating to the member
        finally added as the new member of the WebCoreLayerGtk2 archive.

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

        [GTK] WebProcess tests are failing with newer glib
        https://bugs.webkit.org/show_bug.cgi?id=125621

        Reviewed by Martin Robinson.

        Newer versions of glib unset the DISPLAY env variable in
        g_test_dbus_up(). The WebProcess needs the DISPLAY variable to
        work, and it's important to keep its value when running the tests
        under Xvfb.

        * UIProcess/API/gtk/tests/WebProcessTestRunner.cpp:
        (WebProcessTestRunner::WebProcessTestRunner): Restore the DISPLAY
        env variable after calling g_test_dbus_up().

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

        [GTK] Make sure unit tests don't use GVFS and dconf
        https://bugs.webkit.org/show_bug.cgi?id=125620

        Reviewed by Martin Robinson.

        They should use the local vfs and the gsettings memory backend.

        * UIProcess/API/gtk/tests/TestMain.cpp:
        (main):

2013-12-11  KyungTae Kim  <ktf.kim@samsung.com>

        [WK2] Build fix after r160464
        https://bugs.webkit.org/show_bug.cgi?id=125615

        Reviewed by Gyuyoung Kim.

        Modify the 2nd parameter for calling WebContext::addMessageReceiver from "this" to "*this"
        because the parameter type is modified from CoreIPC::MessageReceiver* to CoreIPC::MessageReceiver&

        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:
        (WebKit::CoordinatedLayerTreeHostProxy::CoordinatedLayerTreeHostProxy):
        * UIProcess/WebBatteryManagerProxy.cpp:
        (WebKit::WebBatteryManagerProxy::WebBatteryManagerProxy):
        * UIProcess/WebNetworkInfoManagerProxy.cpp:
        (WebKit::WebNetworkInfoManagerProxy::WebNetworkInfoManagerProxy):
        * UIProcess/WebVibrationProxy.cpp:
        (WebKit::WebVibrationProxy::WebVibrationProxy):
        * UIProcess/soup/WebSoupRequestManagerProxy.cpp:
        (WebKit::WebSoupRequestManagerProxy::WebSoupRequestManagerProxy):
        * WebProcess/Battery/WebBatteryManager.cpp:
        (WebKit::WebBatteryManager::WebBatteryManager):
        * WebProcess/NetworkInfo/WebNetworkInfoManager.cpp:
        (WebKit::WebNetworkInfoManager::WebNetworkInfoManager):
        * WebProcess/soup/WebSoupRequestManager.cpp:
        (WebKit::WebSoupRequestManager::WebSoupRequestManager):

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

        MessageReceiverMap should take MessageReceiver objects by reference
        https://bugs.webkit.org/show_bug.cgi?id=125605

        Reviewed by Tim Horton.

        * Platform/CoreIPC/MessageReceiverMap.cpp:
        (CoreIPC::MessageReceiverMap::addMessageReceiver):
        * Platform/CoreIPC/MessageReceiverMap.h:
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::AuthenticationManager):
        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::addMessageReceiver):
        * Shared/ChildProcess.h:
        * Shared/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::addMessageReceiver):
        * Shared/ChildProcessProxy.h:
        * UIProcess/Downloads/DownloadProxyMap.cpp:
        (WebKit::DownloadProxyMap::createDownloadProxy):
        * UIProcess/DrawingAreaProxy.cpp:
        (WebKit::DrawingAreaProxy::DrawingAreaProxy):
        * UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:
        (WebKit::CustomProtocolManagerProxy::CustomProtocolManagerProxy):
        * UIProcess/WebApplicationCacheManagerProxy.cpp:
        (WebKit::WebApplicationCacheManagerProxy::WebApplicationCacheManagerProxy):
        * UIProcess/WebConnectionToWebProcess.cpp:
        (WebKit::WebConnectionToWebProcess::WebConnectionToWebProcess):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::WebContext):
        (WebKit::WebContext::addMessageReceiver):
        * UIProcess/WebContext.h:
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::WebCookieManagerProxy):
        * UIProcess/WebDatabaseManagerProxy.cpp:
        (WebKit::WebDatabaseManagerProxy::WebDatabaseManagerProxy):
        * UIProcess/WebFullScreenManagerProxy.cpp:
        (WebKit::WebFullScreenManagerProxy::WebFullScreenManagerProxy):
        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy):
        * UIProcess/WebIconDatabase.cpp:
        (WebKit::WebIconDatabase::WebIconDatabase):
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::WebInspectorProxy):
        * UIProcess/WebMediaCacheManagerProxy.cpp:
        (WebKit::WebMediaCacheManagerProxy::WebMediaCacheManagerProxy):
        * UIProcess/WebOriginDataManagerProxy.cpp:
        (WebKit::WebOriginDataManagerProxy::WebOriginDataManagerProxy):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::reattachToWebProcess):
        * UIProcess/WebResourceCacheManagerProxy.cpp:
        (WebKit::WebResourceCacheManagerProxy::WebResourceCacheManagerProxy):
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::RemoteLayerTreeHost):
        * WebProcess/ApplicationCache/WebApplicationCacheManager.cpp:
        (WebKit::WebApplicationCacheManager::WebApplicationCacheManager):
        * WebProcess/Cookies/WebCookieManager.cpp:
        (WebKit::WebCookieManager::WebCookieManager):
        * WebProcess/Geolocation/WebGeolocationManager.cpp:
        (WebKit::WebGeolocationManager::WebGeolocationManager):
        * WebProcess/IconDatabase/WebIconDatabaseProxy.cpp:
        (WebKit::WebIconDatabaseProxy::WebIconDatabaseProxy):
        * WebProcess/MediaCache/WebMediaCacheManager.cpp:
        (WebKit::WebMediaCacheManager::WebMediaCacheManager):
        * WebProcess/Notifications/WebNotificationManager.cpp:
        (WebKit::WebNotificationManager::WebNotificationManager):
        * WebProcess/OriginData/WebOriginDataManager.cpp:
        (WebKit::WebOriginDataManager::WebOriginDataManager):
        * WebProcess/ResourceCache/WebResourceCacheManager.cpp:
        (WebKit::WebResourceCacheManager::WebResourceCacheManager):
        * WebProcess/Storage/StorageAreaMap.cpp:
        (WebKit::StorageAreaMap::StorageAreaMap):
        * WebProcess/WebConnectionToUIProcess.cpp:
        (WebKit::WebConnectionToUIProcess::WebConnectionToUIProcess):
        * WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
        (WebKit::WebDatabaseManager::WebDatabaseManager):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):

2013-12-11  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Push More Inspector Required Classes Down into JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=125324

        Reviewed by Timothy Hatcher.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::performJavaScriptURLRequest):
        * WebProcess/WebPage/WebInspector.cpp:
        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebPage.cpp:

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

        Remove platform specific gunk from WebURLRequest and WebURLResponse
        https://bugs.webkit.org/show_bug.cgi?id=125589

        Reviewed by Andreas Kling.

        * Shared/API/c/WKURLRequest.cpp:
        (WKURLRequestCopyURL):
        * Shared/API/c/mac/WKURLRequestNS.mm:
        (WKURLRequestCopyNSURLRequest):
        * Shared/API/c/mac/WKURLResponseNS.mm:
        (WKURLResponseCopyNSURLResponse):
        * Shared/WebURLRequest.cpp:
        * Shared/WebURLRequest.h:
        * Shared/WebURLResponse.h:
        * Shared/mac/WebURLRequestMac.mm: Removed.
        * Shared/mac/WebURLResponseMac.mm: Removed.
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::isMainInspectorPage):
        * WebKit2.xcodeproj/project.pbxproj:

2013-12-11  José Dapena Paz  <jdapena@igalia.com> and Zan Dobersek  <zdobersek@igalia.com>

        [GTK][WK2] Add the WebKitBatteryProvider class
        https://bugs.webkit.org/show_bug.cgi?id=115720

        Reviewed by Martin Robinson.

        This patch adds the WebKitBatteryProvider class which sets up a BatteryProviderUPower instance,
        controlling the provider's activity when instrumented to do so by the WebBatteryManagerProxy
        and relaying the battery status updates from the battery provider to the battery manager.

        * GNUmakefile.list.am: Add the build targets for the new source files.
        * UIProcess/API/gtk/WebKitBatteryProvider.cpp: Added.
        (toBatteryProvider): A helper inline method that casts the client info to the battery provider instance.
        (startUpdatingCallback): Relays the instruction to the WebKitBattery instance.
        (stopUpdatingCallback): Ditto.
        (WebKitBatteryProvider::create):
        (WebKitBatteryProvider::WebKitBatteryProvider): Set up a WKBatteryProvider and set it to the passed-in battery manager.
        (WebKitBatteryProvider::~WebKitBatteryProvider): Force the BatteryProviderUPower to stop updating.
        (WebKitBatteryProvider::startUpdating): Relays the instruction to the BatteryProviderUPower instance.
        (WebKitBatteryProvider::stopUpdating): Ditto.
        (WebKitBatteryProvider::notifyBatteryStatusUnavailable): Update the battery manager with the new status that
        has the default values that are to be used when the implementation cannot determine the battery status (as per
        the Battery Status API specification).
        (WebKitBatteryProvider::notifyBatteryStatusUpdated): Update the battery status.
        * UIProcess/API/gtk/WebKitBatteryProvider.h: Added.
        (WebKitBatteryProvider): Define the WebKitBatteryProvider reference-counted interface that also inherits from the
        BatteryProviderUPowerClient interface.
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (_WebKitWebContextPrivate): Add a WebKitBatteryProvider member variable to the struct.
        (createDefaultWebContext): Create a new battery provider when initializing the default web context.

2013-12-11  José Dapena Paz  <jdapena@igalia.com> and Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Add a UPower-based BatteryProvider
        https://bugs.webkit.org/show_bug.cgi?id=115719

        Reviewed by Martin Robinson.

        * GNUmakefile.am: Link the libwebkit2gtk library against the upower-glib library.

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

        [GTK] Support right-side attachment of the inspector
        https://bugs.webkit.org/show_bug.cgi?id=124126

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/C/gtk/WKInspectorClientGtk.h: add changed attached width callback.
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseAddWebInspector): take attachment side parameter into account when adding the
        inspector view.
        (webkitWebViewBaseContainerRemove): renamed inspectorViewHeight to inspectorViewSize.
        (resizeWebKitWebViewBaseFromAllocation): take attachment side into account when allocating the
        sizes for the inspector view and the inspected view.
        (webkitWebViewBaseSetInspectorViewSize): renamed from webkitWebViewBaseSetInspectorViewHeight.
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/gtk/WebInspectorClientGtk.cpp:
        (WebKit::WebInspectorClientGtk::didChangeAttachedWidth): notify client that view width has changed.
        * UIProcess/gtk/WebInspectorClientGtk.h:
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformAttach): use attachment side for setting the default size
        for the inspector view.
        (WebKit::WebInspectorProxy::platformSetAttachedWindowHeight): use the new generic SetInspectorViewSize.
        (WebKit::WebInspectorProxy::platformSetAttachedWindowWidth): allow setting the inspector view width.

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

        [GTK] Add "enable-mediasource" property to WebKitWebSettings
        https://bugs.webkit.org/show_bug.cgi?id=125566

        Reviewed by Philippe Normand.

        * UIProcess/API/gtk/WebKitSettings.cpp:
        (webKitSettingsSetProperty):
        (webKitSettingsGetProperty):
        (webkit_settings_class_init):
        (webkit_settings_get_enable_mediasource):
        (webkit_settings_set_enable_mediasource):
        * UIProcess/API/gtk/WebKitSettings.h:
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
        * UIProcess/API/gtk/tests/TestWebKitSettings.cpp:
        (testWebKitSettings):

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

        [EFL] Fix build with CONTEXT_MENUS flag set OFF
        https:///bugs.webkit.org/show_bug.cgi?id=125572

        Reviewed by Gyuyoung Kim.

        Fix EFL build by adding necessary guard, also UNUSED_PARAM macros where added.

        * Shared/API/c/WKContextMenuItem.cpp: Added UNUSED_PARAM macros.
        (WKContextMenuItemCreateAsAction):
        (WKContextMenuItemCreateAsCheckableAction):
        (WKContextMenuItemCreateAsSubmenu):
        (WKContextMenuItemGetTag):
        (WKContextMenuItemGetType):
        (WKContextMenuItemCopyTitle):
        (WKContextMenuItemGetEnabled):
        (WKContextMenuItemGetChecked):
        (WKContextMenuCopySubmenuItems):
        (WKContextMenuItemGetUserData):
        (WKContextMenuItemSetUserData):
        * UIProcess/API/C/WKPage.cpp: Ditto.
        (WKPageSetPageContextMenuClient):
        (WKPageSelectContextMenuItem):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: Ditto.
        (WKBundlePageSetContextMenuClient):
        (WKBundlePageClickMenuItem):
        (WKBundlePageCopyContextMenuItems):
        (WKBundlePageCopyContextMenuAtPointInWindow)
        * UIProcess/efl/WebViewEfl.cpp: Guard createContextMenuProxy method.
        * UIProcess/efl/WebViewEfl.h: Ditto.

2013-12-11  Kwang Yul Seo  <skyul@company100.net>

        [WK2][Soup] Implement NetworkProcess::allowSpecificHTTPSCertificateForHost
        https://bugs.webkit.org/show_bug.cgi?id=125557

        Reviewed by Carlos Garcia Campos.

        Do what WebProcess::allowSpecificHTTPSCertificateForHost does.

        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost):

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

        <http://webkit.org/b/125556> WebKit doesn't deal with longer bundle versions correctly
        <rdar://problem/15634192>

        Reviewed by Dan Bernstein.

        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::userVisibleWebKitVersionString): Strip as many leading digits as is necessary to
        bring the major component of the version down to 3 digits.

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

        Unreviewed GTK build fix attempt after r160395 (second)

        * GNUmakefile.list.am:
        Added new files for UserData, APIFrameHandle, APIGeometry and APIPageHandle.

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

        Unreviewed GTK build fix attempt after r160395

        Renamed WebUInt64 to API::UInt64, WebDouble to API::Double, WebBoolean
        to API::Boolean.

        * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:
        (didReceiveWebViewMessageFromInjectedBundle):
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_get_snapshot):
        * UIProcess/API/gtk/WebKitWindowProperties.cpp: Included APINumber.h instead of WebNumber.h
        (webkitWindowPropertiesUpdateFromWebWindowFeatures):
        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
        (didInitiateLoadForResource):
        (willSendRequestForFrame):
        (didReceiveResponseForResource):
        (didReceiveContentLengthForResource):
        (didFinishLoadForResource):
        (didFailLoadForResource):
        (webkitWebPageDidReceiveMessage):

2013-12-10  Dan Bernstein  <mitz@apple.com>

        All observable PageLoadState properties should change in an atomic fashion, with properly nested change notifications
        https://bugs.webkit.org/show_bug.cgi?id=125431

        Reviewed by Anders Carlsson.

        Made PageLoadState maintain two copies of its state data members, one representing the
        committed state and one possibly containing uncommitted changes. When changes are committed,
        change notifications are sent and the uncommitted state is copied into the committed state.
        Changes can be committed explicitly at any time, but are also committed when the last
        outstanding transaction ends. Transactions are RAII objects vended by the PageLoadState.
        Mutating the PageLoadState requires holding a Transaction, which is enforced by making all
        the mutating member functions take a Transaction::Token. Passing a Token also marks the
        PageLoadState as possibly having uncommitted changes.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        Added PageLoadStateObserver::{will,did}ChangeActiveURL overrides that call
        -{will,did}ChangeValueForKey:.

        * UIProcess/PageLoadState.cpp:
        Moved constant from the middle of the file to the beginning and reworded comment.
        (WebKit::PageLoadState::PageLoadState): Added initializers for new member variables, removed
        initialization of members that are not part of Data, which initializes them in its
        constructor.
        (WebKit::PageLoadState::endTransaction): Added. Calles when a Transaction is destructed.
        Decrements the outstanding transaction count, and if it is zero, commits changes.
        (WebKit::PageLoadState::commitChanges): Added. Checks for differences in observable
        properties between the committed state and the uncommitted state, then makes appropriate
        willChange Observer callbacks, then copies the uncommitted state into the committed state,
        then makes appropriate didChange Observer callbacks in reverse order. Also added active URL
        to the set of observable properties.
        (WebKit::PageLoadState::reset): Changed to take a transaction token, act on
        m_uncommittedState, and not make observer callbacks.
        (WebKit::PageLoadState::isLoading): Changed to access m_committedState.
        (WebKit::PageLoadState::activeURL): Changed to call a static function factored out of this.
        (WebKit::PageLoadState::estimatedProgress): Ditto.
        (WebKit::PageLoadState::pendingAPIRequestURL): Changed to access m_committedState.
        (WebKit::PageLoadState::setPendingAPIRequestURL): Changed to take a transaction token, act
        on m_uncommittedState, and not make observer callbacks.
        (WebKit::PageLoadState::clearPendingAPIRequestURL): Ditto.
        (WebKit::PageLoadState::didStartProvisionalLoad): Ditto.
        (WebKit::PageLoadState::didReceiveServerRedirectForProvisionalLoad): Ditto.
        (WebKit::PageLoadState::didFailProvisionalLoad): Ditto.
        (WebKit::PageLoadState::didCommitLoad): Ditto.
        (WebKit::PageLoadState::didFinishLoad): Ditto.
        (WebKit::PageLoadState::didFailLoad): Ditto.
        (WebKit::PageLoadState::didSameDocumentNavigation): Ditto.
        (WebKit::PageLoadState::setUnreachableURL): Ditto.
        (WebKit::PageLoadState::title): Changed to access m_committedState.
        (WebKit::PageLoadState::setTitle): Changed to take a transaction token, act on
        m_uncommittedState, and not make observer callbacks.
        (WebKit::PageLoadState::didStartProgress): Ditto.
        (WebKit::PageLoadState::didChangeProgress): Ditto.
        (WebKit::PageLoadState::didFinishProgress): Ditto.
        * UIProcess/PageLoadState.h:
        (WebKit::PageLoadState::Transaction::Transaction): Added. Calls
        PageLoadState::beginTransaction.
        (WebKit::PageLoadState::Transaction::~Transaction): Added. Calls
        PageLoadState::endTransaction.
        (WebKit::PageLoadState::Transaction::Token::Token): Added. Sets m_mayHaveUncommittedChanges.
        (WebKit::PageLoadState::transaction): Added. Returns a Transaction for this PageLoadState.
        (WebKit::PageLoadState::provisionalURL): Changed to access m_committedState.
        (WebKit::PageLoadState::url): Ditto.
        (WebKit::PageLoadState::unreachableURL): Ditto.
        (WebKit::PageLoadState::beginTransaction): Added. Increments the outstanding transaction
        count.
        (WebKit::PageLoadState::Data::Data): Added. Moved internal state members into this struct
        and made its constructor initialize state and estimatedProgress.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadURL): Changed to create a PageLoadState::Transaction and pass it
        along.
        (WebKit::WebPageProxy::loadURLRequest): Ditto.
        (WebKit::WebPageProxy::loadAlternateHTMLString): Ditto.
        (WebKit::WebPageProxy::reload): Ditto.
        (WebKit::WebPageProxy::goForward): Ditto.
        (WebKit::WebPageProxy::goBack): Ditto.
        (WebKit::WebPageProxy::goToBackForwardItem): Ditto.
        (WebKit::WebPageProxy::receivedPolicyDecision): Ditto.
        (WebKit::WebPageProxy::didStartProgress): Ditto. Also added a call to
        PageLoadState::commitChanges before calling the client, so that the client sees the updated
        state.
        (WebKit::WebPageProxy::didChangeProgress): Ditto.
        (WebKit::WebPageProxy::didFinishProgress): Ditto.
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame): Ditto.
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame): Ditto.
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame): Ditto.
        (WebKit::WebPageProxy::didCommitLoadForFrame): Ditto.
        (WebKit::WebPageProxy::didFinishLoadForFrame): Ditto.
        (WebKit::WebPageProxy::didFailLoadForFrame): Ditto.
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame): Ditto.
        (WebKit::WebPageProxy::didReceiveTitleForFrame): Ditto.
        (WebKit::WebPageProxy::decidePolicyForNavigationAction): Changed to create a
        PageLoadState::Transaction and pass it along.
        (WebKit::WebPageProxy::processDidCrash): Ditto. This addressed a FIXME about the client not
        seeing the state prior to the crash, because now the changes cuased by reset() aren’t
        committed until after the client callback.

        * UIProcess/cf/WebPageProxyCF.cpp:
        (WebKit::WebPageProxy::restoreFromSessionStateData): Changed to create a
        PageLoadState::Transaction and pass it along.

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

        Unreviewed EFL build fix attempt

        * CMakeLists.txt: Added APIGeometry.cpp to source lists.

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

        Move number and geometry classes into the API namespace
        https://bugs.webkit.org/show_bug.cgi?id=125549

        Reviewed by Geoffrey Garen.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        (-[WKRemoteObjectEncoder encodeBool:forKey:]):
        (-[WKRemoteObjectEncoder encodeInt64:forKey:]):
        (-[WKRemoteObjectEncoder encodeDouble:forKey:]):
        (-[WKRemoteObjectDecoder decodeBoolForKey:]):
        (-[WKRemoteObjectDecoder decodeInt64ForKey:]):
        (-[WKRemoteObjectDecoder decodeDoubleForKey:]):
        * Shared/API/c/WKGeometry.cpp:
        (WKSizeGetTypeID):
        (WKPointGetTypeID):
        (WKRectGetTypeID):
        (WKPointCreate):
        (WKSizeCreate):
        (WKRectCreate):
        * Shared/API/c/WKNumber.cpp:
        (WKBooleanGetTypeID):
        (WKBooleanCreate):
        (WKDoubleGetTypeID):
        (WKDoubleCreate):
        (WKUInt64GetTypeID):
        (WKUInt64Create):
        * Shared/API/c/WKSharedAPICast.h:
        * Shared/APIGeometry.cpp:
        (API::Point::encode):
        (API::Point::decode):
        (API::Size::encode):
        (API::Size::decode):
        (API::Rect::encode):
        (API::Rect::decode):
        * Shared/APIGeometry.h:
        (API::Size::create):
        (API::Size::Size):
        (API::Point::create):
        (API::Point::Point):
        (API::Rect::create):
        (API::Rect::Rect):
        * Shared/APINumber.h:
        (API::Number::create):
        (API::Number::decode):
        (API::Number::Number):
        * Shared/APIObject.h:
        * Shared/Plugins/Netscape/PluginInformation.cpp:
        (WebKit::getPluginModuleInformation):
        (WebKit::createPluginInformationDictionary):
        * Shared/Plugins/Netscape/mac/PluginInformationMac.mm:
        (WebKit::getPlatformPluginModuleInformation):
        * Shared/UserData.cpp:
        (WebKit::UserData::encode):
        (WebKit::UserData::decode):
        * Shared/UserMessageCoders.h:
        (WebKit::UserMessageEncoder::baseEncode):
        (WebKit::UserMessageDecoder::baseDecode):
        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
        (WebKit::WebNotificationManagerProxy::populateCopyOfNotificationPermissions):
        (WebKit::WebNotificationManagerProxy::providerDidCloseNotifications):
        * UIProcess/Notifications/WebNotificationProvider.cpp:
        (WebKit::WebNotificationProvider::clearNotifications):
        * UIProcess/Plugins/PlugInAutoStartProvider.cpp:
        (WebKit::PlugInAutoStartProvider::autoStartOriginsTableCopy):
        (WebKit::PlugInAutoStartProvider::setAutoStartOriginsTable):
        * UIProcess/StatisticsRequest.cpp:
        (WebKit::addToDictionaryFromHashMap):
        * UIProcess/WebDatabaseManagerProxy.cpp:
        (WebKit::WebDatabaseManagerProxy::didGetDatabasesByOrigin):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFindStringMatches):
        * UIProcess/WebUIClient.cpp:
        (WebKit::WebUIClient::createNewPage):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::trackedRepaintRects):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:
        (-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]):

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

        Add encode and decode functions to WebNumber
        https://bugs.webkit.org/show_bug.cgi?id=125547

        Reviewed by Beth Dakin.

        * Shared/APINumber.h:
        (WebKit::WebNumber::encode):
        (WebKit::WebNumber::decode):
        * Shared/UserData.cpp:
        (WebKit::UserData::encode):
        (WebKit::UserData::decode):

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

        [EFL] One more WK2 build fix
        https://bugs.webkit.org/show_bug.cgi?id=125544

        API::TypedObject has been renamed to API::ObjectImpl

        Reviewed by Tim Horton.

        * Shared/WebBatteryStatus.h:
        * Shared/WebNetworkInfo.h:
        * 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-12-10  Anders Carlsson  <andersca@apple.com>

        Rename WebNumber.h to APINumber.h
        https://bugs.webkit.org/show_bug.cgi?id=125545

        Reviewed by Beth Dakin.

        * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
        * Shared/API/c/WKNumber.cpp:
        * Shared/API/c/WKSharedAPICast.h:
        * Shared/APINumber.h: Renamed from Source/WebKit2/Shared/WebNumber.h.
        * Shared/Plugins/Netscape/PluginInformation.cpp:
        * Shared/Plugins/Netscape/mac/PluginInformationMac.mm:
        * Shared/UserData.cpp:
        * Shared/UserMessageCoders.h:
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        * UIProcess/Notifications/WebNotificationProvider.cpp:
        * UIProcess/WebUIClient.cpp:
        * WebKit2.xcodeproj/project.pbxproj:

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

        UserData should handle geometry types
        https://bugs.webkit.org/show_bug.cgi?id=125542

        Reviewed by Andreas Kling.

        Rename WebGeometry.h to APIGeometry.h in preparation for moving the classes into the API namespace.
        Add encode/decode functions to geometry classes. Use them in UserData::encode and UserData::decode.

        * Shared/API/c/WKGeometry.cpp:
        * Shared/APIGeometry.cpp: Added.
        * Shared/APIGeometry.h: Renamed from Source/WebKit2/Shared/WebGeometry.h.
        (WebKit::UserData::encode):
        (WebKit::UserData::decode):
        * Shared/UserMessageCoders.h:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:

2013-12-10  Beth Dakin  <bdakin@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=125533
        BackgroundExtendsBeyondPage setting should be switchable per WKView
        -and corresponding-
        <rdar://problem/15571310>

        Reviewed by Anders Carlsson.

        This patch removes the WKPreferences API and adds WKPage API in its place. To 
        ensure that the setting sticks after a crash, it is also now a creation parameter.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetBackgroundExtendsBeyondPage):
        (WKPageBackgroundExtendsBeyondPage):
        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/C/WKPreferences.cpp:
        * UIProcess/API/C/WKPreferencesPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::setBackgroundExtendsBeyondPage):
        (WebKit::WebPageProxy::backgroundExtendsBeyondPage):
        (WebKit::WebPageProxy::initializeCreationParameters):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::setBackgroundExtendsBeyondPage):
        (WebKit::WebPage::updatePreferences):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

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

        Rename API::TypedObject to API::ObjectImpl
        https://bugs.webkit.org/show_bug.cgi?id=125539

        Reviewed by Tim Horton.

        All API::Objects are by definition typed, so ObjectImpl makes more sense as a name.

        * Shared/APIArray.h:
        * Shared/APIFrameHandle.h:
        * Shared/APIObject.h:
        (API::ObjectImpl::~ObjectImpl):
        (API::ObjectImpl::ObjectImpl):
        * Shared/APIPageHandle.h:
        * Shared/ImmutableDictionary.h:
        * 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/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/APINavigationData.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/WebCookieManagerProxy.h:
        * UIProcess/WebDatabaseManagerProxy.h:
        * UIProcess/WebEditCommandProxy.h:
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebGrammarDetail.h:
        * UIProcess/WebIconDatabase.h:
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebKeyValueStorageManager.h:
        * UIProcess/WebMediaCacheManagerProxy.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/WebPage/PageBanner.h:
        * WebProcess/WebPage/PageOverlay.h:
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPageGroupProxy.h:

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

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

        Reviewed by Anders Carlsson.

        * CMakeLists.txt: Added new files UserData.cpp, APIFrameHandle.cpp and APIPageHandle.cpp.

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

        Add more API object types to UserData
        https://bugs.webkit.org/show_bug.cgi?id=125532

        Reviewed by Beth Dakin.

        * Shared/UserData.cpp:
        (WebKit::UserData::transform):
        Handle dictionaries.

        (WebKit::UserData::encode):
        (WebKit::UserData::decode):
        Handle more API::Objects.

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

        More UserData work
        https://bugs.webkit.org/show_bug.cgi?id=125524

        Reviewed by Dan Bernstein.

        * Shared/APIObject.h:
        * Shared/UserData.cpp:
        (WebKit::UserData::transform):
        New helper function that takes an API::Object and returns a new API::Object with all "sub-objects" (arrays etc)
        transformed by calling the transformer.

        * Shared/UserData.h:
        (WebKit::UserData::object):
        New getter.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::apiObjectByConvertingToHandles):
        Helper function that creates a new API::Object graph by converting WebFrameProxy objects to FrameHandles.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::apiObjectByConvertingFromHandles):
        Helper function that creates a new API::Object graph by converting FrameHandles to WebFrame objects.

2013-12-10  Alberto Garcia  <berto@igalia.com>

        [WK2] [SOUP] Allow running the network process with an arbitrary prefix command
        https://bugs.webkit.org/show_bug.cgi?id=125520

        Reviewed by Carlos Garcia Campos.

        Launch the network process using NETWORK_PROCESS_CMD_PREFIX as a
        prefix. Useful for debugging the web process with gdb, valgrind,
        etc.

        * UIProcess/Network/soup/NetworkProcessProxySoup.cpp:
        (WebKit::NetworkProcessProxy::platformGetLaunchOptions):

2013-12-10  Kwang Yul Seo  <skyul@company100.net>

        Allow us to use network process with a single process model
        https://bugs.webkit.org/show_bug.cgi?id=125507

        Reviewed by Brady Eidson.

        Currently, WebContext::sendToNetworkingProcess and
        WebContext::sendToNetworkingProcessRelaunchingIfNecessary assume that
        network process is not used when the given process model is
        ProcessModelSharedSecondaryProcess. This is not consistent with
        WebContext::networkingProcessConnection which returns the networking
        process connection for ProcessModelSharedSecondaryProcess.

        * UIProcess/WebContext.h:
        (WebKit::WebContext::sendToNetworkingProcess):
        (WebKit::WebContext::sendToNetworkingProcessRelaunchingIfNecessary):

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

        Unreviewed EFL build fix

        * CMakeLists.txt: Remove UIProcess/DrawingAreaProxy.cpp.
        * PlatformGTK.cmake: Add the file above.

2013-12-10  Martin Robinson  <mrobinson@igalia.com>

        [GTK] [CMake] Add support for building the WebKit injected bundle
        https://bugs.webkit.org/show_bug.cgi?id=116373

        Reviewed by Gustavo Noronha Silva.

        * PlatformGTK.cmake: Add support for building the InjectedBundle and link the WebKit2
        shared library against the GObject DOM bindings.
        * WebProcess/gtk/WebGtkExtensionManager.h: Properly export symbols used by the InjectedBundle.

2013-12-10  Kwang Yul Seo  <skyul@company100.net>

        [WK2][SOUP] WebContext::setIgnoreTLSErrors should send SetIgnoreTLSErrors to the network process when network process is enabled
        https://bugs.webkit.org/show_bug.cgi?id=125505

        Reviewed by Carlos Garcia Campos.

        This is a follow-up patch for r160355.

        * UIProcess/gtk/WebContextGtk.cpp:
        (WebKit::WebContext::setIgnoreTLSErrors):

2013-12-10  Martin Robinson  <mrobinson@igalia.com>

        Try to fix the EFL build

        * CMakeLists.txt: Remove DrawingAreaImpl.cpp from the global list.
        * PlatformGTK.cmake: Move it to the GTK+ specific list.

2013-12-10  Martin Robinson  <mrobinson@igalia.com>

        Various fixes for the CMake GTK+ build

        Reviewed by Gustavo Noronha.

        * CMakeLists.txt: Update the source lists.
        * PlatformGTK.cmake: Ditto.

2013-12-10  Alberto Garcia  <berto@igalia.com>

        [WK2] [GTK] Enable the network process in the WebContext
        https://bugs.webkit.org/show_bug.cgi?id=125494

        Reviewed by Carlos Garcia Campos.

        This should be initialized using the setUsesNetworkProcess() API.

        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (createDefaultWebContext):
        * UIProcess/gtk/WebContextGtk.cpp:
        (WebKit::WebContext::platformInitializeWebProcess):

2013-12-10  Brian Holt  <brian.holt@samsung.com>

        [WK2][SOUP] initialise the Network Process with ignoreTLSErrors
        https://bugs.webkit.org/show_bug.cgi?id=125490

        ResourceHandleSoup in the Network Process and is not initialised with
        a policy on ignoring TLS errors.  This simply requires that the
        appropriate message is created for the Network Process and the
        parameter created for initialisation.

        Reviewed by Gustavo Noronha Silva.

        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        (WebKit::NetworkProcess::setIgnoreTLSErrors):
        * Shared/Network/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode):
        (WebKit::NetworkProcessCreationParameters::decode):
        * Shared/Network/NetworkProcessCreationParameters.h:
        * UIProcess/gtk/WebContextGtk.cpp:
        (WebKit::WebContext::platformInitializeWebProcess):
        * UIProcess/soup/WebContextSoup.cpp:
        (WebKit::WebContext::platformInitializeNetworkProcess):

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

        Begin working on a UserData class intended to replace UserMessageCoders
        https://bugs.webkit.org/show_bug.cgi?id=125471

        Reviewed by Sam Weinig.

        * Shared/APIFrameHandle.cpp: Added.
        * Shared/APIFrameHandle.h: Added.
        Add a new API::FrameHandle class that represents a frame.

        * Shared/APIObject.h:
        * Shared/APIPageHandle.cpp: Added.
        * Shared/APIPageHandle.h: Added.
        Add a new API::PageHandle class that represents a page.

        * Shared/UserData.cpp: Added.
        (WebKit::UserData::UserData):
        (WebKit::UserData::~UserData):
        (WebKit::UserData::encode):
        (WebKit::UserData::decode):
        * Shared/UserData.h: Added.
        Add a UserData class that can be encoded and decoded. This will be used for sending data
         between the web process and UI process without doing any of the Page -> BundlePage etc conversions.
        * WebKit2.xcodeproj/project.pbxproj:

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

        [EFL][WK2] LayoutTests are broken after r160301
        https://bugs.webkit.org/show_bug.cgi?id=125447

        Reviewed by Darin Adler.

        r160301 moved FullScreenManagerProxyClient logic to WebViewEfl, child class
        of CoordinatedGraphics::WebView, because implementations are EFL specific.
        However, CoordinatedGraphics::WebView creates WebPageProxy in constructor and
        WebPageProxy requires FullScreenManagerProxyClient in constructor.
        So, All WK2/Efl based applications got crashed

        This patch adds virtual methods for FullScreenManagerProxyClient to CoordinatedGraphics::WebView
        so that WebPageProxy can get FullScreenManagerProxyClient instance without
        pure viertual methods.

        * UIProcess/API/C/CoordinatedGraphics/WKView.cpp:
        (WKViewExitFullScreen):
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::fullScreenManagerProxyClient):
        (WebKit::WebView::requestExitFullScreen):
        renamed from exitFullScreen not to conflict with methods of FullScreenManagerProxyClient.
        * UIProcess/CoordinatedGraphics/WebView.h:
        * UIProcess/efl/WebViewEfl.cpp:
        * UIProcess/efl/WebViewEfl.h:

2013-12-09  Sergio Villar Senin  <svillar@igalia.com>

        [WK2] Add UNIX_DOMAIN_SOCKETS specific bits for supporting NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=110093

        Reviewed by Martin Robinson.

        Original patch by Balazs Kelemen <kbalazs@webkit.org>.

        Adds the UNIX specific bits to support connections to the
        NetworkProcess. Since the process of creating the pair of sockets
        is exactly the same as in the PluginProcess, I've decided to
        refactor it in ConnectionUnix::createPlatformConnection(). This
        can be reused later to create a cross-platform solution and remove
        all the ifdefs (see bug 110978).

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
        * Platform/CoreIPC/Connection.h:
        * Platform/CoreIPC/unix/ConnectionUnix.cpp:
        (CoreIPC::Connection::createPlatformConnection):
        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::createWebProcessConnection):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch):
        (WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::ensureNetworkProcessConnection):

2013-12-09  Kwang Yul Seo  <skyul@company100.net>

        [WK2][Soup] Support cache model in NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=118343

        Reviewed by Carlos Garcia Campos.

        Original patch by Kwang Yul Seo <skyul@company100.net> and Csaba Osztrogonác <ossy@webkit.org>.

        Copied cache model code from WebProcess.
        NetworkProcess is configured not to use the WebCore memory cache.

        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::getCacheDiskFreeSize):
        (WebKit::getMemorySize):
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        Initialize soup cache.
        (WebKit::NetworkProcess::platformSetCacheModel):
        Copied code from WebProcess::platformSetCacheModel but removed
        WebCore memory cache initialization because NetworkProcess does not use
        the WebCore memory cache.
        (WebKit::NetworkProcess::clearCacheForAllOrigins):
        Copied code from WebProcess::clearCacheForAllOrigins.
        * NetworkProcess/unix/NetworkProcessMainUnix.cpp:
        Copied initialization code from WebProcessMainGtk.cpp.
        (WebKit::NetworkProcessMain):
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::platformSetCacheModel):
        Don't set the disk cache if NetworkProcess is used.
        (WebKit::WebProcess::platformClearResourceCaches):
        Don't clear the non-existing disk cache. (if NetworkProcess is used)
        (WebKit::WebProcess::platformInitializeWebProcess):
        Don't initialize the disk cache if NetworkProcess is used.

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

        [GTK] run-webkit-tests may DOS the system, specially in debug builds
        https://bugs.webkit.org/show_bug.cgi?id=125436

        Reviewed by Martin Robinson.

        * GNUmakefile.am: use -no-fast-install for WebKitWebProcess and WebKitPluginProcess so
        they do not need to be relinked the first time they are executed in-tree.

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

        [GTK][WK2] Move WebFullScreenManagerProxyGtk logic to PageClientImpl
        https://bugs.webkit.org/show_bug.cgi?id=125440

        Reviewed by Martin Robinson.

        Make PageClientImpl a WebFullScreenManagerProxyClient. This brings the GTK port in line
        with changes in r160296 and fixes the WK2 build for that port.

        * GNUmakefile.list.am:
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::fullScreenManagerProxyClient):
        (WebKit::PageClientImpl::closeFullScreenManager):
        (WebKit::PageClientImpl::isFullScreen):
        (WebKit::PageClientImpl::enterFullScreen):
        (WebKit::PageClientImpl::exitFullScreen):
        (WebKit::PageClientImpl::beganEnterFullScreen):
        (WebKit::PageClientImpl::beganExitFullScreen):
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseCreateWebPage):
        * UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp:

2013-12-09  Brian Holt  <brian.holt@samsung.com>

        [WK2][Gtk] Add support for ENABLE_NETWORK_PROCESS to the build system
        https://bugs.webkit.org/show_bug.cgi?id=118231

        Reviewed by Martin Robinson.

        Original patch by Kwang Yul Seo  <skyul@company100.net>.

        Add source files to the build system and build NetworkProcess executable.

        * GNUmakefile.am:
        * GNUmakefile.list.am:
        * NetworkProcess/unix/NetworkProcessMainUnix.cpp:
        * UIProcess/gtk/WebContextGtk.cpp:
        (WebKit::WebContext::platformInitializeWebProcess):

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

        [EFL][WK2] Move FullScreenManager logic to WebViewEfl
        https://bugs.webkit.org/show_bug.cgi?id=125438

        Reviewed by Gyuyoung Kim.

        This patch fixed build break on EFL port Since r160296.

        * PlatformEfl.cmake: Removed WebFullScreenManagerProxyEfl.cpp.
        * UIProcess/WebFullScreenManagerProxy.cpp: Removed EFL specific code.
        (WebKit::WebFullScreenManagerProxy::WebFullScreenManagerProxy):
        * UIProcess/WebFullScreenManagerProxy.h: Ditto.
        * UIProcess/efl/WebFullScreenManagerProxyEfl.cpp: Removed file and moved logic to WebViewEfl.
        * UIProcess/efl/WebViewEfl.cpp:
        (WebKit::WebViewEfl::WebViewEfl):
        (WebKit::WebViewEfl::setEwkView): Removed call to setWebView().
        (WebKit::WebViewEfl::fullScreenManagerProxyClient):
        (WebKit::WebViewEfl::isFullScreen):
        (WebKit::WebViewEfl::enterFullScreen):
        (WebKit::WebViewEfl::exitFullScreen):
        * UIProcess/efl/WebViewEfl.h:

2013-12-08  Sam Weinig  <sam@webkit.org>

        Remove WebContext::sharedProcessContext()
        https://bugs.webkit.org/show_bug.cgi?id=125437

        Reviewed by Dan Bernstein.

        * UIProcess/API/ios/WKGeolocationProviderIOS.mm:
        * UIProcess/WebContext.cpp:
        * UIProcess/WebContext.h:

2013-12-08  Sam Weinig  <sam@webkit.org>

        Fix the iOS build.

        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        * UIProcess/ios/WebFullScreenManagerProxyIOS.mm: Removed.

2013-12-08  Sam Weinig  <sam@webkit.org>

        [Cocoa] Remove knowledge of the WKView from the WebFullScreenManagerProxy by adding a proper client
        https://bugs.webkit.org/show_bug.cgi?id=125427

        Reviewed by Dan Bernstein.

        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::fullScreenManagerProxyClient):
        (WebKit::PageClientImpl::closeFullScreenManager):
        (WebKit::PageClientImpl::isFullScreen):
        (WebKit::PageClientImpl::enterFullScreen):
        (WebKit::PageClientImpl::exitFullScreen):
        (WebKit::PageClientImpl::beganEnterFullScreen):
        (WebKit::PageClientImpl::beganExitFullScreen):
        Implement the new client.

        * UIProcess/API/mac/WKView.mm:
        Remove call to setWebView() and do some cleanup.

        * UIProcess/API/mac/WKViewInternal.h:
        Convert to property syntax and re-arrange.

        * UIProcess/PageClient.h:
        Expose access to the new client.

        * UIProcess/WebFullScreenManagerProxy.cpp:
        (WebKit::WebFullScreenManagerProxy::create):
        (WebKit::WebFullScreenManagerProxy::WebFullScreenManagerProxy):
        (WebKit::WebFullScreenManagerProxy::invalidate):
        (WebKit::WebFullScreenManagerProxy::close):
        (WebKit::WebFullScreenManagerProxy::isFullScreen):
        (WebKit::WebFullScreenManagerProxy::enterFullScreen):
        (WebKit::WebFullScreenManagerProxy::exitFullScreen):
        (WebKit::WebFullScreenManagerProxy::beganEnterFullScreen):
        (WebKit::WebFullScreenManagerProxy::beganExitFullScreen):
        * UIProcess/WebFullScreenManagerProxy.h:
        Use the new client.

        * UIProcess/WebPageProxy.cpp:
        Pass the new client.

        * UIProcess/mac/WebFullScreenManagerProxyMac.mm:
        Removed. Now goes through the client.

        * WebKit2.xcodeproj/project.pbxproj:
        Remove WebFullScreenManagerProxyMac.mm.

2013-12-07  Sam Weinig  <sam@webkit.org>

        [Cocoa] Remove webProcessPlugInInitialize: from the WKWebProcessPlugIn protocol
        https://bugs.webkit.org/show_bug.cgi?id=125405

        Reviewed by Dan Bernstein.

        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::load):

2013-12-08  Brian Holt  <brian.holt@samsung.com>

        [WK2] Guard include of SecItemShim.h with ENABLE(SEC_ITEM_SHIM)
        https://bugs.webkit.org/show_bug.cgi?id=125415

        Reviewed by Gustavo Noronha Silva.

        * NetworkProcess/NetworkProcess.cpp:
        * UIProcess/Network/NetworkProcessProxy.cpp:

2013-12-07  Sam Weinig  <sam@webkit.org>

        [Cocoa] Make WKWebProcessPlugInController work with WKObject wrapping
        https://bugs.webkit.org/show_bug.cgi?id=125404

        Reviewed by Dan Bernstein.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/mac/ObjCObjectGraphCoders.mm:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
        (-[WKWebProcessPlugInController dealloc]):
        (didCreatePage):
        (willDestroyPage):
        (-[WKWebProcessPlugInController _setPrincipalClassInstance:]):
        (-[WKWebProcessPlugInController API::]):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h:
        (WebKit::wrapper):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInPrivate.h:
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::load):

2013-12-07  Dan Bernstein  <mitz@apple.com>

        [Cocoa] WebData has a generic wrapper
        https://bugs.webkit.org/show_bug.cgi?id=125402

        Reviewed by Sam Weinig.

        Added WKNSData, an NSData subclass that conforms to WKObject and wraps a WebData.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject): Allocate a WKNSData if the API::Object is data.
        * Shared/Cocoa/WKNSData.h: Added.
        (WebKit::wrapper): Added. Returns a WebData’s wrapper as an NSData.
        * Shared/Cocoa/WKNSData.mm: Added.
        (-[WKNSData dealloc]): Calls the WebData destructor.
        (-[WKNSData length]): Added.
        (-[WKNSData bytes]): Added.
        (-[WKNSData copyWithZone:]): Retains self.
        (-[WKNSData _apiObject]): Returns the wrapped WebData.
        * WebKit2.xcodeproj/project.pbxproj: Added references to new files.

2013-12-07  Sam Weinig  <sam@webkit.org>

        [Cocoa] Make WKWebProcessPlugInBrowserContextController work with WKObject wrapping
        https://bugs.webkit.org/show_bug.cgi?id=125403

        Reviewed by Dan Bernstein.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/mac/ObjCObjectGraphCoders.mm:
        (WebKit::InjectedBundleObjCObjectGraphDecoderImpl::decode):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
        (didCreatePage):
        (willDestroyPage):
        (setUpBundleClient):
        (-[WKWebProcessPlugInController _initWithPrincipalClassInstance:bundle:]):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController dealloc]):
        (-[WKWebProcessPlugInBrowserContextController mainFrameDocument]):
        (-[WKWebProcessPlugInBrowserContextController selectedRange]):
        (-[WKWebProcessPlugInBrowserContextController API::]):
        (-[WKWebProcessPlugInBrowserContextController _bundlePageRef]):
        (-[WKWebProcessPlugInBrowserContextController handle]):
        (+[WKWebProcessPlugInBrowserContextController lookUpBrowsingContextFromHandle:]):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerInternal.h:
        (WebKit::wrapper):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h:
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::load):

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

        Fix API test expectation following 160220.

        Rubber-stamped by Martin Robinson.

        * UIProcess/API/gtk/tests/TestWebKitAccessibility.cpp:
        (testAtspiBasicHierarchy): check for ATK_ROLE_DOCUMENT_WEB instead of ATK_ROLE_DOCUMENT_FRAME.

2013-12-06  Enrica Casucci  <enrica@apple.com>

        Make insertText message asynchronous for iOS.

        Reviewed by Benjamin Poulain.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::insertText):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::insertText):

2013-12-05  Jer Noble  <jer.noble@apple.com>

        [MSE] Add a runtime-setting for the MediaSource constructor.
        https://bugs.webkit.org/show_bug.cgi?id=125336

        Reviewed by Eric Carlson.

        Add a private WKPreferences API to control the WebCore mediaSourceEnabled setting.

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

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

        <rdar://problem/15606872> REGRESSION (r160148): Mail throws an exception during launch
        https://bugs.webkit.org/show_bug.cgi?id=125362

        Reviewed by Sam Weinig.

        There were two problems in how WKConnection was made to work with WKObject: first,
        API::Object::newObject() was not updated to allocate the correct wrapper class, and second,
        WebConnection has subclasses with additional data members, which don’t fit in the object
        storage ivar.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject): Changed to allocate a WKConnection of the required size.
        * UIProcess/API/Cocoa/WKConnection.mm:
        Removed _connection ivar.
        (-[WKConnection dealloc]): Changed to use -_connection accessor instead of ivar.
        (-[WKConnection setDelegate:]): Ditto.
        (-[WKConnection sendMessageWithName:body:]): Ditto.
        (-[WKConnection remoteObjectRegistry]): Ditto.
        (-[WKConnection _connection]): Added.
        (-[WKConnection _apiObject]): Changed to return the object in the instance extra storage.

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

        [Cocoa] Add load delegate methods for responding to authentication challenges
        https://bugs.webkit.org/show_bug.cgi?id=125333

        Reviewed by Darin Adler.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject): Allocate a WKNSURLAuthenticationChallenge if the object is an
        AuthenticationChallengeProxy.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (canAuthenticateAgainstProtectionSpaceInFrame): Implemented this WKPageLoaderClient callback
        by calling the load delegate.
        (didReceiveAuthenticationChallengeInFrame): Ditto.
        (setUpPageLoaderClient): Set the above callbacks in the client structure.

        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegatePrivate.h: Added. Declares two new
        delegate methods.

        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.h: Added.
        (WebKit::wrapper): Added. Returns an AuthenticationChallengeProxy’s wrapper as an
        NSURLAuthenticationChallenge.
        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm: Added.
        (-[WKNSURLAuthenticationChallenge _web_createTarget]): Override this WKObject method to
        return a copy of the challenge with the sender set to a shared instance of
        WKNSURLAuthenticationChallengeSender.
        (-[WKNSURLAuthenticationChallenge _web_authenticationChallengeProxy]): Added. Returns the
        wrapped object.
        (-[WKNSURLAuthenticationChallengeSender cancelAuthenticationChallenge:]): Added. Calls
        AuthenticationDecisionListener::cancel.
        (-[WKNSURLAuthenticationChallengeSender continueWithoutCredentialForAuthenticationChallenge:]):
        Added. Calls AuthenticationDecisionListener::useCredential, passing nullptr.
        (-[WKNSURLAuthenticationChallengeSender useCredential:forAuthenticationChallenge:]): Added.
        Calls AuthenticationDecisionListener::useCredential, passing the credential.

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

2013-12-05  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Introduce IMAGE_TYPE_CASTS, and use it
        https://bugs.webkit.org/show_bug.cgi?id=125330

        Reviewed by Ryosuke Niwa.

        As a step to use TYPE_CASTS_BASE, this cl introduce IMAGE_TYPE_CASTS.
        BitmapImage, SVGImage can use it to generate toFoo() type case helper functions.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::pluginSnapshotTimerFired):

2013-12-05  Mark Lam  <mark.lam@apple.com>

        C Loop LLINT layout test regressions.
        https://bugs.webkit.org/show_bug.cgi?id=125314.

        Reviewed by Geoffrey Garen.

        The regression was due to the ENABLE_LLINT_C_LOOP flag not being included
        in the build of the WebKit and WebKit2 components. As a result, some fields
        in JSC::VM were ifdef'ed out in WebCore and JSC, but not in WebKit and
        WebKit2. This resulted in VM::m_initializingObjectClass having 2 different
        offsets depending on whether it is accessed from WebCore and JSC or from
        WebKit and WebKit2, and chaos ensued.

        This issue will manifest when we pass --cloop to build-webkit.
        The fix is simply to add ENABLE_LLINT_C_LOOP to FEATURE_DEFINES for WebKit
        and WebKit2.

        * Configurations/FeatureDefines.xcconfig:

2013-12-04  Oliver Hunt  <oliver@apple.com>

        Refactor static getter function prototype to include thisValue in addition to the base object
        https://bugs.webkit.org/show_bug.cgi?id=124461

        Reviewed by Geoffrey Garen.

        Update the WK2 JSC usage to the new static getter API

        * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
        (WebKit::callMethod):
        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
        (WebKit::callNPJSObject):
        (WebKit::constructWithConstructor):
        (WebKit::JSNPObject::propertyGetter):
        (WebKit::JSNPObject::methodGetter):
        * WebProcess/Plugins/Netscape/JSNPObject.h:
        * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
        (WebKit::NPRuntimeObjectMap::getOrCreateNPObject):
        (WebKit::NPRuntimeObjectMap::finalize):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::frameForContext):
        (WebKit::WebFrame::counterValue):

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

        Unreviewed, rolling out r160133.
        http://trac.webkit.org/changeset/160133
        https://bugs.webkit.org/show_bug.cgi?id=125325

        broke bindings tests on all the bots (Requested by thorton on
        #webkit).

        * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
        (WebKit::callMethod):
        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
        (WebKit::callNPJSObject):
        (WebKit::constructWithConstructor):
        (WebKit::JSNPObject::propertyGetter):
        (WebKit::JSNPObject::methodGetter):
        * WebProcess/Plugins/Netscape/JSNPObject.h:
        * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
        (WebKit::NPRuntimeObjectMap::getOrCreateNPObject):
        (WebKit::NPRuntimeObjectMap::finalize):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::counterValue):

2013-12-05  Chris Fleizach  <cfleizach@apple.com>

        AX: Seed: safari extension installation crashes safari under voice over and freezes voice over
        https://bugs.webkit.org/show_bug.cgi?id=125308

        Reviewed by Anders Carlsson.

        Much like Javascript alerts, we need to allow accessibility clients to continue to interact with the WebProcess thread
        when using dispatchDecidePolicyResponses.

        * Platform/CoreIPC/MessageSender.h:
        (CoreIPC::MessageSender::sendSync):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):

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

        "Use Selection for Find" doesn't work in PDF viewed in Safari
        https://bugs.webkit.org/show_bug.cgi?id=125319
        <rdar://problem/15486983>

        Reviewed by Tim Horton.

        * WebProcess/Plugins/PDF/PDFPlugin.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (-[WKPDFLayerControllerDelegate writeItemsToPasteboard:withTypes:]):
        Pass NSGeneralPboard to writeItemsToPasteboard.

        (WebKit::PDFPlugin::handleEditingCommand):
        Handle takeFindStringFromSelection by getting the current selection string and writing it to the find pasteboard.

        (WebKit::PDFPlugin::isEditingCommandEnabled):
        Handle takeFindStringFromSelection.

        (WebKit::PDFPlugin::writeItemsToPasteboard):
        Update this to take a pasteboard name.

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

        WebKit2 API should use weak ownership for delegate properties rather than assign
        https://bugs.webkit.org/show_bug.cgi?id=125316
        <rdar://problem/15560614>

        Reviewed by Dan Bernstein.

        Use WeakObjCPtr for the delegates.

        * UIProcess/API/Cocoa/WKBrowsingContextController.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (didStartProvisionalLoadForFrame):
        (didReceiveServerRedirectForProvisionalLoadForFrame):
        (didFailProvisionalLoadWithErrorForFrame):
        (didCommitLoadForFrame):
        (didFinishLoadForFrame):
        (didFailLoadWithErrorForFrame):
        (didStartProgress):
        (didChangeProgress):
        (didFinishProgress):
        (didChangeBackForwardList):
        (setUpPagePolicyClient):
        (-[WKBrowsingContextController loadDelegate]):
        (-[WKBrowsingContextController setLoadDelegate:]):
        (-[WKBrowsingContextController policyDelegate]):
        (-[WKBrowsingContextController setPolicyDelegate:]):
        (-[WKBrowsingContextController historyDelegate]):
        (-[WKBrowsingContextController setHistoryDelegate:]):
        * UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h:
        * UIProcess/API/Cocoa/WKConnection.mm:
        (didReceiveMessage):
        (didClose):
        (-[WKConnection delegate]):
        (-[WKConnection setDelegate:]):
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (didCreateConnection):
        (getInjectedBundleInitializationUserData):
        (didNavigateWithNavigationData):
        (didPerformClientRedirect):
        (didPerformServerRedirect):
        (didUpdateHistoryTitle):
        (-[WKProcessGroup delegate]):
        (-[WKProcessGroup setDelegate:]):

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

        Tweak WeakObjCPtr
        https://bugs.webkit.org/show_bug.cgi?id=125311

        Reviewed by Darin Adler.

        Make it possible to use WeakObjCPtr with pointer types such as id. Also,
        add a getAutoreleased() member that will load the weak pointer and retain + autorelease it.

        * Shared/mac/WeakObjCPtr.h:
        (WebKit::WeakObjCPtr::WeakObjCPtr):
        (WebKit::WeakObjCPtr::operator=):
        (WebKit::WeakObjCPtr::get):
        (WebKit::WeakObjCPtr::getAutoreleased):

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

        [GTK][WK2] Clean up WorkQueueGtk
        https://bugs.webkit.org/show_bug.cgi?id=125177

        Reviewed by Carlos Garcia Campos.

        Clean up the GTK implementation of the WorkQueue class a bit.
        - registerSocketEventHandler doesn't take a condition argument anymore -- G_IO_IN was the only condition ever passed into
        that method so that is now the hard-coded default.
        - Clean up the declarations of GTK-specific bits in the WorkQueue header file. SocketEventSourceIterator typedef is removed
        and auto will be used instead.
        - WorkQueue::dispatchOnTermination and WorkQueue::SocketEventSource::performWorkOnTermination methods were unused and now removed.
        - WorkQueue::SocketEventSource doesn't expect a GIO condition anymore, and WorkQueue::SocketEventSource::checkCondition is removed.
        G_IO_IN condition was the only one used is now hard-coded into the check in WorkQueue::SocketEventSource::eventCallback.
        - Removed an unnecessary non-null assertion for the heap-allocated SocketEventSource.
        - Removed a technically duplicated assertion that a file descriptor is already present in the event sources map. Moved the
        assertion before the HashMap::find() call.
        - Removed two unnecessary assertions that non-null values are being returned by g_idle_source_new() and g_timeout_source_new().
        Both functions are guaranteed to return non-null values.

        * Platform/CoreIPC/unix/ConnectionUnix.cpp:
        (CoreIPC::Connection::open):
        * Platform/WorkQueue.h:
        * Platform/gtk/WorkQueueGtk.cpp:
        (WorkQueue::SocketEventSource::SocketEventSource):
        (WorkQueue::SocketEventSource::eventCallback):
        (WorkQueue::registerSocketEventHandler):
        (WorkQueue::unregisterSocketEventHandler):
        (WorkQueue::dispatch):
        (WorkQueue::dispatchAfterDelay):

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

        Report error when #else is used in message receiver generator's input.
        https://bugs.webkit.org/show_bug.cgi?id=124147

        Reviewed by Csaba Osztrogonác.

        * Scripts/webkit2/messages_unittest.py:
        (UnsupportedPrecompilerDirectiveTest):
        (UnsupportedPrecompilerDirectiveTest.test_error_at_else):
        (UnsupportedPrecompilerDirectiveTest.test_error_at_elif):
        * Scripts/webkit2/parser.py:
        (parse):

2013-12-04  Sam Weinig  <sam@webkit.org>

        [Cocoa] Make WKConnection work with WKObject wrapping
        https://bugs.webkit.org/show_bug.cgi?id=125266

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKConnection.mm:
        (-[WKConnection dealloc]):
        (didReceiveMessage):
        (didClose):
        (setUpClient):
        (-[WKConnection delegate]):
        (-[WKConnection setDelegate:]):
        (-[WKConnection sendMessageWithName:body:]):
        (-[WKConnection remoteObjectRegistry]):
        (-[WKConnection API::]):
        * UIProcess/API/Cocoa/WKConnectionInternal.h:
        (WebKit::wrapper):
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (didCreateConnection):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
        (-[WKWebProcessPlugInController _initWithPrincipalClassInstance:bundleRef:]):
        (-[WKWebProcessPlugInController connection]):
        (-[WKWebProcessPlugInController _bundleRef]):

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

        Add a WeakObjCPtr class
        https://bugs.webkit.org/show_bug.cgi?id=125267

        Reviewed by Geoffrey Garen.

        WeakObjCPtr is a zeroing weak reference class template that will be used for delegates.

        * Shared/mac/WeakObjCPtr.h: Added.
        (WebKit::WeakObjCPtr::WeakObjCPtr):
        (WebKit::WeakObjCPtr::~WeakObjCPtr):
        (WebKit::WeakObjCPtr::operator=):
        (WebKit::WeakObjCPtr::get):
        * WebKit2.xcodeproj/project.pbxproj:

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

        Unreviewed EFL build fix after r160135

        * CMakeLists.txt: Added rendering/line to include lists.

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

        Make the estimatedProgress property observable using KVO
        https://bugs.webkit.org/show_bug.cgi?id=125259

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::PageLoadState):
        (WebKit::PageLoadState::reset):
        (WebKit::PageLoadState::activeURL):
        (WebKit::PageLoadState::estimatedProgress):
        (WebKit::PageLoadState::setPendingAPIRequestURL):
        (WebKit::PageLoadState::clearPendingAPIRequestURL):
        (WebKit::PageLoadState::didStartProgress):
        (WebKit::PageLoadState::didChangeProgress):
        (WebKit::PageLoadState::didFinishProgress):
        * UIProcess/PageLoadState.h:
        Move m_estimatedProgress to the page load state and call the observers when it changes.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::estimatedProgress):
        (WebKit::WebPageProxy::didStartProgress):
        (WebKit::WebPageProxy::didChangeProgress):
        (WebKit::WebPageProxy::didFinishProgress):
        (WebKit::WebPageProxy::resetState):
        Call through to m_pageLoadState.

        * UIProcess/WebPageProxy.h:

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

        [WK2] Including SecItemShim.h should be guarded by ENABLE(SEC_ITEM_SHIM)
        https://bugs.webkit.org/show_bug.cgi?id=125255

        Reviewed by Anders Carlsson.

        * UIProcess/WebProcessProxy.cpp:
        * WebProcess/WebProcess.cpp:

2013-12-04  Oliver Hunt  <oliver@apple.com>

        Refactor static getter function prototype to include thisValue in addition to the base object
        https://bugs.webkit.org/show_bug.cgi?id=124461

        Reviewed by Geoffrey Garen.

        Update the WK2 JSC usage to the new static getter API

        * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
        (WebKit::callMethod):
        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
        (WebKit::callNPJSObject):
        (WebKit::constructWithConstructor):
        (WebKit::JSNPObject::propertyGetter):
        (WebKit::JSNPObject::methodGetter):
        * WebProcess/Plugins/Netscape/JSNPObject.h:
        * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
        (WebKit::NPRuntimeObjectMap::getOrCreateNPObject):
        (WebKit::NPRuntimeObjectMap::finalize):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::frameForContext):
        (WebKit::WebFrame::counterValue):

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

        Add a loading property to WKBrowsingContextController
        https://bugs.webkit.org/show_bug.cgi?id=125256

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKBrowsingContextController.h:
        Add loading property.

        * UIProcess/API/Cocoa/WKBrowsingContextConteroller.mm:
        Implement willChangeIsLoading and didChangeIsLoading and call the relevant KVO methods.

        (-[WKBrowsingContextController isLoading]):
        Call through to the PageLoadState.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::reset):
        Use setState.

        (WebKit::PageLoadState::isLoading):
        Call isLoadingState.

        (WebKit::PageLoadState::didStartProvisionalLoad):
        Use setState.

        (WebKit::PageLoadState::didFailProvisionalLoad):
        Use setState.

        (WebKit::PageLoadState::didCommitLoad):
        Use setState.

        (WebKit::PageLoadState::didFinishLoad):
        Use setState.

        (WebKit::PageLoadState::didFailLoad):
        Use setState.

        (WebKit::PageLoadState::isLoadingState):
        Helper function for determining whether a state is a loading state or not.

        (WebKit::PageLoadState::setState):
        If setting the state will cause "isLoading" to change, call out to the observers.

        * UIProcess/PageLoadState.h:

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

        [EFL][GTK][WK2] Remove unnecessary reinterpret_casts when setting API clients
        https://bugs.webkit.org/show_bug.cgi?id=125231

        Reviewed by Anders Carlsson.

        After r159988, WKClients have to be instantiated with a specific
        version of that client and its Base field has to used when setting it.
        Eg:

            WKFullScreenClientV0 wkClient = {
                {
                    0, // version
                    this, // clientInfo
                },
                    willEnterFullScreen,
                    willExitFullScreen
            };
            WKViewSetFullScreenClientGtk(this, &wkClient.base);

        So we don't need the reinterpret_casts introduced in r160075.

        * UIProcess/API/gtk/WebKitFullscreenClient.cpp:
        (attachFullScreenClientToView): reinterpret_cast<WKFooClientBase*>(&client) -> &client.base
        * UIProcess/API/gtk/WebKitRequestManagerClient.cpp:
        (attachRequestManagerClientToContext): Ditto.
        * UIProcess/API/gtk/WebKitTextChecker.cpp:
        (WebKitTextChecker::WebKitTextChecker): Ditto.
        * UIProcess/API/gtk/WebKitWebInspector.cpp:
        (webkitWebInspectorCreate): Ditto.
        * UIProcess/efl/BatteryProvider.cpp:
        (BatteryProvider::BatteryProvider): Ditto.
        * UIProcess/efl/NetworkInfoProvider.cpp:
        (NetworkInfoProvider::NetworkInfoProvider): Ditto.
        * UIProcess/efl/PageUIClientEfl.cpp:
        (WebKit::PageUIClientEfl::PageUIClientEfl): Ditto.
        * UIProcess/efl/RequestManagerClientEfl.cpp:
        (WebKit::RequestManagerClientEfl::RequestManagerClientEfl): Ditto.
        * UIProcess/efl/TextCheckerClientEfl.cpp:
        (TextCheckerClientEfl::TextCheckerClientEfl): Ditto.
        * UIProcess/efl/VibrationClientEfl.cpp:
        (VibrationClientEfl::VibrationClientEfl): Ditto.
        * UIProcess/efl/ViewClientEfl.cpp:
        (WebKit::ViewClientEfl::ViewClientEfl): Ditto.

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

        [GTK][WK2] Fix build after r160104
        https://bugs.webkit.org/show_bug.cgi?id=125240

        Reviewed by Anders Carlsson.

        Using specific version of API client when instantiating them.
        Applied that same change to the following files:

        * UIProcess/API/gtk/WebKitContextMenuClient.cpp:
        * UIProcess/API/gtk/WebKitCookieManager.cpp:
        * UIProcess/API/gtk/WebKitDownloadClient.cpp:
        * UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
        * UIProcess/API/gtk/WebKitFindController.cpp:
        * UIProcess/API/gtk/WebKitFormClient.cpp:
        * UIProcess/API/gtk/WebKitGeolocationProvider.cpp:
        * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:
        * UIProcess/API/gtk/WebKitLoaderClient.cpp:
        * UIProcess/API/gtk/WebKitPolicyClient.cpp:
        * UIProcess/API/gtk/WebKitUIClient.cpp:
        * WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:

2013-12-04  Dan Bernstein  <mitz@apple.com>

        Fixed the 32-bit Mac build.

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

2013-12-04  Dan Bernstein  <mitz@apple.com>

        [Mac] When NSError user info is missing NSErrorPeerCertificateChainKey, ArgumentCoder should extract it from NSURLErrorFailingURLPeerTrustErrorKey
        https://bugs.webkit.org/show_bug.cgi?id=125251

        Reviewed by Anders Carlsson.

        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (CoreIPC::::encodePlatformData): If the user info doesn’t include
        NSURLErrorFailingURLPeerTrustErrorKey, copy the peer certificate chain from the peer trust
        under NSURLErrorFailingURLPeerTrustErrorKey. On the decoding side, it will appear under the
        NSURLErrorFailingURLPeerTrustErrorKey, because a trust object can’t be fully serialized.

2013-12-04  Dan Bernstein  <mitz@apple.com>

        Replace USE(SECURITY_FRAMEWORK) with finer-grained defines
        https://bugs.webkit.org/show_bug.cgi?id=125242

        Reviewed by Sam Weinig.

        * Configurations/WebKit2.xcconfig: Removed “-framework Security” from the linker flags, now
        that it’s included in the target’s Link Binary with Libraries build phase.
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeConnection): Changed to use ENABLE(SEC_ITEM_SHIM).
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess): Ditto.
        * Shared/Authentication/AuthenticationManager.cpp: Changed to use HAVE(SEC_IDENTITY).
        * Shared/Authentication/mac/AuthenticationManager.mac.mm: Ditto.
        * Shared/cf/ArgumentCodersCF.cpp:
        (CoreIPC::typeFromCFTypeRef): Removed use of USE(SECURITY_FRAMEWORK) since all CF platforms
        use it. Added HAVE(SEC_KEYCHAIN) where needed.
        (CoreIPC::encode): Ditto.
        (CoreIPC::decode): Ditto.
        * Shared/cf/ArgumentCodersCF.h: Ditto.
        * Shared/mac/SecItemShim.cpp: Chanegd to use ENABLE(SEC_ITEM_SHIM).
        * Shared/mac/SecItemShim.h: Ditto.
        * Shared/mac/SecItemShim.messages.in: Ditto.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::connectionWillOpen): Ditto.
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::connectionWillOpen): Ditto.
        * UIProcess/mac/SecItemShimProxy.cpp: Ditto.
        * UIProcess/mac/SecItemShimProxy.h: Ditto,
        * UIProcess/mac/SecItemShimProxy.messages.in: Ditto.
        * WebKit2.xcodeproj/project.pbxproj: Link Security.framework unconditionally.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeConnection): Changed to use ENABLE(SEC_ITEM_SHIM).
        * WebProcess/mac/WebProcessMac.mm:
        (WebKit::WebProcess::platformInitializeProcess): Ditto.
        * config.h: Defined ENABLE_SEC_ITEM_SHIM.

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

        [EFL][WK2] Buildfix after r160104
        https://bugs.webkit.org/show_bug.cgi?id=125233

        Reviewed by Anders Carlsson.

        * UIProcess/API/efl/ewk_cookie_manager.cpp:
        (EwkCookieManager::EwkCookieManager):
        * UIProcess/API/efl/ewk_favicon_database.cpp:
        (EwkFaviconDatabase::EwkFaviconDatabase):
        * UIProcess/efl/ContextHistoryClientEfl.cpp:
        (WebKit::ContextHistoryClientEfl::ContextHistoryClientEfl):
        * UIProcess/efl/ContextMenuClientEfl.cpp:
        (ContextMenuClientEfl::ContextMenuClientEfl):
        * UIProcess/efl/DownloadManagerEfl.cpp:
        (WebKit::DownloadManagerEfl::DownloadManagerEfl):
        * UIProcess/efl/FindClientEfl.cpp:
        (WebKit::FindClientEfl::FindClientEfl):
        * UIProcess/efl/FormClientEfl.cpp:
        (WebKit::FormClientEfl::FormClientEfl):
        * UIProcess/efl/PageLoadClientEfl.cpp:
        (WebKit::PageLoadClientEfl::PageLoadClientEfl):
        * UIProcess/efl/PagePolicyClientEfl.cpp:
        (WebKit::PagePolicyClientEfl::PagePolicyClientEfl):
        * UIProcess/efl/PageUIClientEfl.cpp:
        (WebKit::PageUIClientEfl::PageUIClientEfl):

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

        Deprecate all unversioned client structs in favor of having explicit versioned structs
        https://bugs.webkit.org/show_bug.cgi?id=125203

        Reviewed by Dan Bernstein.

        Deprecate all the "current version" enums and unversioned client structs.

        * Shared/API/c/WKConnectionRef.cpp:
        (WKConnectionSetConnectionClient):
        * Shared/API/c/WKConnectionRef.h:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetClient):
        (WKContextSetInjectedBundleClient):
        (WKContextSetHistoryClient):
        (WKContextSetDownloadClient):
        (WKContextSetConnectionClient):
        * UIProcess/API/C/WKContext.h:
        * UIProcess/API/C/WKContextConnectionClient.h:
        * UIProcess/API/C/WKContextDownloadClient.h:
        * UIProcess/API/C/WKContextHistoryClient.h:
        * UIProcess/API/C/WKContextInjectedBundleClient.h:
        * UIProcess/API/C/WKCookieManager.cpp:
        (WKCookieManagerSetClient):
        * UIProcess/API/C/WKCookieManager.h:
        * UIProcess/API/C/WKDatabaseManager.cpp:
        (WKDatabaseManagerSetClient):
        * UIProcess/API/C/WKDatabaseManager.h:
        * UIProcess/API/C/WKGeolocationManager.cpp:
        (WKGeolocationManagerSetProvider):
        * UIProcess/API/C/WKGeolocationManager.h:
        * UIProcess/API/C/WKIconDatabase.cpp:
        (WKIconDatabaseSetIconDatabaseClient):
        * UIProcess/API/C/WKIconDatabase.h:
        * UIProcess/API/C/WKOriginDataManager.cpp:
        (WKOriginDataManagerSetChangeClient):
        * UIProcess/API/C/WKOriginDataManager.h:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageContextMenuClient):
        (WKPageSetPageFindClient):
        (WKPageSetPageFindMatchesClient):
        (WKPageSetPageFormClient):
        (WKPageSetPageLoaderClient):
        (WKPageSetPagePolicyClient):
        (WKPageSetPageUIClient):
        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/C/WKPageContextMenuClient.h:
        * UIProcess/API/C/WKPageFindClient.h:
        * UIProcess/API/C/WKPageFindMatchesClient.h:
        * UIProcess/API/C/WKPageFormClient.h:
        * UIProcess/API/C/WKPageLoaderClient.h:
        * UIProcess/API/C/WKPagePolicyClient.h:
        * UIProcess/API/C/WKPageUIClient.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (setUpPagePolicyClient):
        * UIProcess/API/Cocoa/WKConnection.mm:
        (setUpClient):
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (setUpConnectionClient):
        (setUpInectedBundleClient):
        (setUpHistoryClient):
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::createInspectorPage):
        * UIProcess/WebUIClient.cpp:
        (WebKit::WebUIClient::createNewPage):
        (WebKit::WebUIClient::mouseDidMoveOverElement):
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleSetClient):
        * WebProcess/InjectedBundle/API/c/WKBundle.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageSetContextMenuClient):
        (WKBundlePageSetEditorClient):
        (WKBundlePageSetFormClient):
        (WKBundlePageSetPageLoaderClient):
        (WKBundlePageSetResourceLoadClient):
        (WKBundlePageSetPolicyClient):
        (WKBundlePageSetUIClient):
        (WKBundlePageSetFullScreenClient):
        (WKBundlePageSetDiagnosticLoggingClient):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageBanner.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageContextMenuClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageDiagnosticLoggingClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageEditorClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageFormClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageFullScreenClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
        (WKBundlePageOverlayCreate):
        (WKBundlePageOverlaySetAccessibilityClient):
        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePagePolicyClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageResourceLoadClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageUIClient.h:
        * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.h:
        * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm:
        (WKBundlePageBannerCreateBannerWithCALayer):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
        (setUpBundleClient):

2013-12-04  Tamas Gergely  <tgergely.u-szeged@partner.samsung.com>

        Fix build warnings in DownloadAuthenticationClient.cpp
        https://bugs.webkit.org/show_bug.cgi?id=124920

        Reviewed by Alexey Proskuryakov.

        Fix unused parameter warnings in DownloadAuthenticationClient.cpp

        * Shared/Downloads/DownloadAuthenticationClient.cpp:
        (WebKit::DownloadAuthenticationClient::receivedCredential):
        (WebKit::DownloadAuthenticationClient::receivedRequestToContinueWithoutCredential):
        (WebKit::DownloadAuthenticationClient::receivedCancellation):

2013-12-03  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Push Remote Inspector debugging connection management into JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=124613

        Reviewed by Timothy Hatcher.

        * WebProcess/WebCoreSupport/WebInspectorClient.h:
        * WebProcess/WebPage/WebInspector.cpp:
        Updated includes.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        * WebProcess/com.apple.WebProcess.sb.in:
        Allow the WebProcess to access the "com.apple.webinspector" named
        XPC service to expose its WebCore::Page's to remote debuggers.

2013-12-04  David Farler  <dfarler@apple.com>

        Use All-iOS target when building WK2 on iOS
        <rdar://problem/15574494>

        Reviewed by David Kilzer.

        * Makefile:
        Add -target All-iOS to OTHER_OPTIONS if iphoneos or iphonesimulator
        is in the SDKROOT make option.

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

        [EFL][WK2] Fix build after API::Client changes
        https://bugs.webkit.org/show_bug.cgi?id=125206

        Reviewed by Csaba Osztrogonác.

        * CMakeLists.txt:
        * GNUmakefile.list.am:
        * Shared/API/c/WKDeclarationSpecifiers.h:
        * UIProcess/API/C/CoordinatedGraphics/WKView.cpp:
        (WKViewSetViewClient):
        * UIProcess/API/C/CoordinatedGraphics/WKView.h:
        * UIProcess/API/C/WKBatteryManager.cpp:
        (WKBatteryManagerSetProvider):
        * UIProcess/API/C/WKBatteryManager.h:
        * UIProcess/API/C/WKNetworkInfoManager.cpp:
        (WKNetworkInfoManagerSetProvider):
        * UIProcess/API/C/WKNetworkInfoManager.h:
        * UIProcess/API/C/WKTextChecker.cpp:
        (WKTextCheckerSetClient):
        * UIProcess/API/C/WKTextChecker.h:
        * UIProcess/API/C/WKVibration.cpp:
        (WKVibrationSetProvider):
        * UIProcess/API/C/WKVibration.h:
        * UIProcess/API/C/efl/WKPageEfl.cpp:
        (WKPageSetUIPopupMenuClient):
        * UIProcess/API/C/efl/WKPageEfl.h:
        * UIProcess/API/C/gtk/WKFullScreenClientGtk.cpp:
        (WKViewSetFullScreenClientGtk):
        * UIProcess/API/C/gtk/WKFullScreenClientGtk.h:
        * UIProcess/API/C/gtk/WKInspectorClientGtk.cpp:
        (WKInspectorSetInspectorClientGtk):
        * UIProcess/API/C/gtk/WKInspectorClientGtk.h:
        * UIProcess/API/C/soup/WKSoupRequestManager.cpp:
        (WKSoupRequestManagerSetClient):
        * UIProcess/API/C/soup/WKSoupRequestManager.h:
        * UIProcess/API/gtk/WebKitFullscreenClient.cpp:
        (attachFullScreenClientToView):
        * UIProcess/API/gtk/WebKitRequestManagerClient.cpp:
        (attachRequestManagerClientToContext):
        * UIProcess/API/gtk/WebKitTextChecker.cpp:
        (WebKitTextChecker::WebKitTextChecker):
        * UIProcess/API/gtk/WebKitWebInspector.cpp:
        (webkitWebInspectorCreate):
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseInitializeFullScreenClient):
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::initializeClient):
        * UIProcess/CoordinatedGraphics/WebView.h:
        * UIProcess/CoordinatedGraphics/WebViewClient.cpp:
        (WebKit::WebViewClient::viewNeedsDisplay):
        (WebKit::WebViewClient::didChangeContentsSize):
        (WebKit::WebViewClient::webProcessCrashed):
        (WebKit::WebViewClient::webProcessDidRelaunch):
        (WebKit::WebViewClient::didChangeContentsPosition):
        (WebKit::WebViewClient::didRenderFrame):
        (WebKit::WebViewClient::didCompletePageTransition):
        (WebKit::WebViewClient::didChangeViewportAttributes):
        (WebKit::WebViewClient::didChangeTooltip):
        (WebKit::WebViewClient::didFindZoomableArea):
        (WebKit::WebViewClient::doneWithTouchEvent):
        * UIProcess/CoordinatedGraphics/WebViewClient.h:
        * UIProcess/WebBatteryManagerProxy.cpp:
        (WebKit::WebBatteryManagerProxy::initializeProvider):
        * UIProcess/WebBatteryManagerProxy.h:
        * UIProcess/WebBatteryProvider.cpp:
        (WebKit::WebBatteryProvider::startUpdating):
        (WebKit::WebBatteryProvider::stopUpdating):
        * UIProcess/WebBatteryProvider.h:
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebNetworkInfoManagerProxy.cpp:
        (WebKit::WebNetworkInfoManagerProxy::initializeProvider):
        * UIProcess/WebNetworkInfoManagerProxy.h:
        * UIProcess/WebNetworkInfoProvider.cpp:
        (WebKit::WebNetworkInfoProvider::startUpdating):
        (WebKit::WebNetworkInfoProvider::stopUpdating):
        (WebKit::WebNetworkInfoProvider::bandwidth):
        (WebKit::WebNetworkInfoProvider::isMetered):
        * UIProcess/WebNetworkInfoProvider.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebTextChecker.cpp:
        (WebKit::WebTextChecker::setClient):
        * UIProcess/WebTextChecker.h:
        * UIProcess/WebTextCheckerClient.cpp:
        (WebKit::WebTextCheckerClient::continuousSpellCheckingAllowed):
        (WebKit::WebTextCheckerClient::continuousSpellCheckingEnabled):
        (WebKit::WebTextCheckerClient::setContinuousSpellCheckingEnabled):
        (WebKit::WebTextCheckerClient::grammarCheckingEnabled):
        (WebKit::WebTextCheckerClient::setGrammarCheckingEnabled):
        (WebKit::WebTextCheckerClient::uniqueSpellDocumentTag):
        (WebKit::WebTextCheckerClient::closeSpellDocumentWithTag):
        (WebKit::WebTextCheckerClient::checkSpellingOfString):
        (WebKit::WebTextCheckerClient::checkGrammarOfString):
        (WebKit::WebTextCheckerClient::spellingUIIsShowing):
        (WebKit::WebTextCheckerClient::toggleSpellingUIIsShowing):
        (WebKit::WebTextCheckerClient::updateSpellingUIWithMisspelledWord):
        (WebKit::WebTextCheckerClient::updateSpellingUIWithGrammarString):
        (WebKit::WebTextCheckerClient::guessesForWord):
        (WebKit::WebTextCheckerClient::learnWord):
        (WebKit::WebTextCheckerClient::ignoreWord):
        * UIProcess/WebTextCheckerClient.h:
        * UIProcess/WebVibrationProvider.cpp:
        (WebKit::WebVibrationProvider::vibrate):
        (WebKit::WebVibrationProvider::cancelVibration):
        * UIProcess/WebVibrationProvider.h:
        * UIProcess/WebVibrationProxy.cpp:
        (WebKit::WebVibrationProxy::initializeProvider):
        * UIProcess/WebVibrationProxy.h:
        * UIProcess/efl/BatteryProvider.cpp:
        (BatteryProvider::BatteryProvider):
        * UIProcess/efl/NetworkInfoProvider.cpp:
        (NetworkInfoProvider::NetworkInfoProvider):
        * UIProcess/efl/PageUIClientEfl.cpp:
        (WebKit::PageUIClientEfl::PageUIClientEfl):
        * UIProcess/efl/RequestManagerClientEfl.cpp:
        (WebKit::RequestManagerClientEfl::RequestManagerClientEfl):
        * UIProcess/efl/TextCheckerClientEfl.cpp:
        (TextCheckerClientEfl::TextCheckerClientEfl):
        * UIProcess/efl/VibrationClientEfl.cpp:
        (VibrationClientEfl::VibrationClientEfl):
        * UIProcess/efl/ViewClientEfl.cpp:
        (WebKit::ViewClientEfl::ViewClientEfl):
        * UIProcess/efl/WebPageProxyEfl.cpp:
        (WebKit::WebPageProxy::initializeUIPopupMenuClient):
        * UIProcess/efl/WebUIPopupMenuClient.cpp:
        (WebUIPopupMenuClient::showPopupMenu):
        (WebUIPopupMenuClient::hidePopupMenu):
        * UIProcess/efl/WebUIPopupMenuClient.h:
        * UIProcess/gtk/WebFullScreenClientGtk.cpp:
        (WebKit::WebFullScreenClientGtk::willEnterFullScreen):
        (WebKit::WebFullScreenClientGtk::willExitFullScreen):
        * UIProcess/gtk/WebFullScreenClientGtk.h:
        * UIProcess/gtk/WebInspectorClientGtk.cpp:
        (WebKit::WebInspectorClientGtk::openWindow):
        (WebKit::WebInspectorClientGtk::didClose):
        (WebKit::WebInspectorClientGtk::bringToFront):
        (WebKit::WebInspectorClientGtk::inspectedURLChanged):
        (WebKit::WebInspectorClientGtk::attach):
        (WebKit::WebInspectorClientGtk::detach):
        (WebKit::WebInspectorClientGtk::didChangeAttachedHeight):
        * UIProcess/gtk/WebInspectorClientGtk.h:
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::initializeInspectorClientGtk):
        * UIProcess/soup/WebSoupRequestManagerClient.cpp:
        (WebKit::WebSoupRequestManagerClient::didReceiveURIRequest):
        (WebKit::WebSoupRequestManagerClient::didFailToLoadURIRequest):
        * UIProcess/soup/WebSoupRequestManagerClient.h:
        * UIProcess/soup/WebSoupRequestManagerProxy.cpp:
        (WebKit::WebSoupRequestManagerProxy::initializeClient):
        * UIProcess/soup/WebSoupRequestManagerProxy.h:

2013-12-03  Simon Fraser  <simon.fraser@apple.com>

        WKContentView should just use InitializeWebKit2()
        https://bugs.webkit.org/show_bug.cgi?id=125209

        Reviewed by Benjamin Poulain.
        
        Rather than calling an motley selection of init fuctions,
        WKContentView should use the one true init function, InitializeWebKit2().

        * Shared/WebKit2Initialize.cpp: On iOS, we need to call InitWebCoreThreadSystemInterface().
        (WebKit::InitializeWebKit2):
        * UIProcess/API/ios/WKContentView.mm: Remove various unused #imports.
        (-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):

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

        PageOverlayClientImpl should be a proper API::Client
        https://bugs.webkit.org/show_bug.cgi?id=125199

        Reviewed by Tim Horton.

        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
        (PageOverlayClientImpl::PageOverlayClientImpl):
        (PageOverlayClientImpl::setAccessibilityClient):
        (PageOverlayClientImpl::willMoveToWebPage):
        (PageOverlayClientImpl::didMoveToWebPage):
        (PageOverlayClientImpl::drawRect):
        (PageOverlayClientImpl::mouseEvent):
        (PageOverlayClientImpl::copyAccessibilityAttributeValue):
        (PageOverlayClientImpl::copyAccessibilityAttributeNames):
        (WKBundlePageOverlayCreate):
        (WKBundlePageOverlaySetAccessibilityClient):

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

        Initialize the PageBannerClientImpl API::Client
        https://bugs.webkit.org/show_bug.cgi?id=125198

        Reviewed by Tim Horton.

        * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm:
        (PageBannerClientImpl::PageBannerClientImpl):

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

        Remote Layer Tree: Force repaint
        https://bugs.webkit.org/show_bug.cgi?id=125189
        <rdar://problem/15541789>

        Reviewed by Anders Carlsson.

        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::forceRepaint):
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::forceRepaint):
        Implement WebProcess-synchronous force repaint.
        We don't need the async variant because it is only needed
        to synchronize with the WebProcess-side threaded scrolling
        tree, which is not a component of the remote layer tree model.
        The UI process will not handle the callback until after
        RemoteLayerTreeHost::commit is complete, ensuring that the commit
        is actually done.

2013-12-03  Simon Fraser  <simon.fraser@apple.com>

        Remove some iOS-related documentScale code
        https://bugs.webkit.org/show_bug.cgi?id=125194

        Reviewed by Enrica Casucci.
        
        Upstream bits of removal of Frame::documentScale on iOS.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences): Whitespace.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::didFinishZooming): Don't call setDocumentScale().
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h: Remove minimumDocumentScale().
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: Ditto.
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): We delegate page scaling on iOS.
        (WebKit::RemoteLayerTreeDrawingArea::setDeviceScaleFactor):

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

        PageBannerClientImpl should be an API::Client
        https://bugs.webkit.org/show_bug.cgi?id=125190

        Reviewed by Tim Horton.

        * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm:
        (PageBannerClientImpl::PageBannerClientImpl):
        (PageBannerClientImpl::~PageBannerClientImpl):
        (WKBundlePageBannerCreateBannerWithCALayer):

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

        [Cocoa] Give two load delegate methods more conventional names
        https://bugs.webkit.org/show_bug.cgi?id=125183

        Reviewed by Anders Carlsson.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (didFailProvisionalLoadWithErrorForFrame): Updated for rename.
        (didFailLoadWithErrorForFrame): Ditto.
        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h: Renamed
        -browsingContextControllerDidFailProvisionalLoad:withError: to
        -browsingContextController:didFailProvisionalLoadWithError: and
        -browsingContextControllerDidFailLoad:withError: to
        -browsingContextController:didFailLoadWithError:.

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

        Deprecate WKNotificationProvider
        https://bugs.webkit.org/show_bug.cgi?id=125178

        Reviewed by Sam Weinig.

        * Shared/API/c/WKDeclarationSpecifiers.h:
        Add WK_DEPRECATED and WK_ENUM_DEPRECATED macros so we can things as deprecated.

        * UIProcess/API/C/WKNotificationManager.cpp:
        (WKNotificationManagerSetProvider):
        * UIProcess/API/C/WKNotificationManager.h:
        WKNotificationManagerSetProvider now takes a WKNotificationProviderBase.

        * UIProcess/API/C/WKNotificationProvider.h:
        Deprecate WKNotificationProvider and kWKNotificationProviderCurrentVersion.

2013-12-03  Brady Eidson  <beidson@apple.com>

        Indexed Database work should be done on a non-main queue
        https://bugs.webkit.org/show_bug.cgi?id=125127

        Reviewed by Darin Adler.

        Add a non-main WorkQueue to the DatabaseProcess:
        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::DatabaseProcess):
        (WebKit::DatabaseProcess::queue):
        * DatabaseProcess/DatabaseProcess.h:

        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::UniqueIDBDatabase):
        (WebKit::UniqueIDBDatabase::enqueueDatabaseQueueRequest): Add an AsyncRequest to the deque then schedule performing
          the requests on the background WorkQueue.
        (WebKit::UniqueIDBDatabase::processDatabaseRequestQueue): Processes all enqueued database requests.
        (WebKit::UniqueIDBDatabase::getOrEstablishIDBDatabaseMetadata): Renamed from getIDBDatabaseMetadata().
        (WebKit::UniqueIDBDatabase::getOrEstablishIDBDatabaseMetadataInternal): For doing i/o on a background queue/thread.
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:

        Add a creator that takes the abort handler as an argument, and rename requestedCompleted()
        to completeRequest(). This makes more sense in more situations:
        * Shared/AsyncRequest.cpp:
        (WebKit::AsyncRequest::AsyncRequest):
        (WebKit::AsyncRequest::setAbortHandler):
        * Shared/AsyncRequest.h:
        (WebKit::AsyncRequest::completeRequest):

        Update for the AsyncRequest rename:
        * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
        (WebKit::WebIDBServerConnection::didGetOrEstablishIDBDatabaseMetadata):

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata):

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

        Remove TiledCoreAnimationDrawingArea(Proxy)IOS
        https://bugs.webkit.org/show_bug.cgi?id=125176

        Reviewed by Simon Fraser.

        Remove unused code.

        * UIProcess/API/ios/WKContentView.mm:
        * UIProcess/ios/TiledCoreAnimationDrawingAreaProxyIOS.h: Removed.
        * UIProcess/ios/TiledCoreAnimationDrawingAreaProxyIOS.mm: Removed.
        * Shared/DrawingAreaInfo.h:
        * WebProcess/WebPage/DrawingArea.cpp:
        (WebKit::DrawingArea::create):
        * WebProcess/WebPage/ios/TiledCoreAnimationDrawingAreaIOS.h: Removed.
        * WebProcess/WebPage/ios/TiledCoreAnimationDrawingAreaIOS.mm: Removed.

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

        Remove old WebKit::APIClient cruft
        https://bugs.webkit.org/show_bug.cgi?id=125173

        Reviewed by Antti Koivisto.

        * Shared/APIClient.h:
        * Shared/APIClientTraits.cpp: Removed.
        * Shared/APIClientTraits.h: Removed.
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:

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

        Build fix for iOS.

        Reviewed by Tim Horton.

        * Shared/WebCoreArgumentCoders.cpp: Added missing header.

2013-12-03  Tamas Gergely  <tgergely.u-szeged@partner.samsung.com>

        Remove WTF:: prefix from types in messages.in files.
        https://bugs.webkit.org/show_bug.cgi?id=124578

        Reviewed by Anders Carlsson.

        The WTF:: prefixes are removed from the messages.in files, and the
        messages.py now handles unprefixed non-template WTF classes (only
        the WTF::String class is used currently). Tests are also updated.

        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.messages.in:
        * PluginProcess/PluginControllerProxy.messages.in:
        * PluginProcess/PluginProcess.messages.in:
        * Scripts/webkit2/messages.py:
        (forward_declarations_and_headers):
        (class_template_headers):
        (argument_coder_headers_for_type):
        * Scripts/webkit2/messages_unittest.py:
        (std):
        * Shared/Network/CustomProtocols/CustomProtocolManager.messages.in:
        * UIProcess/Downloads/DownloadProxy.messages.in:
        * UIProcess/Plugins/PluginProcessProxy.messages.in:
        * UIProcess/Storage/StorageManager.messages.in:
        * UIProcess/WebContext.messages.in:
        * UIProcess/WebCookieManagerProxy.messages.in:
        * UIProcess/WebDatabaseManagerProxy.messages.in:
        * UIProcess/WebIconDatabase.messages.in:
        * UIProcess/WebInspectorProxy.messages.in:
        * UIProcess/WebMediaCacheManagerProxy.messages.in:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/Cookies/WebCookieManager.messages.in:
        * WebProcess/Geolocation/WebGeolocationManager.messages.in:
        * WebProcess/MediaCache/WebMediaCacheManager.messages.in:
        * WebProcess/Notifications/WebNotificationManager.messages.in:
        * WebProcess/Plugins/PluginProcessConnection.messages.in:
        * WebProcess/Plugins/PluginProxy.messages.in:
        * WebProcess/Storage/StorageAreaMap.messages.in:
        * WebProcess/WebCoreSupport/WebDatabaseManager.messages.in:
        * WebProcess/WebPage/WebInspector.messages.in:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/soup/WebSoupRequestManager.messages.in:

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

        Tweak build fixes.

        * Shared/APIClient.h:

2013-12-03  Laszlo Vidacs  <lac@inf.u-szeged.hu>

        Fix EFL build error in WK2 (159965)
        https://bugs.webkit.org/show_bug.cgi?id=125153

        Reviewed by Darin Adler.

        * Shared/APIClient.h:

2013-12-03  Seokju Kwon  <seokju@webkit.org>

        Debug build fix : Add '<algorithm>' for 'std::is_sorted' after r159965.
        https://bugs.webkit.org/show_bug.cgi?id=125140

        Reviewed by Csaba Osztrogonác.

        * Shared/APIClient.h:

2013-12-03  Peter Molnar  <pmolnar.u-szeged@partner.samsung.com>

        Fix EFL build with INPUT_TYPE_COLOR disabled.
        https://bugs.webkit.org/show_bug.cgi?id=125065

        Reviewed by Zoltan Herczeg.

        * UIProcess/API/efl/ewk_color_picker.cpp:

2013-12-03  Dariusz Frankiewicz  <d.frankiewic@samsung.com>

        Add spatial navigation API in EFL port
        https://bugs.webkit.org/show_bug.cgi?id=125002

        Reviewed by Gyuyoung Kim.

        API enables capability of turning on and off spatial navigation
        and check is state.
        Spatial navigation is the ability to navigate between focusable
        elements by keyboard.

        * UIProcess/API/efl/ewk_settings.cpp:
        (ewk_settings_spatial_navigation_enabled_set):
        (ewk_settings_spatial_navigation_enabled_get):
        * UIProcess/API/efl/ewk_settings.h:
        * UIProcess/API/efl/tests/test_ewk2_settings.cpp:
        (TEST_F):

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

        Build fixes for GCC-using ports after r159965 and later
        https://bugs.webkit.org/show_bug.cgi?id=125136

        GCC doesn't process API::ClientTraits template instantiations unless they're done
        inside the API namespace.

        * Shared/WebConnectionClient.h:
        * UIProcess/Notifications/WebNotificationProvider.h:
        * UIProcess/WebContextClient.h:
        * UIProcess/WebContextConnectionClient.h:
        * UIProcess/WebContextInjectedBundleClient.h:
        * UIProcess/WebCookieManagerProxyClient.h:
        * UIProcess/WebDatabaseManagerProxyClient.h:
        * UIProcess/WebDownloadClient.h:
        * UIProcess/WebFindClient.h:
        * UIProcess/WebFormClient.h:
        * UIProcess/WebGeolocationProvider.h:
        * UIProcess/WebHistoryClient.h:
        * UIProcess/WebIconDatabaseClient.h:
        * UIProcess/WebLoaderClient.h:
        * UIProcess/WebOriginDataManagerProxyChangeClient.h:
        * UIProcess/WebPageContextMenuClient.h:
        * UIProcess/WebPolicyClient.h:
        * UIProcess/WebUIClient.h:
        * WebProcess/InjectedBundle/InjectedBundleClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:

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

        Build fix.

        * UIProcess/API/ios/WKGeolocationProviderIOS.mm:
        (-[WKGeolocationProviderIOS initWithContext:]):

2013-12-02  Martin Hock  <mhock@apple.com>

        Add ability to iterate over API::Array
        https://bugs.webkit.org/show_bug.cgi?id=124533

        Reviewed by Sam Weinig.

        * GNUmakefile.list.am:
        * Shared/APIArray.h:
        * Shared/FilterIterator.h:
        * Shared/IteratorPair.h:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::toStringVector):
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
        (WebKit::InjectedBundlePageEditorClient::getPasteboardDataForRange):

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

        [Cocoa] WebProtectionSpace has a generic wrapper
        https://bugs.webkit.org/show_bug.cgi?id=125125

        Reviewed by Anders Carlsson.

        Added WKNSURLProtectionSpace.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject): Allocate a WKNSURLProtectionSpace if the object is a
        WebProtectionSpace.
        * Shared/Cocoa/WKNSURLProtectionSpace.h: Added.
        (WebKit::wrapper): Added. Returns a WebProtecitonSpace’s wrapper as an NSURLProtectionSpace.
        * Shared/Cocoa/WKNSURLProtectionSpace.mm: Added.
        (-[WKNSURLProtectionSpace copyWithZone:]): Retains self.
        * UIProcess/Authentication/WebProtectionSpace.h:
        (WebKit::WebProtectionSpace::protectionSpace): Added an accessor for the
        WebCore::ProtectionSpace.
        * WebKit2.xcodeproj/project.pbxproj: Added references to new files.

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

        Replace uses of WebKit::APIClient with API::Client
        https://bugs.webkit.org/show_bug.cgi?id=125129

        Reviewed by Andreas Kling.

        * Shared/API/c/WKConnectionRef.cpp:
        (WKConnectionSetConnectionClient):
        * Shared/WebConnection.cpp:
        (WebKit::WebConnection::initializeConnectionClient):
        * Shared/WebConnection.h:
        * Shared/WebConnectionClient.cpp:
        (WebKit::WebConnectionClient::didReceiveMessage):
        (WebKit::WebConnectionClient::didClose):
        * Shared/WebConnectionClient.h:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetClient):
        (WKContextSetInjectedBundleClient):
        (WKContextSetHistoryClient):
        (WKContextSetDownloadClient):
        (WKContextSetConnectionClient):
        * UIProcess/API/C/WKCookieManager.cpp:
        (WKCookieManagerSetClient):
        * UIProcess/API/C/WKDatabaseManager.cpp:
        (WKDatabaseManagerSetClient):
        * UIProcess/API/C/WKGeolocationManager.cpp:
        (WKGeolocationManagerSetProvider):
        * UIProcess/API/C/WKIconDatabase.cpp:
        (WKIconDatabaseSetIconDatabaseClient):
        * UIProcess/API/C/WKNotificationManager.cpp:
        (WKNotificationManagerSetProvider):
        * UIProcess/API/C/WKOriginDataManager.cpp:
        (WKOriginDataManagerSetChangeClient):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageContextMenuClient):
        (WKPageSetPageFindClient):
        (WKPageSetPageFindMatchesClient):
        (WKPageSetPageFormClient):
        (WKPageSetPagePolicyClient):
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (setUpPagePolicyClient):
        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
        (WebKit::WebNotificationManagerProxy::initializeProvider):
        * UIProcess/Notifications/WebNotificationManagerProxy.h:
        * UIProcess/Notifications/WebNotificationProvider.cpp:
        (WebKit::WebNotificationProvider::show):
        (WebKit::WebNotificationProvider::cancel):
        (WebKit::WebNotificationProvider::didDestroyNotification):
        (WebKit::WebNotificationProvider::clearNotifications):
        (WebKit::WebNotificationProvider::addNotificationManager):
        (WebKit::WebNotificationProvider::removeNotificationManager):
        (WebKit::WebNotificationProvider::notificationPermissions):
        * UIProcess/Notifications/WebNotificationProvider.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::initializeClient):
        (WebKit::WebContext::initializeInjectedBundleClient):
        (WebKit::WebContext::initializeConnectionClient):
        (WebKit::WebContext::initializeHistoryClient):
        (WebKit::WebContext::initializeDownloadClient):
        * UIProcess/WebContext.h:
        * UIProcess/WebContextClient.cpp:
        (WebKit::WebContextClient::plugInAutoStartOriginHashesChanged):
        (WebKit::WebContextClient::networkProcessDidCrash):
        (WebKit::WebContextClient::plugInInformationBecameAvailable):
        * UIProcess/WebContextClient.h:
        * UIProcess/WebContextConnectionClient.cpp:
        (WebKit::WebContextConnectionClient::didCreateConnection):
        * UIProcess/WebContextConnectionClient.h:
        * UIProcess/WebContextInjectedBundleClient.cpp:
        (WebKit::WebContextInjectedBundleClient::didReceiveMessageFromInjectedBundle):
        (WebKit::WebContextInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):
        (WebKit::WebContextInjectedBundleClient::getInjectedBundleInitializationUserData):
        * UIProcess/WebContextInjectedBundleClient.h:
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::initializeClient):
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebCookieManagerProxyClient.cpp:
        (WebKit::WebCookieManagerProxyClient::cookiesDidChange):
        * UIProcess/WebCookieManagerProxyClient.h:
        * UIProcess/WebDatabaseManagerProxy.cpp:
        (WebKit::WebDatabaseManagerProxy::initializeClient):
        * UIProcess/WebDatabaseManagerProxy.h:
        * UIProcess/WebDatabaseManagerProxyClient.cpp:
        (WebKit::WebDatabaseManagerProxyClient::didModifyOrigin):
        (WebKit::WebDatabaseManagerProxyClient::didModifyDatabase):
        * UIProcess/WebDatabaseManagerProxyClient.h:
        * UIProcess/WebDownloadClient.cpp:
        (WebKit::WebDownloadClient::didStart):
        (WebKit::WebDownloadClient::didReceiveAuthenticationChallenge):
        (WebKit::WebDownloadClient::didReceiveResponse):
        (WebKit::WebDownloadClient::didReceiveData):
        (WebKit::WebDownloadClient::shouldDecodeSourceDataOfMIMEType):
        (WebKit::WebDownloadClient::decideDestinationWithSuggestedFilename):
        (WebKit::WebDownloadClient::didCreateDestination):
        (WebKit::WebDownloadClient::didFinish):
        (WebKit::WebDownloadClient::didFail):
        (WebKit::WebDownloadClient::didCancel):
        (WebKit::WebDownloadClient::processDidCrash):
        * UIProcess/WebDownloadClient.h:
        * UIProcess/WebFindClient.cpp:
        (WebKit::WebFindClient::didFindString):
        (WebKit::WebFindClient::didFailToFindString):
        (WebKit::WebFindClient::didCountStringMatches):
        (WebKit::WebFindMatchesClient::didFindStringMatches):
        (WebKit::WebFindMatchesClient::didGetImageForMatchResult):
        * UIProcess/WebFindClient.h:
        * UIProcess/WebFormClient.cpp:
        (WebKit::WebFormClient::willSubmitForm):
        * UIProcess/WebFormClient.h:
        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::initializeProvider):
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebGeolocationProvider.cpp:
        (WebKit::WebGeolocationProvider::startUpdating):
        (WebKit::WebGeolocationProvider::stopUpdating):
        (WebKit::WebGeolocationProvider::setEnableHighAccuracy):
        * UIProcess/WebGeolocationProvider.h:
        * UIProcess/WebHistoryClient.cpp:
        (WebKit::WebHistoryClient::didNavigateWithNavigationData):
        (WebKit::WebHistoryClient::didPerformClientRedirect):
        (WebKit::WebHistoryClient::didPerformServerRedirect):
        (WebKit::WebHistoryClient::didUpdateHistoryTitle):
        (WebKit::WebHistoryClient::populateVisitedLinks):
        * UIProcess/WebHistoryClient.h:
        * UIProcess/WebIconDatabase.cpp:
        (WebKit::WebIconDatabase::initializeIconDatabaseClient):
        * UIProcess/WebIconDatabase.h:
        * UIProcess/WebIconDatabaseClient.cpp:
        (WebKit::WebIconDatabaseClient::didChangeIconForPageURL):
        (WebKit::WebIconDatabaseClient::didRemoveAllIcons):
        (WebKit::WebIconDatabaseClient::iconDataReadyForPageURL):
        * UIProcess/WebIconDatabaseClient.h:
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::createInspectorPage):
        * UIProcess/WebLoaderClient.h:
        * UIProcess/WebOriginDataManagerProxy.cpp:
        (WebKit::WebOriginDataManagerProxy::setChangeClient):
        * UIProcess/WebOriginDataManagerProxy.h:
        * UIProcess/WebOriginDataManagerProxyChangeClient.cpp:
        (WebKit::WebOriginDataManagerProxyChangeClient::didChange):
        * UIProcess/WebOriginDataManagerProxyChangeClient.h:
        * UIProcess/WebPageContextMenuClient.cpp:
        (WebKit::WebPageContextMenuClient::getContextMenuFromProposedMenu):
        (WebKit::WebPageContextMenuClient::customContextMenuItemSelected):
        (WebKit::WebPageContextMenuClient::contextMenuDismissed):
        (WebKit::WebPageContextMenuClient::showContextMenu):
        (WebKit::WebPageContextMenuClient::hideContextMenu):
        * UIProcess/WebPageContextMenuClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializePolicyClient):
        (WebKit::WebPageProxy::initializeFormClient):
        (WebKit::WebPageProxy::initializeUIClient):
        (WebKit::WebPageProxy::initializeFindClient):
        (WebKit::WebPageProxy::initializeFindMatchesClient):
        (WebKit::WebPageProxy::initializeContextMenuClient):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPolicyClient.cpp:
        (WebKit::WebPolicyClient::decidePolicyForNavigationAction):
        (WebKit::WebPolicyClient::decidePolicyForNewWindowAction):
        (WebKit::WebPolicyClient::decidePolicyForResponse):
        (WebKit::WebPolicyClient::unableToImplementPolicy):
        * UIProcess/WebPolicyClient.h:
        * UIProcess/WebUIClient.cpp:
        (WebKit::WebUIClient::createNewPage):
        (WebKit::WebUIClient::showPage):
        (WebKit::WebUIClient::close):
        (WebKit::WebUIClient::takeFocus):
        (WebKit::WebUIClient::focus):
        (WebKit::WebUIClient::unfocus):
        (WebKit::WebUIClient::runJavaScriptAlert):
        (WebKit::WebUIClient::runJavaScriptConfirm):
        (WebKit::WebUIClient::runJavaScriptPrompt):
        (WebKit::WebUIClient::setStatusText):
        (WebKit::WebUIClient::mouseDidMoveOverElement):
        (WebKit::WebUIClient::unavailablePluginButtonClicked):
        (WebKit::WebUIClient::didNotHandleKeyEvent):
        (WebKit::WebUIClient::didNotHandleWheelEvent):
        (WebKit::WebUIClient::toolbarsAreVisible):
        (WebKit::WebUIClient::setToolbarsAreVisible):
        (WebKit::WebUIClient::menuBarIsVisible):
        (WebKit::WebUIClient::setMenuBarIsVisible):
        (WebKit::WebUIClient::statusBarIsVisible):
        (WebKit::WebUIClient::setStatusBarIsVisible):
        (WebKit::WebUIClient::isResizable):
        (WebKit::WebUIClient::setIsResizable):
        (WebKit::WebUIClient::setWindowFrame):
        (WebKit::WebUIClient::windowFrame):
        (WebKit::WebUIClient::runBeforeUnloadConfirmPanel):
        (WebKit::WebUIClient::didDraw):
        (WebKit::WebUIClient::pageDidScroll):
        (WebKit::WebUIClient::exceededDatabaseQuota):
        (WebKit::WebUIClient::runOpenPanel):
        (WebKit::WebUIClient::decidePolicyForGeolocationPermissionRequest):
        (WebKit::WebUIClient::decidePolicyForNotificationPermissionRequest):
        (WebKit::WebUIClient::headerHeight):
        (WebKit::WebUIClient::footerHeight):
        (WebKit::WebUIClient::drawHeader):
        (WebKit::WebUIClient::drawFooter):
        (WebKit::WebUIClient::printFrame):
        (WebKit::WebUIClient::runModal):
        (WebKit::WebUIClient::saveDataToFileInDownloadsFolder):
        (WebKit::WebUIClient::shouldInterruptJavaScript):
        (WebKit::WebUIClient::showColorPicker):
        (WebKit::WebUIClient::hideColorPicker):
        * UIProcess/WebUIClient.h:
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleSetClient):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageSetContextMenuClient):
        (WKBundlePageSetEditorClient):
        (WKBundlePageSetFormClient):
        (WKBundlePageSetPageLoaderClient):
        (WKBundlePageSetResourceLoadClient):
        (WKBundlePageSetPolicyClient):
        (WKBundlePageSetUIClient):
        (WKBundlePageSetFullScreenClient):
        (WKBundlePageSetDiagnosticLoggingClient):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::initializeClient):
        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/InjectedBundleClient.cpp:
        (WebKit::InjectedBundleClient::didCreatePage):
        (WebKit::InjectedBundleClient::willDestroyPage):
        (WebKit::InjectedBundleClient::didInitializePageGroup):
        (WebKit::InjectedBundleClient::didReceiveMessage):
        (WebKit::InjectedBundleClient::didReceiveMessageToPage):
        * WebProcess/InjectedBundle/InjectedBundleClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:
        (WebKit::InjectedBundlePageContextMenuClient::getCustomMenuFromDefaultItems):
        * WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.cpp:
        (WebKit::InjectedBundlePageDiagnosticLoggingClient::logDiagnosticMessage):
        * WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
        (WebKit::InjectedBundlePageEditorClient::shouldBeginEditing):
        (WebKit::InjectedBundlePageEditorClient::shouldEndEditing):
        (WebKit::InjectedBundlePageEditorClient::shouldInsertNode):
        (WebKit::InjectedBundlePageEditorClient::shouldInsertText):
        (WebKit::InjectedBundlePageEditorClient::shouldDeleteRange):
        (WebKit::InjectedBundlePageEditorClient::shouldChangeSelectedRange):
        (WebKit::InjectedBundlePageEditorClient::shouldApplyStyle):
        (WebKit::InjectedBundlePageEditorClient::didBeginEditing):
        (WebKit::InjectedBundlePageEditorClient::didEndEditing):
        (WebKit::InjectedBundlePageEditorClient::didChange):
        (WebKit::InjectedBundlePageEditorClient::didChangeSelection):
        (WebKit::InjectedBundlePageEditorClient::willWriteToPasteboard):
        (WebKit::InjectedBundlePageEditorClient::getPasteboardDataForRange):
        (WebKit::InjectedBundlePageEditorClient::didWriteToPasteboard):
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
        (WebKit::InjectedBundlePageFormClient::didFocusTextField):
        (WebKit::InjectedBundlePageFormClient::textFieldDidBeginEditing):
        (WebKit::InjectedBundlePageFormClient::textFieldDidEndEditing):
        (WebKit::InjectedBundlePageFormClient::textDidChangeInTextField):
        (WebKit::InjectedBundlePageFormClient::textDidChangeInTextArea):
        (WebKit::InjectedBundlePageFormClient::shouldPerformActionInTextField):
        (WebKit::InjectedBundlePageFormClient::willSendSubmitEvent):
        (WebKit::InjectedBundlePageFormClient::willSubmitForm):
        (WebKit::InjectedBundlePageFormClient::didAssociateFormControls):
        (WebKit::InjectedBundlePageFormClient::shouldNotifyOnFormChanges):
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.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::didFinishProgress):
        (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::didLayoutForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didLayout):
        (WebKit::InjectedBundlePageLoaderClient::didClearWindowObjectForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didCancelClientRedirectForFrame):
        (WebKit::InjectedBundlePageLoaderClient::willPerformClientRedirectForFrame):
        (WebKit::InjectedBundlePageLoaderClient::didHandleOnloadEventsForFrame):
        (WebKit::InjectedBundlePageLoaderClient::globalObjectIsAvailableForFrame):
        (WebKit::InjectedBundlePageLoaderClient::willDisconnectDOMWindowExtensionFromGlobalObject):
        (WebKit::InjectedBundlePageLoaderClient::didReconnectDOMWindowExtensionToGlobalObject):
        (WebKit::InjectedBundlePageLoaderClient::willDestroyGlobalObjectForDOMWindowExtension):
        (WebKit::InjectedBundlePageLoaderClient::shouldForceUniversalAccessFromLocalURL):
        (WebKit::InjectedBundlePageLoaderClient::featuresUsedInPage):
        (WebKit::InjectedBundlePageLoaderClient::willDestroyFrame):
        * 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.cpp:
        (WebKit::InjectedBundlePageResourceLoadClient::didInitiateLoadForResource):
        (WebKit::InjectedBundlePageResourceLoadClient::willSendRequestForFrame):
        (WebKit::InjectedBundlePageResourceLoadClient::didReceiveResponseForResource):
        (WebKit::InjectedBundlePageResourceLoadClient::didReceiveContentLengthForResource):
        (WebKit::InjectedBundlePageResourceLoadClient::didFinishLoadForResource):
        (WebKit::InjectedBundlePageResourceLoadClient::didFailLoadForResource):
        (WebKit::InjectedBundlePageResourceLoadClient::shouldCacheResponse):
        (WebKit::InjectedBundlePageResourceLoadClient::shouldUseCredentialStorage):
        * WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
        (WebKit::InjectedBundlePageUIClient::willAddMessageToConsole):
        (WebKit::InjectedBundlePageUIClient::willSetStatusbarText):
        (WebKit::InjectedBundlePageUIClient::willRunJavaScriptAlert):
        (WebKit::InjectedBundlePageUIClient::willRunJavaScriptConfirm):
        (WebKit::InjectedBundlePageUIClient::willRunJavaScriptPrompt):
        (WebKit::InjectedBundlePageUIClient::mouseDidMoveOverElement):
        (WebKit::InjectedBundlePageUIClient::pageDidScroll):
        (WebKit::InjectedBundlePageUIClient::shouldGenerateFileForUpload):
        (WebKit::InjectedBundlePageUIClient::generateFileForUpload):
        (WebKit::InjectedBundlePageUIClient::statusBarIsVisible):
        (WebKit::InjectedBundlePageUIClient::menuBarIsVisible):
        (WebKit::InjectedBundlePageUIClient::toolbarsAreVisible):
        (WebKit::InjectedBundlePageUIClient::didReachApplicationCacheOriginQuota):
        (WebKit::InjectedBundlePageUIClient::didExceedDatabaseQuota):
        (WebKit::InjectedBundlePageUIClient::plugInStartLabelTitle):
        (WebKit::InjectedBundlePageUIClient::plugInStartLabelSubtitle):
        (WebKit::InjectedBundlePageUIClient::plugInExtraStyleSheet):
        (WebKit::InjectedBundlePageUIClient::plugInExtraScript):
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::initializeInjectedBundleContextMenuClient):
        (WebKit::WebPage::initializeInjectedBundleEditorClient):
        (WebKit::WebPage::initializeInjectedBundleFormClient):
        (WebKit::WebPage::initializeInjectedBundleLoaderClient):
        (WebKit::WebPage::initializeInjectedBundlePolicyClient):
        (WebKit::WebPage::initializeInjectedBundleResourceLoadClient):
        (WebKit::WebPage::initializeInjectedBundleUIClient):
        (WebKit::WebPage::initializeInjectedBundleFullScreenClient):
        (WebKit::WebPage::initializeInjectedBundleDiagnosticLoggingClient):
        * WebProcess/WebPage/WebPage.h:

2013-12-02  Enrica Casucci  <enrica@apple.com>

        Merging some more iOS WebKit2 stuff.
        https://bugs.webkit.org/show_bug.cgi?id=125119

        Reviewed by Tim Horton.

        * Shared/EditorState.h:
        * Shared/NativeWebKeyboardEvent.h:
        * Shared/NativeWebMouseEvent.h:
        * Shared/NativeWebTouchEvent.h:
        * Shared/mac/RemoteLayerBackingStore.h:
        * Shared/mac/RemoteLayerTreePropertyApplier.mm:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        * UIProcess/PageClient.h:
        * UIProcess/ios/TiledCoreAnimationDrawingAreaProxyIOS.mm:
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
        * UIProcess/mac/SecItemShimProxy.messages.in:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:

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

        Add versioned structs for the remaining clients
        https://bugs.webkit.org/show_bug.cgi?id=125123

        Reviewed by Andreas Kling.

        * UIProcess/API/C/WKContext.h:
        * UIProcess/API/C/WKContextConnectionClient.h:
        * UIProcess/API/C/WKContextDownloadClient.h:
        * UIProcess/API/C/WKContextHistoryClient.h:
        * UIProcess/API/C/WKContextInjectedBundleClient.h:
        * UIProcess/API/C/WKOriginDataManager.h:

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

        Move WKContext clients to separate files
        https://bugs.webkit.org/show_bug.cgi?id=125121

        Reviewed by Andreas Kling.

        * UIProcess/API/C/WKContext.h:
        * UIProcess/API/C/WKContextConnectionClient.h: Added.
        * UIProcess/API/C/WKContextDownloadClient.h: Added.
        * UIProcess/API/C/WKContextHistoryClient.h: Added.
        * UIProcess/API/C/WKContextInjectedBundleClient.h: Added.
        * WebKit2.xcodeproj/project.pbxproj:

2013-12-02  Sam Weinig  <sam@webkit.org>

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

        Reviewed by Anders Carlsson.

        * UIProcess/WebContextUserMessageCoders.h:
        (WebKit::WebContextUserMessageEncoder::encode):
        (WebKit::WebContextUserMessageDecoder::decode):
        * UIProcess/WebPageGroup.cpp:
        (WebKit::WebPageGroup::addProcess):
        (WebKit::WebPageGroup::disconnectProcess):
        * UIProcess/WebPageGroup.h:
        (WebKit::WebPageGroup::sendToAllProcessesInGroup):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeWebPage):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::disconnect):
        (WebKit::WebProcessProxy::webPageGroup):
        (WebKit::WebProcessProxy::addWebPageGroup):
        * UIProcess/WebProcessProxy.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::webPageGroup):

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

        Add versioned structs for all clients except the ones in WKContext.h
        https://bugs.webkit.org/show_bug.cgi?id=125120

        Reviewed by Andreas Kling.

        * Shared/API/c/WKConnectionRef.h:
        * UIProcess/API/C/WKCookieManager.h:
        * UIProcess/API/C/WKDatabaseManager.h:
        * UIProcess/API/C/WKGeolocationManager.h:
        * UIProcess/API/C/WKIconDatabase.h:
        * UIProcess/API/C/WKNotificationProvider.h:
        * UIProcess/API/C/WKPageContextMenuClient.h:
        * UIProcess/API/C/WKPageFindClient.h:
        * UIProcess/API/C/WKPageFindMatchesClient.h:
        * UIProcess/API/C/WKPageFormClient.h:
        * UIProcess/API/C/WKPageLoaderClient.h:
        * UIProcess/API/C/WKPagePolicyClient.h:
        * UIProcess/API/C/WKPageUIClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundle.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageBanner.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageContextMenuClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageDiagnosticLoggingClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageEditorClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageFormClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageFullScreenClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePagePolicyClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageResourceLoadClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageUIClient.h:

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

        Split bundle page clients out into separate headers
        https://bugs.webkit.org/show_bug.cgi?id=125115

        Reviewed by Andreas Kling.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageContextMenuClient.h: Added.
        * WebProcess/InjectedBundle/API/c/WKBundlePageDiagnosticLoggingClient.h: Added.
        * WebProcess/InjectedBundle/API/c/WKBundlePageEditorClient.h: Added.
        * WebProcess/InjectedBundle/API/c/WKBundlePageFormClient.h: Added.
        * WebProcess/InjectedBundle/API/c/WKBundlePageFullScreenClient.h: Added.
        * WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h: Added.
        * WebProcess/InjectedBundle/API/c/WKBundlePagePolicyClient.h: Added.
        * WebProcess/InjectedBundle/API/c/WKBundlePageResourceLoadClient.h: Added.
        * WebProcess/InjectedBundle/API/c/WKBundlePageUIClient.h: Added.

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

        [WK2] Improve readability of 'generate_message_handler' function
        https://bugs.webkit.org/show_bug.cgi?id=125085

        Reviewed by Sam Weinig.

        * Scripts/webkit2/messages.py:
        (generate_message_handler):

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

        Remote Layer Tree: Support cloning layers
        https://bugs.webkit.org/show_bug.cgi?id=124874
        <rdar://problem/15349468>

        Reviewed by Simon Fraser.

        We use PlatformCALayer::clone for CSS reflections, so implement it.

        Also, since many reflections testcases also use masks,
        working on this revealed that masks weren't working, because
        we weren't flushing mask layers.

        * Shared/mac/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        Rename maskLayer->maskLayerID since it's a LayerID.

        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::commit):
        Don't try to look up the layer if it's null.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::notePropertiesChanged):
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
        Keep track of all properties that have ever been changed on a layer.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (PlatformCALayerRemote::create):
        (PlatformCALayerRemote::PlatformCALayerRemote):
        (PlatformCALayerRemote::clone):
        Copy all of the layer properties from the original to the clone,
        and mark all properties that have ever been modified as
        needing to be flushed to the UI process.

        (PlatformCALayerRemote::recursiveBuildTransaction):
        Flush our mask layer, if we have one.

        (PlatformCALayerRemote::setMask):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        Store the mask layer we're given. Our owning GraphicsLayer will
        hold on to it for us.

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

        WKPageLoaderClient should be versioned
        https://bugs.webkit.org/show_bug.cgi?id=125104

        Reviewed by Sam Weinig.

        Add multiple versions of the WKPageLoaderClient struct. In a subsequent patch,
        WKPageLoaderClient and kWKPageLoaderClientCurrentVersion will be deprecated. Instead,
        users of the API are supposed to explicitly choose a version and a versioned struct.

        * Shared/APIClient.h:
        Add a new API::Client class with a new ClientTraits template that uses std::tuple for versions.

        * Shared/APIClientTraits.cpp:
        * Shared/APIClientTraits.h:
        Remove WKPageLoaderClient interface sizes.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        Add an explicit cast to WKPageLoaderClientBase. In an upcoming patch, WKPageSetPageLoaderClient
        will be changed to take a WKPageLoaderClientBase instead.

        * UIProcess/API/C/WKPageLoaderClient.h:
        Add new versions.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (setUpPageLoaderClient):
        Use an explicit version.

        * 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::canAuthenticateAgainstProtectionSpaceInFrame):
        (WebKit::WebLoaderClient::didReceiveAuthenticationChallengeInFrame):
        (WebKit::WebLoaderClient::didStartProgress):
        (WebKit::WebLoaderClient::didChangeProgress):
        (WebKit::WebLoaderClient::didFinishProgress):
        (WebKit::WebLoaderClient::processDidBecomeUnresponsive):
        (WebKit::WebLoaderClient::interactionOccurredWhileProcessUnresponsive):
        (WebKit::WebLoaderClient::processDidBecomeResponsive):
        (WebKit::WebLoaderClient::processDidCrash):
        (WebKit::WebLoaderClient::didChangeBackForwardList):
        (WebKit::WebLoaderClient::shouldGoToBackForwardListItem):
        (WebKit::WebLoaderClient::willGoToBackForwardListItem):
        (WebKit::WebLoaderClient::didFailToInitializePlugin):
        (WebKit::WebLoaderClient::didBlockInsecurePluginVersion):
        (WebKit::WebLoaderClient::pluginLoadPolicy):
        Go through client.base everywhere.

        * UIProcess/WebLoaderClient.h:
        Add API::ClientTraits specialization. Change WebLoaderClient to derive from API::Client<WKPageLoaderClientBase>.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeLoaderClient):
        This now takes a WKPageLoaderClientBase*.
        
2013-12-02  Beth Dakin  <bdakin@apple.com>

        Add a setting to opt into a mode where the background extends and fixed elements 
        don't move on rubber-band
        https://bugs.webkit.org/show_bug.cgi?id=124745

        Reviewed by Tim Horton.

        Add SPI to enable the new setting.

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

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

        Remote Layer Tree: Hook up setLayerTreeStateIsFrozen
        https://bugs.webkit.org/show_bug.cgi?id=124872

        Reviewed by Brent Fulgham.

        setLayerTreeStateIsFrozen is the mechanism used to ensure that
        layer property changes (including new backing store) aren't committed
        while e.g. the page is reconfigured for printing.

        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::RemoteLayerTreeContext):
        (WebKit::RemoteLayerTreeContext::flushLayers):
        (WebKit::RemoteLayerTreeContext::setIsFlushingSuspended):
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):

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

        Remote Layer Tree: Disable direct image compositing
        https://bugs.webkit.org/show_bug.cgi?id=124875
        <rdar://problem/15446024>

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
        Image-as-layer-contents is not implemented for the remote layer tree.

2013-12-01  ChangSeok Oh  <changseok.oh@collabora.com>

        Unreviewed Gtk port Build fix after r159903

        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::layerHostingModeDidChange):
        (WebKit::DrawingAreaProxyImpl::update):
        (WebKit::DrawingAreaProxyImpl::didUpdateBackingStoreState):
        (WebKit::DrawingAreaProxyImpl::sendUpdateBackingStoreState):
        (WebKit::DrawingAreaProxyImpl::waitForAndDispatchDidUpdateBackingStoreState):
        * UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp:
        (WebKit::WebFullScreenManagerProxy::invalidate):
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::setAcceleratedCompositingWindowId):

2013-12-01  Sam Weinig  <sam@webkit.org>

        Give UserMessageEncoders WebProcessProxy reference (like the decoders already have)
        https://bugs.webkit.org/show_bug.cgi?id=125053

        Reviewed by Dan Bernstein.

        - Give the UserMessageEncoders a process reference.
        - Switch UserMessageDecoders to storing a process reference, rather than pointer.

        * Shared/UserMessageCoders.h:
        * Shared/mac/ObjCObjectGraphCoders.h:
        * Shared/mac/ObjCObjectGraphCoders.mm:
        * UIProcess/WebConnectionToWebProcess.cpp:
        * UIProcess/WebContext.cpp:
        * UIProcess/WebContextUserMessageCoders.h:
        * UIProcess/WebPageProxy.cpp:
        * WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h:

2013-12-01  Sam Weinig  <sam@webkit.org>

        [Cocoa] The PageLoadState::Observer is not being set on iOS
        https://bugs.webkit.org/show_bug.cgi?id=125051

        Reviewed by Dan Bernstein.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::platformInitialize):
        Add missing call to _finishInitialization.

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

        Unreviewed EFL Build fix attempt after r159903

        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.cpp:
        (WebKit::CoordinatedDrawingAreaProxy::layerHostingModeDidChange):
        (WebKit::CoordinatedDrawingAreaProxy::update):
        (WebKit::CoordinatedDrawingAreaProxy::didUpdateBackingStoreState):
        (WebKit::CoordinatedDrawingAreaProxy::sendUpdateBackingStoreState):
        (WebKit::CoordinatedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:
        (WebKit::CoordinatedLayerTreeHostProxy::CoordinatedLayerTreeHostProxy):
        (WebKit::CoordinatedLayerTreeHostProxy::~CoordinatedLayerTreeHostProxy):
        (WebKit::CoordinatedLayerTreeHostProxy::setVisibleContentsRect):
        (WebKit::CoordinatedLayerTreeHostProxy::renderNextFrame):
        (WebKit::CoordinatedLayerTreeHostProxy::purgeBackingStores):
        (WebKit::CoordinatedLayerTreeHostProxy::commitScrollOffset):
        * UIProcess/WebTextChecker.cpp:
        (WebKit::WebTextChecker::checkSpelling):
        (WebKit::WebTextChecker::changeSpellingToWord):
        * UIProcess/WebTextChecker.h:
        * UIProcess/WebVibrationProxy.cpp:
        (WebKit::WebVibrationProxy::WebVibrationProxy):
        (WebKit::WebVibrationProxy::~WebVibrationProxy):
        * UIProcess/efl/WebFullScreenManagerProxyEfl.cpp:
        (WebKit::WebFullScreenManagerProxy::invalidate):
        * UIProcess/efl/WebInspectorProxyEfl.cpp:
        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
        * UIProcess/efl/WebPageProxyEfl.cpp:
        (WebKit::WebPageProxy::setThemePath):
        (WebKit::WebPageProxy::confirmComposition):
        (WebKit::WebPageProxy::setComposition):
        (WebKit::WebPageProxy::cancelComposition):

2013-12-01  Sam Weinig  <sam@webkit.org>

        Fix the iOS build.

        * UIProcess/API/ios/WKContentView.mm:
        * UIProcess/API/ios/WKInteractionView.mm:
        * UIProcess/ios/WebPageProxyIOS.mm:

2013-12-01  Sam Weinig  <sam@webkit.org>

        [CTTE] The WebPageProxy's WebProcessProxy is never null so it should be stored in a Ref
        https://bugs.webkit.org/show_bug.cgi?id=125047

        Reviewed by Dan Bernstein.

        * UIProcess/API/C/WKPage.cpp:
        * UIProcess/API/C/mac/WKPagePrivateMac.cpp:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        * UIProcess/API/mac/WKView.mm:
        * UIProcess/Downloads/DownloadProxy.cpp:
        * UIProcess/Downloads/DownloadProxy.h:
        * UIProcess/Downloads/DownloadProxyMap.cpp:
        * UIProcess/Downloads/DownloadProxyMap.h:
        * UIProcess/DrawingAreaProxy.cpp:
        * UIProcess/GeolocationPermissionRequestManagerProxy.cpp:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp:
        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
        * UIProcess/WebContext.cpp:
        * UIProcess/WebContext.h:
        * UIProcess/WebEditCommandProxy.cpp:
        * UIProcess/WebFrameProxy.cpp:
        * UIProcess/WebFullScreenManagerProxy.cpp:
        * UIProcess/WebInspectorProxy.cpp:
        * UIProcess/WebPageGroup.h:
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        * UIProcess/WebProcessProxy.h:
        * UIProcess/cf/WebPageProxyCF.cpp:
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        * UIProcess/mac/WebFullScreenManagerProxyMac.mm:
        * UIProcess/mac/WebInspectorProxyMac.mm:
        * UIProcess/mac/WebPageProxyMac.mm:

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

        [EFL][CoordinatedGraphics] Clear m_contentsSize when new contents are loaded
        https://bugs.webkit.org/show_bug.cgi?id=125033

        Reviewed by Gyuyoung Kim.

        m_contentsSize should be cleared when new contents are loaded so that PageViewportController
        would take care of newly loaded contents with same size as previous one.
        It's because PageViewportController is cleared not to make wrong behaviour
        while loading when new contents are committed.

        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
        (TEST_F):
        Improve tests to check contents,size,changed signal when loaded contents having
        same size with previous one.
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::didCommitLoadForMainFrame): Cleared m_contentsSize.

2013-12-01  Philippe Normand  <pnormand@igalia.com>

        Unreviewed GTK build fix after r159896.

        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkitWebContextCreatePageForWebView):
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewConstructed):
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseUpdatePreferences):

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

        Unreviewed build fix after r159896.

        * UIProcess/API/efl/ewk_settings.cpp:
        (EwkSettings::preferences):
        * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.cpp:
        (WebKit::CoordinatedDrawingAreaProxy::CoordinatedDrawingAreaProxy):
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::WebView):

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

        [CTTE] The WebPageProxy's WebPageGroup is never null so it should be stored in a Ref
        https://bugs.webkit.org/show_bug.cgi?id=125038

        Reviewed by Dan Bernstein.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageGetPageGroup):
        * UIProcess/API/C/mac/WKPagePrivateMac.cpp:
        (WKPageIsURLKnownHSTSHost):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController browsingContextGroup]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _preferencesDidChange]):
        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::WebContext):
        (WebKit::WebContext::createWebPage):
        * UIProcess/WebContext.h:
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorPageGroups::inspectorLevel):
        (WebKit::WebInspectorPageGroups::isInspectorPageGroup):
        (WebKit::WebInspectorPageGroups::inspectorPageGroupLevel):
        (WebKit::WebInspectorProxy::isInspectorPage):
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebPageGroup.cpp:
        (WebKit::WebPageGroup::createNonNull):
        * UIProcess/WebPageGroup.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::create):
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
        (WebKit::WebPageProxy::preferencesDidChange):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::pageGroup):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::createInspectorWindow):
        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
        (WebKit::WebInspectorProxy::windowFrameDidChange):
        * UIProcess/mac/WebProcessProxyMac.mm:
        (WebKit::WebProcessProxy::pageIsProcessSuppressible):

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

        Added a version of +[NSURL _web_URLWithWTFString:relativeToURL:] that doesn’t take a base URL and switched all callers to it.
        https://bugs.webkit.org/show_bug.cgi?id=125040

        Reviewed by Sam Weinig.

        * Shared/Cocoa/WKNSURLExtras.h: Declared new method.
        * Shared/Cocoa/WKNSURLExtras.mm:
        (urlWithWTFString): Added helper function.
        (+[NSURL _web_URLWithWTFString:]): Added.
        (+[NSURL _web_URLWithWTFString:relativeToURL:]): Changed to use helper function.
        * UIProcess/API/Cocoa/WKBackForwardListItem.mm:
        (-[WKBackForwardListItem URL]): Changed to call new method.
        (-[WKBackForwardListItem originalURL]): Ditto.
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController activeURL]): Ditto.
        (-[WKBrowsingContextController provisionalURL]): Ditto.
        (-[WKBrowsingContextController committedURL]): Ditto.
        (-[WKBrowsingContextController unreachableURL]): Ditto.
        (setUpPagePolicyClient): Ditto.
        * UIProcess/API/Cocoa/WKNavigationData.mm:
        (-[WKNavigationData destinationURL]): Ditto.

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

        [Cocoa] Stop using the WKPageRef API in WKBrowsingContextController
        https://bugs.webkit.org/show_bug.cgi?id=125036

        Reviewed by Sam Weinig.

        * Shared/Cocoa/WKNSURLExtras.h: Declared new method.
        * Shared/Cocoa/WKNSURLExtras.mm:
        (-[NSURL _web_originalDataAsWTFString]): Added. Returns a WTF::String with the receiver’s
        bytes.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController loadRequest:userData:]):
        (-[WKBrowsingContextController loadFileURL:restrictToFilesWithin:userData:]):
        (-[WKBrowsingContextController loadHTMLString:baseURL:userData:]):
        (-[WKBrowsingContextController loadAlternateHTMLString:baseURL:forUnreachableURL:]):
        (-[WKBrowsingContextController loadData:MIMEType:textEncodingName:baseURL:userData:]):
        (-[WKBrowsingContextController stopLoading]):
        (-[WKBrowsingContextController reload]):
        (-[WKBrowsingContextController reloadFromOrigin]):
        (-[WKBrowsingContextController goForward]):
        (-[WKBrowsingContextController canGoForward]):
        (-[WKBrowsingContextController goBack]):
        (-[WKBrowsingContextController canGoBack]):
        (-[WKBrowsingContextController activeURL]):
        (-[WKBrowsingContextController provisionalURL]):
        (-[WKBrowsingContextController committedURL]):
        (-[WKBrowsingContextController title]):
        (-[WKBrowsingContextController textZoom]):
        (-[WKBrowsingContextController setTextZoom:]):
        (-[WKBrowsingContextController pageZoom]):
        (-[WKBrowsingContextController setPageZoom:]):
        (setUpPageLoaderClient):
        (setUpPagePolicyClient):
        (-[WKBrowsingContextController setLoadDelegate:]):
        (-[WKBrowsingContextController setPolicyDelegate:]):
        (-[WKBrowsingContextController _pageRef]):
        (-[WKBrowsingContextController setPaginationMode:]):
        (-[WKBrowsingContextController paginationMode]):
        (-[WKBrowsingContextController setPaginationBehavesLikeColumns:]):
        (-[WKBrowsingContextController paginationBehavesLikeColumns]):
        (-[WKBrowsingContextController setPageLength:]):
        (-[WKBrowsingContextController pageLength]):
        (-[WKBrowsingContextController setGapBetweenPages:]):
        (-[WKBrowsingContextController gapBetweenPages]):
        (-[WKBrowsingContextController pageCount]):

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

        Unreviewed, rolling out r159865.
        http://trac.webkit.org/changeset/159865
        https://bugs.webkit.org/show_bug.cgi?id=125037

        the position of mouse events are wrong at MiniBrowser/efl
        (Requested by ryuan on #webkit).

        * UIProcess/API/efl/EwkView.cpp:
        (EwkView::displayTimerFired):
        (EwkView::createGLSurface):
        (EwkView::handleEvasObjectCalculate):

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

        [CTTE] The WebPageProxy's WebBackForwardList is never null so it should be stored in a Ref
        https://bugs.webkit.org/show_bug.cgi?id=125035

        Reviewed by Dan Bernstein.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageGetBackForwardList):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController backForwardList]): Remove null check.
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::WebBackForwardList):
        (WebKit::WebBackForwardList::currentItem): Constify.
        (WebKit::WebBackForwardList::backItem): Constify.
        (WebKit::WebBackForwardList::forwardItem): Constify.
        (WebKit::WebBackForwardList::itemAtIndex): Constify.
        * UIProcess/WebBackForwardList.h:
        (WebKit::WebBackForwardList::create):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::backForwardList):

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

        Unreviewed GTK build fix after r159889.

        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::viewWidget): Adjust the static cast of the PageClient reference to PageClientImpl.

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

        [CTTE] WebPageProxy should store the PageClient as a reference
        https://bugs.webkit.org/show_bug.cgi?id=125030

        Reviewed by Dan Bernstein.

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseCreateWebPage):
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
        * UIProcess/CoordinatedGraphics/WebPageProxyCoordinatedGraphics.cpp:
        (WebKit::WebPageProxy::didFindZoomableArea):
        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::WebView):
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::createWebPage):
        * UIProcess/WebContext.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::create):
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::setViewNeedsDisplay):
        (WebKit::WebPageProxy::displayView):
        (WebKit::WebPageProxy::canScrollView):
        (WebKit::WebPageProxy::scrollView):
        (WebKit::WebPageProxy::updateViewState):
        (WebKit::WebPageProxy::viewStateDidChange):
        (WebKit::WebPageProxy::viewSize):
        (WebKit::WebPageProxy::startDrag):
        (WebKit::WebPageProxy::handleTouchEvent):
        (WebKit::WebPageProxy::preferencesDidChange):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::closePage):
        (WebKit::WebPageProxy::setWindowFrame):
        (WebKit::WebPageProxy::getWindowFrame):
        (WebKit::WebPageProxy::screenToWindow):
        (WebKit::WebPageProxy::windowToScreen):
        (WebKit::WebPageProxy::pageDidRequestScroll):
        (WebKit::WebPageProxy::pageTransitionViewportReady):
        (WebKit::WebPageProxy::didRenderFrame):
        (WebKit::WebPageProxy::didChangeViewportProperties):
        (WebKit::WebPageProxy::handleDownloadRequest):
        (WebKit::WebPageProxy::didChangeContentSize):
        (WebKit::WebPageProxy::showColorPicker):
        (WebKit::WebPageProxy::editorStateChanged):
        (WebKit::WebPageProxy::canUndoRedo):
        (WebKit::WebPageProxy::executeUndoRedo):
        (WebKit::WebPageProxy::clearAllEditCommands):
        (WebKit::WebPageProxy::setFindIndicator):
        (WebKit::WebPageProxy::showPopupMenu):
        (WebKit::WebPageProxy::internalShowContextMenu):
        (WebKit::WebPageProxy::registerEditCommand):
        (WebKit::WebPageProxy::setToolTip):
        (WebKit::WebPageProxy::setCursor):
        (WebKit::WebPageProxy::setCursorHiddenUntilMouseMoves):
        (WebKit::WebPageProxy::didReceiveEvent):
        (WebKit::WebPageProxy::processDidCrash):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        (WebKit::WebPageProxy::initializeCreationParameters):
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):
        (WebKit::WebPageProxy::exitAcceleratedCompositingMode):
        (WebKit::WebPageProxy::updateAcceleratedCompositingMode):
        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
        (WebKit::WebPageProxy::recommendedScrollbarStyleDidChange):
        (WebKit::WebPageProxy::updateBackingStoreDiscardableState):
        (WebKit::WebPageProxy::showCorrectionPanel):
        (WebKit::WebPageProxy::dismissCorrectionPanel):
        (WebKit::WebPageProxy::dismissCorrectionPanelSoon):
        (WebKit::WebPageProxy::recordAutocorrectionResponse):
        (WebKit::WebPageProxy::showDictationAlternativeUI):
        (WebKit::WebPageProxy::removeDictationAlternatives):
        (WebKit::WebPageProxy::dictationAlternatives):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::getEditorCommandsForKeyEvent):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::interpretKeyEvent):
        (WebKit::WebPageProxy::mainDocumentDidReceiveMobileDocType):
        (WebKit::WebPageProxy::didGetTapHighlightGeometries):
        (WebKit::WebPageProxy::didChangeViewportArguments):
        (WebKit::WebPageProxy::startAssistingNode):
        (WebKit::WebPageProxy::stopAssistingNode):
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::windowAndViewFramesChanged):
        (WebKit::WebPageProxy::insertDictatedText):
        (WebKit::WebPageProxy::setDragImage):
        (WebKit::WebPageProxy::setPromisedData):
        (WebKit::WebPageProxy::interpretQueuedKeyEvent):
        (WebKit::WebPageProxy::didPerformDictionaryLookup):
        (WebKit::WebPageProxy::registerWebProcessAccessibilityToken):
        (WebKit::WebPageProxy::makeFirstResponder):
        (WebKit::WebPageProxy::colorSpace):
        (WebKit::WebPageProxy::pluginFocusOrWindowFocusChanged):
        (WebKit::WebPageProxy::setPluginComplexTextInputState):
        (WebKit::WebPageProxy::executeSavedCommandBySelector):
        (WebKit::WebPageProxy::wkView):
        (WebKit::WebPageProxy::intrinsicContentSizeDidChange):
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):

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

        [RTTE] The PermissionRequestManagerProxies should use WebPageProxy references.
        https://bugs.webkit.org/show_bug.cgi?id=125029

        Reviewed by Dan Bernstein.

        * UIProcess/GeolocationPermissionRequestManagerProxy.cpp:
        (WebKit::GeolocationPermissionRequestManagerProxy::GeolocationPermissionRequestManagerProxy):
        (WebKit::GeolocationPermissionRequestManagerProxy::invalidateRequests):
        (WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision):
        * UIProcess/GeolocationPermissionRequestManagerProxy.h:
        * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp:
        (WebKit::NotificationPermissionRequestManagerProxy::NotificationPermissionRequestManagerProxy):
        (WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests):
        (WebKit::NotificationPermissionRequestManagerProxy::didReceiveNotificationPermissionDecision):
        * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        Do some additional modernization while we are here.

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

        <rdar://problem/15560240> ResourceError encoding drops NSURL-valued keys in the NSError’s userInfo, including NSErrorFailingURLKey
        https://bugs.webkit.org/show_bug.cgi?id=125016

        Reviewed by Anders “happy name day” Carlsson.

        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (CoreIPC::::encodePlatformData): Encode all string- and URL-valued keys as a dictionary.
        (CoreIPC::::decodePlatformData): Decode user info as a dictionary.

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

        Unreviewed build fix for EFL and GTK WK2 builds.

        * Scripts/generate-forwarding-headers.pl: Add Cocoa to the list of platform prefixes.

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

        Fix build warnings in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=125012

        Reviewed by Anders Carlsson.

        fix unused parameter warnings in the following files:

        * Platform/gtk/WorkQueueGtk.cpp:
        (WorkQueue::SocketEventSource::eventCallback):
        * Shared/API/c/WKDeprecatedFunctions.cpp:
        (WKArrayIsMutable):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::unavailablePluginButtonClicked):
        (WebKit::WebChromeClient::didAddHeaderLayer):
        (WebKit::WebChromeClient::didAddFooterLayer):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::createJavaAppletWidget):

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

        [Cocoa] Add a little template magic to the inline API::Object storage to remove the need for all the reinterpret_casts
        https://bugs.webkit.org/show_bug.cgi?id=125024

        Reviewed by Dan Bernstein.

        Introduce API::ObjectStorage which wraps std::aligned_storage and adds some convenience functions
        to reinterpret the data as the corresponding type. Deploy it everywhere we were previously using 
        std::aligned_storage.

        * Shared/Cocoa/WKNSArray.mm:
        * Shared/Cocoa/WKNSDictionary.mm:
        * Shared/Cocoa/WKObject.h:
        * UIProcess/API/Cocoa/WKBackForwardList.mm:
        * UIProcess/API/Cocoa/WKBackForwardListItem.mm:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
        * UIProcess/API/Cocoa/WKNavigationData.mm:
        * UIProcess/API/Cocoa/WKProcessGroup.mm:

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

        Fix crashing API tests.

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

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

        Fix some style boo-boos.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController loadDelegate]):
        (-[WKBrowsingContextController setLoadDelegate:]):
        (-[WKBrowsingContextController policyDelegate]):
        (-[WKBrowsingContextController setPolicyDelegate:]):

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

        Fix the iOS build.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController loadDelegate]):
        (-[WKBrowsingContextController policyDelegate]):
        (-[WKBrowsingContextController setPolicyDelegate:]):

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

        [Cocoa] Make WKBrowsingContextController work with WKObject wrapping
        https://bugs.webkit.org/show_bug.cgi?id=125022

        Reviewed by Dan Bernstein.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        
        * Shared/mac/ObjCObjectGraphCoders.mm:
        Add support for WKProcessGroup.

        (WebKit::WebContextObjCObjectGraphDecoderImpl::decode):
        Replace call to _browsingContextControllerForPageRef: with wrapper.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        Convert from wrapping the C-SPI type to storing the bits of the wrapped object inline.

        (-[WKBrowsingContextController dealloc]):
        Add explicit destructor call.

        (-[WKBrowsingContextController setLoadDelegate:]):
        (-[WKBrowsingContextController setPolicyDelegate:]):
        Lazily set up the load and policy clients only once a delegate has been set to allow
        continued use of the C-SPI clients for WebKitTestRunner.

        (-[WKBrowsingContextController _finishInitialization]):
        Move remaining work that was done in the initialize (setting up the observer) here,
        and have the WebPageProxy call it.

        * UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h:
        (WebKit::wrapper):
        Add wrapper() helper and declare conformance to the WKObject protocol. Remove no longer used
        _initWithPageRef: and _browsingContextControllerForPageRef: helpers.

        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (didNavigateWithNavigationData):
        (didPerformClientRedirect):
        (didPerformServerRedirect):
        (didUpdateHistoryTitle):
        Switch to using wrapper().

        * UIProcess/API/ios/WKContentView.mm:
        * UIProcess/API/mac/WKView.mm:
        Stop caching the WKBrowsingContextController, as it no long makes sense since it is the same object
        as the WebPageProxy.

        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::platformInitialize):
        Inform the wrapper that it is safe to finish initialization.

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

        [Cocoa] Add a way to recover from load errors
        https://bugs.webkit.org/show_bug.cgi?id=125020

        Reviewed by Sam Weinig.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (createErrorWithRecoveryAttempter): Added this helper function. It creates an NSError from
        the given error, adding two keys to the user info dictionary: the context controller under
        the recovery attempter key, and the frame under a private key.
        (didFailProvisionalLoadWithErrorForFrame): Changed to use createErrorWithRecoveryAttempter.
        (didFailLoadWithErrorForFrame): Ditto.
        (-[WKBrowsingContextController attemptRecoveryFromError:]): Implemented this
        WKErrorRecoveryAttempting protocol method by loading the failing URL from the error into the
        frame from the error.

        * UIProcess/API/Cocoa/WKErrorRecoveryAttempting.h: Added. Defines a protocol for attempting
        recovery from errors and declares the error user info dictionary key under which an object
        conforming to this protocol may be stored.
        * UIProcess/API/Cocoa/WKErrorRecoveryAttempting.m: Added. Defines
        WKRecoveryAttempterErrorKey.

        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::loadURL): Added. Sends the LoadURLInFrame message to the page.
        * UIProcess/WebFrameProxy.h:

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

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadURLInFrame): Added. Loads the URL in the given frame.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in: Added LoadURLInFrame.

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

        [Cocoa] Expose loadAlternateHTMLString via the API
        https://bugs.webkit.org/show_bug.cgi?id=125019

        Reviewed by Sam Weinig.

        * UIProcess/API/Cocoa/WKBrowsingContextController.h: Declared new method.
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController loadAlternateHTMLString:baseURL:forUnreachableURL:]): Added.
        Calls WebPageProxy::loadAlternateHTMLString.

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

        Move API files shared between Mac and iOS to the Cocoa directory
        https://bugs.webkit.org/show_bug.cgi?id=125017

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKBrowsingContextController.h: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.h.
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.mm.
        * UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextControllerInternal.h.
        * UIProcess/API/Cocoa/WKBrowsingContextControllerPrivate.h: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextControllerPrivate.h.
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.h: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.h.
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.mm: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.mm.
        * UIProcess/API/Cocoa/WKBrowsingContextGroupInternal.h: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroupInternal.h.
        * UIProcess/API/Cocoa/WKBrowsingContextGroupPrivate.h: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroupPrivate.h.
        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextLoadDelegate.h.
        * UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextPolicyDelegate.h.
        * UIProcess/API/Cocoa/WKConnection.h: Copied from Source/WebKit2/UIProcess/API/mac/WKConnection.h.
        * UIProcess/API/Cocoa/WKConnection.mm: Copied from Source/WebKit2/UIProcess/API/mac/WKConnection.mm.
        * UIProcess/API/Cocoa/WKConnectionInternal.h: Copied from Source/WebKit2/UIProcess/API/mac/WKConnectionInternal.h.
        * UIProcess/API/Cocoa/WKProcessGroup.h: Copied from Source/WebKit2/UIProcess/API/mac/WKProcessGroup.h.
        * UIProcess/API/Cocoa/WKProcessGroup.mm: Copied from Source/WebKit2/UIProcess/API/mac/WKProcessGroup.mm.
        * UIProcess/API/Cocoa/WKProcessGroupInternal.h: Copied from Source/WebKit2/UIProcess/API/mac/WKProcessGroupInternal.h.
        * UIProcess/API/Cocoa/WKProcessGroupPrivate.h: Copied from Source/WebKit2/UIProcess/API/mac/WKProcessGroupPrivate.h.
        * UIProcess/API/Cocoa/WKTypeRefWrapper.h: Copied from Source/WebKit2/UIProcess/API/mac/WKTypeRefWrapper.h.
        * UIProcess/API/Cocoa/WKTypeRefWrapper.mm: Copied from Source/WebKit2/UIProcess/API/mac/WKTypeRefWrapper.mm.
        * UIProcess/API/Cocoa/WKView.h: Copied from Source/WebKit2/UIProcess/API/mac/WKView.h.
        * UIProcess/API/Cocoa/WKViewPrivate.h: Copied from Source/WebKit2/UIProcess/API/mac/WKViewPrivate.h.
        * UIProcess/API/Cocoa/WebKit2.h: Copied from Source/WebKit2/UIProcess/API/mac/WebKit2.h.
        * UIProcess/API/mac/WKBrowsingContextController.h: Removed.
        * UIProcess/API/mac/WKBrowsingContextController.mm: Removed.
        * UIProcess/API/mac/WKBrowsingContextControllerInternal.h: Removed.
        * UIProcess/API/mac/WKBrowsingContextControllerPrivate.h: Removed.
        * UIProcess/API/mac/WKBrowsingContextGroup.h: Removed.
        * UIProcess/API/mac/WKBrowsingContextGroup.mm: Removed.
        * UIProcess/API/mac/WKBrowsingContextGroupInternal.h: Removed.
        * UIProcess/API/mac/WKBrowsingContextGroupPrivate.h: Removed.
        * UIProcess/API/mac/WKBrowsingContextLoadDelegate.h: Removed.
        * UIProcess/API/mac/WKBrowsingContextPolicyDelegate.h: Removed.
        * UIProcess/API/mac/WKConnection.h: Removed.
        * UIProcess/API/mac/WKConnection.mm: Removed.
        * UIProcess/API/mac/WKConnectionInternal.h: Removed.
        * UIProcess/API/mac/WKProcessGroup.h: Removed.
        * UIProcess/API/mac/WKProcessGroup.mm: Removed.
        * UIProcess/API/mac/WKProcessGroupInternal.h: Removed.
        * UIProcess/API/mac/WKProcessGroupPrivate.h: Removed.
        * UIProcess/API/mac/WKTypeRefWrapper.h: Removed.
        * UIProcess/API/mac/WKTypeRefWrapper.mm: Removed.
        * UIProcess/API/mac/WKView.h: Removed.
        * UIProcess/API/mac/WKViewPrivate.h: Removed.
        * UIProcess/API/mac/WebKit2.h: Removed.
        * WebKit2.xcodeproj/project.pbxproj:

2013-11-29  Hunseop Jeong  <hs85.jeong@samsung.com>

        [EFL] viewport must be same with the size of webview
        https://bugs.webkit.org/show_bug.cgi?id=124965

        Reviewed by Gyuyoung Kim.

        Currently, size of the viewport is larger than size of webview.
        Changed the size of viewport with size of webview, because viewport is translated by wrong calculation.

        * UIProcess/API/efl/EwkView.cpp:
        (EwkView::displayTimerFired): Changed to use the (0,0). 
        (EwkView::createGLSurface): Modified to use the viewSize instead of the boundsEnd.
        (EwkView::handleEvasObjectCalculate): Removed the WKViewSetUserViewportTranslation.

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

        [CoordinatedGraphics][WK2] Correct wrong usage of m_contentPosition variable in the WebView.
        https://bugs.webkit.org/show_bug.cgi?id=118548

        Reviewed by Noam Rosenthal.

        CoordinatedGraphics uses its own scaling logic - contents scaling - and
        WebView of CoordinatedGraphics maintains contents position by scaling
        with contents scaling factor.
        However transformToScene() and updateViewportSize() of WebView regard
        the contents position as a non-scaled value, so it should be fixed.

        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::transformToScene):
        (WebKit::WebView::updateViewportSize):

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

        [EFL] PageViewportController does not need to be unique_ptr instance
        https://bugs.webkit.org/show_bug.cgi?id=124993

        Reviewed by Gyuyoung Kim.

        PageViewportController and PageViewportControllerEfl have same life cycle
        with EwkView. So, we don't need to make them as unique_ptr instance.

        * UIProcess/API/efl/EwkView.cpp:
        (EwkView::EwkView):
        (EwkView::handleEvasObjectCalculate):
        (EwkView::scrollBy):
        * UIProcess/API/efl/EwkView.h:
        (EwkView::pageViewportController):
        * UIProcess/efl/PageLoadClientEfl.cpp:
        (WebKit::PageLoadClientEfl::didCommitLoadForFrame):
        * UIProcess/efl/ViewClientEfl.cpp:
        (WebKit::ViewClientEfl::didChangeContentsSize):
        (WebKit::ViewClientEfl::didChangeContentsPosition):
        (WebKit::ViewClientEfl::didRenderFrame):
        (WebKit::ViewClientEfl::didCompletePageTransition):
        (WebKit::ViewClientEfl::didChangeViewportAttributes):

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

        [GTK] Build fix after r159859
        https://bugs.webkit.org/show_bug.cgi?id=124992

        Reviewed by Gyuyoung Kim.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::didCommitLoadForMainFrame): Added.
        * UIProcess/API/gtk/PageClientImpl.h:

2013-11-28  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL] Build fix after r159859
        https://bugs.webkit.org/show_bug.cgi?id=124991

        Reviewed by Gyuyoung Kim.

        Redefined newly added pure virtual function in PageClient class after r159859.

        * UIProcess/CoordinatedGraphics/WebView.cpp:
        (WebKit::WebView::didCommitLoadForMainFrame):
        * UIProcess/CoordinatedGraphics/WebView.h:

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

        Perform some spring cleaning to WKContentView and WKView
        https://bugs.webkit.org/show_bug.cgi?id=124961

        Reviewed by Dan Bernstein.

        - Store the PageClientImpl in a std::unique_ptr.
        - Remove the WKBrowsingContextController internal load delegate. Replace its use with
          a new PageClient function, didCommitLoadForMainFrame.
        - Fix typo in the WKContentViewDelegate. contentViewdidCommitLoadForMainFrame -> contentViewDidCommitLoadForMainFrame.
        - Add initializers for WKContentView and WKView that take WKContextRefs and WKPageGroupRefs to match the Mac WKView.
          These are needed for WebKitTestRunner.
        - Require a WKProcessGroup (or WKContextRef) and a WKBrowsingContextGroup (or WKPageGroupRef).
        - Stop caching the WKProcessGroup and WKBrowsingContextGroup on the WKContentView.
        - Remove incorrect implementations of initWithCoder.
        - Make WKContentView lazily create its WKBrowsingContextController wrapper.

        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::PageClientImpl):
        (WebKit::PageClientImpl::didCommitLoadForMainFrame):
        (WebKit::PageClientImpl::mainDocumentDidReceiveMobileDocType):
        * UIProcess/API/ios/WKContentView.h:
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView initWithCoder:]):
        (-[WKContentView initWithFrame:processGroup:browsingContextGroup:]):
        (-[WKContentView browsingContextController]):
        (-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
        (-[WKContentView _didCommitLoadForMainFrame]):
        (-[WKContentView _didReceiveMobileDocTypeForMainFrame]):
        (-[WKContentView _didChangeViewportArguments:WebCore::]):
        (-[WKContentView _decidePolicyForGeolocationRequestFromOrigin:frame:request:]):
        (-[WKContentView _pageRef]):
        (-[WKContentView initWithFrame:contextRef:pageGroupRef:]):
        (-[WKContentView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
        * UIProcess/API/ios/WKContentViewInternal.h:
        * UIProcess/API/ios/WKContentViewPrivate.h: Added.
        * UIProcess/API/ios/WKView.mm:
        (-[WKView initWithFrame:processGroup:browsingContextGroup:]):
        (-[WKView initWithFrame:processGroup:browsingContextGroup:relatedToView:]):
        (-[WKView contentViewDidCommitLoadForMainFrame:]):
        (-[WKView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
        (-[WKView pageRef]):
        (-[WKView initWithFrame:contextRef:pageGroupRef:]):
        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
        * UIProcess/API/mac/PageClientImpl.h:
        * UIProcess/API/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::didCommitLoadForMainFrame):
        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (didCommitLoadForFrame):
        * UIProcess/API/mac/WKBrowsingContextControllerInternal.h:
        * UIProcess/API/mac/WKViewPrivate.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCommitLoadForFrame):

2013-11-28  Éva Balázsfalvi  <balazsfalvi.eva@stud.u-szeged.hu>

        Buildfix after r159824 for GCC 4.6
        https://bugs.webkit.org/show_bug.cgi?id=124968

        Reviewed by Csaba Osztrogonác.

        Added explicit "friend class", because GCC 4.6 doesn't support extended friend declaration (c++11)

        * Shared/APIObject.h:

2013-11-28  Antti Koivisto  <antti@apple.com>

        Remove feature: CSS variables
        https://bugs.webkit.org/show_bug.cgi?id=114119

        Reviewed by Andreas Kling.

        * Configurations/FeatureDefines.xcconfig:

2013-11-27  Gustavo Noronha Silva  <gustavo.noronha@collabora.com>

        [GTK] Support custom types for drag and drop data
        https://bugs.webkit.org/show_bug.cgi?id=124659

        Reviewed by Martin Robinson.

        * Shared/gtk/ArgumentCodersGtk.cpp:
        (CoreIPC::encodeDataObject): encode the unknown types data.
        (CoreIPC::decodeDataObject): decode the unknown types data.

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

        Give the PageClient a chance to handle geolocation permission requests if the UIClient doesn't handle it
        https://bugs.webkit.org/show_bug.cgi?id=124955

        Reviewed by Dan Bernstein.

        Use the new PageClient function to remove the need for WKContentView to take over the WKPageUIClient.

        * UIProcess/API/ios/PageClientImplIOS.h:
        * UIProcess/API/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::decidePolicyForGeolocationPermissionRequest):
        * UIProcess/API/ios/WKContentView.mm:
        (-[WKContentView _decidePolicyForGeolocationRequestFromOrigin:frame:request:]):
        (-[WKContentView _commonInitWithProcessGroup:browsingContextGroup:]):
        * UIProcess/API/ios/WKContentViewInternal.h:
        * UIProcess/PageClient.h:
        (WebKit::PageClient::decidePolicyForGeolocationPermissionRequest):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):

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

        Fix the iOS build.

        * UIProcess/API/ios/WKGeolocationProviderIOS.mm:
        * UIProcess/API/ios/WKGeolocationProviderIOSObjCSecurityOrigin.mm:

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

        Add accessors for the WKProcessGroup and WKBrowsingContextGroup on the WKBrowsingContextController
        https://bugs.webkit.org/show_bug.cgi?id=124953

        Reviewed by Dan Bernstein.

        * UIProcess/API/mac/WKBrowsingContextController.h:
        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController processGroup]):
        (-[WKBrowsingContextController browsingContextGroup]):
        Add accessors.

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

        Make WKProcessGroup work with WKObject wrapping
        https://bugs.webkit.org/show_bug.cgi?id=124952

        Reviewed by Dan Bernstein.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        Add support for WKProcessGroup.

        * UIProcess/API/mac/WKProcessGroup.mm:
        (-[WKProcessGroup initWithInjectedBundleURL:]):
        (-[WKProcessGroup dealloc]):
        (-[WKProcessGroup API::]):
        (-[WKProcessGroup _contextRef]):
        (-[WKProcessGroup _geolocationProvider]):
        Convert from wrapping the C-SPI type to storing the bits of the wrapped object inline

        * UIProcess/API/mac/WKProcessGroupInternal.h: Added.
        (WebKit::wrapper):
        Add wrapper() helper and declare conformance to the WKObject protocol.

        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::create):
        (WebKit::WebContext::WebContext):
        * UIProcess/WebContext.h:
        Make the WebContext constructor public (for use with Object::constructInWrapper) and remove unused ProcessModel parameter.

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

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

        Make WKBrowsingContextGroup work with WKObject wrapping
        https://bugs.webkit.org/show_bug.cgi?id=124948

        Reviewed by Dan Bernstein.

        - Adds mechanism to use the inline data wrapping mechanism when the Objective-C wrapper is created
          by the caller (rather than by Object::newObject).
        - Adopts the mechanism for WKBrowsingContextGroup.

        * Shared/APIObject.h:
        (API::Object::constructInWrapper):
        Add a helper which does a forwarding placement-new into the API::Object of the passed in wrapper, after which it sets up m_wrapper.

        (API::TypedObject::operator new):
        Add a operator new to for placement-new. Also make TypedObject friends with Object so that constructInWrapper can call this.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        Add support for WKBrowsingContextGroup.

        * UIProcess/API/mac/WKBrowsingContextGroup.mm:
        (-[WKBrowsingContextGroup API::]):
        (-[WKBrowsingContextGroup dealloc]):
        (-[WKBrowsingContextGroup initWithIdentifier:]):
        (-[WKBrowsingContextGroup allowsJavaScript]):
        (-[WKBrowsingContextGroup setAllowsJavaScript:]):
        (-[WKBrowsingContextGroup allowsJavaScriptMarkup]):
        (-[WKBrowsingContextGroup setAllowsJavaScriptMarkup:]):
        (-[WKBrowsingContextGroup allowsPlugIns]):
        (-[WKBrowsingContextGroup setAllowsPlugIns:]):
        (-[WKBrowsingContextGroup addUserStyleSheet:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:mainFrameOnly:]):
        (-[WKBrowsingContextGroup removeAllUserStyleSheets]):
        (-[WKBrowsingContextGroup addUserScript:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:injectionTime:mainFrameOnly:]):
        (-[WKBrowsingContextGroup removeAllUserScripts]):
        (-[WKBrowsingContextGroup _pageGroupRef]):
        Convert from wrapping the C-SPI type to storing the bits of the wrapped object inline (modeled on WKBackForwardList).

        * UIProcess/API/mac/WKBrowsingContextGroupInternal.h: Added.
        (WebKit::wrapper):
        Add wrapper() helper and declare conformance to the WKObject protocol.

        * UIProcess/WebPageGroup.cpp:
        (WebKit::WebPageGroup::create):
        (WebKit::WebPageGroup::WebPageGroup):
        * UIProcess/WebPageGroup.h:
        Make the WebPageGroup constructor public (for use with Object::constructInWrapper) and move being set in the webPageGroupMap()
        to the constructor.

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

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

        Remove Qt-specific .qrc files
        https://bugs.webkit.org/show_bug.cgi?id=124944

        Reviewed by Andreas Kling.

        * WebKit2.qrc: Removed.

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

        [GTK] Programs/WebKit2APITests/TestWebKitSettings unit test is failing
        https://bugs.webkit.org/show_bug.cgi?id=124924

        Reviewed by Carlos Garcia Campos.

        'Chrome'/'Chromium' substrings were removed from the user agent string in r159572, meaning the unit
        test shouldn't check for those two substrings anymore. Instead, 'Safari' (as until now) and 'AppleWebKit'
        substrings should be checked for.

        * UIProcess/API/gtk/tests/TestWebKitSettings.cpp:
        (testWebKitSettingsUserAgent):

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

        [MediaStream API] HTMLMediaElement should be able to use MediaStream as source
        https://bugs.webkit.org/show_bug.cgi?id=121943

        Reviewed by Eric Carlson.

        Add mediastream module and platform to cmake include directories.

        * CMakeLists.txt:

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

        Some WebKit2 headers are not self-contained
        https://bugs.webkit.org/show_bug.cgi?id=124884

        Reviewed by Anders Carlsson.

        * Shared/API/Cocoa/WKRemoteObjectInterface.h: Added import.
        * Shared/API/Cocoa/WKRemoteObjectRegistry.h: Ditto.
        * Shared/API/c/WKContextMenuItemTypes.h: Added include.
        * Shared/API/c/WKFindOptions.h: Ditto.
        * Shared/API/c/WKMutableArray.h: Ditto.
        * Shared/API/c/WKPageLoadTypes.h: Ditto.
        * Shared/API/c/WKPageVisibilityTypes.h: Ditto.

        * Shared/API/c/WKPluginInformation.cpp:
        (WKPluginInformationBundleIdentifierKey): Made this API function always be defined. When
        the Netscape plug-in API is not enabled, it returns 0.
        (WKPluginInformationBundleVersionKey): Ditto.
        (WKPluginInformationBundleShortVersionKey): Ditto.
        (WKPluginInformationPathKey): Ditto.
        (WKPluginInformationDisplayNameKey): Ditto.
        (WKPluginInformationDefaultLoadPolicyKey): Ditto.
        (WKPluginInformationUpdatePastLastBlockedVersionIsKnownAvailableKey): Ditto.
        (WKPluginInformationHasSandboxProfileKey): Ditto.
        (WKPluginInformationFrameURLKey): Ditto.
        (WKPluginInformationMIMETypeKey): Ditto.
        (WKPluginInformationPageURLKey): Ditto.
        (WKPluginInformationPluginspageAttributeURLKey): Ditto.
        (WKPluginInformationPluginURLKey): Ditto.
        (WKPlugInInformationReplacementObscuredKey): Ditto.

        * Shared/API/c/WKString.h: Added include.
        * UIProcess/API/C/WKCredentialTypes.h: Ditto.
        * UIProcess/API/C/WKPageContextMenuClient.h: Ditto.
        * UIProcess/API/C/WKPageLoaderClient.h: Added includes.
        * UIProcess/API/C/WKPagePolicyClient.h: Ditto.
        * UIProcess/API/C/WKPageUIClient.h: Ditto.

        * UIProcess/API/C/WKPluginSiteDataManager.cpp:
        (WKPluginSiteDataManagerGetTypeID): Fixed the !ENABLE(NETSCAPE_PLUGIN_API) build.

        * UIProcess/API/C/mac/WKContextPrivateMac.h: Removed use of ENABLE() from this private
        header.
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextCopyPlugInInfoForBundleIdentifier): Made this API function always be defined.
        When the Netscape plug-in API is not enabled, it returns 0.
        (WKContextGetInfoForInstalledPlugIns): Made this API function always be defined.

        * UIProcess/API/C/mac/WKInspectorPrivateMac.h: Added imports.
        * UIProcess/API/C/mac/WKPagePrivateMac.h: Added include.
        * UIProcess/API/Cocoa/WKBackForwardListItem.h: Added import.
        * UIProcess/API/Cocoa/WKNavigationData.h: Ditto.
        * UIProcess/API/cpp/WKRetainPtr.h: Replaced use of WARN_UNUSED_RETURN in this private header
        with an equivalent macro defined in the header.

        * WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h: Added include.
        * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp:
        (WKBundleInspectorGetTypeID): Made this API function always be defined. When the Inspector
        is not enabled, it returns the Null type.
        (WKBundleInspectorShow): Made this API function always be defined.
        (WKBundleInspectorClose): Ditto.
        (WKBundleInspectorEvaluateScriptForTest): Ditto.
        (WKBundleInspectorSetPageProfilingEnabled): Ditto.
        * WebProcess/InjectedBundle/API/c/WKBundleInspector.h: Removed use of ENABLE() from this
        private header.

        * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: Added includes.
        * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Added include.

        * WebProcess/Plugins/Netscape/mac/WKNPAPIPlugInContainer.mm:
        (-[WKNPAPIPlugInContainer openPlugInPreferencePane]): Fixed the !ENABLE(NETSCAPE_PLUGIN_API)
        build.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::createJavaAppletWidget): Ditto.

        * WebProcess/WebPage/mac/WebInspectorMac.mm: Fixed the !ENABLE(INSPECTOR) build.

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

        [Cocoa] Use class extensions for IPI
        https://bugs.webkit.org/show_bug.cgi?id=124870

        Reviewed by Sam Weinig.

        * UIProcess/API/mac/WKBrowsingContextController.mm: Reordered methods so that the Private
        cateogry isn’t stuck between the API methods and the internal methods.
        (-[WKBrowsingContextController setPaginationMode:]):
        (-[WKBrowsingContextController paginationMode]):
        (-[WKBrowsingContextController setPaginationBehavesLikeColumns:]):
        (-[WKBrowsingContextController paginationBehavesLikeColumns]):
        (-[WKBrowsingContextController setPageLength:]):
        (-[WKBrowsingContextController pageLength]):
        (-[WKBrowsingContextController setGapBetweenPages:]):
        (-[WKBrowsingContextController gapBetweenPages]):
        (-[WKBrowsingContextController pageCount]):
        (-[WKBrowsingContextController handle]):
        * UIProcess/API/mac/WKBrowsingContextControllerInternal.h: Changed Internal category into
        a class extension.

        * UIProcess/API/mac/WKConnection.mm:
        * UIProcess/API/mac/WKConnectionInternal.h: Changed Internal category into a class
        extension.

        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInInternal.h: Ditto.

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

        Fixed the iOS build.

        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController loadDelegateInternal]):
        (-[WKBrowsingContextController setLoadDelegateInternal:]):

2013-11-25  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: Removed _data ivar and
        WKBrowsingContextControllerData class declaration.
        * UIProcess/API/mac/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController dealloc]): Removed
        WKBrowsingContextControllerData class and moved ivars directly into
        WKBrowsingContextController, declaring them in the @implementation. Removed ivar and
        accessors for the delegate properties, letting the compiler synthesize them.
        (-[WKBrowsingContextController _pageRef]): Removed indirection via _data.
        (-[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 goToBackForwardListItem:]): Ditto.
        (-[WKBrowsingContextController backForwardList]): Ditto.
        (-[WKBrowsingContextController activeURL]): Ditto.
        (-[WKBrowsingContextController provisionalURL]): Ditto.
        (-[WKBrowsingContextController committedURL]): Ditto.
        (-[WKBrowsingContextController unreachableURL]): Removed idirection via _data.
        (-[WKBrowsingContextController estimatedProgress]): Removed indirection via -_pageRef.
        (-[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 handle]): Ditto.
        (-[WKBrowsingContextController _initWithPageRef:]): Removed indirection via _data.

        * UIProcess/API/mac/WKBrowsingContextGroup.h: Removed _data ivar and
        WKBrowsingContextGroupData class declaration.
        * UIProcess/API/mac/WKBrowsingContextGroup.mm: Removed WKBrowsingContextGroupData class and
        moved _pageGroupRef ivar directly into WKBrowsingContextGroup, declaring it in the
        @implementation.
        (-[WKBrowsingContextGroup initWithIdentifier:]): Removed indirection via _data.
        (-[WKBrowsingContextGroup allowsJavaScript]): Removed indirection via -_pageGroupRef.
        (-[WKBrowsingContextGroup setAllowsJavaScript:]): Ditto.
        (-[WKBrowsingContextGroup allowsJavaScriptMarkup]): Ditto.
        (-[WKBrowsingContextGroup setAllowsJavaScriptMarkup:]): Ditto.
        (-[WKBrowsingContextGroup allowsPlugIns]): Ditto.
        (-[WKBrowsingContextGroup setAllowsPlugIns:]): Ditto.
        (-[WKBrowsingContextGroup addUserStyleSheet:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:mainFrameOnly:]): Ditto.
        (-[WKBrowsingContextGroup removeAllUserStyleSheets]): Ditto.
        (-[WKBrowsingContextGroup addUserScript:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:injectionTime:mainFrameOnly:]): Ditto.
        (-[WKBrowsingContextGroup removeAllUserScripts]): Ditto.
        (-[WKBrowsingContextGroup _pageGroupRef]): Removed indirection via _data.

        * UIProcess/API/mac/WKConnection.h: Removed _data ivar and WKConnectionData class declaration.
        * UIProcess/API/mac/WKConnection.mm: 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 remoteObjectRegistry]): Ditto.
        (didReceiveMessage): Ditto.
        (-[WKConnection _initWithConnectionRef:]): Ditto.

        * UIProcess/API/mac/WKProcessGroup.h: Replaced forward declaration of WKConnection with an
        import. Removed _data ivar and WKProcessGroupData class declaration.
        * UIProcess/API/mac/WKProcessGroup.mm: 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.
        (-[WKProcessGroup _geolocationProvider]): Ditto.

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

        Unreviewed, rolling out r159740.
        http://trac.webkit.org/changeset/159740
        https://bugs.webkit.org/show_bug.cgi?id=124859

        Crashing xmlhttprequest/access-control-repeated-failed-
        preflight-crash.html on Mavericks and Mountain Lion -
        ASSERT(m_pageGroup) WebPage.cpp:352 (Requested by dino_ on
        #webkit).

        * 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-25  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Put most of the Cocoa API behind WK_API_ENABLED guards
        https://bugs.webkit.org/show_bug.cgi?id=124850

        Reviewed by Brady Eidson.

        Guarded all Cocoa API headers and implementations with WK_API_ENABLED. Left the WKView class
        unguarded, but limited its API.

        * Shared/API/Cocoa/WKFoundation.h: Replaced OBJ_VISIBLE with an explicit attribute.
        * Shared/API/Cocoa/WKRemoteObjectCoder.mm: Moved #if WK_API_ENABLED before the rest of the
        imports.
        * Shared/API/Cocoa/WKRemoteObjectInterface.mm: Ditto.
        * Shared/API/Cocoa/WKRemoteObjectRegistry.mm: Ditto.
        * Shared/API/Cocoa/WKRemoteObjectRegistryPrivate.h: Ditto.
        * UIProcess/API/mac/WKBrowsingContextController.h: Guarded all declarations with
        WK_API_ENABLED, changed to use WK_API_CLASS instead of WK_EXPORT.
        * UIProcess/API/mac/WKBrowsingContextController.mm: Guarded everything with WK_API_ENABLED.
        (-[WKBrowsingContextController dealloc]):
        (-[WKBrowsingContextController setPolicyDelegate:]):
        (-[WKBrowsingContextController backForwardList]):
        (didChangeBackForwardList):
        (setUpPageLoaderClient):
        (setUpPagePolicyClient):
        (-[WKBrowsingContextController _initWithPageRef:]):
        * UIProcess/API/mac/WKBrowsingContextControllerInternal.h: Ditto.
        * UIProcess/API/mac/WKBrowsingContextControllerPrivate.h: Ditto.
        * UIProcess/API/mac/WKBrowsingContextGroup.h: Guarded all declarations with WK_API_ENABLED,
        chanegd to use WK_API_CLASS instead of WK_EXPORT.
        * UIProcess/API/mac/WKBrowsingContextGroup.mm: Removed redundant import, guarded everything
        with WK_API_ENABLED.
        * UIProcess/API/mac/WKBrowsingContextGroupPrivate.h: Guarded with WK_API_ENABLED.
        * UIProcess/API/mac/WKBrowsingContextPolicyDelegate.h: Added necessary import.
        * UIProcess/API/mac/WKConnection.h: Guarded all declarations with WK_API_ENABLED, chanegd to
        use WK_API_CLASS instead of WK_EXPORT.
        * UIProcess/API/mac/WKConnection.mm: Guarded everything with WK_API_ENABLED.
        (-[WKConnection remoteObjectRegistry]):
        (didReceiveMessage):
        * UIProcess/API/mac/WKConnectionInternal.h: Guarded the delcarations with WK_API_ENABLED.
        * UIProcess/API/mac/WKProcessGroup.h: Ditto. Also changed to use WK_API_CLASS instead of
        WK_EXPORT.
        * UIProcess/API/mac/WKProcessGroup.mm: Guarded everything with WK_API_ENABLED.
        (-[WKProcessGroup initWithInjectedBundleURL:]):
        * UIProcess/API/mac/WKProcessGroupPrivate.h: Guarded the declarations with WK_API_ENABLED.
        * UIProcess/API/mac/WKTypeRefWrapper.h: Moved #if WK_API_ENABLED before the rest of the
        imports, changed to use WK_API_CLASS instead of WK_EXPORT.
        * UIProcess/API/mac/WKTypeRefWrapper.mm: Removed empty line after #import "config.h".
        * UIProcess/API/mac/WKView.h: Added #if WK_API_ENABLED around API that uses other Cocoa API
        types.
        * UIProcess/API/mac/WKView.mm: Added #if WK_API_ENABLED around implementations of methods
        that are only declared when the API is enabled.
        * UIProcess/API/mac/WKViewInternal.h: Reordered imports.
        * UIProcess/mac/WKFullScreenWindowController.mm: Added comment to #endif.
        * UIProcess/mac/WebContextMac.mm:
        (WebKit::WebContext::platformInitializeWebProcess): Guarded use of
        WKBrowsingContextController with WK_API_ENABLED.
        (WebKit::WebContext::platformInitializeNetworkProcess): Ditto.
        * UIProcess/mac/WebContextMenuProxyMac.mm: Removed newline between imports.
        * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h: Moved #if WK_API_ENABLED before the
        rest of the imports, and changed to use WK_API_CLASS instead of WK_EXPORT.
        * WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm: Removed newline after #import
        "config.h".
        * WebProcess/InjectedBundle/API/mac/WKDOMElement.h: Moved #if WK_API_ENABLED before the
        rest of the imports, and changed to use WK_API_CLASS instead of WK_EXPORT.
        * WebProcess/InjectedBundle/API/mac/WKDOMElement.mm: Removed newline after #import
        "config.h".
        * WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm: Ditto.
        * WebProcess/InjectedBundle/API/mac/WKDOMNode.h: Moved #if WK_API_ENABLED before the
        rest of the imports, and changed to use WK_API_CLASS instead of WK_EXPORT.
        * WebProcess/InjectedBundle/API/mac/WKDOMNode.mm: Removed redundant import.
        * WebProcess/InjectedBundle/API/mac/WKDOMRange.h:  Moved #if WK_API_ENABLED before the
        rest of the imports, and changed to use WK_API_CLASS instead of WK_EXPORT.
        * WebProcess/InjectedBundle/API/mac/WKDOMRange.mm: Removed newline and redundant import.
        * WebProcess/InjectedBundle/API/mac/WKDOMText.h: Moved #if WK_API_ENABLED before the
        rest of the imports, and changed to use WK_API_CLASS instead of WK_EXPORT.
        * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.h: Ditto.
        * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm: Removed newline after
        #import "config.h".
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h: Moved #if WK_API_ENABLED before
        the rest of the imports, and changed to use WK_API_CLASS instead of WK_EXPORT.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm: Removed newline and redundant
        imports.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h:  Moved #if
        WK_API_ENABLED before the rest of the imports, and changed to use WK_API_CLASS instead of
        WK_EXPORT.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: Removed
        newline after #import "config.h".

2013-11-22  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 create page group on creation.

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

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

        DatabaseProcess: Add "UniqueIDBDatabase" that multiple WebProcesses can connect to
        https://bugs.webkit.org/show_bug.cgi?id=124819

        Reviewed by Dan Bernstein.

        UniqueIDBDatabase instances are per-DatabaseProcess, so it manages the set of them.
        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::getOrCreateUniqueIDBDatabase):
        (WebKit::DatabaseProcess::removeUniqueIDBDatabase):
        * DatabaseProcess/DatabaseProcess.h:

        * DatabaseProcess/DatabaseToWebProcessConnection.h:

        Start forwarding things along to the appropriate UniqueIDBDatabase.
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
        (WebKit::DatabaseProcessIDBConnection::~DatabaseProcessIDBConnection):
        (WebKit::DatabaseProcessIDBConnection::disconnectedFromWebProcess):
        (WebKit::DatabaseProcessIDBConnection::establishConnection):
        (WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata):
        * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:

        A class that represents a single concrete IDB database that multiple WebProcesses can connect to.
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
        (WebKit::UniqueIDBDatabase::UniqueIDBDatabase):
        (WebKit::UniqueIDBDatabase::~UniqueIDBDatabase):
        (WebKit::UniqueIDBDatabase::registerConnection):
        (WebKit::UniqueIDBDatabase::unregisterConnection):
        (WebKit::UniqueIDBDatabase::getIDBDatabaseMetadata):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:
        (WebKit::UniqueIDBDatabase::create):
        (WebKit::UniqueIDBDatabase::identifier):

        A class to help uniquely identify an IDBDatabase that can be expanded as needed.
        Importantly, it knows how to be used as a key in a HashMap.
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.cpp: Added.
        (WebKit::UniqueIDBDatabaseIdentifier::UniqueIDBDatabaseIdentifier):
        (WebKit::UniqueIDBDatabaseIdentifier::isHashTableDeletedValue):
        (WebKit::UniqueIDBDatabaseIdentifier::hash):
        (WebKit::UniqueIDBDatabaseIdentifier::isNull):
        (WebKit::operator==):
        * DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.h: Added.
        (WebKit::UniqueIDBDatabaseIdentifier::databaseName):
        (WebKit::UniqueIDBDatabaseIdentifier::openingOrigin):
        (WebKit::UniqueIDBDatabaseIdentifier::mainFrameOrigin):
        (WebKit::UniqueIDBDatabaseIdentifierHash::hash):
        (WebKit::UniqueIDBDatabaseIdentifierHash::equal):
        (WebKit::UniqueIDBDatabaseIdentifierHashTraits::isEmptyValue):

        * Shared/SecurityOriginData.cpp:
        (WebKit::operator==):
        * Shared/SecurityOriginData.h:

        * UIProcess/WebContext.cpp:

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

        * WebKit2.xcodeproj/project.pbxproj:

2013-11-24  Danilo Cesar Lemes de Paula  <danilo.cesar@collabora.co.uk>, Arunprasad Rajkumar  <arurajku@cisco.com>

        [WK2][GTK] Adding SpatialNavigation setting to webkit2
        https://bugs.webkit.org/show_bug.cgi?id=114298

        Reviewed by Anders Carlsson.

        Adding SpatialNavigation support to WebPreferencesStore allows us
        to toggle that feature on WebKitSettings.

        * Shared/WebPreferencesStore.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetSpatialNavigationEnabled):
        (WKPreferencesGetSpatialNavigationEnabled):
        * UIProcess/API/C/WKPreferences.h:
        * UIProcess/API/gtk/WebKitSettings.cpp:
        (webKitSettingsSetProperty):
        (webKitSettingsGetProperty):
        (webkit_settings_class_init):
        (webkit_settings_set_enable_spatial_navigation):
        (webkit_settings_get_enable_spatial_navigation):
        * UIProcess/API/gtk/WebKitSettings.h:
        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
        * UIProcess/API/gtk/tests/TestWebKitSettings.cpp:
        (testWebKitSettings):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

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

        Add DatabaseProcessCreationParameters, starting with the database path.
        https://bugs.webkit.org/show_bug.cgi?id=124804

        Reviewed by Dean Jackson and Benjamin Poulain.

        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::initializeDatabaseProcess):
        * DatabaseProcess/DatabaseProcess.h:
        (WebKit::DatabaseProcess::indexedDatabaseDirectory):
        * DatabaseProcess/DatabaseProcess.messages.in:

        * Shared/Databases/DatabaseProcessCreationParameters.cpp: Added.
        (WebKit::DatabaseProcessCreationParameters::DatabaseProcessCreationParameters):
        (WebKit::DatabaseProcessCreationParameters::encode):
        (WebKit::DatabaseProcessCreationParameters::decode):
        * Shared/Databases/DatabaseProcessCreationParameters.h: Added.

        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::ensureDatabaseProcess):

        * WebKit2.xcodeproj/project.pbxproj:
        * Scripts/webkit2/messages.py:
        (struct_or_class):

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

        [EFL] Build break after r159724
        https://bugs.webkit.org/show_bug.cgi?id=124806

        Reviewed by Tim Horton.

        * Platform/CoreIPC/Connection.h: Include atomic header.
        * UIProcess/CoordinatedGraphics/WebView.cpp: Rename didChangeContentsSize to didChangeContentSize.
        (WebKit::WebView::didChangeContentSize):
        * UIProcess/CoordinatedGraphics/WebView.h: Ditto.
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h: Adjust TARGET_OS_IPHONE macro.

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

        Attempt build fixes for 32-bit after 159724.

        There's probably a better fix, but this will work for now.

        * UIProcess/API/mac/WKView.h:

2013-11-22  Enrica Casucci  <enrica@apple.com>

        Upstream iOS WebKit2 to OpenSource (part 3).
        https://bugs.webkit.org/show_bug.cgi?id=124803

        Reviewed by Anders Carlsson and Tim Horton.


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

        [Mac] Can't drag full-screen video to another monitor
        https://bugs.webkit.org/show_bug.cgi?id=124798

        Reviewed by Geoffrey Garen.

        Make full screen windows resizable by default. This allows the window to be resized when
        moved between monitors with different resolutions.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView createFullScreenWindow]):

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

        [WK2] Another build fix for NetworkProcess on iOS
        https://bugs.webkit.org/show_bug.cgi?id=124797

        Reviewed by Alexey Proskuryakov.

        * NetworkProcess/NetworkResourceLoader.h:

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